102 lines
2.1 KiB
TypeScript
102 lines
2.1 KiB
TypeScript
export type Protocol = 'TCP' | 'UDP';
|
|
export type ProfileItemType = 'process' | 'folder' | 'exe';
|
|
export type TargetKind = 'local' | 'external';
|
|
export type ProxyProtocol = 'socks5' | 'http';
|
|
export type ComponentId = 'control-app' | 'proxyfier' | 'singbox';
|
|
export type ComponentState = 'installed' | 'missing' | 'stopped' | 'running' | 'error';
|
|
export type ActivityLevel = 'info' | 'warning' | 'error' | 'success';
|
|
|
|
export interface ProfileItemInput {
|
|
type: ProfileItemType | string;
|
|
value: string;
|
|
recursive?: boolean;
|
|
}
|
|
|
|
export interface ProfileInput {
|
|
id?: string;
|
|
name: string;
|
|
enabled?: boolean;
|
|
targetId?: string;
|
|
protocols?: string[];
|
|
items?: ProfileItemInput[];
|
|
}
|
|
|
|
export interface ProfileItem {
|
|
type: ProfileItemType;
|
|
value: string;
|
|
recursive: boolean;
|
|
}
|
|
|
|
export interface Profile {
|
|
id: string;
|
|
name: string;
|
|
enabled: boolean;
|
|
targetId: string;
|
|
protocols: Protocol[];
|
|
items: ProfileItem[];
|
|
}
|
|
|
|
export interface TargetInput {
|
|
id?: string;
|
|
name: string;
|
|
kind?: TargetKind | string;
|
|
protocol?: ProxyProtocol | string;
|
|
host: string;
|
|
port: number;
|
|
requiresComponent?: ComponentId | string;
|
|
}
|
|
|
|
export interface Target {
|
|
id: string;
|
|
name: string;
|
|
kind: TargetKind;
|
|
protocol: ProxyProtocol;
|
|
host: string;
|
|
port: number;
|
|
requiresComponent?: ComponentId;
|
|
}
|
|
|
|
export interface ComponentStatus {
|
|
id: ComponentId;
|
|
name: string;
|
|
state: ComponentState;
|
|
installed: boolean;
|
|
running: boolean;
|
|
version?: string;
|
|
path?: string;
|
|
problems: string[];
|
|
actions: string[];
|
|
}
|
|
|
|
export interface LocalSingBoxConfig {
|
|
subscriptionDisplayUrl?: string;
|
|
hasSubscription: boolean;
|
|
selectedServerTag?: string;
|
|
listenHost: string;
|
|
listenPort: number;
|
|
serviceName: string;
|
|
installRoot: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface SubscriptionServer {
|
|
tag: string;
|
|
type: string;
|
|
server: string;
|
|
serverPort: number;
|
|
}
|
|
|
|
export interface SubscriptionCache {
|
|
servers: SubscriptionServer[];
|
|
userInfo: Record<string, number | string | boolean | null>;
|
|
fetchedAt: string;
|
|
}
|
|
|
|
export interface ActivityEntry {
|
|
id: string;
|
|
at: string;
|
|
level: ActivityLevel;
|
|
title: string;
|
|
message: string;
|
|
}
|