├── .bartycrouch.toml ├── .gitattributes ├── .travis.yml.backup └── README.md /.bartycrouch.toml: -------------------------------------------------------------------------------- 1 | [update] 2 | tasks = ["interfaces", "code", "normalize"] 3 | 4 | [update.interfaces] 5 | path = "./ClashX" 6 | defaultToBase = false 7 | ignoreEmptyStrings = false 8 | unstripped = false 9 | 10 | [update.code] 11 | defaultToKeys = false 12 | additive = false 13 | unstripped = false 14 | 15 | [update.transform] 16 | codePath = "./ClashX" 17 | localizablePath = "./ClashX" 18 | transformer = "foundation" 19 | supportedLanguageEnumPath = "./ClashX" 20 | typeName = "BartyCrouch" 21 | translateMethodName = "translate" 22 | 23 | [update.normalize] 24 | path = "./ClashX" 25 | sourceLocale = "zh-Hans" 26 | harmonizeWithSource = true 27 | sortByKeys = true 28 | 29 | [lint] 30 | path = "./ClashX" 31 | duplicateKeys = true 32 | emptyValues = true 33 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.md linguist-language=Swift 2 | *.yml linguist-language=Swift 3 | *.backup linguist-language=Swift 4 | *.toml linguist-language=Swift -------------------------------------------------------------------------------- /.travis.yml.backup: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode11 3 | node_js: 10 4 | before_install: 5 | - openssl aes-256-cbc -K $encrypted_a43c9d4ca4d4_key -iv $encrypted_a43c9d4ca4d4_iv 6 | -in dist.p12.enc -out scripts/travis/dist.p12 -d 7 | - security create-keychain -p mysecretpassword build.keychain 8 | - security default-keychain -s build.keychain 9 | - security unlock-keychain -p mysecretpassword build.keychain 10 | - security set-keychain-settings -t 3600 -u build.keychain 11 | - security import ./scripts/travis/dist.p12 -k build.keychain -T /usr/bin/codesign 12 | -P "" 13 | - 'security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword build.keychain' 14 | install: 15 | - bash install_dependency.sh 16 | - cd $TRAVIS_BUILD_DIR/ClashX 17 | - echo `go version` 18 | - brew update 19 | - brew upgrade go || true 20 | - echo `go version` 21 | - python3 build_clash.py 22 | - cd $TRAVIS_BUILD_DIR 23 | 24 | script: 25 | - 'set -o pipefail && xcodebuild -workspace ClashX.xcworkspace -scheme "ClashX" build CODE_SIGN_IDENTITY="Developer 26 | ID Application: Fuzhou West2Online Internet Inc. (MEWHFZ92DY)"|xcpretty' 27 | - echo "Checking SMJobBless Vailded" 28 | - build_dir=`xcodebuild -workspace ClashX.xcworkspace -scheme "ClashX" -showBuildSettings -configuration Debug | grep -m 1 "TARGET_BUILD_DIR" | grep -oEi "\/.*"` 29 | - build_dir=${build_dir}"/ClashX.app" 30 | - python SMJobBlessUtil.py check ${build_dir} 31 | - echo "Check completed" 32 | 33 | before_deploy: 34 | - gem install gym 35 | - bundle install 36 | - fastlane gym -s ClashX 37 | - npm install --global create-dmg 38 | - create-dmg ClashX.app 39 | - mv ClashX*.dmg ClashX.dmg 40 | - fastlane run notarize package:"./ClashX.dmg" bundle_id:"com.west2online.ClashX" 41 | 42 | deploy: 43 | provider: releases 44 | prerelease: false 45 | skip_cleanup: true 46 | api_key: 47 | secure: YKO96FhN1JgvM+EiyciNQCu8nk/t87txxCEA5//XuKGKh+75tVyB+udmEL4sQL2R01vuShO5WwXLRulHkDsVFjNgvTGa64cdG6SMNORMI+mEuBW2L/RPtkaK1GAY+l+iGkH9i1Ng0SaDqL8xSc5rkqicdUV9NSDrg3k+Ck0pu/DvHgwHAmIjN0JG73TuQKfENDlwoa/uj6ztXpxGR30vgobqaex8wwGV+9fs8Jfbh3cO/79iGXweRhJptvvW0EAF1vV95KyEaUYtHP+7NYVVapOCWwek2irdn1HBm4pRib/0bHh/wFQgnI9OoQbKYuKNc6xRnt9h0wWh+SSIwRA1X7jiZTipli+7G2HGXpvW0r8jMskhYxqjcRH5EWB8rGXoiy/16GUuY1SK1ID/oW9nSh5ws6quaRBmpXGyJcoOUq9STsF+HVOF1DOX4qRt8B7049ytdKIRNe3QGmOlc8w3Nyi5y/v9CHWmVWRrKvzJ8qXP/+JJlFIsXhZR+TYqosiX2ZoKpanLv1RFFbU5FxqdaQapQX465FlpoD/6Qhv+2WLmLBgI1+ewR6g/wjLus6unVu4C3ztYov/9Y7OhYlfD+CqdzKOn+98gGAPRV92MfFh8Qa6rXjsVbP4dC09zKze/+OZtCXr36C5M40MYIChVuSUlDSG4IhElylboSYvQ/wQ= 48 | file: 49 | - ClashX.dmg 50 | 51 | on: 52 | repo: yichengchen/clashX 53 | branch: master 54 | tags: true 55 | prerelease: true 56 | 57 | after_deploy: 58 | - 'curl -u yichengchen:$GitHub_Token -X POST https://api.github.com/repos/yichengchen/clashX/pages/builds -H "Accept: application/vnd.github.mister-fantastic-preview+json"' 59 | - fastlane run upload_symbols_to_crashlytics 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Clash 3 |
4 | ClashXR 5 |
6 |

7 | 8 | ## Since the native clash core already supports the SSR protocol, this project will stop maintenance from now on, thank you for your support all the way ❤️ 9 | 10 | A rule based proxy For Mac base on [Clashr](https://github.com/paradiseduo/clashr)(support chacha20). 11 | 12 | Based on [clashX](https://github.com/yichengchen/clashX) 13 | 14 | You can do [this](https://github.com/paradiseduo/subweb) to use ClashXR. 15 | 16 | 17 | ## Features 18 | 19 | - HTTP/HTTPS and SOCKS protocol 20 | - Surge like configuration 21 | - GeoIP rule support 22 | - Support Vmess/Shadowsocks/ShadowsocksR/Socks5/Torjan 23 | - Support for Netfilter TCP redirect 24 | 25 | ## Install 26 | 27 | You can download from [release](https://github.com/paradiseduo/ClashXR/releases) page, or use homebrew 28 | ``` 29 | brew cask install clashxr 30 | ``` 31 | 32 | ## Build 33 | - Make sure have python3 and golang installed in your computer. 34 | 35 | - Download deps 36 | ``` 37 | bash install_dependency.sh 38 | ``` 39 | - Build 40 | 41 | - Signature check 42 | ```shell 43 | ./SMJobBlessUtil.py setreq /path/to/ClashXR.app ClashXR/Info.plist ProxyConfigHelper/Helper-Info.plist 44 | ``` 45 | 46 | - Build and run. 47 | 48 | ## Config 49 | 50 | 51 | The default configuration directory is `$HOME/.config/clash` 52 | 53 | The default name of the configuration file is `config.yaml`. You can use your custom config name and switch config in menu `Config` section. 54 | 55 | To Change the ports of ClashX, you need to modify the `config.yaml` file. The `General` section settings in your custom config file would be ignored. 56 | 57 | Checkout [Clash](https://github.com/Dreamacro/clash) or [SS-Rule-Snippet for Clash](https://github.com/Hackl0us/SS-Rule-Snippet/blob/master/LAZY_RULES/clash.yaml) for more detail. 58 | 59 | ## Advance Config 60 | ### Change your status menu icon 61 | 62 | Place your icon file in the `~/.config/clash/menuImage.png` then restart ClashX 63 | 64 | ### Change default system ignore list. 65 | 66 | - Download sample plist in the [Here](proxyIgnoreList.plist) and place in the 67 | 68 | ``` 69 | ~/.config/clash/proxyIgnoreList.plist 70 | ``` 71 | 72 | - Edit the `proxyIgnoreList.plist` to set up your own proxy ignore list 73 | 74 | ### Use url scheme to import remote config. 75 | 76 | - Using url scheme describe below 77 | 78 | ``` 79 | clash://install-config?url=http%3A%2F%2Fexample.com&name=example 80 | ``` 81 | 82 | 83 | ## Star Trend 84 | [![Stargazers over time](https://starchart.cc/paradiseduo/ClashXR.svg)](https://starchart.cc/paradiseduo/ClashXR) 85 | --------------------------------------------------------------------------------