Commit Graph

49 Commits

Author SHA1 Message Date
Wildkins
a07700f8a6 Fix runtime errors while running without a connected database (#11473) 2021-03-19 22:08:00 +01:00
Matt Atlas
d4666caaac Ports Goonchat from Baystation. (#9635)
changes:

    rscadd: "Ported a new chat system, Goonchat, that allows for cool things like changing font style, size, spacing, highlighting up to 5 strings in the chat, and DARK MODE."
    rscadd: "Repeated chat messages can now get compacted. You can disable this in goonchat settings."
    rscadd: "You can change icon style to any font on your system."
    tweak: "The game window has been altered a bit to adjust for this."
    rscdel: "Removed skin style prefs as they are no longer used."
2020-09-24 23:06:04 +03:00
Werner
aa4ffc8959 DB Enhancement (#9155) 2020-07-25 23:28:31 +02:00
Werner
cb4a712851 Enforces Lineendings and adds Editorconfig (#7657) 2019-12-21 16:19:24 +01:00
Matt Atlas
decc0b14a7 Preparation for 513 (#7677)
* Preparation for 513

* lentext replacement
2019-12-18 08:10:16 +01:00
Mykhailo Bykhovtsev
81e7f29878 Reworking Bot API and optimizing for loops in admin code (#6355) 2019-05-01 14:14:26 +02:00
LordFowl
8d436c4a03 Converts all necessary << outputs into the to_chat() macro. (#6076)
This PR will lead us towards the Promised Day, for in its wake there shall be much celebration and ecstasy as this world becomes a world suitable for developer hegemony. The first strike is thusly;

All << is converted into to_chat().
2019-03-10 23:39:03 +02:00
Erki
97c1343189 Deletable mirrors and indexing for faster searching (#4026)
Makes individual mirrors deletable as per admin request.
Adds indexes for queries in isbanned() to make them roll faster.
2017-12-31 14:28:00 +01:00
Erki Meinberg
f541c68cc0 Saner mirrors (#3119) 2017-07-20 20:46:25 +03:00
skull132
e4423761ef Admin & Staff adjustments (#2529)
Features:

 Removal of BOREALIS (python module) as it's not used.
 Removes ToR ban feature in lieu of IPIntel.
 New BOREALIS config to alert staff if server starts as hidden.
 Adminhelps now inform admins on discord if dibsed (when they were sent to discord anyways).
 Adds hub visibility to the server access control panel.
 Adds mirror ban spotting via ban panel. It now redirects to the linked ban if one is found.
 CCIAA now get alerted as to how many of them are online and active when receiving faxes and emergency messages via Discord.
 Removed unused C/C++ libraries. The socket_talk module is a generic UDP shipper, of which Arrow implemented a better version. lib nudge is not even compiled for use. lib_nudge module is uncompiled and no longer used, as we use cURL for the bot.
 Removed depracted APIs and config settings related to the previous point.
 Whitelisted jobs now appear properly in the job selection window as [WHITELISTED].
 Job ban reasons can now be viewed from player preferences window.
 Await admin approval for final CCIAA requests and implement. RIP CCIAA.
 Fix age bans for jobs and antags (dynamic ones, ofc).
 Implement https://forums.aurorastation.org/viewtopic.php?f=18&t=8283
2017-06-13 01:37:44 +03:00
skull132
a3ec0cf45d Better SQL prepared statements (#2474)
The system used to be of complexity O(n^2). Essentially two for loops running per every argument. Which ended up being surprisingly slow (there were instances where I saw the argument parser as using quite a lot of CPU time).

This replaces it with a more linear algorithm. It's somewhere near O(n) where n is the length of the unparsed query. Which is more stable and faaaster. This comes with two changes, however:

Parameters inside the query now have to be delimited from both sides with : (colons). The alternative to this would be to use something like $n or just assume that space marks the end of a marker. Only the former is workable, the latter would break a few queries already.
Arguments in the argument array no longer have to be prefixed by : (colons). So, while in the query you would write :thing:, you'd initialize the array of args as: list("thing" = somevar). It could be made to work without it, but eh, I think this is fine.
Argument validation is slightly weaker. What I mean by this is that with the old system, unused keys would result in an error. This is no longer a thing. Missing keys will still result in an error, however.
One more improvement: double delimiting removes an edge case where if key A partially covers key B, depending on the order, key A would mangle key B.
Updated and tested all queries that I could find. So this should be good.
2017-05-29 21:17:41 +03:00
skull132
8cca057344 Feature - Rewriting jobbans! (#2114)
Current jobban system:

Jobbans stored as plain text and require a for loop to go through and search for specific ones.
Fiddly as shit, because, again, stored as plain text and not quickly break-up-able.
butts
No temporary jobbans on the old file system.
No centralized API to handle jobbanning. Jobbans have to be ran through separate procs in case of the MySQL system being used.
New jobban system:

Associated lists to store bans. This allows key based accessing and validation of a ban. Much faster than for-looping twice to compare text.
Associated lists saved to the ban file. Pretty good stuff that this works.
Temporary jobbans for file system. Bans which are expired are removed right as they're checked.
Binding of the MySQL procs with the old jobban API. More centralized design. (Less, "Oh god, I forgot to save this to the DB!")
Instant effect on unbans. As opposed to waiting 1 round for it to take effect.
Removal of dormant code.
2017-05-24 20:46:07 +03:00
Ron
790480c8da Removes all \red and \blue's (#2309)
Removes all \red's and \blues in favor of span classes. \red things that were bold were replaced with danger because it's warning but bold.
2017-05-21 12:07:57 +03:00
skull132
87e041aa75 Merge remote-tracking branch 'bay12-upstream/master' into development 2016-10-07 00:58:39 +03:00
skull132
f60d46f2ba Unban Reason When Lifting Bans (#446)
Unbanning staff will now be prompted to enter a reason for lifting the ban. The log of a ban being lifted will now also be entered into the player's notes.
2016-06-24 16:29:11 +03:00
skull132
92847d06b3 Ban System Update - better mirroring
Mirrors have been updated to actually fetch the active mirror, as opposed to using an old mirror and referencing that, and then letting the banned individual through.

You can also now view the mirrors for a ban.

Also denies entry for people who for _some_ reason lack a computer ID or an IP address. The former can be done by using a specific wsock32.dll in your BYOND bin to bypass bans.
2016-05-01 13:47:33 +03:00
skull132
5d66916a45 Banning Update
Fetches a CID and IP automatically, if none are entered.
2016-04-30 15:02:11 +03:00
skull132
8383f1c03b Generalizing establish_db_connection() and setup_database_connection()
Both procs are now generalized, and accept a DBConnection object as an argument. Due to this generalization, all instances of `establish_db_connection()` must be renamed to `establish_db_connection(dbcon)`.
Also added variable `failed_connections` to the definition of DBConnection.
2016-03-04 00:53:37 +02:00
skull132
fc6221eeee Mirroring Bans
No more "New ban for every attempted dodge." Mirrored bans are linked to an associative table, and then checked against the referenced original ban. Cuts down on the amount of clutter that exists.
2016-02-06 18:17:55 +02:00
skull132
fcd393ee94 Merge pull request #33 from skull132/SQL-backend-import
Sql backend import
2016-02-01 16:11:10 +02:00
skull132
179431115b Merge remote-tracking branch 'Aurorastation/development' into SQL-backend-import
# Conflicts:
#	code/modules/admin/admin.dm
#	code/modules/admin/admin_verbs.dm

All conflicts cleared. Wind funciton needs a quick redo as a result.
2016-02-01 16:00:54 +02:00
Ryan784
5f655dbbdb Vampire Gamemode Developement Test
The Vampire gamemode, as ported right now. The gamemode is in, as well
as creating a vampire through the traitor panel. All abilities seem to
function, unable to test enthrall however (though I have a feeling it
will have to be redone). Enthralling someone without a CKey will give
you the correct response, however.

Any abilities having to do with lums will need to be redone. Vamphud as
well.

If looking over this and pointing out errors/fixing is faster than
simply porting it yourself, then feel free to do so!
2016-01-20 22:14:21 -05:00
skull132
c7ae4df416 dbcon_old removal, table prefixing
Prefixes the tables properly with ss13_, and removes active references to dbcon_old and related procs.
2016-01-13 15:59:36 +02:00
PsiOmega
709840f848 Merge remote-tracking branch 'upstream/dev-freeze' into dev
Conflicts:
	code/modules/admin/DB ban/functions.dm
2015-09-26 08:48:37 +02:00
GinjaNinja32
9be47c6374 Permabans do not expire, and we don't need to show expired when it's been manually lifted 2015-09-23 13:03:11 +01:00
GinjaNinja32
c707519d1f Add specific color for expired bans in ban panel, fix some formatting and a runtime 2015-09-23 12:58:39 +01:00
PsiOmegaDelta
0ba7643217 Updates files as necessary to adhere to the new standard. 2015-07-27 09:32:51 +02:00
Zuhayr
5e1ae26b74 Comment cleanup, adds TODOs for a bunch of minor things that the antag system may need to address before the end of freeze. 2015-07-14 05:19:01 +09:30
volas
5fee41d4ba sanitize() refactor: third pass (misc) 2015-03-25 01:05:21 +03:00
volas
a9b30da7cc Small correction 2015-03-09 16:53:08 +03:00
volas
ca07914424 Ability to search bans by bantype 2015-03-09 15:15:08 +03:00
volas
59a113f91c Ability to search bans by ip and id, and also matches 2015-03-09 15:12:51 +03:00
errorage
64d6012399 Added the ability to define the ip and computer id for a manual ban (in the banning panel). This is so mirroring bans or banning people who were not online during the round in progress does not require admins to spawn a mob, set their variables and then ban the mob.
If however an admin attempts to add a manual ban for a player who was present during the current round, a player who still has a mob somewhere in the game world, the proc will prioritize the mob's ip and computer id variables, not the things entered in the banning panel form.
2015-03-09 15:08:47 +03:00
DJSnapshot
c20c84b328 Dun goofed 2013-11-04 13:10:33 -08:00
DJSnapshot
15a2bcc54f Fix so bans can work again. 2013-11-04 13:07:03 -08:00
baloh.matevz@gmail.com
fa84ba9611 - Added a small bit to the SQL statement so I can update the database structure later on, without it breaking the ban system until it updates.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5517 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-11 13:54:11 +00:00
baloh.matevz
9455347fa5 - You can now ban guest accounts.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5438 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-31 19:27:09 +00:00
baloh.matevz
92a2749fb7 Fixes issue 1111. Makes it possible to apply a manual job ban (via the form in the banning panel) for AI, cyborg, pAI and antagonist roles.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5387 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-23 23:56:08 +00:00
baloh.matevz
b55042e64b - Added temporary jobbans.
Screenshot: http://www.ss13.eu/tempjobban.PNG

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5381 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-23 12:20:11 +00:00
elly1989@rocketmail.com
0d2898a023 Remove some unneeded error messages from DB_ban (they're built into check_rights()
Made paths to sounds in robot/emote.dm more specific so the game doesn't have to find the files itself.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5039 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 12:09:43 +00:00
baloh.matevz
5182bb69ae - Added +BAN permission checks to DB_Ban
- Uncommented a piece of code in IsBanned() that was only commented for testing purposes. Admins now once again ignore any bans to their name, except for daemon bans.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5036 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 07:32:13 +00:00
baloh.matevz
2f57200e82 - Fixes the broken population logging
- The current, file-based ban system is now a legacy system, the use of which is strongly discouraged for servers, which are constantly online.
- Added a database-based banning system, with a new baning panel, accessible through the 'banning panel' verb. Servers, which use this new banning system, will get the new panel up even if they use the old 'unban panel' or 'display job bans' verbs. These remain there for legacy support purposes. (Panel screenshot below)
- The most notable benefits of the new system are the ability to add offline bans, meaning the person does not have to be connected for a ban to be applied to their name. The second benefit is the ability to look up all previous bans that the person had.
- The major disadvantage is the complete incompatibility between the old and new system, meaning you have to either do a lot of copy-pasting or playing around in code to sync the old system with the new one. Servers upgrading to this system might want to consider a purge of all bans, if they don't want to go through this. Due to the incompatibility, there are no transition tools provided. Please contact me (errorage/rageroro) in #coderbus for help in syncing your database. The /tg/ legacy and database systems have been synced.
- The server configuration defaults to use the legacy system, as the new one requires the database to be set up. Please hash BAN_LEGACY_SYSTEM in config.txt as explained, to use the new system. If the database connection fails, the server reverts to the legacy system.

If any bugs or errors appear with either the legacy or new ban system, please let me know ASAP. The same applies if there are any syncronization problems between the legacy and new system, resulting in banned people unbanned or unbanned people banned.

Panel screenshot:
http://www.kamletos.si/new%20ban%20panel2.PNG

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5034 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-11 05:39:09 +00:00
baloh.matevz
abad9978b2 - Fixed the revision number not showing properly. Hopefully it's fixed for good this time, as it works off of logic, instead of line numbers.
- Standardized the database library code
- Deleted a few unused database related files (karma and forum activation), so they won't get in my way later. They work off of no longer existent database tables.
- Made it so the server maintains a constant connection with the database, which is established on world/New() and never broken, until the server ends. If 5 consecutive database connection attempts result in no connection getting established, the server will not attempt any more connections. Made all existing database connections use the global continuous connections. Currently we need two, as we have two databases, but the old database is going to get moved into the new one.
- Fixed the spaghetti-like report in the permissions panel, which happened when someone had many permissions enabled.
- Added database connection reports to display to dream daemon on server startup.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5015 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-06 17:21:13 +00:00
elly1989@rocketmail.com
b1fdee2e32 Changed some global_list stuff:
>tried to make the comments less confusing.
>Removed the procs for rebuilding the lists (they weren't meant to be used and half were broken anyway).
>added a directory. It maps ckey to client like so directory[ckey] = client. It could be used for PMs, banning, and various other admin tools rather than using \ref[]
>var/list/admins is now a list of clients whom are admins.
>var/list/admin_datums is what var/list/admins used to be. A map from ckey -> admin datum
Most of this is so I can add modular admin ranks in a non-horrendous way and fix some existing issues.
>var/list/client_list is now var/list/clients (laziness sorry)
>removed some needless loops and stuff.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4951 316c924e-a436-60f5-8080-3fe189b3f50e
2012-10-24 20:11:39 +00:00
elly1989@rocketmail.com
f8da06db13 Re-added the default-vote config option for voting. For every client connected more than the total votes, it will add 1 to the default vote option (No restart or the current game-mode).
/obj/admins is now /datum/admins because that's what datums are for you silly people
Moved var/datum/marked_datum from /obj/ to /datum/admins
admin datums are persistent throughout the round. They are stored in the var/list/admins rather than the ranks. This is so admin preferences may be moved into the datum to have them persist even after Login/Logout/Disconnects.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4749 316c924e-a436-60f5-8080-3fe189b3f50e
2012-09-24 11:40:41 +00:00
sieve32@gmail.com
7bf6788082 -OPTIMIZATION TIME
-Almost every instance of 'for(mob in world)' has been killed. Because GODDAMN was it being run a bunch. Instead, a series of global lists have been made, and they are all handled auto-magically through New()'s, Del()'s, Login()'s, death()'s, etc...

Lists are as follows:
-mob_list : Contains all atom/mobs by ref
-player_list : Like mob_list, but only contains mobs with clients attached
-admin_list : Like player_list, but holds all mobs with clients attached and admin status
-living_mob_list : Contains all mobs that ARE alive, regardless of client status
-dead_mob_list : Contains all mobs that are dead, which comes down to corpses and ghosts
-cable_list : A list containing every obj/structure/cable in existence
Note: There is an object (/obj/item/debuglist) that you can use to check the contents of each of the lists except for cables (Since getting a message saying "a cable," x9001 isn't very helpful)

These lists have been tested as much as I could on my own, and have been mostly implemented. There are still places where they could be used, but for now it's important that the core is working. If this all checks out I would really like to implement it into the MC as well, simply so it doesn't check call Life() on every mob by checking for all the ones in world every damn tick.

Just testing locally I was able to notice improvements with certain aspects, like admin verbs being MUCH more responsive (They checked for every mob in the world every time they were clicked), many sources of needless lag were cut out (Like Adminwho and Who checking every single mob when clicked), and due to the cable_list powernet rebuilding is MUCH more efficient, because instead of checking for every cable in the world every time a powernet was broken (read: A cable was deleted), it runs though the pre-made list, and even with a singulo tearing all the way across the station, the powernet load was VERY small compared to pretty much everything else.

If you want to know how any of this works, check global_lists.dm, there I have it rigorously commented, and it should provide an understanding of what's going on.

Mob related in worlds before this commit: 1262
After: 4
I'm helping


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4179 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-26 03:04:05 +00:00
baloh.matevz
db63780bac - Added unban logging to DB_ban
- Fixed a runtime error which happened when you tried to unban someone through the 'display job bans' verb.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4148 316c924e-a436-60f5-8080-3fe189b3f50e
2012-07-23 01:24:54 +00:00
baloh.matevz
4fe200c4e1 (printing SQL to world is a bad idea...)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3917 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-25 11:03:41 +00:00
baloh.matevz
0007122cff - Added basic ban logging for DB_Ban. First step for the cross-server ban system.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3916 316c924e-a436-60f5-8080-3fe189b3f50e
2012-06-25 11:02:52 +00:00