4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
6
import dns from 'dns' ;
7
- import { GetWorkspaceAuthInfoResponse } from '../proto/typescript/ipc/v1/ipc' ;
8
- import { ILogService } from '../services/logService' ;
9
7
10
8
// This public key is safe to be public since we only use it to verify local-ssh connections.
11
9
const HOST_KEY = 'LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR0hBZ0VBTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ1QwcXg1eEJUVmc4TUVJbUUKZmN4RXRZN1dmQVVsM0JYQURBK2JYREsyaDZlaFJBTkNBQVJlQXo0RDVVZXpqZ0l1SXVOWXpVL3BCWDdlOXoxeApvZUN6UklqcGdCUHozS0dWRzZLYXV5TU5YUm95a21YSS9BNFpWaW9nd2Vjb0FUUjRUQ2FtWm1ScAotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==' ;
@@ -41,39 +39,40 @@ export interface DaemonOptions {
41
39
logFilePath : string ;
42
40
}
43
41
44
- export type WorkspaceAuthInfo = GetWorkspaceAuthInfoResponse ;
45
-
46
-
47
- export function isDNSPointToLocalhost ( logService : ILogService , domain : string ) : Promise < boolean > {
48
- return new Promise ( resolve => {
49
- dns . lookup ( domain , { all : true } , ( err , addresses ) => {
50
- if ( err ) {
51
- resolve ( false ) ;
52
- } else {
53
- for ( const addr of addresses ) {
54
- if ( ( addr . family === 4 && addr . address === '127.0.0.1' ) || ( addr . family === 6 && addr . address === '::1' ) ) {
55
- resolve ( true ) ;
56
- return ;
42
+ export function isDNSPointToLocalhost ( domain : string , timeout : number = 10000 ) : Promise < boolean > {
43
+ return Promise . race ( [
44
+ new Promise < boolean > ( resolve => {
45
+ dns . lookup ( domain , { all : true } , ( err , addresses ) => {
46
+ if ( err ) {
47
+ resolve ( false ) ;
48
+ } else {
49
+ for ( const addr of addresses ) {
50
+ if ( ( addr . family === 4 && addr . address === '127.0.0.1' ) || ( addr . family === 6 && addr . address === '::1' ) ) {
51
+ resolve ( true ) ;
52
+ return ;
53
+ }
57
54
}
55
+ resolve ( false ) ;
58
56
}
59
- logService . warn ( 'current domain is not point to localhost' , domain , addresses ) ;
60
- resolve ( false ) ;
61
- }
62
- } ) ;
63
- } ) ;
57
+ } ) ;
58
+ } ) ,
59
+ new Promise < boolean > ( resolve => setTimeout ( ( ) => resolve ( false ) , timeout ) )
60
+ ] ) ;
64
61
}
65
62
66
- export function isDomainConnectable ( logService : ILogService , domain : string ) : Promise < boolean > {
67
- return new Promise ( resolve => {
68
- dns . lookup ( domain , ( err , _address ) => {
69
- if ( err ) {
70
- logService . warn ( 'current domain is not connectable' , domain , err ) ;
71
- resolve ( false ) ;
72
- } else {
73
- resolve ( true ) ;
74
- }
75
- } ) ;
76
- } ) ;
63
+ export function isDomainConnectable ( domain : string , timeout : number = 10000 ) : Promise < boolean > {
64
+ return Promise . race ( [
65
+ new Promise < boolean > ( resolve => {
66
+ dns . lookup ( domain , ( err , _address ) => {
67
+ if ( err ) {
68
+ resolve ( false ) ;
69
+ } else {
70
+ resolve ( true ) ;
71
+ }
72
+ } ) ;
73
+ } ) ,
74
+ new Promise < boolean > ( resolve => setTimeout ( ( ) => resolve ( false ) , timeout ) )
75
+ ] ) ;
77
76
}
78
77
79
78
export const GitpodDefaultLocalhost = 'lssh.gitpod.io' ;
@@ -84,4 +83,4 @@ export function getRunningExtensionVersion() {
84
83
85
84
export function getDaemonVersion ( ) {
86
85
return process . env . DAEMON_VERSION ?? '0.0.1' ;
87
- }
86
+ }
0 commit comments