UI improvements on system settings

This commit is contained in:
Pinga 2023-11-15 16:57:35 +02:00
parent c3427aaa9c
commit f2edce8f8b
5 changed files with 219 additions and 442 deletions

View file

@ -2,15 +2,31 @@
namespace App\Controllers; namespace App\Controllers;
use App\Models\Tickets;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
class SystemController extends Controller class SystemController extends Controller
{ {
public function settings(Request $request, Response $response) public function registry(Request $request, Response $response)
{ {
return view($response,'admin/system/settings.twig'); if ($_SESSION["auth_roles"] != 0) {
return $response->withHeader('Location', '/dashboard')->withStatus(302);
}
$db = $this->container->get('db');
$tlds = $db->select("SELECT id, tld, idn_table, secure FROM domain_tld");
foreach ($tlds as $key => $tld) {
// Count the domains for each TLD
$domainCount = $db->select("SELECT COUNT(name) FROM domain WHERE tldid = ?", [$tld['id']]);
// Add the domain count to the TLD array
$tlds[$key]['domain_count'] = $domainCount[0]['COUNT(name)'];
}
return view($response,'admin/system/registry.twig', [
'tlds' => $tlds,
]);
} }
} }

View file

@ -0,0 +1,184 @@
{% extends "layouts/app.twig" %}
{% block title %}{{ __('Registry Configuration') }}{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
{{ __('Overview') }}
</div>
<h2 class="page-title">
{{ __('Registry Configuration') }}
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="col-12">
<div class="card">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs nav-fill" data-bs-toggle="tabs">
<li class="nav-item">
<a href="#tabs-general" class="nav-link active" data-bs-toggle="tab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /><path d="M6 4v4" /><path d="M6 12v8" /><path d="M10 16a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /><path d="M12 4v10" /><path d="M12 18v2" /><path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /><path d="M18 4v1" /><path d="M18 9v11" /></svg>
General</a>
</li>
<li class="nav-item">
<a href="#tabs-tlds" class="nav-link" data-bs-toggle="tab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18.333 2c1.96 0 3.56 1.537 3.662 3.472l.005 .195v12.666c0 1.96 -1.537 3.56 -3.472 3.662l-.195 .005h-12.666a3.667 3.667 0 0 1 -3.662 -3.472l-.005 -.195v-12.666c0 -1.96 1.537 -3.56 3.472 -3.662l.195 -.005h12.666zm-6.333 8.5a1.5 1.5 0 1 0 0 3a1.5 1.5 0 0 0 0 -3z" stroke-width="0" fill="currentColor" /></svg>
TLDs</a>
</li>
<li class="nav-item">
<a href="#tabs-dns" class="nav-link" data-bs-toggle="tab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 20h7" /><path d="M14 20h7" /><path d="M10 20a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" /><path d="M12 16v2" /><path d="M8 16.004h-1.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 1.927 -1.551 3.487 -3.465 3.487h-2.535" /></svg>
DNS</a>
</li>
<li class="nav-item">
<a href="#tabs-automation" class="nav-link" data-bs-toggle="tab">
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M6 4m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z" /><path d="M12 2v2" /><path d="M9 12v9" /><path d="M15 12v9" /><path d="M5 16l4 -2" /><path d="M15 14l4 2" /><path d="M9 18h6" /><path d="M10 8v.01" /><path d="M14 8v.01" /></svg>
Automation</a>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane active show" id="tabs-general">
<h5 class="mt-3">General Settings</h5>
<div class="row">
<div class="col-md-6">
<!-- Registry Operator's Details -->
<div class="mb-3">
<label for="registryOperator" class="form-label">Registry Operator Name</label>
<input type="text" class="form-control" id="registryOperator" placeholder="Enter registry operator's name">
<div class="form-text">The official name of the organization operating the registry.</div>
</div>
<!-- Contact Information -->
<div class="mb-3">
<label for="contactEmail" class="form-label">Contact Email</label>
<input type="email" class="form-control" id="contactEmail" placeholder="Enter contact email">
<div class="form-text">The email address for general inquiries to the registry.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</div>
<div class="col-md-6">
<!-- Authentication Mechanisms -->
<div class="mb-3">
<label for="authenticationMechanism" class="form-label">Authentication Mechanism</label>
<select class="form-select" id="authenticationMechanism">
<option selected>Choose...</option>
<option value="password">Password-based</option>
<option value="2fa">Two-factor Authentication</option>
<option value="certificate">Certificate-based</option>
</select>
<div class="form-text">Choose the primary method of authentication for accessing the registry system.</div>
</div>
<!-- Registry Handle -->
<div class="mb-3">
<label for="registryHandle" class="form-label">Registry Handle</label>
<input type="text" class="form-control" id="registryHandle" placeholder="Enter registry handle">
<div class="form-text">A unique identifier for the registry which will be appended to each object handle.</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tabs-tlds">
<div class="d-flex justify-content-between align-items-center">
<h5 class="mt-3">TLD Settings</h5>
<a href="/tld/create" class="btn btn-secondary">Add New TLD</a>
</div>
{% if tlds %}
{% for tld in tlds %}
<div class="card card-md mb-3">
<div class="card-body text-center">
<div class="text-uppercase text-secondary font-weight-medium">Number of Domains: {{ tld.domain_count }}</div>
<div class="display-5 fw-bold my-3">{{ tld.tld }}</div>
<ul class="list-unstyled lh-lg">
{% if tld.secure == 1 %}
<li>
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Signed with DNSSEC
</li>
{% else %}
<li>
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-warning" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18 6l-12 12" /><path d="M6 6l12 12" /></svg>
Not signed with DNSSEC
</li>
{% endif %}
<li>
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-info" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /><path d="M12 9h.01" /><path d="M11 12h1v4h1" /></svg>
Supports Standard Latin Characters Only
</li>
</ul>
<div class="text-center mt-4">
<a href="/pricing/{{ tld.tld | slice(1) | lower }}" class="btn btn-outline-success">Update TLD Pricing</a>
<a href="/reserved/{{ tld.tld | slice(1) | lower }}" class="btn btn-outline-info">Manage Reserved Names</a>
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
<div class="tab-pane" id="tabs-dns">
<h5 class="mt-3">DNS Settings</h5>
<form>
<!-- DNS Server Settings -->
<div class="mb-3">
<label for="primaryDns" class="form-label">Primary DNS Server</label>
<input type="text" class="form-control" id="primaryDns" placeholder="Enter primary DNS server address">
<div class="form-text">The address of the primary DNS server for the registry.</div>
</div>
<div class="mb-3">
<label for="secondaryDns" class="form-label">Secondary DNS Server</label>
<input type="text" class="form-control" id="secondaryDns" placeholder="Enter secondary DNS server address">
<div class="form-text">The address of the secondary DNS server for redundancy.</div>
</div>
<div class="mb-3">
<label for="soaEmail" class="form-label">SOA Email</label>
<input type="email" class="form-control" id="soaEmail" placeholder="Enter email address for SOA record">
<div class="form-text">The email address to be used in the SOA (Start of Authority) record for DNS zones.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
<div class="tab-pane" id="tabs-automation">
<h4>Automation tab</h4>
<div>Donec ac vitae diam amet vel leo egestas consequat rhoncus in luctus amet, facilisi sit mauris accumsan nibh habitant senectus</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://namingo.org" target="_blank" class="link-secondary">Namingo</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -1,402 +0,0 @@
{% extends "layouts/app.twig" %}
{% block title %}{{ __('System Configuration') }}{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
</div>
<h2 class="page-title">
{{ __('System Configuration') }}
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="col-12">
<div class="card">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs nav-fill" data-bs-toggle="tabs">
<li class="nav-item">
<a href="#tabs-general" class="nav-link active" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/home -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l-2 0l9 -9l9 9l-2 0" /><path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" /><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" /></svg>
General</a>
</li>
<li class="nav-item">
<a href="#tabs-security" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/user -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0" /><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2" /></svg>
Security</a>
</li>
<li class="nav-item">
<a href="#tabs-whois" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/activity -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 12h4l3 8l4 -16l3 8h4" /></svg>
WHOIS</a>
</li>
<li class="nav-item">
<a href="#tabs-epp" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/home -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l-2 0l9 -9l9 9l-2 0" /><path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" /><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" /></svg>
EPP</a>
</li>
<li class="nav-item">
<a href="#tabs-rdap" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/user -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0" /><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2" /></svg>
RDAP</a>
</li>
<li class="nav-item">
<a href="#tabs-dns" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/activity -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 12h4l3 8l4 -16l3 8h4" /></svg>
DNS</a>
</li>
<li class="nav-item">
<a href="#tabs-database" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/home -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l-2 0l9 -9l9 9l-2 0" /><path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" /><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6" /></svg>
Database</a>
</li>
<li class="nav-item">
<a href="#tabs-automation" class="nav-link" data-bs-toggle="tab"><!-- Download SVG icon from http://tabler-icons.io/i/user -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0" /><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2" /></svg>
Automation</a>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane active show" id="tabs-general">
<h5 class="mt-3">General Settings</h5>
<form>
<!-- Registry Operator's Details -->
<div class="mb-3">
<label for="registryOperator" class="form-label">Registry Operator Name</label>
<input type="text" class="form-control" id="registryOperator" placeholder="Enter registry operator's name">
<div class="form-text">The official name of the organization operating the registry.</div>
</div>
<!-- Default Language -->
<div class="mb-3">
<label for="defaultLanguage" class="form-label">Default Language</label>
<select class="form-select" id="defaultLanguage">
<option selected>Choose...</option>
<option value="en">English</option>
<option value="es">Spanish</option>
<!-- Add more languages as options here -->
</select>
<div class="form-text">The primary language used in the registry system interfaces and communications.</div>
</div>
<!-- Contact Information -->
<div class="mb-3">
<label for="contactEmail" class="form-label">Contact Email</label>
<input type="email" class="form-control" id="contactEmail" placeholder="Enter contact email">
<div class="form-text">The email address for general inquiries to the registry.</div>
</div>
<!-- Operational Parameters -->
<h6 class="mt-4 mb-2">Operational Parameters</h6>
<div class="mb-3">
<label for="registrationPeriod" class="form-label">Domain Registration Period (years)</label>
<input type="number" class="form-control" id="registrationPeriod" placeholder="Enter default registration period">
<div class="form-text">The standard length of time for domain registrations.</div>
</div>
<!-- Pricing -->
<div class="mb-3">
<label for="registrationPrice" class="form-label">Domain Registration Price (USD)</label>
<input type="text" class="form-control" id="registrationPrice" placeholder="Enter price">
<div class="form-text">The base cost for registering a domain for the default period.</div>
</div>
<!-- Registry Handle -->
<div class="mb-3">
<label for="registryHandle" class="form-label">Registry Handle</label>
<input type="text" class="form-control" id="registryHandle" placeholder="Enter registry handle">
<div class="form-text">A unique identifier for the registry which will be appended to each object handle.</div>
</div>
<!-- Reserved Names Management Button -->
<div class="mb-3">
<button type="button" class="btn btn-secondary">Manage Reserved Names</button>
<div class="form-text">Access the management interface for reserved domain names.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
<div class="tab-pane" id="tabs-security">
<h5 class="mt-3">Security Settings</h5>
<form>
<!-- Access Control -->
<div class="mb-3">
<label for="accessControl" class="form-label">Access Control Policy</label>
<select class="form-select" id="accessControl">
<option selected>Choose...</option>
<option value="whitelist">Whitelist</option>
<option value="blacklist">Blacklist</option>
</select>
<div class="form-text">Select how you control access to the registry system. 'Whitelist' allows specific entities, while 'Blacklist' blocks them.</div>
</div>
<!-- User Roles -->
<div class="mb-3">
<label for="userRoles" class="form-label">User Role Management</label>
<button type="button" class="btn btn-secondary">Manage User Roles</button>
<div class="form-text">Define and manage user roles and permissions within the registry system.</div>
</div>
<!-- Authentication Mechanisms -->
<div class="mb-3">
<label for="authenticationMechanism" class="form-label">Authentication Mechanism</label>
<select class="form-select" id="authenticationMechanism">
<option selected>Choose...</option>
<option value="password">Password-based</option>
<option value="2fa">Two-factor Authentication</option>
<option value="certificate">Certificate-based</option>
</select>
<div class="form-text">Choose the primary method of authentication for accessing the registry system.</div>
</div>
<!-- Logging Settings -->
<div class="mb-3">
<label for="loggingLevel" class="form-label">Logging Level</label>
<select class="form-select" id="loggingLevel">
<option selected>Choose...</option>
<option value="info">Info</option>
<option value="warning">Warning</option>
<option value="error">Error</option>
<option value="debug">Debug</option>
</select>
<div class="form-text">Determine the level of detail for system logs.</div>
</div>
<!-- Encryption Options -->
<div class="mb-3">
<label for="encryptionOptions" class="form-label">Data Encryption</label>
<select class="form-select" id="encryptionOptions">
<option selected>Choose...</option>
<option value="at-rest">Encryption at Rest</option>
<option value="in-transit">Encryption in Transit</option>
<option value="both">Both</option>
</select>
<div class="form-text">Select whether to encrypt data at rest, in transit, or both.</div>
</div>
<!-- Additional Security Options -->
<h6 class="mt-4 mb-2">Additional Security Options</h6>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="firewall" id="firewallEnabled">
<label class="form-check-label" for="firewallEnabled">
Enable Firewall
</label>
</div>
<div class="form-text">Toggle to enable or disable the firewall protection.</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="antiDdos" id="antiDdosEnabled">
<label class="form-check-label" for="antiDdosEnabled">
Enable Anti-DDoS Measures
</label>
</div>
<div class="form-text">Activate measures to protect against Distributed Denial of Service attacks.</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="rateLimit" id="rateLimitingEnabled">
<label class="form-check-label" for="rateLimitingEnabled">
Enable Rate Limiting
</label>
</div>
<div class="form-text">Implement rate limiting to prevent abuse of the registry system's interfaces.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
<div class="tab-pane" id="tabs-whois">
<h4>WHOIS tab</h4>
<div>Would allow configuration of WHOIS server settings, privacy options, data display preferences, query rate limits, and other WHOIS-specific settings.</div>
</div>
<div class="tab-pane show" id="tabs-epp">
<h4>EPP tab</h4>
<div>For configuring EPP server details, including command settings, extension support, and client management options.</div>
</div>
<div class="tab-pane" id="tabs-rdap">
<h4>RDAP tab</h4>
<div>Could be used to manage RDAP service parameters, output format settings, bootstrap configurations, and search capabilities.</div>
</div>
<div class="tab-pane" id="tabs-dns">
<h5 class="mt-3">DNS Settings</h5>
<form>
<!-- DNS Server Settings -->
<div class="mb-3">
<label for="primaryDns" class="form-label">Primary DNS Server</label>
<input type="text" class="form-control" id="primaryDns" placeholder="Enter primary DNS server address">
<div class="form-text">The address of the primary DNS server for the registry.</div>
</div>
<div class="mb-3">
<label for="secondaryDns" class="form-label">Secondary DNS Server</label>
<input type="text" class="form-control" id="secondaryDns" placeholder="Enter secondary DNS server address">
<div class="form-text">The address of the secondary DNS server for redundancy.</div>
</div>
<!-- Zone File Generation Settings -->
<div class="mb-3">
<label for="zoneFileFrequency" class="form-label">Zone File Generation Frequency</label>
<select class="form-select" id="zoneFileFrequency">
<option selected>Choose...</option>
<option value="hourly">Hourly</option>
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
</select>
<div class="form-text">How often the DNS zone files should be generated.</div>
</div>
<!-- DNSSEC Configurations -->
<div class="mb-3">
<label for="dnssecStatus" class="form-label">DNSSEC Status</label>
<select class="form-select" id="dnssecStatus">
<option selected>Choose...</option>
<option value="enabled">Enabled</option>
<option value="disabled">Disabled</option>
</select>
<div class="form-text">Enable or disable DNS Security Extensions (DNSSEC) for the registry.</div>
</div>
<!-- Nameserver Requirements -->
<div class="mb-3">
<label for="minNameservers" class="form-label">Minimum Number of Nameservers</label>
<input type="number" class="form-control" id="minNameservers" placeholder="Enter minimum required nameservers">
<div class="form-text">The minimum number of nameservers required for domain registration.</div>
</div>
<!-- Additional DNS Options -->
<h6 class="mt-4 mb-2">Additional DNS Options</h6>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="ipv6Support" id="ipv6Support">
<label class="form-check-label" for="ipv6Support">
Support IPv6 Addresses
</label>
<div class="form-text">Enable registry systems to support IPv6 addresses for nameservers.</div>
</div>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="wildcardSupport" id="wildcardSupport">
<label class="form-check-label" for="wildcardSupport">
Allow Wildcard DNS Records
</label>
<div class="form-text">Permit the use of wildcard DNS records within the domain zone files.</div>
</div>
</div>
<div class="mb-3">
<label for="soaEmail" class="form-label">SOA Email</label>
<input type="email" class="form-control" id="soaEmail" placeholder="Enter email address for SOA record">
<div class="form-text">The email address to be used in the SOA (Start of Authority) record for DNS zones.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
<div class="tab-pane" id="tabs-database">
<h5 class="mt-3">Database Settings</h5>
<form>
<!-- Database Connection Details -->
<h6>Connection Details</h6>
<div class="mb-3">
<label for="dbHost" class="form-label">Database Host</label>
<input type="text" class="form-control" id="dbHost" placeholder="Enter database host">
<div class="form-text">Hostname or IP address of the database server.</div>
</div>
<div class="mb-3">
<label for="dbName" class="form-label">Database Name</label>
<input type="text" class="form-control" id="dbName" placeholder="Enter database name">
<div class="form-text">The name of the database used by the registry.</div>
</div>
<div class="mb-3">
<label for="dbUser" class="form-label">Database User</label>
<input type="text" class="form-control" id="dbUser" placeholder="Enter database user">
<div class="form-text">The username for accessing the database.</div>
</div>
<div class="mb-3">
<label for="dbPassword" class="form-label">Database Password</label>
<input type="password" class="form-control" id="dbPassword" placeholder="Enter database password">
<div class="form-text">The password for the database user.</div>
</div>
<!-- Backup Schedules -->
<h6>Backup Schedules</h6>
<div class="mb-3">
<label for="backupFrequency" class="form-label">Backup Frequency</label>
<select class="form-select" id="backupFrequency">
<option selected>Choose...</option>
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>
<div class="form-text">How often database backups should occur.</div>
</div>
<!-- Maintenance Options -->
<h6>Maintenance Options</h6>
<div class="mb-3">
<label for="maintenanceWindow" class="form-label">Maintenance Window</label>
<input type="text" class="form-control" id="maintenanceWindow" placeholder="e.g., Sunday 3:00 AM">
<div class="form-text">Scheduled time for routine database maintenance tasks.</div>
</div>
<!-- Performance Tuning -->
<h6>Performance Tuning</h6>
<div class="mb-3">
<label for="connectionLimit" class="form-label">Connection Limit</label>
<input type="number" class="form-control" id="connectionLimit" placeholder="Enter maximum number of connections">
<div class="form-text">The maximum number of concurrent database connections allowed.</div>
</div>
<div class="mb-3">
<label for="queryCacheSize" class="form-label">Query Cache Size (MB)</label>
<input type="number" class="form-control" id="queryCacheSize" placeholder="Enter query cache size">
<div class="form-text">The size of the query cache to improve read performance.</div>
</div>
<!-- Save Button -->
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
<div class="tab-pane" id="tabs-automation">
<h4>Automation tab</h4>
<div>Donec ac vitae diam amet vel leo egestas consequat rhoncus in luctus amet, facilisi sit mauris accumsan nibh habitant senectus</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://namingo.org" target="_blank" class="link-secondary">Namingo</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -172,7 +172,7 @@
</a> </a>
</div> </div>
</li> </li>
<li {{ is_current_url('pricing') or is_current_url('deposit') or is_current_url('transactions') or is_current_url('overview') ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}> <li {{ is_current_url('deposit') or is_current_url('transactions') or is_current_url('overview') ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false">
<span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M7 9m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z"></path><path d="M14 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M17 9v-2a2 2 0 0 0 -2 -2h-10a2 2 0 0 0 -2 2v6a2 2 0 0 0 2 2h2"></path></svg> <span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M7 9m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z"></path><path d="M14 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M17 9v-2a2 2 0 0 0 -2 -2h-10a2 2 0 0 0 -2 2v6a2 2 0 0 0 2 2h2"></path></svg>
</span> </span>
@ -181,56 +181,35 @@
</span> </span>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href="{{route('pricing')}}">
{{ __('Pricing') }}
</a>
<a class="dropdown-item" href="{{route('deposit')}}">
{{ __('Add Deposit') }}
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('transactions')}}">
{{ __('Transactions') }}
</a>
<a class="dropdown-item" href="{{route('overview')}}"> <a class="dropdown-item" href="{{route('overview')}}">
{{ __('Account Overview') }} {{ __('Account Overview') }}
</a> </a>
<a class="dropdown-item" href="{{route('transactions')}}">
{{ __('Transactions') }}
</a>
<a class="dropdown-item" href="#"> <a class="dropdown-item" href="#">
{{ __('Invoices') }} {{ __('Invoices') }}
</a> </a>
<a class="dropdown-item" href="{{route('deposit')}}">
{{ __('Add Deposit') }}
</a>
</div> </div>
</li> </li>
<li {{ is_current_url('reports') ? 'class="nav-item active"' : 'class="nav-item"' }}> <li {{ is_current_url('epphistory') or is_current_url('poll') or is_current_url('log') or is_current_url('registry') or is_current_url('reports') ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
<a class="nav-link" href="{{route('reports')}}">
<span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"></path><path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z"></path><path d="M9 17v-5"></path><path d="M12 17v-1"></path><path d="M15 17v-3"></path></svg>
</span>
<span class="nav-link-title">
{{ __('Reports') }}
</span>
</a>
</li>
<li {{ is_current_url('settings') ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false">
<span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z"></path> <path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0"></path></svg> <span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z"></path> <path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0"></path></svg>
</span> </span>
<span class="nav-link-title"> <span class="nav-link-title">
{{ __('System') }} {{ __('Registry') }}
</span> </span>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href="{{route('settings')}}"> <a class="dropdown-item" href="{{route('registry')}}">
{{ __('Settings') }} {{ __('Configuration') }}
</a> </a>
</div> <a class="dropdown-item" href="{{route('reports')}}">
</li> {{ __('Reports') }}
<li {{ is_current_url('epphistory') or is_current_url('poll') or is_current_url('log') ? 'class="nav-item dropdown active"' : 'class="nav-item dropdown"' }}>
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" data-bs-auto-close="outside" role="button" aria-expanded="false">
<span class="nav-link-icon d-md-none d-lg-inline-block"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-activity" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M3 12h4l3 8l4 -16l3 8h4"></path></svg>
</span>
<span class="nav-link-title">
{{ __('Activity') }}
</span>
</a> </a>
<div class="dropdown-menu">
<a class="dropdown-item" href="{{route('poll')}}"> <a class="dropdown-item" href="{{route('poll')}}">
{{ __('Message Queue') }} {{ __('Message Queue') }}
</a> </a>

View file

@ -69,7 +69,7 @@ $app->group('', function ($route) {
$route->get('/transactions', FinancialsController::class .':transactions')->setName('transactions'); $route->get('/transactions', FinancialsController::class .':transactions')->setName('transactions');
$route->get('/overview', FinancialsController::class .':overview')->setName('overview'); $route->get('/overview', FinancialsController::class .':overview')->setName('overview');
$route->get('/settings', SystemController::class .':settings')->setName('settings'); $route->get('/registry', SystemController::class .':registry')->setName('registry');
$route->get('/support', SupportController::class .':view')->setName('ticketview'); $route->get('/support', SupportController::class .':view')->setName('ticketview');
$route->map(['GET', 'POST'], '/support/new', SupportController::class .':newticket')->setName('newticket'); $route->map(['GET', 'POST'], '/support/new', SupportController::class .':newticket')->setName('newticket');