Commit Graph

80 Commits

Author SHA1 Message Date
SkyratBot
b332b46b65 [MIRROR] Remove hideous inline tab indentation, and bans it in contributing guidelines (#3394)
* Remove hideous inline tab indentation, and bans it in contributing guidelines

* a

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-15 15:32:02 +00:00
jdawg1290
62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
Tad Hardesty
829e95896e Replace BSQL with rust-g, paramaterize all queries (#51255)
cl
refactor: BSQL has been replaced with rust-g, improving SQL reliability and safety.
/cl

Queries were parameterized as much as possible. Careful code read by someone else also versed in SQL would be a good idea. Things seemed fine spot-testing roundstart, library, bans, and polls, but more stress-testing may be useful.

Also updates rust-g to v0.4.5:

    Improved Linux .so detection
    Perlin noise functions

Also updates Travis script to bionic.
2020-06-08 16:00:07 +12:00
Rob Bailey
c20a04543b Port of Replays from Yogstation (#48579)
* demos (ported from yogstation)

rustg update + write with no format

use external hook for logging

use proper log vars

fix + clarifying comment

don't start the log

release build of rust-g

fix something caught by the lint

Update code/__DEFINES/subsystems.dm

Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>

Update code/controllers/subsystem/demo.dm

Co-Authored-By: JJRcop <jrubcop@gmail.com>

Update code/controllers/subsystem/demo.dm

Co-Authored-By: JJRcop <jrubcop@gmail.com>

moves hooks out of a dedicated file

len = 0 to Cut(), remove semicolons

untyped loop

* updated rust_g

* 513 updates
2020-04-06 13:15:48 -04:00
Kyle Spier-Swenson
ecd2622a75 Don't recheck connected clients in isbanned() (and other isbanned() dos mitigations) (#48583)
dos mitigation that likely won't fully work but let's see anyways.

backstory:

byond's ban system will automatically ban world/Topic flooders. Sadly updating byond's internal ban list causes isbanned() to get called on all connected clients. Also sadly: it does this every time it sees the world/Topic flood on the same ip, causing every connected client gets checked repeatedly for every flood message world/Topic sees.
2020-01-14 11:23:32 +13:00
oranges
15c59a51cd Revert "Only allow one call to IsBanned to process at a time (#48529)"
This reverts commit b4e84ddadf.
2020-01-04 15:43:09 +13:00
oranges
b4e84ddadf Only allow one call to IsBanned to process at a time (#48529)
Potential improvements, store the list on a subsystem, also include
ip/ckey

Clear on a timed basis instead of after finishing
2020-01-03 21:15:49 +01:00
kingofkosmos
280d416d4f Adds missing spans, missing periods and missing span endings. Also changes spans to suit the situation better. 2019-10-12 19:34:11 +03:00
oranges
9d91853f78 Non temp workaround for admins matching stickybans because of… (#46462)
* temp workaround for admins matching stickybans because of a byond bug.

* Globalify the lists used for stickyban exemptions
2019-09-25 18:45:18 -07:00
ShizCalev
d1c3ac84ba allows byond members to bypass pop cap (#43458)
* allows byond members to bypass pop cap

* fix

* new line
2019-04-03 10:20:03 -04:00
Kyle Spier-Swenson
7e2531a924 On second thought, lets just have extreme popcap be what it is
Last pr, i changed it from always looking at living player count, to only looking at living player count in certain situations. These situations came up often enough that it was subverting the intent of the extreme popcap and in some cases allowing 15 players extra on bagil.

It still exempts anybody currently in the round (even dead) reconnecting after disconnecting, except people who observed from lobby.
2019-03-22 20:26:22 -07:00
Kyle Spier-Swenson
050554dda6 Update IsBanned.dm 2019-03-20 15:20:05 -07:00
Kyle Spier-Swenson
799d45af99 Exempts current players from the extreme pop cap
This will exempt anybody who was once joined into the round, this means people who were assigned at round start or latejoined. even if they died, got gibbed, suicided, or ghosted. This does not exempt people who observed from lobby.
2019-03-20 14:41:48 -07:00
Kyle Spier-Swenson
bf52e95723 If both the extreme and hard caps are active, extreme popcap applies to connected players, not living players. (#43181)
* If both the extreme and hard caps are active, extreme popcap applies to connected players, not living players.

I also have it using the connected players, and not the living players, if the amount of living players can not increase (queue active, entering disabled, round hasn't started, etc).
I also have it allowing the connection if the hard cap is active but has not been hit.

* Redundant if check

* So it occurs to me that IsBanned() gets called by byond on connected players sometimes.
2019-03-21 09:09:11 +13:00
MrStonedOne
186f6c8ddd dbstickybans: Qdeleting queries, misc fixes, Query select proc for executing mutiple queries at once... 2019-03-16 00:23:40 -07:00
MrStonedOne
54f5e57880 Fixes and improvements 2019-03-16 00:23:39 -07:00
MrStonedOne
f0f40bda51 Fixes and improvements. Hub password changes
Uses lazy access on inner lists (had to make lazy access work on inner lists @cyberboss you won't like this but lazyaccess is useless if you can't use it on inner lists)
Byond only does full stickyban matching when the server has a valid hub password set or compiled in, so now we have to remove it during init.
2019-03-16 00:23:38 -07:00
MrStonedOne
03f1eb2f2b Some fixes. 2019-03-16 00:23:38 -07:00
MrStonedOne
2e757683ab Database backed stickybans
Supports disabling stickybans for a round, exempting a key from matching a stickyban, and it now also detects rogue stickybans before anybody currently connected even gets disconnected. (new matches trigger a 5 second sleep and abort enforcement if enough other new matches happen in that timeframe)
2019-03-16 00:23:37 -07:00
Jordie
8a66665e95 Ban system and interface update (#41176)
Spiritual successor and extension to #17798, an almost entire rebuild of the SQL ban system backend and interface.
Bantypes are removed per #8584 and #6174. All bans are now 'role bans', server bans are when a ban's role is server. Admin bans are a column, meaning it's possible to ban admins from jobs.
Bans now have only an expiry datetime, duration is calculated from this when queried.
unbanned column is removed as it's superfluous, checking unban status is now done through checking unban_datetime. unban_round_id column added. Each ip and computerid columns rearranged so ip is always first, like in other tables. Bans now permit a null ckey, ip and computerid.

Ban checking is split into two procs now is_banned_from() does a check if a ckey is banned from one or more roles and returns true or false. This effectively replaces jobban_isbanned() used in simple if() statements. If connected a client's ban cache is checked rather than querying the DB. This makes it possible for a client connected to two or more servers to ignore any bans made on one server until their ban cache is rebuilt on the others. Could be avoided with cross-server calls to update ban caches or just the removal of the ban cache but as is I've done neither since I think it's enough of an edge case to not be worth it.
The second proc is is_banned_from_with_details(), this queries the DB for a role ban on a player's ckey, ip or CID and returns the details. This replaces direct queries in IsBanned.dm and the preferences menu.

The legacy ban system is removed.

The interfaces for banning, unbanning and editing bans have been remade to require less clicking and easier simultaneous operations. The banning and jobban panel are combined. They also store player connection details when opened so a client disconnecting no longer stops a ban being placed.

New banning panel:
Key, IP and CID can all be toggled to allow excluding them from a ban.
Checking Use IP and CID from last connection lets you enter only a ckey and have the DB fill these fields in for you, if possible.
Temporary bans have a drop-menu which lets you select between seconds, minutes, hours, days, weeks, months and years so you don't need to calculate how many minutes a long ban would be. The ban is still converted into minutes on the DB however.
Checking any of the head roles will check both of the boxes for you.
The red role box indicates there is already a ban on that role for this ckey. You can apply additional role bans to stack them.

New unbanning panel:
Unbanning panel is now separate from the banning panel but otherwise functionally the same.

Ban editing panel:
Actually just a modified banning panel, all the features from it work the same here.
You can now edit almost all parameters of a ban instead of just the reason.
You can't edit severity as it's not really part of the ban.
The panels have been tested but I've not been able to get my local server to be accessible so ban functionality isn't properly confirmed. Plenty of testing will be required as I'd rather not break bans.



cl
admin: Ban interface rework. The banning and unbanning panels have received a new design which is easier to use and allows multiple role bans to be made at once.
prefix: Ban search and unbanning moved to unbanning panel, which is now a separate panel to the old banning panel.
/cl
2018-12-05 08:48:37 +13:00
ShizCalev
41a2935b67 Clean up redundant text2num in ban messages (#41024) 2018-10-20 11:35:57 -07:00
Jordie
c56f2a81ff fix ban time check runtime 2018-10-19 10:54:35 +11:00
ShizCalev
d470262007 Ban Message Duration (#40986) 2018-10-18 14:02:12 -04:00
Jordie0608
3f881722e8 adds query safety for getting ckeys not in player table 2018-08-26 01:45:25 +10:00
Jordie
0d7ef3ed65 Key instead of ckey for user facing logs and ui (#39009)
* converts to using key instead of ckey for user facing logs and ui

* more key_name for airlock wires

* futureproofing check for if key changes

* --onlyckeymatch script argument and fail/success counter

* fix
2018-08-11 02:15:50 +10:00
Jordan Brown
9633016e8e Move IsBanned query to async (#39178) 2018-07-18 22:53:17 +03:00
Jordan Brown
cf7e8aa9ec Qdels queries, adds sleep safety checks, DBcore checks for leaks (#38363)
* Qdels all queries, adds sleep handling

* DB Core messages admins about undeleted queries

* Compile fixes. Adds missing set waitfor

* Remove world/New shennanigans. Add DBQuery/BlockingExecute()

* Less spammy notifications to admins about undeleted queries

* Increase dbcore fire time to 1 minute

* Upgrade undeleted query warning

* Better place of death

* Fix build

* Remove BlockingExecute, see BSQL PR for why

* Yep, missed that one.

* Psyche, that's the WRONG QUERY!!
2018-06-18 22:48:35 +03:00
Jordie
8485269fc6 Adds round id to server ban messages (#37114)
* adds round id to server ban message

* adds round id to ban denied connection message

* adds round id for legacy ban message

* B

* erroneous space
2018-04-12 12:48:33 -04:00
Kyle Spier-Swenson
4e929c74a9 Deadmin tweaks: Admins without +AUTOLOGIN start deadmined. AUTOLOGIN defaults to on. (#33480)
* Deadmin tweaks, Admins without +ADMIN start deadmined.
Deadmining no longer destroys the admin datum.
Admins without +ADMIN start deadmined, reloading admins re-deadmins them.
Moved some code around to make it more sane
People with +PERMISSION can now deadmin or readmin other admins at will.

* Adds new flag for if the role should automatically log in, defaults to on, can be removed with -AUTOLOGIN
Also fixes a bug in permission panel not handling these cases gracefully
2017-12-13 22:03:37 -05:00
swindly
d3df913402 fixes spelling and stuff (#32531) 2017-11-09 11:03:50 -06:00
McBawbaggings
4ebacfbfa5 Hopefully fixes guest accounts being able to log in 2017-11-03 15:18:02 +00:00
Emmett Gaines
879b84da64 Makes isbanned have an arg for only checking real bans (#32248)
* makes isbanned have an arg for only checking real bans

* makes it return false if invalid data is passed in on a real bans check
2017-11-01 09:09:10 +13:00
Jordan Brown
4178c209f1 Configuration datum refactor (#30763)
* Configuration datum refactor

* More WIP

* New easier on the eyes format

* More WIP

* Finished config.txt

* Fucktons more WIP

* The end of conversion draws near...

* Add all this shit

* Done converting entries finally

* Hunting down compile errors

* More WIP

* MORE CONVERSIONS

* More WIP

* More WIP

* Oh shit only 90 errors this time!

* IT COMPILES!!!

* Fixes world start runtimes
2017-09-29 15:36:51 +13:00
Kyle Spier-Swenson
4318caa102 Show ban id to banned players
So we can look up what ban is matching and other details like roundid.
2017-06-29 11:22:01 -07:00
Cyberboss
fa135a10b3 Makes a thing use the right proc (#27071) 2017-05-09 16:34:56 -03:00
Jordie0608
69a07b5ecf persistent investigate and game logs separated by round ID 2017-04-27 22:10:51 +10:00
Cyberboss
3c3f7d3b60 Refactors dbcon into a subsystem (#26134)
* Refactors dbcon into a subsystem

* Swear I got that already...
2017-04-17 15:18:17 +10:00
Cyberboss
9e1ef0ffe2 Global variable wrappers (#25325)
* Add the system for managed global variables

* Travis ban old globals

* So you CAN inline proccall, that's neat

* Fix that

* master.dm

* Remove the hack procs

* Move InitGlobals to the proper spot

* configuration.dm

* Fix the missing pre-slash

* clockcult.dm

* This is probably for the best

* Doy

* Fix shit

* Rest of the DEFINES tree

* Fix

* Use global. for access

* Update find_references_in_globals

Always hated that proc

Whoever made it must've bee a r e a l idiot...

* __HELPERS tree

* Move global initialization to master.

Fix the declaration

* database.dm

* Dat newline

* I said DECLARATIVE order!

* Here's something you can chew on @Iamgoofball

* game_modes.dm

* Fix this

* genetics.dm

* flavor_misc.dm

* More stuff

* Do it mso's way. Keep the controllers as global

* Make master actually see it

* Fix

* Finish _globalvars/lists

* Finish the rest of the _globalvars tree

* This is weird

* Migrate the controllers

* SLOTH -> GLOB

* Lighting globals

* round_start_time -> ticker

* PAI card list -> pai SS

* record_id_num -> static

* Diseases list -> SSdisease

* More disease globals to the SS

* More disease stuff

* Emote list

* Better and better

* Bluh

* So much stuff

* Ahh

* Wires

* dview

* station_areas

* Teleportlocs

* blood_splatter_icons

* Stuff and such

* More stuff

* RAD IO

* More stuff and such

* Blob shit

* Changeling stuff

* Add "Balance" to changelogs

* Balance for changelog compiler + Auto Tagging

* Update the PR template

* hivemind_bank

* Bip

* sacrificed

* Good shit

* Better define

* More cult shit

* Devil shit

* Gang shit

* > borers

Fix shit

* Rename the define

* Nuke

* Objectives

* Sandbox

* Multiverse sword

* Announce systems

* Stuff and such

* TC con

* Airlock

* doppllllerrrrrr

* holopads

* Shut up byond you inconsistent fuck

* Sneaky fuck

* Burp

* Bip

* Fixnshit

* Port without regard

* askdlfjs;

* asdfjasoidojfi

* Protected globals and more

* SO MANY

* ajsimkvahsaoisd

* akfdsiaopwimfeoiwafaw

* gsdfigjosidjfgiosdg

* AHHHHHHHHHHHHHHHHHHHHHHH!!!!!

* facerolll

* ASDFASDFASDF

* Removes the unused parts of dmm_suite

* WIP

* Fix quote

* asdfjauwfnkjs

* afwlunhskjfda

* asfjlaiwuefhaf

* SO CLOSE

* wwwweeeeeewwwww

* agdgmoewranwg

* HOLY MOTHER OF FUCK AND THATS JUST HALF THE JOB?!?

* Fix syntax errors

* 100 errors

* Another 100

* So many...

* Ugh

* More shit

* kilme

* Stuuuuuufffff

* ajrgmrlshio;djfa;sdkl

* jkbhkhjbmjvjmh

* soi soi soi

* butt

* TODAY WE LEARNED THAT GLOBAL AND STATIC ARE THE EXACT SAME FUCKING THING

* lllllllllllllllllllllllllllllllllllllllllll

* afsdijfiawhnflnjhnwsdfs

* yugykihlugk,kj

* time to go

* STUFFF!!!

* AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!

* ngoaijdjlfkamsdlkf

* Break time

* aufjsdklfalsjfi

* CONTROL KAY AND PRAY

* IT COMPILEELEELELAKLJFKLDAFJLKFDJLADKJHFLJKAJGAHIEJALDFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

* Goteem

* Fix testing mode

* This does not belong in this PR

* Convert it to a controller

* Eh, fuck this option

* Revert controllerization Ill do it some other time

* Fix

* Working controllerization

* FOR THE LOVE OF CHRIST PROTECT THE LOGS

* Protect admins and deadmins

* Use the inbuilt proc
2017-04-06 23:26:13 -06:00
Lzimann
5a618297ce Replaces the default output with the to_chat wrapper. 2017-03-10 01:32:05 -03:00
Jordie
63b3699cdd MySQL Execute error handling (#24738)
* wip commit

* mysql execute proc now handles errors itself

* adds log_sql()

* implements log_sql()
2017-03-07 10:55:42 +01:00
Jordie
72a93bae7d Continues to add default sql indexes and table optimisations (#24456)
* adds default sql indexes and table optimisations

* fixes warnings

* edits to text and better update queries

* wrong table

* superior copypaste skills

* who has

* names

* that long

* add inet

* fix for badmins giving 2 billion brainloss

* fixes rank name and adds sanitizing
2017-02-27 22:44:26 +11:00
oranges
17a7c01e36 Revert "Adds default sql indexes and table optimisations" 2017-02-21 17:53:41 +13:00
Jordie
62da82fcd9 Adds default sql indexes and table optimisations (#24277)
* adds default sql indexes and table optimisations

* fixes warnings
2017-02-21 09:49:48 +13:00
Cyberboss
2d424cf6be Moves some stuff that belongs in dbcore to dbcore (#24145)
* Moves some stuff that belongs in dbcore to dbcore

* Wew garbage

* Ree

* Fixed
2017-02-19 14:21:53 +13:00
Leo
9c6803ae19 Ports Paradise error handler, with in game runtime viewer! (#24036)
* Ports paradise error handler, with in game runtime viewer!

* Changes to the old runtime error and removes inerror reference

* Oops

* Adds a wrapper for world.log so it displays both in the runtime diary and in DD window
2017-02-14 11:39:31 +11:00
oranges
f3acff4706 Adds a ckey whitelist, stripping out some dead code (#21875)
* Adds a whitelist, stripping out some dead code in the process

Old job whitelist that wasn't used has been removed.

Config has been repurposed, uncomment USEWHITELIST, only ckey's in
admins.txt or whitelist.txt in the config will be allowed to connect to
the server

* More examples

* Add a guy

* Update whitelist.txt

* Put him in
2016-12-04 15:33:15 +11:00
Kyle Spier-Swenson
c1b14680c4 Rogue stickyban detection system. (#19201)
* Rogue stickyban detection system.

This will detect when stickybans go rogue and revert them to whatever their state was when the world started.

* does the remie

* Increases STICKYBAN_MAX_MATCHES to 20 to prevent gaming
2016-07-16 12:00:47 +12:00
MrStonedOne
d220416ed3 Makes ipintel only warn, fixes some cache things. 2016-06-17 03:54:42 -07:00
MrStonedOne
c37ae784e7 Adds local cache, doesn't check reconnects, fixes bugs 2016-06-16 21:04:52 -07:00
MrStonedOne
d67b9cbe0c Removes debugging messages 2016-06-16 21:04:51 -07:00