diff --git a/src/js/client.js b/src/js/client.js index 1c417d8bb..b61247afc 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -867,11 +867,12 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.restore = function (backupConfig, backupId, version, callback) { + Client.prototype.restore = function (backupConfig, backupId, version, sysinfoConfig, callback) { var data = { backupConfig: backupConfig, backupId: backupId, - version: version + version: version, + sysinfoConfig: sysinfoConfig }; post('/api/v1/cloudron/restore', data, null, function (error, data, status) { @@ -1194,14 +1195,15 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.setup = function (domain, zoneName, provider, config, tlsConfig, callback) { + Client.prototype.setup = function (domain, zoneName, provider, config, tlsConfig, sysinfoConfig, callback) { var data = { dnsConfig: { domain: domain, zoneName: zoneName, provider: provider, config: config, - tlsConfig: tlsConfig + tlsConfig: tlsConfig, + sysinfoConfig: sysinfoConfig } }; diff --git a/src/js/restore.js b/src/js/restore.js index 834c3f398..c957fa08a 100644 --- a/src/js/restore.js +++ b/src/js/restore.js @@ -5,7 +5,7 @@ /* global $ */ // create main application module -var app = angular.module('Application', ['angular-md5', 'ui-notification']); +var app = angular.module('Application', ['angular-md5', 'ui-notification', 'ui.bootstrap']); app.filter('zoneName', function () { return function (domain) { @@ -33,6 +33,28 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien $scope.instanceId = ''; $scope.acceptSelfSignedCerts = false; $scope.format = 'tgz'; + $scope.advancedVisible = false; + + $scope.sysinfo = { + provider: 'generic', + ip: '', + ifname: '' + }; + + $scope.sysinfoProvider = [ + { name: 'Public IP', value: 'generic' }, + { name: 'Static IP Address', value: 'fixed' }, + { name: 'Network Interface', value: 'network-interface' } + ]; + + $scope.prettySysinfoProviderName = function (provider) { + switch (provider) { + case 'generic': return 'Public IP'; + case 'fixed': return 'Static IP Address'; + case 'network-interface': return 'Network Interface'; + default: return 'Unknown'; + } + }; // List is from http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region $scope.s3Regions = [ @@ -187,7 +209,16 @@ app.controller('RestoreController', ['$scope', 'Client', function ($scope, Clien return; } - Client.restore(backupConfig, $scope.backupId.replace(/\.tar\.gz(\.enc)?$/, ''), version ? version[1] : '', function (error) { + var sysinfoConfig = { + provider: $scope.sysinfo.provider + }; + if ($scope.sysinfo.provider === 'fixed') { + sysinfoConfig.ip = $scope.sysinfo.ip; + } else if ($scope.sysinfo.provider === 'network-interface') { + sysinfoConfig.ip = $scope.sysinfo.ifname; + } + + Client.restore(backupConfig, $scope.backupId.replace(/\.tar\.gz(\.enc)?$/, ''), version ? version[1] : '', sysinfoConfig, function (error) { $scope.busy = false; if (error) { diff --git a/src/js/setupdns.js b/src/js/setupdns.js index 7fed7324d..83ce7d232 100644 --- a/src/js/setupdns.js +++ b/src/js/setupdns.js @@ -24,6 +24,8 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f $scope.isDomain = false; $scope.isSubdomain = false; $scope.hyphenatedSubdomains = false; + $scope.advancedVisible = false; + $scope.tlsProvider = [ { name: 'Let\'s Encrypt Prod', value: 'letsencrypt-prod' }, { name: 'Let\'s Encrypt Prod - Wildcard', value: 'letsencrypt-prod-wildcard' }, @@ -32,6 +34,27 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f { name: 'Self-Signed', value: 'fallback' }, // this is not 'Custom' because we don't allow user to upload certs during setup phase ]; + $scope.sysinfo = { + provider: 'generic', + ip: '', + ifname: '' + }; + + $scope.sysinfoProvider = [ + { name: 'Public IP', value: 'generic' }, + { name: 'Static IP Address', value: 'fixed' }, + { name: 'Network Interface', value: 'network-interface' } + ]; + + $scope.prettySysinfoProviderName = function (provider) { + switch (provider) { + case 'generic': return 'Public IP'; + case 'fixed': return 'Static IP Address'; + case 'network-interface': return 'Network Interface'; + default: return 'Unknown'; + } + }; + $scope.needsPort80 = function (dnsProvider, tlsProvider) { return ((dnsProvider === 'manual' || dnsProvider === 'noop' || dnsProvider === 'wildcard') && (tlsProvider === 'letsencrypt-prod' || tlsProvider === 'letsencrypt-staging')); @@ -69,7 +92,6 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f ]; $scope.dnsCredentials = { busy: false, - advancedVisible: false, domain: '', accessKeyId: '', secretAccessKey: '', @@ -179,7 +201,16 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f tlsConfig.wildcard = true; } - Client.setup($scope.dnsCredentials.domain, $scope.dnsCredentials.zoneName, provider, data, tlsConfig, function (error) { + var sysinfoConfig = { + provider: $scope.sysinfo.provider + }; + if ($scope.sysinfo.provider === 'fixed') { + sysinfoConfig.ip = $scope.sysinfo.ip; + } else if ($scope.sysinfo.provider === 'network-interface') { + sysinfoConfig.ip = $scope.sysinfo.ifname; + } + + Client.setup($scope.dnsCredentials.domain, $scope.dnsCredentials.zoneName, provider, data, tlsConfig, sysinfoConfig, function (error) { if (error && error.statusCode === 401) { $scope.dnsCredentials.busy = false; $scope.error.ami = 'Wrong instance id provided.'; diff --git a/src/restore.html b/src/restore.html index 3fe5bc270..0487470ea 100644 --- a/src/restore.html +++ b/src/restore.html @@ -30,6 +30,9 @@ + + + @@ -164,10 +167,37 @@ + +
+
+ + +
+ + +
+ + +

{{ error.ip }}

+
+ + +
+ + +

{{ error.ifname }}

+
+
+ +
+ Advanced settings... + Hide Advanced settings +

+
diff --git a/src/setupdns.html b/src/setupdns.html index d37027369..a63f50b17 100644 --- a/src/setupdns.html +++ b/src/setupdns.html @@ -180,8 +180,7 @@

Let's Encrypt requires your server to be reachable on port 80


-
- +
+ +
+ + +
+ + +
+ + +

{{ error.ip }}

+
+ + +
+ + +

{{ error.ifname }}

+
diff --git a/src/views/network.html b/src/views/network.html index cf96a9052..8240d152d 100644 --- a/src/views/network.html +++ b/src/views/network.html @@ -9,7 +9,7 @@
- +