mirror of
https://github.com/bolucat/Archive.git
synced 2025-12-24 13:28:37 +08:00
Update On Sat Jul 6 20:29:38 CEST 2024
This commit is contained in:
@@ -35,8 +35,6 @@ do
|
||||
echo "appdmg V2rayU-64.dmg"
|
||||
rm -f V2rayU-64.dmg
|
||||
appdmg appdmg.json "V2rayU-64.dmg"
|
||||
#rm -fr release/V2rayU.app
|
||||
./sign_update "V2rayU-64.dmg"
|
||||
|
||||
break
|
||||
;;
|
||||
@@ -48,8 +46,6 @@ do
|
||||
echo "appdmg V2rayU-arm64.dmg"
|
||||
rm -f V2rayU-arm64.dmg
|
||||
appdmg appdmg.json "V2rayU-arm64.dmg"
|
||||
#rm -fr release/V2rayU.app
|
||||
./sign_update "V2rayU-64.dmg"
|
||||
|
||||
break
|
||||
;;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?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>compileBitcode</key>
|
||||
<false/>
|
||||
<key>method</key>
|
||||
<string>development</string>
|
||||
</dict>
|
||||
</plist>
|
||||
<?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>method</key>
|
||||
<dict/>
|
||||
<key>development</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# publish.sh
|
||||
# V2rayU
|
||||
#
|
||||
# Created by yanue on 2019/7/18.
|
||||
# Copyright © 2019 yanue. All rights reserved.
|
||||
|
||||
read -p "请输入版本描述: " release_note
|
||||
#pushRelease ${release_note}
|
||||
generateAppcast ${release_note}
|
||||
|
||||
echo "Done"
|
||||
@@ -13,26 +13,60 @@ APP_TITLE="${APP_NAME} - V${APP_Version}"
|
||||
AppCastDir=$HOME/swift/appcast
|
||||
|
||||
function updatePlistVersion() {
|
||||
echo "Updating plist version..."
|
||||
buildString=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${BASE_DIR}/V2rayU/${INFOPLIST_FILE}")
|
||||
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildString" "${BASE_DIR}/V2rayU/${INFOPLIST_FILE}"
|
||||
if [ $? -eq 0 ]; then
|
||||
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildString" "${BASE_DIR}/V2rayU/${INFOPLIST_FILE}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to set CFBundleVersion"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Error: Failed to read CFBundleShortVersionString"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function build() {
|
||||
echo "Building V2rayU."${APP_Version}
|
||||
echo "Building V2rayU version ${APP_Version}"
|
||||
|
||||
echo "Cleaning up old archive & app..."
|
||||
rm -rf ${V2rayU_ARCHIVE} ${V2rayU_RELEASE}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to clean up old archive & app"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Building archive... please wait a minute"
|
||||
xcodebuild -workspace ${BASE_DIR}/V2rayU.xcworkspace -config Release -scheme V2rayU -archivePath ${V2rayU_ARCHIVE} archive
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to build archive"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Exporting archive..."
|
||||
xcodebuild -archivePath ${V2rayU_ARCHIVE} -exportArchive -exportPath ${V2rayU_RELEASE} -exportOptionsPlist ./build.plist
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to export archive"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Cleaning up archive..."
|
||||
rm -rf ${V2rayU_ARCHIVE}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to clean up archive"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Setting permissions for resources..."
|
||||
chmod -R 755 "${V2rayU_RELEASE}/${APP_NAME}.app/Contents/Resources/v2ray-core"
|
||||
chmod -R 755 "${V2rayU_RELEASE}/${APP_NAME}.app/Contents/Resources/unzip.sh"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to set permissions for resources"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Build and export completed successfully."
|
||||
}
|
||||
|
||||
function createDmg() {
|
||||
@@ -209,9 +243,6 @@ function createDmgByAppdmg() {
|
||||
echo ${BUILD_DIR}/appdmg.json
|
||||
appdmg appdmg.json ${DMG_FINAL}
|
||||
|
||||
# appcast sign update
|
||||
${AppCastDir}/bin/sign_update ${DMG_FINAL}
|
||||
|
||||
# umount "/Volumes/${APP_NAME}"
|
||||
}
|
||||
|
||||
@@ -256,7 +287,7 @@ function makeDmg() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#makeDmg
|
||||
createDmgByAppdmg
|
||||
|
||||
echo 'done'
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# sign.sh
|
||||
# V2rayU
|
||||
#
|
||||
# Created by yanue on 2023/8/1.
|
||||
# Copyright © 2023 yanue. All rights reserved.
|
||||
set -ex
|
||||
|
||||
TOKEN=$1
|
||||
release_id=$2
|
||||
|
||||
echo "token $TOKEN, release ${RELEASE_ID}"
|
||||
|
||||
curl -X "PATCH" "https://api.appcenter.ms/v0.1/apps/yanue/V2rayU/releases/${release_id}" \
|
||||
-H "X-API-Token: $TOKEN" \
|
||||
-H 'Content-Type: application/json; charset=utf-8' \
|
||||
-d '{
|
||||
"release_notes": "test",
|
||||
"metadata": {
|
||||
"ed_signature": "PW8pDnr5VZkmC93gZjUDlHI8gkJSspPoDU3DdhsMkps"
|
||||
}
|
||||
}'
|
||||
Binary file not shown.
@@ -10,8 +10,7 @@ target 'V2rayU' do
|
||||
# Pods for V2rayU
|
||||
pod 'FirebaseAnalytics', '~> 10.24.0'
|
||||
pod 'FirebaseCrashlytics'
|
||||
pod 'Alamofire'
|
||||
pod 'SwiftyJSON'
|
||||
pod 'SwiftyJSON'/
|
||||
# master branch
|
||||
pod 'Preferences', :git => 'https://github.com/sindresorhus/Preferences.git'
|
||||
pod 'QRCoder'
|
||||
@@ -21,11 +20,11 @@ target 'V2rayU' do
|
||||
|
||||
end
|
||||
|
||||
# fix libarclite_macosx.a need min deploy target 10.14
|
||||
# fix libarclite_macosx.a need min deploy target 11.0
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.14'
|
||||
config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '11.0'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
PODS:
|
||||
- Alamofire (4.8.2)
|
||||
- FirebaseAnalytics (10.24.0):
|
||||
- FirebaseAnalytics/AdIdSupport (= 10.24.0)
|
||||
- FirebaseCore (~> 10.0)
|
||||
@@ -112,26 +111,22 @@ PODS:
|
||||
- PromisesSwift (2.4.0):
|
||||
- PromisesObjC (= 2.4.0)
|
||||
- QRCoder (1.1.0)
|
||||
- Sparkle (2.6.2)
|
||||
- Swifter (1.4.7)
|
||||
- SwiftyJSON (5.0.0)
|
||||
- Yams (5.0.6)
|
||||
|
||||
DEPENDENCIES:
|
||||
- Alamofire
|
||||
- FirebaseAnalytics (~> 10.24.0)
|
||||
- FirebaseCrashlytics
|
||||
- MASShortcut
|
||||
- Preferences (from `https://github.com/sindresorhus/Preferences.git`)
|
||||
- QRCoder
|
||||
- Sparkle (~> 2.0)
|
||||
- Swifter
|
||||
- SwiftyJSON
|
||||
- Yams
|
||||
|
||||
SPEC REPOS:
|
||||
https://github.com/CocoaPods/Specs.git:
|
||||
- Alamofire
|
||||
- FirebaseAnalytics
|
||||
- FirebaseCore
|
||||
- FirebaseCoreExtension
|
||||
@@ -148,7 +143,6 @@ SPEC REPOS:
|
||||
- PromisesObjC
|
||||
- PromisesSwift
|
||||
- QRCoder
|
||||
- Sparkle
|
||||
- Swifter
|
||||
- SwiftyJSON
|
||||
- Yams
|
||||
@@ -163,7 +157,6 @@ CHECKOUT OPTIONS:
|
||||
:git: https://github.com/sindresorhus/Preferences.git
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
|
||||
FirebaseAnalytics: b5efc493eb0f40ec560b04a472e3e1a15d39ca13
|
||||
FirebaseCore: 11dc8a16dfb7c5e3c3f45ba0e191a33ac4f50894
|
||||
FirebaseCoreExtension: af5fd85e817ea9d19f9a2659a376cf9cf99f03c0
|
||||
@@ -181,11 +174,10 @@ SPEC CHECKSUMS:
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
|
||||
QRCoder: cbd2bee531cc86d286df7942334cfed94c803ae4
|
||||
Sparkle: a62c7dc4f410ced73beb2169cf1d3cc3f028a295
|
||||
Swifter: 2327ef5d872c638aebab79646ce494af508b0c8f
|
||||
SwiftyJSON: 36413e04c44ee145039d332b4f4e2d3e8d6c4db7
|
||||
Yams: e10dae147f517ed57ecae37c5e8681bdf8fcab65
|
||||
|
||||
PODFILE CHECKSUM: 071aabe40b11d56fb50a9b83f6ed47079838bdee
|
||||
PODFILE CHECKSUM: d61ad825ad5d61b2b98237544e21946c9babe3a0
|
||||
|
||||
COCOAPODS: 1.15.2
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
664EB377216C9A5F00B6AE0D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 664EB376216C9A5F00B6AE0D /* Assets.xcassets */; };
|
||||
664EB392216CA9E800B6AE0D /* ConfigWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 664EB390216CA9E800B6AE0D /* ConfigWindow.swift */; };
|
||||
6662C20B240EA782000AF6CD /* PreferenceDns.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6662C209240EA782000AF6CD /* PreferenceDns.xib */; };
|
||||
667029CA21AF8E7A0079EF41 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 667029C921AF8E7A0079EF41 /* Sparkle.framework */; };
|
||||
667029D321AFB86E0079EF41 /* QrcodeWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 667029D121AFB86E0079EF41 /* QrcodeWindow.xib */; };
|
||||
66784AFC2170486D00AD307F /* Util.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66784AFB2170486D00AD307F /* Util.swift */; };
|
||||
667ECE722A9A05EC009B00EC /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 667ECE712A9A05EC009B00EC /* main.swift */; };
|
||||
@@ -110,15 +109,11 @@
|
||||
6608D9DD2182C92D00A0E0DD /* v2rayOutbound.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = v2rayOutbound.swift; sourceTree = "<group>"; };
|
||||
6608D9E12182C9C100A0E0DD /* v2rayStream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = v2rayStream.swift; sourceTree = "<group>"; };
|
||||
660D0E59216E0158000C2922 /* V2rayServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = V2rayServer.swift; sourceTree = "<group>"; usesTabs = 0; wrapsLines = 0; };
|
||||
66107B8722DEDBE4002FFB60 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
66107B8922DEE445002FFB60 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6618372823E9BF1A000F7410 /* ToastWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastWindow.swift; sourceTree = "<group>"; };
|
||||
6618372D23E9BF73000F7410 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ToastWindow.xib; sourceTree = "<group>"; };
|
||||
66193A8523EE45B200289B6A /* PreferenceRouting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferenceRouting.swift; sourceTree = "<group>"; };
|
||||
66193A8823EE46BC00289B6A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = V2rayU/Base.lproj/PreferenceRouting.xib; sourceTree = SOURCE_ROOT; };
|
||||
66193A9323EF1EF600289B6A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/PreferenceRouting.strings"; sourceTree = "<group>"; };
|
||||
66193A9523EF1EFA00289B6A /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "../zh-HK.lproj/PreferenceRouting.strings"; sourceTree = "<group>"; };
|
||||
6625848D2AB745E700DFDC1E /* sign.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = sign.sh; sourceTree = "<group>"; };
|
||||
6625848E2AB746D500DFDC1E /* appdmg.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = appdmg.sh; sourceTree = "<group>"; };
|
||||
662F0ACE2AB720C700884C17 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = ../en.lproj/PreferenceGeneral.strings; sourceTree = "<group>"; };
|
||||
663F040525ED4B2C00687600 /* V2rayLaunch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = V2rayLaunch.swift; sourceTree = "<group>"; };
|
||||
@@ -126,19 +121,17 @@
|
||||
664B95DD217062A500DBC941 /* Alamofire */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Alamofire; path = Pods/Alamofire; sourceTree = "<group>"; };
|
||||
664BAC462C2DB0E100654FB7 /* V2rayRouting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = V2rayRouting.swift; sourceTree = "<group>"; };
|
||||
664BAC482C314CD600654FB7 /* AppVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppVersion.swift; sourceTree = "<group>"; };
|
||||
664BAC4F2C394AA000654FB7 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/PreferenceRouting.strings"; sourceTree = "<group>"; };
|
||||
664EB371216C9A5E00B6AE0D /* V2rayU.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = V2rayU.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
664EB374216C9A5E00B6AE0D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
664EB376216C9A5F00B6AE0D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
664EB379216C9A5F00B6AE0D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
664EB37B216C9A5F00B6AE0D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
664EB390216CA9E800B6AE0D /* ConfigWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigWindow.swift; sourceTree = "<group>"; };
|
||||
664FC05321A70C4300048FE3 /* build.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = build.plist; sourceTree = "<group>"; };
|
||||
6653C20422E0A2B700754D66 /* publish.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = publish.sh; sourceTree = "<group>"; };
|
||||
665DC9BA22A542F90062337B /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
6662C20A240EA782000AF6CD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = V2rayU/Base.lproj/PreferenceDns.xib; sourceTree = SOURCE_ROOT; };
|
||||
6662C20C240EA794000AF6CD /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../zh-Hans.lproj/PreferenceDns.strings"; sourceTree = "<group>"; };
|
||||
6662C20D240EA797000AF6CD /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "../zh-HK.lproj/PreferenceDns.strings"; sourceTree = "<group>"; };
|
||||
667029C921AF8E7A0079EF41 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = "../../Downloads/Sparkle-1.21.0/Sparkle.framework"; sourceTree = "<group>"; };
|
||||
667029D221AFB86E0079EF41 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/QrcodeWindow.xib; sourceTree = "<group>"; };
|
||||
66784AFB2170486D00AD307F /* Util.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Util.swift; sourceTree = "<group>"; };
|
||||
667ECE6F2A9A05EB009B00EC /* V2rayUTool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = V2rayUTool; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -154,7 +147,9 @@
|
||||
669A73AC233776B900807CF9 /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "../zh-HK.lproj/PreferenceGeneral.strings"; sourceTree = "<group>"; };
|
||||
669A73AD233776B900807CF9 /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "../zh-HK.lproj/PreferencePac.strings"; sourceTree = "<group>"; };
|
||||
669A73AE233776B900807CF9 /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "../zh-HK.lproj/PreferenceSubscription.strings"; sourceTree = "<group>"; };
|
||||
669A73AF233776B900807CF9 /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "zh-HK.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
66A358662C39517B00914A25 /* zh-HK */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-HK"; path = "zh-HK.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
66A358672C39517F00914A25 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
66A358682C3959AE00914A25 /* build.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = build.plist; sourceTree = "<group>"; };
|
||||
66A5CE4521706B5A009B08B2 /* Pods_V2rayU.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_V2rayU.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
66A77BE2268225790097A126 /* v2ray-core */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "v2ray-core"; path = "Build/v2ray-core"; sourceTree = "<group>"; };
|
||||
66ACB19F21757D5B005B5881 /* MainMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenu.swift; sourceTree = "<group>"; };
|
||||
@@ -205,7 +200,6 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
667029CA21AF8E7A0079EF41 /* Sparkle.framework in Frameworks */,
|
||||
66973EB721797719001FEA1E /* ServiceManagement.framework in Frameworks */,
|
||||
F260898E336CFA5EAB07ADC9 /* Pods_V2rayU.framework in Frameworks */,
|
||||
);
|
||||
@@ -313,12 +307,10 @@
|
||||
66FEAD44217D75D7009DECF9 /* Build */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
66A358682C3959AE00914A25 /* build.plist */,
|
||||
6625848E2AB746D500DFDC1E /* appdmg.sh */,
|
||||
6625848D2AB745E700DFDC1E /* sign.sh */,
|
||||
664FC05321A70C4300048FE3 /* build.plist */,
|
||||
66FEAD45217D75FC009DECF9 /* release.sh */,
|
||||
6D6DFD93CE866018306A090E /* pac */,
|
||||
6653C20422E0A2B700754D66 /* publish.sh */,
|
||||
6D6DF927AC79EEF7378C192A /* appdmg.json */,
|
||||
);
|
||||
path = Build;
|
||||
@@ -360,7 +352,6 @@
|
||||
children = (
|
||||
665DC9BA22A542F90062337B /* AppKit.framework */,
|
||||
664666A021CBD6C60094F0B7 /* libPods-V2rayUTool.a */,
|
||||
667029C921AF8E7A0079EF41 /* Sparkle.framework */,
|
||||
66973EB621797719001FEA1E /* ServiceManagement.framework */,
|
||||
66A5CE4521706B5A009B08B2 /* Pods_V2rayU.framework */,
|
||||
664B95DD217062A500DBC941 /* Alamofire */,
|
||||
@@ -595,9 +586,9 @@
|
||||
66107B8822DEDBE4002FFB60 /* Localizable.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
66107B8722DEDBE4002FFB60 /* zh-Hans */,
|
||||
66107B8922DEE445002FFB60 /* en */,
|
||||
669A73AF233776B900807CF9 /* zh-HK */,
|
||||
66A358662C39517B00914A25 /* zh-HK */,
|
||||
66A358672C39517F00914A25 /* zh-Hans */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
@@ -614,8 +605,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
66193A8823EE46BC00289B6A /* Base */,
|
||||
66193A9323EF1EF600289B6A /* zh-Hans */,
|
||||
66193A9523EF1EFA00289B6A /* zh-HK */,
|
||||
664BAC4F2C394AA000654FB7 /* zh-Hans */,
|
||||
);
|
||||
name = PreferenceRouting.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -844,14 +834,15 @@
|
||||
buildSettings = {
|
||||
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 4.0.0;
|
||||
CURRENT_PROJECT_VERSION = 4.2.0;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = RJYEH6TCJD;
|
||||
ENABLE_ONLY_ACTIVE_RESOURCES = YES;
|
||||
INFOPLIST_FILE = V2rayU/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = V2rayU;
|
||||
@@ -860,7 +851,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 4.0.0;
|
||||
MARKETING_VERSION = 4.2.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = net.yanue.V2rayU;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -878,14 +869,15 @@
|
||||
buildSettings = {
|
||||
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 4.0.0;
|
||||
CURRENT_PROJECT_VERSION = 4.2.0;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = RJYEH6TCJD;
|
||||
ENABLE_ONLY_ACTIVE_RESOURCES = YES;
|
||||
INFOPLIST_FILE = V2rayU/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = V2rayU;
|
||||
@@ -894,7 +886,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 4.0.0;
|
||||
MARKETING_VERSION = 4.2.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = net.yanue.V2rayU;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -912,8 +904,9 @@
|
||||
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = RJYEH6TCJD;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -927,8 +920,9 @@
|
||||
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = RJYEH6TCJD;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -45,6 +45,16 @@ struct GithubAsset: Codable {
|
||||
}
|
||||
}
|
||||
|
||||
struct GithubError: Codable {
|
||||
let message: String
|
||||
let documentationUrl: String
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case message
|
||||
case documentationUrl = "documentation_url"
|
||||
}
|
||||
}
|
||||
|
||||
let V2rayUpdater = AppCheckController()
|
||||
|
||||
// AppCheckController - 检查新版本页面
|
||||
@@ -169,22 +179,46 @@ class AppCheckController: NSWindowController {
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
print("Error decoding JSON: \(error)")
|
||||
DispatchQueue.main.async {
|
||||
// update progress text
|
||||
self.bindData.progressText = "Check failed: \(error)"
|
||||
var title = "Check failed!"
|
||||
var toast = "\(error)"
|
||||
if isMainland {
|
||||
title = "检查失败"
|
||||
toast = "\(error)";
|
||||
// 可能请求太频繁了
|
||||
do {
|
||||
let decoder = JSONDecoder()
|
||||
|
||||
// try decode data
|
||||
let data: GithubError = try decoder.decode(GithubError.self, from: data)
|
||||
DispatchQueue.main.async {
|
||||
// update progress text
|
||||
self.bindData.progressText = "Check failed: \(error)"
|
||||
var title = "Check failed!"
|
||||
if isMainland {
|
||||
title = "检查失败"
|
||||
}
|
||||
var toast = "\(data.message)\n\(data.documentationUrl)";
|
||||
// open dialog
|
||||
alertDialog(title: title, message: toast)
|
||||
// sleep 2s
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
// close window
|
||||
self.closeWindow()
|
||||
}
|
||||
}
|
||||
// open dialog
|
||||
alertDialog(title: title, message: toast)
|
||||
// sleep 2s
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
// close window
|
||||
self.closeWindow()
|
||||
} catch {
|
||||
print("Error decoding JSON: \(error)")
|
||||
DispatchQueue.main.async {
|
||||
// update progress text
|
||||
self.bindData.progressText = "Check failed: \(error)"
|
||||
var title = "Check failed!"
|
||||
var toast = "\(error)"
|
||||
if isMainland {
|
||||
title = "检查失败"
|
||||
toast = "\(error)";
|
||||
}
|
||||
// open dialog
|
||||
alertDialog(title: title, message: toast)
|
||||
// sleep 2s
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
// close window
|
||||
self.closeWindow()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -258,7 +292,7 @@ class AppVersionController: NSWindowController {
|
||||
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 500, height: 300),
|
||||
styleMask: [.titled, .closable, .resizable],
|
||||
backing: .buffered, defer: false)
|
||||
window.title = "Software Update"
|
||||
window.title = "V2rayU Update"
|
||||
window.contentView = contentView
|
||||
|
||||
super.init(window: window)
|
||||
@@ -272,19 +306,37 @@ class AppVersionController: NSWindowController {
|
||||
}
|
||||
|
||||
func show(release: GithubRelease) {
|
||||
bindData.title = "A new version of V2rayU is available!"
|
||||
bindData.description = "V2rayU \(appVersion) is now available—you have \(release.tagName). Would you like to download it now?"
|
||||
bindData.releaseNotes = release.name + "\n" + release.body
|
||||
self.release = release
|
||||
print("bindData.releaseNotes", bindData.releaseNotes)
|
||||
// bring window to front
|
||||
window?.orderFrontRegardless()
|
||||
// center position
|
||||
window?.center()
|
||||
// make window key
|
||||
window?.makeKeyAndOrderFront(nil)
|
||||
// activate app
|
||||
NSApp.activate(ignoringOtherApps: true)
|
||||
DispatchQueue.main.async {
|
||||
self.release = release
|
||||
if isMainland {
|
||||
self.bindData.title = "A new version of V2rayU is available!"
|
||||
if release.prerelease{
|
||||
self.bindData.description = "V2rayU \(release.tagName) preview is now available, you have \(appVersion). Would you like to download it now?"
|
||||
} else {
|
||||
self.bindData.description = "V2rayU \(release.tagName) is now available, you have \(appVersion). Would you like to download it now?"
|
||||
}
|
||||
self.bindData.releaseNotes = release.name + "\n" + release.body
|
||||
} else {
|
||||
self.bindData.title = "V2rayU 有新版本上线了!"
|
||||
if release.prerelease {
|
||||
self.bindData.description = "V2rayU 已上线 \(release.tagName) 预览版,您有的版本 \(appVersion) —,需要立即下载吗?"
|
||||
} else {
|
||||
self.bindData.description = "V2rayU 已上线 \(release.tagName),您有的版本 \(appVersion) —,需要立即下载吗?"
|
||||
}
|
||||
self.bindData.releaseNotes = release.name + "\n" + release.body
|
||||
self.bindData.releaseNodesTitle = "更新日志"
|
||||
self.bindData.skipVersion = "跳过此版本"
|
||||
self.bindData.installUpdate = "安装此版本"
|
||||
}
|
||||
// bring window to front
|
||||
self.window?.orderFrontRegardless()
|
||||
// center position
|
||||
self.window?.center()
|
||||
// make window key
|
||||
self.window?.makeKeyAndOrderFront(nil)
|
||||
// activate app
|
||||
NSApp.activate(ignoringOtherApps: true)
|
||||
}
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
@@ -309,10 +361,10 @@ class AppVersionController: NSWindowController {
|
||||
|
||||
func skipAction() {
|
||||
print("Skip action")
|
||||
// UserDefaults 记录是否跳过版本更新
|
||||
UserDefaults.standard.set(release.tagName, forKey: "skipAppVersion")
|
||||
// 关闭窗口
|
||||
DispatchQueue.main.async {
|
||||
// UserDefaults 记录是否跳过版本更新
|
||||
UserDefaults.standard.set(self.release.tagName, forKey: "skipAppVersion")
|
||||
// 关闭窗口
|
||||
self.window?.close()
|
||||
}
|
||||
}
|
||||
@@ -320,8 +372,10 @@ class AppVersionController: NSWindowController {
|
||||
class BindData: ObservableObject {
|
||||
@Published var title = "A new version of V2rayU App is available!"
|
||||
@Published var description = ""
|
||||
@Published var releaseNotes = """
|
||||
"""
|
||||
@Published var releaseNotes = ""
|
||||
@Published var releaseNodesTitle = "Release Notes:"
|
||||
@Published var skipVersion = "Skip This Version!"
|
||||
@Published var installUpdate = "Install Update!"
|
||||
}
|
||||
|
||||
struct ContentView: View {
|
||||
@@ -347,7 +401,7 @@ class AppVersionController: NSWindowController {
|
||||
Text(bindData.description)
|
||||
.padding(.trailing, 20)
|
||||
|
||||
Text("Release Notes:")
|
||||
Text(bindData.releaseNodesTitle)
|
||||
.font(.headline)
|
||||
.bold()
|
||||
.padding(.top, 20)
|
||||
@@ -364,22 +418,25 @@ class AppVersionController: NSWindowController {
|
||||
|
||||
Spacer(minLength: 20) // 右边 margin 40
|
||||
}
|
||||
|
||||
HStack {
|
||||
Button(bindData.skipVersion) {
|
||||
skipAction()
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Button(bindData.installUpdate) {
|
||||
installAction()
|
||||
}
|
||||
.padding(.trailing, 20)
|
||||
.keyboardShortcut(.defaultAction)
|
||||
}
|
||||
.padding(.top,20)
|
||||
.padding(.bottom,20)
|
||||
}
|
||||
}
|
||||
|
||||
HStack {
|
||||
Button("Skip This Version") {
|
||||
skipAction()
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Button("Install Update") {
|
||||
installAction()
|
||||
}
|
||||
.keyboardShortcut(.defaultAction)
|
||||
}
|
||||
.padding(20)
|
||||
}
|
||||
.frame(width: 500, height: 300)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22690"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -51,7 +51,7 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LeF-Sd-TXL">
|
||||
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LeF-Sd-TXL">
|
||||
<rect key="frame" x="18" y="319" width="295" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="V2ray Dns Json Text:" id="W0g-B7-neT">
|
||||
@@ -82,7 +82,7 @@
|
||||
<action selector="save:" target="-2" id="ec3-n0-TCm"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f4X-IX-Vz3" userLabel="Set the rules line by line: domain or ip">
|
||||
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f4X-IX-Vz3" userLabel="Set the rules line by line: domain or ip">
|
||||
<rect key="frame" x="18" y="22" width="251" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="* Please input v2ray DnsObject json text" id="yfy-JP-THq" userLabel="Set the rules line by line: domain or ip">
|
||||
@@ -91,7 +91,7 @@
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HDw-wR-poM">
|
||||
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HDw-wR-poM">
|
||||
<rect key="frame" x="18" y="343" width="424" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" alignment="center" id="ztP-ok-6QX">
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string></string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<true/>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string></string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>AppIcon</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
// Copyright © 2019 yanue. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftyJSON
|
||||
|
||||
// ping and choose fastest v2ray
|
||||
var inPing = false
|
||||
var inPingCurrent = false
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
import Cocoa
|
||||
import Preferences
|
||||
import SwiftyJSON
|
||||
|
||||
final class PreferenceSubscribeViewController: NSViewController, PreferencePane, NSTabViewDelegate {
|
||||
let preferencePaneIdentifier = PreferencePane.Identifier.subscribeTab
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
import Cocoa
|
||||
import SystemConfiguration
|
||||
import Swifter
|
||||
import Alamofire
|
||||
|
||||
let LAUNCH_AGENT_NAME = "yanue.v2rayu.v2ray-core"
|
||||
let AppResourcesPath = Bundle.main.bundlePath + "/Contents/Resources"
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
import SwiftyJSON
|
||||
|
||||
// ----- v2ray server manager -----
|
||||
class V2rayServer: NSObject {
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
import SwiftyJSON
|
||||
import Yams
|
||||
|
||||
// ----- v2ray subscribe manager -----
|
||||
|
||||
@@ -5,4 +5,3 @@
|
||||
Created by yanue on 2019/7/17.
|
||||
Copyright © 2019 yanue. All rights reserved.
|
||||
*/
|
||||
// Localizable App Name是App在英语环境环境下显示的名称
|
||||
|
||||
@@ -5,4 +5,3 @@
|
||||
Created by yanue on 2019/7/17.
|
||||
Copyright © 2019 yanue. All rights reserved.
|
||||
*/
|
||||
// Localizable App Name是App在英语环境环境下显示的名称
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Domain Strategy:"; ObjectID = "22k-l7-G7a"; */
|
||||
"22k-l7-G7a.title" = "域名策略:";
|
||||
/* Class = "NSTextFieldCell"; title = "Block:"; ObjectID = "0Cd-bg-07K"; */
|
||||
"0Cd-bg-07K.title" = "Block:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing LAN and mainland address"; ObjectID = "3qq-dt-TS9"; */
|
||||
"3qq-dt-TS9.title" = "绕过局域网和大陆地址";
|
||||
/* Class = "NSMenuItem"; title = "IPOnDemand"; ObjectID = "2ST-s0-RrI"; */
|
||||
"2ST-s0-RrI.title" = "IPOnDemand";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Routing Rule:"; ObjectID = "4rB-9k-291"; */
|
||||
"4rB-9k-291.title" = "路由模式:";
|
||||
/* Class = "NSTextFieldCell"; title = "Direct:"; ObjectID = "3hZ-qS-PUG"; */
|
||||
"3hZ-qS-PUG.title" = "Direct:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "save"; ObjectID = "8g2-Nj-m07"; */
|
||||
"8g2-Nj-m07.title" = "保存";
|
||||
"8g2-Nj-m07.title" = "save";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "IPIfNonMatch"; ObjectID = "92h-JU-wqn"; */
|
||||
"92h-JU-wqn.title" = "IPIfNonMatch";
|
||||
/* Class = "NSTextFieldCell"; title = "Rouing Rules"; ObjectID = "E4W-rN-0eq"; */
|
||||
"E4W-rN-0eq.title" = "Rouing Rules";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing the LAN Address"; ObjectID = "CoE-cp-7fn"; */
|
||||
"CoE-cp-7fn.title" = "绕过局域网地址";
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Rule Name"; ObjectID = "Ecy-wl-v5i"; */
|
||||
"Ecy-wl-v5i.title" = "Custom Rule Name";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing mainland address"; ObjectID = "EaD-tR-ldB"; */
|
||||
"EaD-tR-ldB.title" = "绕过大陆地址";
|
||||
/* Class = "NSTextFieldCell"; title = "Routing Rule:"; ObjectID = "J2T-Pf-s5D"; */
|
||||
"J2T-Pf-s5D.title" = "Routing Rule:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "IPOnDemand"; ObjectID = "Js7-cb-bWa"; */
|
||||
"Js7-cb-bWa.title" = "IPOnDemand";
|
||||
/* Class = "NSMenuItem"; title = "AsIs"; ObjectID = "Kl2-gr-bsh"; */
|
||||
"Kl2-gr-bsh.title" = "AsIs";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "AsIs"; ObjectID = "LX1-ye-51i"; */
|
||||
"LX1-ye-51i.title" = "AsIs";
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Rule JSON Text"; ObjectID = "Q0v-Ic-TRt"; */
|
||||
"Q0v-Ic-TRt.title" = "Custom Rule JSON Text";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "load default"; ObjectID = "RSN-g5-vmP"; */
|
||||
"RSN-g5-vmP.title" = "load default";
|
||||
/* Class = "NSTextFieldCell"; title = "Domain Strategy:"; ObjectID = "Qp3-K0-xA9"; */
|
||||
"Qp3-K0-xA9.title" = "Domain Strategy:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "* Set the rules line by line: domain or ip"; ObjectID = "ccq-gn-C6Z"; */
|
||||
"ccq-gn-C6Z.title" = "*按行设置域名或ip";
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "YQ1-7i-YOl"; */
|
||||
"YQ1-7i-YOl.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Block"; ObjectID = "nsT-BW-R2Z"; */
|
||||
"nsT-BW-R2Z.label" = "阻止ip或域名";
|
||||
/* Class = "NSTextFieldCell"; title = "Proxy:"; ObjectID = "cfS-8I-8Au"; */
|
||||
"cfS-8I-8Au.title" = "Proxy:";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Proxy"; ObjectID = "pnL-Z8-fIK"; */
|
||||
"pnL-Z8-fIK.label" = "代理ip或域名";
|
||||
/* Class = "NSMenuItem"; title = "IPIfNonMatch"; ObjectID = "dSb-GT-n2n"; */
|
||||
"dSb-GT-n2n.title" = "IPIfNonMatch";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Direct"; ObjectID = "yc0-Po-cG1"; */
|
||||
"yc0-Po-cG1.label" = "直连ip或域名";
|
||||
/* Class = "NSTextFieldCell"; title = "like: { \"domainStrategy\": \"IPOnDemand\", \"rules\": []}"; ObjectID = "ejH-X7-8Fb"; */
|
||||
"ejH-X7-8Fb.title" = "like: { \"domainStrategy\": \"IPOnDemand\", \"rules\": []}";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Global"; ObjectID = "zLf-pT-xlm"; */
|
||||
"zLf-pT-xlm.title" = "全局";
|
||||
/* Class = "NSTextFieldCell"; title = "* Set the rules line by line: domain or ip"; ObjectID = "ymo-ds-No9"; */
|
||||
"ymo-ds-No9.title" = "* Set the rules line by line: domain or ip";
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Domain Strategy:"; ObjectID = "22k-l7-G7a"; */
|
||||
"22k-l7-G7a.title" = "域名策略:";
|
||||
/* Class = "NSTextFieldCell"; title = "Block:"; ObjectID = "0Cd-bg-07K"; */
|
||||
"0Cd-bg-07K.title" = "阻止ip或域名:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing LAN and mainland address"; ObjectID = "3qq-dt-TS9"; */
|
||||
"3qq-dt-TS9.title" = "绕过局域网和大陆地址";
|
||||
/* Class = "NSMenuItem"; title = "IPOnDemand"; ObjectID = "2ST-s0-RrI"; */
|
||||
"2ST-s0-RrI.title" = "IPOnDemand";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Routing Rule:"; ObjectID = "4rB-9k-291"; */
|
||||
"4rB-9k-291.title" = "路由模式:";
|
||||
/* Class = "NSTextFieldCell"; title = "Direct:"; ObjectID = "3hZ-qS-PUG"; */
|
||||
"3hZ-qS-PUG.title" = "直连ip或域名:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "save"; ObjectID = "8g2-Nj-m07"; */
|
||||
"8g2-Nj-m07.title" = "保存";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "IPIfNonMatch"; ObjectID = "92h-JU-wqn"; */
|
||||
"92h-JU-wqn.title" = "IPIfNonMatch";
|
||||
/* Class = "NSTextFieldCell"; title = "Rouing Rules"; ObjectID = "E4W-rN-0eq"; */
|
||||
"E4W-rN-0eq.title" = "路由规则列表";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing the LAN Address"; ObjectID = "CoE-cp-7fn"; */
|
||||
"CoE-cp-7fn.title" = "绕过局域网地址";
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Rule Name"; ObjectID = "Ecy-wl-v5i"; */
|
||||
"Ecy-wl-v5i.title" = "自定义路由名称";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bypassing mainland address"; ObjectID = "EaD-tR-ldB"; */
|
||||
"EaD-tR-ldB.title" = "绕过大陆地址";
|
||||
/* Class = "NSTextFieldCell"; title = "Routing Rule:"; ObjectID = "J2T-Pf-s5D"; */
|
||||
"J2T-Pf-s5D.title" = "路由规则:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "IPOnDemand"; ObjectID = "Js7-cb-bWa"; */
|
||||
"Js7-cb-bWa.title" = "IPOnDemand";
|
||||
/* Class = "NSMenuItem"; title = "AsIs"; ObjectID = "Kl2-gr-bsh"; */
|
||||
"Kl2-gr-bsh.title" = "AsIs";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "AsIs"; ObjectID = "LX1-ye-51i"; */
|
||||
"LX1-ye-51i.title" = "AsIs";
|
||||
/* Class = "NSTextFieldCell"; title = "Custom Rule JSON Text"; ObjectID = "Q0v-Ic-TRt"; */
|
||||
"Q0v-Ic-TRt.title" = "自定义路由 json 内容";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "load default"; ObjectID = "RSN-g5-vmP"; */
|
||||
"RSN-g5-vmP.title" = "load default";
|
||||
/* Class = "NSTextFieldCell"; title = "Domain Strategy:"; ObjectID = "Qp3-K0-xA9"; */
|
||||
"Qp3-K0-xA9.title" = "域名策略:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "* Set the rules line by line: domain or ip"; ObjectID = "ccq-gn-C6Z"; */
|
||||
"ccq-gn-C6Z.title" = "*按行设置域名或ip";
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "YQ1-7i-YOl"; */
|
||||
"YQ1-7i-YOl.title" = "";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Block"; ObjectID = "nsT-BW-R2Z"; */
|
||||
"nsT-BW-R2Z.label" = "阻止ip或域名";
|
||||
/* Class = "NSTextFieldCell"; title = "Proxy:"; ObjectID = "cfS-8I-8Au"; */
|
||||
"cfS-8I-8Au.title" = "代理ip或域名:";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Proxy"; ObjectID = "pnL-Z8-fIK"; */
|
||||
"pnL-Z8-fIK.label" = "代理ip或域名";
|
||||
/* Class = "NSMenuItem"; title = "IPIfNonMatch"; ObjectID = "dSb-GT-n2n"; */
|
||||
"dSb-GT-n2n.title" = "IPIfNonMatch";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Direct"; ObjectID = "yc0-Po-cG1"; */
|
||||
"yc0-Po-cG1.label" = "直连ip或域名";
|
||||
/* Class = "NSTextFieldCell"; title = "like: { \"domainStrategy\": \"IPOnDemand\", \"rules\": []}"; ObjectID = "ejH-X7-8Fb"; */
|
||||
"ejH-X7-8Fb.title" = "例如: { \"domainStrategy\": \"IPOnDemand\", \"rules\": []}";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Global"; ObjectID = "zLf-pT-xlm"; */
|
||||
"zLf-pT-xlm.title" = "全局";
|
||||
/* Class = "NSTextFieldCell"; title = "* Set the rules line by line: domain or ip"; ObjectID = "ymo-ds-No9"; */
|
||||
"ymo-ds-No9.title" = "* 按行设置域名或ip";
|
||||
|
||||
Reference in New Issue
Block a user