public async Task <WebQueryResult> ProcessRequest(string query, CallbackTypeEnum type, string ip, WebAuthUserData data) { if (!Settings.Config.ModuleContractNotifications) { return(WebQueryResult.False); } try { RunningRequestCount++; if (!query.Contains("&state=12")) { return(WebQueryResult.False); } var prms = query.TrimStart('?').Split('&'); var code = prms[0].Split('=')[1]; var result = await WebAuthModule.GetCharacterIdFromCode(code, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); if (result == null) { return(WebQueryResult.EsiFailure); } var characterId = result[0]; var numericCharId = Convert.ToInt64(characterId); if (string.IsNullOrEmpty(characterId)) { await LogHelper.LogWarning("Bad or outdated feed request!"); var r = WebQueryResult.BadRequestToSystemAuth; r.Message1 = LM.Get("accessDenied"); return(r); } if (!HasAuthAccess(numericCharId)) { await LogHelper.LogWarning($"Unauthorized feed request from {characterId}"); var r = WebQueryResult.BadRequestToSystemAuth; r.Message1 = LM.Get("accessDenied"); return(r); } if (WebGetAuthGroup(numericCharId, out _) == null) { await LogHelper.LogWarning("Feed auth group not found!"); var r = WebQueryResult.BadRequestToSystemAuth; r.Message1 = LM.Get("accessDenied"); return(r); } //var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true); await SQLHelper.InsertOrUpdateTokens("", characterId, "", result[1]); await LogHelper.LogInfo($"Mail feed added for character: {characterId}", LogCat.AuthWeb); var res = WebQueryResult.ContractsAuthSuccess; res.Message1 = LM.Get("mailAuthSuccessHeader"); res.Message2 = LM.Get("mailAuthSuccessBody"); res.AddValue("url", ServerPaths.GetFeedSuccessUrl()); return(res); } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } finally { RunningRequestCount--; } return(WebQueryResult.False); }
private async Task <bool> OnAuthRequest(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleMail) { return(false); } var request = context.Request; var response = context.Response; try { RunningRequestCount++; var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebExternalPort; if (request.HttpMethod == HttpMethod.Get.ToString()) { if (request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{extPort}/callback" || request.Url.LocalPath == $"{port}/callback") { 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; if (state != "12") { return(false); } //state = 12 && have code var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); if (result == null) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Mail Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } var lCharId = Convert.ToInt64(result[0]); var allowedCharacters = GetAllParsedCharactersWithGroups(); string allowedGroup = null; foreach (var(group, allowedCharacterIds) in allowedCharacters) { if (allowedCharacterIds.Contains(lCharId)) { allowedGroup = group; break; } } if (string.IsNullOrEmpty(allowedGroup)) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Mail Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } await SQLHelper.InsertOrUpdateTokens("", result[0], result[1], ""); await WebServerModule.WriteResponce(File .ReadAllText(SettingsManager.FileTemplateMailAuthSuccess) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{header}", "authTemplateHeader") .Replace("{body}", LM.Get("mailAuthSuccessHeader")) .Replace("{body2}", LM.Get("mailAuthSuccessBody")) .Replace("{backText}", LM.Get("backText")), response ); return(true); } } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } finally { RunningRequestCount--; } return(false); }
private async Task <bool> OnDisplayTimers(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleTimers) { return(false); } var request = context.Request; var response = context.Response; try { RunningRequestCount++; var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebExternalPort; if (request.HttpMethod == HttpMethod.Get.ToString()) { if (request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{extPort}/callback" || request.Url.LocalPath == $"{port}/callback") { 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; if (state != "11") { return(false); } //state = 11 && have code var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); if (result == null) { //TODO invalid auth await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } var characterId = Convert.ToInt64(result[0]); await SQLHelper.UpdateTimersAuth(characterId); //redirect to timers var iid = Convert.ToBase64String(Encoding.UTF8.GetBytes(characterId.ToString())); iid = HttpUtility.UrlEncode(iid); var url = $"{WebServerModule.GetTimersURL()}?data=0&id={iid}&state=11"; await response.RedirectAsync(new Uri(url)); return(true); } if (request.Url.LocalPath == "/timers" || request.Url.LocalPath == $"{extPort}/timers" || request.Url.LocalPath == $"{port}/timers") { if (string.IsNullOrWhiteSpace(request.Url.Query)) { //redirect to auth await response.RedirectAsync(new Uri(WebServerModule.GetTimersAuthURL())); return(true); } var prms = request.Url.Query.TrimStart('?').Split('&'); if (prms.Length != 3) { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } var data = prms[0].Split('=')[1]; var inputId = prms[1].Split('=')[1]; var state = prms[2].Split('=')[1]; if (state != "11") { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } var characterId = Convert.ToInt64( Encoding.UTF8.GetString(Convert.FromBase64String(HttpUtility.UrlDecode(inputId)))); var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true); if (rChar == null) { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } //have charId - had to check it //check in db var timeout = Settings.TimersModule.AuthTimeoutInMinutes; if (timeout != 0) { var result = await SQLHelper.GetTimersAuthTime(characterId); if (result == null || (DateTime.Now - DateTime.Parse(result)).TotalMinutes > timeout) { //redirect to auth await response.RedirectAsync(new Uri(WebServerModule.GetTimersAuthURL())); return(true); } } var checkResult = await CheckAccess(characterId, rChar); if (!checkResult[0]) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Timers Module", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } if (checkResult[1] && data.StartsWith("delete")) { data = data.Substring(6, data.Length - 6); await SQLHelper.DeleteTimer(Convert.ToInt64(data)); var x = HttpUtility.ParseQueryString(request.Url.Query); x.Set("data", "0"); await response.RedirectAsync(new Uri($"{request.Url.ToString().Split('?')[0]}?{x}")); return(true); } await WriteCorrectResponce(response, checkResult[1], characterId); return(true); } } else if (request.HttpMethod == HttpMethod.Post.ToString()) { var prms = request.Url.Query.TrimStart('?').Split('&'); if (prms.Length != 3) { //await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(false); } var inputId = prms[1].Split('=')[1]; var state = prms[2].Split('=')[1]; if (state != "11") { // await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(false); } var characterId = Convert.ToInt64( Encoding.UTF8.GetString(Convert.FromBase64String(HttpUtility.UrlDecode(inputId)))); var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true); if (rChar == null) { // await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(false); } var checkResult = await CheckAccess(characterId, rChar); if (!checkResult[0]) { return(true); } var data = await request.ReadContentAsStringAsync(); if (checkResult[1] && data != null) { if (data.StartsWith("delete")) { data = data.Substring(6, data.Length - 6); await SQLHelper.DeleteTimer(Convert.ToInt64(data)); } else { TimerItem entry = null; try { entry = JsonConvert.DeserializeObject <TimerItem>(data); } catch { //ignore } if (entry == null) { await response.WriteContentAsync(LM.Get("invalidInputData")); return(true); } var iDate = entry.GetDateTime(); if (iDate == null) { await response.WriteContentAsync(LM.Get("invalidTimeFormat")); return(true); } if (iDate < DateTime.Now) { await response.WriteContentAsync(LM.Get("passedTimeValue")); return(true); } //save entry.timerChar = rChar.name; await SQLHelper.UpdateTimer(entry); } return(true); } } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } finally { RunningRequestCount--; } return(false); }
private async Task <bool> OnAuthRequest(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleWebConfigEditor) { return(false); } var request = context.Request; var response = context.Response; if (request.HttpMethod != HttpMethod.Get.ToString()) { return(false); } var extIp = Settings.WebServerModule.WebExternalIP; var extPort = Settings.WebServerModule.WebExternalPort; try { RunningRequestCount++; if (request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{extPort}/callback") { var clientID = Settings.WebServerModule.CcpAppClientId; var secret = Settings.WebServerModule.CcpAppSecret; var prms = request.Url.Query.TrimStart('?').Split('&'); if (prms.Length == 0 || prms[0].Split('=').Length == 0 || string.IsNullOrEmpty(prms[0])) { return(false); } var code = prms[0].Split('=')[1]; var state = prms.Length > 1 ? prms[1].Split('=')[1] : null; if (state != "settings") { return(false); } //have code var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); var characterId = result == null ? 0 : Convert.ToInt64(result[0]); if (characterId == 0) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Web Config Editor", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true); if (rChar == null) { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } if (await CheckAccess(characterId, rChar) == null) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Web Config Editor", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } var we = new WebEditorAuthEntry { Id = characterId, Code = Guid.NewGuid().ToString("N"), Time = DateTime.Now }; await SQLHelper.SaveWebEditorAuthEntry(we); var url = WebServerModule.GetWebEditorUrl(we.Code); await response.RedirectAsync(new Uri(url)); return(true); } if (request.Url.LocalPath == "/settings" || request.Url.LocalPath == $"{extPort}/settings") { var prms = request.Url.Query.TrimStart('?').Split('&'); if (prms.Length == 0 || prms[0].Split('=').Length == 0 || string.IsNullOrEmpty(prms[0])) { return(false); } var code = prms.FirstOrDefault(a => a.StartsWith("code"))?.Split('=')[1]; var state = prms.FirstOrDefault(a => a.StartsWith("state"))?.Split('=')[1]; if (state != "settings" && state != "settings_sa" && state != "settings_ti") { return(false); } if (code == null) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Web Config Editor", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } var we = await SQLHelper.GetWebEditorAuthEntry(code); if (we == null) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Web Config Editor", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, we.Id, true); if (rChar == null) { await response.RedirectAsync(new Uri(WebServerModule.GetWebSiteUrl())); return(true); } var filter = await CheckAccess(we.Id, rChar); if (filter == null) { await WebServerModule.WriteResponce( WebServerModule.GetAccessDeniedPage("Web Config Editor", LM.Get("accessDenied"), WebServerModule.GetWebSiteUrl()), response); return(true); } if (state == "settings_sa") { if (!filter.CanEditSimplifiedAuth) { await WebServerModule.WriteResponce("Nope", response); return(true); } var data = prms.FirstOrDefault(a => a.StartsWith("data"))?.Split('=')[1]; data = HttpUtility.UrlDecode(data); if (data != null) { //load clean settings from file await SettingsManager.UpdateSettings(); var convData = JsonConvert.DeserializeObject <List <SaData> >(data); convData = convData.Where(a => !string.IsNullOrEmpty(a.Name?.Trim()) && !string.IsNullOrEmpty(a.Group?.Trim()) && !string.IsNullOrEmpty(a.Roles?.Trim())).ToList(); await SettingsManager.SaveSimplifiedAuthData(convData .Select(a => $"{a.Name}|{a.Group}|{a.Roles}").ToList()); //inject updated simplified auth data await SettingsManager.LoadSimplifiedAuth(); //rebuild auth cache if (Settings.Config.ModuleAuthWeb) { await TickManager.GetModule <WebAuthModule>().Initialize(); } await LogHelper.LogInfo("Simplified auth update completed!", Category); } else { var simplifiedAuthEntities = await SettingsManager.GetSimplifiedAuthData(); var x = new { total = simplifiedAuthEntities.Count, totalNotFiltered = simplifiedAuthEntities.Count, rows = simplifiedAuthEntities }; var json = JsonConvert.SerializeObject(x); await WebServerModule.WriteJsonResponse(json, response); } return(true); } if (state == "settings_ti") { if (!filter.CanEditTimers) { await WebServerModule.WriteResponce("Nope", response); return(true); } var data = prms.FirstOrDefault(a => a.StartsWith("data"))?.Split('=')[1]; data = HttpUtility.UrlDecode(data); if (data != null) { var convData = JsonConvert.DeserializeObject <List <TiData> >(data); convData = convData.Where(a => !string.IsNullOrEmpty(a.Name?.Trim()) && !string.IsNullOrEmpty(a.Entities?.Trim()) && !string.IsNullOrEmpty(a.Roles?.Trim())).ToList(); await SaveTimersAuthData(convData); } else { var ent = SettingsManager.Settings.TimersModule.AccessList.Select(a => new TiData { Name = a.Key, Entities = string.Join(",", a.Value.FilterEntities.Select(b => b.ToString())), Roles = string.Join(",", a.Value.FilterDiscordRoles) }).ToList(); var x = new { total = ent.Count, totalNotFiltered = ent.Count, rows = ent }; var json = JsonConvert.SerializeObject(x); await WebServerModule.WriteJsonResponse(json, response); } return(true); } //check in db var timeout = Settings.WebConfigEditorModule.SessionTimeoutInMinutes; if (timeout != 0) { if ((DateTime.Now - we.Time).TotalMinutes > timeout) { await SQLHelper.DeleteWebEditorEntry(we.Id); //redirect to auth await response.RedirectAsync(new Uri(WebServerModule.GetWebConfigAuthURL())); return(true); } //update session overwise we.Time = DateTime.Now; await SQLHelper.SaveWebEditorAuthEntry(we); } //var groups = string.Join(", ", Settings.WebAuthModule.AuthGroups.Keys.Distinct()); var sb = new StringBuilder(); foreach (var groupName in Settings.WebAuthModule.AuthGroups.Keys.Distinct()) { sb.Append($"{{value: '{groupName}', text: '{groupName}'}},"); } sb.Remove(sb.Length - 1, 1); var groupList = $"[{sb}]"; var timersContent = string.Empty; var timersScripts = string.Empty; var simpleAuthContent = string.Empty; var simpleAuthScripts = string.Empty; if (filter.CanEditSimplifiedAuth) { simpleAuthContent = File.ReadAllText(SettingsManager.FileTemplateSettingsPage_SimpleAuth) .Replace("{saAddEntry}", LM.Get("webSettingsAddEntryButton")) .Replace("{saDeleteEntry}", LM.Get("webSettingsDeleteEntryButton")) .Replace("{saSave}", LM.Get("webSettingsSaveEntryButton")) .Replace("{saTableColumnName}", LM.Get("webSettingsSaColumnName")) .Replace("{saTableColumnGroup}", LM.Get("webSettingsSaColumnGroup")) .Replace("{saTableColumnRoles}", LM.Get("webSettingsSaColumnRoles")) .Replace("{serverAddress}", $"{Settings.WebServerModule.WebExternalIP}:{Settings.WebServerModule.WebExternalPort}") .Replace("{code}", code) .Replace("{locale}", SettingsManager.Settings.Config.Language) ; simpleAuthScripts = File .ReadAllText(SettingsManager.FileTemplateSettingsPage_SimpleAuth_Scripts) .Replace("{saGroupList}", groupList) .Replace("{postSimplifiedAuthUrl}", WebServerModule.GetWebEditorSimplifiedAuthUrl(code)) ; } if (filter.CanEditTimers) { timersContent = File.ReadAllText(SettingsManager.FileTemplateSettingsPage_Timers) .Replace("{saAddEntry}", LM.Get("webSettingsAddEntryButton")) .Replace("{saAddEntry}", LM.Get("webSettingsAddEntryButton")) .Replace("{saDeleteEntry}", LM.Get("webSettingsDeleteEntryButton")) .Replace("{saSave}", LM.Get("webSettingsSaveEntryButton")) .Replace("{saTableColumnName}", LM.Get("webSettingsSaColumnName")) .Replace("{tiTableColumnEntities}", LM.Get("webSettingsTiColumnEntities")) .Replace("{saTableColumnRoles}", LM.Get("webSettingsSaColumnRoles")) .Replace("{serverAddress}", $"{Settings.WebServerModule.WebExternalIP}:{Settings.WebServerModule.WebExternalPort}") .Replace("{code}", code) .Replace("{locale}", SettingsManager.Settings.Config.Language) ; timersScripts = File.ReadAllText(SettingsManager.FileTemplateSettingsPage_Timers_Scripts) .Replace("{postTimersUrl}", WebServerModule.GetWebEditorTimersUrl(code)) ; } var saActive = filter.CanEditSimplifiedAuth ? "active" : null; var tiActive = saActive != null || !filter.CanEditTimers ? null : "active"; var text = File.ReadAllText(SettingsManager.FileTemplateSettingsPage) .Replace("{headerContent}", WebServerModule.GetHtmlResourceTables()) .Replace("{header}", LM.Get("webSettingsHeader")) .Replace("{Back}", LM.Get("Back")) .Replace("{LogOut}", LM.Get("LogOut")) .Replace("{loggedInAs}", LM.Get("loggedInAs", rChar.name)) .Replace("{LogOutUrl}", WebServerModule.GetWebSiteUrl()) .Replace("{backUrl}", WebServerModule.GetWebSiteUrl()) .Replace("{simpleAuthContent}", simpleAuthContent) .Replace("{simpleAuthScripts}", simpleAuthScripts) .Replace("{timersContent}", timersContent) .Replace("{timersScripts}", timersScripts) .Replace("{code}", code) .Replace("{locale}", SettingsManager.Settings.Config.Language) .Replace("{simpleAuthTabName}", LM.Get("webSettingsSimpleAuthTabName")) .Replace("{timersTabName}", LM.Get("webSettingsTimersTabName")) .Replace("{saPageVisible}", filter.CanEditSimplifiedAuth ? null : "d-none") .Replace("{tiPageVisible}", filter.CanEditTimers ? null : "d-none") .Replace("{saPageActive}", saActive) .Replace("{tiPageActive}", tiActive) ; await WebServerModule.WriteResponce(text, response); return(true); } } catch (Exception ex) { await LogHelper.LogEx($"Error: {ex.Message}", ex, Category); } finally { RunningRequestCount--; } return(false); }
private async Task <bool> OnAuthRequest(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleIndustrialJobs) { return(false); } var request = context.Request; var response = context.Response; try { var port = Settings.WebServerModule.WebExternalPort; if (request.HttpMethod == HttpMethod.Get.ToString()) { if (request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{port}/callback") { 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; if (string.IsNullOrEmpty(state)) { return(false); } if (!state.StartsWith("ijobsauth")) { return(false); } var groupName = HttpUtility.UrlDecode(state.Replace("ijobsauth", "")); var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); if (result == null) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Industry Jobs Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } var lCharId = Convert.ToInt64(result[0]); //var group = Settings.IndustrialJobsModule.Groups[groupName]; var allowedCharacterIds = GetParsedCharacters(groupName); if (!allowedCharacterIds.Contains(lCharId)) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Industry Jobs Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } await SQLHelper.InsertOrUpdateTokens("", result[0], null, null, result[1]); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateMailAuthSuccess) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{header}", "authTemplateHeader") .Replace("{body}", LM.Get("industryJobsAuthSuccessHeader")) .Replace("{body2}", LM.Get("industryJobsAuthSuccessBody")) .Replace("{backText}", LM.Get("backText")), response ); return(true); } } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } return(false); }
public async Task <bool> Auth(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleNotificationFeed) { return(false); } var request = context.Request; var response = context.Response; var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebExternalPort; try { RunningRequestCount++; if (request.HttpMethod != HttpMethod.Get.ToString()) { return(false); } if ((request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{extPort}/callback" || request.Url.LocalPath == $"{port}/callback") && request.Url.Query.Contains("&state=9")) { var prms = request.Url.Query.TrimStart('?').Split('&'); var code = prms[0].Split('=')[1]; // var state = prms.Length > 1 ? prms[1].Split('=')[1] : null; var result = await WebAuthModule.GetCharacterIdFromCode(code, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); if (result == null) { var message = LM.Get("ESIFailure"); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateAuth3) .Replace("{message}", message) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{header}", LM.Get("authTemplateHeader")) .Replace("{backUrl}", WebServerModule.GetAuthLobbyUrl()) .Replace("{backText}", LM.Get("backText")), response); return(true); } var characterID = result[0]; var numericCharId = Convert.ToInt64(characterID); if (string.IsNullOrEmpty(characterID)) { await LogHelper.LogWarning("Bad or outdated notify feed request!"); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateAuthNotifyFail) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{message}", LM.Get("authTokenBadRequest")) .Replace("{header}", LM.Get("authTokenHeader")) .Replace("{body}", LM.Get("authTokenBodyFail")) .Replace("{backText}", LM.Get("backText")), response); return(true); } if (!TickManager.GetModule <NotificationModule>().IsValidCharacter(numericCharId)) { await LogHelper.LogWarning($"Unathorized notify feed request from {characterID}"); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateAuthNotifyFail) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{message}", LM.Get("authTokenInvalid")) .Replace("{header}", LM.Get("authTokenHeader")) .Replace("{body}", LM.Get("authTokenBodyFail")) .Replace("{backText}", LM.Get("backText")), response); return(true); } var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterID, true); await SQLHelper.InsertOrUpdateTokens(result[1] ?? "", characterID, null, ""); await LogHelper.LogInfo($"Notification feed added for character: {characterID}", LogCat.AuthWeb); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateAuthNotifySuccess) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{body2}", LM.Get("authTokenRcv2", rChar.name)) .Replace("{body}", LM.Get("authTokenRcv")).Replace("{header}", LM.Get("authTokenHeader")) .Replace("{backText}", LM.Get("backText")), response); return(true); } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } finally { RunningRequestCount--; } return(false); }
public async Task <WebQueryResult> ProcessRequest(string query, CallbackTypeEnum type, string ip, WebAuthUserData data) { if (!Settings.Config.ModuleNotificationFeed) { return(WebQueryResult.False); } try { RunningRequestCount++; if (query.Contains("&state=9")) { //var prms = QueryHelpers.ParseQuery(query); var prms = query.TrimStart('?').Split('&'); var code = prms[0].Split('=')[1]; var result = await WebAuthModule.GetCharacterIdFromCode(code, Settings.WebServerModule.CcpAppClientId, Settings.WebServerModule.CcpAppSecret); if (result == null) { return(WebQueryResult.EsiFailure); } var characterId = result[0]; var numericCharId = Convert.ToInt64(characterId); if (string.IsNullOrEmpty(characterId)) { await LogHelper.LogWarning("Bad or outdated notify feed request!"); var r = WebQueryResult.BadRequestToSystemAuth; r.Message1 = LM.Get("authTokenBodyFail"); r.Message2 = LM.Get("authTokenBadRequest"); return(r); } if (!TickManager.GetModule <NotificationModule>().IsValidCharacter(numericCharId)) { await LogHelper.LogWarning($"Unauthorized notify feed request from {characterId}"); var r = WebQueryResult.BadRequestToSystemAuth; r.Message1 = LM.Get("authTokenBodyFail"); return(r); } var rChar = await APIHelper.ESIAPI.GetCharacterData(Reason, characterId, true); await SQLHelper.InsertOrUpdateTokens(result[1] ?? "", characterId, null, ""); await LogHelper.LogInfo($"Notification feed added for character: {characterId}", LogCat.AuthWeb); var res = WebQueryResult.GeneralAuthSuccess; res.Message1 = LM.Get("authTokenRcv"); res.Message2 = LM.Get("authTokenRcv2", rChar.name); return(res); } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } finally { RunningRequestCount--; } return(WebQueryResult.False); }
private async Task <bool> OnAuthRequest(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleContractNotifications) { return(false); } var request = context.Request; var response = context.Response; try { var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebExternalPort; if (request.HttpMethod == HttpMethod.Get.ToString()) { if (request.Url.LocalPath == "/callback" || request.Url.LocalPath == $"{extPort}/callback" || request.Url.LocalPath == $"{port}/callback") { 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; if (string.IsNullOrEmpty(state)) { return(false); } if (state.StartsWith("opencontract")) { var contractId = Convert.ToInt64(state.Substring(12, state.Length - 12)); var res = await APIHelper.ESIAPI.GetAuthToken(code, clientID, secret); if (string.IsNullOrEmpty(res[0])) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Contracts Module", LM.Get("contractFailedToOpen"), WebServerModule.GetWebSiteUrl()), response); return(true); } if (await APIHelper.ESIAPI.OpenContractIngame(Reason, contractId, res[0])) { await WebServerModule.WriteResponce(LM.Get("contractOpened"), response); } else { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Contracts Module", LM.Get("contractFailedToOpen"), WebServerModule.GetWebSiteUrl()), response); } return(true); } if (!state.StartsWith("cauth")) { return(false); } var groupName = HttpUtility.UrlDecode(state.Replace("cauth", "")); var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); if (result == null) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Contracts Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } var lCharId = Convert.ToInt64(result[0]); var group = Settings.ContractNotificationsModule.GetEnabledGroups()[groupName]; if (!group.CharacterIDs.Contains(lCharId)) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Contracts Module", LM.Get("accessDenied"), WebServerModule.GetAuthPageUrl()), response); return(true); } await SQLHelper.InsertOrUpdateTokens("", result[0], "", result[1]); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateMailAuthSuccess) .Replace("{headerContent}", WebServerModule.GetHtmlResourceDefault(false)) .Replace("{header}", "authTemplateHeader") .Replace("{body}", LM.Get("contractAuthSuccessHeader")) .Replace("{body2}", LM.Get("contractAuthSuccessBody")) .Replace("{backText}", LM.Get("backText")), response ); return(true); } } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } return(false); }
private async Task <bool> OnAuthRequest(HttpListenerRequestEventArgs context) { if (!Settings.Config.ModuleMail) { return(false); } var request = context.Request; var response = context.Response; try { var extPort = Settings.WebServerModule.WebExternalPort; var port = Settings.WebServerModule.WebListenPort; if (request.HttpMethod == HttpMethod.Get.ToString()) { 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; if (state != "12") { return(false); } //state = 12 && have code var result = await WebAuthModule.GetCharacterIdFromCode(code, clientID, secret); if (result == null) { await WebServerModule.WriteResponce(WebServerModule.GetAccessDeniedPage("Mail Module", LM.Get("accessDenied")), response); return(true); } await SQLHelper.SQLiteDataInsertOrUpdateTokens("", result[0], result[1]); await WebServerModule.WriteResponce(File.ReadAllText(SettingsManager.FileTemplateMailAuthSuccess) .Replace("{header}", "authTemplateHeader") .Replace("{body}", LM.Get("mailAuthSuccessHeader")) .Replace("{body2}", LM.Get("mailAuthSuccessBody")) .Replace("{backText}", LM.Get("backText")), response ); return(true); } } } catch (Exception ex) { await LogHelper.LogEx(ex.Message, ex, Category); } return(false); }