コード例 #1
0
ファイル: TimerItem.cs プロジェクト: tlcoffee/ThunderED
 public static TimerItem FromWebTimerData(WebTimerData data, WebAuthUserData user)
 {
     return(new TimerItem
     {
         timerLocation = data.Location,
         timerType = data.Type,
         timerStage = data.Stage,
         timerOwner = data.Owner,
         timerET = ((int)(data.Date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds).ToString(),
         timerNotes = data.Notes,
         timerChar = user.Name
     });
 }
コード例 #2
0
ファイル: WebServerModule.cs プロジェクト: tlcoffee/ThunderED
        /// <summary>
        /// Iterate between connected handlers to process request
        /// </summary>
        public static async Task <WebQueryResult> ProcessWebCallbacks(string query, CallbackTypeEnum type, string ip,
                                                                      WebAuthUserData data)
        {
            foreach (var method in WebModuleConnectors.Values)
            {
                try
                {
                    var result = await method(query, type, ip, data);

                    if (result.Result != WebQueryResultEnum.False)
                    {
                        return(result);
                    }
                }
                catch (Exception ex)
                {
                    await LogHelper.LogEx($"Module method {method.Method.Name} throws ex!", ex);
                }
            }

            return(WebQueryResult.False);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        private async Task <WebQueryResult> ProcessAuth(string query, CallbackTypeEnum callbackType, string inputIp, WebAuthUserData webUserData)
        {
            if (!Settings.Config.ModuleTimers || webUserData.Id == 0 || string.IsNullOrEmpty(webUserData.Name))
            {
                return(WebQueryResult.False);
            }

            return(WebQueryResult.False);

            try
            {
                RunningRequestCount++;
                var port = Settings.WebServerModule.WebExternalPort;

                /*   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;
                 *     }
                 *
                 *     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--;
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: tlcoffee/ThunderED
 public static async Task <WebQueryResult> ProcessCallback(string queryStringValue, CallbackTypeEnum type,
                                                           string ip, WebAuthUserData data)
 {
     return(await WebServerModule.ProcessWebCallbacks(queryStringValue, type, ip, data));
 }