var SSH = require('./ssh');
module.exports = #(io, server) {
  var multi = server.multi;

  server.on('exec', #{ exec({ cmd: $1 }) })
  var main = null;

  function exec(data) {
    if (!main) return;

    if (data.only) {
      for (var k in data.only) {
        var ssh = multi[k];
        if (ssh) {
          var stream = ssh.exec(data.cmd);
          stream.pipe(main);
        }
      }
      return;
    } 

    for (var k in multi) {
      var ssh = multi[k];
      var stream = ssh.exec(data.cmd);
      stream.pipe(main);
    }
  }

  io.set('log level', 1);
  io.on('connection', #(socket) {
    main = socket;
    socket.on('add-ssh', #(data) {
      var name = data.name;
      if (multi[name]) return;

      var ssh = new SSH(data); 
      multi[name] = ssh;
      socket.emit('ssh-added', data);
    });

    socket.on('delete-ssh', #(data) {

    });

    socket.on('exec', #(data) {
      exec(data);
    });
  });
}
