[Phase L8] 파일·시스템 유틸리티 핸들러 4종 추가

FileHashHandler.cs (200줄, prefix=hash):
- MD5/SHA1/SHA256/SHA512 비동기 해시 계산
- 클립보드 파일 경로 자동 감지
- hash check <기대값>으로 클립보드 해시 비교

ZipHandler.cs (260줄, prefix=zip):
- System.IO.Compression 기반 목록·추출·압축
- zip list: 파일 목록 미리보기 (최대 20개)
- zip extract: 동일/지정 폴더 압축 해제
- zip folder: 폴더→zip 압축

EventLogHandler.cs (165줄, prefix=evt):
- System+Application 로그 최근 24시간 조회
- evt error/warn/app/sys/<키워드> 필터
- InstanceId 기반 (EventID deprecated 경고 수정)
- 이벤트 상세 클립보드 복사

SshHandler.cs (270줄, prefix=ssh):
- SshHostEntry 모델 + AppSettings.SshHosts 영속화
- ssh add user@host[:port], ssh del <이름>
- Windows Terminal/PuTTY/PowerShell 순 폴백 연결
- 직접 user@host 입력 즉시 연결 지원

AppSettings.Models.cs: SshHostEntry 클래스 추가
AppSettings.cs: SshHosts 프로퍼티 추가
App.xaml.cs: Phase L8 핸들러 4종 등록
docs/LAUNCHER_ROADMAP.md: Phase L8 섹션 추가 

빌드: 경고 0, 오류 0
This commit is contained in:
2026-04-04 14:06:24 +09:00
parent 7ca34d2ef4
commit 212ed9519e
8 changed files with 1132 additions and 0 deletions

View File

@@ -431,6 +431,37 @@ public class MacroStep
public int DelayMs { get; set; } = 500;
}
// ─── SSH 퀵 커넥트 호스트 ─────────────────────────────────────────────────────
/// <summary>
/// SSH 퀵 커넥트 호스트 항목. ssh 핸들러로 저장·연결합니다.
/// </summary>
public class SshHostEntry
{
[JsonPropertyName("id")]
public string Id { get; set; } = Guid.NewGuid().ToString();
/// <summary>표시 이름 (예: "dev-server", "prod-web")</summary>
[JsonPropertyName("name")]
public string Name { get; set; } = "";
/// <summary>호스트 주소 (IP 또는 도메인)</summary>
[JsonPropertyName("host")]
public string Host { get; set; } = "";
/// <summary>SSH 포트. 기본값 22.</summary>
[JsonPropertyName("port")]
public int Port { get; set; } = 22;
/// <summary>SSH 사용자명</summary>
[JsonPropertyName("user")]
public string User { get; set; } = "";
/// <summary>메모 (예: "운영서버", "DB 전용")</summary>
[JsonPropertyName("note")]
public string Note { get; set; } = "";
}
// ─── 잠금 해제 알림 설정 ───────────────────────────────────────────────────────
public class ReminderSettings