Filter impl

This commit is contained in:
Astrologies 2021-12-21 18:40:27 -05:00
parent 763d7d1a8b
commit bfff7a8b8d
5 changed files with 128 additions and 126 deletions

View File

@ -0,0 +1,121 @@
<?php
namespace Alphaland\Moderation {
use PDO;
class Filter
{
public static function FilteredWordList()
{
return array(
'Afro-engineering',
'Afroengineering',
'Afro engineering',
'African engineering',
'Africanengineering',
'African-engineering',
'nigger rigging',
'nigger-rigging',
'niggerrigging',
'Ashke Nazi',
'Ashke-Nazi',
'AshkeNazi',
'nazi',
'hitler',
'gas chambers',
'gaschambers',
'gas-chambers',
'gas chamber',
'gaschamber',
'gas-chamber',
'genocide',
'Beaner',
'Beaney',
'boonie',
'Coon',
'Coonass',
'Cracker',
'Dothead',
'Jewboy',
'Jigaboo',
'jiggabo',
'jigarooni',
'jijjiboo',
'zigabo',
'jigger',
'Niglet',
'nigglet',
'Nig-nog',
'Nignog',
'Nigger',
'niger',
'nigor',
'niggur ',
'niggar',
//'Nigga',
//'nigga',
'Porch monkey',
'Porchmonkey',
'porch-monkey',
'Sand nigger',
'Sandnigger',
'Sand-nigger',
'Spearchucker',
'spick',
'Tacohead',
'TarBaby',
'Tar Baby',
'Tar-Baby',
'Towel head',
'Towelhead',
'Towel-head',
'Wetback',
'Wigger',
'Whigger',
'Wigga',
'White trash',
'Whitetrash',
'White-trash',
'Whitey',
'Zipperhead',
'fagot',
'faggot',
'fegot',
'faget',
'feget',
'fag',
'rape',
'tranny',
'tarbaby',
'tar baby',
'blackface',
'black face',
'dogwater',
'dog water',
'dog-water',
'Mirai'
);
}
public static function IsTextFiltered(string $text)
{
foreach(Filter::FilteredWordList() as $a) {
if (stripos($text,$a) !== false) {
return true;
}
}
return false;
}
public static function FilterText(string $text)
{
$badlist = Filter::FilteredWordList();
$filterCount = sizeof($badlist);
for ($i = 0; $i < $filterCount; $i++) {
$text = preg_replace_callback('/(' . $badlist[$i] . ')/i', function($matches){return str_repeat('#', strlen($matches[0]));}, $text);
}
return $text;
}
}
}

View File

@ -117,6 +117,7 @@ try
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Games/Ticket.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Users/User.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Users/Outfit.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Moderation/Filter.php";
//authenticator
$authenticator = new PHPGangsta_GoogleAuthenticator();

View File

@ -200,129 +200,6 @@ function genTicket()
//TODO: Render Queue?
//filter shit
function getWordList()
{
return array(
'Afro-engineering',
'Afroengineering',
'Afro engineering',
'African engineering',
'Africanengineering',
'African-engineering',
'nigger rigging',
'nigger-rigging',
'niggerrigging',
'Ashke Nazi',
'Ashke-Nazi',
'AshkeNazi',
'nazi',
'hitler',
'gas chambers',
'gaschambers',
'gas-chambers',
'gas chamber',
'gaschamber',
'gas-chamber',
'genocide',
'Beaner',
'Beaney',
'boonie',
'Coon',
'Coonass',
'Cracker',
'Dothead',
'Jewboy',
'Jigaboo',
'jiggabo',
'jigarooni',
'jijjiboo',
'zigabo',
'jigger',
'Niglet',
'nigglet',
'Nig-nog',
'Nignog',
'Nigger',
'niger',
'nigor',
'niggur ',
'niggar',
//'Nigga',
//'nigga',
'Porch monkey',
'Porchmonkey',
'porch-monkey',
'Sand nigger',
'Sandnigger',
'Sand-nigger',
'Spearchucker',
'spick',
'Tacohead',
'TarBaby',
'Tar Baby',
'Tar-Baby',
'Towel head',
'Towelhead',
'Towel-head',
'Wetback',
'Wigger',
'Whigger',
'Wigga',
'White trash',
'Whitetrash',
'White-trash',
'Whitey',
'Zipperhead',
'fagot',
'faggot',
'fegot',
'faget',
'feget',
'fag',
'rape',
'tranny',
'tarbaby',
'tar baby',
'blackface',
'black face',
'dogwater',
'dog water',
'dog-water',
'Mirai'
);
}
function isFiltered($text)
{
return checkIfFiltered($text, getWordList());
}
function checkIfFiltered($text, $badlist)
{
foreach($badlist as $a)
{
if (stripos($text,$a) !== false) return true;
}
return false;
}
function filterText($text)
{
return performFilter($text, getWordList());
}
function performFilter($text, $badlist)
{
$filterCount = sizeof($badlist);
for ($i = 0; $i < $filterCount; $i++)
{
$text = preg_replace_callback('/(' . $badlist[$i] . ')/i', function($matches){return str_repeat('#', strlen($matches[0]));}, $text);
}
return $text;
}
function logChatMessage($userid, $text, $trippedfilter) //privacy concern?
{
if (userInfo($userid)->rank != 2) //dont log admins chats

View File

@ -5,6 +5,7 @@
TODO: This needs a re-do. This is one of the first pages on this project
*/
use Alphaland\Moderation\Filter;
use Alphaland\Users\Activation;
use Alphaland\Users\ReferralProgram;
use Alphaland\Web\WebContextManager;
@ -55,7 +56,7 @@ else
{
$error = '<div class="alert alert-danger" role="alert">Your username must be between 3 and 20 characters long</div>';
}
if(isFiltered($uname))
if (Filter::IsTextFiltered($uname))
{
$error = '<div class="alert alert-danger" role="alert">Username is not appropriate for Alphaland</div>';
}

View File

@ -1,5 +1,6 @@
<?php
use Alphaland\Moderation\Filter;
header('Content-Type: application/json');
@ -11,7 +12,8 @@ if (!$text || !$userid)
die(json_encode(array("success" => false)));
}
if (isFiltered($text)) {
if (Filter::IsTextFiltered($text))
{
logChatMessage($userid, $text, true);
if (chatFilterInfractionLimit($userid, 3, 120)) //3 infraction within 2 minutes
@ -19,7 +21,7 @@ if (isFiltered($text)) {
die(kickUserIfInGame($userid, "'".$text."' is not appropriate on Alphaland, continued infractions will lead to a ban."));
}
$text = filterText($text);
$text = Filter::FilterText($text);
//$text = "[ Content Deleted ]";
}