Filter impl
This commit is contained in:
parent
763d7d1a8b
commit
bfff7a8b8d
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -117,6 +117,7 @@ try
|
||||||
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Games/Ticket.php";
|
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/User.php";
|
||||||
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Users/Outfit.php";
|
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Users/Outfit.php";
|
||||||
|
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Moderation/Filter.php";
|
||||||
|
|
||||||
//authenticator
|
//authenticator
|
||||||
$authenticator = new PHPGangsta_GoogleAuthenticator();
|
$authenticator = new PHPGangsta_GoogleAuthenticator();
|
||||||
|
|
|
||||||
|
|
@ -200,129 +200,6 @@ function genTicket()
|
||||||
|
|
||||||
//TODO: Render Queue?
|
//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?
|
function logChatMessage($userid, $text, $trippedfilter) //privacy concern?
|
||||||
{
|
{
|
||||||
if (userInfo($userid)->rank != 2) //dont log admins chats
|
if (userInfo($userid)->rank != 2) //dont log admins chats
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
TODO: This needs a re-do. This is one of the first pages on this project
|
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\Activation;
|
||||||
use Alphaland\Users\ReferralProgram;
|
use Alphaland\Users\ReferralProgram;
|
||||||
use Alphaland\Web\WebContextManager;
|
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>';
|
$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>';
|
$error = '<div class="alert alert-danger" role="alert">Username is not appropriate for Alphaland</div>';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Alphaland\Moderation\Filter;
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
|
@ -11,7 +12,8 @@ if (!$text || !$userid)
|
||||||
die(json_encode(array("success" => false)));
|
die(json_encode(array("success" => false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFiltered($text)) {
|
if (Filter::IsTextFiltered($text))
|
||||||
|
{
|
||||||
logChatMessage($userid, $text, true);
|
logChatMessage($userid, $text, true);
|
||||||
|
|
||||||
if (chatFilterInfractionLimit($userid, 3, 120)) //3 infraction within 2 minutes
|
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."));
|
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 ]";
|
//$text = "[ Content Deleted ]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue