Example #1
0
        internal BadWordFilter(string word, bool isExactMatch, BadWordFilterActions action, Dictionary <string, string> parameters)
        {
            this.word         = word;
            this.isExactMatch = isExactMatch;
            this.action       = action;
            this.parameters   = parameters;

            string replacement = "XXX";

            if (this.parameters.ContainsKey("replacement"))
            {
                replacement = this.parameters["replacement"];
            }

            if (isExactMatch)
            {
                wordPattern        = @"(^|\W)" + word + @"(\W|$)";
                replacementPattern = "$1" + replacement + "$2";
                regex = new Regex(wordPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
            }
            else
            {
                wordPattern        = word;
                replacementPattern = replacement;
                regex = new Regex(wordPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
            }
        }
Example #2
0
        internal static void InitFilterBadWords()
        {
            badWordFilters.Clear();

            SqlConnectionHelper sqlConnection = new SqlConnectionHelper();

            sqlConnection.Command.CommandType = CommandType.StoredProcedure;

            // Read bad words
            try
            {
                sqlConnection.Command.CommandText = "hisp_Filter_BadWords_LoadAll";
                System.Data.SqlClient.SqlDataReader sqlDataReader = sqlConnection.Command.ExecuteReader(CommandBehavior.CloseConnection);
                while (sqlDataReader.Read())
                {
                    try
                    {
                        string[]             actions = sqlDataReader["FBW_Action"].ToString().Split(new char[] { ';' });
                        BadWordFilterActions badWordFilterActions = BadWordFilterActions.None;
                        foreach (string action in actions)
                        {
                            badWordFilterActions |= (BadWordFilterActions)Enum.Parse(typeof(BadWordFilterActions), action);
                        }

                        Dictionary <string, string> parameterTable = new Dictionary <string, string>();
                        string rawParameters = sqlDataReader["FBW_Parameter"].ToString();
                        if (!string.IsNullOrEmpty(rawParameters))
                        {
                            string[] parametersArray = rawParameters.Split(new char[] { ';' });
                            foreach (string parameterPair in parametersArray)
                            {
                                string[] parameterPairArray = parameterPair.Split(new char[] { '=' });
                                if (parameterPairArray.Length == 2)
                                {
                                    parameterTable.Add(parameterPairArray[0], parameterPairArray[1]);
                                }
                            }
                        }

                        string word = sqlDataReader["FBW_Word"].ToString();
                        if (!string.IsNullOrEmpty(word))
                        {
                            badWordFilters.Add(new BadWordFilter(word, bool.Parse(sqlDataReader["FBW_IsExactMatch"].ToString()), badWordFilterActions, parameterTable));
                        }
                    }
                    catch
                    {
                    }
                }

                sqlDataReader.Close();
            }
            finally
            {
                sqlConnection.Close();
            }
        }
Example #3
0
        private static string GetActionsString(BadWordFilterActions action)
        {
            string actionsString = "";

            foreach (string actionName in Enum.GetNames(typeof(BadWordFilterActions)))
            {
                BadWordFilterActions currentAction = (BadWordFilterActions)Enum.Parse(typeof(BadWordFilterActions), actionName);
                if ((currentAction & action) == currentAction && currentAction != BadWordFilterActions.None)
                {
                    actionsString += currentAction + ", ";
                }
            }
            return(actionsString.Substring(0, actionsString.Length - 2));
        }
Example #4
0
        internal static void InformAdmin(BadWordFilterActions action, string value, string word, bool isExactMatch, Type type, FilterObjectTypes filterObjectType, Guid objectId, Guid userId)
        {
            try
            {
                string markedValue = Regex.Replace(value, @"(\w*" + word + @"\w*)(?=[^>]*?<)", "<u><font color=\"#AA0000\">$1</font></u>", RegexOptions.IgnoreCase);
                string exactValue  = isExactMatch ? "Ja" : "Nein";
                string userLink    = FilterEngine.GetFilterEngineConfig().ObjectLinks["User"] + userId.ToString();
                string objectLink  = "";
                switch (filterObjectType)
                {
                case FilterObjectTypes.DataObject:
                    if (FilterEngine.GetFilterEngineConfig().ObjectLinks.ContainsKey(type.ToString()))
                    {
                        objectLink = FilterEngine.GetFilterEngineConfig().ObjectLinks[type.ToString()] + objectId.ToString();
                    }
                    break;

                case FilterObjectTypes.Comment:
                    if (FilterEngine.GetFilterEngineConfig().ObjectLinks.ContainsKey(type.ToString()))
                    {
                        objectLink = FilterEngine.GetFilterEngineConfig().ObjectLinks[type.ToString()] + objectId.ToString();
                    }
                    break;

                case FilterObjectTypes.Profile:
                    objectLink = FilterEngine.GetFilterEngineConfig().ObjectLinks["Profile"] + objectId.ToString();
                    break;
                }

                SmtpSection smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");

                MailMessage mailMessage = new MailMessage();
                mailMessage.From = new MailAddress(smtpSection.From);
                foreach (KeyValuePair <string, string> adminEmail in FilterEngine.GetFilterEngineConfig().AdminEmailList)
                {
                    mailMessage.To.Add(new MailAddress(adminEmail.Key, adminEmail.Value));
                }
                mailMessage.Subject = "Bad Word Filter";
                StringBuilder bodyString = new StringBuilder(1000);
                bodyString.Append("<table border=0>");
                bodyString.Append("  <tr>");
                bodyString.Append("    <td>Aktion(en):</td><td>" + GetActionsString(action) + "</td>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td>Wort:</td><td>" + word + "<br/>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td>Genau:</td><td>" + exactValue + "<br/>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td valign=\"top\">Text:</td><td>" + markedValue + "<br/>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td>Typ:</td><td>" + filterObjectType + "<br/>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td>Object:</td><td><a href=\"" + objectLink + "\">" + objectId + "</a><br/>");
                bodyString.Append("  </tr><tr>");
                bodyString.Append("    <td>User:</td><td><a href=\"" + userLink + "\">" + userId + "</a><br/>");
                bodyString.Append("  </tr>");
                bodyString.Append("</table>");
                mailMessage.Body       = bodyString.ToString();
                mailMessage.IsBodyHtml = true;

                SmtpClient smtpClient = new SmtpClient();
                smtpClient.Send(mailMessage);
            }
            catch (Exception e)
            {
                new Exception("Error while sending bad word info mail", e);
            }
        }