private void btnUpdate_Click(object sender, RoutedEventArgs e) { ServerCommandProxy serverProxy = null; OperationTypeEnum operation = OperationTypeEnum.Update; txtblockOutput.Inlines.Clear(); try { ValidationResult result = ValidateInput(operation); if (result.IsValid) { string ppcHostname = txtboxPpcServer.Text; string ppcAdminPw = pwdboxPpcAdminPw.Password; serverProxy = new ServerCommandProxy(ppcHostname, 9191, ppcAdminPw); if (PaperCutProxyWrapper.IsConnectionEstablished(serverProxy)) { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionEstablished); int totalUsers = serverProxy.GetTotalUsers(); Console.WriteLine(string.Format(Constants.PaperCut.Messages.NumberOfUsersRetrievedFromPaperCut, totalUsers)); Console.WriteLine(Constants.ConsoleSpacing.HashesWithNewLine); PaperCutHelper paperCutHelper = new PaperCutHelper(serverProxy); if (paperCutHelper != null) { int targetIdField = cmboxTargetIDField.SelectedIndex; int numberOfChars = int.Parse(txtboxIDLength.Text.ToString()); bool updateOnlyIfBlank = chckboxUpdateIfBlank.IsChecked.Value; bool mustTargetSpecificUsername = chckboxTargetSpecificUser.IsChecked.Value; if (mustTargetSpecificUsername) { string specificUsername = txtboxTargetSpecificUser.Text; paperCutHelper.UpdateSingleCardNumber(updateOnlyIfBlank, targetIdField, specificUsername, numberOfChars); } else { paperCutHelper.UpdateAllCardNumbers(updateOnlyIfBlank, targetIdField, numberOfChars); } } } else { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionNotEstablished); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Updates a single users card number. /// </summary> /// <param name="updateOnlyIfBlank"></param> /// <param name="targetIdField"></param> /// <param name="targetUsername"></param> /// <param name="numberOfChars"></param> public void UpdateSingleCardNumber(bool updateOnlyIfBlank, int targetIdField, string targetUsername, int numberOfChars) { try { if (!string.IsNullOrEmpty(targetUsername) && numberOfChars >= Common.Constants.PaperCut.Constants.MinimumNumberOfCharacters && numberOfChars <= Common.Constants.PaperCut.Constants.MaximumNumberOfCharacters) { string newCardNumber = SecurityStringHelper.GenerateIdentifier(numberOfChars); if (!string.IsNullOrEmpty(newCardNumber)) { if (updateOnlyIfBlank) { string existingCardNumber = PaperCutProxyWrapper.GetCardNumber(_serverProxy, targetUsername, targetIdField); if (string.IsNullOrEmpty(existingCardNumber)) { PaperCutProxyWrapper.SetCardNumber(_serverProxy, targetUsername, newCardNumber, targetIdField); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedUserWithNewCardNumber, targetUsername, newCardNumber)); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); } else { Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.CannotUpdateUserDueToExistingCardNumber, targetUsername, existingCardNumber)); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); } } else { PaperCutProxyWrapper.SetCardNumber(_serverProxy, targetUsername, newCardNumber, targetIdField); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedUserWithNewCardNumber, targetUsername, newCardNumber)); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); } } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }
/// <summary> /// Sends an email notification /// with the card number to a single user. /// </summary> /// <param name="smtpHostname"></param> /// <param name="targetUsername"></param> /// <param name="senderAddress"></param> /// <param name="targetIdField"></param> public void SendSingleEmail(string smtpHostname, string targetUsername, string senderAddress, int targetIdField) { string resolvedIdField = PaperCutProxyWrapper.ResolveCardField(targetIdField); string targetEmail = _serverProxy.GetUserProperty(targetUsername, Common.Constants.PaperCut.Properties.Email); string retrievedId = _serverProxy.GetUserProperty(targetUsername, resolvedIdField); try { SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = smtpHostname; smtpClient.Port = 25; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; SendEmail(smtpClient, senderAddress, targetEmail, retrievedId); } catch (Exception) { Console.WriteLine(Common.Constants.Smtp.Email.UnableToSend); } }
/// <summary> /// Sends an email notification /// with the card number to all users. /// </summary> /// <param name="smtpHostname"></param> /// <param name="senderAddress"></param> /// <param name="targetIdField"></param> public void SendEmailsToAllUsers(string smtpHostname, string senderAddress, int targetIdField) { try { if (!string.IsNullOrEmpty(smtpHostname) && !string.IsNullOrEmpty(senderAddress)) { string resolvedIdField = PaperCutProxyWrapper.ResolveCardField(targetIdField); string[] usernames = PaperCutProxyWrapper.GetUserAccounts(_serverProxy); List <string> emails = null; List <string> idNumbers = null; for (int i = 0; i < usernames.Length; i++) { string[] retrievedProperties = _serverProxy.GetUserProperties(usernames[i], new string[] { Common.Constants.PaperCut.Properties.Email, resolvedIdField }); emails.Add(retrievedProperties[0]); idNumbers.Add(retrievedProperties[1]); } SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = smtpHostname; smtpClient.Port = 25; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; for (int i = 0; i < usernames.Length; i++) { SendEmail(smtpClient, senderAddress, emails[i], idNumbers[i]); } } } catch { Console.WriteLine(Common.Constants.Smtp.Email.UnableToSend); } }
private void btnClearDept_Click(object sender, RoutedEventArgs e) { ServerCommandProxy serverProxy; OperationTypeEnum operation = OperationTypeEnum.ClearDepartment; txtblockOutput.Inlines.Clear(); try { ValidationResult result = ValidateInput(operation); if (result.IsValid) { string ppcHostname = txtboxPpcServer.Text; string ppcAdminPw = pwdboxPpcAdminPw.Password; serverProxy = new ServerCommandProxy(ppcHostname, 9191, ppcAdminPw); if (PaperCutProxyWrapper.IsConnectionEstablished(serverProxy)) { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionEstablished); int targetDeptField = cmboxTargetDeptField.SelectedIndex; PaperCutProxyWrapper.ClearUsersDepartmentInfo(serverProxy, targetDeptField); } else { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionNotEstablished); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private void btnSendEmail_Click(object sender, RoutedEventArgs e) { ServerCommandProxy serverProxy = null; OperationTypeEnum operation = OperationTypeEnum.SendEmail; txtblockOutput.Inlines.Clear(); try { ValidationResult result = ValidateInput(operation); if (result.IsValid) { string ppcHostname = txtboxPpcServer.Text; string ppcAdminPw = pwdboxPpcAdminPw.Password; serverProxy = new ServerCommandProxy(ppcHostname, 9191, ppcAdminPw); if (PaperCutProxyWrapper.IsConnectionEstablished(serverProxy)) { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionEstablished); int totalUsers = serverProxy.GetTotalUsers(); Console.WriteLine(string.Format(Constants.PaperCut.Messages.NumberOfUsersRetrievedFromPaperCut, totalUsers)); Console.WriteLine(Constants.ConsoleSpacing.HashesWithNewLine); PaperCutHelper paperCutHelper = new PaperCutHelper(serverProxy); if (paperCutHelper != null) { int targetIdField = cmboxTargetIDField.SelectedIndex; string smtpHostname = txtboxSmtpServer.Text; string senderAddress = txtboxSenderAddress.Text; bool mustTargetSpecificUsername = chckboxTargetSpecificUser.IsChecked.Value; if (mustTargetSpecificUsername) { string specificUsername = txtboxTargetSpecificUser.Text; paperCutHelper.SendSingleEmail(smtpHostname, specificUsername, senderAddress, targetIdField); Console.WriteLine(string.Format(Constants.Smtp.Messages.NotificationEmailSentToSingleUser, specificUsername)); Console.WriteLine(Constants.ConsoleSpacing.HashesWithNewLine); } else { paperCutHelper.SendEmailsToAllUsers(smtpHostname, senderAddress, targetIdField); Console.WriteLine(string.Format(Constants.Smtp.Messages.NotificationEmailsSentToMultipleUsers, totalUsers)); Console.WriteLine(Constants.ConsoleSpacing.HashesWithNewLine); } } } else { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionNotEstablished); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(Constants.Smtp.Messages.UnableToSendEmail); } }
private void btnSyncDept_Click(object sender, RoutedEventArgs e) { ServerCommandProxy serverProxy; OperationTypeEnum operation = OperationTypeEnum.SyncDepartment; txtblockOutput.Inlines.Clear(); try { ValidationResult result = ValidateInput(operation); if (result.IsValid) { string ppcHostname = txtboxPpcServer.Text; string ppcAdminPw = pwdboxPpcAdminPw.Password; serverProxy = new ServerCommandProxy(ppcHostname, 9191, ppcAdminPw); if (PaperCutProxyWrapper.IsConnectionEstablished(serverProxy)) { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionEstablished); string domainName = txtboxDomainName.Text; string ldapRoot = txtboxLdapRoot.Text; string domainUser = txtboxDomainUser.Text; string domainUserPwd = pwdboxDomainUserPwd.Password; LdapHelper ldapHelper = new LdapHelper(domainName, ldapRoot, domainUser, domainUserPwd); if (ldapHelper.IsConnectionEstablished(domainUser)) { txtblockOutput.Inlines.Add(Constants.Ldap.Messages.LdapConnectionEstablished); PaperCutUser[] ppcUsers = PaperCutProxyWrapper.GetUsersDepartmentInfo(serverProxy); int targetDeptField = cmboxTargetDeptField.SelectedIndex; string departmentNameADField = txtboxDeptNameADField.Text; string departmentNumberADField = txtboxDeptNumberADField.Text; bool areBothAdFieldsEntered = !string.IsNullOrEmpty(departmentNameADField) && !string.IsNullOrEmpty(departmentNumberADField); if (areBothAdFieldsEntered) { LdapUser[] ldapUsers = ldapHelper.RetrieveDepartmentInformation(ppcUsers, departmentNameADField, departmentNumberADField); PaperCutProxyWrapper.SetUsersMultipleDepartmentInfo(serverProxy, ldapUsers, targetDeptField); } else { LdapUser[] ldapUsers = ldapHelper.RetrieveDepartmentInformation(ppcUsers, string.IsNullOrEmpty(departmentNameADField) ? departmentNumberADField : departmentNameADField); PaperCutProxyWrapper.SetUsersSingleDepartmentInfo(serverProxy, ldapUsers, targetDeptField); } } else { txtblockOutput.Inlines.Add(Constants.Ldap.Messages.LdapConnectionNotEstablished); } } else { txtblockOutput.Inlines.Add(Constants.PaperCut.Messages.PaperCutConnectionNotEstablished); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Updates the card numbers for all users. /// </summary> /// <param name="updateOnlyIfBlank"></param> /// <param name="targetIdField"></param> /// <param name="numberOfChars"></param> public void UpdateAllCardNumbers(bool updateOnlyIfBlank, int targetIdField, int numberOfChars) { try { if (numberOfChars >= Common.Constants.PaperCut.Constants.MinimumNumberOfCharacters && numberOfChars <= Common.Constants.PaperCut.Constants.MaximumNumberOfCharacters) { string[] existingUsers = PaperCutProxyWrapper.GetUserAccounts(_serverProxy); string[] newCardNumbers = new string[existingUsers.Length]; newCardNumbers = SecurityStringHelper.GenerateIdentifiers(numberOfChars, newCardNumbers.Length).ToArray(); if (updateOnlyIfBlank) { int updatedCount = 0; int skippedCount = 0; string[] existingCardNumbers; existingCardNumbers = PaperCutProxyWrapper.GetCardNumbers(_serverProxy, existingUsers, targetIdField); Console.WriteLine(Common.Constants.PaperCut.Messages.UpdatingOnlyUsersWithBlankCardNumbers); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); for (int i = 0; i < existingUsers.Length; i++) { if (string.IsNullOrEmpty(existingCardNumbers[i])) { PaperCutProxyWrapper.SetCardNumber(_serverProxy, existingUsers[i], newCardNumbers[i], targetIdField); updatedCount++; if (updatedCount > 0 && updatedCount % 100 == 0) { Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedNUsersSoFar, updatedCount)); } } else { skippedCount++; if (skippedCount > 0 && skippedCount % 100 == 0) { Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.SkippedNUsersSoFar, skippedCount)); } } } Console.WriteLine(); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedAndSkippedNUsers, updatedCount, skippedCount)); Console.WriteLine(Common.Constants.ConsoleSpacing.Hashes); } else { PaperCutProxyWrapper.SetCardNumbers(_serverProxy, existingUsers, newCardNumbers, targetIdField); Console.WriteLine(); Console.WriteLine(string.Format(Common.Constants.PaperCut.Messages.UpdatedNUsers, existingUsers.Length)); Console.WriteLine(Common.Constants.ConsoleSpacing.HashesWithNewLine); } } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }