using System; using System.Net.ApiService; using System.Fire.Ini; using System.Collections.Generic; using System.Net.ApiService.VHost_Server; using System.ConsoleApp; using System.ConsoleApp.Drawing; using Keln.Progress; using Keln.Progress.EventHandler; namespace Keln { class Program { public static Dictionary processes = new Dictionary(); //public static HttpApiServer api; public static ApiServer api; /*private static Console_LabelDescription lblDeviceEmotion; private static Console_LabelDescription lblIntensi; private static Console_LabelDescription lblSambale; private static Console_LabelDescription lblSozoti; private static Console_LabelDescription lblSpeech; private static Console_LabelDescription lblGregorCalendus;*/ private static Console_TableRow lblDeviceEmotion; private static Console_TableRow lblIntensi; private static Console_TableRow lblSambale; private static Console_TableRow lblSozoti; private static Console_TableRow lblSpeech; private static Console_TableRow lblGregorCalendus; static void Main(string[] args) { string cmd = "deviceemotion 192.168.0.1 -port 80 -referer http://google.com -boolisch -b2 -t Hallo Welt -file device-emotion.exe"; System.Diagnostics.Process[] localAll = System.Diagnostics.Process.GetProcesses(); foreach(System.Diagnostics.Process p in localAll) { //System.Diagnostics.Debug.WriteLine(p.); } //System.ConsoleApp.ConsoleAdvanced.WriteJson("{\"Herausgeber\": \"Xema\",\"Nummer\": \"1234-5678-9012-3456\",\"Deckung\": 2e+6,\"Waehrung\": \"EURO\",\"Inhaber\":{\"Name\": \"Mustermann\",\"Vorname\": \"Max\",\"Größe\": 1.92,\"Zitat\":\"Das Haus \\\"Sozi\\\" ist das Beste\",\"maennlich\": true,\"Hobbys\": [\"Reiten\", \"Golfen\", \"Lesen\"],\"Alter\": 42,\"Kinder\": [],\"Partner\": null }}"); // Start Api Server iniHandle config = new iniHandle("config/services.conf"); ushort port = config["Keln"]["Port"].UInt16; if (port == 0) port = 8010; //api = new HttpApiServer("./www", port); api = new ApiServer("./www", port); System.Timers.Timer tmrUpdateMemory = new System.Timers.Timer(5000); tmrUpdateMemory.AutoReset = true; tmrUpdateMemory.Elapsed += TmrUpdateMemory_Elapsed; tmrUpdateMemory.Enabled = true; tmrUpdateMemory.Start(); System.Timers.Timer tmrAvailable = new System.Timers.Timer(30000); tmrAvailable.AutoReset = true; tmrAvailable.Elapsed += TmrAvailable_Elapsed; tmrAvailable.Enabled = true; tmrAvailable.Start(); Console_Window servicewin = new Console_Window(new ConsoleRect(2, 2, 102, 13), "Services"); Console_Label lblServiceTitle = new Console_Label(servicewin, new ConsoleRect(1, 0, 60, 1), "List of services"); /*lblDeviceEmotion = new Console_LabelDescription(servicewin, new ConsoleRect(1, 1, 60, 1), "DeviceEmotion"); lblIntensi = new Console_LabelDescription(servicewin, new ConsoleRect(1, 2, 60, 1), "Intensi"); lblSambale = new Console_LabelDescription(servicewin, new ConsoleRect(1, 3, 60, 1), "Sambale"); lblSozoti = new Console_LabelDescription(servicewin, new ConsoleRect(1, 4, 60, 1), "Sozoti"); lblSpeech = new Console_LabelDescription(servicewin, new ConsoleRect(1, 5, 60, 1), "Speech"); lblGregorCalendus = new Console_LabelDescription(servicewin, new ConsoleRect(1, 6, 60, 1), "GregorCalendus");*/ lblDeviceEmotion = new Console_TableRow(servicewin, new ConsoleRect(1, 1, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "DeviceEmotion", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["DeviceEmotion"]["Host"].Value+":"+config["DeviceEmotion"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); lblIntensi = new Console_TableRow(servicewin, new ConsoleRect(1, 2, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "Intensi", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["Intensi"]["Host"].Value+":"+config["Intensi"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); lblSambale = new Console_TableRow(servicewin, new ConsoleRect(1, 3, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "Sambale", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["Sambale"]["Host"].Value+":"+config["Sambale"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); lblSozoti = new Console_TableRow(servicewin, new ConsoleRect(1, 4, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "Sozoti", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["Sozoti"]["Host"].Value+":"+config["Sozoti"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); lblSpeech = new Console_TableRow(servicewin, new ConsoleRect(1, 5, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "Speech", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["Speech"]["Host"].Value+":"+config["Speech"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); lblGregorCalendus = new Console_TableRow(servicewin, new ConsoleRect(1, 6, 60, 1), new Console_TableCell[] { new Console_TableCell() { value = "GregorCalendus", width = 20, Color = ConsoleColor.White }, new Console_TableCell() { value = "Not Running", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = "Not available", width = 15, Color = ConsoleColor.Red }, new Console_TableCell() { value = config["GregorCalendus"]["Host"].Value+":"+config["GregorCalendus"]["Port"].Value, width = 30, Color = ConsoleColor.White }, new Console_TableCell() { value = "0,00 MB", width = 12, Color = ConsoleColor.White, Align = Console_TableCell.TextAlign.Right } }); Console_Progressbar progress = new Console_Progressbar(servicewin, new ConsoleRect(0, 8, 78, 1), Console_Progressbar.TextStyle.Percent); Console.CursorTop += 15; progress.Max = 10; progress.Min = 0; api.Start(); progress.Value++; /*VHostServer vhost = new VHostServer(80); vhost.Redirects.Add(new VHostRedirect("localhost", 8000, new VHostRedirectCondition[] { new VHostRedirectCondition(VHostRedirectCondition.eVaraible.Host, "^(?deviceemotion\\.zoe\\.de)$") })); vhost.Redirects.Add(new VHostRedirect("localhost", 8001, new VHostRedirectCondition[] { new VHostRedirectCondition(VHostRedirectCondition.eVaraible.Host, "^(?intensi\\.zoe\\.de)$") })); vhost.Redirects.Add(new VHostRedirect("localhost", 8002, new VHostRedirectCondition[] { new VHostRedirectCondition(VHostRedirectCondition.eVaraible.Host, "^(?sambale\\.zoe\\.de)$") })); vhost.Redirects.Add(new VHostRedirect("localhost", 8003, new VHostRedirectCondition[] { new VHostRedirectCondition(VHostRedirectCondition.eVaraible.Host, "^(?sozoti\\.zoe\\.de)$") })); vhost.Redirects.Add(new VHostRedirect("localhost", 8004, new VHostRedirectCondition[] { new VHostRedirectCondition(VHostRedirectCondition.eVaraible.Host, "^(?speech\\.zoe\\.de)$") })); vhost.Start();*/ processes.Add("deviceemotion", new ProcessInfo("DeviceEmotion.exe", true, DeviceEmotion_StateChange)); progress.Value++; processes.Add("intensi", new ProcessInfo("Intensi.exe", true, Intensi_StateChange)); progress.Value++; processes.Add("sambale", new ProcessInfo("Sambale.exe", true, Sambale_StateChange)); progress.Value++; processes.Add("sozoti", new ProcessInfo("Sozoti.exe", true, Sozoti_StateChange)); progress.Value++; processes.Add("speech", new ProcessInfo("Speech.exe", true, Speech_StateChange)); progress.Value++; processes.Add("gregor", new ProcessInfo("GregorCalendus.exe", true,GregorCalendus_StateChange)); progress.Value = progress.Max; System.ConsoleApp.ConsoleAdvanced.Run("Keln"); tmrUpdateMemory.Enabled = false; tmrUpdateMemory.Stop(); tmrUpdateMemory.Dispose(); foreach(KeyValuePair kv in processes) { kv.Value.Stop(); } api.Stop(); } private static void TmrUpdateMemory_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { RefreshMemory(lblDeviceEmotion, "deviceemotion"); RefreshMemory(lblIntensi, "intensi"); RefreshMemory(lblSambale, "sambale"); RefreshMemory(lblSozoti, "sozoti"); RefreshMemory(lblSpeech, "speech"); RefreshMemory(lblGregorCalendus, "gregor"); } private static void TmrAvailable_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { CheckAvailable(lblDeviceEmotion, Leah.Client.eService.DeviceEmotion); CheckAvailable(lblIntensi, Leah.Client.eService.Intensi); CheckAvailable(lblSambale, Leah.Client.eService.Sambale); CheckAvailable(lblSozoti, Leah.Client.eService.Sozoti); CheckAvailable(lblSpeech, Leah.Client.eService.Speech); CheckAvailable(lblGregorCalendus, Leah.Client.eService.GregorCalendus); } private static void CheckAvailable(Console_TableRow lbl, Leah.Client.eService service) { lbl.SetValue(2, "Checking...", ConsoleColor.Yellow); string host = Leah.Client.GetHostPort(service); //My.Computer.Network.Ping("192.168.2.10:21") string res_Gregor = Leah.Client.GetString(service, "/ping"); if (res_Gregor == "pong") lbl.SetValue(2, "Available", ConsoleColor.Green); else lbl.SetValue(2, "Not available", ConsoleColor.Red); } private static void DeviceEmotion_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblDeviceEmotion, e.State); RefreshMemory(lblDeviceEmotion, "deviceemotion"); } private static void Intensi_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblIntensi, e.State); RefreshMemory(lblIntensi, "intensi"); } private static void Sambale_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblSambale, e.State); RefreshMemory(lblSambale, "sambale"); } private static void Sozoti_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblSozoti, e.State); RefreshMemory(lblSozoti, "sozoti"); } private static void Speech_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblSpeech, e.State); RefreshMemory(lblSpeech, "speech"); } private static void GregorCalendus_StateChange(object sender, StateChangeEventArgs e) { RefreshState(lblGregorCalendus, e.State); RefreshMemory(lblGregorCalendus, "gregor"); } public static void RefreshMemory(Console_TableRow lbl, string processName) { //lbl.Text[2] = Math.Round((decimal)processes[processName].PagedMemorySize64 / 1048576,2).ToString() + " MB"; if(processes.ContainsKey(processName)) lbl.SetValue(4, Math.Round((decimal)processes[processName].PagedMemorySize64 / 1048576, 2).ToString() + " MB"); else lbl.SetValue(4, "- MB"); } public static void RefreshState(Console_TableRow lbl, eState state) { switch (state) { case eState.Restart: lbl.SetValue(1, "Restart", ConsoleColor.Yellow); break; case eState.Running: lbl.SetValue(1, "Running", ConsoleColor.Green); break; case eState.Stopped: lbl.SetValue(1, "Stopped", ConsoleColor.Red); break; case eState.Stopping: lbl.SetValue(1, "Stopping", ConsoleColor.Red); break; case eState.Update: lbl.SetValue(1, "Update", ConsoleColor.Yellow); break; case eState.NotRunning: lbl.SetValue(1, "Not running", ConsoleColor.Red); break; case eState.Already_Running: lbl.SetValue(1, "Application", ConsoleColor.Green); break; case eState.Service: lbl.SetValue(1, "Service", ConsoleColor.Green); break; } } private static void RefreshState(Console_LabelDescription lbl, eState state) { switch (state) { case eState.Restart: lbl.ValueColor = ConsoleColor.Yellow; lbl.Value = "Restart"; break; case eState.Running: lbl.ValueColor = ConsoleColor.Green; lbl.Value = "Running"; break; case eState.Stopped: lbl.ValueColor = ConsoleColor.Red; lbl.Value = "Stopped"; break; case eState.Stopping: lbl.ValueColor = ConsoleColor.Red; lbl.Value = "Stopping"; break; case eState.Update: lbl.ValueColor = ConsoleColor.Yellow; lbl.Value = "Update"; break; case eState.NotRunning: lbl.ValueColor = ConsoleColor.Red; lbl.Value = "Not running"; break; } } } }