# RDP Toggle API Documentation ## 개요 Proxmox VE 호스트에서 RDP/Shell 모드를 API로 전환할 수 있는 시스템입니다. ## 구성 요소 ### 1. **rdp-toggle-api.py** - FastAPI 기반 REST API 서버 - 포트: 8080 - RDP/Shell 모드 전환 제어 ### 2. **rdp-toggle-web.html** - 웹 기반 컨트롤 패널 - 실시간 상태 모니터링 - 설정 변경 인터페이스 ### 3. **install-rdp-api.sh** - 자동 설치 스크립트 - systemd 서비스 설정 ## API 엔드포인트 ### GET /status 현재 상태 확인 ```bash curl http://localhost:8080/status ``` ### POST /toggle 모드 전환 (rdp/shell) ```bash # RDP 모드로 전환 curl -X POST http://localhost:8080/toggle \ -H 'Content-Type: application/json' \ -d '{"mode":"rdp"}' # Shell 모드로 전환 curl -X POST http://localhost:8080/toggle \ -H 'Content-Type: application/json' \ -d '{"mode":"shell"}' ``` ### GET /config 현재 설정 확인 ```bash curl http://localhost:8080/config ``` ### PUT /config 설정 업데이트 ```bash curl -X PUT http://localhost:8080/config \ -H 'Content-Type: application/json' \ -d '{ "rdp_server": "192.168.0.229", "rdp_username": "0bin", "rdp_password": "trajet6640" }' ``` ## 테스트 환경 설정 ### RDP 서버 정보 - **서버 주소**: 192.168.0.229 - **사용자명**: 0bin - **비밀번호**: trajet6640 - **로컬 사용자**: rdpuser ## 설치 방법 ```bash # 1. 설치 스크립트 실행 chmod +x install-rdp-api.sh ./install-rdp-api.sh # 2. 서비스 상태 확인 systemctl status rdp-toggle-api # 3. 웹 인터페이스 접속 # 브라우저에서 http://[PROXMOX_IP]:8080 접속 ``` ## 사용 시나리오 ### 1. 초기 설정 ```bash # RDP 설정 구성 curl -X PUT http://localhost:8080/config \ -H 'Content-Type: application/json' \ -d '{ "rdp_server": "192.168.0.229", "rdp_username": "0bin", "rdp_password": "trajet6640" }' ``` ### 2. RDP 모드 활성화 ```bash curl -X POST http://localhost:8080/toggle \ -H 'Content-Type: application/json' \ -d '{"mode":"rdp"}' ``` ### 3. Shell 모드로 복귀 ```bash curl -X POST http://localhost:8080/toggle \ -H 'Content-Type: application/json' \ -d '{"mode":"shell"}' ``` ## 동작 원리 ### RDP 모드 활성화 시 1. getty@tty1 자동 로그인 설정 2. X Window System 자동 시작 3. FreeRDP3 전체화면 실행 4. RDP 연결 자동 수립 ### Shell 모드 활성화 시 1. RDP 프로세스 종료 2. X Window 종료 3. 자동 로그인 해제 4. 일반 TTY 로그인 화면 복원 ## 상태 파일 - 상태 저장: `/var/lib/rdp-toggle/state.json` - 설정 저장: `/var/lib/rdp-toggle/config.json` ## 문제 해결 ### API 서버가 시작되지 않을 때 ```bash # 로그 확인 journalctl -u rdp-toggle-api -f # Python 패키지 재설치 pip3 install --upgrade fastapi uvicorn ``` ### RDP 연결이 실패할 때 ```bash # 현재 상태 확인 curl http://localhost:8080/status # RDP 프로세스 확인 ps aux | grep xfreerdp3 ``` ### Shell 모드로 전환이 안 될 때 ```bash # 수동으로 RDP 종료 pkill -u rdpuser systemctl restart getty@tty1 ``` ## 보안 고려사항 - API는 기본적으로 모든 IP에서 접근 가능 (0.0.0.0:8080) - 프로덕션 환경에서는 방화벽 설정 권장 - 비밀번호는 평문으로 저장됨 (향후 암호화 필요)