Subconverter Versions Save

Utility to convert between various subscription format

v0.6.0

3 years ago

MAJOR CHANGES: Add experimental JavaScript support for providing subscriptions, filtering nodes, sorting nodes, generating groups, renaming nodes, adding Emojis. Change section and key names in configuration files.

Bugs fixed: Fix Emoji settings not working in external configs in YAML format. Fix broken SSID group exported to Quantumult X configurations. (#167) Fix compatibility with some V2Ray-Core configurations. Fix GROUP/GROUPID/INSERT matcher not correctly handle empty rules. Fix support for parsing Surge HTTP / SOCKS5 nodes. Fix not correctly handle nodes with only Emojis as remarks. Fix not correctly handle nodes with port 0. Fix not correctly handle rename patterns that may make remarks empty. Fix data URIs not correctly parsed. Fix downloading files may be caught in infinite redirect loops. Fix support for some non-standard Shadowsocks subscriptions. Fix exporting useless info in Clash HTTP/SOCKS 5 nodes. Fix keeping UDP/TFO/Skip Cert Verify flags from original subscriptions not working. Fix support for parsing keyword type in Clash domain rule-provider. Fix potential error on reading configuration files. Fix not processing remarks with comma when exporting some subscriptions. Fix rename/emoji scripts not working with INI. Fix examples in pref.ini Fix ruleset types other than Surge Ruleset not correctly expanded to rules. Fix trying to limit upload file size. Fix when no GEOIP rule is added, the Clash Script will not be able to generate. Fix download fail when cache is disabled. Fix support for converting Quantumult X rulesets to Surge format. Fix not adding local rulesets as Clash rule-providers. Fix potential crash when parsing broken Surge subscription。 Fix crash when providing a folder name to fileGet. Fix error in generated Clash scripts. Fix missing classical providers when exporting Clash rule-providers. Fix not correctly process some rulesets when generating Clash scripts. Fix typo in pref.ini.

Newly added: Add support for using CORS proxy in downloading. Add max rulesets/rules limit option. Add tag support for adding group name to a specific link. Add complete matcher support for Emoji and rename match rule. Add support for tolerance option in Clash proxy groups. Add options for specifying maximum allowed rulesets in external configs and generated rules. Add support for suffix tag in Clash rule provider. Add request._args variable to templates to read all arguments passed from URL. Add reporting HTTP status code when failed to upload to Gist. Add support for parsing Clash subscriptions in JSON format. Add retry for downloading files. Add support for exporting Clash classical rule-provider. Add support for adding proxy provider to custom group in Clash configurations. Add getLink, and, or, bool, string, startsWith, endsWith as template functions. Add support for any amount of argument for template function join. Add independent option for adding/removing Emojis in URL argument. Add support for reading API_MODE/API_TOKEN/MANAGED_PREFIX from environment variables. Add support for using Quantumult X rulesets/Clash rule-providers as rule sources. Add geoip as script function. Add support for using script to rename nodes and add Emojis to remarks. Add "mixed" target to generate subscriptions with all types of standard subscriptions. Add passing X-User-Agent and X-Client-IP header to subscription downloader. Add support for exporting Trojan nodes to Loon configurations. Add "nullnode" as node placeholder to export configurations without adding any real node. Add support for using !!import in source subscription URLs. Add support for allowInsecure and tfo argument in Trojan links.

Other changes: Raise download file size limit to 1MB. Move node renaming after removing Emojis. Use internal MD5 calculation. Update local rulesets and configs. inja: Implement a better white space control system. inja: Add variadic function callback support.

v0.5.2

4 years ago

Bug fixed: Fix /render not correctly render UTF-8 content. Fix not correctly loading configuration file when api_mode is false. Fix program crash when processing broken template variables passed. Fix trying to load other arguments when no supported target is provided. Fix support for parsing some subscriptions with complex passwords. Fix parse error with some Surge/Quantumult X subscriptions. Fix incorrect flag for expanding rulesets to rules. Rework logic for insert_url.

Newly added: Add append to template function. Add URL aliasing support to shorten request URL. Add support for parsing and exporting Snell server in configurations. Add numbering system to process duplicated node names. Add detailed description for some settings in pref configuration. Add skip_cert_verify support in Quantumult X (#144). Add 512KB file download size limit to prevent feeding a large file to the processor. Add file scope limit to rule_base options in external config to prevent loading sensitive files as rule base. Add support for generating Clash DOMAIN/IP-CIDR rule-providers. Add experimental Clash script generator. Add support for exporting Surge DOMAIN-SET. Add INSERT group match flag to match insert_url only. Add keeping UDP/TFO/Skip Cert Verify settings in subscriptions. Add support for combining multiple profile. Add replacing all match when using rename_node. Add support for generating Clash rule-providers in Rule mode. Add "prepend" option to control where to add insert_url. Add default switch for enabling insert_url. Add support for Quantumult X IP6-CIDR rules. Add SNI host settings to Surge VMess nodes. Add support for specifying node rename pattern in URL argument. Add support for exporting SSID group to Quantumult configurations.

Other changes: Remove support for std::regex for now. Change global UDP/TFO/Skip Cert Verify settings in pref configuration to comments. Update README-cn.md (#156). Optimize codes.

v0.5.1

4 years ago

Bug fixed: Fix not filtering USER-AGENT and URL-REGEX rules for Surfboard configurations. (Issue #127). Fix not filtering load-balance group in Surfboard configurations. (Issue #128). Fix inconsistent argument name in HTTP and Socks 5 single link. Fix support for some non-standard ShadowsocksD subscription. Fix include/exclude option in URL argument not overriding former settings. Fix template system interpreting some comments in YAML files as line statement. Fix incorrect argument count for find in template. Fix error in processing URL arguments. Fix trying to fetch a ruleset when adding it as a RULE-SET rule to configuration files. Fix support for parsing some Surge configurations. Fix adding extra blank line to section end when exporting some configurations. Fix adding real internal link as MANAGED-CONFIG URL when using profile. Fix rule type filter not working properly. Fix exporting broken configuration file in some occasions. Fix directly treating not-exist ruleset file as URL. Fix group fallback not working on Quantumult X configurations. Fix typo in example profile. Fix logical error causing local rulesets are missing in configurations. Fix not filtering IP-CIDR6 / PROCESS-NAME rules in Quantumult X rules. Fix /getruleset not filtering PROCESS-NAME / IP-CIDR6 for Quantumult X.

Newly added: Add support for using template in external configurations. Add relay group support for Clash configurations. Add specifying default external configuration file to use when none is provided. Add URL Decode to username and password field in Telegram-link-style HTTP/Socks 5 links. Add more function callbacks to template renderer. Add basic Jinja2Cpp template library support. Add support for specifying tolerance and timeout for some proxy groups. (Issue #121). Add keeping comments and blank lines for more sections in Quantumult X configurations. Add rule type match to filter rules. Add /render interface to directly render a template as output content. Add find as a template function. Add filtering out token as a template variable. Add split as a template function。 Add SNI host parsing support for Trojan subscriptions. Add detailed log report. Add managed_config_prefix to global variables in template.

Other changes: Optimize codes. Update build scripts. Update inja library to latest version. Update local rulesets and configs. inja: re-implement variable accessing to catch exceptions on using not-exist variable and return an empty value. INIReader: Add keeping comments and blank lines in direct-save sections.

v0.5.0

4 years ago

Template support has been added to base configurations! You can now control the content inside the base configurations with global variables in pref configuration, local variables in external configurations and request arguments when calling the converting interface.

Bug fixed: Fix password missing when parsing Quantumult X configurations. Fix SNI host missing in Surge configurations. Fix not exporting load-balance group for Surge configurations. Fix not processing duplicated node remarks in Surge Node List. Fix TLS settings missing when parsing Clash configurations. Fix include/exclude_remarks not working in external configs. Fix Surge node list unable to be uploaded to Gist. Fix support for using \x in regular expressions to match character. Fix potential crash when parsing V2Ray configs. Fix broken /sub2clashr and /surge2clash interface. Fix support for single node configuration used by Shadowsocks(R)-libev and V2Ray-core.

Newly added: Add template support for base configurations. Add support for exporting HTTP/Socks 5 nodes to Quantumult configurations. Add support for VMess HTTP nodes in Clash configurations. Add support for adding route settings to Shadowsocks Android subscriptions. Add serve_cache_on_fetch_fail option to determine whether to serve cached content when failed to download a file. Add group type fallback when only one node is found for an auto group in Quantumult(X) configuration. Add support for another type of Quantumult X subscriptions. Add SNI host support in Surge / Clash configurations. Add group name/remark support for Telegram-liked HTTP/Socks 5 links. Add support for Shadowrocket style HTTP nodes subscription. Add warning log when failed to fetch a ruleset or the ruleset is empty. Add appending all /getprofile arguments to internal call.

Other changes: Tweak Emoji matching rules. Update local rulesets and configs. Update README-cn.md. Optimize codes.

v0.4.4

4 years ago

Bugs fixed: Fix compatibility with some non-standard Surge configurations. Fix a bug that some exported Surfboard configuration may stop working. Fix a bug that some Shadowsocks nodes are missing from Loon configurations. Fix failed to load external configuration when enable_rule_generator or overwrite_original_rules is missing in YAML format configuration. Fix potential crash when stopping the server. Improve compatibility with some subscription links with spaces.

Newly added: Add support for Trojan node subscriptions. Add support for Quantumult X style Trojan nodes. Add support for Trojan nodes in Clash configurations. Add support for HTTP nodes in Quantumult X configurations. Add support for new field names for Clash. Add experimental async ruleset fetching. Add host name resolve when adding ShadowsocksR nodes to Surge configs.

Other changes: Refactor Clash Rule generation to speed up the process. Update local rulesets and configs. Optimize logger. Optimize codes.

v0.4.3

4 years ago

Bug fixes: Fix a bug which may cause crash at startup on some platforms. Fix potential crash when parsing some stream nodes. Fix not processing quotes in ws-headers in Surge VMess configurations. Fix when default_url is set and insert_url is not set in YAML configuration and access /sub without url argument, the nodes in default_url will be added twice.

Newly added: Add support for some other types of stream/expiry time nodes. Add /version interface to compatible with some front-end.

Other changes: Update local rulesets and configs.

v0.4.2

4 years ago

Bug fix: Fix stack overflow problem on some platform. Fix compatibility with some broken Shadowrocket links. Fix a crash when no nodes are found when generating Quantumult (X) node lists. Fix stream/time node matcher not working with YAML configuration. Fix compile error with USE_STD_REGEX (Issue #74).

Newly added: Add mutex lock to prevent reading and writing a cached file at the same time. Add support for another type of stream nodes. Add support for another type of time nodes. Add PCRE2 JIT optimization for filtering nodes. Add space after adding proxy type to node remarks. Add direct option to generator to download subscriptions or use local files directly. Add displaying Subscription User Info when generating artifacts in generator mode. Add return code to report generator error. Add output code page restore.

Other changes: Optimize codes. Update README-cn.md.

v0.4.1

4 years ago

Bug fix: Fix a bug that Clash may interpret pure number password as float64 type (Issue #58). Fix a bug that internal parser may incorrectly process spaces in configs (Issue #70). Fix a bug that some groups are missing in the exported Quantumult X/Mellow configurations. Fix incorrect group type conversion for Quantumult (X). Fix Quantumult X nodes not handling duplicated remarks. Fix logical error in generating Quantumult X configurations. Fix some Shadowsocks nodes are missing in Loon configurations. Fix overwrite_original_rules option not working in pref configuration. Fix filename option in web interface. Fix when failed to download any files, the program still treat it as succeeded. Fix support for parsing some non-standard Clash configurations.

Newly added: Add range support for group ID match condition. Add generator-only mode to save configurations to files or upload to Gists. Force expand all local rules instead of generating /getruleset urls for generator mode. Add --artifact startup option to specify which artifact(s) should be generated.

Other changes: Optimize codes. Fix typo. Update README-docker.md. Tweak Emoji matching rules. Update local rulesets and configurations.

v0.4.0

4 years ago

Bug Fix: Fix potential segmentation fault error due to some incorrect copy assignments. Fix potential crash due to incorrect usage of cURL library. Fix potential memory leak causing memory usage to be too high. Fix when exporting Quantumult (X) Node List, the first node will appear twice. Fix loading local subscriptions requires token when API mode is disabled. Fix configuration file not found when start up via right-click menu on some platform. Fix missing setting in pref.yml. Fix Emoji option for web interface.

Newly Added: Add support for exporting Loon configurations. Add support for parsing Clash Proxy Provider. Add support for adding VMess nodes to Surfboard configurations. Add insert_url option to add node(s) before all exported subscriptions. Add /getprofile interface for easy access. Add an option to control whether to add Subscription-UserInfo or not. Add include/exclude settings to external configurations. Add HTTP single link support with Telegram-link-liked format. Add remark option support for HTTP single link. Add support for applying renames/Emojis to a specific group. Add support for adding stream and expiry info to SSD subscriptions. Add Edge header support for Surge/Quantumult/Clash. Add cache system for configs, rulesets and subscriptions. Add proxy_config option for downloading external config files. Add /qx-rewrite and /qx-script interface to add device ID to scripts for some version of Quantumult X. Add policy-path parsing support for /surge2clash interface. Add interval/strict options support for managed config. Add filename option for setting file name when downloading exported subscriptions.

Other Changes: Allow loading local subscriptions in API mode if the right token is provided. Using a faster method to read files. Update READMEs. Disable base generation as default. Remove Mellow base generation for now. Optimize codes. Clean up unused files.

v0.3.1

4 years ago

Bug Fixes:

  • Fix a potential random crash on non-Windows platforms.
  • Fix logical error for customizing rulesets and groups.
  • Fix when subscription download timeout before complete, the parser will still try to parse downloaded content.
  • Fix when processing duplicated node name for Surge, the program will crash.
  • Fix when a request without User-Agent was received, the program will crash.
  • Fix after generating a Clash Proxy Provider, the cached Clash base will be broken.
  • Fix parsing error for some VMess subscriptions.
  • Fix compatibility with some non-standard Shadowsocks and Shadowcsocks Android subscriptions.
  • Fix missing keys and sections in Mellow configs.
  • Fix Surge SSID groups not being correctly generated.
  • Fix empty lines in rulesets not being removed.
  • Fix a bug which may cause some comments in rulesets not being filtered.
  • Fix when generating configurations with external configuration file with rule generator disabled, generated rules will still be added.
  • Fix when list option is set to true, the program will still try to load groups and rulesets.
  • Fix Emoji matching rules.

Add:

  • Add an interface to directly convert Surge config to Clash config.
  • Add support for importing snippets for some options in configuration files.
  • Add an interface to provide local/remote rulesets for Surge/Quantumult X.
  • Add converting rulesets to Quantumult X format and adding as remote filters.
  • Add duplicate node name check for Quantumult(X) configuration files.
  • Add token verification when using default_urls in API mode.
  • Add support for extracting UserInfo from SSD subscriptions.
  • Add support for configuration files in YAML format.
  • Add Netease Music IP ruleset.
  • Add support for data: URIs.
  • Add more HTTP status code.
  • Add SSID group example.

Changes:

  • Change default configuration file to pref.ini and try to look for pref.yml.
  • Change default working directory to where pref.ini is in.
  • Change Quantumult X "url-test" equivalent to "available".
  • Change default regex library to PCRE2.
  • Update local rulesets and example configs.
  • Update build scripts.
  • Update Dockerfile.
  • Update READMEs.
  • Clean up codes.