diff --git a/dashboard/src/views/SetupView.vue b/dashboard/src/views/SetupView.vue index ad6aced14..1e104840b 100644 --- a/dashboard/src/views/SetupView.vue +++ b/dashboard/src/views/SetupView.vue @@ -129,11 +129,33 @@ function onCopyToClipboard(value) { onMounted(async () => { const search = decodeURIComponent(window.location.search).slice(1).split('&').map(function (item) { return item.split('='); }).reduce(function (o, k) { o[k[0]] = k[1]; return o; }, {}); - const [error, result] = await provisionModel.status(); + let [error, result] = await provisionModel.status(); if (error) return console.error(error); if (redirectIfNeeded(result, 'setup')) return; // redirected to some other view... + if (result.setup.active) return waitForDnsSetup(); + formError.value.generic = result.setup.errorMessage; // show any previous error + + if (result.provider === 'digitalocean' || result.provider === 'digitalocean-mp') { + provider.value = 'digitalocean'; + } else if (result.provider === 'linode' || result.provider === 'linode-oneclick' || result.provider === 'linode-stackscript') { + provider.value = 'linode'; + } else if (result.provider === 'vultr' || result.provider === 'vultr-mp') { + provider.value = 'vultr'; + } else if (result.provider === 'gce') { + provider.value = 'gcdns'; + } else if (result.provider === 'ami') { + // aws marketplace made a policy change that they one cannot provide route53 IAM credentials + provider.value = 'wildcard'; + } + + [error, result] = await provisionModel.detectIp(); + if (error) return console.error(error); // detectIp is not supposed to error + + ipv4Provider.value = result.ipv4 ? 'generic' : 'noop'; + ipv6Provider.value = result.ipv6 ? 'generic' : 'noop'; + instanceId.value = search.instanceId; setupToken.value = search.setupToken;