@@ -21,7 +21,6 @@ const Path = require("path");
2121const Os = require ( "os" ) ;
2222const Http = require ( "http" ) ;
2323const Fs = require ( "fs" ) ;
24- const url_1 = require ( "url" ) ;
2524const Async = require ( "async" ) ;
2625const Util = require ( "util" ) ;
2726const Https = require ( "https" ) ;
@@ -44,6 +43,7 @@ const ErrorLogFile = Path.join(QTGateFolder, 'systemError.log');
4443const feedbackFilePath = Path . join ( QTGateFolder , '.feedBack.json' ) ;
4544const imapDataFileName = Path . join ( QTGateFolder , 'imapData.pem' ) ;
4645const sendMailAttach = Path . join ( QTGateFolder , 'sendmail' ) ;
46+ const myIpServerUrl = [ 'https://ipinfo.io/ip' , 'https://icanhazip.com/' , 'https://diagnostic.opendns.com/myip' , 'http://ipecho.net/plain' , 'https://www.trackip.net/ip' ] ;
4747const keyServer = 'https://pgp.mit.edu' ;
4848const QTGatePongReplyTime = 1000 * 30 ;
4949let mainWindow = null ;
@@ -88,9 +88,10 @@ const findPort = (port, CallBack) => {
8888} ;
8989const doUrlWithIp = ( url , dns , CallBack ) => {
9090 let ret = '' ;
91- const option = new url_1 . URL ( url ) ;
92- option . hostname = null ;
93- option . host = dns ;
91+ const option = {
92+ host : dns ,
93+ path : url ,
94+ } ;
9495 const res = res => {
9596 res . on ( 'data' , ( data ) => {
9697 ret += data . toString ( 'utf8' ) ;
@@ -102,14 +103,35 @@ const doUrlWithIp = (url, dns, CallBack) => {
102103 if ( / ^ h t t p s / i. test ( option . protocol ) )
103104 return Https . request ( option , res )
104105 . once ( 'error' , CallBack ) ;
105- return Http . get ( option , res )
106+ return Http . request ( option , res )
106107 . once ( 'error' , CallBack ) ;
107108} ;
108- const getMyLocalIpAddress = ( server , CallBack ) => {
109- saveLog ( JSON . stringify ( server ) ) ;
109+ const doUrl = ( url , CallBack ) => {
110+ let ret = '' ;
111+ const res = res => {
112+ res . on ( 'data' , ( data ) => {
113+ ret += data . toString ( 'utf8' ) ;
114+ } ) ;
115+ res . once ( 'end' , ( ) => {
116+ return CallBack ( null , ret ) ;
117+ } ) ;
118+ } ;
119+ if ( / ^ h t t p s / . test ( url ) )
120+ return Https . get ( url , res )
121+ . once ( 'error' , err => {
122+ console . log ( 'on err ' , err ) ;
123+ return CallBack ( err ) ;
124+ } ) ;
125+ return Http . get ( url , res )
126+ . once ( 'error' , err => {
127+ console . log ( 'on err ' , err ) ;
128+ return CallBack ( err ) ;
129+ } ) ;
130+ } ;
131+ const myIpServer = ( CallBack ) => {
110132 let ret = false ;
111- Async . each ( server , ( n , next ) => {
112- doUrlWithIp ( n . url , n . dnsName , ( err , data ) => {
133+ Async . each ( myIpServerUrl , ( n , next ) => {
134+ doUrl ( n , ( err , data ) => {
113135 if ( err || ! Net . isIPv4 ( data ) ) {
114136 return next ( ) ;
115137 }
@@ -119,8 +141,7 @@ const getMyLocalIpAddress = (server, CallBack) => {
119141 }
120142 } ) ;
121143 } , ( ) => {
122- if ( ! ret )
123- return CallBack ( new Error ( 'no IP' ) ) ;
144+ return CallBack ( new Error ( '' ) ) ;
124145 } ) ;
125146} ;
126147const getQTGateSign = ( _key ) => {
@@ -381,7 +402,6 @@ class localServer {
381402 this . proxyServerWindow = null ;
382403 this . connectCommand = null ;
383404 this . proxyServer = null ;
384- this . myIpServer = null ;
385405 this . ex_app = Express ( ) ;
386406 this . ex_app . set ( 'views' , Path . join ( __dirname , 'views' ) ) ;
387407 this . ex_app . set ( 'view engine' , 'pug' ) ;
@@ -581,6 +601,7 @@ class localServer {
581601 return CallBack ( 10 ) ;
582602 }
583603 }
604+ CallBack ( null ) ;
584605 return this . doingCheck ( id , imapData , socket ) ;
585606 } ) ;
586607 socket . on ( 'deleteImapAccount' , uuid => {
@@ -607,7 +628,6 @@ class localServer {
607628 return this . QTClass . request ( com , ( err , res ) => {
608629 saveLog ( JSON . stringify ( res . Args ) ) ;
609630 CallBack ( res . Args [ 0 ] ) ;
610- this . myIpServer = res . myIpServer ;
611631 saveLog ( `getAvaliableRegion ${ JSON . stringify ( res ) } ` ) ;
612632 // Have gateway connect!
613633 if ( res . Args [ 1 ] ) {
@@ -659,7 +679,7 @@ class localServer {
659679 this . config . keypair . publicKey = key ;
660680 this . config . keypair . verified = getQTGateSign ( key ) ;
661681 this . saveConfig ( ) ;
662- socket . emit ( 'newKeyPairCallBack ' , this . config . keypair ) ;
682+ socket . emit ( 'KeyPairActiveCallBack ' , this . config . keypair ) ;
663683 this . qtGateConnectEmitData . qtGateConnecting = 2 ;
664684 this . qtGateConnectEmitData . error = - 1 ;
665685 return socket . emit ( 'qtGateConnect' , this . qtGateConnectEmitData ) ;
@@ -714,7 +734,7 @@ class localServer {
714734 } ) ;
715735 } ;
716736 if ( cmd . connectType === 2 ) {
717- return getMyLocalIpAddress ( this . myIpServer , ( err , data ) => {
737+ return myIpServer ( ( err , data ) => {
718738 saveLog ( `getMyLocalIpAddress callback err [${ JSON . stringify ( err ) } ] data [${ JSON . stringify ( data ) } ]` ) ;
719739 cmd . imapData . clientIpAddress = data ;
720740 saveLog ( JSON . stringify ( cmd ) ) ;
@@ -903,6 +923,7 @@ class localServer {
903923 }
904924 return this . emitQTGateToClient ( socket , null ) ;
905925 }
926+ saveLog ( 'checkPemPassword' ) ;
906927 return Async . waterfall ( [
907928 ( next ) => {
908929 return this . getPbkdf2 ( password , next ) ;
@@ -1209,12 +1230,12 @@ class localServer {
12091230 if ( ! imapData . imapCheck || ! imapData . smtpCheck || ! imapData . imapTestResult )
12101231 return saveLog ( ` emitQTGateToClient STOP with !imapData.imapCheck || !imapData.smtpCheck || !imapData.imapTestResult` ) ;
12111232 const ret = {
1212- qtgateConnectImapAccount : this . config . QTGateConnectImapUuid ,
1233+ qtgateConnectImapAccount : imapData . uuid ,
12131234 qtGateConnecting : ! imapData . sendToQTGate ? 0 : 1 ,
12141235 isKeypairQtgateConform : this . config . keypair . verified ,
12151236 error : null
12161237 } ;
1217- saveLog ( `doConnect!` ) ;
1238+ saveLog ( `doConnect! ret = [ ${ JSON . stringify ( ret ) } ]\n imapData.uuid= [ ${ imapData . uuid } ] ` ) ;
12181239 const doConnect = ( ) => {
12191240 if ( ! this . imapDataPool . length )
12201241 return ;
@@ -1253,12 +1274,13 @@ class localServer {
12531274 doConnect ( ) ;
12541275 }
12551276 doingCheck ( id , _imapData , socket ) {
1256- saveLog ( `doingCheck` ) ;
1277+ saveLog ( `doingCheck id = [ ${ id } ] UUID [ ${ _imapData . uuid } ] ` ) ;
12571278 const imapData = this . imapDataPool [ this . addInImapData ( _imapData ) ] ;
12581279 imapData . imapCheck = imapData . smtpCheck = false ;
12591280 imapData . imapTestResult = 0 ;
12601281 this . saveImapData ( ) ;
12611282 return this . imapTest ( imapData , ( err , code ) => {
1283+ saveLog ( `imapTest finished! [${ id } ]` ) ;
12621284 socket . emit ( id + '-imap' , err ? err : null , code ) ;
12631285 imapData . imapTestResult = code ;
12641286 imapData . imapCheck = code > 0 ;
@@ -1269,6 +1291,7 @@ class localServer {
12691291 socket . emit ( id + '-smtp' , err1 ? err1 : null ) ;
12701292 imapData . smtpCheck = ! err1 ;
12711293 this . saveImapData ( ) ;
1294+ saveLog ( `smtpVerify finished! [${ id } ]` ) ;
12721295 if ( err1 )
12731296 return ;
12741297 this . emitQTGateToClient ( socket , _imapData . uuid ) ;
0 commit comments