Add dedicated-IP tier: IPRoyal DC/ISP reseller API, location picker, auto-provisioning

This commit is contained in:
drjones
2026-09-19 18:26:21 -07:00
parent 9d084373dc
commit 739921955e
9 changed files with 377 additions and 4 deletions

View File

@@ -52,6 +52,35 @@
</div>
</div>
{% if dedicated %}
<div class="card" style="margin-top:18px">
<h3>Dedicated IPs</h3>
{% for d in dedicated %}
<div style="border:1px solid var(--border);border-radius:8px;padding:12px;margin:10px 0">
<div style="display:flex;justify-content:space-between">
<strong style="color:var(--text)">{{ d.product_name }} · {{ d.location_name }}</strong>
<span style="color:{{ {'active':'var(--ok)','provisioning':'var(--warn)','pending_payment':'var(--warn)','failed':'var(--danger)','expired':'var(--muted)'}.get(d.status,'var(--muted)') }}">{{ d.status }}</span>
</div>
{% if d.status == 'active' %}
<div class="copy" style="margin-top:8px">
<input type="text" readonly value="{{ d.proxy_host }}:{{ d.proxy_port }}" onclick="this.select()">
<button onclick="copy(this.previousElementSibling)">Copy</button>
</div>
<div class="copy" style="margin-top:6px">
<input type="text" readonly value="{{ d.proxy_user }}:{{ d.proxy_pass }}" onclick="this.select()">
<button onclick="copy(this.previousElementSibling)">Copy</button>
</div>
{% elif d.status in ('provisioning','pending_payment') %}
<p class="muted" style="font-size:12px;margin:6px 0 0">Provisioning — refresh shortly for your IP.</p>
{% endif %}
</div>
{% endfor %}
<p class="muted" style="font-size:12px;margin:0"><a href="/dedicated">Order another dedicated IP →</a></p>
</div>
{% else %}
<p class="muted" style="margin-top:18px">No dedicated IPs yet — <a href="/dedicated">order one</a>.</p>
{% endif %}
<script>
function copy(el){ el.select(); document.execCommand('copy'); }
</script>