nano-tetra-modules/autossh/js/module.js

168 lines
4.1 KiB
JavaScript

// TODO: update known_hosts in gui on config save
registerController('autosshMainCtrl', ['$api', '$scope', function($api, $scope) {
$scope.isRunning = false
$scope.isEnabled = false
$scope.getStatus = function () {
apiCaller("status", null, function(response) {
if (response.success) {
$scope.isRunning = response.isRunning
$scope.isEnabled = response.isEnabled
}
})
}
$scope.getStatus()
$scope.startAutossh = function () {
apiCaller("startAutossh", null, handle($scope.getStatus))
}
$scope.stopAutossh = function () {
apiCaller("stopAutossh", null, handle($scope.getStatus))
}
$scope.enableAutossh = function () {
apiCaller("enableAutossh", null, handle($scope.getStatus))
}
$scope.disableAutossh = function () {
apiCaller("disableAutossh", null, handle($scope.getStatus))
}
function apiCaller (action, payload, cb) {
var options = { module: 'autossh', action: action }
if (payload) $.extend(options, payload)
$api.request(options, cb)
}
function handle (updaterFunction) {
return function (response) {
response.success ? updaterFunction() : console.error(response)
}
}
}])
// -
registerController('autosshConfCtrl', ['$rootScope','$api', '$scope', function($rootScope, $api, $scope) {
$scope.formData = {}
$scope.savingConf = false
$scope.readConf = function () {
apiCaller('readConf', null, function(response) {
if (response.success) {
$scope.formData = {
user: response.user,
host: response.host,
port: response.port,
rport: response.rport,
lport: response.lport
}
$rootScope.cmdThatRuns = [
'autossh -M 20000 -i ~/.ssh/id_rsa.autossh -N -T -R ',
$scope.formData.rport,
':localhost:',
$scope.formData.lport,
' ',
$scope.formData.user,
'@',
$scope.formData.host,
' -p ',
$scope.formData.port
].join('')
}
})
}
$scope.readConf()
$scope.writeConf = function () {
$scope.savingConf = true
apiCaller('writeConf', { data: $scope.formData }, function (response) {
$scope.savingConf = false
if (response.success) {
$scope.readConf()
} else {
console.error(response.error)
}
})
}
$scope.resetConf = function () {
apiCaller("resetConf", null, handle($scope.readConf))
}
function apiCaller (action, payload, cb) {
var options = { module: 'autossh', action: action }
if (payload) $.extend(options, payload)
$api.request(options, cb)
}
function handle (updaterFunction) {
return function (response) {
response.success ? updaterFunction() : console.error(response)
}
}
}])
// -
registerController('firstRunCtrl', ['$api', '$scope', function($api, $scope) {
$scope.pubKey = ""
$scope.knownHosts = ""
$scope.sshCopyCommand = ""
$scope.generatingKeys = false
$scope.getInfo = function () {
apiCaller('getInfo', null, function(response) {
if (response.success) {
$scope.pubKey = response.pubKey
$scope.knownHosts = response.knownHosts
$scope.keyExists = response.keyExists
}
})
}
$scope.getInfo()
apiCaller("readConf",null, function (resp) {
$scope.sshCopyCommand = "cat ~/.ssh/id_rsa.autossh.pub | \
ssh -p "+resp.port+" "+resp.user+"@"+resp.host+" \
'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'"
})
$scope.createSshKey = function () {
$scope.generatingKeys=true
apiCaller("createSshKey", null, function(response) {
$scope.generatingKeys=false
if (response.success) {
$scope.getInfo()
} else {
console.error(response)
}
})
}
$scope.deleteKey = function () {
apiCaller("deleteKey", null, handle($scope.getInfo))
}
function apiCaller (action, payload, cb) {
var options = { module: 'autossh', action: action }
if (payload) $.extend(options, payload)
$api.request(options, cb)
}
function handle (updaterFunction) {
return function (response) {
response.success ? updaterFunction() : console.error(response)
}
}
}])