import { useTranslation } from 'react-i18next';
import { HelpText } from './HelpText';
import { FieldLabel, FieldInput } from './formUtils';
import { StringArrayEditor } from './StringArrayEditor';
import type { SectionFormProps } from './types';
/**
* Server TLS settings — binds to the `server.tls` config object.
*
* Editable fields: enabled, certFile, keyFile, httpRedirect,
* httpRedirectPort, redirectHost, selfSignedHosts.
*
* Fields intentionally omitted from the UI (left to config.yaml):
* minVersion, selfSignedDir. The onChange path mechanism in ConfigFormInner
* uses setNestedValue which does a shallow-merge, so unedited fields are
* preserved on save automatically.
*
* TODO(server-tls-info): cert source/expiry/fingerprint panel + regenerate
* button need a GET /api/server/tls-info endpoint (future).
*/
export function ServerTlsForm({ config, onChange }: SectionFormProps) {
const { t } = useTranslation('settings');
// Navigate to the server.tls sub-object; fall back to empty object if absent.
const tls = (config?.server?.tls) ?? {};
return (
{t('serverTls.title')}
{/* Restart-required banner — always visible */}
{t('serverTls.restartBanner')}
{/* Enable HTTPS */}
{t('serverTls.enabledHelp')}
{/* Certificate file */}
{t('serverTls.certFile')} onChange('server.tls.certFile', v || undefined)}
placeholder="/etc/ssl/certs/server.pem"
/>
{/* Private key file */}
{t('serverTls.keyFile')} onChange('server.tls.keyFile', v || undefined)}
placeholder="/etc/ssl/private/server.key"
/>
{t('serverTls.certHelp')}