Fixes bug. Generate PAC file by local address.

This commit is contained in:
Qiu Yuzhou
2018-09-21 11:55:36 +08:00
parent 0e2399ae73
commit 53aff531fa
3 changed files with 31 additions and 12 deletions

View File

@ -150,7 +150,10 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cd8-PU-OwG">
<rect key="frame" x="242" y="284" width="163" height="22"/>
<rect key="frame" x="242" y="284" width="218" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="218" id="fM9-DB-eLc"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="LBl-2M-X7O">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -264,6 +267,7 @@
</textField>
</subviews>
<constraints>
<constraint firstItem="cd8-PU-OwG" firstAttribute="top" secondItem="Pc1-f7-0zA" secondAttribute="top" constant="20" symbolic="YES" id="2xI-Je-UBj"/>
<constraint firstItem="r8z-mM-M0X" firstAttribute="centerY" secondItem="2rw-0u-LXJ" secondAttribute="centerY" id="5fA-ZQ-ZjQ"/>
<constraint firstItem="r8z-mM-M0X" firstAttribute="leading" secondItem="MvY-R0-1FU" secondAttribute="leading" id="6eA-0g-irI"/>
<constraint firstItem="KXG-O0-ake" firstAttribute="leading" secondItem="RYj-h6-uAT" secondAttribute="trailing" constant="8" symbolic="YES" id="A8d-Yi-iPY"/>
@ -273,28 +277,26 @@
<constraint firstItem="Zfl-10-Wdk" firstAttribute="leading" secondItem="tGd-pe-2xJ" secondAttribute="leading" id="ERU-7y-65C"/>
<constraint firstAttribute="trailing" secondItem="tGd-pe-2xJ" secondAttribute="trailing" constant="20" symbolic="YES" id="Hu7-bS-L8S"/>
<constraint firstItem="KXG-O0-ake" firstAttribute="leading" secondItem="Zfl-10-Wdk" secondAttribute="leading" id="JAW-8x-8Ec"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="top" secondItem="Pc1-f7-0zA" secondAttribute="top" constant="20" symbolic="YES" id="Kgn-0j-CLQ"/>
<constraint firstItem="c8B-qf-UNK" firstAttribute="baseline" secondItem="cd8-PU-OwG" secondAttribute="baseline" id="MKo-Cq-dg7"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="baseline" secondItem="c8B-qf-UNK" secondAttribute="baseline" id="KfL-wl-9vw"/>
<constraint firstItem="c8B-qf-UNK" firstAttribute="leading" secondItem="Pc1-f7-0zA" secondAttribute="leading" constant="37" id="O7u-jq-IpO"/>
<constraint firstItem="Zfl-10-Wdk" firstAttribute="leading" secondItem="MvY-R0-1FU" secondAttribute="trailing" constant="8" symbolic="YES" id="OMl-E5-RNK"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="trailing" secondItem="a60-LH-adV" secondAttribute="trailing" id="PVl-Og-tdF"/>
<constraint firstItem="2rw-0u-LXJ" firstAttribute="top" secondItem="cd8-PU-OwG" secondAttribute="bottom" constant="10" symbolic="YES" id="PZS-om-WoS"/>
<constraint firstItem="RYj-h6-uAT" firstAttribute="centerY" secondItem="KXG-O0-ake" secondAttribute="centerY" id="Qyf-RP-hha"/>
<constraint firstItem="a60-LH-adV" firstAttribute="leading" secondItem="Zfl-10-Wdk" secondAttribute="trailing" constant="8" symbolic="YES" id="W19-Vm-mO0"/>
<constraint firstItem="2rw-0u-LXJ" firstAttribute="leading" secondItem="r8z-mM-M0X" secondAttribute="trailing" constant="8" symbolic="YES" id="Ysf-HF-2KD"/>
<constraint firstItem="tGd-pe-2xJ" firstAttribute="trailing" secondItem="RcT-mn-xqK" secondAttribute="trailing" id="agb-Xy-AfZ"/>
<constraint firstItem="2rw-0u-LXJ" firstAttribute="top" secondItem="cd8-PU-OwG" secondAttribute="bottom" constant="10" symbolic="YES" id="asF-SN-6qK"/>
<constraint firstItem="Zfl-10-Wdk" firstAttribute="centerY" secondItem="a60-LH-adV" secondAttribute="centerY" id="cqe-kg-5MV"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="leading" secondItem="c8B-qf-UNK" secondAttribute="trailing" constant="8" symbolic="YES" id="eAj-w3-62X"/>
<constraint firstItem="MvY-R0-1FU" firstAttribute="baseline" secondItem="a60-LH-adV" secondAttribute="baseline" id="eUT-gJ-nfA"/>
<constraint firstItem="RYj-h6-uAT" firstAttribute="leading" secondItem="r8z-mM-M0X" secondAttribute="leading" id="igM-ki-qeU"/>
<constraint firstItem="Zfl-10-Wdk" firstAttribute="top" secondItem="KXG-O0-ake" secondAttribute="bottom" constant="10" symbolic="YES" id="mgU-8h-vo1"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="trailing" secondItem="tGd-pe-2xJ" secondAttribute="trailing" id="nNG-Uo-SoT"/>
<constraint firstItem="KXG-O0-ake" firstAttribute="top" secondItem="2rw-0u-LXJ" secondAttribute="bottom" constant="10" symbolic="YES" id="nQG-MA-bW1"/>
<constraint firstItem="tGd-pe-2xJ" firstAttribute="leading" secondItem="RcT-mn-xqK" secondAttribute="leading" id="oCa-3p-Nbm"/>
<constraint firstAttribute="trailing" secondItem="cd8-PU-OwG" secondAttribute="trailing" constant="75" id="oTW-Py-JGm"/>
<constraint firstItem="RcT-mn-xqK" firstAttribute="top" secondItem="tGd-pe-2xJ" secondAttribute="bottom" constant="6" symbolic="YES" id="qWE-ve-msF"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="leading" secondItem="2rw-0u-LXJ" secondAttribute="leading" id="rRF-Mo-I8o"/>
<constraint firstItem="KXG-O0-ake" firstAttribute="trailing" secondItem="Zfl-10-Wdk" secondAttribute="trailing" id="s8J-cx-cKI"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="leading" secondItem="2rw-0u-LXJ" secondAttribute="leading" id="sh7-DZ-LGx"/>
<constraint firstItem="c8B-qf-UNK" firstAttribute="leading" secondItem="r8z-mM-M0X" secondAttribute="leading" id="tTG-qx-4ET"/>
<constraint firstItem="cd8-PU-OwG" firstAttribute="leading" secondItem="c8B-qf-UNK" secondAttribute="trailing" constant="8" symbolic="YES" id="zlV-I9-4WP"/>
</constraints>
</view>
</tabViewItem>
@ -404,7 +406,7 @@
<rect key="frame" x="20" y="111" width="440" height="119"/>
<clipView key="contentView" id="9Wy-0J-wQ8">
<rect key="frame" x="1" y="1" width="438" height="117"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" id="Vp3-dp-iqv">
<rect key="frame" x="0.0" y="0.0" width="438" height="117"/>

View File

@ -21,6 +21,13 @@ let GFWListFilePath = PACRulesDirPath + "gfwlist.txt"
func SyncPac() {
var needGenerate = false
let nowSocks5Address = UserDefaults.standard.string(forKey: "LocalSocks5.ListenAddress")
let oldSocks5Address = UserDefaults.standard.string(forKey: "LocalSocks5.ListenAddress.Old")
if nowSocks5Address != oldSocks5Address {
needGenerate = true
UserDefaults.standard.set(nowSocks5Address, forKey: "LocalSocks5.ListenAddress.Old")
}
let nowSocks5Port = UserDefaults.standard.integer(forKey: "LocalSocks5.ListenPort")
let oldSocks5Port = UserDefaults.standard.integer(forKey: "LocalSocks5.ListenPort.Old")
if nowSocks5Port != oldSocks5Port {
@ -65,6 +72,7 @@ func GeneratePACFile() -> Bool {
try! fileMgr.copyItem(atPath: src!, toPath: PACUserRuleFilePath)
}
let socks5Address = UserDefaults.standard.string(forKey: "LocalSocks5.ListenAddress")!
let socks5Port = UserDefaults.standard.integer(forKey: "LocalSocks5.ListenPort")
do {
@ -109,11 +117,20 @@ func GeneratePACFile() -> Bool {
jsStr = jsStr!.replacingOccurrences(of: "__RULES__"
, with: rulesJsonStr!)
// Replace __SOCKS5PORT__ palcholder in pac js
let result = jsStr!.replacingOccurrences(of: "__SOCKS5PORT__"
jsStr = jsStr!.replacingOccurrences(of: "__SOCKS5PORT__"
, with: "\(socks5Port)")
// Replace __SOCKS5ADDR__ palcholder in pac js
var sin6 = sockaddr_in6()
if socks5Address.withCString({ cstring in inet_pton(AF_INET6, cstring, &sin6.sin6_addr) }) == 1 {
jsStr = jsStr!.replacingOccurrences(of: "__SOCKS5ADDR__"
, with: "[\(socks5Address)]")
} else {
jsStr = jsStr!.replacingOccurrences(of: "__SOCKS5ADDR__"
, with: socks5Address)
}
// Write the pac js to file.
try result.data(using: String.Encoding.utf8)?
try jsStr!.data(using: String.Encoding.utf8)?
.write(to: URL(fileURLWithPath: PACFilePath), options: .atomic)
return true

View File

@ -1,7 +1,7 @@
// Generated by gfwlist2pac in precise mode
// https://github.com/clowwindy/gfwlist2pac
var proxy = "SOCKS5 127.0.0.1:__SOCKS5PORT__; SOCKS 127.0.0.1:__SOCKS5PORT__; DIRECT;";
var proxy = "SOCKS5 __SOCKS5ADDR__:__SOCKS5PORT__; SOCKS __SOCKS5ADDR__:__SOCKS5PORT__; DIRECT;";
var rules = __RULES__;