public void DefaultValuesAreSet() { this.CallBasicModuleInit(); MailModule.SetDefaultValue(nameof(MailModule.MailMapper.CheckServerCertificate), "false"); Assert.False(MailModule.MailMapper.CheckServerCertificate); }
public void MissingInitializationLeedsToErrors() { var exportResponse = MailModule.GetMessageByCorrelationId("ss"); var responseError = JsonConvert.DeserializeObject <Response <Error> >(exportResponse); Assert.Equal(typeof(ApplicationException).Name, responseError.Content.ExceptionType); }
public void TimeoutIsSet() { this.CallBasicModuleInit(); Assert.True(MailModule.MailMapper.RequestTimeout == 30000); MailModule.SetRequestTimeout(20); Assert.True(MailModule.MailMapper.RequestTimeout == 20000); }
private void OnClickItem() { if (isOpened == false) { isOpened = true; if (!NGUITools.GetActive(mStateOpen.gameObject)) { NGUITools.SetActive(mStateOpen.gameObject, true); } if (NGUITools.GetActive(mStateClose.gameObject)) { NGUITools.SetActive(mStateClose.gameObject, false); } MailActionParam param = new MailActionParam(); param.mailid = mMaildata.mailid; Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_MAIL_STATE_OPENED, param); } MailModule module = ModuleManager.Instance.FindModule <MailModule>(); module.SelectedMail = this; ShowMailContent(mMaildata); UIWindow MailUI = WindowManager.Instance.GetUI("mail"); UIButton mDeleteBtn = MailUI.FindComponent <UIButton>("background/mGiveUpBtn"); UIButton mPickBtn = MailUI.FindComponent <UIButton>("background/mGetBtn"); UIAtlasHelper.SetButtonImage(mDeleteBtn, "common:btn_blue_4word", true); if (mMaildata.itemcnt > 0 && mMaildata.mItemsList != null && !isPicked) { UIAtlasHelper.SetButtonImage(mPickBtn, "common:btn_yellow_4word", true); } }
public async Task SendMailWithAttachmentSucceedsAsync() { this.CallBasicModuleInit(); var response = MailModule.StartSendMail( MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_SENDER_MAIL), new[] { MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_RECIPIENT_MAIL_1), }, "test", "test", "<b>test</b>", new[] { "assets/favicon-32x32.png", "assets/fake_log.txt", }); var successResponse = JsonConvert.DeserializeObject <Response <string> >(response); Assert.True(!string.IsNullOrWhiteSpace(successResponse.CorrelationKey)); var messageStoreResult = await this.WaitForMessageStoreAsync(successResponse.CorrelationKey); Assert.IsType <Response <string> >(JsonConvert.DeserializeObject <Response <string> >(messageStoreResult)); }
private void OnPickBtnClick() { MailModule module = ModuleManager.Instance.FindModule <MailModule>(); if (module.SelectedMail != null && module.SelectedMail.mMaildata.mItemsList != null && module.SelectedMail.mMaildata.itemcnt != 0) { module.SelectedMail.OnPickItem(); } }
private string CallBasicModuleInit() { return(MailModule.Initialize( "test.test.com", 465, "test", "test", 30)); }
private void CallBasicModuleInit() { MailModule.Initialize( Constants.MailServer.SmtpHostName, Constants.MailServer.SmtpPort, MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_PROVIDER_USER_NAME.ToString()), MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_PROVIDER_USER_PASS.ToString()), 30); }
private void OnDeleteBtnClick() { MailModule module = ModuleManager.Instance.FindModule <MailModule>(); if (module.SelectedMail != null) { module.SelectedMail.OnDeleteItem(); } UIAtlasHelper.SetButtonImage(mDeleteBtn, "common:anniuhui", true); }
public void SetDefaultValueInputsAreValidated() { var mock = new Mock <IMailMapper>(); this.CallBasicModuleInit(); MailModule.MailMapper = mock.Object; Assert.Contains(nameof(ArgumentException), MailModule.SetDefaultValue(string.Empty, "some text")); Assert.Contains(nameof(ArgumentException), MailModule.SetDefaultValue("some text", string.Empty)); }
public override void Init() { pCardMdl = GameMain.GetInstance().GetModule <CardDeckModule>(); pUIMgr = GameMain.GetInstance().GetModule <IUIMgr>(); pRoleMgr = GameMain.GetInstance().GetModule <RoleModule>(); pMailMgr = GameMain.GetInstance().GetModule <MailModule>(); pResLoader = GameMain.GetInstance().GetModule <ResLoader>(); //load emails; pMailMgr.checkMailListLoaded(); }
public MailModuleTests() { // https://colinmackay.scot/2007/06/16/unit-testing-a-static-class/ Type staticType = typeof(MailModule); ConstructorInfo ci = staticType.TypeInitializer; object[] parameters = new object[0]; ci.Invoke(null, parameters); MailModule.SetDebugOutput(true); }
public void RequestForCorrelationKeyReturnsErrorIfEntryIsNotFound() { this.CallBasicModuleInit(); MailModule.SetDebugOutput(true); MailModule.SetRequestTimeout(10); var result = MailModule.GetMessageByCorrelationId("test"); var errorResponse = JsonConvert.DeserializeObject <Response <Error> >(result); Assert.False(errorResponse.IsSuccess); Assert.Equal(typeof(KeyNotFoundException).Name, errorResponse.Content.ExceptionType); }
protected override void OnOpen(object param = null) { base.OnOpen(); EventDelegate.Add(mReturnBtn.onClick, OnReturnBtnClick); EventDelegate.Add(mDeleteBtn.onClick, OnDeleteBtnClick); EventDelegate.Add(mPickBtn.onClick, OnPickBtnClick); OnCreateMailItem(); mScrollBar.value = 0.0f; itemScrollBar.value = 0.0f; NGUITools.SetActive(MailContent.gameObject, false); NGUITools.SetActive(mEmpty.gameObject, true); mGrid.Reposition(); mGrid.repositionNow = true; MailModule module = ModuleManager.Instance.FindModule <MailModule>(); }
private void button1_Click(object sender, EventArgs e) { var confirmResult = MessageBox.Show($@"Send Report To Distribution List?", @"Confirm Send", MessageBoxButtons.YesNo); if (confirmResult == DialogResult.No) { return; } distributionProcessTxt.Visible = true; distributionProcessTxt.Text += @"Creating Report..."; var attachment = ExportToExcel(); distributionProcessTxt.Text += $@"Done!{Environment.NewLine}"; if (!string.IsNullOrEmpty(attachment)) { List <string> to; using (var db = new AlisDbContext()) { to = db.Distributions.Where(d => d.DistFlag).Select(d => d.EmailAddress).ToList(); } if (to.Any()) { distributionProcessTxt.Text += @"Sending Mails To Distribution List..."; var body = $@"Hello, Attached the daily batches error report for: Date: {DateTime.Today:D} Environment: {Global.SavedCredentials.Name} DB: {Global.SavedCredentials.Db}"; MailModule.SendEmailFromAccount( new Microsoft.Office.Interop.Outlook.Application(), $@"Daily Report - {Global.SavedCredentials.Name}, {Global.SavedCredentials.Db} - { DateTime.Today :D}", to, body, "*****@*****.**", attachment); MessageBox.Show(@"Mail Sent!"); } else { distributionProcessTxt.Text += $@"Empty Distribution List, Mail Was Not Sent, Please Add Receipients On Settings."; } } distributionProcessTxt.Visible = false; }
protected override void OnClose() { base.OnClose(); MailModule module = ModuleManager.Instance.FindModule <MailModule>(); if (module.SelectedMail != null) { module.SelectedMail = null; } UIAtlasHelper.SetButtonImage(mDeleteBtn, "common:anniuhui", true); UIAtlasHelper.SetButtonImage(mPickBtn, "common:anniuhui", true); EventDelegate.Remove(mReturnBtn.onClick, OnReturnBtnClick); EventDelegate.Remove(mDeleteBtn.onClick, OnDeleteBtnClick); EventDelegate.Remove(mPickBtn.onClick, OnPickBtnClick); ObjectCommon.DestoryChildren(mGrid.gameObject); }
protected override void OnRespond(respond_load_mail respond, object userdata) { MailModule module = ModuleManager.Instance.FindModule <MailModule>(); module.mMailsList.Clear(); if (respond.mail_lists == null) { return; } if (respond.mail_lists.MailList == null) { return; } if (respond.mail_lists.MailList.Count <= 0) { return; } List <role_mail_s> rolemails = respond.mail_lists.MailList; for (int i = 0; i < respond.mail_lists.MailList.Count; ++i) { MailsData mail = new MailsData(); mail.mailid = respond.mail_lists.MailList[i].mailid; mail.content = respond.mail_lists.MailList[i].content; mail.itemcnt = respond.mail_lists.MailList[i].itemcnt; mail.sendname = respond.mail_lists.MailList[i].sendname; mail.start_time = respond.mail_lists.MailList[i].start_time; mail.state = respond.mail_lists.MailList[i].state; mail.title = respond.mail_lists.MailList[i].title; if (respond.mail_lists.MailList[i].itemlist != null) { if (respond.mail_lists.MailList[i].itemlist.ItemList.Count > 0) { for (int j = 0; j < respond.mail_lists.MailList[i].itemlist.ItemList.Count; ++j) { MailItemList mailItem = new MailItemList(); mailItem.resid = respond.mail_lists.MailList[i].itemlist.ItemList[j].resid; mailItem.num = respond.mail_lists.MailList[i].itemlist.ItemList[j].num; mail.mItemsList.Add(mailItem); } } } module.mMailsList.Add(mail); } WindowManager.Instance.OpenUI("mail"); }
private bool OnCreateMailItem() { MailModule module = ModuleManager.Instance.FindModule <MailModule>(); if (module.mMailsList.Count > 0) { for (int id = 0; id < module.mMailsList.Count; id++) { if (module.mMailsList[id].state != 0) { mMailItemNode = MailItemManager.Instance.CreateMailItem(module.mMailsList[id]); } } return(true); } return(false); }
public void SendMailSucceeds() { this.CallBasicModuleInit(); var response = MailModule.SendMail( MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_SENDER_MAIL), new[] { MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_RECIPIENT_MAIL_1), MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_RECIPIENT_MAIL_2), MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_RECIPIENT_MAIL_3), }, "test", "test \\U+1F601", "<b>test</b> \\U+1F601"); Assert.True(JsonConvert.DeserializeObject <Response <string> >(response).IsSuccess); }
private async Task <string> WaitForMessageStoreAsync(string correlationKey) { var messageStoreResult = string.Empty; for (int i = 0; i <= 10; i++) { messageStoreResult = MailModule.GetMessageByCorrelationId(correlationKey); if (messageStoreResult.Contains(nameof(KeyNotFoundException))) { await Task.Delay(1000); } else { break; } } return(messageStoreResult); }
public void SendMailWithAttachmentSucceeds() { this.CallBasicModuleInit(); var response = MailModule.SendMail( MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_SENDER_MAIL), new[] { MBTHelper.ConvertMaskedSecretToRealValue(Secrets.MAIL_RECIPIENT_MAIL_1), }, "test", "test", "<b>test</b>", new[] { "assets/favicon-32x32.png", "assets/fake_log.txt", }); Assert.True(JsonConvert.DeserializeObject <Response <string> >(response).IsSuccess); }
protected override void OnRespond(respond_mail_state respond, object userdata) { if (respond.result == (int)ERROR_CODE.ERR_MAIL_PICK_OK) { MailModule module = ModuleManager.Instance.FindModule <MailModule>(); if (module.SelectedMail != null) { module.SelectedMail.isPicked = true; UIWindow MailUI = WindowManager.Instance.GetUI("mail"); UIButton mPickBtn = MailUI.FindComponent <UIButton>("background/mGetBtn"); UIGrid mItemGrid = MailUI.FindComponent <UIGrid>("Open/ItemGridBK/Scroll View/UIGrid"); UIAtlasHelper.SetButtonImage(mPickBtn, "common:anniuhui", true); ObjectCommon.DestoryChildren(mItemGrid.gameObject); for (int i = 0; i < module.SelectedMail.mMaildata.mItemsList.Count; i++) { PopTipManager.Instance.AddGetItemTip(module.SelectedMail.mMaildata.mItemsList[i].resid, module.SelectedMail.mMaildata.mItemsList[i].num); } } } }
public void SendMailSucceeds() { var mock = new Mock <IMailMapper>(); mock.Setup( x => x.SendMail( It.IsAny <string>(), It.IsAny <IEnumerable <string> >(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), null)).Returns("ok"); mock.Setup( x => x.SendMail( It.IsAny <string>(), It.IsAny <IEnumerable <string> >(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IEnumerable <string> >())).Returns("ok"); this.CallBasicModuleInit(); MailModule.MailMapper = mock.Object; Assert.True(MailModule.SendMail( "test", new[] { "test" }, "test", "test", "test") == "ok"); Assert.True(MailModule.SendMail( "test", new[] { "test" }, "test", "test", "test", new[] { "test" }) == "ok"); }
public void OnDeleteItem() { if (NGUITools.GetActive(this.gameObject)) { NGUITools.SetActive(this.gameObject, false); } UIWindow MailUI = WindowManager.Instance.GetUI("mail"); UIGrid mGrid = MailUI.FindComponent <UIGrid>("ScrollView/UIGrid"); mGrid.Reposition(); mGrid.repositionNow = true; if (mMaildata.state != 0) { MailActionParam param = new MailActionParam(); param.mailid = mMaildata.mailid; Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_MAIL_STATE_DELETE, param); } MailModule module = ModuleManager.Instance.FindModule <MailModule>(); module.SelectedMail = null; HideMailContent(); }
public void InitializationValuesAreValidated() { var mock = new Mock <IMailMapper>(); this.CallBasicModuleInit(); MailModule.MailMapper = mock.Object; Assert.Contains("smtpServer", MailModule.Initialize( string.Empty, 0, string.Empty, string.Empty, 0)); Assert.Contains("smtpPort", MailModule.Initialize( "test", 0, string.Empty, string.Empty, 0)); Assert.Contains("smtpUserName", MailModule.Initialize( "test", 1, string.Empty, string.Empty, 0)); Assert.Contains("smtpPassword", MailModule.Initialize( "test", 1, "test", string.Empty, 0)); Assert.Contains("timeout", MailModule.Initialize( "test", 1, "test", "test", 0)); }
public void SendMailInputsAreValidated() { var mock = new Mock <IMailMapper>(); this.CallBasicModuleInit(); MailModule.MailMapper = mock.Object; Assert.Contains("sender", MailModule.SendMail( string.Empty, new[] { string.Empty }, string.Empty, string.Empty, string.Empty)); Assert.Contains("recipients", MailModule.SendMail( "test", new[] { string.Empty }, string.Empty, string.Empty, string.Empty)); Assert.Contains("subject", MailModule.SendMail( "test", new[] { "test" }, string.Empty, string.Empty, string.Empty)); Assert.Contains("textBody", MailModule.SendMail( "test", new[] { "test" }, "test", string.Empty, string.Empty)); Assert.Contains("htmlBody", MailModule.SendMail( "test", new[] { "test" }, "test", string.Empty, string.Empty)); }
internal static async Task CorpSearch(ICommandContext context, string name) { var reason = LogCat.CorpSearch.ToString(); var corpIDLookup = await APIHelper.ESIAPI.SearchCorporationId(reason, name); if (corpIDLookup == null || corpIDLookup.corporation == null) { await APIHelper.DiscordAPI.ReplyMessageAsync(context, LM.Get("corpNotFound")); return; } var corporationData = await APIHelper.ESIAPI.GetCorporationData(reason, corpIDLookup.corporation[0]); var allianceData = await APIHelper.ESIAPI.GetAllianceData(reason, corporationData.alliance_id); var ceo = await APIHelper.ESIAPI.GetCharacterData(reason, corporationData.ceo_id); var alliance = allianceData?.name ?? LM.Get("None"); var allianceTicker = allianceData != null ? $"[{allianceData?.ticker}]" : ""; var lite = await APIHelper.ZKillAPI.GetLiteCorporationData(corpIDLookup.corporation[0]); var zkillContent = await APIHelper.ZKillAPI.GetCorporationData(corpIDLookup.corporation[0], !lite.hasSupers); var textNames = $"{LM.Get("Corporation")}:\n{LM.Get("Alliance")}:\n{LM.Get("CEO")}\n{LM.Get("Pilots")}"; var textValues = $"{corporationData.name}[{corporationData.ticker}]\n{alliance}{allianceTicker}\n[{ceo.name}](https://zkillboard.com/character/{corporationData.ceo_id}/)\n{corporationData.member_count}"; var supersCount = zkillContent == null ? "???" : (zkillContent.hasSupers ? zkillContent.supers?.titans?.data?.Length.ToString() ?? "0" : "0"); var titansCount = zkillContent == null ? "???" : (zkillContent.hasSupers ? zkillContent.supers?.supercarriers?.data?.Length.ToString() ?? "0" : "0"); var system = zkillContent?.topLists?.FirstOrDefault(a => a.type == "solarSystem")?.values?.FirstOrDefault()?.solarSystemName ?? "???"; var textPvpNames = $"{LM.Get("Dangerous")}:\n{LM.Get("FleetCHance2")}:\n{LM.Get("corpSoloKills")}\n{LM.Get("corpTotalKills")}\n{LM.Get("corpKnownSupers")}\n{LM.Get("corpActiveSystem")}"; var textPvpValues = $"{zkillContent?.dangerRatio ?? 0}%\n{zkillContent?.gangRatio ?? 0}%\n{zkillContent?.soloKills ?? 0}\n{zkillContent?.shipsDestroyed ?? 0}\n{supersCount}/{titansCount}\n{system}"; var sList = await MailModule.PrepareBodyMessage(corporationData.description); var desc = sList[0]; if (desc.Length > 1024) { desc = desc.Substring(0, 1023); } desc = string.IsNullOrWhiteSpace(desc) ? "-" : desc; var builder = new EmbedBuilder() .WithDescription( $"[zKillboard](https://zkillboard.com/corporation/{corpIDLookup.corporation[0]}) / [EVEWho](https://evewho.com/corp/{HttpUtility.UrlEncode(corporationData.name)})") .WithColor(new Color(0x4286F4)) .WithThumbnailUrl($"https://image.eveonline.com/Corporation/{corpIDLookup.corporation[0]}_64.png") .WithAuthor(author => { author .WithName($"{corporationData.name}"); }) .AddField(LM.Get("corpGeneralInfo"), textNames, true) .AddField("-", textValues, true) .AddField(LM.Get("corpPvpInfo"), textPvpNames, true) .AddField("-", textPvpValues, true) .AddField(LM.Get("corpDescription"), desc) ; var embed = builder.Build(); await APIHelper.DiscordAPI.ReplyMessageAsync(context, " ", embed); await LogHelper.LogInfo($"Sending {context.Message.Author} Corporation Info Request", LogCat.CorpSearch); }
private async Task <bool> OnRequestReceived(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleHRM) { return(false); } var request = context.Request; var response = context.Response; try { var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebListenPort; if (request.Url.LocalPath == "/callback.php" || request.Url.LocalPath == $"{extPort}/callback.php" || request.Url.LocalPath == $"{port}/callback.php") { var clientID = Settings.WebServerModule.CcpAppClientId; var secret = Settings.WebServerModule.CcpAppSecret; var prms = request.Url.Query.TrimStart('?').Split('&'); var code = prms[0].Split('=')[1]; var state = prms.Length > 1 ? prms[1].Split('=')[1] : null; //not an HRM query if (state != "matahari") { return(false); } //have code var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); var characterId = result == null ? 0 : Convert.ToInt32(result[0]); if (result == null || await CheckAccess(characterId) == false) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("HRM Module", LM.Get("accessDenied")), response); return(true); } var authCode = WebAuthModule.GetUniqID(); await SQLHelper.SQLiteDataInsertOrUpdate("hrmAuth", new Dictionary <string, object> { { "id", result[0] }, { "time", DateTime.Now }, { "code", authCode } }); //redirect to timers await response.RedirectAsync(new Uri(WebServerModule.GetHRMMainURL(authCode))); return(true); } if (request.Url.LocalPath.StartsWith("/hrm.php") || request.Url.LocalPath.StartsWith($"{extPort}/hrm.php") || request.Url.LocalPath.StartsWith($"{port}/hrm.php")) { if (string.IsNullOrWhiteSpace(request.Url.Query)) { //redirect to auth await response.RedirectAsync(new Uri(WebServerModule.GetHRMAuthURL())); return(true); } var prms = request.Url.Query.TrimStart('?').Split('&'); if (prms.Length < 3) { await WebServerModule.WriteResponce(LM.Get("AccessDenied"), response); return(true); } var data = prms.FirstOrDefault(a => a.StartsWith("data")).Split('=')[1]; var authCode = prms.FirstOrDefault(a => a.StartsWith("id")).Split('=')[1]; var state = prms.FirstOrDefault(a => a.StartsWith("state")).Split('=')[1]; var page = Convert.ToInt32(prms.FirstOrDefault(a => a.StartsWith("page"))?.Split('=')[1] ?? "0"); if (state != "matahari") { if (IsNoRedirect(data)) { await WebServerModule.WriteResponce(LM.Get("pleaseReauth"), response); } else { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); } return(true); } var chId = await SQLHelper.SQLiteDataQuery <string>("hrmAuth", "id", "code", authCode); var rChar = string.IsNullOrEmpty(chId) ? null : await APIHelper.ESIAPI.GetCharacterData(Reason, chId, true); if (rChar == null) { if (IsNoRedirect(data)) { await WebServerModule.WriteResponce(LM.Get("pleaseReauth"), response); } else { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); } return(true); } var characterId = Convert.ToInt32(chId); //have charId - had to check it //check in db var timeout = Settings.HRMModule.AuthTimeoutInMinutes; if (timeout != 0) { var result = await SQLHelper.SQLiteDataQuery <string>("hrmAuth", "time", "id", chId); if (result == null || (DateTime.Now - DateTime.Parse(result)).TotalMinutes > timeout) { if (IsNoRedirect(data)) { await WebServerModule.WriteResponce(LM.Get("pleaseReauth"), response); } //redirect to auth else { await response.RedirectAsync(new Uri(WebServerModule.GetHRMAuthURL())); } return(true); } //prolong session if (data == "0" || data.StartsWith("inspect")) { await SQLHelper.SQLiteDataUpdate("hrmAuth", "time", DateTime.Now, "code", authCode); } } if (await CheckAccess(characterId) == false) { if (IsNoRedirect(data)) { await WebServerModule.WriteResponce(LM.Get("pleaseReauth"), response); } else { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("HRM Module", LM.Get("accessDenied")), response); } return(true); } switch (data) { //main page case "0": { var membersHtml = await GenerateMembersListHtml(authCode); var awaitingHtml = await GenerateAwaitingListHtml(authCode); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Main).Replace("{header}", LM.Get("hrmTemplateHeader")) .Replace("{loggedInAs}", LM.Get("loggedInAs", rChar.name)) .Replace("{charId}", characterId.ToString()) .Replace("{LogOutUrl}", WebServerModule.GetWebSiteUrl()) .Replace("{LogOut}", LM.Get("LogOut")) .Replace("{locale}", LM.Locale) .Replace("{membersContent}", membersHtml) .Replace("{awaitingContent}", awaitingHtml) .Replace("{membersHeader}", LM.Get("hrmMembersHeader")) .Replace("{awaitingHeader}", LM.Get("hrmAwaitingHeader")) ; await WebServerModule.WriteResponce(text, response); } break; case var s when s.StartsWith("inspect"): { try { if (!int.TryParse(data.Replace("inspect", ""), out var inspectCharId)) { await response.RedirectAsync(new Uri(WebServerModule.GetHRMAuthURL())); return(true); } var iChar = await APIHelper.ESIAPI.GetCharacterData(Reason, inspectCharId, true); var iCorp = await APIHelper.ESIAPI.GetCorporationData(Reason, iChar.corporation_id, true); var iAlly = iCorp.alliance_id.HasValue ? await APIHelper.ESIAPI.GetAllianceData(Reason, iCorp.alliance_id.Value, true) : null; var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; var corpHistoryHtml = await GenerateCorpHistory(inspectCharId); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Inspect).Replace("{header}", LM.Get("hrmInspectingHeader", iChar.name)) .Replace("{loggedInAs}", LM.Get("loggedInAs", rChar.name)) .Replace("{charId}", characterId.ToString()) .Replace("{LogOutUrl}", WebServerModule.GetWebSiteUrl()) .Replace("{LogOut}", LM.Get("LogOut")) .Replace("{locale}", LM.Locale) .Replace("{imgCorp}", $"https://image.eveonline.com/Corporation/{iChar.corporation_id}_64.png") .Replace("{imgAlly}", $"https://image.eveonline.com/Alliance/{iCorp.alliance_id ?? 0}_64.png") .Replace("{imgChar}", $"https://image.eveonline.com/Character/{inspectCharId}_256.jpg") .Replace("{zkillChar}", $"http://www.zkillboard.com/character/{inspectCharId}") .Replace("{zkillCorp}", $"http://www.zkillboard.com/corporation/{iChar.corporation_id}") .Replace("{zkillAlly}", $"http://www.zkillboard.com/alliance/{iCorp.alliance_id ?? 0}") .Replace("{charName}", iChar.name) .Replace("{charCorpName}", $"{iCorp.name} [{iCorp.ticker}]") .Replace("{charAllyName}", $"{iAlly?.name} [{iAlly?.ticker}]") .Replace("{charBirthday}", $"{iChar.birthday.ToString(Settings.Config.ShortTimeFormat)}") .Replace("{corpHistoryTable}", corpHistoryHtml) .Replace("{disableAlly}", iAlly == null ? "d-none" : null) .Replace("{Close}", LM.Get("Close")) .Replace("{secStatus}", iChar.security_status.HasValue ? Math.Round(iChar.security_status.Value, 1).ToString("0.0") : null) .Replace("{mailHeader}", LM.Get("mailHeader")) .Replace("{backUrl}", WebServerModule.GetHRMMainURL(authCode)) .Replace("{Back}", LM.Get("Back")) .Replace("{hrmInspectChar}", LM.Get("hrmInspectChar")) .Replace("{hrmInspectCorp}", LM.Get("hrmInspectCorp")) .Replace("{hrmInspectAlly}", LM.Get("hrmInspectAlly")) .Replace("{hrmInspectSS}", LM.Get("hrmInspectSS")) .Replace("{hrmInspectBirth}", LM.Get("hrmInspectBirth")) .Replace("{tabLastYearStats}", LM.Get("hrmTabLastYearStats")) .Replace("{tabJournal}", LM.Get("hrmTabJournal")) .Replace("{tabTransfers}", LM.Get("hrmTabTransfers")) .Replace("{tabContracts}", LM.Get("hrmTabContracts")) .Replace("{tabMail}", LM.Get("hrmTabMail")) .Replace("{tabCorpHistory}", LM.Get("hrmTabCorpHistory")) .Replace("{tabContacts}", LM.Get("hrmTabContacts")) .Replace("{mailListUrl}", WebServerModule.GetHRM_AjaxMailListURL(inspectCharId, authCode)) .Replace("{transactListUrl}", WebServerModule.GetHRM_AjaxTransactListURL(inspectCharId, authCode)) .Replace("{journalListUrl}", WebServerModule.GetHRM_AjaxJournalListURL(inspectCharId, authCode)) .Replace("{lysListUrl}", WebServerModule.GetHRM_AjaxLysListURL(inspectCharId, authCode)) .Replace("{contractsListUrl}", WebServerModule.GetHRM_AjaxContractsListURL(inspectCharId, authCode)) .Replace("{contactsListUrl}", WebServerModule.GetHRM_AjaxContactsListURL(inspectCharId, authCode)) .Replace("{disableMail}", SettingsManager.HasReadMailScope(userTokenEntity.PermissionsList) ? null : "d-none") .Replace("{allowMailBool}", SettingsManager.HasReadMailScope(userTokenEntity.PermissionsList) ? "true" : "false") .Replace("{disableWallet}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? null : "d-none") .Replace("{allowWalletBool}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? "true" : "false") .Replace("{disableCharStats}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? null : "d-none") .Replace("{allowCharStatsBool}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? "true" : "false") .Replace("{disableContracts}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? null : "d-none") .Replace("{allowContractsBool}", SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList) ? "true" : "false") .Replace("{disableContacts}", SettingsManager.HasCharContactsScope(userTokenEntity.PermissionsList) ? null : "d-none") .Replace("{allowContactsBool}", SettingsManager.HasCharContactsScope(userTokenEntity.PermissionsList) ? "true" : "false") .Replace("{disableSP}", SettingsManager.HasCharSkillsScope(userTokenEntity.PermissionsList) ? null : "d-none") ; //private info if (hasToken) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); if (SettingsManager.HasReadMailScope(userTokenEntity.PermissionsList)) { var total = await GetMailPagesCount(token, inspectCharId); text = text.Replace("totalMailPages!!", total.ToString()); } if (SettingsManager.HasCharWalletScope(userTokenEntity.PermissionsList)) { var total = await GetCharTransactPagesCount(token, inspectCharId); text = text.Replace("totalTransactPages!!", total.ToString()); total = await GetCharJournalPagesCount(token, inspectCharId); text = text.Replace("totalJournalPages!!", total.ToString()); } if (SettingsManager.HasCharStatsScope(userTokenEntity.PermissionsList)) { var total = GetCharJournalPagesCount(); text = text.Replace("totalLysPages!!", total.ToString()); } if (SettingsManager.HasCharContractsScope(userTokenEntity.PermissionsList)) { var total = await GetCharContractsPagesCount(token, inspectCharId); text = text.Replace("totalcontractsPages!!", total.ToString()); } if (SettingsManager.HasCharContactsScope(userTokenEntity.PermissionsList)) { var total = await GetCharContactsPagesCount(token, inspectCharId); text = text.Replace("totalcontactsPages!!", total.ToString()); } if (SettingsManager.HasCharSkillsScope(userTokenEntity.PermissionsList)) { var skills = await APIHelper.ESIAPI.GetCharSkills(Reason, inspectCharId, token); text = text.Replace("{totalSP}", skills.total_sp.ToString("N0")); } } text = text.Replace("totalMailPages!!", "0"); text = text.Replace("totalTransactPages!!", "0"); text = text.Replace("totalJournalPages!!", "0"); text = text.Replace("totalLysPages!!", "0"); text = text.Replace("totalcontractsPages!!", "0"); text = text.Replace("totalcontactsPages!!", "0"); text = text.Replace("{totalSP}", "0"); await WebServerModule.WriteResponce(text, response); } catch (Exception ex) { await LogHelper.LogEx("Inspection Error", ex, Category); await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("HRM Module", LM.Get("accessDenied")), response); return(true); } } break; case var s when s.StartsWith("maillist"): { var values = data.Replace("maillist", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var mailHtml = await GenerateMailHtml(token, inspectCharId, authCode, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", mailHtml); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("transactlist"): { var values = data.Replace("transactlist", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var html = await GenerateTransactionsHtml(token, inspectCharId, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", html); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("journallist"): { var values = data.Replace("journallist", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var html = await GenerateJournalHtml(token, inspectCharId, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", html); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("contracts"): { var values = data.Replace("contracts", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var html = await GenerateContractsHtml(token, inspectCharId, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", html); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("contacts"): { var values = data.Replace("contacts", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var html = await GenerateContactsHtml(token, inspectCharId, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", html); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("lys"): { var values = data.Replace("lys", ""); if (!int.TryParse(values, out var inspectCharId)) { return(true); } var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharId); var hasToken = userTokenEntity != null; if (hasToken && page > 0) { var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var html = await GenerateLysHtml(token, inspectCharId, page); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_Table) .Replace("{table}", html); await WebServerModule.WriteResponce(text, response); } } break; case var s when s.StartsWith("mail"): { try { var values = data.Replace("mail", "").Split('_'); if (!int.TryParse(values[0], out var mailBodyId)) { return(true); } var inspectCharacterId = Convert.ToInt32(values[1]); var userTokenEntity = await SQLHelper.UserTokensGetEntry(inspectCharacterId); var token = await APIHelper.ESIAPI.RefreshToken(userTokenEntity.RefreshToken, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); var mail = await APIHelper.ESIAPI.GetMail(Reason, inspectCharacterId, token, mailBodyId); if (mail != null) { var from = await APIHelper.ESIAPI.GetCharacterData(Reason, mail.@from); var corpHistory = await APIHelper.ESIAPI.GetCharCorpHistory(Reason, mail.@from); var date = DateTime.Parse(mail.timestamp); var corp = corpHistory.OrderByDescending(a => a.Date).FirstOrDefault(a => date >= a.Date); var fromCorp = corp == null ? null : await APIHelper.ESIAPI.GetCorporationData(Reason, corp.corporation_id); var corpText = fromCorp == null ? null : $" - {fromCorp.name}[{fromCorp.ticker}]"; //var msg = Regex.Replace(mail.body, @"<font size\s*=\s*"".+?""", @"<font "); var msg = await MailModule.PrepareBodyMessage(mail.body); var text = File.ReadAllText(SettingsManager.FileTemplateHRM_MailBody) .Replace("{DateHeader}", LM.Get("mailDateHeader")) .Replace("{SubjectHeader}", LM.Get("mailSubjectHeader")) .Replace("{FromHeader}", LM.Get("mailFromHeader")) .Replace("{TextHeader}", LM.Get("mailTextHeader")) .Replace("{mailDate}", date.ToString(Settings.Config.ShortTimeFormat)) .Replace("{mailSubject}", mail.subject) .Replace("{maiFrom}", $"{@from?.name}{corpText}") .Replace("{mailText}", msg) ; await WebServerModule.WriteResponce(text, response); } } catch (Exception ex) { await LogHelper.LogEx("Inspection Mail Body Error", ex, Category); if (IsNoRedirect(data)) { await WebServerModule.WriteResponce(LM.Get("pleaseReauth"), response); } else { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("HRM Module", LM.Get("accessDenied")), response); } return(true); } } break; } return(true); } } catch (Exception ex) { await response.WriteContentAsync("ERROR: Server error"); await LogHelper.LogEx(ex.Message, ex, Category); } return(false); }
/// <summary> /// Process Ip. /// </summary> /// <param name="source"></param> /// <param name="e"></param> private static void ProcessIp(object source, ElapsedEventArgs e) { try { // Send any unsent mail. for (var i = 0; i < MailMessages.Count; i++) { var message = MailMessages[i]; if (MailModule.Send(MailModule.SmtpHost, MailModule.SmtpPort, message, MailModule.EnableSsl).Count == 0) { MailMessages.Remove(message); } } // Create a web client to gather data. using (var wc = new WebClient()) { // Call out to the Service Host for the external ip being used by the current network. WebResponse = Support.GetJsonContent <WebResponse>(wc.DownloadString(MailModule.ServiceHost)); // If the response is null or empty send an email to the admin(s) to check for errors. if (WebResponse == null) { File.AppendAllText(LogFilePath + $@"{ DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - An error occured: The web response from {MailModule.ServiceHost} was '{null}'.{Environment.NewLine}{Environment.NewLine}"); // Prepare mail message to send. var message = new MailMessage(MailModule.EmailFrom, MailModule.EmailTo, "What Is My Ip - Error!", $"External IP Web Response was '{null}'."); // Send mail. // Flag service to resend if an error occured when sending mail. ResendToAddresses = MailModule.Send(MailModule.SmtpHost, MailModule.SmtpPort, message, MailModule.EnableSsl); // Queue previously unsent mail. if (ResendToAddresses.Count > 0) { MailMessages.Add(message); } else { // Write to logs. File.AppendAllText(LogFilePath + $@"{DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - Email sent out to: {MailModule.EmailTo}{Environment.NewLine}"); } foreach (var address in ResendToAddresses) { File.AppendAllText(LogFilePath + $@"{DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - Email failed to send out to: {address}{Environment.NewLine}"); } // Clear Addresses. ResendToAddresses.Clear(); } } // Check for a response. if (WebResponse != null) { // If current ip is null, which should not happen unless the registry entry is not set properly, // then parse the web response and update the registry. if (CurrentExternalIp == null) { CurrentExternalIp = NewExternalIpAddress = IPAddress.Parse(WebResponse.IpAddress); // Push to registry. UpdateCurrentExternalIpRegistryEntry(); // TODO: Saving in not working. //SaveSettings(); } else { NewExternalIpAddress = IPAddress.Parse(WebResponse.IpAddress); } // Process new ip, if changed. if (!CurrentExternalIp.Equals(NewExternalIpAddress)) { CurrentExternalIp = NewExternalIpAddress; // Push to registry. UpdateCurrentExternalIpRegistryEntry(); // TODO: Saving in not working. //SaveSettings(); if (ModulesController.IsIisEnabled) { // Update IIS FTP firewall settings. IISModule.SetFtpExternalFirewallIp(NewExternalIpAddress); } // Prepare mail message to send. var message = new MailMessage(MailModule.EmailFrom, MailModule.EmailTo, "What Is My Ip - IP Address Change!", $"External IP changed to: {WebResponse.IpAddress}"); // Send Mail. // Flag service to resend if an error occured when sending mail. ResendToAddresses = MailModule.Send(MailModule.SmtpHost, MailModule.SmtpPort, message, MailModule.EnableSsl); // Queue previously unsent mail. if (ResendToAddresses.Count > 0) { MailMessages.Add(message); } else { // Write to logs. File.AppendAllText(LogFilePath + $@"{DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - Email sent out to: {MailModule.EmailTo}{Environment.NewLine}"); } foreach (var address in ResendToAddresses) { File.AppendAllText(LogFilePath + $@"{DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - Email failed to send out to: {address}{Environment.NewLine}"); } // Clear Addresses. ResendToAddresses.Clear(); } WebResponse = null; } } catch (Exception ex) { // Output exception details. if (!string.IsNullOrWhiteSpace(LogFilePath)) { File.AppendAllText(LogFilePath + $@"{ DateTime.Now:(yyyy-MM-dd)}.log", $@"{DateTime.Now} - An error occured: {ex}{Environment.NewLine}{Environment.NewLine}"); } else { throw; } } }