1
1
/* globals $ */
2
2
3
3
import { EventEmitter } from 'events' ;
4
+ import { remote } from 'electron' ;
5
+ const remoteServers = remote . require ( './servers' ) ;
4
6
5
7
class Servers extends EventEmitter {
6
8
constructor ( ) {
@@ -61,6 +63,7 @@ class Servers extends EventEmitter {
61
63
}
62
64
63
65
this . _hosts = hosts ;
66
+ remoteServers . loadServers ( this . _hosts ) ;
64
67
this . emit ( 'loaded' ) ;
65
68
}
66
69
@@ -93,13 +96,21 @@ class Servers extends EventEmitter {
93
96
resolved = true ;
94
97
console . log ( 'HostUrl valid' , hostUrl ) ;
95
98
resolve ( ) ;
96
- } , function ( request ) {
99
+ } , function ( request ) {
100
+ if ( request . status === 401 ) {
101
+ let authHeader = request . getResponseHeader ( 'www-authenticate' ) ;
102
+ if ( authHeader && authHeader . toLowerCase ( ) . indexOf ( 'basic ' ) === 0 ) {
103
+ resolved = true ;
104
+ console . log ( 'HostUrl needs basic auth' , hostUrl ) ;
105
+ reject ( 'basic-auth' ) ;
106
+ }
107
+ }
97
108
if ( resolved ) {
98
109
return ;
99
110
}
100
111
resolved = true ;
101
112
console . log ( 'HostUrl invalid' , hostUrl ) ;
102
- reject ( request . status ) ;
113
+ reject ( 'invalid' ) ;
103
114
} ) ;
104
115
if ( timeout ) {
105
116
setTimeout ( function ( ) {
@@ -108,7 +119,7 @@ class Servers extends EventEmitter {
108
119
}
109
120
resolved = true ;
110
121
console . log ( 'Validating hostUrl TIMEOUT' , hostUrl ) ;
111
- reject ( ) ;
122
+ reject ( 'timeout' ) ;
112
123
} , timeout ) ;
113
124
}
114
125
} ) ;
@@ -123,26 +134,45 @@ class Servers extends EventEmitter {
123
134
addHost ( hostUrl ) {
124
135
var hosts = this . hosts ;
125
136
137
+ let match = hostUrl . match ( / ^ ( h t t p s ? : \/ \/ ) ( [ ^ : ] + ) : ( [ ^ @ ] + ) @ ( .+ ) $ / ) ;
138
+ let username ;
139
+ let password ;
140
+ let authUrl ;
141
+ if ( match ) {
142
+ authUrl = hostUrl ;
143
+ hostUrl = match [ 1 ] + match [ 4 ] ;
144
+ username = match [ 2 ] ;
145
+ password = match [ 3 ] ;
146
+ }
147
+
126
148
if ( this . hostExists ( hostUrl ) === true ) {
127
149
return false ;
128
150
}
129
151
130
152
hosts [ hostUrl ] = {
131
153
title : hostUrl ,
132
- url : hostUrl
154
+ url : hostUrl ,
155
+ authUrl : authUrl ,
156
+ username : username ,
157
+ password : password
133
158
} ;
134
159
this . hosts = hosts ;
135
160
161
+ remoteServers . loadServers ( this . hosts ) ;
162
+
136
163
this . emit ( 'host-added' , hostUrl ) ;
137
164
138
- return true ;
165
+ return hostUrl ;
139
166
}
140
167
141
168
removeHost ( hostUrl ) {
142
169
var hosts = this . hosts ;
143
170
if ( hosts [ hostUrl ] ) {
144
171
delete hosts [ hostUrl ] ;
145
172
this . hosts = hosts ;
173
+
174
+ remoteServers . loadServers ( this . hosts ) ;
175
+
146
176
if ( this . active === hostUrl ) {
147
177
this . clearActive ( ) ;
148
178
}
@@ -164,7 +194,7 @@ class Servers extends EventEmitter {
164
194
}
165
195
166
196
restoreActive ( ) {
167
- servers . setActive ( servers . active ) ;
197
+ this . setActive ( this . active ) ;
168
198
}
169
199
170
200
clearActive ( ) {
0 commit comments