Language Enforcer [1.0.3.0] (Apr 11.)

Recommended Posts

Originally Posted by PacmanTRT*:

This is because of the Regex Entry

^\W*(g+\W+)_(so\W+)_(win\W)*(((to{2,})|(2))\W+)_(v ery\W+)_(([e3][a4][sz5][yi1]_)|(e+z+))(\Wwin)*

I added this to prevent unsporting behaviour on my server, since I interpret that like he was saying it was no challenge for him due to enemy team are all noobs.

Interestingly mostly people who had a hard time reaching a KD ratio of 1 write that into the chat.

Update on development process: There currently is almost no progress since I need to find a ned dev-environment first. The mere presence of Visual Studio on my disk (SSD) does awful things to my BF4 loading times.

* Restored post. It could be that the author is no longer active.
• 2 months later...
• Replies 226
• Created

Posted Images

Originally Posted by Strudaklitt*:

Hi!

Me and my clan are VERY interested in your plugin, Language Enforcer. How do I install this on a procon layer? I mean, where do the files go? : )

Hope you can help!

Best regards

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Hi!

Your hosting provider should have given you a FTP connection to your Layer server. In there somewhere must be a folder named "Plugins" which contains subfolders for the specific games. Put the .cs file in one of those and restart your Layer server.

Best Regards

Pac

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

I am proud to introduce a new version today. It is long awaited by many (or at least some ^^) of you.

Finally the enforcer can treat some words differently to others!

1.0.0.0 --> 1.0.1.0

• Introduced Wordlist sections with section based overrides. (I hope Doom69 likes it ^^)
• New details tab design to match the first post

You now can define a wordlist section by putting a line which begins and ends with curly brackets.

After that, the according settings appear in the list!

These settings are:

• Severity: Increase the counter with a specified value
• Measure: Set a fixed or minimum measure
• Min. counter: Badword counter for the player has minimum value applied beforehand.
• Override messages: Put different messages for public/private/yell messages
• Yell/TBan time: Set different yell/tban time for triggered words in that section.

Todo:

• Make more message variables available (e.g. clock or nextmap to better cover auto-responder functionality (via severity set to zero))
* Restored post. It could be that the author is no longer active.

Originally Posted by EdgarAllan*:

I'm getting this error in the console:

Language Enforcer: Couldn't save counters. Please make sure filesystem access is granted

Any ideas? Thanks

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

The Enforcer tries to save the counters to the disk every now and then...

This error message only should bother you if you are about to restart the layer.

I can imagine that this error also occurs when no counters are defined so far.

Just wait and see what it does... If you don't restart your layer very often this is the most irrelevant error anyways ^^

* Restored post. It could be that the author is no longer active.

Originally Posted by Strudaklitt*:

We've run the plugin all day now, and I can tell you, it works GREAT! There's just one tiny, annoying thing we've come across. When the server reports that a player (with a name that includes a badword-listed word) e.g "Server: Idiottekk joined the game!", Language Enforcer warns the actual server and wants to kill it upon next violation... This is quite humoristic, but still a negative thing, since it gives an image of not being too much of a serious server ^^

So, my question - is there any way to make the plugin not warn the server? : )

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Hm... Thats actually very interesting. My server has perm banned itself numerous times, but that is months ago.

I've now looked through the source and I think I know why it does that...

You must have enabled "Warn Whitelisted".

The actual behaviour is to force whitelisting of the speaker named "Server". Therefore it is possible to issue commands that way. A whitelisted player who is warned will go through the very same steps as a non-whitelisted player but the Enforcer will auto-reset him afterwards.

The obvious downside now is, that the server will warn itself... This actually is a bug :-/

The version number stays the same, because I don't want to bother you guys with a "new version" message in procon.

THANKS for the compliment and for the bug-report!

* Restored post. It could be that the author is no longer active.

Originally Posted by Strudaklitt*:

Okay, so, installing the 1.0.1.0 version over the 1.0.0.0 will fix the issue?

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Yes.

Even if you already have 1.0.1.0 and you suffer from the bug you can update to the "updated 1.0.1.0"

If you update from 1.0.0.0 you also get a new feature.

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

Hi All ...

I have a BF3 Server and i hate guys who write every Time in russian Language ... how can I automaticly kick this Players ?

Crawfy

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

I've run into this problem myself.

Even if you tell them that they must use English in the all/team-chat (because nobody can understand them) they still keep spamming and remain without any response.

The real problem now is (as you might have seen yourself), that the battlefield servers themselves do not support russian characters for a RCON connection. So there sadly is NO WAY to really determine if a player uses russian characters. Those characters are all deleted before transmission.

Since you mostly will get empfy messages you can try putting the Regex "^$" for empty messages or the Regex "^\s*$" for messages that only contain spaces. Both are to be used without the quotes.

This certainly is not a very good solution since I saw players use empty messages for various reasons. I don't know if those messages really were empty or if they contained a space. I will test that on my server with a special override to only warn those players.

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

How do You do this? need Help please. Best Reg

I've run into this problem myself.

Even if you tell them that they must use English in the all/team-chat (because nobody can understand them) they still keep spamming and remain without any response.

The real problem now is (as you might have seen yourself), that the battlefield servers themselves do not support russian characters for a RCON connection. So there sadly is NO WAY to really determine if a player uses russian characters. Those characters are all deleted before transmission.

Since you mostly will get empfy messages you can try putting the Regex "^$" for empty messages or the Regex "^\s*$" for messages that only contain spaces. Both are to be used without the quotes.

This certainly is not a very good solution since I saw players use empty messages for various reasons. I don't know if those messages really were empty or if they contained a space. I will test that on my server with a special override to only warn those players.

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Assuming you use Version 1.0.1.0:

In the Plugin Settings tab of the Enforcer add following to the Regex Badwords (in category 4 - Wordlists):

{russian}
^\s*$ Then a new settings category named 6._ - Measure override section "russian" will appear. In this category set Enabled to Yes. Furthermore I've set following things Severity Measure Allow highter measures Min. counter Public message Private message Yell message Yell time TBan time Another thing you can achieve with overrides: If you want you can use the Enforcer as an AutoResponder that way. For instance if you want to respond to a player asking for rules: {rules} ^rules\__$
^(is )_\w+ allowed\__$^(are )_\w+ allowed\__$ 
Edited by maxdralle
* Restored post. It could be that the author is no longer active.

Originally Posted by Tomgun*:

ive added the Russian one, how do I make sure only English in used?

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

The question may seem simple, but you can't really tell if something is not english programatically.

You can only add common words of non-english languages to the russian section

For instance this might be useful to prevent german chat:

http://www.lsa.umich.edu/german/hmr/...ent_words.html

I would definitely skip the numbers section in there. Also you must keep in mind that procon will not recieve non-ASCII characters from the chat. Here's a list of them: http://en.wikipedia.org/wiki/Ascii#A...ble_code_chart

For instance if someone writes "können" (example from the first link) procon will only recieve "knnen".

Even worse: "für" becomes "fr"

You also have to be careful with the regular wordlist. It checks via a contains method.

So if you add "fr" to the wordlist it will also match "infrared"

Either you put spaces on both ends of the word or you do it via regex and put "\b" instead of spaces. (regex would be better but it is slower)

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

OK .. i made it so now ... its ok ?

The question may seem simple, but you can't really tell if something is not english programatically.

You can only add common words of non-english languages to the russian section

For instance this might be useful to prevent german chat:

http://www.lsa.umich.edu/german/hmr/...ent_words.html

I would definitely skip the numbers section in there. Also you must keep in mind that procon will not recieve non-ASCII characters from the chat. Here's a list of them: http://en.wikipedia.org/wiki/Ascii#A...ble_code_chart

For instance if someone writes "können" (example from the first link) procon will only recieve "knnen".

Even worse: "für" becomes "fr"

You also have to be careful with the regular wordlist. It checks via a contains method.

So if you add "fr" to the wordlist it will also match "infrared"

Either you put spaces on both ends of the word or you do it via regex and put "\b" instead of spaces. (regex would be better but it is slower)

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

You really should put something different in the private messages.

The player will just recieve the same message twice. (others will see it once)

For the rules you should put the rules text in there. For the "russian" section you can put a message that tells people that squad chat is not monitored by the enforcer (depending on your settings).

I also would set the Yell time in the rules section to zero, to prevent the yell message.

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

Hi Pacman ... i delet my Regex Badwords.txt ... so i have only the codes against russian language in there. Its OK? but i think words like fuck ... bitch and noob are not bad words for me. I only use now the bad words.txt ... or its not ok when i do it so ?

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

Hello ... now i have a Problem. Every Day the settings for the russian sections are gone and i have to set it new. why dont save the settings. And when i uploaded my config from PC the Console tells me that exec LanguageEnforcer.cfg is an unknown command.Sorry for my bad english

You really should put something different in the private messages.

The player will just recieve the same message twice. (others will see it once)

For the rules you should put the rules text in there. For the "russian" section you can put a message that tells people that squad chat is not monitored by the enforcer (depending on your settings).

I also would set the Yell time in the rules section to zero, to prevent the yell message.

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Hi!

My Procon hoster lately deleted all of our Procon Accounts (needed e.g. for ingame-admin).

If your settings are deleted again, please tell me. (You can also PM me in german ^^)

To the cfg copying thing. I dont think there is a way to execute a cfg file. You have to replace the existing cfg file on your layer server.

Best Regards

Pac

(and sorry for the long time I needed to reply)

* Restored post. It could be that the author is no longer active.
• 2 weeks later...

Originally Posted by nexusbe*:

Hello !

The Plugin dont work on my server China Link , plz help me is very important , thank you

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

You might want to be more specific when describing something next time.

I cannot actually smell whats wrong just by the words "doesn't work".

Well... let the guesswork begin...

Did it install properly? Can you see it in the plugins list?

No? --> try restarting the layer

(I suspect you mean "Chain link")

The game mode can not affect the plugin.

Just to be sure: try to put something inside both wordlists.

Try to find a file named "LangEnforcer.log" on your server an PM the contents to me. I might be able to tell what the problem is.

(Your provider might prevent creation of that file :-/ )

If you can't find that file you might want to try to disable and re-enable the plugin.

Since the logging is also written to the console (or whatever you have configured) that might bring up some interesting log entries.

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

Hi there,

* I have a question. If I upload only the Badword.txt without the RegexBadwords.txt. Then everything works as it should _, or even the RegexBadwords.txt must necessarily be shared with_. Also when I type !admin in Chat .. the plugin told me that there is no Admin online... why ?

Best Regards

Crawfy

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

The !admin command lists PLAYERS with Kill-rights. It does not check if an admin is connected to procon. (yet...)

Not deploying any TXT file to a server should not cause any difficulties.

In earlier versions there were 2 possibilities what could go wrong if you don't deploy them:

1) Nothing works (fixed in version 1.0)

2) It interprets everything as a violation, but afaik it checks if there is nothing in the wordlist before looking in messages, so it is safe (please tell me if it does do that)

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

Hi,

I only have the following in the RegexBadwords.txt

{russian}

^ \ s * ${rules} ^ rules \?$

^ (is)? \ w + allowed \? $^ (are)? \ w + allowed \?$

it seems as if the Badwords.txt works. But I still have the problem that the settings for this section are not saved. After restarting the server, this section still exists, but it is disabled and everything is set to zero. Why?

is it possible to insert the settings in the RegexBadwords.txt?

Best Regards

Crawfy

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

that is not possible, sry...

does it lose any other setting or just the section settings?

* Restored post. It could be that the author is no longer active.

Originally Posted by Crawfy2D*:

only the section settings are at zero every time ... other sections are OK

that is not possible, sry...

does it lose any other setting or just the section settings?

* Restored post. It could be that the author is no longer active.
• 3 weeks later...

Originally Posted by dyn*:

Came back from an extended leave and am updating a few things, one of items updated is Watchdog to Language Enforcer. Very nice so far.

Can't seem to properly format the regex string to catch what we need to catch, and not end up punishing the entire server. Right now the only words to limit are "faggot" "fag" "nigger" "phaggot" "phag" and probably additional strings down the road once we snuff out what the kids are changing them to. We currently have:

Code:

n+[1i]+g+[3ea]+r*
f+[a4]+g+[ao0il]+t*
f+[a4]+g+
f+[a4]+q+
So now that they're getting warned what they've started doing is adding a bunch of spaces and multiple letters. Examples: F AAAA G & F A G. I thought \W would do whitespaces but that failed and started kicking a bunch of people. I'm stumped.

To catch:

Multiple characters if they are included in a forbidden word.

Case-insensitive.

Characters preceding or following banned word.

Spaces within the word.

Dashes (and all non-letter symbols_) if it is contained in a a forbidden word. Ex: F-A-G

Suggestions of possible solutions or where to start with the regex? There are some examples on the forum here but nothing that quite catches everything .

Secondly, all of our admin roles are handled by ADKATS*. Taking advantage of the manual admin punishment would be ideal as then your plugin, Language Enforcer, will keep track of all warnings. It is my understanding that all admin roles are pulled from Procon.

I would purpose a new feature: The ability to pull the admin list from from ADKATS or having a specific in-plugin list of authorized admins who were able to issue the punish command in game. Having this functionality would decrease the workload of adding multiple admins to multiple layers and then having to keep that updated as well.

* Restored post. It could be that the author is no longer active.

Originally Posted by PacmanTRT*:

Hi!

Thanks for your input! I don't know ADKATS, but it sounds cool.

At the moment there is not much time I have left so it will take its time.

To the Regex stuff:

First of all Regex is case insensitive and it looks via "contains".

So "f+[a4]+g+[ao0il]+t" is unnecessary when you have "f+[a4]+g+".

Also a leading / trailing + operator is unnecessary.

So the simplest version of that (which does exactly the same) would be "f[a4]+g".

With the help of IAF SDS I have developed a somewhat sophisticated regex to catch "nigga" and its variations.

It is well commented so you can delete what you dont need. To avoid false positives it is split in 2 sections. "with spaces" and "in words". The first one will also catch dashes, dots and so on. This is to avoid that it e.g. catches "if a gun" in the "fag" section.

Code:

### "Nigger" written with spaces ###
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[e3])*(\W*r)+\b(_<!niger)# nigger
(\|\\\|)+(\W*[1ilj!])*(\W*[gq&])+(\W*[e3])*(\W*r)+\b# |\|igger
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4yi])*\b# nigga / niggy
(\|\\\|)+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4yi])*\b# |\|igga
\b((n)|([il1]\\[il1!]))+(\W*[1ilj!])+(\W*[gq&])+(\W*[li1!])+(\W*[3e])*(\W*[dt])+\b# Niglet
(\|\\\|)+(\W*[1ilj!])+(\W*[gq&])+(\W*[li1!])+(\W*[3e])*(\W*[dt])+\b# |\|iglet
\b((n)|([il1]\\[il1!]))+(\W*[e3])*(\W*[gq&])+(\W*r)+(\W*[o0qc])+(\W*[1ilj])*(\W*[dt])*\b# negro
(\|\\\|)+(\W*[e3])*(\W*[gq&])+(\W*r)+(\W*[o0qc])+(\W*[1ilj!])*(\W*[dt])*\b# |\|egro
\b((n)|([il1]\\[il1!]))+(\W*[e3])+(\W*[gq&])+(\W*[e3])*(\W*r)+\b# neger
(\|\\\|)+(\W*[e3])*(\W*[gq&])+(\W*[e3])*(\W*r)+\b# |\|eger
\b((n)|([il1]\\[il1!]))+(\W*[e3])+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4])+r+\b# neigar
(\|\\\|)+(\W*[e3])+(\W*[1ilj!])+(\W*[gq&])+(\W*[a4])+r+\b# |\|eigar

### "Nigger" contained in a word ###
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]{2,}[e3]*r(_<!pingger)# nigger
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]{2,}[ayi]# nigga
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[1ilj!]*[gq&]+[li1!]+[e3]*[dt]# niglet
((n)|([il1!\|]\\[il1!\|])|(\|\\\|))+[e3]*[gq&]+r+[o0qc]+# negro

### "Jigger" written with spaces ###
\bj+(\W*[1ilj])+(\W*[gq&])+(\W*[e3a4])*(\W*r)+((\W*+(\W*[ocq])+)*(\W*[sz])*\b# jigger / jiggaboo

### "Jigger" contained in a word ###
(_!jig+(l|s|ery|ing))j+[1il]+[gq&]+[e3a4]*r*(b+[ocq]+)*[sz]*# jigger / jiggaboo
For the "fag" stuff you may take some "inspiration" from the following list:

Code:

f[a4]+[gq&]# contained in a word
\bf\W*([a4]\W*)+[gq&]\b# written with spaces
\bf[a4e3]*g+[a4o0ile3]*t\b# shortened versions like "fgt"
Please note that "niger" is an actual country and therefore is excluded from being punished.
* Restored post. It could be that the author is no longer active.

Create an account

Register a new account

• Our picks

• Game Server Hosting:

We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

You can see all the available games here. Currently, we have the following games available.

Valheim (From $1.50 USD) Rust (From$3.20 USD)

Minecraft (Basic) (From $4.00 USD) Call of Duty 4X (From$7.00 USD)

OpenTTD (From $4.00 USD) Squad (From$9.00 USD)

Insurgency: Sandstorm (From $6.40 USD) Changes to US-East: Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them. • 5 replies • Hello All, I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see. We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter. • 4 replies • Added ability to disable the new API check for player country info Updated GeoIP database file Removed usage sending stats Added EZRCON ad banner If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True. procon.private.options.UseGeoIpFileOnly False procon.private.options.BlockRssFeedNews False • 2 replies • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it. Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020. Single MySQL database (up to 30 GB) is$10 USD per month.

If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this. Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions. Databases will also be backed up daily and retained for 7 days. Procon Layer will be$2 USD per month.

Each layer will only allow one (1) game server connection. The reason behind this is for performance.

Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.

Each layer will automatically restart if Procon crashes.

Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.

Custom plugins can be installed by submitting a support ticket.

Battlefield Admin Control Panel (BFACP) will be \$5 USD per month

As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.

All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

• 11 replies
• I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

• 9 replies
×
×
• Create New...