mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-18 04:08:27 +00:00
[Strings] Refactor Strings Usage (#2305)
* Initial commit checkpoint * More functions converted * Commify * More functions * Fin * Sort declarations * Split functions between files * Bots * Update strings.h * Split * Revert find replaces * Repository template * Money * Misc function * Update CMakeLists.txt * Saylink * Update strings.cpp * Swap Strings::Saylink for Saylink::Create since saylink is coupled to zone database * API casings
This commit is contained in:
@@ -0,0 +1,371 @@
|
||||
#include <cstring>
|
||||
#include "strings.h"
|
||||
#include <fmt/format.h>
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
|
||||
#ifdef _WINDOWS
|
||||
#include <windows.h>
|
||||
|
||||
#define snprintf _snprintf
|
||||
#define strncasecmp _strnicmp
|
||||
#define strcasecmp _stricmp
|
||||
|
||||
#else
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef va_copy
|
||||
#define va_copy(d,s) ((d) = (s))
|
||||
#endif
|
||||
|
||||
std::string SanitizeWorldServerName(std::string server_long_name)
|
||||
{
|
||||
server_long_name.erase(
|
||||
std::remove_if(
|
||||
server_long_name.begin(),
|
||||
server_long_name.end(),
|
||||
[](char c) {
|
||||
return !(std::isalpha(c) || std::isalnum(c) || std::isspace(c) || IsAllowedWorldServerCharacterList(c));
|
||||
}
|
||||
), server_long_name.end()
|
||||
);
|
||||
|
||||
server_long_name = Strings::Trim(server_long_name);
|
||||
|
||||
// bad word filter
|
||||
for (auto &piece: Strings::Split(server_long_name, " ")) {
|
||||
for (auto &word: GetBadWords()) {
|
||||
// for shorter words that can actually be part of legitimate words
|
||||
// make sure that it isn't part of another word by matching on a space
|
||||
if (Strings::ToLower(piece) == word) {
|
||||
Strings::FindReplace(
|
||||
server_long_name,
|
||||
piece,
|
||||
Strings::Repeat("*", (int) word.length())
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
auto pos = Strings::ToLower(piece).find(word);
|
||||
if (Strings::ToLower(piece).find(word) != std::string::npos && piece.length() > 4 && word.length() > 4) {
|
||||
auto found_word = piece.substr(pos, word.length());
|
||||
std::string replaced_piece = piece.substr(pos, word.length());
|
||||
|
||||
Strings::FindReplace(
|
||||
server_long_name,
|
||||
replaced_piece,
|
||||
Strings::Repeat("*", (int) word.length())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return server_long_name;
|
||||
}
|
||||
|
||||
std::vector<std::string> GetBadWords()
|
||||
{
|
||||
return std::vector<std::string>{
|
||||
"2g1c",
|
||||
"acrotomophilia",
|
||||
"anal",
|
||||
"anilingus",
|
||||
"anus",
|
||||
"apeshit",
|
||||
"arsehole",
|
||||
"ass",
|
||||
"asshole",
|
||||
"assmunch",
|
||||
"autoerotic",
|
||||
"babeland",
|
||||
"bangbros",
|
||||
"bangbus",
|
||||
"bareback",
|
||||
"barenaked",
|
||||
"bastard",
|
||||
"bastardo",
|
||||
"bastinado",
|
||||
"bbw",
|
||||
"bdsm",
|
||||
"beaner",
|
||||
"beaners",
|
||||
"beaver",
|
||||
"beastiality",
|
||||
"bestiality",
|
||||
"bimbos",
|
||||
"birdlock",
|
||||
"bitch",
|
||||
"bitches",
|
||||
"blowjob",
|
||||
"blumpkin",
|
||||
"bollocks",
|
||||
"bondage",
|
||||
"boner",
|
||||
"boob",
|
||||
"boobs",
|
||||
"bukkake",
|
||||
"bulldyke",
|
||||
"bullshit",
|
||||
"bung",
|
||||
"bunghole",
|
||||
"busty",
|
||||
"butt",
|
||||
"buttcheeks",
|
||||
"butthole",
|
||||
"camel toe",
|
||||
"camgirl",
|
||||
"camslut",
|
||||
"camwhore",
|
||||
"carpetmuncher",
|
||||
"cialis",
|
||||
"circlejerk",
|
||||
"clit",
|
||||
"clitoris",
|
||||
"clusterfuck",
|
||||
"cock",
|
||||
"cocks",
|
||||
"coprolagnia",
|
||||
"coprophilia",
|
||||
"cornhole",
|
||||
"coon",
|
||||
"coons",
|
||||
"creampie",
|
||||
"cum",
|
||||
"cumming",
|
||||
"cumshot",
|
||||
"cumshots",
|
||||
"cunnilingus",
|
||||
"cunt",
|
||||
"darkie",
|
||||
"daterape",
|
||||
"deepthroat",
|
||||
"dendrophilia",
|
||||
"dick",
|
||||
"dildo",
|
||||
"dingleberry",
|
||||
"dingleberries",
|
||||
"doggiestyle",
|
||||
"doggystyle",
|
||||
"dolcett",
|
||||
"domination",
|
||||
"dominatrix",
|
||||
"dommes",
|
||||
"hump",
|
||||
"dvda",
|
||||
"ecchi",
|
||||
"ejaculation",
|
||||
"erotic",
|
||||
"erotism",
|
||||
"escort",
|
||||
"eunuch",
|
||||
"fag",
|
||||
"faggot",
|
||||
"fecal",
|
||||
"felch",
|
||||
"fellatio",
|
||||
"feltch",
|
||||
"femdom",
|
||||
"figging",
|
||||
"fingerbang",
|
||||
"fingering",
|
||||
"fisting",
|
||||
"footjob",
|
||||
"frotting",
|
||||
"fuck",
|
||||
"fuckin",
|
||||
"fucking",
|
||||
"fucktards",
|
||||
"fudgepacker",
|
||||
"futanari",
|
||||
"gangbang",
|
||||
"gangbang",
|
||||
"gaysex",
|
||||
"genitals",
|
||||
"goatcx",
|
||||
"goatse",
|
||||
"gokkun",
|
||||
"goodpoop",
|
||||
"goregasm",
|
||||
"grope",
|
||||
"g-spot",
|
||||
"guro",
|
||||
"handjob",
|
||||
"hentai",
|
||||
"homoerotic",
|
||||
"honkey",
|
||||
"hooker",
|
||||
"horny",
|
||||
"humping",
|
||||
"incest",
|
||||
"intercourse",
|
||||
"jailbait",
|
||||
"jigaboo",
|
||||
"jiggaboo",
|
||||
"jiggerboo",
|
||||
"jizz",
|
||||
"juggs",
|
||||
"kike",
|
||||
"kinbaku",
|
||||
"kinkster",
|
||||
"kinky",
|
||||
"knobbing",
|
||||
"livesex",
|
||||
"lolita",
|
||||
"lovemaking",
|
||||
"masturbate",
|
||||
"masturbating",
|
||||
"masturbation",
|
||||
"milf",
|
||||
"mong",
|
||||
"motherfucker",
|
||||
"muffdiving",
|
||||
"nambla",
|
||||
"nawashi",
|
||||
"negro",
|
||||
"neonazi",
|
||||
"nigga",
|
||||
"nigger",
|
||||
"nimphomania",
|
||||
"nipple",
|
||||
"nipples",
|
||||
"nsfw",
|
||||
"nude",
|
||||
"nudity",
|
||||
"nutten",
|
||||
"nympho",
|
||||
"nymphomania",
|
||||
"octopussy",
|
||||
"omorashi",
|
||||
"orgasm",
|
||||
"orgy",
|
||||
"paedophile",
|
||||
"paki",
|
||||
"panties",
|
||||
"panty",
|
||||
"pedobear",
|
||||
"pedophile",
|
||||
"pegging",
|
||||
"penis",
|
||||
"pikey",
|
||||
"pissing",
|
||||
"pisspig",
|
||||
"playboy",
|
||||
"ponyplay",
|
||||
"poof",
|
||||
"poon",
|
||||
"poontang",
|
||||
"punany",
|
||||
"poopchute",
|
||||
"porn",
|
||||
"porno",
|
||||
"pornography",
|
||||
"pthc",
|
||||
"pubes",
|
||||
"pussy",
|
||||
"queaf",
|
||||
"queef",
|
||||
"quim",
|
||||
"raghead",
|
||||
"rape",
|
||||
"raping",
|
||||
"rapist",
|
||||
"rectum",
|
||||
"rimjob",
|
||||
"rimming",
|
||||
"sadism",
|
||||
"santorum",
|
||||
"scat",
|
||||
"schlong",
|
||||
"scissoring",
|
||||
"semen",
|
||||
"sex",
|
||||
"sexcam",
|
||||
"sexo",
|
||||
"sexy",
|
||||
"sexual",
|
||||
"sexually",
|
||||
"sexuality",
|
||||
"shemale",
|
||||
"shibari",
|
||||
"shit",
|
||||
"shitblimp",
|
||||
"shitty",
|
||||
"shota",
|
||||
"shrimping",
|
||||
"skeet",
|
||||
"slanteye",
|
||||
"slut",
|
||||
"s&m",
|
||||
"smut",
|
||||
"snatch",
|
||||
"snowballing",
|
||||
"sodomize",
|
||||
"sodomy",
|
||||
"spastic",
|
||||
"spic",
|
||||
"splooge",
|
||||
"spooge",
|
||||
"spunk",
|
||||
"strapon",
|
||||
"strappado",
|
||||
"suck",
|
||||
"sucks",
|
||||
"swastika",
|
||||
"swinger",
|
||||
"threesome",
|
||||
"throating",
|
||||
"thumbzilla",
|
||||
"tight white",
|
||||
"tit",
|
||||
"tits",
|
||||
"titties",
|
||||
"titty",
|
||||
"topless",
|
||||
"tosser",
|
||||
"towelhead",
|
||||
"tranny",
|
||||
"tribadism",
|
||||
"tubgirl",
|
||||
"tushy",
|
||||
"twat",
|
||||
"twink",
|
||||
"twinkie",
|
||||
"undressing",
|
||||
"upskirt",
|
||||
"urophilia",
|
||||
"vagina",
|
||||
"viagra",
|
||||
"vibrator",
|
||||
"vorarephilia",
|
||||
"voyeur",
|
||||
"voyeurweb",
|
||||
"voyuer",
|
||||
"vulva",
|
||||
"wank",
|
||||
"wetback",
|
||||
"whore",
|
||||
"worldsex",
|
||||
"xx",
|
||||
"xxx",
|
||||
"yaoi",
|
||||
"yiffy",
|
||||
"zoophilia"
|
||||
};
|
||||
}
|
||||
|
||||
void ParseAccountString(const std::string &s, std::string &account, std::string &loginserver)
|
||||
{
|
||||
auto split = Strings::Split(s, ':');
|
||||
if (split.size() == 2) {
|
||||
loginserver = split[0];
|
||||
account = split[1];
|
||||
}
|
||||
else if (split.size() == 1) {
|
||||
account = split[0];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user