initial commit
This commit is contained in:
69
Services/VNCService.cs
Normal file
69
Services/VNCService.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using VNCServerList.Models;
|
||||
|
||||
namespace VNCServerList.Services
|
||||
{
|
||||
public class VNCService
|
||||
{
|
||||
private readonly string _vncViewerPath;
|
||||
private readonly DatabaseService _databaseService;
|
||||
|
||||
public VNCService(DatabaseService databaseService)
|
||||
{
|
||||
_vncViewerPath = @"C:\Program Files\TightVNC\tvnviewer.exe";
|
||||
_databaseService = databaseService;
|
||||
}
|
||||
|
||||
public bool ConnectToServer(VNCServer server)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!File.Exists(_vncViewerPath))
|
||||
{
|
||||
throw new FileNotFoundException($"VNC Viewer를 찾을 수 없습니다: {_vncViewerPath}");
|
||||
}
|
||||
|
||||
// VNC Viewer 실행
|
||||
var startInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = _vncViewerPath,
|
||||
Arguments = $"-host={server.IP} {server.Argument}",
|
||||
UseShellExecute = true
|
||||
};
|
||||
|
||||
Process.Start(startInfo);
|
||||
|
||||
// 연결 성공 (마지막 연결 시간 업데이트는 현재 테이블 구조에 없으므로 제거)
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"VNC 연결 중 오류가 발생했습니다: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public bool ConnectToServer(string user, string ip)
|
||||
{
|
||||
var server = _databaseService.GetServerByUserAndIP(user, ip);
|
||||
if (server == null)
|
||||
{
|
||||
throw new ArgumentException($"서버 {user}@{ip}를 찾을 수 없습니다.");
|
||||
}
|
||||
|
||||
return ConnectToServer(server);
|
||||
}
|
||||
|
||||
public bool IsVNCViewerInstalled()
|
||||
{
|
||||
return File.Exists(_vncViewerPath);
|
||||
}
|
||||
|
||||
public string GetVNCViewerPath()
|
||||
{
|
||||
return _vncViewerPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user