fix: all service pages use live domain; cell_name/domain propagate to DNS; /api/status reads stored identity
Changes: - ConfigContext.jsx: React context that loads /api/config once; exposes domain, cell_name, refresh() — wraps entire app in App.jsx - Email/Calendar/Files pages: replace hardcoded 'mail.cell', 'calendar.cell', 'files.cell', 'webdav.cell' with domain from ConfigContext; hostname updates immediately after Settings save (refreshConfig() called on save) - /api/status: cell_name and domain now read from stored _identity in config_manager, not hardcoded 'personal-internet-cell' / 'cell.local' - network_manager.apply_cell_name(old, new): updates hostname A-record in primary zone file and reloads CoreDNS; called from PUT /api/config when cell_name changes - Old identity captured before save so apply_cell_name gets the correct old value - Settings EmailForm: smtp/imap ports are read-only with note (docker-compose.yml level) - Settings FilesForm: port is read-only with note (Caddy proxies on 80 externally) - Settings CalendarForm: port labeled "Internal port; clients use 80 via Caddy" Tests added: - test_apply_cell_name_renames_host_record - test_apply_cell_name_noop_when_same Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { createContext, useContext, useState, useEffect, useCallback } from 'react';
|
||||
import { cellAPI } from '../services/api';
|
||||
|
||||
const ConfigContext = createContext({ domain: 'cell', cell_name: 'mycell' });
|
||||
|
||||
export function ConfigProvider({ children }) {
|
||||
const [config, setConfig] = useState({ domain: 'cell', cell_name: 'mycell' });
|
||||
|
||||
const refresh = useCallback(() => {
|
||||
cellAPI.getConfig().then(r => setConfig(r.data)).catch(() => {});
|
||||
}, []);
|
||||
|
||||
useEffect(() => { refresh(); }, [refresh]);
|
||||
|
||||
return (
|
||||
<ConfigContext.Provider value={{ ...config, refresh }}>
|
||||
{children}
|
||||
</ConfigContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export const useConfig = () => useContext(ConfigContext);
|
||||
Reference in New Issue
Block a user