Show qrcode for current server.
This commit is contained in:
@ -9,4 +9,4 @@ SPEC CHECKSUMS:
|
|||||||
|
|
||||||
PODFILE CHECKSUM: 6339f517006b559ed2b7cc50379d2e3619b9a3b6
|
PODFILE CHECKSUM: 6339f517006b559ed2b7cc50379d2e3619b9a3b6
|
||||||
|
|
||||||
COCOAPODS: 1.0.0
|
COCOAPODS: 1.0.1
|
||||||
|
2
Pods/Manifest.lock
generated
2
Pods/Manifest.lock
generated
@ -9,4 +9,4 @@ SPEC CHECKSUMS:
|
|||||||
|
|
||||||
PODFILE CHECKSUM: 6339f517006b559ed2b7cc50379d2e3619b9a3b6
|
PODFILE CHECKSUM: 6339f517006b559ed2b7cc50379d2e3619b9a3b6
|
||||||
|
|
||||||
COCOAPODS: 1.0.0
|
COCOAPODS: 1.0.1
|
||||||
|
@ -48,8 +48,8 @@ EOM
|
|||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.xib)
|
*.xib)
|
||||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.framework)
|
*.framework)
|
||||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||||
|
@ -48,8 +48,8 @@ EOM
|
|||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.xib)
|
*.xib)
|
||||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.framework)
|
*.framework)
|
||||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||||
|
@ -48,8 +48,8 @@ EOM
|
|||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.xib)
|
*.xib)
|
||||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||||
;;
|
;;
|
||||||
*.framework)
|
*.framework)
|
||||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||||
|
@ -5,4 +5,5 @@
|
|||||||
#import <CommonCrypto/CommonCrypto.h>
|
#import <CommonCrypto/CommonCrypto.h>
|
||||||
|
|
||||||
#import "LaunchAtLoginController.h"
|
#import "LaunchAtLoginController.h"
|
||||||
|
#import "SWBQRCodeWindowController.h"
|
||||||
#import "Utils.h"
|
#import "Utils.h"
|
||||||
|
@ -27,7 +27,13 @@
|
|||||||
9B3FFF231D088E8D0019A709 /* abp.js in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF221D088E8D0019A709 /* abp.js */; };
|
9B3FFF231D088E8D0019A709 /* abp.js in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF221D088E8D0019A709 /* abp.js */; };
|
||||||
9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF261D0898EB0019A709 /* gfwlist.txt */; };
|
9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF261D0898EB0019A709 /* gfwlist.txt */; };
|
||||||
9B3FFF291D08A1DF0019A709 /* user-rule.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF281D08A1DF0019A709 /* user-rule.txt */; };
|
9B3FFF291D08A1DF0019A709 /* user-rule.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF281D08A1DF0019A709 /* user-rule.txt */; };
|
||||||
9BEEF0641D04C3E400FC52B3 /* com.qiuyuzhou.shadowsocksX-NE.local.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0631D04C3E400FC52B3 /* com.qiuyuzhou.shadowsocksX-NE.local.plist */; };
|
9B3FFF2D1D08A71E0019A709 /* Sysconf.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF2C1D08A71E0019A709 /* Sysconf.m */; };
|
||||||
|
9B3FFF321D08CEE40019A709 /* SWBQRCodeWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3FFF311D08CEE40019A709 /* SWBQRCodeWindowController.m */; };
|
||||||
|
9B3FFF341D08CEF70019A709 /* SWBQRCodeWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF331D08CEF70019A709 /* SWBQRCodeWindowController.xib */; };
|
||||||
|
9B3FFF381D08CF110019A709 /* jquery.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF351D08CF110019A709 /* jquery.min.js */; };
|
||||||
|
9B3FFF391D08CF110019A709 /* qrcode.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF361D08CF110019A709 /* qrcode.min.js */; };
|
||||||
|
9B3FFF3A1D08CF110019A709 /* qrcode.htm in Resources */ = {isa = PBXBuildFile; fileRef = 9B3FFF371D08CF110019A709 /* qrcode.htm */; };
|
||||||
|
9B3FFF3E1D08D9910019A709 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B3FFF3D1D08D9910019A709 /* SystemConfiguration.framework */; };
|
||||||
9BEEF0691D04D4D500FC52B3 /* install_ss_local.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */; };
|
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 */; };
|
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 */; };
|
9BEEF06B1D04D4D500FC52B3 /* stop_ss_local.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */; };
|
||||||
@ -94,7 +100,15 @@
|
|||||||
9B3FFF221D088E8D0019A709 /* abp.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = abp.js; sourceTree = "<group>"; };
|
9B3FFF221D088E8D0019A709 /* abp.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = abp.js; sourceTree = "<group>"; };
|
||||||
9B3FFF261D0898EB0019A709 /* gfwlist.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gfwlist.txt; sourceTree = "<group>"; };
|
9B3FFF261D0898EB0019A709 /* gfwlist.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gfwlist.txt; sourceTree = "<group>"; };
|
||||||
9B3FFF281D08A1DF0019A709 /* user-rule.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "user-rule.txt"; sourceTree = "<group>"; };
|
9B3FFF281D08A1DF0019A709 /* user-rule.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "user-rule.txt"; sourceTree = "<group>"; };
|
||||||
9BEEF0631D04C3E400FC52B3 /* com.qiuyuzhou.shadowsocksX-NE.local.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "com.qiuyuzhou.shadowsocksX-NE.local.plist"; sourceTree = "<group>"; };
|
9B3FFF2C1D08A71E0019A709 /* Sysconf.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Sysconf.m; sourceTree = "<group>"; };
|
||||||
|
9B3FFF301D08CEE40019A709 /* SWBQRCodeWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWBQRCodeWindowController.h; sourceTree = "<group>"; };
|
||||||
|
9B3FFF311D08CEE40019A709 /* SWBQRCodeWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWBQRCodeWindowController.m; sourceTree = "<group>"; };
|
||||||
|
9B3FFF331D08CEF70019A709 /* SWBQRCodeWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SWBQRCodeWindowController.xib; sourceTree = "<group>"; };
|
||||||
|
9B3FFF351D08CF110019A709 /* jquery.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jquery.min.js; sourceTree = "<group>"; };
|
||||||
|
9B3FFF361D08CF110019A709 /* qrcode.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = qrcode.min.js; sourceTree = "<group>"; };
|
||||||
|
9B3FFF371D08CF110019A709 /* qrcode.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = qrcode.htm; sourceTree = "<group>"; };
|
||||||
|
9B3FFF3B1D08D93B0019A709 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
|
||||||
|
9B3FFF3D1D08D9910019A709 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||||
9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_ss_local.sh; sourceTree = "<group>"; };
|
9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = install_ss_local.sh; sourceTree = "<group>"; };
|
||||||
9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = start_ss_local.sh; sourceTree = "<group>"; };
|
9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = start_ss_local.sh; sourceTree = "<group>"; };
|
||||||
9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = stop_ss_local.sh; sourceTree = "<group>"; };
|
9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = stop_ss_local.sh; sourceTree = "<group>"; };
|
||||||
@ -115,6 +129,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
9B3FFF3E1D08D9910019A709 /* SystemConfiguration.framework in Frameworks */,
|
||||||
258E511BA910B0521B24DAB8 /* Pods_ShadowsocksX_NG.framework in Frameworks */,
|
258E511BA910B0521B24DAB8 /* Pods_ShadowsocksX_NG.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -154,6 +169,9 @@
|
|||||||
9B07EFB01D048E900052D9DF /* Support Files */ = {
|
9B07EFB01D048E900052D9DF /* Support Files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9B3FFF351D08CF110019A709 /* jquery.min.js */,
|
||||||
|
9B3FFF361D08CF110019A709 /* qrcode.min.js */,
|
||||||
|
9B3FFF371D08CF110019A709 /* qrcode.htm */,
|
||||||
9B3FFF281D08A1DF0019A709 /* user-rule.txt */,
|
9B3FFF281D08A1DF0019A709 /* user-rule.txt */,
|
||||||
9B3FFF261D0898EB0019A709 /* gfwlist.txt */,
|
9B3FFF261D0898EB0019A709 /* gfwlist.txt */,
|
||||||
9B3FFF221D088E8D0019A709 /* abp.js */,
|
9B3FFF221D088E8D0019A709 /* abp.js */,
|
||||||
@ -162,7 +180,6 @@
|
|||||||
9B07EFA91D048E880052D9DF /* menu_icon.png */,
|
9B07EFA91D048E880052D9DF /* menu_icon.png */,
|
||||||
9B07EFAA1D048E880052D9DF /* menu_icon_disabled.png */,
|
9B07EFAA1D048E880052D9DF /* menu_icon_disabled.png */,
|
||||||
9B07EFAB1D048E880052D9DF /* menu_icon_disabled@2x.png */,
|
9B07EFAB1D048E880052D9DF /* menu_icon_disabled@2x.png */,
|
||||||
9BEEF0631D04C3E400FC52B3 /* com.qiuyuzhou.shadowsocksX-NE.local.plist */,
|
|
||||||
9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */,
|
9BEEF0651D04CB8500FC52B3 /* install_ss_local.sh */,
|
||||||
9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */,
|
9BEEF0661D04CE8D00FC52B3 /* start_ss_local.sh */,
|
||||||
9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */,
|
9BEEF0671D04CE9A00FC52B3 /* stop_ss_local.sh */,
|
||||||
@ -218,10 +235,11 @@
|
|||||||
9BEEF06F1D04DDB100FC52B3 /* ServerProfileManager.swift */,
|
9BEEF06F1D04DDB100FC52B3 /* ServerProfileManager.swift */,
|
||||||
9BEEF0771D04FE8A00FC52B3 /* LaunchAgentUtils.swift */,
|
9BEEF0771D04FE8A00FC52B3 /* LaunchAgentUtils.swift */,
|
||||||
9B3FFF0C1D05FEB30019A709 /* Utils.swift */,
|
9B3FFF0C1D05FEB30019A709 /* Utils.swift */,
|
||||||
|
9B3FFF201D08826E0019A709 /* PACUtils.swift */,
|
||||||
9B3FFF131D0705810019A709 /* Notifications.swift */,
|
9B3FFF131D0705810019A709 /* Notifications.swift */,
|
||||||
9B3FFF1D1D0732660019A709 /* Utils.m */,
|
9B3FFF1D1D0732660019A709 /* Utils.m */,
|
||||||
9B3FFF1F1D0734060019A709 /* Utils.h */,
|
9B3FFF1F1D0734060019A709 /* Utils.h */,
|
||||||
9B3FFF201D08826E0019A709 /* PACUtils.swift */,
|
9B3FFF2C1D08A71E0019A709 /* Sysconf.m */,
|
||||||
);
|
);
|
||||||
path = "ShadowsocksX-NG";
|
path = "ShadowsocksX-NG";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -238,6 +256,9 @@
|
|||||||
9B3FFF0B1D05D8B80019A709 /* UI */ = {
|
9B3FFF0B1D05D8B80019A709 /* UI */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9B3FFF331D08CEF70019A709 /* SWBQRCodeWindowController.xib */,
|
||||||
|
9B3FFF301D08CEE40019A709 /* SWBQRCodeWindowController.h */,
|
||||||
|
9B3FFF311D08CEE40019A709 /* SWBQRCodeWindowController.m */,
|
||||||
9BEEF0731D04EF3E00FC52B3 /* PreferencesWindowController.swift */,
|
9BEEF0731D04EF3E00FC52B3 /* PreferencesWindowController.swift */,
|
||||||
9BEEF0741D04EF3E00FC52B3 /* PreferencesWindowController.xib */,
|
9BEEF0741D04EF3E00FC52B3 /* PreferencesWindowController.xib */,
|
||||||
9BEEF0791D05631500FC52B3 /* AdvPreferencesWindowController.swift */,
|
9BEEF0791D05631500FC52B3 /* AdvPreferencesWindowController.swift */,
|
||||||
@ -249,6 +270,8 @@
|
|||||||
D3CE66CC039F651F28057DDB /* Frameworks */ = {
|
D3CE66CC039F651F28057DDB /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9B3FFF3D1D08D9910019A709 /* SystemConfiguration.framework */,
|
||||||
|
9B3FFF3B1D08D93B0019A709 /* WebKit.framework */,
|
||||||
283ED1A8E9B711AC65670031 /* Pods_ShadowsocksX_NG.framework */,
|
283ED1A8E9B711AC65670031 /* Pods_ShadowsocksX_NG.framework */,
|
||||||
388120F062D7EB7DD0D8DDCA /* Pods_ShadowsocksX_NGTests.framework */,
|
388120F062D7EB7DD0D8DDCA /* Pods_ShadowsocksX_NGTests.framework */,
|
||||||
19083CFCED87354F006967FF /* Pods_ShadowsocksX_NGUITests.framework */,
|
19083CFCED87354F006967FF /* Pods_ShadowsocksX_NGUITests.framework */,
|
||||||
@ -263,12 +286,12 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 9B0B00081D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NG" */;
|
buildConfigurationList = 9B0B00081D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NG" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
A3C8167BB5EB01FBDE2A08BC /* 📦 Check Pods Manifest.lock */,
|
A3C8167BB5EB01FBDE2A08BC /* [CP] Check Pods Manifest.lock */,
|
||||||
9B0BFFE11D0460A70040E62B /* Sources */,
|
9B0BFFE11D0460A70040E62B /* Sources */,
|
||||||
9B0BFFE21D0460A70040E62B /* Frameworks */,
|
9B0BFFE21D0460A70040E62B /* Frameworks */,
|
||||||
9B0BFFE31D0460A70040E62B /* Resources */,
|
9B0BFFE31D0460A70040E62B /* Resources */,
|
||||||
5E160625E3EC80E27DA7EF05 /* 📦 Embed Pods Frameworks */,
|
5E160625E3EC80E27DA7EF05 /* [CP] Embed Pods Frameworks */,
|
||||||
3E819BD46B855EDB116A3C70 /* 📦 Copy Pods Resources */,
|
3E819BD46B855EDB116A3C70 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -283,12 +306,12 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 9B0B000B1D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NGTests" */;
|
buildConfigurationList = 9B0B000B1D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NGTests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
22E2FC257F00091B923B1A15 /* 📦 Check Pods Manifest.lock */,
|
22E2FC257F00091B923B1A15 /* [CP] Check Pods Manifest.lock */,
|
||||||
9B0BFFF01D0460A70040E62B /* Sources */,
|
9B0BFFF01D0460A70040E62B /* Sources */,
|
||||||
9B0BFFF11D0460A70040E62B /* Frameworks */,
|
9B0BFFF11D0460A70040E62B /* Frameworks */,
|
||||||
9B0BFFF21D0460A70040E62B /* Resources */,
|
9B0BFFF21D0460A70040E62B /* Resources */,
|
||||||
8A094D4241AB0C72A177FDC3 /* 📦 Embed Pods Frameworks */,
|
8A094D4241AB0C72A177FDC3 /* [CP] Embed Pods Frameworks */,
|
||||||
D8C2D6AF002916F4095E15E3 /* 📦 Copy Pods Resources */,
|
D8C2D6AF002916F4095E15E3 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -304,11 +327,11 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 9B0B000E1D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NGUITests" */;
|
buildConfigurationList = 9B0B000E1D0460A70040E62B /* Build configuration list for PBXNativeTarget "ShadowsocksX-NGUITests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
F38183C494F971E2DA36B012 /* 📦 Check Pods Manifest.lock */,
|
F38183C494F971E2DA36B012 /* [CP] Check Pods Manifest.lock */,
|
||||||
9B0BFFFB1D0460A70040E62B /* Sources */,
|
9B0BFFFB1D0460A70040E62B /* Sources */,
|
||||||
9B0BFFFC1D0460A70040E62B /* Frameworks */,
|
9B0BFFFC1D0460A70040E62B /* Frameworks */,
|
||||||
9B0BFFFD1D0460A70040E62B /* Resources */,
|
9B0BFFFD1D0460A70040E62B /* Resources */,
|
||||||
3C502B10B4D52DA1C63A2BE5 /* 📦 Copy Pods Resources */,
|
3C502B10B4D52DA1C63A2BE5 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -372,15 +395,18 @@
|
|||||||
9BEEF0761D04EF3E00FC52B3 /* PreferencesWindowController.xib in Resources */,
|
9BEEF0761D04EF3E00FC52B3 /* PreferencesWindowController.xib in Resources */,
|
||||||
9B3FFF291D08A1DF0019A709 /* user-rule.txt in Resources */,
|
9B3FFF291D08A1DF0019A709 /* user-rule.txt in Resources */,
|
||||||
9BEEF06A1D04D4D500FC52B3 /* start_ss_local.sh in Resources */,
|
9BEEF06A1D04D4D500FC52B3 /* start_ss_local.sh in Resources */,
|
||||||
|
9B3FFF391D08CF110019A709 /* qrcode.min.js in Resources */,
|
||||||
|
9B3FFF3A1D08CF110019A709 /* qrcode.htm in Resources */,
|
||||||
9BEEF06B1D04D4D500FC52B3 /* stop_ss_local.sh in Resources */,
|
9BEEF06B1D04D4D500FC52B3 /* stop_ss_local.sh in Resources */,
|
||||||
|
9B3FFF341D08CEF70019A709 /* SWBQRCodeWindowController.xib in Resources */,
|
||||||
9BEEF06C1D04D4D500FC52B3 /* reload_conf_ss_local.sh in Resources */,
|
9BEEF06C1D04D4D500FC52B3 /* reload_conf_ss_local.sh in Resources */,
|
||||||
9B3FFF231D088E8D0019A709 /* abp.js in Resources */,
|
9B3FFF231D088E8D0019A709 /* abp.js in Resources */,
|
||||||
9B07EFAD1D048E880052D9DF /* menu_icon.png in Resources */,
|
9B07EFAD1D048E880052D9DF /* menu_icon.png in Resources */,
|
||||||
9B0BFFEB1D0460A70040E62B /* Assets.xcassets in Resources */,
|
9B0BFFEB1D0460A70040E62B /* Assets.xcassets in Resources */,
|
||||||
9BEEF07C1D05631500FC52B3 /* AdvPreferencesWindowController.xib in Resources */,
|
9BEEF07C1D05631500FC52B3 /* AdvPreferencesWindowController.xib in Resources */,
|
||||||
|
9B3FFF381D08CF110019A709 /* jquery.min.js in Resources */,
|
||||||
9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */,
|
9B3FFF271D0898EB0019A709 /* gfwlist.txt in Resources */,
|
||||||
9B0BFFEE1D0460A70040E62B /* MainMenu.xib in Resources */,
|
9B0BFFEE1D0460A70040E62B /* MainMenu.xib in Resources */,
|
||||||
9BEEF0641D04C3E400FC52B3 /* com.qiuyuzhou.shadowsocksX-NE.local.plist in Resources */,
|
|
||||||
9B07EFAC1D048E880052D9DF /* menu_icon@2x.png in Resources */,
|
9B07EFAC1D048E880052D9DF /* menu_icon@2x.png in Resources */,
|
||||||
9B07EFA71D048BBB0052D9DF /* ss-local in Resources */,
|
9B07EFA71D048BBB0052D9DF /* ss-local in Resources */,
|
||||||
9B07EFAF1D048E880052D9DF /* menu_icon_disabled@2x.png in Resources */,
|
9B07EFAF1D048E880052D9DF /* menu_icon_disabled@2x.png in Resources */,
|
||||||
@ -405,14 +431,14 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
22E2FC257F00091B923B1A15 /* 📦 Check Pods Manifest.lock */ = {
|
22E2FC257F00091B923B1A15 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Check Pods Manifest.lock";
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -420,14 +446,14 @@
|
|||||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
3C502B10B4D52DA1C63A2BE5 /* 📦 Copy Pods Resources */ = {
|
3C502B10B4D52DA1C63A2BE5 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -435,14 +461,14 @@
|
|||||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGUITests/Pods-ShadowsocksX-NGUITests-resources.sh\"\n";
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGUITests/Pods-ShadowsocksX-NGUITests-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
3E819BD46B855EDB116A3C70 /* 📦 Copy Pods Resources */ = {
|
3E819BD46B855EDB116A3C70 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -450,14 +476,14 @@
|
|||||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-resources.sh\"\n";
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
5E160625E3EC80E27DA7EF05 /* 📦 Embed Pods Frameworks */ = {
|
5E160625E3EC80E27DA7EF05 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -465,14 +491,14 @@
|
|||||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-frameworks.sh\"\n";
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
8A094D4241AB0C72A177FDC3 /* 📦 Embed Pods Frameworks */ = {
|
8A094D4241AB0C72A177FDC3 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -480,14 +506,14 @@
|
|||||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-frameworks.sh\"\n";
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
A3C8167BB5EB01FBDE2A08BC /* 📦 Check Pods Manifest.lock */ = {
|
A3C8167BB5EB01FBDE2A08BC /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Check Pods Manifest.lock";
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -495,14 +521,14 @@
|
|||||||
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
D8C2D6AF002916F4095E15E3 /* 📦 Copy Pods Resources */ = {
|
D8C2D6AF002916F4095E15E3 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Copy Pods Resources";
|
name = "[CP] Copy Pods Resources";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -510,14 +536,14 @@
|
|||||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-resources.sh\"\n";
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
F38183C494F971E2DA36B012 /* 📦 Check Pods Manifest.lock */ = {
|
F38183C494F971E2DA36B012 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
);
|
);
|
||||||
name = "📦 Check Pods Manifest.lock";
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -534,9 +560,11 @@
|
|||||||
files = (
|
files = (
|
||||||
9B3FFF171D072FDE0019A709 /* LaunchAtLoginController.m in Sources */,
|
9B3FFF171D072FDE0019A709 /* LaunchAtLoginController.m in Sources */,
|
||||||
9B3FFF1E1D0732660019A709 /* Utils.m in Sources */,
|
9B3FFF1E1D0732660019A709 /* Utils.m in Sources */,
|
||||||
|
9B3FFF321D08CEE40019A709 /* SWBQRCodeWindowController.m in Sources */,
|
||||||
9B3FFF211D08826E0019A709 /* PACUtils.swift in Sources */,
|
9B3FFF211D08826E0019A709 /* PACUtils.swift in Sources */,
|
||||||
9B3FFF141D0705810019A709 /* Notifications.swift in Sources */,
|
9B3FFF141D0705810019A709 /* Notifications.swift in Sources */,
|
||||||
9BEEF0701D04DDB100FC52B3 /* ServerProfileManager.swift in Sources */,
|
9BEEF0701D04DDB100FC52B3 /* ServerProfileManager.swift in Sources */,
|
||||||
|
9B3FFF2D1D08A71E0019A709 /* Sysconf.m in Sources */,
|
||||||
9BEEF07B1D05631500FC52B3 /* AdvPreferencesWindowController.swift in Sources */,
|
9BEEF07B1D05631500FC52B3 /* AdvPreferencesWindowController.swift in Sources */,
|
||||||
9BEEF06E1D04DCE400FC52B3 /* ServerProfile.swift in Sources */,
|
9BEEF06E1D04DCE400FC52B3 /* ServerProfile.swift in Sources */,
|
||||||
9B3FFF0D1D05FEB30019A709 /* Utils.swift in Sources */,
|
9B3FFF0D1D05FEB30019A709 /* Utils.swift in Sources */,
|
||||||
|
@ -12,6 +12,7 @@ import Cocoa
|
|||||||
@NSApplicationMain
|
@NSApplicationMain
|
||||||
class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {
|
class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {
|
||||||
|
|
||||||
|
var qrcodeWinCtrl: SWBQRCodeWindowController!
|
||||||
var preferencesWinCtrl: PreferencesWindowController!
|
var preferencesWinCtrl: PreferencesWindowController!
|
||||||
var advPreferencesWinCtrl: AdvPreferencesWindowController!
|
var advPreferencesWinCtrl: AdvPreferencesWindowController!
|
||||||
|
|
||||||
@ -134,7 +135,33 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
|
|||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func showQRCodeForCurrentServer(sender: NSMenuItem) {
|
@IBAction func showQRCodeForCurrentServer(sender: NSMenuItem) {
|
||||||
|
var errMsg: String?
|
||||||
|
let mgr = ServerProfileManager()
|
||||||
|
if let profile = mgr.getActiveProfile() {
|
||||||
|
if profile.isValid() {
|
||||||
|
// Show window
|
||||||
|
if qrcodeWinCtrl != nil{
|
||||||
|
qrcodeWinCtrl.close()
|
||||||
|
}
|
||||||
|
qrcodeWinCtrl = SWBQRCodeWindowController(windowNibName: "SWBQRCodeWindowController")
|
||||||
|
qrcodeWinCtrl.qrCode = profile.URL()!.absoluteString
|
||||||
|
qrcodeWinCtrl.showWindow(self)
|
||||||
|
NSApp.activateIgnoringOtherApps(true)
|
||||||
|
qrcodeWinCtrl.window?.makeKeyAndOrderFront(nil)
|
||||||
|
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
errMsg = "Current server profile is not valid.".localized
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errMsg = "No current server profile.".localized
|
||||||
|
}
|
||||||
|
let userNote = NSUserNotification()
|
||||||
|
userNote.title = errMsg
|
||||||
|
userNote.soundName = NSUserNotificationDefaultSoundName
|
||||||
|
|
||||||
|
NSUserNotificationCenter.defaultUserNotificationCenter()
|
||||||
|
.deliverNotification(userNote);
|
||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func scanQRCodeFromScreen(sender: NSMenuItem) {
|
@IBAction func scanQRCodeFromScreen(sender: NSMenuItem) {
|
||||||
|
@ -39,9 +39,15 @@
|
|||||||
<menuItem isSeparatorItem="YES" id="LXP-yK-yQu"/>
|
<menuItem isSeparatorItem="YES" id="LXP-yK-yQu"/>
|
||||||
<menuItem title="Auto Mode By PAC" id="hOa-5N-3ik">
|
<menuItem title="Auto Mode By PAC" id="hOa-5N-3ik">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="selectPACMode:" target="Voe-Tx-rLC" id="OwN-Md-pIC"/>
|
||||||
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Global Mode" id="3Sa-e9-VXX">
|
<menuItem title="Global Mode" id="3Sa-e9-VXX">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="selectGlobalMode:" target="Voe-Tx-rLC" id="l4X-GP-hlH"/>
|
||||||
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="kkf-gh-O8t"/>
|
<menuItem isSeparatorItem="YES" id="kkf-gh-O8t"/>
|
||||||
<menuItem title="Servers" id="u5M-hQ-VSc">
|
<menuItem title="Servers" id="u5M-hQ-VSc">
|
||||||
|
17
ShadowsocksX-NG/SWBQRCodeWindowController.h
Normal file
17
ShadowsocksX-NG/SWBQRCodeWindowController.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// QRCodeWindowController.h
|
||||||
|
// shadowsocks
|
||||||
|
//
|
||||||
|
// Created by clowwindy on 10/12/14.
|
||||||
|
// Copyright (c) 2014 clowwindy. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#import <WebKit/WebKit.h>
|
||||||
|
|
||||||
|
@interface SWBQRCodeWindowController : NSWindowController <WebFrameLoadDelegate>
|
||||||
|
|
||||||
|
@property (nonatomic, strong) IBOutlet WebView *webView;
|
||||||
|
@property (nonatomic, copy) NSString *qrCode;
|
||||||
|
|
||||||
|
@end
|
35
ShadowsocksX-NG/SWBQRCodeWindowController.m
Normal file
35
ShadowsocksX-NG/SWBQRCodeWindowController.m
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
//
|
||||||
|
// QRCodeWindowController.m
|
||||||
|
// shadowsocks
|
||||||
|
//
|
||||||
|
// Created by clowwindy on 10/12/14.
|
||||||
|
// Copyright (c) 2014 clowwindy. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "SWBQRCodeWindowController.h"
|
||||||
|
|
||||||
|
@interface SWBQRCodeWindowController ()
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation SWBQRCodeWindowController
|
||||||
|
|
||||||
|
- (void)windowDidLoad {
|
||||||
|
[super windowDidLoad];
|
||||||
|
|
||||||
|
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||||
|
[self.webView.mainFrame loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"qrcode" withExtension:@"htm"]]];
|
||||||
|
self.webView.frameLoadDelegate = self;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
|
||||||
|
if (self.qrCode) {
|
||||||
|
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"genCode('%@')", _qrCode]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)dealloc {
|
||||||
|
self.webView.frameLoadDelegate = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
40
ShadowsocksX-NG/SWBQRCodeWindowController.xib
Normal file
40
ShadowsocksX-NG/SWBQRCodeWindowController.xib
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
|
<dependencies>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
|
||||||
|
<plugIn identifier="com.apple.WebKitIBPlugin" version="10117"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="SWBQRCodeWindowController">
|
||||||
|
<connections>
|
||||||
|
<outlet property="webView" destination="ojI-LR-jEw" id="bpE-vv-uIe"/>
|
||||||
|
<outlet property="window" destination="QvC-M9-y7g" id="HLy-eJ-5RD"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<window title="QR Code" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" animationBehavior="default" id="QvC-M9-y7g">
|
||||||
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||||
|
<rect key="contentRect" x="566" y="456" width="250" height="250"/>
|
||||||
|
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||||
|
<view key="contentView" id="EiT-Mj-1SZ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="250" height="250"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<webView translatesAutoresizingMaskIntoConstraints="NO" id="ojI-LR-jEw">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="250" height="250"/>
|
||||||
|
<webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12">
|
||||||
|
<nil key="identifier"/>
|
||||||
|
</webPreferences>
|
||||||
|
</webView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="ojI-LR-jEw" secondAttribute="trailing" id="ImJ-r1-FF9"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="ojI-LR-jEw" secondAttribute="bottom" id="LQv-2G-kyf"/>
|
||||||
|
<constraint firstItem="ojI-LR-jEw" firstAttribute="leading" secondItem="EiT-Mj-1SZ" secondAttribute="leading" id="kok-J1-X08"/>
|
||||||
|
<constraint firstItem="ojI-LR-jEw" firstAttribute="top" secondItem="EiT-Mj-1SZ" secondAttribute="top" id="voV-aN-Ggt"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</window>
|
||||||
|
</objects>
|
||||||
|
</document>
|
@ -93,6 +93,7 @@ class ServerProfile: NSObject {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateDomainName(value: String) -> Bool {
|
func validateDomainName(value: String) -> Bool {
|
||||||
let validHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"
|
let validHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"
|
||||||
|
|
||||||
@ -113,4 +114,15 @@ class ServerProfile: NSObject {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func URL() -> NSURL? {
|
||||||
|
let parts = "\(method):\(password)@\(serverHost):\(serverPort)"
|
||||||
|
let base64String = parts.dataUsingEncoding(NSUTF8StringEncoding)?
|
||||||
|
.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())
|
||||||
|
if var s = base64String {
|
||||||
|
s = s.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "="))
|
||||||
|
return NSURL(string: "ss://\(s)")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
15
ShadowsocksX-NG/Sysconf.m
Normal file
15
ShadowsocksX-NG/Sysconf.m
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
//
|
||||||
|
// Sysconf.m
|
||||||
|
// ShadowsocksX-NG
|
||||||
|
//
|
||||||
|
// Created by 邱宇舟 on 16/6/9.
|
||||||
|
// Copyright © 2016年 qiuyuzhou. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <SystemConfiguration/SystemConfiguration.h>
|
||||||
|
|
||||||
|
|
||||||
|
void ConfProxy() {
|
||||||
|
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>Label</key>
|
|
||||||
<string>com.qiuyuzhou.shadowsocksX-NE.local</string>
|
|
||||||
<key>WorkingDirectory</key>
|
|
||||||
<string>/Users/qiuyuzhou/</string>
|
|
||||||
<key>RunAtLoad</key>
|
|
||||||
<true/>
|
|
||||||
<key>ProgramArguments</key>
|
|
||||||
<array>
|
|
||||||
<string>/Users/qiuyuzhou/Library/Application Support/ShadowsocksX-NE/ss-local</string>
|
|
||||||
<string>-c</string>
|
|
||||||
<string>/Users/qiuyuzhou/Library/Application Support/ShadowsocksX-NE/ss-local-config.json</string>
|
|
||||||
</array>
|
|
||||||
<key>KeepAlive</key>
|
|
||||||
<true/>
|
|
||||||
<key>StandardOutPath</key>
|
|
||||||
<string>/Users/qiuyuzhou/Library/Logs/ShadowsocksX-NE/ss-local.log</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
2
ShadowsocksX-NG/jquery.min.js
vendored
Normal file
2
ShadowsocksX-NG/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
28
ShadowsocksX-NG/qrcode.htm
Normal file
28
ShadowsocksX-NG/qrcode.htm
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<script src="jquery.min.js">
|
||||||
|
</script>
|
||||||
|
<script src="qrcode.min.js">
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#qrcode {
|
||||||
|
width:230px;
|
||||||
|
height:230px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="qrcode"></div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function genCode(code) {
|
||||||
|
new QRCode("qrcode", {
|
||||||
|
text: code,
|
||||||
|
width: 230,
|
||||||
|
height: 230,
|
||||||
|
colorDark : "#000000",
|
||||||
|
colorLight : "#ffffff",
|
||||||
|
correctLevel : QRCode.CorrectLevel.H
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
1
ShadowsocksX-NG/qrcode.min.js
vendored
Normal file
1
ShadowsocksX-NG/qrcode.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user