add client otp
This commit is contained in:
		
							parent
							
								
									fe566b6e3b
								
							
						
					
					
						commit
						a9c7b62383
					
				| @ -102,7 +102,12 @@ function serveControls() { | ||||
| 
 | ||||
|       if (/\btelebit\.cloud\b/i.test(state.config.relay) && state.config.email && !state.token) { | ||||
|         dumpy.code = "AWAIT_AUTH"; | ||||
|         dumpy.message = "Check your email. You must verify your email address to activate this device."; | ||||
|         dumpy.message = [ | ||||
|           "Check your email." | ||||
|         , "You must verify your email address to activate this device." | ||||
|         , "" | ||||
|         , "    Login Code (if needed): " + state.otp | ||||
|         ].join('\n'); | ||||
|       } | ||||
| 
 | ||||
|       res.end(JSON.stringify(dumpy)); | ||||
| @ -465,6 +470,16 @@ function connectTunnel() { | ||||
|     tun.end(); | ||||
|     controlServer.close(); | ||||
|   } | ||||
|   // reverse 2FA otp
 | ||||
|   function leftpad(i, n, c) { | ||||
|     while (i.toString().length < (n || 4)) { | ||||
|       i = (c || '0') + i; | ||||
|     } | ||||
|     return i; | ||||
|   } | ||||
|   function getOtp() { | ||||
|     return leftpad(Math.random() * 9999, 4, '0'); | ||||
|   } | ||||
|   process.on('SIGINT', sigHandler); | ||||
|   state.net = state.net || { | ||||
|     createConnection: function (info, cb) { | ||||
| @ -477,6 +492,7 @@ function connectTunnel() { | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   state.otp = getOtp(); | ||||
|   state.greenlock = state.config.greenlock || {}; | ||||
|   state.sortingHat = state.config.sortingHat || path.resolve(__dirname, '..', 'lib/sorting-hat.js'); | ||||
| 
 | ||||
| @ -484,15 +500,19 @@ function connectTunnel() { | ||||
| 
 | ||||
|   if (state.config.email && !state.token) { | ||||
|     console.info(); | ||||
|     console.info('=================================='); | ||||
|     console.info('=          HEY! LISTEN!          ='); | ||||
|     console.info('=================================='); | ||||
|     console.info('=                                ='); | ||||
|     console.info('= 1. Open your email             ='); | ||||
|     console.info('= 2. Click the magic login link  ='); | ||||
|     console.info('= 3. Check back here for deets   ='); | ||||
|     console.info('=                                ='); | ||||
|     console.info('=================================='); | ||||
|     console.info('===================================='); | ||||
|     console.info('=           HEY! LISTEN!           ='); | ||||
|     console.info('===================================='); | ||||
|     console.info('=                                  ='); | ||||
|     console.info('= 1. Open your email               ='); | ||||
|     console.info('=                                  ='); | ||||
|     console.info('= 2. Click the magic login link    ='); | ||||
|     console.info('=    Login Code (if needed): 0000  ='.replace('0000', state.otp)); | ||||
|     console.info('=                                  ='); | ||||
|     console.info('= 3. Check back here for deets     ='); | ||||
|     console.info('=                                  ='); | ||||
|     console.info('=                                  ='); | ||||
|     console.info('===================================='); | ||||
|     console.info(); | ||||
|   } | ||||
|   // TODO Check undefined vs false for greenlock config
 | ||||
| @ -579,6 +599,7 @@ function connectTunnel() { | ||||
|   var tun = remote.connect({ | ||||
|     relay: state.relay | ||||
|   , config: state.config | ||||
|   , otp: state.otp | ||||
|   , sortingHat: state.sortingHat | ||||
|   , net: state.net | ||||
|   , insecure: state.insecure | ||||
|  | ||||
| @ -485,6 +485,7 @@ function _connect(state) { | ||||
|         , subject_scheme: 'mailto' | ||||
|           // TODO create domains list earlier
 | ||||
|         , scope: Object.keys(state.config.servernames || {}).join(',') | ||||
|         , otp: state.otp | ||||
|         , hostname: os.hostname() | ||||
|           // Used for User-Agent
 | ||||
|         , os_type: os.type() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user