新增ACL自动模式 和 回国模式(Proxy Back China)

回国模式必须搭配一个回国的SS才可使用。原理为仅代理国内IP
This commit is contained in:
秦宇航
2017-05-07 14:40:21 +08:00
parent c1b37d4482
commit 95bf7b84ba
7 changed files with 7639 additions and 14 deletions
+32 -11
View File
@@ -33,8 +33,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
@IBOutlet weak var globalModeMenuItem: NSMenuItem!
@IBOutlet weak var manualModeMenuItem: NSMenuItem!
@IBOutlet weak var whiteListModeMenuItem: NSMenuItem!
// @IBOutlet weak var whiteListMenuItem: NSMenuItem!
// @IBOutlet weak var whiteListIPMenuItem: NSMenuItem!
@IBOutlet weak var ACLModeMenuItem: NSMenuItem!
@IBOutlet weak var ACLAutoModeMenuItem: NSMenuItem!
@IBOutlet weak var ACLBackChinaMenuItem: NSMenuItem!
@IBOutlet weak var serversMenuItem: NSMenuItem!
@IBOutlet var pingserverMenuItem: NSMenuItem!
@@ -364,15 +365,23 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
applyConfig()
}
@IBAction func selectACLAutoMode(_ sender: NSMenuItem) {
let defaults = UserDefaults.standard
defaults.setValue("whiteList", forKey: "ShadowsocksRunningMode")
defaults.setValue("gfw.acl", forKey: "ACLPath")
updateRunningModeMenu()
applyConfig()
}
@IBAction func selectACLWhiteListMode(_ sender: NSMenuItem) {
@IBAction func selectACLBackCHNMode(_ sender: NSMenuItem) {
let defaults = UserDefaults.standard
defaults.setValue("whiteList", forKey: "ShadowsocksRunningMode")
defaults.setValue("backchn.acl", forKey: "ACLPath")
updateRunningModeMenu()
applyConfig()
}
@IBAction func selectWhiteListMode(_ sender: NSMenuItem) {
let defaults = UserDefaults.standard
defaults.setValue("whiteList", forKey: "ShadowsocksRunningMode")
defaults.setValue("ACLPath", forKey: "chn.acl")
defaults.setValue("chn.acl", forKey: "ACLPath")
updateRunningModeMenu()
applyConfig()
}
@@ -507,17 +516,29 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
manualModeMenuItem.state = 0
whiteListModeMenuItem.state = 0
if mode == "auto" {
proxyMenuItem.title = "Proxy - Auto By PAC".localized
autoModeMenuItem.state = 1
} else if mode == "global" {
proxyMenuItem.title = "Proxy - Global".localized
globalModeMenuItem.state = 1
} else if mode == "manual" {
proxyMenuItem.title = "Proxy - Manual".localized
manualModeMenuItem.state = 1
} else if mode == "whiteList" {
proxyMenuItem.title = "Proxy - White List".localized
whiteListModeMenuItem.state = 1
ACLModeMenuItem.state = 0
whiteListModeMenuItem.state = 0
ACLBackChinaMenuItem.state = 0
ACLAutoModeMenuItem.state = 0
let aclMode = defaults.value(forKey: "ACLPath") as! String
switch aclMode {
case "backchn.acl":
ACLModeMenuItem.state = 1
ACLBackChinaMenuItem.state = 1
break
case "gfw.acl":
ACLModeMenuItem.state = 1
ACLAutoModeMenuItem.state = 1
break
default:
whiteListModeMenuItem.state = 1
}
}
updateStatusItemUI()
}
+22
View File
@@ -14,6 +14,9 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="ShadowsocksX_NG" customModuleProvider="target">
<connections>
<outlet property="ACLAutoModeMenuItem" destination="sDG-YV-yuQ" id="kIE-Ua-zvx"/>
<outlet property="ACLBackChinaMenuItem" destination="lam-el-r4I" id="O41-Lr-e0h"/>
<outlet property="ACLModeMenuItem" destination="Yub-b0-bni" id="e0w-Td-aE9"/>
<outlet property="RunningStatusMenuItem" destination="fzk-mE-CEV" id="R4x-gK-Qcw"/>
<outlet property="ShowNetworkSpeedItem" destination="a3h-uQ-DuO" id="OLq-K8-rEO"/>
<outlet property="autoModeMenuItem" destination="r07-Gu-aEz" id="9aH-pQ-Rgi"/>
@@ -75,6 +78,25 @@
<action selector="selectManualMode:" target="Voe-Tx-rLC" id="Xxb-28-6fi"/>
</connections>
</menuItem>
<menuItem title="ACL Mode" id="Yub-b0-bni">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="ACL Mode" id="tEB-59-fCx">
<items>
<menuItem title="Auto" id="sDG-YV-yuQ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="selectACLAutoMode:" target="Voe-Tx-rLC" id="0PY-wQ-9KI"/>
</connections>
</menuItem>
<menuItem title="Proxy Back China" state="on" id="lam-el-r4I">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="selectACLBackCHNMode:" target="Voe-Tx-rLC" id="ZK2-2R-g2C"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Proxy Settings" id="diI-fB-Rss">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Proxy Settings" id="YZp-bf-L40">
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16D17a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12120" systemVersion="16F71b" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
-1
View File
@@ -46,7 +46,6 @@ func generateSSLocalLauchAgentPlist() -> Bool {
let enableUdpRelay = defaults.bool(forKey: "LocalSocks5.EnableUDPRelay")
let enableVerboseMode = defaults.bool(forKey: "LocalSocks5.EnableVerboseMode")
let enabelWhiteListMode = defaults.value(forKey: "ShadowsocksRunningMode") as! String
print(enabelWhiteListMode )
var arguments = [sslocalPath, "-c", "ss-local-config.json"]
if enableUdpRelay {
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff