@@ -13,7 +13,6 @@ class HTTPUserProxy{
13
13
static let shard = HTTPUserProxy ( )
14
14
15
15
let adapter = APIAdapter ( )
16
- let v = Validator ( )
17
16
18
17
let server = GCDWebServer ( )
19
18
let api_port : UInt = 9528
@@ -111,7 +110,7 @@ class HTTPUserProxy{
111
110
if var server = ( ( request as? GCDWebServerURLEncodedFormRequest ) ? . arguments) as? [ String : Any ] {
112
111
if ( server [ " ServerPort " ] != nil ) {
113
112
server [ " ServerPort " ] = UInt16 ( server [ " ServerPort " ] as! String )
114
- if ( Validator . integrity ( server ) && Validator . existAttributes ( server) ) { // validate
113
+ if ( Validator . profile ( server) ) { // validate
115
114
self . adapter. addServer ( server: server)
116
115
return GCDWebServerResponse ( ) ;
117
116
}
@@ -173,7 +172,7 @@ class HTTPUserProxy{
173
172
func addHandler_setMode( ) {
174
173
server. addHandler ( forMethod: " PUT " , path: " /mode " , request: GCDWebServerURLEncodedFormRequest . self, processBlock: { request in
175
174
if let mode_str = ( request as? GCDWebServerURLEncodedFormRequest ) ? . arguments [ " Mode " ] as? String {
176
- if let mode = APIAdapter . Mode ( rawValue: mode_str) {
175
+ if let mode = ProxyType ( rawValue: mode_str) {
177
176
self . adapter. setMode ( mode: mode) ;
178
177
179
178
return GCDWebServerResponse ( )
@@ -185,8 +184,6 @@ class HTTPUserProxy{
185
184
}
186
185
187
186
class APIAdapter {
188
- enum Mode : String { case auto= " auto " , global= " global " , manual= " manual " } ;
189
-
190
187
let SerMgr = ServerProfileManager . instance
191
188
let defaults = UserDefaults . standard
192
189
let appdeleget = NSApplication . shared. delegate as! AppDelegate
@@ -281,21 +278,21 @@ class APIAdapter {
281
278
self . appdeleget. updateServersMenu ( )
282
279
}
283
280
284
- func getMode( ) -> Mode {
281
+ func getMode( ) -> ProxyType {
285
282
let mode_str = self . defaults. string ( forKey: " ShadowsocksRunningMode " ) ;
286
283
switch mode_str {
287
- case " auto " : return . auto
284
+ case " auto " : return . pac
288
285
case " global " : return . global;
289
286
case " manual " : return . manual
290
287
default : fatalError ( )
291
288
}
292
289
}
293
290
294
- func setMode( mode: Mode ) {
291
+ func setMode( mode: ProxyType ) {
295
292
let defaults = UserDefaults . standard
296
293
297
294
switch mode{
298
- case . auto : defaults. setValue ( " auto " , forKey: " ShadowsocksRunningMode " )
295
+ case . pac : defaults. setValue ( " auto " , forKey: " ShadowsocksRunningMode " )
299
296
case . global: defaults. setValue ( " global " , forKey: " ShadowsocksRunningMode " )
300
297
case . manual: defaults. setValue ( " manual " , forKey: " ShadowsocksRunningMode " )
301
298
}
@@ -304,120 +301,3 @@ class APIAdapter {
304
301
self . appdeleget. applyConfig ( )
305
302
}
306
303
}
307
-
308
- class Validator {
309
- static func integrity( _ data: Dictionary < String , Any > ) -> Bool {
310
- if ( data [ " ServerHost " ] == nil || data [ " ServerPort " ] as? NSNumber == nil
311
- || data [ " Method " ] == nil || data [ " Password " ] == nil ) {
312
- return false ;
313
- }
314
- return true ;
315
- }
316
-
317
- static func existAttributes( _ server: Dictionary < String , Any > ) -> Bool {
318
- var result = true ;
319
-
320
- if ( server [ " ServerHost " ] != nil ) {
321
- result = result && serverHost ( server [ " ServerHost " ] as! String ) ;
322
- }
323
- if ( server [ " ServerPort " ] != nil ) {
324
- result = result && serverPort ( server [ " ServerPort " ] as! uint16 ) ;
325
- }
326
- if ( server [ " Method " ] != nil ) {
327
- result = result && method ( server [ " Method " ] as! String ) ;
328
- }
329
- if ( server [ " Password " ] != nil ) {
330
- result = result && password ( server [ " Password " ] as! String ) ;
331
- }
332
- if ( server [ " Remark " ] != nil ) {
333
- result = result && remark ( server [ " Remark " ] as! String ) ;
334
- }
335
- if ( server [ " Plugin " ] != nil ) {
336
- result = result && plugin ( server [ " Plugin " ] as! String ) ;
337
- }
338
- if ( server [ " PluginOptions " ] != nil ) {
339
- result = result && pluginOptions ( server [ " PluginOptions " ] as! String ) ;
340
- }
341
-
342
- return result;
343
- }
344
-
345
- static func serverHost( _ str: String ) -> Bool {
346
- return validateIpAddress ( str) || validateDomainName ( str) ;
347
- }
348
-
349
- static func serverPort( _ str: uint16 ) -> Bool {
350
- return true ;
351
- }
352
-
353
- static func method( _ str: String ) -> Bool {
354
- // Copy from PreferencesWindowController.swift
355
- // Better to make valid methods enumeration type.
356
- return [
357
- " aes-128-gcm " ,
358
- " aes-192-gcm " ,
359
- " aes-256-gcm " ,
360
- " aes-128-cfb " ,
361
- " aes-192-cfb " ,
362
- " aes-256-cfb " ,
363
- " aes-128-ctr " ,
364
- " aes-192-ctr " ,
365
- " aes-256-ctr " ,
366
- " camellia-128-cfb " ,
367
- " camellia-192-cfb " ,
368
- " camellia-256-cfb " ,
369
- " bf-cfb " ,
370
- " chacha20-ietf-poly1305 " ,
371
- " xchacha20-ietf-poly1305 " ,
372
- " salsa20 " ,
373
- " chacha20 " ,
374
- " chacha20-ietf " ,
375
- " rc4-md5 " ,
376
- ] . contains ( str) ;
377
- }
378
-
379
- static func password( _ str: String ) -> Bool {
380
- return true ;
381
- }
382
-
383
- static func remark( _ str: String ) -> Bool {
384
- return true ;
385
- }
386
-
387
- static func plugin( _ str: String ) -> Bool {
388
- return true ;
389
- }
390
-
391
- static func pluginOptions( _ str: String ) -> Bool {
392
- return true ;
393
- }
394
-
395
- // Copy from ServerProfile.swift
396
- private static func validateIpAddress( _ ipToValidate: String ) -> Bool {
397
-
398
- var sin = sockaddr_in ( )
399
- var sin6 = sockaddr_in6 ( )
400
-
401
- if ipToValidate. withCString ( { cstring in inet_pton ( AF_INET6, cstring, & sin6. sin6_addr) } ) == 1 {
402
- // IPv6 peer.
403
- return true
404
- }
405
- else if ipToValidate. withCString ( { cstring in inet_pton ( AF_INET, cstring, & sin. sin_addr) } ) == 1 {
406
- // IPv4 peer.
407
- return true
408
- }
409
-
410
- return false ;
411
- }
412
-
413
- // Copy from ServerProfile.swift
414
- private static func validateDomainName( _ value: String ) -> Bool {
415
- let validHostnameRegex = " ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9 \\ -]*[a-zA-Z0-9]) \\ .)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9 \\ -]*[A-Za-z0-9])$ "
416
-
417
- if ( value. range ( of: validHostnameRegex, options: . regularExpression) != nil ) {
418
- return true
419
- } else {
420
- return false
421
- }
422
- }
423
- }
0 commit comments