/// <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 ""; }); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { /*List<TMSG> list = new List<TMSG>(); list.Add(new TMSG()); list.Add(new TMSG()); list.Add(new TMSG()); DataTable dt = list.ToDataTable(); XmlDocument xml = list.Serialize(new List<string>() { "ID","Address", "DBStatusInt" });*/ this.Visibility = Visibility.Hidden; m_config = (TConfig)m_config.LoadXML("config.xml"); TConnector.Init(m_config); LoadData(); TLogger.NoEmail = true; TLogger.Init("PPFSend", m_config); TLogger.NoEmail = false; this.Visibility = Visibility.Visible; }
public void Run(TConfig _config, OnDBChangedDelegate _ondbchange = null) { m_StartDate = DateTime.Now; TLogger.Add("Начинается запуск MMB", TLogger.MSGType.eEmail); if (_config == null || _config.DBAuth == null) { TLogger.Add("Ошибка чтения кофигурационного файла. Не указаны учетные данные БД MMB.", TLogger.MSGType.eEmail); return; } Config = _config; TLogger.NoEmail = true; TMSG.Timeout = Config.MessageTimeout; OnDBChange = _ondbchange; RunModule(BGModule.eTicker); RunModule(BGModule.eGetDB); RunModule(BGModule.eSendSMS); RunModule(BGModule.eSendEMail); //BWSendEMAIL = null; RunModule(BGModule.eSendCab); RunModule(BGModule.eSendRPost); RunModule(BGModule.eGetStatus); RunModule(BGModule.eSetDb); TLogger.NoEmail = false; TLogger.Add("MMB успешно запущен", TLogger.MSGType.eEmail); }
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; }
public static void Init(string _FilePrefix, TConfig _config) { CurCreateDate = DateTime.Now; FilePrefix = _FilePrefix; Config = _config; Close(); BGWSendEmail = new BackgroundWorker(); BGWSendEmail.WorkerSupportsCancellation = true; BGWSendEmail.DoWork += BGWSendEmail_DoWork; BGWSendEmail.RunWorkerCompleted += (obj, arg) => { BGWSendEmail = null; }; BGWSendEmail.RunWorkerAsync(); PrepareLog(); }
public static void Init(TConfig _config) { Config = _config; }