This commit is contained in:
Constantin
2025-09-12 23:04:52 +03:00
commit 2277b11563
127 changed files with 23640 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
import { useState, useEffect } from 'react';
import { Settings as SettingsIcon, Server, Shield } from 'lucide-react';
import { cellAPI } from '../services/api';
function Settings() {
const [config, setConfig] = useState(null);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
fetchConfig();
}, []);
const fetchConfig = async () => {
try {
const response = await cellAPI.getConfig();
setConfig(response.data);
} catch (error) {
console.error('Failed to fetch config:', error);
} finally {
setIsLoading(false);
}
};
if (isLoading) {
return (
<div className="flex items-center justify-center h-64">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"></div>
</div>
);
}
return (
<div>
<div className="mb-8">
<h1 className="text-2xl font-bold text-gray-900">Settings</h1>
<p className="mt-2 text-gray-600">
Configure your Personal Internet Cell
</p>
</div>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
{/* Cell Configuration */}
<div className="card">
<div className="flex items-center mb-4">
<Server className="h-6 w-6 text-primary-500 mr-2" />
<h3 className="text-lg font-medium text-gray-900">Cell Configuration</h3>
</div>
{config ? (
<div className="space-y-3">
<div className="flex justify-between">
<span className="text-sm text-gray-500">Cell Name:</span>
<span className="text-sm font-medium">{config.cell_name}</span>
</div>
<div className="flex justify-between">
<span className="text-sm text-gray-500">Domain:</span>
<span className="text-sm font-medium">{config.domain}</span>
</div>
<div className="flex justify-between">
<span className="text-sm text-gray-500">IP Range:</span>
<span className="text-sm font-medium">{config.ip_range}</span>
</div>
<div className="flex justify-between">
<span className="text-sm text-gray-500">WireGuard Port:</span>
<span className="text-sm font-medium">{config.wireguard_port}</span>
</div>
</div>
) : (
<p className="text-gray-500 text-sm">Configuration unavailable</p>
)}
</div>
{/* Security Settings */}
<div className="card">
<div className="flex items-center mb-4">
<Shield className="h-6 w-6 text-primary-500 mr-2" />
<h3 className="text-lg font-medium text-gray-900">Security Settings</h3>
</div>
<div className="space-y-3">
<div className="flex justify-between">
<span className="text-sm text-gray-500">TLS Certificate:</span>
<span className="text-sm font-medium text-success-600">Valid</span>
</div>
<div className="flex justify-between">
<span className="text-sm text-gray-500">Firewall:</span>
<span className="text-sm font-medium text-success-600">Active</span>
</div>
<div className="flex justify-between">
<span className="text-sm text-gray-500">VPN Encryption:</span>
<span className="text-sm font-medium text-success-600">Enabled</span>
</div>
</div>
</div>
</div>
</div>
);
}
export default Settings;