'use client'; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Loader2, KeyRound, Server, CheckCircle2, XCircle, Eye, EyeOff, Wifi } from 'lucide-react'; import { saveLicServerConfig, testLicServerConnection } from '@/lib/actions/licserver-config'; import { createClient } from '@/lib/supabase/client'; import { useRouter } from 'next/navigation'; export default function LicServerPage() { const [loading, setLoading] = useState(true); const [licUrl, setLicUrl] = useState(''); const [licKey, setLicKey] = useState(''); const [showKey, setShowKey] = useState(false); const [licSaving, setLicSaving] = useState(false); const [licTesting, setLicTesting] = useState(false); const [licStatus, setLicStatus] = useState<{ ok: boolean; message: string } | null>(null); const [licMsg, setLicMsg] = useState(''); const [licMsgType, setLicMsgType] = useState<'success' | 'error' | ''>(''); const router = useRouter(); useEffect(() => { async function loadData() { try { const supabase = createClient(); const { data: { user } } = await supabase.auth.getUser(); if (!user) { router.push('/auth/login'); return; } const { data } = await supabase.from('settings').select('licserver_base_url, licserver_api_key').eq('id', 'licserver').maybeSingle(); if (data) { setLicUrl(data.licserver_base_url || ''); setLicKey(data.licserver_api_key || ''); } } catch (e) { console.error(e); } finally { setLoading(false); } } loadData(); }, [router]); if (loading) { return
; } return (

CASPOS LicServer

REST API-Anbindung für die automatisierte Lizenzierung und Schlüsselgenerierung.

{licStatus && (
{licStatus.ok ? : } {licStatus.message}
)}
{licMsg && (
{licMsg}
)}
setLicUrl(e.target.value)} placeholder="http://192.168.178.174:9980" className="text-sm font-mono bg-slate-950/80 border-slate-800 text-white rounded-xl" />
setLicKey(e.target.value)} placeholder="Ihr X-Api-Key" className="text-sm font-mono pr-10 bg-slate-950/80 border-slate-800 text-white rounded-xl" />
); }