This commit is contained in:
fengfeng 2026-02-02 19:50:47 +08:00
parent 9635b00e07
commit be36cefd4b
2 changed files with 91 additions and 23 deletions

View File

@ -84,20 +84,71 @@ export default function NodeEditor({
<div className="form-group">
<label>ID</label>
<input
type="text"
value={formData.hostId || ''}
type="number"
min="0"
max="255"
step="1"
value={formData.hostId}
onChange={(e) => handleInputChange('hostId', e.target.value)}
placeholder="将用作为虚拟地址的最后一位。同一子网下主机ID不能重复不得超过255"
placeholder="同一子网ID下主机ID不能重复不得超过255"
/>
</div>
<div className="form-group">
<label></label>
<label>ID</label>
<input
type="number"
min="0"
max="255"
step="1"
value={formData.groupId}
onChange={(e) => handleInputChange('groupId', e.target.value)}
placeholder="不得超过255"
/>
</div>
{/* host options */}
<div className="form-group">
<label>PostUp ()</label>
<input
type="text"
value={formData.postUp || ''}
onChange={(e) => handleInputChange('postUp', e.target.value)}
/>
</div>
<div className="form-group">
<label>PostDown ()</label>
<input
type="text"
value={formData.postDown || ''}
onChange={(e) => handleInputChange('postDown', e.target.value)}
/>
</div>
<div className="form-group">
<label>mtu ()</label>
<input
type="number"
min="1"
step="1"
value={formData.mtu || ''}
onChange={(e) => handleInputChange('mtu', e.target.value)}
placeholder={settings.mtu ? `默认值:${settings.mtu}` : ''}
/>
</div>
<div className="form-group">
<label> ()</label>
<input
type="number"
min="1024"
max="49151"
step="1"
value={formData.listenPort || ''}
onChange={(e) => handleInputChange('listenPort', e.target.value)}
placeholder="例如: 51820"
placeholder={`默认值:${settings.listenPort}`}
/>
</div>
@ -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"
/>
</div>
<div className="form-group">
<label> ()</label>
<input
type="number"
value={formData.persistentKeepalive || ''}
onChange={(e) => handleInputChange('persistentKeepalive', e.target.value)}
placeholder="秒数"
<label> ()</label>
<textarea
rows={3}
value={formData.notes || ''}
onChange={(e) => handleInputChange('notes', e.target.value)}
/>
</div>

View File

@ -4,6 +4,23 @@ export type AppNode = Node<NodeData>;
export type AppEdge = Edge<EdgeData>;
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
}