"""dkim_modes.py - 96 DKIM signing mode presets (extracted from dump_options_get.json)."""
DKIM_MODES = {
    "haraka_dkim_official": ("news", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "inbox_pass": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender"),
    "message_id_rfc": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "message_id_alt": ("default", "From, To, Subject, Date, Message-Id, Mime-Version, Content-Type"),
    "minimal": ("default", "From, To, Subject, Date"),
    "selector_hostname": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "submit_only": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "inbox_no_sender": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "inbox_reply_to": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "inbox_with_cc": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc"),
    "gmail_style": ("google", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "full_relaxed": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To"),
    "message_id_rfc_ct": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "message_id_rfc_full": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "message_id_alt_ct": ("default", "From, To, Subject, Date, Message-Id, Mime-Version, Content-Type"),
    "extended": ("default", "From, To, Subject, Date, MIME-Version, Content-Type, Cc, Reply-To"),
    "selector_mail": ("mail", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "selector_k1": ("k1", "From, To, Subject, Date"),
    "selector_dkim": ("dkim", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "selector_s1": ("s1", "From, To, Subject, Date, Message-ID"),
    "selector_google": ("google", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "hostname_message_id": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version"),
    "submit_only_message_id": ("default", "From, To, Subject, Date, Message-ID"),
    "minimal_submit_only": ("default", "From, To, Subject, Date"),
    "selector_mail_submit": ("mail", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "haraka_inbox_tuned": ("news", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "postfix_opendkim_explicit": ("default", "From, Subject, Date, Message-ID"),
    "haraka_plugin_standard": ("default", "From, Subject, To, Date"),
    "haraka_plugin_extended": ("default", "From, Subject, To, Date, Message-ID"),
    "stalwart_extended": ("default", "From, To, Subject, Date, MIME-Version, Content-Type, Reply-To"),
    "stalwart_minimal": ("default", "From, To, Subject, Date"),
    "zonemta_sender_explicit": ("default", "from, subject, date"),
    "zonemta_sender_extended": ("default", "from, subject, date, To, Message-ID"),
    "maddy_extended": ("default", "From, To, Subject, Date, MIME-Version, Content-Type, Reply-To"),
    "exim4_extended": ("default", "From, To, Subject, Date, MIME-Version, Content-Type, Reply-To"),
    # inbox_all_* series (进箱 | 全栈通用)
    "inbox_all_gold": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "inbox_all_mime": ("default", "From, To, Subject, Date, MIME-Version, Content-Type"),
    "inbox_all_msgid": ("default", "From, To, Subject, Date, Message-ID"),
    "inbox_all_core": ("default", "From, To, Subject, Date"),
    "inbox_all_sender": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender"),
    "inbox_all_replyto": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "inbox_all_cc": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc"),
    "inbox_all_rfc": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To"),
    "inbox_all_listunsub": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "inbox_all_full": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To, Sender"),
    # tune_* series (优调)
    "tune_core_def": ("default", "From, To, Subject, Date"),
    "tune_core_host": ("dkim-hostname", "From, To, Subject, Date"),
    "tune_core_mail": ("mail", "From, To, Subject, Date"),
    "tune_msgid_def": ("default", "From, To, Subject, Date, Message-ID"),
    "tune_msgid_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID"),
    "tune_msgid_s1": ("s1", "From, To, Subject, Date, Message-ID"),
    "tune_mime_def": ("default", "From, To, Subject, Date, MIME-Version, Content-Type"),
    "tune_mime_mail": ("mail", "From, To, Subject, Date, MIME-Version, Content-Type"),
    "tune_mime_google": ("google", "From, To, Subject, Date, MIME-Version, Content-Type"),
    "tune_std_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_std_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_std_dkim": ("dkim", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_std_k1": ("k1", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_std_s2": ("s2", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_sender_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender"),
    "tune_sender_mail": ("mail", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender"),
    "tune_reply_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "tune_reply_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "tune_cc_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc"),
    "tune_cc_key1": ("key1", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc"),
    "tune_full_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To, Sender"),
    "tune_full_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To, Sender"),
    "tune_listunsub_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "tune_listunsub_mail": ("mail", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "tune_rfc_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To"),
    "tune_rfc_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Cc, Reply-To"),
    "tune_gmail_google": ("google", "From, To, Subject, Date, MIME-Version, Content-Type"),
    "tune_core_smtp": ("default", "From, To, Subject, Date"),
    "tune_std_smtp": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "tune_std_relay": ("relay", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    # mkt_* series (营销)
    "mkt_std_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "mkt_std_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "mkt_std_mkt": ("mkt", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
    "mkt_lu_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "mkt_lu_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "mkt_lu_news": ("news", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe"),
    "mkt_lupost_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_lupost_mail": ("mail", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_lupost_bulk": ("bulk", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_reply_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To"),
    "mkt_reply_lu_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To, List-Unsubscribe"),
    "mkt_cte_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Content-Transfer-Encoding"),
    "mkt_mimecte_def": ("default", "From, To, Subject, Date, MIME-Version, Content-Type, Content-Transfer-Encoding"),
    "mkt_full_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_full_host": ("dkim-hostname", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_full_camp": ("camp", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Reply-To, List-Unsubscribe, List-Unsubscribe-Post"),
    "mkt_sender_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender"),
    "mkt_sender_lu_def": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type, Sender, List-Unsubscribe"),
    "mkt_plain_def": ("default", "From, To, Subject, Date, MIME-Version"),
    "mkt_html_e1": ("e1", "From, To, Subject, Date, MIME-Version, Content-Type, Content-Transfer-Encoding, List-Unsubscribe"),
    "custom": ("default", "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"),
}

def resolve_dkim(mode_id, custom_selector="", custom_headers=""):
    """Return (selector, headers_to_sign) for a given mode."""
    if mode_id == "custom":
        selector = custom_selector or "default"
        headers = custom_headers or "From, To, Subject, Date, Message-ID, MIME-Version, Content-Type"
        return selector, headers
    mode = DKIM_MODES.get(mode_id, DKIM_MODES["mkt_lu_news"])
    selector = custom_selector or mode[0]
    headers = mode[1]
    return selector, headers