You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

120 lines
3.8 KiB

namespace JeepConsole
{
using OT.COM.SignalerMessage;
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.Configuration;
using log4net;
using System.Reflection;
using log4net.Config;
using System.Text;
internal static class Program
{
private readonly static ILog _log = LogManager.GetLogger(typeof(Program));
[STAThread]
private static void Main()
{
LoadLog4netConfig();
System.Threading.Mutex mu = new System.Threading.Mutex(true, string.Format("Global\\{0}", typeof(Program).GUID), out bool IsAppRunning);
if (!IsAppRunning)
{
_log.Error("Leave Program without doing anything(Mutex)");
mu.Dispose();
Environment.Exit(1);
}
try
{
#if DEBUG
string sSettingFile = "appsettings.Development.json";
#else
string sSettingFile = "appsettings.json" ;
#endif
string[] saCmd = System.Environment.GetCommandLineArgs();
_log.Info(saCmd);
StringBuilder sb = new StringBuilder("AP Start! ");
int nIndex = 0;
foreach (string sCmd in saCmd)
{
sb.Append($"Para[{nIndex++}] = '{sCmd}'");
}
_log.Info(sb.ToString());
_log.Info($"Current directory: {Directory.GetCurrentDirectory()}");
IConfigurationRoot configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(sSettingFile, optional: true, reloadOnChange: true).Build();
IEnumerable<IConfigurationSection> ics = configuration.GetSection("appSettings").GetChildren();
Dictionary<string, string> dicSetting = new Dictionary<string, string>();
foreach (IConfigurationSection ic in ics)
{
dicSetting.Add(ic.Key, ic.Value);
}
if (saCmd.Length == 4 && saCmd[1] == "CMD")
{
string sURL = $"{dicSetting["apiserver"]}/Cmd";
_log.Info($"URL = {sURL} ");
SendWebApiRequest swr = new SendWebApiRequest();
CRequestMessage crm = new CRequestMessage()
{
module = saCmd[2],
method = saCmd[3]
};
CReqestPack crqp = new CReqestPack
{
Reqs = new List<CReqestItem>()
{
new CReqestItem(){ Req = crm }
}
};
string sRes = swr.RunEncryptRequest(sURL, crqp, out string o_sRes);
if (sRes != null)
{
_log.Error($"Result = {sRes}");
}
else
{
_log.Info($"Response = {o_sRes}");
}
}
else
{
_log.Info($"NO SUPPORT COMMAND. Ex JeepConsole.exe CMD RPT.ReportSchedule Run");
}
}
catch
{
string sMsg = $"{nameof(Main)} unknwon exception.";
System.Diagnostics.Debug.Write(sMsg);
_log.Error(sMsg);
}
_log.Info("AP Close! ");
}
private static void LoadLog4netConfig()
{
var repository = LogManager.CreateRepository(
Assembly.GetEntryAssembly(),
typeof(log4net.Repository.Hierarchy.Hierarchy)
);
XmlConfigurator.Configure(repository, new FileInfo("Log4Net.config"));
}
}
}