| version = 1 | |
| [common] | |
| # API mode, set to true to prevent loading local subscriptions or serving local files directly | |
| api_mode = false | |
| # Access token used for performing critical action through Web interface | |
| api_access_token = "fins1596" | |
| # Default URLs, used when no URL is provided in request, use "|" to separate multiple subscription links, supports local files/URL | |
| default_url = [] | |
| # Insert subscription links to requests. Can be used to add node(s) to all exported subscriptions. | |
| enable_insert = true | |
| # URLs to insert before subscription links, can be used to add node(s) to all exported subscriptions, supports local files/URL | |
| insert_url = [""] | |
| # Prepend inserted URLs to subscription links. Nodes in insert_url will be added to groups first with non-group-specific match pattern. | |
| prepend_insert_url = true | |
| # Exclude nodes which remarks match the following patterns. Supports regular expression. | |
| exclude_remarks = ["(到期|剩余流量|时间|官网|产品)"] | |
| # Only include nodes which remarks match the following patterns. Supports regular expression. | |
| #include_remarks = ["V3.*港"] | |
| # Enable script support for filtering nodes | |
| enable_filter = false | |
| # Script used for filtering nodes. Supports inline script and script path. A "filter" function with 1 argument which is a node should be defined in the script. | |
| # Example: Inline script: Set value to content of script. | |
| # Script path: Set value to "path:/path/to/script.js". | |
| #filter_script = ''' | |
| #function filter(node) { | |
| # const info = JSON.parse(node.ProxyInfo); | |
| # if(info.EncryptMethod.includes('chacha20')) | |
| # return true; | |
| # return false; | |
| #} | |
| #''' | |
| # Setting an external config file as default when none is specified, supports local files/URL | |
| # default_external_config = "config/example_external_config.toml" | |
| # The file scope limit of the 'rule_base' options in external configs. | |
| base_path = "base" | |
| # Clash config base used by the generator, supports local files/URL | |
| clash_rule_base = "base/all_base.tpl" | |
| # Surge config base used by the generator, supports local files/URL | |
| surge_rule_base = "base/all_base.tpl" | |
| # Surfboard config base used by the generator, supports local files/URL | |
| surfboard_rule_base = "base/all_base.tpl" | |
| # Mellow config base used by the generator, supports local files/URL | |
| mellow_rule_base = "base/all_base.tpl" | |
| # Quantumult config base used by the generator, supports local files/URL | |
| quan_rule_base = "base/all_base.tpl" | |
| # Quantumult X config base used by the generator, supports local files/URL | |
| quanx_rule_base = "base/all_base.tpl" | |
| # Loon config base used by the generator, supports local files/URL | |
| loon_rule_base = "base/all_base.tpl" | |
| # Shadowsocks Android config base used by the generator, supports local files/URL | |
| sssub_rule_base = "base/all_base.tpl" | |
| # Proxy used to download rulesets or subscriptions, set to NONE or empty to disable it, set to SYSTEM to use system proxy. | |
| # Accept cURL-supported proxies (http:// https:// socks4a:// socks5://) | |
| proxy_config = "SYSTEN" | |
| proxy_ruleset = "SYSTEN" | |
| proxy_subscription = "NONE" | |
| # Append a proxy type string ([SS] [SSR] [VMess]) to node remark. | |
| append_proxy_type = false | |
| [[userinfo.stream_rule]] | |
| # Rules to extract stream data from node | |
| # Format: full_match_regex|new_format_regex | |
| # where new_format_regex should be like "total=$1&left=$2&used=$3" | |
| match = '^剩余流量:(.*?)\|总流量:(.*)$' | |
| replace = 'total=$2&left=$1' | |
| [[userinfo.stream_rule]] | |
| match = '^剩余流量:(.*?) (.*)$' | |
| replace = 'total=$1&left=$2' | |
| [[userinfo.stream_rule]] | |
| match = '^Bandwidth: (.*?)/(.*)$' | |
| replace = 'used=$1&total=$2' | |
| [[userinfo.stream_rule]] | |
| match = '^.*剩余(.*?)(?:\s*?)@(?:.*)$' | |
| replace = 'total=$1' | |
| [[userinfo.time_rule]] | |
| # Rules to extract expire time data from node | |
| # Format: full_match_regex|new_format_regex | |
| # where new_format_regex should follow this example: yyyy:mm:dd:hh:mm:ss | |
| match = '^过期时间:(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)$' | |
| replace = '$1:$2:$3:$4:$5:$6' | |
| [[userinfo.time_rule]] | |
| match = '^到期时间:(\d+)-(\d+)-(\d+)$' | |
| replace = '$1:$2:$3:0:0:0' | |
| [[userinfo.time_rule]] | |
| match = '^Smart Access expire: (\d+)/(\d+)/(\d+)$' | |
| replace = '$1:$2:$3:0:0:0' | |
| [node_pref] | |
| udp_flag = true | |
| tcp_fast_open_flag = false | |
| skip_cert_verify_flag = true | |
| tls13_flag = false | |
| sort_flag = false | |
| # Script used for sorting nodes. A "compare" function with 2 arguments which are the 2 nodes to be compared should be defined in the script. Supports inline script and script path. | |
| # Examples can be seen at the filter_script option in [common] section. | |
| #sort_script = ''' | |
| #function compare(node_a, node_b) { | |
| # return info_a.Remark > info_b.Remark; | |
| #} | |
| #''' | |
| filter_deprecated_nodes = false | |
| append_sub_userinfo = true | |
| clash_use_new_field_name = true | |
| # Generate style of the proxies section of Clash subscriptions. | |
| # Supported styles: block, flow, compact | |
| # Block: - name: name1 Flow: - {name: name1, key: value} Compact: [{name: name1, key: value},{name: name2, key: value}] | |
| # key: value - {name: name2, key: value} | |
| # - name: name2 | |
| # key: value | |
| clash_proxies_style = "flow" | |
| [[node_pref.rename_node]] | |
| match = '\(?((x|X)?(\d+)(\.?\d+)?)((\s?倍率?)|(x|X))\)?' | |
| replace = "$1x" | |
| [managed_config] | |
| # Append a '#!MANAGED-CONFIG' info to Surge configurations | |
| write_managed_config = true | |
| # Address prefix for MANAGED-CONFIG info, without the trailing "/". | |
| managed_config_prefix = "https://qwqqer-sub.hf.space" | |
| # Managed config update interval in seconds, determine how long the config will be updated. | |
| config_update_interval = 86400 | |
| # If config_update_strict is set to true, Surge will require a force update after the interval. | |
| config_update_strict = false | |
| # Device ID to be written to rewrite scripts for some version of Quantumult X | |
| quanx_device_id = "" | |
| [surge_external_proxy] | |
| #surge_ssr_path = "/usr/bin/ssr-local" | |
| resolve_hostname = true | |
| [emojis] | |
| add_emoji = false | |
| remove_old_emoji = true | |
| [[emojis.emoji]] | |
| #match = '(流量|时间|应急)' | |
| #emoji = '🏳️🌈' | |
| import = "snippets/emoji.toml" | |
| # [[custom_groups]] | |
| # name = "Auto" | |
| # type = "url-test" | |
| # rule = [".*"] | |
| # url = "http://www.gstatic.com/generate_204" | |
| # interval = 300 | |
| # tolerance = 150 | |
| # lazy = true | |
| # [[custom_groups]] | |
| # name = "Proxy" | |
| # type = "select" | |
| # rule = [".*", "[]DIRECT"] | |
| # disable_udp = false | |
| # [[custom_groups]] | |
| # name = "LoadBalance" | |
| # type = "load-balance" | |
| # rule = [".*", "[]Proxy", "[]DIRECT"] | |
| # interval = 100 | |
| # strategy = "consistent-hashing" | |
| # url = "http://www.gstatic.com/generate_204" | |
| [[custom_groups]] | |
| import = "snippets/groups.toml" | |
| [ruleset] | |
| # Enable generating rules with rulesets | |
| enabled = true | |
| # Overwrite the existing rules in rule_base | |
| overwrite_original_rules = false | |
| # Perform a ruleset update on request | |
| update_ruleset_on_request = false | |
| # [[rulesets]] | |
| # group = "Proxy" | |
| # ruleset = "https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Unbreak.list" | |
| # type = "surge-ruleset" | |
| # interval = 86400 | |
| [[rulesets]] | |
| import = "snippets/rulesets.toml" | |
| [template] | |
| template_path = "" | |
| [[template.globals]] | |
| key = "clash.http_port" | |
| value = "7890" | |
| [[template.globals]] | |
| key = "clash.socks_port" | |
| value = "7891" | |
| [[template.globals]] | |
| key = "clash.allow_lan" | |
| value = "true" | |
| [[template.globals]] | |
| key = "clash.log_level" | |
| value = "info" | |
| [[aliases]] | |
| uri = "/clash" | |
| target = "/sub?target=clash" | |
| [[aliases]] | |
| uri = "/clashr" | |
| target = "/sub?target=clashr" | |
| [[aliases]] | |
| uri = "/surge" | |
| target = "/sub?target=surge" | |
| [[aliases]] | |
| uri = "/quan" | |
| target = "/sub?target=quan" | |
| [[aliases]] | |
| uri = "/quanx" | |
| target = "/sub?target=quanx" | |
| [[aliases]] | |
| uri = "/mellow" | |
| target = "/sub?target=mellow" | |
| [[aliases]] | |
| uri = "/surfboard" | |
| target = "/sub?target=surfboard" | |
| [[aliases]] | |
| uri = "/loon" | |
| target = "/sub?target=loon" | |
| [[aliases]] | |
| uri = "/ss" | |
| target = "/sub?target=ss" | |
| [[aliases]] | |
| uri = "/ssd" | |
| target = "/sub?target=ssd" | |
| [[aliases]] | |
| uri = "/sssub" | |
| target = "/sub?target=sssub" | |
| [[aliases]] | |
| uri = "/ssr" | |
| target = "/sub?target=ssr" | |
| [[aliases]] | |
| uri = "/v2ray" | |
| target = "/sub?target=v2ray" | |
| [[aliases]] | |
| uri = "/trojan" | |
| target = "/sub?target=trojan" | |
| [[aliases]] | |
| uri = "/test" | |
| target = "/render?path=templates/test.tpl" | |
| #[[tasks]] | |
| #name = "tick" | |
| #cronexp = "0/10 * * * * ?" | |
| #path = "tick.js" | |
| #timeout = 3 | |
| [server] | |
| listen = "0.0.0.0" | |
| port = 25500 | |
| serve_file_root = "web" | |
| [advanced] | |
| log_level = "debug" | |
| print_debug_info = false | |
| max_pending_connections = 10240 | |
| max_concurrent_threads = 4 | |
| max_allowed_rulesets = 64 | |
| max_allowed_rules = 0 | |
| max_allowed_download_size = 0 | |
| enable_cache = true | |
| cache_subscription = 60 | |
| cache_config = 300 | |
| cache_ruleset = 21600 | |
| script_clean_context = true | |
| async_fetch_ruleset = false | |
| skip_failed_links = true | |