Support generate SS URL with Remark and OTA

This commit is contained in:
Rainux Luo
2017-01-07 12:48:10 +08:00
parent 9dafb4fb79
commit c50e18d832
3 changed files with 25 additions and 6 deletions

View File

@ -121,9 +121,22 @@ class ServerProfile: NSObject {
}
func URL() -> Foundation.URL? {
let parts = "\(method):\(password)@\(serverHost):\(serverPort)"
let base64String = parts.data(using: String.Encoding.utf8)?
.base64EncodedString(options: NSData.Base64EncodingOptions())
var url = URLComponents()
url.host = serverHost
url.user = method
url.password = password
url.port = Int(serverPort)
url.queryItems = [URLQueryItem(name: "Remark", value: remark),
URLQueryItem(name: "OTA", value: ota.description)]
let parts = url.string?.replacingOccurrences(
of: "//", with: "",
options: String.CompareOptions.anchored, range: nil)
let base64String = parts?.data(using: String.Encoding.utf8)?
.base64EncodedString(options: Data.Base64EncodingOptions())
if var s = base64String {
s = s.trimmingCharacters(in: CharacterSet(charactersIn: "="))
return Foundation.URL(string: "ss://\(s)")

View File

@ -28,8 +28,12 @@ func ParseSSURL(_ url: URL?) -> [String: Any?]? {
func padBase64(string: String) -> String {
var length = string.characters.count
length = 4 - length % 4 + length
return string.padding(toLength: length, withPad: "=", startingAt: 0)
if length % 4 == 0 {
return string
} else {
length = 4 - length % 4 + length
return string.padding(toLength: length, withPad: "=", startingAt: 0)
}
}
if url?.host == nil {