Merge pull request #241 from snailbing/master

支持从粘贴板批量导入的功能
This commit is contained in:
yanue 2019-10-31 11:50:10 +08:00 committed by GitHub
commit c2bb0097eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 19 deletions

View File

@ -455,7 +455,7 @@ class MenuController: NSObject, NSMenuDelegate {
noticeTip(title: "import server fail", subtitle: "", informativeText: "no found ss:// , ssr:// or vmess:// from Pasteboard")
}
}
@IBAction func pingSpeed(_ sender: NSMenuItem) {
let itemList = V2rayServer.list()
if itemList.count == 0 {
@ -477,24 +477,30 @@ class MenuController: NSObject, NSMenuDelegate {
}
func importUri(url: String) {
let uri = url.trimmingCharacters(in: .whitespaces)
let urls = url.split(separator: "\n")
for url in urls {
let uri = url.trimmingCharacters(in: .whitespaces)
if uri.count == 0 {
noticeTip(title: "import server fail", subtitle: "", informativeText: "import error: uri not found")
return
}
if uri.count == 0 {
noticeTip(title: "import server fail", subtitle: "", informativeText: "import error: uri not found")
continue
}
// ss://YWVzLTI1Ni1jZmI6ZUlXMERuazY5NDU0ZTZuU3d1c3B2OURtUzIwMXRRMERAMTcyLjEwNS43MS44Mjo4MDk5#325.06 URL
// if URL(string: uri) == nil {
if !ImportUri.supportProtocol(uri: uri) {
noticeTip(title: "import server fail", subtitle: "", informativeText: "no found ss:// , ssr:// or vmess://")
continue
}
if let importUri = ImportUri.importUri(uri: uri) {
self.saveServer(importUri: importUri)
continue
}
if URL(string: uri) == nil {
noticeTip(title: "import server fail", subtitle: "", informativeText: "no found ss:// , ssr:// or vmess://")
return
}
if let importUri = ImportUri.importUri(uri: uri) {
self.saveServer(importUri: importUri)
return
}
noticeTip(title: "import server fail", subtitle: "", informativeText: "no found ss:// , ssr:// or vmess://")
}
func saveServer(importUri: ImportUri) {

View File

@ -158,21 +158,28 @@ class ImportUri {
}
func importSSUri(uri: String) {
if URL(string: uri) == nil {
if URL(string: uri) == nil && uri.index(of: "#") == nil {
self.error = "invalid ss url"
return
}
// ss://YWVzLTI1Ni1jZmI6ZjU1LmZ1bi0wNTM1NDAxNkA0NS43OS4xODAuMTExOjExMDc4#300.16
let aUri = uri.split(separator: "#")
self.uri = uri
let ss = ShadowsockUri()
ss.Init(url: URL(string: uri)!)
ss.Init(url: URL(string: String(aUri[0]))!)
if ss.error.count > 0 {
self.error = ss.error
self.isValid = false
return
}
self.remark = ss.remark
if ss.remark.count == 0 && aUri.count > 1 {
self.remark = String(aUri[1])
} else {
self.remark = ss.remark
}
let v2ray = V2rayConfig()
var ssServer = V2rayOutboundShadowsockServer()
@ -520,7 +527,7 @@ class ShadowsockUri {
self.error = "error: decodeUrl"
return
}
guard var parsedUrl = URLComponents(string: decodedUrl) else {
guard let parsedUrl = URLComponents(string: decodedUrl) else {
self.error = "error: parsedUrl"
return
}