/// <summary> /// Запуск процессов сервиса /// </summary> /// <param name="args">Аргументы коммандной строки</param> protected override void OnStart(string[] args) { // Run TConfig config = new TConfig(); try { config = (TConfig)config.LoadXML("config.xml"); } catch (Exception _ex) { Console.WriteLine("Fatal Error! Cann't load config.xml! EXCEPTION: " + _ex.Message); return; } TConnector.Init(config); TLogger.Init("PPFSend", config); robot.Run(config); if (config.InfoServerPort > 0) { TServer.Run(config.InfoServerPort, (obj) => { if (obj != null && obj.ToString() != "" && obj.ToString()[0]=='/') return robot.ParseCMD(obj.ToString().Substring(1)); return ""; }); } }
public string ParseCMD(string _cmd) { string retval = @"<html> <head> <meta charset = 'utf-8'> <title> Текущее состояние рассыльщика</title> </head> <body>"; if (_cmd != null) { string[] cmdarr = _cmd.Split('/'); if (_cmd == "") retval = GetState(); if (cmdarr.Length > 0) { switch (cmdarr[0].ToUpper()) { case "RECONFIG": TConfig config = new TConfig(); bool ok = true; try { config = (TConfig)config.LoadXML("config.xml"); } catch (Exception _ex) { ok = false; TLogger.Add("Не удалось обновить конфигурацию MMB! EXCEPTION: " + _ex.Message, TLogger.MSGType.eEmail); retval += "<h1>Не удалось обновить конфигурацию MMB! EXCEPTION: " + _ex.Message + "</h1>"; } if (ok) { TConnector.Init(config); TLogger.Init("PPFSend", config); Config = config; TServer.Kill(); if (config.InfoServerPort > 0) { TServer.Run(config.InfoServerPort, (obj) => { if (obj != null && obj.ToString() != "" && obj.ToString()[0] == '/') return this.ParseCMD(obj.ToString().Substring(1)); return ""; }); } TLogger.Add("Конфигурация MMB обновлена!", TLogger.MSGType.eEmail); retval += "<h1>Конфигурация MMB обновлена!</h1>"; } break; /* case "SEND": if (cmdarr.Length >= 4) { TMSG msg = new TMSG(); switch (cmdarr[1].ToUpper()) { case "SMS": msg.Channel = MSGDeliveryChannel.eSMS; break; case "EMAIL": msg.Channel = MSGDeliveryChannel.eEmail; break; case "CAB": msg.Channel = MSGDeliveryChannel.eCab; break; } msg.Priority = int.Parse(cmdarr[2]); msg.Address = cmdarr[3]; for (int i = 4; i<cmdarr.Length; i++) { msg.Text += cmdarr[i]; } msg.ToSend = DateTime.Now; msg.AddDate = DateTime.Now; msg.ID = DBQuery.InsertMSG(msg); if (msg.ID >= 0) { lock (Queue2Send) { Queue2Send.Add(msg); } retval += "<h1>Сообщение с текстом: '" + msg.Text + "' отправлено по адресу " + msg.Address + "</h1>"; } if (OnDBChange != null) OnDBChange(); } break;*/ case "MODULE": if (cmdarr.Length >=3) { List<BGModule> module = new List<BGModule>(); switch (cmdarr[1].ToUpper()) { case "DBGET": module.Add(BGModule.eGetDB); break; case "SENDSMS": module.Add(BGModule.eSendSMS); break; case "SENDEMAIL": module.Add(BGModule.eSendEMail); break; case "SENDCAB": module.Add(BGModule.eSendCab); break; case "SENDRPOST": module.Add(BGModule.eSendRPost); break; case "GETSTATUS": module.Add(BGModule.eGetStatus); break; case "DBSET": module.Add(BGModule.eSetDb); break; case "SEND": module.Add(BGModule.eSendSMS); module.Add(BGModule.eSendEMail); module.Add(BGModule.eSendCab); module.Add(BGModule.eSendRPost); break; case "ALL": module.Add(BGModule.eGetDB); module.Add(BGModule.eSendSMS); module.Add(BGModule.eSendEMail); module.Add(BGModule.eSendCab); module.Add(BGModule.eSendRPost); module.Add(BGModule.eGetStatus); module.Add(BGModule.eSetDb); break; } switch (cmdarr[2].ToUpper()) { case "STOP": foreach (var mod in module) { if (StopModule(mod)) retval += "<h1>Модуль "+mod+" остановлен.</h1>"; else retval += "<h1>Не удалось остановить модуль " + mod + ".</h1>"; } break; case "START": foreach (var mod in module) { if (RunModule(mod)) retval += "<h1>Модуль " + mod + " запущен.</h1>"; else retval += "<h1>Не удалось запустить модуль " + mod + ".</h1>"; } break; case "RESTART": foreach (var mod in module) { if (StopModule(mod)) retval += "<h1>Модуль " + mod + " остановлен.</h1>"; else retval += "<h1>Не удалось остановить модуль " + mod + ".</h1>"; } foreach (var mod in module) { if (RunModule(mod)) retval += "<h1>Модуль " + mod + " запущен.</h1>"; else retval += "<h1>Не удалось запустить модуль " + mod + ".</h1>"; } break; } } break; case "INFO": retval = GetState(); break; } } } retval += "</body></html>"; return retval; }