mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 07:05:24 +00:00
feat: store rdp, vnc and telnet logins in a generic per-protocol table
This commit is contained in:
1 parent
e0c30a4e6f
commit
bba06f7ff6
107 files changed
+18750
-1224
No files matched your search
@@ -1,9 +1,13 @@
|
||||
import type { Host, SharePermissionLevel } from "@/types/ui-types";
|
||||
import {
|
||||
isSupportedAuthOverrideProtocol,
|
||||
SSH_AUTH_PROTOCOL,
|
||||
type AuthOverrideProtocol,
|
||||
} from "@/types/auth-protocols";
|
||||
import { listHostProtocols, protocolEnabled } from "./host-protocols";
|
||||
import {
|
||||
listHostProtocols,
|
||||
protocolEnabled,
|
||||
type HostProtocolDef,
|
||||
} from "./host-protocols";
|
||||
|
||||
const LEVEL_RANK: Record<SharePermissionLevel, number> = {
|
||||
connect: 1,
|
||||
@@ -32,14 +36,30 @@ export function canDeleteHost(host: Host): boolean {
|
||||
return !host.isShared;
|
||||
}
|
||||
|
||||
/** SSH, then every protocol a running plugin registered. */
|
||||
export function authOverrideProtocols(
|
||||
list: HostProtocolDef[] = listHostProtocols(),
|
||||
): AuthOverrideProtocol[] {
|
||||
return [SSH_AUTH_PROTOCOL, ...list.map((protocol) => protocol.id)];
|
||||
}
|
||||
|
||||
/** How a protocol is named in the override menu and dialog. */
|
||||
export function authProtocolLabel(
|
||||
protocol: AuthOverrideProtocol,
|
||||
t: (key: string) => string,
|
||||
list: HostProtocolDef[] = listHostProtocols(),
|
||||
): string {
|
||||
if (protocol === SSH_AUTH_PROTOCOL) return "SSH";
|
||||
const def = list.find((entry) => entry.id === protocol);
|
||||
return def ? t(def.titleKey) : protocol;
|
||||
}
|
||||
|
||||
export function canOverrideHostAuth(
|
||||
host: Host,
|
||||
protocol: AuthOverrideProtocol,
|
||||
): boolean {
|
||||
if (!host.isShared || !isSupportedAuthOverrideProtocol(protocol)) {
|
||||
return false;
|
||||
}
|
||||
if (protocol === "ssh") return !!host.enableSsh;
|
||||
if (!host.isShared) return false;
|
||||
if (protocol === SSH_AUTH_PROTOCOL) return !!host.enableSsh;
|
||||
// Other protocols are switched on in their plugin's host settings.
|
||||
const plugin = listHostProtocols().find((entry) => entry.id === protocol);
|
||||
return !!plugin && protocolEnabled(host.pluginSettings, plugin);
|
||||
|
||||
Reference in new issue
Block a user