Skip to content

Commit

Permalink
Read embedded server entries from a resource file
Browse files Browse the repository at this point in the history
The embedded server entries can be very large, and putting them in source code as a string is unwieldy. It makes much more sense for them to be read from a file (and then we can just provide that file to the library consumer).
  • Loading branch information
adam-p committed Apr 27, 2017
1 parent c131ca8 commit eebb8f3
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ FOUNDATION_EXPORT const unsigned char PsiphonTunnelVersionString[];
- `RemoteServerListSignaturePublicKey`
- Obfuscated server list functionality is also not strictly required, but aids circumvention ability.
- `ObfuscatedServerListRootURLs`
- `RemoteServerListSignaturePublicKey`: This is the same field as above. It is required if either `RemoteServerListURLs` or `ObfuscatedServerListRootURLs` is supplied.
Optional fields (if you don't need them, don't set them):
- `DataStoreDirectory`: If not set, the library will use a sane location. Override if the client wants to restrict where operational data is kept. If overridden, the directory must already exist and be writable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
6626590E1DCB8CF400872F6C /* TunneledWebRequestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6626590D1DCB8CF400872F6C /* TunneledWebRequestUITests.swift */; };
662659211DCBC7C300872F6C /* PsiphonTunnel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 662659201DCBC7C300872F6C /* PsiphonTunnel.framework */; };
662659231DCBC8D800872F6C /* PsiphonTunnel.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 662659201DCBC7C300872F6C /* PsiphonTunnel.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6682D90E1EB1334000329958 /* psiphon-embedded-server-entries.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6682D90D1EB1334000329958 /* psiphon-embedded-server-entries.txt */; };
6688DBB61DCD684B00721A9E /* psiphon-config.json in Resources */ = {isa = PBXBuildFile; fileRef = 6688DBB51DCD684B00721A9E /* psiphon-config.json */; };
/* End PBXBuildFile section */

Expand Down Expand Up @@ -64,6 +65,7 @@
6626590D1DCB8CF400872F6C /* TunneledWebRequestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunneledWebRequestUITests.swift; sourceTree = "<group>"; };
6626590F1DCB8CF400872F6C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
662659201DCBC7C300872F6C /* PsiphonTunnel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = PsiphonTunnel.framework; sourceTree = "<group>"; };
6682D90D1EB1334000329958 /* psiphon-embedded-server-entries.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "psiphon-embedded-server-entries.txt"; sourceTree = "<group>"; };
6688DBB51DCD684B00721A9E /* psiphon-config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "psiphon-config.json"; sourceTree = "<group>"; };
/* End PBXFileReference section */

Expand Down Expand Up @@ -123,6 +125,7 @@
662658F61DCB8CF300872F6C /* LaunchScreen.storyboard */,
662658F91DCB8CF300872F6C /* Info.plist */,
6688DBB51DCD684B00721A9E /* psiphon-config.json */,
6682D90D1EB1334000329958 /* psiphon-embedded-server-entries.txt */,
662659201DCBC7C300872F6C /* PsiphonTunnel.framework */,
);
path = TunneledWebRequest;
Expand Down Expand Up @@ -260,6 +263,7 @@
files = (
662658F81DCB8CF300872F6C /* LaunchScreen.storyboard in Resources */,
662658F51DCB8CF300872F6C /* Assets.xcassets in Resources */,
6682D90E1EB1334000329958 /* psiphon-embedded-server-entries.txt in Resources */,
662658F31DCB8CF300872F6C /* Main.storyboard in Resources */,
6688DBB61DCD684B00721A9E /* psiphon-config.json in Resources */,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@ class ViewController: UIViewController {
// Start up the tunnel and begin connecting.
// This could be started elsewhere or earlier.
NSLog("Starting tunnel")
let embeddedServerEntries = ""

guard let embeddedServerEntries = getEmbeddedServerEntries() else {
NSLog("getEmbeddedServerEntries failed!")
return
}

guard let success = self.psiphonTunnel?.start(embeddedServerEntries), success else {
NSLog("psiphonTunnel.start returned false")
return
Expand All @@ -63,6 +68,22 @@ class ViewController: UIViewController {
.replacingOccurrences(of: "\r", with: "")
self.webView.stringByEvaluatingJavaScript(from: String.init(format: "document.body.innerHTML+='<br><pre>%@</pre><br>'", arguments: [escapedText]))
}

/// Read the Psiphon embedded server entries resource file and return the contents.
/// * returns: The string of the contents of the file.
func getEmbeddedServerEntries() -> String? {
guard let psiphonEmbeddedServerEntriesUrl = Bundle.main.url(forResource: "psiphon-embedded-server-entries", withExtension: "txt") else {
NSLog("Error getting Psiphon embedded server entries resource file URL!")
return nil
}

do {
return try String.init(contentsOf: psiphonEmbeddedServerEntriesUrl)
} catch {
NSLog("Error reading Psiphon embedded server entries resource file!")
return nil
}
}

/// Request URL using URLSession configured to use the current proxy.
/// * parameters:
Expand Down Expand Up @@ -209,7 +230,7 @@ extension ViewController: TunneledAppDelegate {
do {
return try String.init(contentsOf: psiphonConfigUrl)
} catch {
NSLog("Error getting Psiphon config resource file URL!")
NSLog("Error reading Psiphon config resource file!")
return nil
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Embedded server entries supplied by Psiphon Inc. go here.
This file should be empty if embedded server entries are not being used. (But they should be used.)

0 comments on commit eebb8f3

Please sign in to comment.