/* WSSH Javascript Client Usage: var client = new WSSHClient(); client.connect({ // Connection and authentication parameters username: 'root', hostname: 'localhost', authentication_method: 'password', // can either be password or private_key password: 'secretpassword', // do not provide when using private_key key_passphrase: 'secretpassphrase', // *may* be provided if the private_key is encrypted // Callbacks onError: function(error) { // Called upon an error console.error(error); }, onConnect: function() { // Called after a successful connection to the server console.debug('Connected!'); client.send('ls\n'); // You can send data back to the server by using WSSHClient.send() }, onClose: function() { // Called when the remote closes the connection console.debug('Connection Reset By Peer'); }, onData: function(data) { // Called when data is received from the server console.debug('Received: ' + data); } }); */ function WSSHClient() { } WSSHClient.prototype._generateEndpoint = function(options) { console.log(options); if (window.location.protocol == 'https:') { var protocol = 'wss://'; } else { var protocol = 'ws://'; } var endpoint = protocol + window.location.host + ':8080' + '/terminal'; return endpoint; }; WSSHClient.prototype.connect = function(options) { var endpoint = this._generateEndpoint(options); if (window.WebSocket) { this._connection = new WebSocket(endpoint); } else if (window.MozWebSocket) { this._connection = MozWebSocket(endpoint); } else { options.onError('WebSocket Not Supported'); return ; } this._connection.onopen = function() { options.onConnect(); }; this._connection.onmessage = function (evt) { var data = JSON.parse(evt.data.toString()); if (data.error !== undefined) { options.onError(data.error); } else { options.onData(data.data); } }; this._connection.onclose = function(evt) { options.onClose(); }; }; WSSHClient.prototype.send = function(data) { this._connection.send(JSON.stringify({'data': data})); };