mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-29 11:01:29 +02:00
- **Wails v3 application** (`client/ui`) with a React + TypeScript + Tailwind frontend replacing the Fyne UI: main connection view, exit-node switcher, networks/peers browser with detail panels, profile management, settings (general, network, SSH, security, troubleshooting, appearance), debug-bundle creation, and a first-run welcome flow. - **Internationalization**: go-i18n bundle with 9 locales (en, de, es, fr, hu, it, pt, ru, zh-CN) shared between the tray and the frontend. - **New system tray** implementation with per-platform theme-aware icons, including a native XEmbed host for Linux (`xembed_tray_linux.c`) and a Linux theme watcher. - **Session handling**: auth session watcher (`client/internal/auth/sessionwatch`), pending login flow, session-expiration dialog and tray notifications, and `netbird login` improvements. - **Daemon API extensions** (`daemon.proto`): status stream subscription, event stream, networks/exit-node selection endpoints, and richer full status — with probe throttling on the daemon side to protect against UI-driven request storms. - **UI preferences store** persisted per profile, autostart management via the daemon (single source of truth in HKCU on Windows). - **Build system**: Taskfile-based builds per platform (macOS, Linux, Windows), Docker cross-compilation images, MSIX/NSIS/nfpm/AppImage packaging, and a new `frontend-ui` CI workflow. Co-authored-by: Zoltan Papp <zoltan.pmail@gmail.com> Co-authored-by: Eduard Gert <kontakt@eduardgert.de> Co-authored-by: braginini <bangvalo@gmail.com> Co-authored-by: Pascal Fischer <32096965+pascal-fischer@users.noreply.github.com> Co-authored-by: riccardom <riccardomanfrin@gmail.com>
56 lines
2.4 KiB
TypeScript
56 lines
2.4 KiB
TypeScript
import { useTranslation } from "react-i18next";
|
|
import FancyToggleSwitch from "@/components/switches/FancyToggleSwitch";
|
|
import { SectionGroup } from "@/modules/settings/SettingsSection.tsx";
|
|
import { useSettings } from "@/contexts/SettingsContext.tsx";
|
|
import { useRestrictions } from "@/contexts/RestrictionsContext.tsx";
|
|
|
|
export function SettingsNetwork() {
|
|
const { t } = useTranslation();
|
|
const { config, setField } = useSettings();
|
|
const { mdm } = useRestrictions();
|
|
|
|
return (
|
|
<>
|
|
<SectionGroup title={t("settings.network.section.connectivity")}>
|
|
<FancyToggleSwitch
|
|
value={config.networkMonitor}
|
|
onChange={(v) => setField("networkMonitor", v)}
|
|
label={t("settings.network.monitor.label")}
|
|
helpText={t("settings.network.monitor.help")}
|
|
/>
|
|
</SectionGroup>
|
|
|
|
<SectionGroup title={t("settings.network.section.routingDns")}>
|
|
<FancyToggleSwitch
|
|
value={!config.disableDns}
|
|
onChange={(v) => setField("disableDns", !v)}
|
|
label={t("settings.network.dns.label")}
|
|
helpText={t("settings.network.dns.help")}
|
|
/>
|
|
{!mdm.disableClientRoutes && (
|
|
<FancyToggleSwitch
|
|
value={!config.disableClientRoutes}
|
|
onChange={(v) => setField("disableClientRoutes", !v)}
|
|
label={t("settings.network.clientRoutes.label")}
|
|
helpText={t("settings.network.clientRoutes.help")}
|
|
/>
|
|
)}
|
|
{!mdm.disableServerRoutes && (
|
|
<FancyToggleSwitch
|
|
value={!config.disableServerRoutes}
|
|
onChange={(v) => setField("disableServerRoutes", !v)}
|
|
label={t("settings.network.serverRoutes.label")}
|
|
helpText={t("settings.network.serverRoutes.help")}
|
|
/>
|
|
)}
|
|
<FancyToggleSwitch
|
|
value={!config.disableIpv6}
|
|
onChange={(v) => setField("disableIpv6", !v)}
|
|
label={t("settings.network.ipv6.label")}
|
|
helpText={t("settings.network.ipv6.help")}
|
|
/>
|
|
</SectionGroup>
|
|
</>
|
|
);
|
|
}
|