@@ -35,36 +35,74 @@ class HTTPUserProxy{
35
35
return GCDWebServerDataResponse ( jsonObject: [ " enable " : isOn] , contentType: " json " )
36
36
} )
37
37
38
- apiserver. addHandler ( forMethod: " POST " , path: " /toggle " , request: GCDWebServerRequest . self, processBlock: { request in
38
+ apiserver. addHandler ( forMethod: " POST " , path: " /status " , request: GCDWebServerURLEncodedFormRequest . self, processBlock: { request in
39
39
self . appdeleget. doToggleRunning ( showToast: false )
40
40
return GCDWebServerDataResponse ( jsonObject: [ " status " : 1 ] , contentType: " json " )
41
41
} )
42
42
43
- apiserver. addHandler ( forMethod: " GET " , path: " /servers " , request: GCDWebServerRequest . self, processBlock: { request in
43
+ apiserver. addHandler ( forMethod: " GET " , path: " /server/list " , request: GCDWebServerRequest . self, processBlock: { request in
44
44
45
45
var data = [ [ String: Any] ] ( )
46
46
47
47
for each in self . SerMgr. profiles{
48
- data. append ( [ " id " : each . uuid, " remark " : each . remark,
49
- " active " : self . SerMgr. activeProfileId == each . uuid ? 1 : 0 ] )
48
+ data. append ( each . toDictionary( ) )
50
49
}
51
50
52
51
return GCDWebServerDataResponse ( jsonObject: data, contentType: " json " )
53
52
} )
54
53
55
- apiserver. addHandler ( forMethod: " POST " , path: " /servers " , request: GCDWebServerURLEncodedFormRequest . self, processBlock: { request in
54
+ apiserver. addHandler ( forMethod: " GET " , path: " /server/current " , request: GCDWebServerRequest . self, processBlock: { request in
56
55
57
- let uuid = ( ( request as! GCDWebServerURLEncodedFormRequest ) . arguments [ " id " ] ) as? String
56
+ return GCDWebServerDataResponse ( jsonObject: [ " Id " : self . SerMgr. activeProfileId] , contentType: " json " )
57
+ } )
58
+
59
+ apiserver. addHandler ( forMethod: " POST " , path: " /server/current " , request: GCDWebServerURLEncodedFormRequest . self, processBlock: { request in
60
+
61
+ let uuid = ( ( request as! GCDWebServerURLEncodedFormRequest ) . arguments [ " Id " ] ) as? String
58
62
for each in self . SerMgr. profiles{
59
63
if ( each . uuid == uuid) {
60
64
self . appdeleget. changeServer ( uuid: uuid!)
61
65
return GCDWebServerDataResponse ( jsonObject: [ " status " : 1 ] , contentType: " json " )
62
-
66
+
63
67
}
64
68
}
65
69
return GCDWebServerDataResponse ( jsonObject: [ " status " : 0 ] , contentType: " json " )
66
70
} )
67
71
72
+ apiserver. addHandler ( forMethod: " POST " , path: " /server " , request: GCDWebServerURLEncodedFormRequest . self, processBlock: { request in
73
+
74
+ var form = ( ( request as! GCDWebServerURLEncodedFormRequest ) . arguments) as! [ String : Any ]
75
+ form [ " ServerPort " ] = Double ( form [ " ServerPort " ] as! String )
76
+
77
+ self . SerMgr. profiles. append ( ServerProfile . fromDictionary ( form) )
78
+ self . SerMgr. save ( )
79
+ self . appdeleget. updateServersMenu ( )
80
+
81
+ return GCDWebServerDataResponse ( jsonObject: [ " status " : 1 ] , contentType: " json " )
82
+ } )
83
+
84
+ apiserver. addHandler ( forMethod: " DELETE " , path: " /server " , request: GCDWebServerRequest . self
85
+ , processBlock: { request in
86
+
87
+ let uuid = ( request. query ? [ " Id " ] ) as! String
88
+
89
+ if ( uuid == self . SerMgr. activeProfileId) {
90
+ return GCDWebServerDataResponse ( jsonObject: [ " status " : 0 ] , contentType: " json " )
91
+ }
92
+
93
+ for i in 0 ..< self . SerMgr. profiles. count{
94
+ if ( self . SerMgr. profiles [ i] . uuid == uuid) {
95
+ self . SerMgr. profiles. remove ( at: i)
96
+
97
+ self . SerMgr. save ( )
98
+ self . appdeleget. updateServersMenu ( )
99
+
100
+ return GCDWebServerDataResponse ( jsonObject: [ " status " : 1 ] , contentType: " json " )
101
+ }
102
+ }
103
+
104
+ return GCDWebServerDataResponse ( jsonObject: [ " status " : 0 ] , contentType: " json " )
105
+ } )
68
106
69
107
apiserver. addHandler ( forMethod: " GET " , path: " /mode " , request: GCDWebServerRequest . self, processBlock: { request in
70
108
if let current = self . defaults. string ( forKey: " ShadowsocksRunningMode " ) {
@@ -79,7 +117,7 @@ class HTTPUserProxy{
79
117
if ( arg != " auto " && arg != " global " && arg != " manual " ) {
80
118
return GCDWebServerDataResponse ( jsonObject: [ " status " : 0 ] , contentType: " json " )
81
119
}
82
-
120
+
83
121
self . appdeleget. changeMode ( mode: arg!)
84
122
85
123
return GCDWebServerDataResponse ( jsonObject: [ " status " : 1 ] , contentType: " json " )
0 commit comments