import React, { useState } from 'react'; import { X, Copy, Check, Server, Globe, ArrowLeftRight, HardDrive } from 'lucide-react'; interface SettingsModalProps { isOpen: boolean; onClose: () => void; } const SettingsModal: React.FC = ({ isOpen, onClose }) => { const [activeTab, setActiveTab] = useState<'arch' | 'code'>('arch'); const [copied, setCopied] = useState(false); if (!isOpen) return null; const backendCodeDisplay = `/** * WebZilla Backend Proxy (Node.js) * Supports: FTP (basic-ftp) & SFTP (ssh2-sftp-client) * Dependencies: npm install ws basic-ftp ssh2-sftp-client */ const WebSocket = require('ws'); const ftp = require('basic-ftp'); const SftpClient = require('ssh2-sftp-client'); // ... imports const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', (ws) => { let ftpClient = new ftp.Client(); let sftpClient = new SftpClient(); let currentProto = 'ftp'; ws.on('message', async (msg) => { const data = JSON.parse(msg); if (data.command === 'CONNECT') { currentProto = data.protocol; // 'ftp' or 'sftp' if (currentProto === 'sftp') { await sftpClient.connect({ host: data.host, port: data.port, username: data.user, password: data.pass }); } else { await ftpClient.access({ host: data.host, user: data.user, password: data.pass }); } ws.send(JSON.stringify({ status: 'connected' })); } // ... Handling LIST, MKD, DELE for both protocols }); });`; const handleCopy = () => { navigator.clipboard.writeText(backendCodeDisplay); setCopied(true); setTimeout(() => setCopied(false), 2000); }; return (
{/* Header */}

시스템 설정 및 아키텍처

{/* Tabs */}
{/* Content */}
{activeTab === 'arch' ? (
브라우저 React Client
WebSocket JSON Protocol
Node.js Proxy {/* AppData Connection */}
AppData/Config
FTP / SFTP
Remote Server

업데이트 내역 (v1.1)

  • SFTP 지원: SSH2 프로토콜을 사용한 보안 전송 지원 추가.
  • 패시브 모드: 방화벽 환경을 위한 FTP 패시브 모드 토글 UI 추가.
  • 파일 작업: 폴더 생성, 이름 변경, 삭제를 위한 전용 모달 인터페이스 구현.
) : (

SFTP와 FTP를 모두 지원하는 프록시 서버 코드 미리보기입니다.

                  {backendCodeDisplay}
                

전체 코드는 메인 화면의 '백엔드 다운로드' 버튼을 통해 받으실 수 있습니다.

)}
); }; export default SettingsModal;