From 59dac350d80cc60a3e13074cddcf4127a2bd69be Mon Sep 17 00:00:00 2001 From: crudelis Date: Tue, 14 Mar 2023 17:30:09 +0900 Subject: [PATCH] Initial commit v1.0 --- .gitignore | 513 ++++++++++++++++++ HSUCO_CCTV_Monitoring.sln | 25 + HSUCO_CCTV_Monitoring/App.config | 6 + HSUCO_CCTV_Monitoring/DataModel.cs | 33 ++ .../HSUCO_CCTV_Monitoring.csproj | 117 ++++ HSUCO_CCTV_Monitoring/Log.cs | 174 ++++++ HSUCO_CCTV_Monitoring/MainForm.Designer.cs | 163 ++++++ HSUCO_CCTV_Monitoring/MainForm.cs | 126 +++++ HSUCO_CCTV_Monitoring/MainForm.resx | 120 ++++ HSUCO_CCTV_Monitoring/NVRStatus.Designer.cs | 102 ++++ HSUCO_CCTV_Monitoring/NVRStatus.cs | 66 +++ HSUCO_CCTV_Monitoring/NVRStatus.resx | 120 ++++ HSUCO_CCTV_Monitoring/Program.cs | 23 + .../Properties/AssemblyInfo.cs | 36 ++ .../Properties/Resources.Designer.cs | 93 ++++ .../Properties/Resources.resx | 130 +++++ .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + HSUCO_CCTV_Monitoring/Resources/NVR_Fail.png | Bin 0 -> 265227 bytes .../Resources/NVR_Inspection.png | Bin 0 -> 47991 bytes .../Resources/NVR_Success.png | Bin 0 -> 35374 bytes HSUCO_CCTV_Monitoring/StatusChecker.cs | 51 ++ HSUCO_CCTV_Monitoring/Worker.cs | 53 ++ HSUCO_CCTV_Monitoring/XmlSystem.cs | 84 +++ HSUCO_CCTV_Monitoring/packages.config | 4 + 25 files changed, 2072 insertions(+) create mode 100644 .gitignore create mode 100644 HSUCO_CCTV_Monitoring.sln create mode 100644 HSUCO_CCTV_Monitoring/App.config create mode 100644 HSUCO_CCTV_Monitoring/DataModel.cs create mode 100644 HSUCO_CCTV_Monitoring/HSUCO_CCTV_Monitoring.csproj create mode 100644 HSUCO_CCTV_Monitoring/Log.cs create mode 100644 HSUCO_CCTV_Monitoring/MainForm.Designer.cs create mode 100644 HSUCO_CCTV_Monitoring/MainForm.cs create mode 100644 HSUCO_CCTV_Monitoring/MainForm.resx create mode 100644 HSUCO_CCTV_Monitoring/NVRStatus.Designer.cs create mode 100644 HSUCO_CCTV_Monitoring/NVRStatus.cs create mode 100644 HSUCO_CCTV_Monitoring/NVRStatus.resx create mode 100644 HSUCO_CCTV_Monitoring/Program.cs create mode 100644 HSUCO_CCTV_Monitoring/Properties/AssemblyInfo.cs create mode 100644 HSUCO_CCTV_Monitoring/Properties/Resources.Designer.cs create mode 100644 HSUCO_CCTV_Monitoring/Properties/Resources.resx create mode 100644 HSUCO_CCTV_Monitoring/Properties/Settings.Designer.cs create mode 100644 HSUCO_CCTV_Monitoring/Properties/Settings.settings create mode 100644 HSUCO_CCTV_Monitoring/Resources/NVR_Fail.png create mode 100644 HSUCO_CCTV_Monitoring/Resources/NVR_Inspection.png create mode 100644 HSUCO_CCTV_Monitoring/Resources/NVR_Success.png create mode 100644 HSUCO_CCTV_Monitoring/StatusChecker.cs create mode 100644 HSUCO_CCTV_Monitoring/Worker.cs create mode 100644 HSUCO_CCTV_Monitoring/XmlSystem.cs create mode 100644 HSUCO_CCTV_Monitoring/packages.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07be0d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,513 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/windows,linux,c,c++,csharp,powershell +# Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,c,c++,csharp,powershell + +### C ### +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +### C++ ### +# Prerequisites + +# Compiled Object files +*.slo + +# Precompiled Headers + +# Compiled Dynamic libraries + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai + +# Executables + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.meta +*.iobj +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + +### Linux ### + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### PowerShell ### +# Exclude packaged modules +*.zip + +# Exclude .NET assemblies from source + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/windows,linux,c,c++,csharp,powershell \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring.sln b/HSUCO_CCTV_Monitoring.sln new file mode 100644 index 0000000..1ccac06 --- /dev/null +++ b/HSUCO_CCTV_Monitoring.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32526.322 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSUCO_CCTV_Monitoring", "HSUCO_CCTV_Monitoring\HSUCO_CCTV_Monitoring.csproj", "{E1F4C9BF-FE6C-4F46-843C-93B4C575703C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E1F4C9BF-FE6C-4F46-843C-93B4C575703C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1F4C9BF-FE6C-4F46-843C-93B4C575703C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1F4C9BF-FE6C-4F46-843C-93B4C575703C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1F4C9BF-FE6C-4F46-843C-93B4C575703C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B311C77A-EE6C-4648-A538-58BD9A4B8620} + EndGlobalSection +EndGlobal diff --git a/HSUCO_CCTV_Monitoring/App.config b/HSUCO_CCTV_Monitoring/App.config new file mode 100644 index 0000000..ecdcf8a --- /dev/null +++ b/HSUCO_CCTV_Monitoring/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/HSUCO_CCTV_Monitoring/DataModel.cs b/HSUCO_CCTV_Monitoring/DataModel.cs new file mode 100644 index 0000000..b37e6af --- /dev/null +++ b/HSUCO_CCTV_Monitoring/DataModel.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; + + +namespace HSUCO_Server_Monitoring +{ + [Serializable] + public struct Config + { + public List NVR { get; set; } + public List CCTV { get; set; } + public int NVR_DelayTime { get; set; } + public int CCTV_DelayTime { get; set; } + public struct Information + { + public string Name { get; set; } + public string IpAddress { get; set; } + } + + } + public enum MessageSender + { + NVR, + CCTV + } + public enum StatusResult + { + Success, + Fail, + Inspection + + } +} diff --git a/HSUCO_CCTV_Monitoring/HSUCO_CCTV_Monitoring.csproj b/HSUCO_CCTV_Monitoring/HSUCO_CCTV_Monitoring.csproj new file mode 100644 index 0000000..f897b81 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/HSUCO_CCTV_Monitoring.csproj @@ -0,0 +1,117 @@ + + + + + Debug + AnyCPU + {E1F4C9BF-FE6C-4F46-843C-93B4C575703C} + WinExe + HSUCO_CCTV_Monitoring + HSUCO_CCTV_Monitoring + v4.7.2 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + HSUCO_Server_Monitoring.Program + + + + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + True + True + Resources.resx + + + + + + UserControl + + + NVRStatus.cs + + + + + MainForm.cs + + + ResXFileCodeGenerator + Designer + Resources.Designer.cs + + + NVRStatus.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/Log.cs b/HSUCO_CCTV_Monitoring/Log.cs new file mode 100644 index 0000000..963a5be --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Log.cs @@ -0,0 +1,174 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Text; + +namespace HSUCO_Server_Monitoring +{ + public static class Log + { + //로그파일 이름 규칙 어셈블리명-날짜.log + public static LogLevel logLevel { get; set; } + + private static string logDateTime; + + static Log() + { + SetLogFile(DateTime.Now.ToString("yyyy-MM-dd")); // Log파일 이름 세팅을 위한 함수 호출 + } + + /// + /// 로그 파일 리스너 세팅 + /// + /// 로그파일 이름에 들어갈 DateTime String + private static void SetLogFile(string dateTimeString) + { + logDateTime = dateTimeString; + + if (!System.IO.Directory.Exists("logs")) + { + System.IO.Directory.CreateDirectory("logs"); + } + var logFileName = $"logs/{logDateTime}.log"; + Trace.Listeners.Clear(); + Trace.Listeners.Add(new TextWriterTraceListener(new FileStream(logFileName, FileMode.Append, FileAccess.Write, FileShare.Read))); + Trace.Write("====================================================================================================// "); + Trace.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + Trace.WriteLine(" //===================================================================================================="); + Trace.Flush(); + } + + //FATAL > ERROR > WARN > INFO > DEBUG > TRACE + public static void FATAL(string message) + { + if (LogLevel.FATAL >= logLevel) + { + // Call Location + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.FATAL, location + "\t" + message); + } + } + + public static void ERROR(string message) + { + if (LogLevel.Error >= logLevel) + { + // Call Location + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.Error, location + "\t" + message); + } + } + + public static void WARN(string message) + { + if (LogLevel.Warn >= logLevel) + { + // Call Location + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.Warn, location + "\t" + message); + } + } + + public static void INFO(string message) + { + if (LogLevel.Info >= logLevel) + { + // Call Location + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.Info, location + "\t" + message); + } + } + + public static void DEBUG(string message) + { + if (LogLevel.Debug >= logLevel) + { + // Call Location + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.Debug, location + "\t" + message); + } + } + + public static void TRACE(string message) + { + if (LogLevel.Trace >= logLevel) + { + var stackTrace = new StackTrace(); + var methodBase = stackTrace.GetFrame(1).GetMethod(); + string location = methodBase.DeclaringType != null + ? methodBase.DeclaringType.Name + "/" + : "null/"; + location += methodBase.Name; + // Call Location End + WriteLog(LogLevel.Debug, location + "\t" + message); + WriteLog(LogLevel.Trace, message); + } + } + + /// + /// + /// + /// enum LogLevel + /// 로그 메세지 + public static void WriteLog(LogLevel logLevel, string message) + { + string nowDateTime = DateTime.Now.ToString("yyyy-MM-dd"); + if (nowDateTime != logDateTime) + { + SetLogFile(nowDateTime); + } + + // Log String + var stringBuilder = new StringBuilder(); + stringBuilder.Append("["); + stringBuilder.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + stringBuilder.Append("]"); + stringBuilder.Append("\t"); + stringBuilder.Append(logLevel); + stringBuilder.Append("\t"); + stringBuilder.Append(message.Trim()); + Trace.WriteLine(stringBuilder.ToString()); + Trace.Flush(); + } + } + + public enum LogLevel + { + Trace, + Debug, + Info, + Warn, + Error, + FATAL + } +} \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/MainForm.Designer.cs b/HSUCO_CCTV_Monitoring/MainForm.Designer.cs new file mode 100644 index 0000000..7605779 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/MainForm.Designer.cs @@ -0,0 +1,163 @@ +namespace HSUCO_Server_Monitoring +{ + partial class MainForm + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.tableLayoutPanelMaster = new System.Windows.Forms.TableLayoutPanel(); + this.label2 = new System.Windows.Forms.Label(); + this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.listBox2 = new System.Windows.Forms.ListBox(); + this.tableLayoutPanelMaster.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanelMaster + // + this.tableLayoutPanelMaster.BackColor = System.Drawing.Color.White; + this.tableLayoutPanelMaster.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanelMaster.ColumnCount = 2; + this.tableLayoutPanelMaster.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 500F)); + this.tableLayoutPanelMaster.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanelMaster.Controls.Add(this.label2, 1, 2); + this.tableLayoutPanelMaster.Controls.Add(this.flowLayoutPanel, 0, 0); + this.tableLayoutPanelMaster.Controls.Add(this.label1, 1, 0); + this.tableLayoutPanelMaster.Controls.Add(this.listBox1, 1, 1); + this.tableLayoutPanelMaster.Controls.Add(this.listBox2, 1, 3); + this.tableLayoutPanelMaster.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanelMaster.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanelMaster.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanelMaster.Name = "tableLayoutPanelMaster"; + this.tableLayoutPanelMaster.RowCount = 2; + this.tableLayoutPanelMaster.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanelMaster.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanelMaster.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanelMaster.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanelMaster.Size = new System.Drawing.Size(804, 361); + this.tableLayoutPanelMaster.TabIndex = 4; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))); + this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("마비옛체", 20F, System.Drawing.FontStyle.Bold); + this.label2.ForeColor = System.Drawing.Color.Red; + this.label2.Location = new System.Drawing.Point(502, 181); + this.label2.Margin = new System.Windows.Forms.Padding(0); + this.label2.Name = "label2"; + this.label2.Padding = new System.Windows.Forms.Padding(50, 0, 0, 0); + this.label2.Size = new System.Drawing.Size(1274, 30); + this.label2.TabIndex = 6; + this.label2.Text = "CCTV (연결끊김)"; + // + // flowLayoutPanel + // + this.flowLayoutPanel.BackColor = System.Drawing.Color.Black; + this.flowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel.Location = new System.Drawing.Point(1, 1); + this.flowLayoutPanel.Margin = new System.Windows.Forms.Padding(0); + this.flowLayoutPanel.Name = "flowLayoutPanel"; + this.tableLayoutPanelMaster.SetRowSpan(this.flowLayoutPanel, 4); + this.flowLayoutPanel.Size = new System.Drawing.Size(500, 359); + this.flowLayoutPanel.TabIndex = 4; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("마비옛체", 20F, System.Drawing.FontStyle.Bold); + this.label1.ForeColor = System.Drawing.Color.Blue; + this.label1.Location = new System.Drawing.Point(502, 1); + this.label1.Margin = new System.Windows.Forms.Padding(0); + this.label1.Name = "label1"; + this.label1.Padding = new System.Windows.Forms.Padding(50, 0, 0, 0); + this.label1.Size = new System.Drawing.Size(1274, 30); + this.label1.TabIndex = 5; + this.label1.Text = "CCTV (점검필요)"; + // + // listBox1 + // + this.listBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.listBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listBox1.Font = new System.Drawing.Font("마비옛체", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox1.FormattingEnabled = true; + this.listBox1.ItemHeight = 18; + this.listBox1.Location = new System.Drawing.Point(502, 32); + this.listBox1.Margin = new System.Windows.Forms.Padding(0); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(1274, 148); + this.listBox1.TabIndex = 7; + // + // listBox2 + // + this.listBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))); + this.listBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.listBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.listBox2.Font = new System.Drawing.Font("마비옛체", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox2.FormattingEnabled = true; + this.listBox2.ItemHeight = 18; + this.listBox2.Location = new System.Drawing.Point(502, 212); + this.listBox2.Margin = new System.Windows.Forms.Padding(0); + this.listBox2.Name = "listBox2"; + this.listBox2.Size = new System.Drawing.Size(1274, 148); + this.listBox2.TabIndex = 8; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(804, 361); + this.Controls.Add(this.tableLayoutPanelMaster); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "MainForm"; + this.Text = "서부권 통합관제센터 CCTV NVR 모니터링"; + this.Load += new System.EventHandler(this.MainForm_Load); + this.tableLayoutPanelMaster.ResumeLayout(false); + this.tableLayoutPanelMaster.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanelMaster; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.ListBox listBox2; + } +} + diff --git a/HSUCO_CCTV_Monitoring/MainForm.cs b/HSUCO_CCTV_Monitoring/MainForm.cs new file mode 100644 index 0000000..9abaa46 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/MainForm.cs @@ -0,0 +1,126 @@ +using HSUCO_CCTV_Monitoring; +using HSUCO_CCTV_Monitoring.Properties; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HSUCO_Server_Monitoring +{ + public partial class MainForm : Form + { + private string configPath = "config.xml"; + private Config config; + private List nvrStatuses = new List(); + private readonly object locker = new object(); + public MainForm() + { + InitializeComponent(); + } + + private void MainForm_Load(object sender, EventArgs e) + { + if (!System.IO.File.Exists(configPath)) + { + MessageBox.Show("config 파일을 찾을수 없습니다"); + Application.Exit(); + return; + } + + config = XmlSystem.LoadFromPath("config.xml"); + + InitializeNVR(); + this.FormBorderStyle = FormBorderStyle.None; + this.WindowState = FormWindowState.Maximized; + Size = Screen.PrimaryScreen.WorkingArea.Size; + tableLayoutPanelMaster.ColumnStyles[0].SizeType = SizeType.Absolute; + tableLayoutPanelMaster.ColumnStyles[0].Width = 1490; + tableLayoutPanelMaster.ColumnStyles[1].SizeType = SizeType.AutoSize; + + + + Task.Run(() => NVR_Runner()); + Task.Run(() => CCTV_Runner()); + + } + public void InitializeNVR() + { + for (int i = 0; i < config.NVR.Count; i++) + { + NVRStatus nvrStatus = new NVRStatus(config.NVR[i].Name, Resources.NVR_Success, Resources.NVR_Fail, Resources.NVR_Inspection); + nvrStatuses.Add(nvrStatus); + flowLayoutPanel.Controls.Add(nvrStatus); + } + } + + private void NVR_Runner() + { + Worker worker = new Worker(config); + worker.UpdateMessage += UpdateMessage; + worker.Start_NVR(); + + } + private void CCTV_Runner() + { + Worker worker = new Worker(config); + worker.UpdateMessage += UpdateMessage; + worker.Start_CCTV(); + } + + private void UpdateMessage(MessageSender sender, int from, StatusResult result) + { + Invoke((Action)(() => + { + switch (sender) + { + case MessageSender.NVR: + + nvrStatuses[from].StatusUpdate(result, DateTime.Now); + + + if (result != StatusResult.Success) + { + Log.WriteLog(LogLevel.Trace, "NVR " + (result == StatusResult.Fail ? "Fail" : "Inspection") + " : " + config.NVR[from].Name + " / " + config.NVR[from].IpAddress); + } + break; + case MessageSender.CCTV: + if (result == StatusResult.Success) + { + + listBox1.Items.Remove(config.CCTV[from].Name); + listBox2.Items.Remove(config.CCTV[from].Name); + + } + else if (result == StatusResult.Inspection) + { + + if (!listBox1.Items.Contains((config.CCTV[from].Name))) + { + listBox1.Items.Add(config.CCTV[from].Name); + } + listBox2.Items.Remove(config.CCTV[from].Name); + Log.WriteLog(LogLevel.Trace, "CCTV Inspection : " + config.CCTV[from].Name + " / " + config.CCTV[from].IpAddress); + } + else + { + + listBox1.Items.Remove(config.CCTV[from].Name); + if (!listBox2.Items.Contains(config.CCTV[from].Name)) + { + listBox2.Items.Add(config.CCTV[from].Name); + } + Log.WriteLog(LogLevel.Trace, "CCTV Fail : " + config.CCTV[from].Name + " / " + config.CCTV[from].IpAddress); + } + break; + + + default: + break; + } + })); + } + + + + } +} \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/MainForm.resx b/HSUCO_CCTV_Monitoring/MainForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/NVRStatus.Designer.cs b/HSUCO_CCTV_Monitoring/NVRStatus.Designer.cs new file mode 100644 index 0000000..55fac85 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/NVRStatus.Designer.cs @@ -0,0 +1,102 @@ +namespace HSUCO_CCTV_Monitoring +{ + partial class NVRStatus + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.label_ServerName = new System.Windows.Forms.Label(); + this.label_LastUpdateTimeName = new System.Windows.Forms.Label(); + this.label_LastUpdateTime = new System.Windows.Forms.Label(); + this.pictureBox_Status = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_Status)).BeginInit(); + this.SuspendLayout(); + // + // label_ServerName + // + this.label_ServerName.AutoSize = true; + this.label_ServerName.Font = new System.Drawing.Font("마비옛체", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label_ServerName.Location = new System.Drawing.Point(90, 5); + this.label_ServerName.Name = "label_ServerName"; + this.label_ServerName.Size = new System.Drawing.Size(107, 22); + this.label_ServerName.TabIndex = 1; + this.label_ServerName.Text = "주차장 이름"; + // + // label_LastUpdateTimeName + // + this.label_LastUpdateTimeName.AutoSize = true; + this.label_LastUpdateTimeName.Font = new System.Drawing.Font("마비옛체", 13F); + this.label_LastUpdateTimeName.Location = new System.Drawing.Point(90, 35); + this.label_LastUpdateTimeName.Name = "label_LastUpdateTimeName"; + this.label_LastUpdateTimeName.Size = new System.Drawing.Size(158, 20); + this.label_LastUpdateTimeName.TabIndex = 2; + this.label_LastUpdateTimeName.Text = "마지막 상태 변경 시간"; + // + // label_LastUpdateTime + // + this.label_LastUpdateTime.AutoSize = true; + this.label_LastUpdateTime.Font = new System.Drawing.Font("DS-Digital", 13F); + this.label_LastUpdateTime.Location = new System.Drawing.Point(120, 55); + this.label_LastUpdateTime.Name = "label_LastUpdateTime"; + this.label_LastUpdateTime.Size = new System.Drawing.Size(160, 18); + this.label_LastUpdateTime.TabIndex = 3; + this.label_LastUpdateTime.Text = "0000-00-00 00:00:00"; + // + // pictureBox_Status + // + this.pictureBox_Status.Location = new System.Drawing.Point(0, 0); + this.pictureBox_Status.Name = "pictureBox_Status"; + this.pictureBox_Status.Size = new System.Drawing.Size(80, 80); + this.pictureBox_Status.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_Status.TabIndex = 0; + this.pictureBox_Status.TabStop = false; + // + // ServerStatus + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(247)))), ((int)(((byte)(247))))); + this.Controls.Add(this.label_LastUpdateTime); + this.Controls.Add(this.label_LastUpdateTimeName); + this.Controls.Add(this.label_ServerName); + this.Controls.Add(this.pictureBox_Status); + this.Margin = new System.Windows.Forms.Padding(5); + this.Name = "ServerStatus"; + this.Size = new System.Drawing.Size(288, 80); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_Status)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox_Status; + private System.Windows.Forms.Label label_ServerName; + private System.Windows.Forms.Label label_LastUpdateTimeName; + private System.Windows.Forms.Label label_LastUpdateTime; + } +} diff --git a/HSUCO_CCTV_Monitoring/NVRStatus.cs b/HSUCO_CCTV_Monitoring/NVRStatus.cs new file mode 100644 index 0000000..2e1b530 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/NVRStatus.cs @@ -0,0 +1,66 @@ +using HSUCO_Server_Monitoring; +using System; +using System.Drawing; +using System.Runtime.Remoting.Channels; +using System.Windows.Forms; + +namespace HSUCO_CCTV_Monitoring +{ + public partial class NVRStatus : UserControl + { + private Image _success; + private Image _fail; + private Image _inspection; + private string _nvrName; + private StatusResult _statusResult; + private DateTime _lastUpdateTime; + + public NVRStatus(string nvrName, Image success, Image fail, Image inspection) + { + _nvrName = nvrName; + + _statusResult = StatusResult.Fail; + _lastUpdateTime = DateTime.Now; + + _success = success; + _fail = fail; + _inspection = inspection; + + InitializeComponent(); + label_ServerName.Text = _nvrName; + + DisplayChange(); + } + + public void StatusUpdate(StatusResult result, DateTime dateTime) + { + if (_statusResult != result) + { + _statusResult = result; + _lastUpdateTime = dateTime; + DisplayChange(); + } + + } + + private void DisplayChange() + { + switch(_statusResult) + { + case StatusResult.Success: + pictureBox_Status.Image = _success; + break; + case StatusResult.Fail: + pictureBox_Status.Image = _fail; + break; + case StatusResult.Inspection: + pictureBox_Status.Image = _inspection; + break; + default: + break; + + } + label_LastUpdateTime.Text = _lastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + } +} diff --git a/HSUCO_CCTV_Monitoring/NVRStatus.resx b/HSUCO_CCTV_Monitoring/NVRStatus.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/NVRStatus.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/Program.cs b/HSUCO_CCTV_Monitoring/Program.cs new file mode 100644 index 0000000..0061202 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Program.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace HSUCO_Server_Monitoring +{ + internal static class Program + { + /// + /// 해당 애플리케이션의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Log.logLevel = LogLevel.Trace; + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/HSUCO_CCTV_Monitoring/Properties/AssemblyInfo.cs b/HSUCO_CCTV_Monitoring/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..019ef84 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("HSUCO_Server_Monitoring")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HSUCO_Server_Monitoring")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("e1f4c9bf-fe6c-4f46-843c-93b4c575703c")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HSUCO_CCTV_Monitoring/Properties/Resources.Designer.cs b/HSUCO_CCTV_Monitoring/Properties/Resources.Designer.cs new file mode 100644 index 0000000..1ab7fa4 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Properties/Resources.Designer.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace HSUCO_CCTV_Monitoring.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HSUCO_CCTV_Monitoring.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap NVR_Fail { + get { + object obj = ResourceManager.GetObject("NVR_Fail", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap NVR_Inspection { + get { + object obj = ResourceManager.GetObject("NVR_Inspection", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap NVR_Success { + get { + object obj = ResourceManager.GetObject("NVR_Success", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/HSUCO_CCTV_Monitoring/Properties/Resources.resx b/HSUCO_CCTV_Monitoring/Properties/Resources.resx new file mode 100644 index 0000000..a008de0 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Properties/Resources.resx @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\NVR_Fail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\NVR_Inspection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\NVR_Success.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/Properties/Settings.Designer.cs b/HSUCO_CCTV_Monitoring/Properties/Settings.Designer.cs new file mode 100644 index 0000000..72805c2 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace HSUCO_CCTV_Monitoring.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/HSUCO_CCTV_Monitoring/Properties/Settings.settings b/HSUCO_CCTV_Monitoring/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/HSUCO_CCTV_Monitoring/Resources/NVR_Fail.png b/HSUCO_CCTV_Monitoring/Resources/NVR_Fail.png new file mode 100644 index 0000000000000000000000000000000000000000..bda18f4ce85eb52c5da7f7c3b2e0a422a106cd26 GIT binary patch literal 265227 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

wb?}92m1EyRJL6=S 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 marginal) + { + return StatusResult.Success; + } + if (successCount == 0) + { + return StatusResult.Fail; + } + return StatusResult.Inspection; + } + catch(Exception ex) + { + Log.FATAL(ex.Message); + return StatusResult.Fail; + } + } + + } +} \ No newline at end of file diff --git a/HSUCO_CCTV_Monitoring/Worker.cs b/HSUCO_CCTV_Monitoring/Worker.cs new file mode 100644 index 0000000..5b2f597 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/Worker.cs @@ -0,0 +1,53 @@ +using System.Threading; + +namespace HSUCO_Server_Monitoring +{ + public class Worker + { + public delegate void MessageHandler(MessageSender sender, int from, StatusResult result); + + public event MessageHandler UpdateMessage; + + private bool loop = true; + private Config _config; + public Worker(Config config) + { + _config = config; + + } + public void Start_NVR() + { + StatusChecker statusChecker = new StatusChecker(); + while (loop) + { + for (int i = 0; i < _config.NVR.Count; i++) + { + StatusResult result = statusChecker.Check(_config.NVR[i].IpAddress); + UpdateMessage(MessageSender.NVR, i,result); + } + Thread.Sleep(_config.NVR_DelayTime); + } + } + public void Start_CCTV() + { + int workerCount = _config.CCTV.Count / 50; + + StatusChecker statusChecker = new StatusChecker(); + while (loop) + { + for (int i = 0; i < _config.CCTV.Count; i++) + { + StatusResult result = statusChecker.Check(_config.CCTV[i].IpAddress); + UpdateMessage(MessageSender.CCTV, i, result); + } + Thread.Sleep(_config.CCTV_DelayTime); + } + } + public void End() + { + loop = false; + } + } + + +} diff --git a/HSUCO_CCTV_Monitoring/XmlSystem.cs b/HSUCO_CCTV_Monitoring/XmlSystem.cs new file mode 100644 index 0000000..5b10205 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/XmlSystem.cs @@ -0,0 +1,84 @@ +using System; +using System.IO; +using System.Xml.Serialization; + +namespace HSUCO_Server_Monitoring +{ + public static class XmlSystem + { + public static bool Save(string path, T data) where T : struct + { + if (string.IsNullOrWhiteSpace(path)) + { + return false; + } + string directory = Path.GetDirectoryName(System.IO.Path.GetFullPath(path)); + if (!System.IO.Directory.Exists(directory)) + { + Directory.CreateDirectory(directory); + } + using (StreamWriter sw = new StreamWriter(path)) + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); + + xmlSerializerNamespaces.Add("", ""); + xmlSerializer.Serialize(sw, data, xmlSerializerNamespaces); + sw.Close(); + } + return true; + } + + public static T LoadFromPath(string path) where T : struct + { + if (string.IsNullOrWhiteSpace(path)) + { + return default; + } + string directory = Path.GetDirectoryName(System.IO.Path.GetFullPath(path)); + if (!System.IO.Directory.Exists(directory)) + { + Directory.CreateDirectory(directory); + } + if (!File.Exists(path)) + { + return default; + } + using (StreamReader sr = new StreamReader(path)) + { + try + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + T data = (T)xmlSerializer.Deserialize(sr); + return data; + } + catch (Exception ex) + { + Log.FATAL(ex.Message); + return default; + } + } + } + + public static T LoadFromData(string data) where T : struct + { + if (string.IsNullOrWhiteSpace(data)) + { + return default; + } + using (StringReader sr = new StringReader(data)) + { + try + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + return (T)xmlSerializer.Deserialize(sr); + } + catch (Exception ex) + { + Log.FATAL(ex.Message); + return default; + } + } + } + } +} diff --git a/HSUCO_CCTV_Monitoring/packages.config b/HSUCO_CCTV_Monitoring/packages.config new file mode 100644 index 0000000..a6f18b8 --- /dev/null +++ b/HSUCO_CCTV_Monitoring/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file