Compare commits

..

No commits in common. "be36cefd4b69a61b29a2ee2e8d45ebfc626686b2" and "a81869c96d1f54da2154b76f71e747cdfc81d313" have entirely different histories.

3 changed files with 25 additions and 106 deletions

View File

@ -53,7 +53,7 @@ function getFirstAvailableId(ids: number[]) : number {
}
function generateNodeData(nodes : NodeData[]) : NodeData | null {
const hostId = getFirstAvailableId(nodes.filter(n => n.groupId == 0).map(n => n.hostId))
const hostId = getFirstAvailableId(nodes.map(n => n.hostId))
if(hostId > 255) return null
const privateKey = generateWireGuardPrivateKey();

View File

@ -1,6 +1,5 @@
import { useState, ReactNode } from 'react';
import { NodeData, Settings } from '../types/graph';
import { generateWireGuardPrivateKey } from '../utils/wireguardConfig'
import './NodeEditor.css';
@ -40,10 +39,6 @@ export default function NodeEditor({
// onClose();
};
const handleGenerateKey = (): void => {
handleInputChange('privateKey', generateWireGuardPrivateKey())
}
return (
<div className="node-editor-overlay">
<div className="node-editor">
@ -75,80 +70,21 @@ export default function NodeEditor({
<div className="item-group">
<input
value={formData.privateKey || ''}
onChange={(e) => handleInputChange('privateKey', e.target.value)}
readOnly
/>
<button className="btn-interect" onClick={handleGenerateKey}></button>
<button className="btn-interect"></button>
</div>
</div>
<div className="form-group">
<label>ID</label>
<label></label>
<input
type="number"
min="0"
max="255"
step="1"
value={formData.hostId}
onChange={(e) => handleInputChange('hostId', e.target.value)}
placeholder="同一子网ID下主机ID不能重复不得超过255"
/>
</div>
<div className="form-group">
<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={`默认值:${settings.listenPort}`}
placeholder="例如: 51820"
/>
</div>
@ -158,16 +94,17 @@ export default function NodeEditor({
type="text"
value={formData.dnsServers || ''}
onChange={(e) => handleInputChange('dnsServers', e.target.value)}
placeholder="例如: 8.8.8.8,1.1.1.1"
placeholder="例如: 8.8.8.8"
/>
</div>
<div className="form-group">
<label> ()</label>
<textarea
rows={3}
value={formData.notes || ''}
onChange={(e) => handleInputChange('notes', e.target.value)}
<label> ()</label>
<input
type="number"
value={formData.persistentKeepalive || ''}
onChange={(e) => handleInputChange('persistentKeepalive', e.target.value)}
placeholder="秒数"
/>
</div>

View File

@ -4,23 +4,6 @@ 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;
@ -28,28 +11,27 @@ export type NodeData = {
groupId: number;
hostId: number;
// host options
// options
postUp?: string;
postDown?: string;
mtu?: number;
notes?: string;
listenPort?: number;
persistentKeepalive?: string;
dnsServers?: string;
// peer options
// allowRules?: AllowRule[];
// persistentKeepalive?: string; todo: 加到边上
disallowSubnet?: string;
allowIPs?: string;
mtu?: number;
listenPort?: number;
notes?: string;
}
export type EdgeData = {
isTwoWayEdge: boolean
}
export type Settings = {
v4SubNetPrefix: [number, number];
listenPort: number;
// options
// global options
v6SubNetPrefix?: [string, string, string, string];
mtu?: number;
}
export type EdgeData = {
isTwoWayEdge: boolean
}