show devices
This commit is contained in:
		
							parent
							
								
									168b2edfd6
								
							
						
					
					
						commit
						ec3f626560
					
				| @ -18,18 +18,15 @@ | ||||
|       <div v-if="hasAccount"> | ||||
|         <h1>Account</h1> | ||||
|         <button v-on:click.prevent.stop="logout()" type="click">Logout</button> | ||||
|         <form v-on:submit.prevent="challengeDns()"> | ||||
|           Add a custom domain: | ||||
|           <input v-model="newDomain" placeholder="example.com" type="text" required/> | ||||
|           <button type="submit">Next</button> | ||||
|         </form> | ||||
|         <!-- not yet --> | ||||
|         <!--form v-on:submit.prevent="challengeEmail()"> | ||||
|           Authorize another email: | ||||
|           <input v-model="newEmail" placeholder="jon@example.com" type="email" required/> | ||||
|           <button type="submit">Next</button> | ||||
|         </form--> | ||||
|         <h3>Claims</h3> | ||||
| 
 | ||||
|         <div v-if="claims.length"> | ||||
|           <h3>Pending Claims</h3> | ||||
|           <p>If your DNS host supports ANAME records, please use those instead of CNAMEs.</p> | ||||
|           <p>If CNAMEs are not supported, set an A record to {{ site.deviceDomainA }}.</p> | ||||
|           <ol> | ||||
| @ -43,12 +40,39 @@ | ||||
|               <button v-on:click.prevent="checkDns(claim)">Check</button> | ||||
|             </li> | ||||
|           </ol> | ||||
|         </div> | ||||
| 
 | ||||
|         <h3>Devices</h3> | ||||
|         <div v-if="!devices.length"> | ||||
|           You can add up to 5 devices: | ||||
|           <pre><code>curl -sf https://get.telebit.io/ | bash</code></pre> | ||||
|         </div> | ||||
|         <div v-if="devices.length"> | ||||
|           <ol> | ||||
|             <li v-for="device in devices"> | ||||
|               <span v-if="device.id">{{ device.id }}</span> {{ device.socketId }} | ||||
|               <ol> | ||||
|                 <li v-for="name in device.names">{{ name }}</li> | ||||
|               </ol> | ||||
|             </li> | ||||
|           </ol> | ||||
|         </div> | ||||
| 
 | ||||
|         <h3>Domains</h3> | ||||
|         <form v-on:submit.prevent="challengeDns()"> | ||||
|           Add a custom domain: | ||||
|           <input v-model="newDomain" placeholder="example.com" type="text" required/> | ||||
|           <button type="submit">Next</button> | ||||
|         </form> | ||||
|         <div v-if="domains.length"> | ||||
|           <ol> | ||||
|             <li v-for="domain in domains"> | ||||
|               <span v-if="domain.wildcard">*.</span>{{ domain.name }} <span v-if="domain.hostname">- {{domain.hostname}} ({{domain.os}} {{domain.arch}})</span> | ||||
|             </li> | ||||
|           </ol> | ||||
|         </div> | ||||
| 
 | ||||
|         <h3>Debug: Token</h3> | ||||
|         <pre><code v-text="token"></code></pre> | ||||
|       </div> | ||||
| 
 | ||||
|  | ||||
| @ -24,6 +24,7 @@ | ||||
|   var vueData = { | ||||
|     claims: [] | ||||
|   , domains: [] | ||||
|   , devices: [] | ||||
|   , newDomain: null | ||||
|   , newDomainWildcard: false | ||||
|   , newEmail: null | ||||
| @ -88,6 +89,7 @@ | ||||
|     //window.alert("TODO: show authorized devices, domains, and connectivity information");
 | ||||
|     vueData.hasAccount = true; | ||||
|     vueData.domains = data.domains; | ||||
|     vueData.devices = data.devices; | ||||
|     vueData.claims = data.claims; | ||||
|   } | ||||
|   function loadAccount(session) { | ||||
|  | ||||
| @ -19,6 +19,7 @@ var requestAsync = util.promisify(require('@coolaj86/urequest')); | ||||
| var mkdirpAsync = util.promisify(require('mkdirp')); | ||||
| var TRUSTED_ISSUERS = [ 'oauth3.org' ]; | ||||
| var DB = require('./db.js'); | ||||
| var Devices = require('../device-tracker'); | ||||
| var Claims = {}; | ||||
| Claims.publicize = function publicizeClaim(claim) { | ||||
|   if (!claim) { | ||||
| @ -779,6 +780,7 @@ app.get('/api/telebit.cloud/account', function (req, res) { | ||||
|         var domainsMap = {}; | ||||
|         var portsMap = {}; | ||||
|         var claimsMap = {}; | ||||
|         var devsMap = {}; | ||||
|         var result = JSON.parse(JSON.stringify(acc)); | ||||
|         result.domains.length = 0; | ||||
|         result.ports.length = 0; | ||||
| @ -806,6 +808,40 @@ app.get('/api/telebit.cloud/account', function (req, res) { | ||||
|         result.claims = Object.keys(claimsMap).map(function (k) { | ||||
|           return Claims.publicize(claimsMap[k]); | ||||
|         }); | ||||
| 
 | ||||
|         // TODO assign devices by public key, not domain name
 | ||||
|         result.domains.map(function (domain) { | ||||
|           console.log("[debug] Domain", domain); | ||||
|           var devs = Devices.list(req._state.deviceLists, domain.name); | ||||
|           console.log("[debug] Devs", devs.map(function (d) { return d.socketId; })); | ||||
|           if (!devs.length) { return null; } | ||||
|           devs.forEach(function (dev) { | ||||
|             // eventually we should implement so that a new connection
 | ||||
|             // with the same public key results in booting the prior session
 | ||||
|             // then we could use device.id instead of socketId
 | ||||
|             if (!devsMap[dev.socketId]) { | ||||
|               devsMap[dev.socketId] = { | ||||
|                 id: dev.id | ||||
|               , socketId: dev.socketId | ||||
|               , active: true | ||||
|               , names: [] | ||||
|               }; | ||||
|             } | ||||
|             devsMap[dev.socketId].names.push(domain.name); | ||||
|             return devsMap[dev.socketId]; | ||||
|           }); | ||||
|         }).filter(Boolean); | ||||
|         result.devices = Object.keys(devsMap).map(function (sid) { | ||||
|           return devsMap[sid]; | ||||
|         }); | ||||
| 
 | ||||
|         // Help the garbage collector out a little
 | ||||
|         domainsMap = null; | ||||
|         portsMap = null; | ||||
|         claimsMap = null; | ||||
|         devsMap = null; | ||||
| 
 | ||||
|         // The data is useful! Send it away!
 | ||||
|         return result; | ||||
|       }); | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user