diff --git a/ShadowsocksX-NG.xcodeproj/project.pbxproj b/ShadowsocksX-NG.xcodeproj/project.pbxproj index db39cba..afa5eff 100755 --- a/ShadowsocksX-NG.xcodeproj/project.pbxproj +++ b/ShadowsocksX-NG.xcodeproj/project.pbxproj @@ -21,6 +21,14 @@ 9B2491B41D0ACC3A003BBECC /* PreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B2491B61D0ACC3A003BBECC /* PreferencesWindowController.xib */; }; 9B3546721E802B1200B510B4 /* ToastWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3546701E802B1200B510B4 /* ToastWindowController.swift */; }; 9B3546731E802B1200B510B4 /* ToastWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3546711E802B1200B510B4 /* ToastWindowController.xib */; }; + 9B3F7BFB1E82BF2E00C68B75 /* libev.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3F7BF71E82BF2D00C68B75 /* libev.4.dylib */; }; + 9B3F7BFC1E82BF2E00C68B75 /* libmbedcrypto.2.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3F7BF81E82BF2D00C68B75 /* libmbedcrypto.2.4.2.dylib */; }; + 9B3F7BFD1E82BF2E00C68B75 /* libsodium.18.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3F7BF91E82BF2E00C68B75 /* libsodium.18.dylib */; }; + 9B3F7BFE1E82BF2E00C68B75 /* libudns.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3F7BFA1E82BF2E00C68B75 /* libudns.0.dylib */; }; + 9B3F7BFF1E82BF5B00C68B75 /* libev.4.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3F7BF71E82BF2D00C68B75 /* libev.4.dylib */; }; + 9B3F7C001E82BF5B00C68B75 /* libmbedcrypto.2.4.2.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3F7BF81E82BF2D00C68B75 /* libmbedcrypto.2.4.2.dylib */; }; + 9B3F7C011E82BF5B00C68B75 /* libsodium.18.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3F7BF91E82BF2E00C68B75 /* libsodium.18.dylib */; }; + 9B3F7C021E82BF5B00C68B75 /* libudns.0.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3F7BFA1E82BF2E00C68B75 /* libudns.0.dylib */; }; 9B3FFF0D1D05FEB30019A709 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF0C1D05FEB30019A709 /* Utils.swift */; }; 9B3FFF141D0705810019A709 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF131D0705810019A709 /* Notifications.swift */; }; 9B3FFF171D072FDE0019A709 /* LaunchAtLoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF161D072FDE0019A709 /* LaunchAtLoginController.m */; }; @@ -55,7 +63,6 @@ 9BA04B231D23D5A5005AAD7F /* ProxyConfTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA04B221D23D5A5005AAD7F /* ProxyConfTool.m */; }; 9BB706A71D1B982300551F0E /* SWBApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB706A51D1B982300551F0E /* SWBApplication.m */; }; 9BC70EDC1D2E3E3100EDA4CA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9B172A6C1D0ADDDD00B87B9A /* Localizable.strings */; }; - 9BE8FBBF1D0B211600CAFD01 /* libcrypto.1.0.0.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 9BE8FBBD1D0B1FB900CAFD01 /* libcrypto.1.0.0.dylib */; }; 9BEEF0691D04D4D500FC52B3 /* install_ss_local.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */; }; 9BEEF06A1D04D4D500FC52B3 /* start_ss_local.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */; }; 9BEEF06B1D04D4D500FC52B3 /* stop_ss_local.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */; }; @@ -151,6 +158,10 @@ 9B2491B51D0ACC3A003BBECC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PreferencesWindowController.xib; sourceTree = ""; }; 9B3546701E802B1200B510B4 /* ToastWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastWindowController.swift; sourceTree = ""; }; 9B3546711E802B1200B510B4 /* ToastWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ToastWindowController.xib; sourceTree = ""; }; + 9B3F7BF71E82BF2D00C68B75 /* libev.4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libev.4.dylib; sourceTree = ""; }; + 9B3F7BF81E82BF2D00C68B75 /* libmbedcrypto.2.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libmbedcrypto.2.4.2.dylib; sourceTree = ""; }; + 9B3F7BF91E82BF2E00C68B75 /* libsodium.18.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libsodium.18.dylib; sourceTree = ""; }; + 9B3F7BFA1E82BF2E00C68B75 /* libudns.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libudns.0.dylib; sourceTree = ""; }; 9B3FFF0C1D05FEB30019A709 /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; 9B3FFF131D0705810019A709 /* Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = ""; }; 9B3FFF151D072FDE0019A709 /* LaunchAtLoginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LaunchAtLoginController.h; sourceTree = ""; }; @@ -195,7 +206,6 @@ 9BA04B221D23D5A5005AAD7F /* ProxyConfTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProxyConfTool.m; sourceTree = ""; }; 9BB706A51D1B982300551F0E /* SWBApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWBApplication.m; sourceTree = ""; }; 9BB706A61D1B982300551F0E /* SWBApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWBApplication.h; sourceTree = ""; }; - 9BE8FBBD1D0B1FB900CAFD01 /* libcrypto.1.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libcrypto.1.0.0.dylib; sourceTree = ""; }; 9BE8FBC11D0B71CF00CAFD01 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/PreferencesWindowController.strings"; sourceTree = ""; }; 9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_ss_local.sh; sourceTree = ""; }; 9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = start_ss_local.sh; sourceTree = ""; }; @@ -224,9 +234,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9B3F7BFE1E82BF2E00C68B75 /* libudns.0.dylib in Frameworks */, + 9B3F7BFC1E82BF2E00C68B75 /* libmbedcrypto.2.4.2.dylib in Frameworks */, + 9B3F7BFD1E82BF2E00C68B75 /* libsodium.18.dylib in Frameworks */, 9B6BF9541E27B2570061B9A7 /* ServiceManagement.framework in Frameworks */, 9B3FFF3E1D08D9910019A709 /* SystemConfiguration.framework in Frameworks */, 258E511BA910B0521B24DAB8 /* Pods_ShadowsocksX_NG.framework in Frameworks */, + 9B3F7BFB1E82BF2E00C68B75 /* libev.4.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -267,6 +281,10 @@ 9B07EFB01D048E900052D9DF /* Support Files */ = { isa = PBXGroup; children = ( + 9B3F7BF71E82BF2D00C68B75 /* libev.4.dylib */, + 9B3F7BF81E82BF2D00C68B75 /* libmbedcrypto.2.4.2.dylib */, + 9B3F7BF91E82BF2E00C68B75 /* libsodium.18.dylib */, + 9B3F7BFA1E82BF2E00C68B75 /* libudns.0.dylib */, 9B5832101E742632009D5B7D /* kcptun_1.png */, 9B58320A1E7422DB009D5B7D /* http.png */, 9B5832061E7421B2009D5B7D /* virtual-server-icon-3.png */, @@ -278,7 +296,6 @@ C6D4298F1DA75988002A5711 /* privoxy */, C6D429911DA75988002A5711 /* start_privoxy.sh */, C6D429921DA75988002A5711 /* stop_privoxy.sh */, - 9BE8FBBD1D0B1FB900CAFD01 /* libcrypto.1.0.0.dylib */, 9B172A6C1D0ADDDD00B87B9A /* Localizable.strings */, 9B3FFF4B1D09D8F70019A709 /* install_helper.sh */, 9B3FFF281D08A1DF0019A709 /* user-rule.txt */, @@ -549,13 +566,16 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9B3F7BFF1E82BF5B00C68B75 /* libev.4.dylib in Resources */, + 9B3F7C001E82BF5B00C68B75 /* libmbedcrypto.2.4.2.dylib in Resources */, + 9B3F7C011E82BF5B00C68B75 /* libsodium.18.dylib in Resources */, + 9B3F7C021E82BF5B00C68B75 /* libudns.0.dylib in Resources */, 9B9CBCB41E26453C00FC61AA /* start_kcptun.sh in Resources */, 9B9CBCB51E26453C00FC61AA /* stop_kcptun.sh in Resources */, 9B9CBCAF1E263B1600FC61AA /* libpcre.1.dylib in Resources */, 9B9CBCA81E26312E00FC61AA /* install_kcptun.sh in Resources */, 9B5832031E741F8D009D5B7D /* command-512.png in Resources */, 9B9CBCAA1E2633CB00FC61AA /* kcptun_client in Resources */, - 9BE8FBBF1D0B211600CAFD01 /* libcrypto.1.0.0.dylib in Resources */, 9B3FFF541D09E2D10019A709 /* proxy_conf_helper in Resources */, 9B5832071E7421B2009D5B7D /* virtual-server-icon-3.png in Resources */, 9BEEF0691D04D4D500FC52B3 /* install_ss_local.sh in Resources */, diff --git a/ShadowsocksX-NG/LaunchAgentUtils.swift b/ShadowsocksX-NG/LaunchAgentUtils.swift index ad2b328..b53611f 100644 --- a/ShadowsocksX-NG/LaunchAgentUtils.swift +++ b/ShadowsocksX-NG/LaunchAgentUtils.swift @@ -8,7 +8,7 @@ import Foundation -let SS_LOCAL_VERSION = "2.5.6" +let SS_LOCAL_VERSION = "3.0.5" let KCPTUN_CLIENT_VERSION = "20170117" let PRIVOXY_VERSION = "3.0.26.static" let APP_SUPPORT_DIR = "/Library/Application Support/ShadowsocksX-NG/" @@ -31,7 +31,7 @@ func getFileSHA1Sum(_ filepath: String) -> String { // MARK: sslocal func generateSSLocalLauchAgentPlist() -> Bool { - let sslocalPath = NSHomeDirectory() + APP_SUPPORT_DIR + "ss-local" + let sslocalPath = NSHomeDirectory() + APP_SUPPORT_DIR + "ss-local-latest/ss-local" let logFilePath = NSHomeDirectory() + "/Library/Logs/ss-local.log" let launchAgentDirPath = NSHomeDirectory() + LAUNCH_AGENT_DIR let plistFilepath = launchAgentDirPath + LAUNCH_AGENT_CONF_SSLOCAL_NAME @@ -64,7 +64,7 @@ func generateSSLocalLauchAgentPlist() -> Bool { "StandardOutPath": logFilePath, "StandardErrorPath": logFilePath, "ProgramArguments": arguments, - "EnvironmentVariables": ["DYLD_LIBRARY_PATH": NSHomeDirectory() + APP_SUPPORT_DIR] + "EnvironmentVariables": ["DYLD_LIBRARY_PATH": NSHomeDirectory() + APP_SUPPORT_DIR + "ss-local-latest/"] ] dict.write(toFile: plistFilepath, atomically: true) let Sha1Sum = getFileSHA1Sum(plistFilepath) @@ -103,9 +103,7 @@ func InstallSSLocal() { let fileMgr = FileManager.default let homeDir = NSHomeDirectory() let appSupportDir = homeDir+APP_SUPPORT_DIR - if !fileMgr.fileExists(atPath: appSupportDir + "ss-local-\(SS_LOCAL_VERSION)/ss-local") - || !fileMgr.fileExists(atPath: appSupportDir + "libcrypto.1.0.0.dylib") - || !fileMgr.fileExists(atPath: appSupportDir + "libpcre.1.dylib") { + if !fileMgr.fileExists(atPath: appSupportDir + "ss-local-\(SS_LOCAL_VERSION)/ss-local") { let bundle = Bundle.main let installerPath = bundle.path(forResource: "install_ss_local.sh", ofType: nil) let task = Process.launchedProcess(launchPath: installerPath!, arguments: [""]) diff --git a/ShadowsocksX-NG/ServerProfile.swift b/ShadowsocksX-NG/ServerProfile.swift index 82b1916..4623c43 100644 --- a/ShadowsocksX-NG/ServerProfile.swift +++ b/ShadowsocksX-NG/ServerProfile.swift @@ -162,7 +162,9 @@ class ServerProfile: NSObject, NSCopying { conf["local_port"] = NSNumber(value: UInt16(defaults.integer(forKey: "LocalSocks5.ListenPort")) as UInt16) conf["local_address"] = defaults.string(forKey: "LocalSocks5.ListenAddress") as AnyObject? conf["timeout"] = NSNumber(value: UInt32(defaults.integer(forKey: "LocalSocks5.Timeout")) as UInt32) - conf["auth"] = NSNumber(value: ota as Bool) + if ota { + conf["auth"] = NSNumber(value: ota as Bool) + } if enabledKcptun { let localHost = defaults.string(forKey: "Kcptun.LocalHost") diff --git a/ShadowsocksX-NG/install_ss_local.sh b/ShadowsocksX-NG/install_ss_local.sh index 35ba0dd..7df8bb0 100755 --- a/ShadowsocksX-NG/install_ss_local.sh +++ b/ShadowsocksX-NG/install_ss_local.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # install_ss_local.sh # ShadowsocksX-NG @@ -8,14 +8,30 @@ cd `dirname "${BASH_SOURCE[0]}"` -mkdir -p "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-2.5.6" -cp -f ss-local "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-2.5.6/" -rm -f "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local" -ln -s "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-2.5.6/ss-local" "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local" -cp -f libcrypto.1.0.0.dylib "$HOME/Library/Application Support/ShadowsocksX-NG/" -cp -f libpcre.1.dylib "$HOME/Library/Application Support/ShadowsocksX-NG/" -rm -f "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.dylib" -ln -s "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.1.dylib" "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.dylib" +NGDir="$HOME/Library/Application Support/ShadowsocksX-NG" +TargetDir="$NGDir/ss-local-3.0.5" +LatestTargetDir="$NGDir/ss-local-latest" + +echo ngdir: ${NGDir} + +mkdir -p "$TargetDir" +cp -f ss-local "$TargetDir" +rm -f "$LatestTargetDir" +ln -s "$TargetDir" "$LatestTargetDir" +#ln -s "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-3.0.5/" "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-latest/" +#rm -f "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local" +#ln -s "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local-2.5.6/ss-local" "$HOME/Library/Application Support/ShadowsocksX-NG/ss-local" + +cp -f libev.4.dylib "$TargetDir" +cp -f libmbedcrypto.2.4.2.dylib "$TargetDir" +cp -f libpcre.1.dylib "$TargetDir" +cp -f libsodium.18.dylib "$TargetDir" +cp -f libudns.0.dylib "$TargetDir" + +#cp -f libcrypto.1.0.0.dylib "$HOME/Library/Application Support/ShadowsocksX-NG/" +#cp -f libpcre.1.dylib "$HOME/Library/Application Support/ShadowsocksX-NG/" +#rm -f "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.dylib" +#ln -s "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.1.dylib" "$HOME/Library/Application Support/ShadowsocksX-NG/libpcre.dylib" echo done diff --git a/ShadowsocksX-NG/libcrypto.1.0.0.dylib b/ShadowsocksX-NG/libcrypto.1.0.0.dylib deleted file mode 100644 index 1c5325d..0000000 Binary files a/ShadowsocksX-NG/libcrypto.1.0.0.dylib and /dev/null differ diff --git a/ShadowsocksX-NG/libev.4.dylib b/ShadowsocksX-NG/libev.4.dylib new file mode 100644 index 0000000..fba40d3 Binary files /dev/null and b/ShadowsocksX-NG/libev.4.dylib differ diff --git a/ShadowsocksX-NG/libmbedcrypto.2.4.2.dylib b/ShadowsocksX-NG/libmbedcrypto.2.4.2.dylib new file mode 100644 index 0000000..c68bff5 Binary files /dev/null and b/ShadowsocksX-NG/libmbedcrypto.2.4.2.dylib differ diff --git a/ShadowsocksX-NG/libpcre.1.dylib b/ShadowsocksX-NG/libpcre.1.dylib index eaba371..a4d7cbe 100644 Binary files a/ShadowsocksX-NG/libpcre.1.dylib and b/ShadowsocksX-NG/libpcre.1.dylib differ diff --git a/ShadowsocksX-NG/libsodium.18.dylib b/ShadowsocksX-NG/libsodium.18.dylib new file mode 100644 index 0000000..7df9349 Binary files /dev/null and b/ShadowsocksX-NG/libsodium.18.dylib differ diff --git a/ShadowsocksX-NG/libudns.0.dylib b/ShadowsocksX-NG/libudns.0.dylib new file mode 100644 index 0000000..5a88630 Binary files /dev/null and b/ShadowsocksX-NG/libudns.0.dylib differ diff --git a/ShadowsocksX-NG/ss-local b/ShadowsocksX-NG/ss-local index 080b436..7519dea 100755 Binary files a/ShadowsocksX-NG/ss-local and b/ShadowsocksX-NG/ss-local differ