diff --git a/src/components/NodeEditor.tsx b/src/components/NodeEditor.tsx
index 16278e5..bda7a2f 100644
--- a/src/components/NodeEditor.tsx
+++ b/src/components/NodeEditor.tsx
@@ -84,20 +84,71 @@ export default function NodeEditor({
handleInputChange('hostId', e.target.value)}
- placeholder="将用作为虚拟地址的最后一位。同一子网下主机ID不能重复,不得超过255"
+ placeholder="同一子网ID下主机ID不能重复,不得超过255"
/>
-
+
handleInputChange('groupId', e.target.value)}
+ placeholder="不得超过255"
+ />
+
+
+ {/* host options */}
+
+
+
+ handleInputChange('postUp', e.target.value)}
+ />
+
+
+
+
+ handleInputChange('postDown', e.target.value)}
+ />
+
+
+
+
+ handleInputChange('mtu', e.target.value)}
+ placeholder={settings.mtu ? `默认值:${settings.mtu}` : ''}
+ />
+
+
+
+
+ handleInputChange('listenPort', e.target.value)}
- placeholder="例如: 51820"
+ placeholder={`默认值:${settings.listenPort}`}
/>
@@ -107,17 +158,16 @@ export default function NodeEditor({
type="text"
value={formData.dnsServers || ''}
onChange={(e) => handleInputChange('dnsServers', e.target.value)}
- placeholder="例如: 8.8.8.8"
+ placeholder="例如: 8.8.8.8,1.1.1.1"
/>
-
- handleInputChange('persistentKeepalive', e.target.value)}
- placeholder="秒数"
+
+
diff --git a/src/types/graph.ts b/src/types/graph.ts
index 1f3818f..b3fc3d5 100644
--- a/src/types/graph.ts
+++ b/src/types/graph.ts
@@ -4,6 +4,23 @@ export type AppNode = Node;
export type AppEdge = Edge;
+export interface GroupAllowRule {
+ kind: 'group'
+ allowGroup: number
+}
+
+export interface HostAllowRule {
+ kind: 'host'
+ allowHost: number
+}
+
+export interface CustomAllowRule {
+ kind: 'custom'
+ allow: string
+}
+
+export type AllowRule = GroupAllowRule | HostAllowRule | CustomAllowRule
+
export type NodeData = {
// basic
label: string;
@@ -11,27 +28,28 @@ export type NodeData = {
groupId: number;
hostId: number;
- // options
+ // host options
postUp?: string;
postDown?: string;
- persistentKeepalive?: string;
- dnsServers?: string;
- disallowSubnet?: string;
- allowIPs?: string;
mtu?: number;
- listenPort?: number;
notes?: string;
-}
-
-export type EdgeData = {
- isTwoWayEdge: boolean
+ listenPort?: number;
+ dnsServers?: string;
+
+ // peer options
+ // allowRules?: AllowRule[];
+ // persistentKeepalive?: string; todo: 加到边上
}
export type Settings = {
v4SubNetPrefix: [number, number];
listenPort: number;
- // global options
+ // options
v6SubNetPrefix?: [string, string, string, string];
mtu?: number;
+}
+
+export type EdgeData = {
+ isTwoWayEdge: boolean
}
\ No newline at end of file