old auth works again
This commit is contained in:
		
							parent
							
								
									a94f3d26eb
								
							
						
					
					
						commit
						5725d9f1e1
					
				@ -21,12 +21,14 @@ function _connect(state) {
 | 
			
		||||
  // being established initialy and allows the caller to use `.append` for the first token so
 | 
			
		||||
  // they can get a promise that will provide feedback about invalid tokens.
 | 
			
		||||
  var tokens = [];
 | 
			
		||||
  var auth;
 | 
			
		||||
  if (state.token) {
 | 
			
		||||
    tokens.push(state.token);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  var wstunneler;
 | 
			
		||||
  var authenticated = false;
 | 
			
		||||
  var authsent = false;
 | 
			
		||||
 | 
			
		||||
  var localclients = {};
 | 
			
		||||
  var pausedClients = [];
 | 
			
		||||
@ -171,6 +173,7 @@ function _connect(state) {
 | 
			
		||||
  function sendCommand(name) {
 | 
			
		||||
    var id = Math.ceil(1e9 * Math.random());
 | 
			
		||||
    var cmd = [id, name].concat(Array.prototype.slice.call(arguments, 1));
 | 
			
		||||
    if (state.debug) { console.log('[DEBUG] command sending', cmd); }
 | 
			
		||||
 | 
			
		||||
    wsHandlers.sendMessage(Packer.pack(null, cmd, 'control'));
 | 
			
		||||
    setTimeout(function () {
 | 
			
		||||
@ -196,7 +199,13 @@ function _connect(state) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function sendAllTokens() {
 | 
			
		||||
    if (auth) {
 | 
			
		||||
      authsent = true;
 | 
			
		||||
      sendCommand('auth', auth).catch(function (err) { console.error('1', err); });
 | 
			
		||||
    }
 | 
			
		||||
    tokens.forEach(function (jwtoken) {
 | 
			
		||||
      if (state.debug) { console.log('[DEBUG] send token'); }
 | 
			
		||||
      authsent = true;
 | 
			
		||||
      sendCommand('add_token', jwtoken)
 | 
			
		||||
        .catch(function (err) {
 | 
			
		||||
          console.error('failed re-adding token', jwtoken, 'after reconnect', err);
 | 
			
		||||
@ -267,8 +276,7 @@ function _connect(state) {
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (cmd[1] === 'hello') {
 | 
			
		||||
        // We only get the 'hello' event after the token has been validated
 | 
			
		||||
        authenticated = true;
 | 
			
		||||
        if (state.debug) { console.log('[DEBUG] hello received'); }
 | 
			
		||||
        sendAllTokens();
 | 
			
		||||
        if (connCallback) {
 | 
			
		||||
          connCallback();
 | 
			
		||||
@ -276,14 +284,12 @@ function _connect(state) {
 | 
			
		||||
        // TODO: handle the versions and commands provided by 'hello' - isn't super important
 | 
			
		||||
        // yet since there is only one version and set of commands.
 | 
			
		||||
        err = null;
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        err = { message: 'unknown command "'+cmd[1]+'"', code: 'E_UNKNOWN_COMMAND' };
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (cmd[1] === 'grant') {
 | 
			
		||||
      } else if (cmd[1] === 'grant') {
 | 
			
		||||
        authenticated = true;
 | 
			
		||||
        displayGrants(cmd[2]);
 | 
			
		||||
        return;
 | 
			
		||||
      } else {
 | 
			
		||||
        err = { message: 'unknown command "'+cmd[1]+'"', code: 'E_UNKNOWN_COMMAND' };
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      wsHandlers.sendMessage(Packer.pack(null, [-cmd[0], err], 'control'));
 | 
			
		||||
@ -478,24 +484,25 @@ function _connect(state) {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  function connect() {
 | 
			
		||||
    var auth;
 | 
			
		||||
    if (wstunneler) {
 | 
			
		||||
      console.warn('attempted to connect with connection already active');
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (tokens.length) {
 | 
			
		||||
      auth = 'access_token=' + tokens[0];
 | 
			
		||||
    } else if (state.config.email) {
 | 
			
		||||
      auth = 'subject=' + state.config.email;
 | 
			
		||||
      auth += '&subject_scheme=mailto';
 | 
			
		||||
      // TODO create domains list earlier
 | 
			
		||||
      auth += '&scope=' + Object.keys(state.config.servernames || {}).join(',');
 | 
			
		||||
    if (!tokens.length) {
 | 
			
		||||
      if (state.config.email) {
 | 
			
		||||
        auth = {
 | 
			
		||||
          subject: state.config.email
 | 
			
		||||
        , subject_scheme: 'mailto'
 | 
			
		||||
          // TODO create domains list earlier
 | 
			
		||||
        , scope: Object.keys(state.config.servernames || {}).join(',')
 | 
			
		||||
        };
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    timeoutId = null;
 | 
			
		||||
    var machine = Packer.create(packerHandlers);
 | 
			
		||||
 | 
			
		||||
    console.info("[connect] '" + state.relay + "'");
 | 
			
		||||
    var tunnelUrl = state.relay.replace(/\/$/, '') + '/?' + auth;
 | 
			
		||||
    var tunnelUrl = state.relay.replace(/\/$/, '') + '/'; // + auth;
 | 
			
		||||
    wstunneler = new WebSocket(tunnelUrl, { rejectUnauthorized: !state.insecure });
 | 
			
		||||
    wstunneler.on('open', wsHandlers.onOpen);
 | 
			
		||||
    wstunneler.on('close', wsHandlers.onClose);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user