/// <summary> /// Запрос пароля к БД /// </summary> /// <returns></returns> public string GetDBPass(string address_, string machine_id) { string return_var = ""; StringBuilder strb = new StringBuilder(); try { strb.AppendFormat("{0}/db?id={1}", address_, machine_id); eventLog1.WriteEntry(strb.ToString(), EventLogEntryType.SuccessAudit, 408); WebRequest request = WebRequest.Create(strb.ToString()); // WebResponse response = request.GetResponse(); using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { return_var = reader.ReadToEnd(); } } response.Close(); if (return_var == String.Empty) { eventLog1.WriteEntry("Server does not recived parametrs for database", EventLogEntryType.Error, 5); } else { String encoded = Convert.ToBase64String(Encoding.GetEncoding(65001) .GetBytes(return_var)); eventLog1.WriteEntry(encoded, EventLogEntryType.SuccessAudit, 0); } } catch (Exception exc) { eventLog1.WriteEntry(exc.Message, EventLogEntryType.Warning, 22); } ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(return_var); return(resp.data.db_pass); }
/// <summary> /// Проверка статуса разрешения отправки данных в большую БД /// </summary> /// <param name="machine_id"></param> /// <param name="status"></param> /// <param name="server_uri"></param> /// <returns></returns> public bool Check_status_send(string machine_id, int status, string server_uri) { //String username = "******"; //String password = "******"; //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)); //httpWebRequest.Headers.Add("Authorization", "Basic " + encoded); string return_var = string.Empty; StringBuilder strb = new StringBuilder(); try { strb.AppendFormat("{0}/check?id={1}&status={2}", server_uri, machine_id, status); WebRequest request = WebRequest.Create(strb.ToString()); // WebResponse response = request.GetResponse(); using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { return_var = reader.ReadToEnd(); } } response.Close(); } catch (WebException exc) { eventLog1.WriteEntry(exc.Message, EventLogEntryType.Error, 8); } if (return_var == String.Empty) { eventLog1.WriteEntry("Server was not responded status", EventLogEntryType.Error, 7); } else { eventLog1.WriteEntry("All ok " + return_var, EventLogEntryType.SuccessAudit, 0); } ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(return_var); return(resp.data.status); }
/// <summary> /// Обработка таблицы алармов /// </summary> private void AlarmProcess() { //2. Получаем последний ID из большой базы var last_outer_ID = GetLastIDFromBIGDB(ID_Machina, adress, "Allarmi"); if (!CHECK_DB) { //1. Получаем последний ID из локальной БД var last_local_ID = alrmTableAdapter.GetLastIDList(); if (last_outer_ID != String.Empty) { ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID); int local_polyciomid = (int)last_local_ID.Rows[0]["ID"]; int local_total_suit = (int)last_local_ID.Rows[0]["Total_suitcase"]; if (resp.data.polycommid == 0 && resp.data.total == 0)// если сервер вернул нули, то есть в БД еще нед упаково от данной машины { string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alrmTableAdapter); if (!String.IsNullOrEmpty(jsonAlarms_str)) { //Отправляем все данные что есть в локальной бд Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi"); } } else { // если пришли не нули, то проверяем есть ли данная цепочка идентификаторов в локальной БД //if ((int)alrmTableAdapter.CheckAlarms(resp.data.polycommid, (int)resp.data.total) == 0) //{ // Check_status_send(ID_Machina, 1, adress); // eventLog1.WriteEntry("Data flow from this machine was stoped by machine by alarms", EventLogEntryType.Error, 1); //} //else { //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа var status = Check_status_send(ID_Machina, 1, adress); if (status) { //выбираем все записи из локальной БД больше if (local_polyciomid > resp.data.polycommid) { string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alrmTableAdapter); if (!String.IsNullOrEmpty(jsonAlarms_str)) { //Отправляем все данные что есть в локальной бд Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi"); } } else { eventLog1.WriteEntry("Don`t have new alarms", EventLogEntryType.Information, 2); } } else { eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3); } } } } } else { //Обработка БД Packfly //1. Получаем последний ID из локальной БД var last_local_ID = alarmtabAd.GetLastIDList(); if (last_outer_ID != String.Empty) { ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID); int local_polyciomid = (int)last_local_ID.Rows[0][0]; // int local_total_suit = (int)last_local_ID.Rows[0][1]; if (resp.data.polycommid == 0)// если сервер вернул нули, то есть в БД еще нед упаково от данной машины { string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alarmtabAd); if (!String.IsNullOrEmpty(jsonAlarms_str)) { //Отправляем все данные что есть в локальной бд Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi"); } } else { //if ((int)alarmtabAd.CheckAlarms(resp.data.polycommid) == 0) //{ // Check_status_send(ID_Machina, 0, adress); // eventLog1.WriteEntry("Data flow from this machine was stoped by machine by alarms", EventLogEntryType.Error, eventId++); //} //else { //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа var status = Check_status_send(ID_Machina, 1, adress); if (status) { //выбираем все записи из локальной БД больше if (local_polyciomid > resp.data.polycommid) { string jsonAlarms_str = GetAlarmifromlocalDB(resp.data.polycommid, alarmtabAd); if (!String.IsNullOrEmpty(jsonAlarms_str)) { //Отправляем все данные что есть в локальной бд Send_data(ID_Machina, jsonAlarms_str, adress, "Allarmi"); } } else { eventLog1.WriteEntry("Don`t have new alarms", EventLogEntryType.Information, 2); } } else { eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3); } } } } } }
///Запуск службы на стронних машинах: ///1. закидываем службу нужной сборки Release x64 для Win x64 и Release x86 для Win x86. /// установка из консоли с правами админа /// c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe "место расположения файла службы без пробелов" /// <summary> /// Обработка таблици упаковок /// </summary> private void SuitcaseProcess() { //1.Get last id from big DB // 1.1 Получить ID машины. // 1.2 Сформировать запрос на сервер // 1.3 Получить данные с сервера //2. Выбрать эти данные из локальной базы данных // 2.1 если есть то отдать на сервер status 1 // 2.2 если НЕТ то отдать на сервер status 0 try { var last_local_ids = new ListIDs(); //1. Получаем последний ID из локальной БД //Константа CHECK_DB определеятеся по тому какая БД стоит на локальной машине MDB или ACCDB, //соответственно выбираются разные адаптеры для определения последнего ID в локальной БД if (!CHECK_DB) { //MDB var last_local_ID = suitTableAdapter.GetLastIDlist(); last_local_ids.localid = (int)last_local_ID.Rows[0][0]; last_local_ids.local_total = (int)last_local_ID.Rows[0][1]; last_local_ids.local_parziale = (int)last_local_ID.Rows[0][2]; } else { //ACCDB var last_local_ID = suittabAd.GetLastIDList(); last_local_ids.localid = (int)last_local_ID.Rows[0][0]; last_local_ids.local_total = (int)last_local_ID.Rows[0][1]; last_local_ids.local_parziale = (int)last_local_ID.Rows[0][2]; } eventLog1.WriteEntry(string.Format("ID:{0}; Totale_ID:{1}; Parziale_ID: {2}", last_local_ids.localid, last_local_ids.local_total, last_local_ids.local_parziale), EventLogEntryType.Information, 10); //2. Получаем последний ID из большой базы var last_outer_ID = GetLastIDFromBIGDB(ID_Machina, adress, "Suitcase"); if (last_outer_ID != String.Empty) { //если данные из большой БД пришли, то запускаем парсинг json, разбор полученных данных ServerSuitResponse resp = JsonConvert.DeserializeObject <ServerSuitResponse>(last_outer_ID); if (resp.data.polycommid == 0 && resp.data.totalid == 0 && resp.data.partialid == 0) { //Пришло сервера 000 // если сервер вернул нули, то есть в БД еще нет упаковок от данной машины string jsonSuitcases_str = ""; if (!CHECK_DB) { //MDB jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suitTableAdapter); //GetSuitcasesfromlocalDB - } else if (CHECK_DB) { //ACCDB jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suittabAd); } if (!String.IsNullOrEmpty(jsonSuitcases_str)) { //Отправляем все данные что есть в локальной бд Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase"); } } else { if (!CHECK_DB) { // если пришли не 000, то проверяем есть ли данная цепочка идентификаторов в локальной БД if ((int)suitTableAdapter.GetValidData(resp.data.polycommid, resp.data.totalid, resp.data.partialid) == 0) { // если цепочки нет, то шлем на сервер статуст 0 Check_status_send(ID_Machina, 0, adress); eventLog1.WriteEntry("Data flow from this machine was stoped by machine by Suitcase", EventLogEntryType.Error, 1); } else { //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа var status = Check_status_send(ID_Machina, 1, adress); if (status) { //выбираем все записи из локальной БД больше if (last_local_ids.localid > resp.data.polycommid) { string jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suitTableAdapter); if (!String.IsNullOrEmpty(jsonSuitcases_str)) { // Отправляем данные на сервер методом POST Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase"); } } else { eventLog1.WriteEntry("Don`t have new suitcases", EventLogEntryType.Information, 2); } } else { eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3); } } } else { // если пришли не нули, то проверяем есть ли данная цепочка идентификаторов в локальной БД if ((int)suittabAd.GetValidData(resp.data.polycommid, resp.data.totalid, resp.data.partialid) == 0) { // если нет, то шлем на сервер статуст 0 Check_status_send(ID_Machina, 0, adress); eventLog1.WriteEntry("Data flow from this machine was stoped by machine by Suitcase", EventLogEntryType.Error, 1); } else { //если цепочка есть, то отправляем статус 1 на сервер и на основании ответа var status = Check_status_send(ID_Machina, 1, adress); if (status) { //выбираем все записи из локальной БД больше if (last_local_ids.localid > resp.data.polycommid) { string jsonSuitcases_str = GetSuitcasesfromlocalDB(resp.data.polycommid, suittabAd); if (!String.IsNullOrEmpty(jsonSuitcases_str)) { // Отправляем данные на сервер методом POST Send_data(ID_Machina, jsonSuitcases_str, adress, "Suitcase"); } } else { eventLog1.WriteEntry("Don`t have new suitcases", EventLogEntryType.Information, 2); } } else { eventLog1.WriteEntry("Data flow from this machine was stoped by server", EventLogEntryType.Error, 3); } } } } } } catch (Exception exc) { eventLog1.WriteEntry(string.Format("Trouble: {0} ", exc.ToString()), EventLogEntryType.Error, 3); } }