Beispiel #1
0
        // GET: api/Titles
        public IList <TitlesDTO> GetTitles(string searchString)
        {
            IQueryable <TitlesDTO> titles;

            if (String.IsNullOrEmpty(searchString))
            {
                return(null);
            }
            else
            {
                titles = from t in _context.Titles
                         where t.TitleName.Contains(searchString ?? "")
                         orderby t.TitleNameSortable
                         select new TitlesDTO()
                {
                    TitleId   = t.TitleId,
                    TitleName = t.TitleName
                };
            }

            var result = titles.ToList();

            foreach (var title in result)
            {
                title.Url = UrlCleaner.CleanUrl(Url.Link("", new { controller = "Details", titleId = title.TitleId }));
            }
            return(result);
        }
        public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlQuery_OneSecureKeyInUrlQueryCleared()
        {
            // Arrange
            var url        = "http://test.com?user=max&pass=123456";
            var secureKey  = "pass";
            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com?user=max&pass=XXXXXX";

            // Act
            var cleanedUrl = urlCleaner.CleanSecureData(url, secureKey, SecureDataLocation.UrlQuery);

            // Assert
            Assert.Equal(expectedResult, cleanedUrl);
        }
        public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlRest_OneSecureKeyInUrlRestCleared()
        {
            // Arrange
            var url        = "http://test.com/users/max/info";
            var secureKey  = "users";
            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/users/XXX/info";

            // Act
            var resultUrl = urlCleaner.CleanSecureData(url, secureKey, SecureDataLocation.UrlRest);

            // Assert
            Assert.Equal(expectedResult, resultUrl);
        }
        public void UrlCleaner_CleanSecureData_DoNotCleanSecureKeyIfWrongSecureDataLocationIsSpecified_SecureKeyNotCleared()
        {
            // Arrange
            var url             = "http://test.com/users/max/info?pass=1234";
            var secureKeyInRest = "users";
            var urlCleaner      = new UrlCleaner();

            var expectedResult = "http://test.com/users/max/info?pass=1234";

            // Act
            var resultUrl = urlCleaner.CleanSecureData(url, secureKeyInRest, SecureDataLocation.JsonAttribute);

            // Assert
            Assert.Equal(expectedResult, resultUrl);
        }
Beispiel #5
0
        public void ClearSecure_ClearSameInRestParameterWithTheSameNameInQuery_SecureInRestClearedNotInQuery()
        {
            // arrange
            var url       = "http://test.com/pass/123/info?pass=123456";
            var secureKey = "pass";

            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/pass/XXX/info?pass=123456";

            // act
            var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Rest);

            // assert
            Assert.Equal(expectedResult, cleanedUrl);
        }
Beispiel #6
0
        public void ClearSecure_ClearOneSecureInRestParameter_OneSecureInRestParameterCleared()
        {
            // arrange
            var url       = "http://test.com/users/max/info?pass=123456";
            var secureKey = "users";

            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/users/XXX/info?pass=123456";

            // act
            var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Rest);

            // assert
            Assert.Equal(expectedResult, cleanedUrl);
        }
Beispiel #7
0
        public void ClearSecure_ClearSameSecuresInRestAndQueryParameter_SameSecureInQueryAndRestParameterCleared()
        {
            // arrange
            var url       = "http://test.com/pass/123/info?pass=123456";
            var secureKey = "pass";

            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/pass/XXX/info?pass=XXXXXX";

            // act
            var cleanedUrl = urlCleaner.ClearSecure(url, secureKey, SecureLocationType.Query);

            cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey, SecureLocationType.Rest);
            // assert
            Assert.Equal(expectedResult, cleanedUrl);
        }
        public void UrlCleaner_CleanSecureData_ClearOneSecureKeyInUrlRestAndOneSecureKeyInUrlQuery_OneSecureKeyInUrlRestAndOneSecureKeyInUrlQueryCleared()
        {
            // Arrange
            var url              = "http://test.com/users/max?pass=1234";
            var secureKeyInRest  = "users";
            var secureKeyInQuery = "pass";
            var urlCleaner       = new UrlCleaner();

            var expectedResult = "http://test.com/users/XXX?pass=XXXX";

            // Act
            var resultUrl = urlCleaner.CleanSecureData(url, secureKeyInRest, SecureDataLocation.UrlRest);

            resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKeyInQuery, SecureDataLocation.UrlQuery);

            // Assert
            Assert.Equal(expectedResult, resultUrl);
        }
        public void UrlCleaner_CleanSecureData_ClearTwoSecureKeysInUrlRest_TwoSecureKeysInUrlRestCleared()
        {
            // Arrange
            var url        = "http://test.com/users/max/info/pass/1234";
            var secureKey1 = "pass";
            var secureKey2 = "users";
            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/users/XXX/info/pass/XXXX";

            // Act
            var resultUrl = urlCleaner.CleanSecureData(url, secureKey1, SecureDataLocation.UrlRest);

            resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKey2, SecureDataLocation.UrlRest);

            // Assert
            Assert.Equal(expectedResult, resultUrl);
        }
        public void UrlCleaner_CleanSecureData_ClearTwoSecureKeysInUrlQuery_TwoSecureKeysInUrlQueryCleared()
        {
            // Arrange
            var url        = "http://test.com?user=max&pass=123456";
            var secureKey1 = "pass";
            var secureKey2 = "user";
            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com?user=XXX&pass=XXXXXX";

            // Act
            var resultUrl = urlCleaner.CleanSecureData(url, secureKey1, SecureDataLocation.UrlQuery);

            resultUrl = urlCleaner.CleanSecureData(resultUrl, secureKey2, SecureDataLocation.UrlQuery);

            // Assert
            Assert.Equal(expectedResult, resultUrl);
        }
Beispiel #11
0
        public void ClearSecure_ClearSecureWithWrongLocation_SecureNotCleared()
        {
            // arrange
            var url        = "http://test.com/users/max/info?pass=123456";
            var secureKey1 = "users";
            var secureKey2 = "info";

            var urlCleaner     = new UrlCleaner();
            var expectedResult = "http://test.com/users/max/info?pass=123456";

            // act
            var clearedUrl = urlCleaner.ClearSecure(url, secureKey1, SecureLocationType.Query);

            clearedUrl = urlCleaner.ClearSecure(clearedUrl, secureKey2, SecureLocationType.Rest);

            // assert
            Assert.Equal(expectedResult, clearedUrl);
        }
        private IEnumerable <ResponseMessage> RespondIfLinkFound(IncomingMessage message, IValidHandle matchedHandle)
        {
            var messages = new List <ResponseMessage>();
            var urls     = RegexHelper.FindURl(message.RawText);

            if (urls.Any())
            {
                var firstUrl = urls.First();

                SearchResponseMessages searchResults = null;
                try
                {
                    if (Uri.IsWellFormedUriString(firstUrl.Value, UriKind.Absolute))
                    {
                        var cleansedUrl = UrlCleaner.CleanForTrackingQueryParams(firstUrl.Value);
                        searchResults = _client.SearchMessagesAsync(cleansedUrl, SearchSort.timestamp, count: 1, direction: SearchSortDirection.asc).GetAwaiter().GetResult();
                    }
                }
                catch (Exception e)
                {
                    messages.Add(RespondToBotChannelWithJson(e));
                }

                if (searchResults != null)
                {
                    if (searchResults.messages.matches.Any())
                    {
                        var r = searchResults.messages.matches.FirstOrDefault();
                        if (r != null)
                        {
                            messages.Add(message.ReplyToChannel($":older_man: postet av @{r.username} for {TimeSpanExtensions.Ago(r.ts)} siden. {r.permalink}"));
                            messages.Add(RespondToBotsChannel(Jsonify(r)));
                        }
                    }
                }
                else
                {
                    messages.Add(RespondToBotsChannel("no results"));
                }
            }

            return(messages);
        }
Beispiel #13
0
        //- @PostNewComment -//
        public Int32 PostNewComment(Int32 captchaValue, String blogEntryGuid, String author, String email, String website, String text)
        {
            Int32 returnStatus;

            //+
            if (captchaValue == HttpData.GetScopedSessionItem <Int32>("Captcha", "ExpectedValue"))
            {
                CommentReportCreator creator = new CommentReportCreator();
                creator.Formatter = new Themelia.Reporting.HtmlFormatter();
                Themelia.Map map = new Themelia.Map();
                map.Add("BlogEntryTitle", "{BlogEntryTitle}");
                map.Add("Guid", blogEntryGuid);
                map.Add("Author", author);
                map.Add("Email", email);
                map.Add("WebSite", website);
                map.Add("DateTime", DateTime.Now.ToString());
                map.Add("Text", text);
                map.Add("Link", UrlCleaner.FixWebPathTail(Minima.Configuration.BlogSection.GetConfigSection().Domain) + @"/services/comment/{CommentGuid}");
                String emailBodyTemplate = creator.Create(map);
                Themelia.Configuration.SystemSection systemSection = Themelia.Configuration.SystemSection.GetConfigSection();
                String emailSubject = String.Format("{0} ({1})", BlogSection.GetConfigSection().Comment.Subject, systemSection.AppInfo.Name);
                //+
                String commentGuid = String.Empty;
                returnStatus = 0;
                try
                {
                    commentGuid = CommentAgent.PostNewComment(blogEntryGuid, text, author, email, website, DateTime.Now, emailBodyTemplate, emailSubject);
                }
                catch (Exception ex)
                {
                    if (ex.Message != "Failure sending mail.")
                    {
                        returnStatus = 1;
                    }
                }
            }
            else
            {
                returnStatus = 2;
            }
            //+
            return(returnStatus);
        }
Beispiel #14
0
        public void ClearSecure_ClearMultipleSecuresInRestAndQuery_MultipleSecuresInRestAndQueryCleared()
        {
            // arrange
            var url        = "http://test.com/pass/123/info/456?pass=123456&[email protected]";
            var secureKey1 = "pass";
            var secureKey2 = "info";
            var secureKey3 = "pass";
            var secureKey4 = "email";

            var urlCleaner = new UrlCleaner();

            var expectedResult = "http://test.com/pass/XXX/info/XXX?pass=XXXXXX&email=XXXXXXXXXXXXXXXXXXXXXXXXX";

            // act
            var cleanedUrl = urlCleaner.ClearSecure(url, secureKey1, SecureLocationType.Rest);

            cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey2, SecureLocationType.Rest);
            cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey3, SecureLocationType.Query);
            cleanedUrl = urlCleaner.ClearSecure(cleanedUrl, secureKey4, SecureLocationType.Query);

            // assert
            Assert.Equal(expectedResult, cleanedUrl);
        }
Beispiel #15
0
        /// <summary>
        /// A Lambda function to respond to HTTP Get methods from API Gateway
        /// </summary>
        /// <param name="request"></param>
        /// <returns>The list of blogs</returns>
        public async Task <APIGatewayProxyResponse> Validate(APIGatewayProxyRequest request, ILambdaContext context)
        {
            context.Logger.LogLine("Received:" + request.Body);
            if (request.IsSlackChallengeRequest())
            {
                var challengeRequest = request.Body.As <ChallengeRequest>();
                return(Respond(challengeRequest.Challenge, context));
            }

            var slackEvent = request.Body.As <SlackEventAPIPayload>();

            if (slackEvent == null || slackEvent.Event == null)
            {
                return(Respond("IGNORED", context));
            }

            if (string.IsNullOrEmpty(slackEvent.Event.Text))
            {
                return(Respond("IGNORED", context));
            }

            if (slackEvent.Event != null && slackEvent.Event.Text != null && !string.IsNullOrEmpty(slackEvent.Event.Bot_Id))
            {
                return(Respond("BOT", context));
            }

            if (!string.IsNullOrEmpty(slackEvent.Event.SubType) && slackEvent.Event.SubType == "bot_message")
            {
                return(Respond("BOT", context));
            }

            var urls = RegexHelper.FindURl(slackEvent.Event.Text);

            if (urls.Any())
            {
                var firstUrl    = urls.First();
                var cleansedUrl = UrlCleaner.CleanForTrackingQueryParams(firstUrl.Value);
                cleansedUrl = cleansedUrl.TrimEnd('/');
                var searchResults = await _slackClient.SearchMessagesAsync(cleansedUrl, SearchSort.timestamp, count : 1, direction : SearchSortDirection.asc);

                if (searchResults != null && searchResults.messages.matches.Any())
                {
                    context.Logger.LogLine(JsonConvert.SerializeObject(searchResults.messages.matches));
                    var r = searchResults.messages.matches.FirstOrDefault();

                    if (r == null)
                    {
                        return(Respond($"NO-URL-IN-MSG", context));
                    }

                    if (r.ts == slackEvent.Event.Ts)
                    {
                        return(Respond("NEW", context));
                    }

                    if (r.user == slackEvent.Event.User)
                    {
                        return(Respond("OLD-BUT-SAME-USER-SO-IGNORING", context));
                    }

                    var reactionResponse = await _slackClient.AddReactions(slackEvent.GetChannel(), slackEvent.Event.Ts);

                    var alreadyReacted = reactionResponse.Any(AlreadyReactedTo);

                    if (!alreadyReacted)
                    {
                        var message  = $"postet av @{r.username} for {TimeSpanExtensions.Ago(r.ts)} siden.";
                        var response = await _slackClient.SendMessage(slackEvent.GetChannel(), message, slackEvent.Event.Ts, r.permalink);

                        var body = await response.Content.ReadAsStringAsync();

                        context.Logger.LogLine("Sent message. Response:" + JsonConvert.SerializeObject(body));

                        var reactionResponseBody = await reactionResponse.First().Content.ReadAsStringAsync();

                        context.Logger.LogLine("Sent reaction. Response:" + JsonConvert.SerializeObject(reactionResponseBody));


                        return(Respond($"OLD", context));
                    }
                    return(Respond($"ALREADY-OLDED", context));
                }
            }

            return(Respond($"NO-URL-IN-MSG", context));
        }