Move sysinfo and dyndns settings to new network view

This commit is contained in:
Johannes Zellner
2019-11-07 15:26:18 +01:00
parent 30769b5992
commit ff30d6d23a
6 changed files with 269 additions and 245 deletions

View File

@@ -10,6 +10,7 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat
$scope.config = Client.getConfig();
$scope.domains = [];
$scope.ready = false;
// currently, validation of wildcard with various provider is done server side
$scope.tlsProvider = [
{ name: 'Let\'s Encrypt Prod', value: 'letsencrypt-prod' },
@@ -34,36 +35,20 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat
{ name: 'No-op (only for development)', value: 'noop' }
];
$scope.prettyProviderName = function (domain) {
switch (domain.provider) {
case 'caas': return 'Managed Cloudron';
case 'route53': return 'AWS Route53';
case 'cloudflare': return 'Cloudflare';
case 'digitalocean': return 'DigitalOcean';
case 'gandi': return 'Gandi LiveDNS';
case 'namecom': return 'Name.com';
case 'namecheap': return 'Namecheap';
case 'gcdns': return 'Google Cloud';
case 'godaddy': return 'GoDaddy';
case 'manual': return 'Manual';
case 'wildcard': return 'Wildcard';
case 'noop': return 'No-op';
default: return 'Unknown';
}
};
// keep in sync with sysinfo.js
$scope.sysinfoProvider = [
{ name: 'Automatic (default)', value: 'generic' },
{ name: 'Static IP Address', value: 'fixed' },
{ name: 'Network Interface', value: 'network-interface' }
];
$scope.prettySysinfoProviderName = function (provider) {
switch (provider) {
case 'generic': return 'Automatic';
case 'fixed': return 'Static IP Address';
case 'network-interface': return 'Network Interface';
$scope.prettyProviderName = function (domain) {
switch (domain.provider) {
case 'caas': return 'Managed Cloudron';
case 'route53': return 'AWS Route53';
case 'cloudflare': return 'Cloudflare';
case 'digitalocean': return 'DigitalOcean';
case 'gandi': return 'Gandi LiveDNS';
case 'namecom': return 'Name.com';
case 'namecheap': return 'Namecheap';
case 'gcdns': return 'Google Cloud';
case 'godaddy': return 'GoDaddy';
case 'manual': return 'Manual';
case 'wildcard': return 'Wildcard';
case 'noop': return 'No-op';
default: return 'Unknown';
}
};
@@ -516,127 +501,20 @@ angular.module('Application').controller('DomainsController', ['$scope', '$locat
}
};
$scope.dyndnsConfigure = {
busy: false,
success: false,
error: '',
currentState: false,
enabled: false,
refresh: function () {
Client.getDynamicDnsConfig(function (error, enabled) {
if (error) return console.error(error);
$scope.dyndnsConfigure.currentState = enabled;
$scope.dyndnsConfigure.enabled = enabled;
});
},
submit: function () {
$scope.dyndnsConfigure.busy = true;
$scope.dyndnsConfigure.success = false;
$scope.dyndnsConfigure.error = '';
Client.setDynamicDnsConfig($scope.dyndnsConfigure.enabled, function (error) {
if (error) $scope.dyndnsConfigure.error = error.message;
else $scope.dyndnsConfigure.currentState = $scope.dyndnsConfigure.enabled;
$scope.dyndnsConfigure.busy = false;
$scope.dyndnsConfigure.success = true;
});
}
};
$scope.sysinfo = {
busy: false,
error: {},
provider: '',
ip: '',
ifname: '',
// configure dialog
newProvider: '',
newIp: '',
newIfname: '',
refresh: function () {
Client.getSysinfoConfig(function (error, result) {
if (error) return console.error(error);
$scope.sysinfo.provider = result.provider;
$scope.sysinfo.ip = result.ip || '';
$scope.sysinfo.ifname = result.ifname || '';
});
},
show: function () {
$scope.sysinfo.error = {};
$scope.sysinfo.newProvider = $scope.sysinfo.provider;
$scope.sysinfo.newIp = $scope.sysinfo.ip;
$scope.sysinfo.newIfname = $scope.sysinfo.ifname;
$('#sysinfoModal').modal('show');
},
submit: function () {
$scope.sysinfo.error = {};
$scope.sysinfo.busy = true;
var config = {
provider: $scope.sysinfo.newProvider
};
if (config.provider === 'fixed') {
config.ip = $scope.sysinfo.newIp;
} else if (config.provider === 'network-interface') {
config.ifname = $scope.sysinfo.newIfname;
}
Client.setSysinfoConfig(config, function (error) {
$scope.sysinfo.busy = false;
if (error && error.message.indexOf('ip') !== -1) {
$scope.sysinfo.error.ip = error.message;
$scope.sysinfoForm.$setPristine();
$scope.sysinfoForm.$setUntouched();
return;
} else if (error && (error.message.indexOf('interface') !== -1 || error.message.indexOf('IPv4') !== -1)) {
$scope.sysinfo.error.ifname = error.message;
$scope.sysinfoForm.$setPristine();
$scope.sysinfoForm.$setUntouched();
return;
} else if (error) {
console.error(error);
return;
}
$scope.sysinfo.refresh();
$('#sysinfoModal').modal('hide');
});
}
};
Client.onReady(function () {
refreshDomains(function (error) {
if (error) return console.error(error);
$scope.ready = true;
if ($scope.config.uiSpec.domains.dynamicDns) {
$scope.dyndnsConfigure.refresh();
}
});
$scope.renewCerts.checkStatus();
$scope.sysinfo.refresh();
});
document.getElementById('gcdnsKeyFileInput').onchange = readFileLocally($scope.domainConfigure.gcdnsKey, 'content', 'keyFileName');
document.getElementById('fallbackCertFileInput').onchange = readFileLocally($scope.domainConfigure.fallbackCert, 'certificateFile', 'certificateFileName');
document.getElementById('fallbackKeyFileInput').onchange = readFileLocally($scope.domainConfigure.fallbackCert, 'keyFile', 'keyFileName');
// setup all the dialog focus handling
['domainConfigureModal', 'domainRemoveModal'].forEach(function (id) {
$('#' + id).on('shown.bs.modal', function () {