TCP 서버 옵션 추가

This commit is contained in:
현성필
2025-02-02 23:01:40 +09:00
parent 40e6aac336
commit 54bf2a897b
5 changed files with 270 additions and 68 deletions
@@ -13,11 +13,21 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Checkbox } from '@/components/ui/checkbox';
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import MonacoEditor from '@/components/shared/MonacoEditor';
const defaultScript = `function processJson(message) {
//process message;
const defaultScript = `function processMessage(message, serviceId) {
// Process the message and serviceId
console.log("Received message:", message);
console.log("Service ID:", serviceId);
// Return response
return "response_message";
}`;
@@ -27,7 +37,11 @@ const TCPServerEditDialog = ({ open, onOpenChange, item }) => {
name: '',
port: 1024,
active: true,
script: defaultScript
script: defaultScript,
prefixSize: 4,
includePrefixLength: true,
serviceIdLength: 0,
serviceIdPosition: 'NONE'
});
// Initialize form when item changes
@@ -41,7 +55,11 @@ const TCPServerEditDialog = ({ open, onOpenChange, item }) => {
name: '',
port: 1024,
active: true,
script: defaultScript
script: defaultScript,
prefixSize: 4,
includePrefixLength: true,
serviceIdLength: 0,
serviceIdPosition: 'NONE'
});
}
}, [item]);
@@ -93,44 +111,108 @@ const TCPServerEditDialog = ({ open, onOpenChange, item }) => {
<ScrollArea className="max-h-[80vh]">
<form id="serverForm" onSubmit={handleSubmit} className="space-y-4 p-1">
{/* Server Name */}
<div className="space-y-2">
<Label htmlFor="name" className="must">
서버 이름
</Label>
<Input
id="name"
required
value={server.name}
onChange={(e) => handleChange('name', e.target.value)}
/>
</div>
{/* Basic Server Configuration */}
<Card>
<CardHeader>
<CardTitle>기본 설정</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
{/* Server Name */}
<div className="space-y-2">
<Label htmlFor="name" className="must">서버 이름</Label>
<Input
id="name"
required
value={server.name}
onChange={(e) => handleChange('name', e.target.value)}
/>
</div>
{/* Port Number */}
<div className="space-y-2">
<Label htmlFor="port" className="must">
포트
</Label>
<Input
id="port"
type="number"
required
min="1024"
max="65535"
value={server.port}
onChange={(e) => handleChange('port', parseInt(e.target.value))}
/>
</div>
{/* Port Number */}
<div className="space-y-2">
<Label htmlFor="port" className="must">포트</Label>
<Input
id="port"
type="number"
required
min="1024"
max="65535"
value={server.port}
onChange={(e) => handleChange('port', parseInt(e.target.value))}
/>
</div>
{/* Active Status */}
<div className="flex items-center space-x-2">
<Checkbox
id="active"
checked={server.active}
onCheckedChange={(checked) => handleChange('active', checked)}
/>
<Label htmlFor="active">Active</Label>
</div>
{/* Active Status */}
<div className="flex items-center space-x-2">
<Checkbox
id="active"
checked={server.active}
onCheckedChange={(checked) => handleChange('active', checked)}
/>
<Label htmlFor="active">Active</Label>
</div>
</CardContent>
</Card>
{/* Message Configuration */}
<Card>
<CardHeader>
<CardTitle>메시지 설정</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
{/* Prefix Size */}
<div className="space-y-2">
<Label htmlFor="prefixSize">Prefix Size</Label>
<Input
id="prefixSize"
type="number"
min="0"
value={server.prefixSize}
onChange={(e) => handleChange('prefixSize', parseInt(e.target.value))}
/>
</div>
{/* Include Prefix Length */}
<div className="flex items-center space-x-2">
<Checkbox
id="includePrefixLength"
checked={server.includePrefixLength}
onCheckedChange={(checked) => handleChange('includePrefixLength', checked)}
/>
<Label htmlFor="includePrefixLength">Include Prefix Length</Label>
</div>
{/* Service ID Length */}
<div className="space-y-2">
<Label htmlFor="serviceIdLength">Service ID Length</Label>
<Input
id="serviceIdLength"
type="number"
min="0"
value={server.serviceIdLength}
onChange={(e) => handleChange('serviceIdLength', parseInt(e.target.value))}
/>
</div>
{/* Service ID Position */}
<div className="space-y-2">
<Label htmlFor="serviceIdPosition">Service ID Position</Label>
<Select
value={server.serviceIdPosition}
onValueChange={(value) => handleChange('serviceIdPosition', value)}
>
<SelectTrigger>
<SelectValue placeholder="Select position" />
</SelectTrigger>
<SelectContent>
<SelectItem value="NONE">None</SelectItem>
<SelectItem value="START">Start</SelectItem>
<SelectItem value="END">End</SelectItem>
</SelectContent>
</Select>
</div>
</CardContent>
</Card>
{/* Script Editor */}
<Card>