RDP 관련 파일들을 RDP 폴더로 정리하고 API 시스템 추가 주요 변경사항: - FastAPI 기반 RDP/Shell 모드 전환 API 서버 추가 - venv 환경을 사용하는 자동 설치 스크립트 - requirements.txt로 패키지 의존성 관리 - systemd 서비스로 자동 시작 설정 - CORS 지원으로 외부 프론트엔드 연동 가능 - 실시간 상태 모니터링 API - 웹 기반 컨트롤 패널 포함 파일 구성: - rdp-toggle-api.py: FastAPI REST API 서버 - install-rdp-api.sh: venv 환경 자동 설치 - requirements.txt: Python 패키지 의존성 - rdp-toggle-web.html: 웹 컨트롤 패널 - README.md: 사용 가이드 API 기능: - GET /status: 현재 모드 확인 - POST /toggle: RDP/Shell 모드 전환 - GET /config: 설정 확인 - PUT /config: 설정 업데이트 리액트 프론트엔드에서 토글로 화면 모드 제어 가능 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
160 lines
3.3 KiB
Markdown
160 lines
3.3 KiB
Markdown
# 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)
|
|
- 프로덕션 환경에서는 방화벽 설정 권장
|
|
- 비밀번호는 평문으로 저장됨 (향후 암호화 필요) |