protected void Button_confirm_Click(object sender, EventArgs e) { if (Page.IsValid) { response_label.Text = string.Empty; response_label.ForeColor = System.Drawing.Color.Green; Asterisks createdAsterisk = new Asterisks(); createdAsterisk.name_Asterisk = TextBox_name.Text; createdAsterisk.prefix_Asterisk = TextBox_prefix.Text; createdAsterisk.ip_address = TextBox_ipAddress.Text; createdAsterisk.login_AMI = TextBox_login.Text; createdAsterisk.password_AMI = Utils.EncryptAMIPassword(TextBox_password.Text.Trim()); createdAsterisk.asterisk_owner = Membership.GetUser().UserName.ToString(); createdAsterisk.tls_enabled = (CheckBox_TLS.Checked) ? 1 : 0; createdAsterisk.tls_certDestination = TextBox_certDestination.Text; response_label.Text = TrunkManager.trunkManagerInstance.createTrunk(createdAsterisk); if (response_label.Text.StartsWith("Nastala") || response_label.Text.StartsWith("Čas")) { response_label.ForeColor = System.Drawing.Color.Red; } response_label.Visible = true; GridView_Asterisks.DataBind(); } }
public List<string> loadUsersInAsterisk(string asteriskName, out string errorMessage) { errorMessage = string.Empty; selectedAsterisk = asteriskAccessLayer.SelectAsterisksByName(asteriskName); List<string> usersList = new List<string>(); try { login(selectedAsterisk.ip_address, selectedAsterisk.login_AMI, Utils.DecryptAMIPassword(selectedAsterisk.password_AMI)); usersList = getUsersByAsterisk(selectedAsterisk.name_Asterisk); logoff(); } catch (AsterNET.Manager.AuthenticationFailedException afe) { errorMessage = "Načítanie užívateľov zlyhalo!"; } catch (AsterNET.Manager.TimeoutException to) { errorMessage = "Načítanie užívateľov zlyhalo!"; } catch (AsterNET.Manager.ManagerException me) { errorMessage = "Načítanie užívateľov zlyhalo!"; } return usersList; }
public int insertAsterisk(Asterisks asterisk) { using (SqlConnection connection = new SqlConnection(CS)) { SqlCommand insertCmd = new SqlCommand("insertAsterisk", connection); insertCmd.CommandType = System.Data.CommandType.StoredProcedure; insertCmd.Parameters.AddWithValue("@name_Asterisk", asterisk.name_Asterisk); insertCmd.Parameters.AddWithValue("@prefix_Asterisk", asterisk.prefix_Asterisk); insertCmd.Parameters.AddWithValue("@ip_address", asterisk.ip_address); insertCmd.Parameters.AddWithValue("@login_AMI", asterisk.login_AMI); insertCmd.Parameters.AddWithValue("@password_AMI", asterisk.password_AMI); insertCmd.Parameters.AddWithValue("@asterisk_owner", asterisk.asterisk_owner); insertCmd.Parameters.AddWithValue("@tls_enabled", asterisk.tls_enabled); insertCmd.Parameters.AddWithValue("@tls_certDestination", asterisk.tls_certDestination); connection.Open(); int returnCode = (int)insertCmd.ExecuteScalar(); return returnCode; }; }
public List<Asterisks> getAsterisksInList(string userName) { List<Asterisks> list = new List<Asterisks>(); DataSet ds = SelectAsterisksByUser(userName); DataTable dt = ds.Tables[0]; foreach (DataRow item in ds.Tables[0].Rows) { Asterisks asterisk = new Asterisks(); asterisk.id_Asterisk = int.Parse(item["id_Asterisk"].ToString()); asterisk.name_Asterisk = item["name_Asterisk"].ToString(); asterisk.ip_address = item["ip_address"].ToString(); asterisk.prefix_Asterisk = item["prefix_Asterisk"].ToString(); asterisk.login_AMI = item["login_AMI"].ToString(); asterisk.password_AMI = item["password_AMI"].ToString(); asterisk.tls_enabled = int.Parse(item["tls_enabled"].ToString()); asterisk.tls_certDestination = item["tls_certDestination"].ToString(); list.Add(asterisk); } return list; }
public Asterisks SelectAsterisksByName(string asteriskName) { using (SqlConnection connection = new SqlConnection(CS)) { SqlCommand selectAsteriskByUserCmd = new SqlCommand("select * from Asterisks where name_Asterisk = @asteriskName", connection); selectAsteriskByUserCmd.Parameters.AddWithValue("@asteriskName", asteriskName); SqlDataAdapter sda = new SqlDataAdapter(selectAsteriskByUserCmd); DataSet ds = new DataSet(); connection.Open(); sda.Fill(ds); selectAsteriskByUserCmd.ExecuteNonQuery(); DataTable dt = ds.Tables[0]; Asterisks asterisk = new Asterisks(); foreach (DataRow item in ds.Tables[0].Rows) { asterisk.id_Asterisk = int.Parse(item["id_Asterisk"].ToString()); asterisk.name_Asterisk = item["name_Asterisk"].ToString(); asterisk.ip_address = item["ip_address"].ToString(); asterisk.prefix_Asterisk = item["prefix_Asterisk"].ToString(); asterisk.login_AMI = item["login_AMI"].ToString(); asterisk.password_AMI = item["password_AMI"].ToString(); asterisk.tls_enabled = int.Parse(item["tls_enabled"].ToString()); asterisk.tls_certDestination = item["tls_certDestination"].ToString(); } return asterisk; }; }
public int updateAsterisk(Asterisks asterisk) { using (SqlConnection connection = new SqlConnection(CS)) { SqlCommand updateCmd = new SqlCommand("updateAsterisk", connection); updateCmd.CommandType = CommandType.StoredProcedure; updateCmd.Parameters.AddWithValue("@id_Asterisk", asterisk.id_Asterisk); updateCmd.Parameters.AddWithValue("@name_Asterisk", asterisk.name_Asterisk); updateCmd.Parameters.AddWithValue("@prefix_Asterisk", asterisk.prefix_Asterisk); updateCmd.Parameters.AddWithValue("@ip_address", asterisk.ip_address); updateCmd.Parameters.AddWithValue("@login_AMI", asterisk.login_AMI); updateCmd.Parameters.AddWithValue("@password_AMI", asterisk.password_AMI); updateCmd.Parameters.AddWithValue("@tls_enabled", asterisk.tls_enabled); updateCmd.Parameters.AddWithValue("@tls_certDestination", asterisk.tls_certDestination); connection.Open(); string returnCode = (string)updateCmd.ExecuteScalar(); if (returnCode.Contains(asterisk.name_Asterisk)) return 1; else if (returnCode.Contains(asterisk.ip_address)) return 2; else if (returnCode.Contains(asterisk.prefix_Asterisk)) return 3; else return -1; }; }
public string updateTrunk(Asterisks updatedAsterisk) { int returnCode; rollbackState = false; Asterisks currentAsterisk = updatedAsterisk; List<Asterisks> asteriskList = asteriskAccessLayer.getAsterisksInList(Membership.GetUser().UserName.ToString()); textToLog = new StringBuilder(); Asterisks originalAsterisk = asteriskList.Find(selectedAsterisk => selectedAsterisk.id_Asterisk == updatedAsterisk.id_Asterisk); asteriskList.Remove(originalAsterisk); List<Asterisks> rollbackList = new List<Asterisks>(); try { login(updatedAsterisk.ip_address, updatedAsterisk.login_AMI, Utils.DecryptAMIPassword(updatedAsterisk.password_AMI)); if ((returnCode = asteriskAccessLayer.updateAsterisk(updatedAsterisk)) == -1) { } else if (returnCode == 1) { textToLog.Append("<" + originalAsterisk.name_Asterisk + ">: Nazov je zadany!\n"); return textToLog.ToString(); } else if (returnCode == 2) { textToLog.Append("<" + originalAsterisk.name_Asterisk + ">: IP adresa je zadana!\n"); return textToLog.ToString(); } else if (returnCode == 3) { textToLog.Append("<" + originalAsterisk.name_Asterisk + ">: Prefix je zadany!\n"); return textToLog.ToString(); } updateTLS(updatedAsterisk.tls_enabled, updatedAsterisk.tls_certDestination, originalAsterisk.tls_certDestination, originalAsterisk.tls_enabled, asteriskList); updateContext(originalAsterisk.prefix_Asterisk, updatedAsterisk.prefix_Asterisk); rollbackList.Add(updatedAsterisk); foreach (Asterisks asterisk in asteriskList) { currentAsterisk = asterisk; login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); updateTrunk(originalAsterisk.name_Asterisk, updatedAsterisk.name_Asterisk, updatedAsterisk.ip_address, originalAsterisk.ip_address); updateTLS(asterisk, updatedAsterisk, originalAsterisk); updateContext(originalAsterisk.name_Asterisk, updatedAsterisk.name_Asterisk, updatedAsterisk.prefix_Asterisk); reloadModules(); logoff(); rollbackList.Add(asterisk); } return textToLog.Append("Zmena Asterisku prebehla úspešne!\n").ToString(); } catch (AuthenticationFailedException) { rollbackState = true; raiseUpdateTrunkErrorEvent("login", currentAsterisk, updatedAsterisk, originalAsterisk, rollbackList, asteriskList); return textToLog.Append("Neplatné meno alebo heslo!\n").ToString(); } catch (AsterNET.Manager.TimeoutException) { rollbackState = true; raiseUpdateTrunkErrorEvent("login", currentAsterisk, updatedAsterisk, originalAsterisk, rollbackList, asteriskList); return textToLog.Append("Čas spojenia vypršal!\n").ToString(); } catch (ManagerException managerException) { rollbackState = true; raiseUpdateTrunkErrorEvent(managerException.TargetSite.Name, currentAsterisk, updatedAsterisk, originalAsterisk, rollbackList, asteriskList); logoff(); return textToLog.Append("Nastala chyba v:[" + currentAsterisk.name_Asterisk + "]\n" + managerException.Message + "\n").ToString(); } catch (Exception e) { rollbackState = true; raiseUpdateTrunkErrorEvent("unknow", currentAsterisk, updatedAsterisk, originalAsterisk, rollbackList, asteriskList); return textToLog.Append("Nastala chyba v:[" + currentAsterisk.name_Asterisk + "]\n" + e.Message + "\n").ToString(); } }
public void raiseUpdateTrunkErrorEvent(string errorMethod, Asterisks asteriskArg, Asterisks updatedAsteriskArg, Asterisks originalAsterisk, List<Asterisks> rollbackAsteriskListArg, List<Asterisks> asteriskListArg) { if (updateError != null) updateError(errorMethod, asteriskArg, updatedAsteriskArg, originalAsterisk, rollbackAsteriskListArg, asteriskListArg); }
public void raiseDeleteTrunkErrorEvent(string errorMethod, Asterisks deletedAsteriskArg, Asterisks currentAsterisks, List<Asterisks> rollbackAsteriskListArg, List<Asterisks> asteriskListArg) { if (deleteError != null) deleteError(errorMethod, deletedAsteriskArg, currentAsterisks, rollbackAsteriskListArg, asteriskListArg); }
public void raiseAddTrunkErrorEvent(string errorMethod, Asterisks asteriskArg, Asterisks createdAsteriskArg, List<Asterisks> rollbackAsteriskListArg, List<Asterisks> asteriskListArg) { if (addError != null) addError(errorMethod, asteriskArg, createdAsteriskArg, rollbackAsteriskListArg, asteriskListArg); }
public string createTrunk(Asterisks createdAsterisk) { Asterisks currentAsterisk = null; int returnCode; rollbackState = false; textToLog = new StringBuilder(); List<Asterisks> asteriskList = asteriskAccessLayer.getAsterisksInList(Membership.GetUser().UserName.ToString()); List<Asterisks> rollbackList = new List<Asterisks>(); try { login(createdAsterisk.ip_address, createdAsterisk.login_AMI, Utils.DecryptAMIPassword(createdAsterisk.password_AMI)); if ((returnCode = asteriskAccessLayer.insertAsterisk(createdAsterisk)) == -1) { } else if (returnCode == 1) { textToLog.Append("<" + createdAsterisk.name_Asterisk + ">: Názov je zadaný!\n"); return textToLog.ToString(); } else if (returnCode == 2) { textToLog.Append("<" + createdAsterisk.name_Asterisk + ">: IP adresa je zadaná!\n"); return textToLog.ToString(); } else if (returnCode == 3) { textToLog.Append("<" + createdAsterisk.name_Asterisk + ">: Prefix je zadaný!\n"); return textToLog.ToString(); } addTrunk(asteriskList); addTLS(createdAsterisk.tls_enabled, createdAsterisk.tls_certDestination, asteriskList); addContext(asteriskList); asteriskList.Add(createdAsterisk); createInitialContexts(asteriskList); asteriskList.Add(createdAsterisk); reloadModules(); logoff(); foreach (Asterisks asterisk in asteriskList) { currentAsterisk = asterisk; if (asterisk.name_Asterisk.Equals(createdAsterisk.name_Asterisk)) continue; login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); addTrunk(createdAsterisk.name_Asterisk, createdAsterisk.ip_address, createdAsterisk.tls_enabled, asterisk.tls_enabled); addContext(createdAsterisk.name_Asterisk, createdAsterisk.prefix_Asterisk); addInclude(createdAsterisk.name_Asterisk); checkContexts(asteriskList); reloadModules(); logoff(); rollbackList.Add(asterisk); } return textToLog.Append("Pridanie Asterisku prebehlo úspešne!\n").ToString(); } catch (AuthenticationFailedException) { asteriskList.Remove(createdAsterisk); rollbackState = true; raiseAddTrunkErrorEvent("login", currentAsterisk, createdAsterisk, rollbackList, asteriskList); return textToLog.Append("Neplatné meno alebo heslo!\n").ToString(); } catch (AsterNET.Manager.TimeoutException) { asteriskList.Remove(createdAsterisk); rollbackState = true; raiseAddTrunkErrorEvent("login", currentAsterisk, createdAsterisk, rollbackList, asteriskList); return textToLog.Append("Čas spojenia vypršal!\n").ToString(); } catch (ManagerException managerException) { asteriskList.Remove(createdAsterisk); rollbackState = true; raiseAddTrunkErrorEvent(managerException.TargetSite.Name, currentAsterisk, createdAsterisk, rollbackList, asteriskList); logoff(); return textToLog.Append("Nastala chyba v:[" + currentAsterisk.name_Asterisk + "]\n" + managerException.Message + "\n").ToString(); } catch (Exception e) { rollbackState = true; raiseAddTrunkErrorEvent("login", currentAsterisk, createdAsterisk, rollbackList, asteriskList); return textToLog.Append("Nastala chyba v:[" + currentAsterisk.name_Asterisk + "]\n" + e.Message + "\n").ToString(); } }
public void rollbackAddAsterisk(string errorMethod, Asterisks asterisk, Asterisks createdAsterisk, List<Asterisks> rollbackList, List<Asterisks> asteriskList) { try { if (rollbackList.Count > 0) { if (errorMethod.Equals("addContext")) { login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); deleteTrunk(createdAsterisk.name_Asterisk); logoff(); } if (errorMethod.Equals("checkContexts")) { login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); deleteTrunk(createdAsterisk.name_Asterisk); deleteContext(createdAsterisk.name_Asterisk); logoff(); } foreach (Asterisks rollbackAsterisk in rollbackList) { login(rollbackAsterisk.ip_address, rollbackAsterisk.login_AMI, Utils.DecryptAMIPassword(rollbackAsterisk.password_AMI)); deleteTrunk(createdAsterisk.name_Asterisk); deleteContext(createdAsterisk.name_Asterisk); logoff(); } login(createdAsterisk.ip_address, createdAsterisk.login_AMI, Utils.DecryptAMIPassword(createdAsterisk.password_AMI)); deleteInitialContexts(asteriskList); deleteTLS(createdAsterisk.tls_enabled, createdAsterisk.tls_certDestination); deleteTrunk(asteriskList); asteriskAccessLayer.deleteAsteriskByName(createdAsterisk.name_Asterisk); logoff(); } else { if (errorMethod.Equals("addTLS")) { login(createdAsterisk.ip_address, createdAsterisk.login_AMI, Utils.DecryptAMIPassword(createdAsterisk.password_AMI)); deleteTrunk(asteriskList); logoff(); } if (errorMethod.Equals("addContext")) { login(createdAsterisk.ip_address, createdAsterisk.login_AMI, Utils.DecryptAMIPassword(createdAsterisk.password_AMI)); deleteTrunk(asteriskList); deleteTLS(createdAsterisk.tls_enabled, createdAsterisk.tls_certDestination); logoff(); } if (errorMethod.Equals("createInitialContexts")) { login(createdAsterisk.ip_address, createdAsterisk.login_AMI, Utils.DecryptAMIPassword(createdAsterisk.password_AMI)); deleteTrunk(asteriskList); deleteTLS(createdAsterisk.tls_enabled, createdAsterisk.tls_certDestination); deleteInitialContexts(asteriskList); logoff(); } asteriskAccessLayer.deleteAsteriskByName(createdAsterisk.name_Asterisk); } } catch (Exception e) { } }
public void rollbackUpdateAsterisk(string errorMethod, Asterisks currentAsterisk, Asterisks updatedAsterisk, Asterisks originalAsterisk, List<Asterisks> rollbackList, List<Asterisks> asteriskList) { try { if (rollbackList.Count > 0) { if (errorMethod.Equals("updateTLS")) { login(currentAsterisk.ip_address, currentAsterisk.login_AMI, Utils.DecryptAMIPassword(currentAsterisk.password_AMI)); updateTrunk(updatedAsterisk.name_Asterisk, originalAsterisk.name_Asterisk, originalAsterisk.ip_address, updatedAsterisk.ip_address); logoff(); } if (errorMethod.Equals("updateContext")) { login(currentAsterisk.ip_address, currentAsterisk.login_AMI, Utils.DecryptAMIPassword(currentAsterisk.password_AMI)); updateTrunk(updatedAsterisk.name_Asterisk, originalAsterisk.name_Asterisk, originalAsterisk.ip_address, updatedAsterisk.ip_address); updateTLS(originalAsterisk, currentAsterisk, updatedAsterisk); logoff(); } foreach (Asterisks asterisk in rollbackList) { if (asterisk.Equals(updatedAsterisk)) continue; login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); updateTrunk(updatedAsterisk.name_Asterisk, originalAsterisk.name_Asterisk, originalAsterisk.ip_address, updatedAsterisk.ip_address); updateTLS(updatedAsterisk, asterisk, originalAsterisk); updateContext(updatedAsterisk.name_Asterisk, originalAsterisk.name_Asterisk, originalAsterisk.prefix_Asterisk); reloadModules(); logoff(); } login(updatedAsterisk.ip_address, updatedAsterisk.login_AMI, Utils.DecryptAMIPassword(updatedAsterisk.password_AMI)); updateTLS(originalAsterisk.tls_enabled, originalAsterisk.tls_certDestination, updatedAsterisk.tls_certDestination, updatedAsterisk.tls_enabled, asteriskList); reloadModules(); logoff(); asteriskAccessLayer.updateAsterisk(originalAsterisk); } else { login(currentAsterisk.ip_address, currentAsterisk.login_AMI, Utils.DecryptAMIPassword(currentAsterisk.password_AMI)); updateTLS(originalAsterisk.tls_enabled, originalAsterisk.tls_certDestination, currentAsterisk.tls_certDestination, currentAsterisk.tls_enabled, asteriskList); reloadModules(); logoff(); asteriskAccessLayer.updateAsterisk(originalAsterisk); } } catch (Exception e) { } }
public void rollbackDeleteAsterisk(string errorMethod, Asterisks deletedAsterisk, Asterisks currentAsterisk, List<Asterisks> rollbackList, List<Asterisks> asteriskList) { try { if (rollbackList.Count > 0) { if (errorMethod.Equals("deleteOneContext")) { login(currentAsterisk.ip_address, currentAsterisk.login_AMI, Utils.DecryptAMIPassword(currentAsterisk.password_AMI)); addTrunk(deletedAsterisk.name_Asterisk, deletedAsterisk.ip_address, deletedAsterisk.tls_enabled, currentAsterisk.tls_enabled); logoff(); } foreach (Asterisks asterisk in rollbackList) { login(asterisk.ip_address, asterisk.login_AMI, Utils.DecryptAMIPassword(asterisk.password_AMI)); addTrunk(deletedAsterisk.name_Asterisk, deletedAsterisk.ip_address, deletedAsterisk.tls_enabled, currentAsterisk.tls_enabled); addContext(deletedAsterisk.name_Asterisk, deletedAsterisk.prefix_Asterisk); addInclude(deletedAsterisk.name_Asterisk); reloadModules(); logoff(); } login(deletedAsterisk.ip_address, deletedAsterisk.login_AMI, Utils.DecryptAMIPassword(deletedAsterisk.password_AMI)); addTLS(deletedAsterisk.tls_enabled, deletedAsterisk.tls_certDestination, asteriskList); addTrunk(asteriskList); createInitialContexts(asteriskList); addContext(asteriskList); addInclude(asteriskList); reloadModules(); logoff(); } else { if (errorMethod.Equals("deleteTrunk")) { login(deletedAsterisk.ip_address, deletedAsterisk.login_AMI, Utils.DecryptAMIPassword(deletedAsterisk.password_AMI)); addTLS(deletedAsterisk.tls_enabled, deletedAsterisk.tls_certDestination, asteriskList); reloadModules(); logoff(); } if (errorMethod.Equals("deleteAllRemoteContexts")) { login(deletedAsterisk.ip_address, deletedAsterisk.login_AMI, Utils.DecryptAMIPassword(deletedAsterisk.password_AMI)); addTLS(deletedAsterisk.tls_enabled, deletedAsterisk.tls_certDestination, asteriskList); addTrunk(asteriskList); reloadModules(); logoff(); } } } catch (Exception e) { } }
protected void updateTLS(Asterisks currentAsterisk, Asterisks updatedAsterisk, Asterisks originalAsterisk) { updateSipConfig = new UpdateConfigAction(SIP_CONFIG, SIP_CONFIG); if (currentAsterisk.tls_enabled == 1 && updatedAsterisk.tls_enabled == 0 && originalAsterisk.tls_enabled == 1) { updateSipConfig.AddCommand(UpdateConfigAction.ACTION_DELETE, updatedAsterisk.name_Asterisk, "transport", "tls", "tls"); } else if (currentAsterisk.tls_enabled == 1 && updatedAsterisk.tls_enabled == 1 && originalAsterisk.tls_enabled == 0) { updateSipConfig.AddCommand(UpdateConfigAction.ACTION_APPEND, updatedAsterisk.name_Asterisk, "transport", "tls", "tls"); } managerResponse = managerConnection.SendAction(updateSipConfig); if (!managerResponse.IsSuccess() && !rollbackState) { throw new ManagerException(managerResponse.Message); } }