diff --git a/webui/src/pages/Dashboard.jsx b/webui/src/pages/Dashboard.jsx index 31522cb..c39d64c 100644 --- a/webui/src/pages/Dashboard.jsx +++ b/webui/src/pages/Dashboard.jsx @@ -1,12 +1,12 @@ import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; -import { - Server, - Users, - Shield, - Mail, - Calendar, - FolderOpen, +import { + Server, + Users, + Shield, + Mail, + Calendar, + FolderOpen, Wifi, Activity, CheckCircle, @@ -17,16 +17,17 @@ import { RotateCcw } from 'lucide-react'; import { cellAPI, servicesAPI } from '../services/api'; - -const SERVICES = [ - { name: 'Cell Home', url: 'http://mycell.cell', desc: 'Main UI — no login needed' }, - { name: 'Calendar', url: 'http://calendar.cell', desc: 'Login: your WireGuard username' }, - { name: 'Files', url: 'http://files.cell', desc: 'Login: admin / admin123' }, - { name: 'Webmail', url: 'http://mail.cell', desc: 'Login: admin@rainloop.net / 12345' }, -]; +import { useConfig } from '../contexts/ConfigContext'; function Dashboard({ isOnline }) { const navigate = useNavigate(); + const { domain = 'cell', cell_name = 'mycell' } = useConfig(); + const SERVICES = [ + { name: 'Cell Home', url: `http://${cell_name}.${domain}`, desc: 'Main UI — no login needed' }, + { name: 'Calendar', url: `http://calendar.${domain}`, desc: 'Login: your WireGuard username' }, + { name: 'Files', url: `http://files.${domain}`, desc: 'Login: admin / admin123' }, + { name: 'Webmail', url: `http://mail.${domain}`, desc: 'Login: admin@rainloop.net / 12345' }, + ]; const [cellStatus, setCellStatus] = useState(null); const [servicesStatus, setServicesStatus] = useState(null); const [isLoading, setIsLoading] = useState(true); diff --git a/webui/src/pages/NetworkServices.jsx b/webui/src/pages/NetworkServices.jsx index 5f50a0e..5830743 100644 --- a/webui/src/pages/NetworkServices.jsx +++ b/webui/src/pages/NetworkServices.jsx @@ -1,11 +1,14 @@ import { useState, useEffect } from 'react'; import { Network, Server, Clock } from 'lucide-react'; -import { networkAPI } from '../services/api'; +import { networkAPI, cellAPI } from '../services/api'; +import { useConfig } from '../contexts/ConfigContext'; function NetworkServices() { + const { domain = 'cell' } = useConfig(); const [dnsRecords, setDnsRecords] = useState([]); const [dhcpLeases, setDhcpLeases] = useState([]); const [ntpStatus, setNtpStatus] = useState(null); + const [networkConfig, setNetworkConfig] = useState({}); const [isLoading, setIsLoading] = useState(true); useEffect(() => { @@ -14,15 +17,17 @@ function NetworkServices() { const fetchNetworkData = async () => { try { - const [dnsResponse, dhcpResponse, ntpResponse] = await Promise.all([ + const [dnsResponse, dhcpResponse, ntpResponse, cfgResponse] = await Promise.all([ networkAPI.getDNSRecords(), networkAPI.getDHCPLeases(), - networkAPI.getNTPStatus() + networkAPI.getNTPStatus(), + cellAPI.getConfig(), ]); - + setDnsRecords(dnsResponse.data); setDhcpLeases(dhcpResponse.data); setNtpStatus(ntpResponse.data); + setNetworkConfig(cfgResponse.data?.service_configs?.network || {}); } catch (error) { console.error('Failed to fetch network data:', error); } finally { @@ -43,7 +48,10 @@ function NetworkServices() {

Network Services

- Manage DNS, DHCP, and NTP services + DNS zone: {domain} + {networkConfig.dhcp_range && ( + <> · DHCP: {networkConfig.dhcp_range} + )}

@@ -77,6 +85,9 @@ function NetworkServices() {

DHCP Leases

+ {networkConfig.dhcp_range && ( +

Range: {networkConfig.dhcp_range}

+ )}
{dhcpLeases.length > 0 ? ( dhcpLeases.map((lease, index) => ( @@ -97,6 +108,13 @@ function NetworkServices() {

NTP Status

+ {networkConfig.ntp_servers && ( +

+ Servers: {Array.isArray(networkConfig.ntp_servers) + ? networkConfig.ntp_servers.join(', ') + : networkConfig.ntp_servers} +

+ )} {ntpStatus ? (