Commit Graph
182 Commits
Author SHA1 Message Date
980f3adc70 ezdb - A one click script to quickly setting up a development database (#75053)
https://user-images.githubusercontent.com/35135081/235344815-8e825ba9-52cf-44e8-b8e2-a2aeb5d47276.mp4

- Downloads a portable MariaDB (doesn't pollute your main system)
- Sets up a database with a random password on port 1338 (configurable)
- Installs the initial schema
- Every time after, will run updates

Major versions right now explicitly escape hatch, because those
historically come with something like a Python script, and I do not want
it to pretend to work.

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-15 12:49:29 -06:00
509b89f45c [MIRROR] Contextual tutorials for swapping hands and dropping items [MDB IGNORE] (#18604)
* Contextual tutorials for swapping hands and dropping items

* Fixes

* Oops

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2023-01-10 14:26:08 +01:00
9740f104d0 Contextual tutorials for swapping hands and dropping items (#72292)
# Requires https://github.com/tgstation/tgstation/pull/72320

## About The Pull Request


https://user-images.githubusercontent.com/35135081/209700892-e54be6cf-d18c-4d12-acd1-e5eb46e9d82d.mp4


https://user-images.githubusercontent.com/35135081/209700911-751b8a0e-d770-49fa-a6eb-ce50aa0fa670.mp4

---

Adds a system for tutorials that:

- Are contextually given
- Are not given again after completion
- Can optionally not trigger for anyone who first played before a
certain date

Uses this system for a tutorial for switching hands/dropping items. This
tutorial is triggered when you try to click on an item with another
item, and `afterattack` return FALSE. In order for this to work as
smoothly as possible, I'm going to open a separate PR that cleans up the
`afterattack` on everything to either return TRUE/FALSE.

## Why It's Good For The Game

SS13 is an extremely confusing game, being able to do tutorials in a
non-intrusive way (like a separate tutorial mode) is nice.

The system in place is going to be perfectly usable for introducing
mechanics to both fresh players and experienced players alike (such as
for future content).

## Changelog
🆑
qol: New players will now get a contextual tutorial for how to switch
hands and drop items.
/🆑

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-01-09 01:29:18 +01:00
906f3dd680 Db telemetry stuff (#10428)
* Log telemetry connections in DB (#63435)

About The Pull Request

Logs tgui telemetry connections into the database. Useful since they are normally capped to 5.

Does not change the fact that the "banned account in connection history" part is still based on your history at that time. I figured it could potentially be very slow to go through your entire database history.

* Fix IPs in telemetry_connections not being unsigned (#63573)

About The Pull Request

Fixes IPs not being unsigned, causing problems where they get capped if the IP is too big.

Not tested.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-01-04 04:14:16 +01:00
MothblocksandGitHub cf69eb05f2 Fix IPs in telemetry_connections not being unsigned (#63573)
About The Pull Request

Fixes IPs not being unsigned, causing problems where they get capped if the IP is too big.

Not tested.
2021-12-27 12:59:28 +13:00
MothblocksandGitHub f0c78c9667 Log telemetry connections in DB (#63435)
About The Pull Request

Logs tgui telemetry connections into the database. Useful since they are normally capped to 5.

Does not change the fact that the "banned account in connection history" part is still based on your history at that time. I figured it could potentially be very slow to go through your entire database history.
2021-12-22 16:52:17 +13:00
cda93811e6 [MIRROR] Add admin ckey to known alts panel [MDB IGNORE] (#9649)
* Add admin ckey to known alts panel

* fixed conflicts

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-11-23 10:48:21 -05:00
MothblocksandGitHub d0f33354f6 Add admin ckey to known alts panel (#62761)
About The Pull Request

Adds the admin who added the known alt to the known alts panel.
Changelog

cl
admin: The admin who adds a known alt is now logged in the table.
/cl
2021-11-23 20:28:19 +13:00
d6a1ad473f [MIRROR] Allows players to send more visible adminhelps when no admins are on, which'll definitely alert admins [MDB IGNORE] (#9583)
* Allows players to send more visible adminhelps when no admins are on, which'll definitely alert admins

* db portion sorted out

* now it really is

* should work about fine

* one last touch

* well, one more

* also botched comment

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-11-20 22:41:53 +01:00
fb8d95a2f5 Allows players to send more visible adminhelps when no admins are on, which'll definitely alert admins (#62711)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-11-20 03:06:50 -08:00
8978adde4a [MIRROR] Add the known alts panel, which prevents suspicious login logs for whitelisted ckeys [MDB IGNORE] (#9306)
* Add the known alts panel, which prevents suspicious login logs for whitelisted ckeys

* fixed

* ops, missed one conflict

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-11-08 22:26:02 -05:00
MothblocksandGitHub 6b3103e612 Add the known alts panel, which prevents suspicious login logs for whitelisted ckeys (#62520)
* Known alts panel

* Add notice before opening panel

* DB_MINOR_VERSION

* Better ban panel default

* Revert dbconfig

* Add TTL

* Add qdels
2021-11-08 20:43:52 +11:00
2bf6b97a29 [MIRROR] Make round ID nullable in bans and tickets [MDB IGNORE] (#8773)
* Make round ID nullable in bans and tickets

* Axes Merge Conflict. Increments SQL version (#8822)

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: ORCACommander <orcacommander1@gmail.com>
2021-10-14 15:07:09 +01:00
MothblocksandGitHub da1a8096c5 Make round ID nullable in bans and tickets (#61985)
* Make round ID nullable in bans and tickets

* Apply to everything

* Jordie's feedback

* Change NOT NULL in admig_log
2021-10-12 16:54:04 +11:00
GoldenAlpharexandGitHub 5b9bf1ea44 Adds discord_reported column to the ban table (#7721) 2021-08-26 15:50:47 +12:00
85a7f1c86f Adds the library_report table (#7341)
Co-authored-by: Nick <nick@nfreader.net>
2021-08-03 20:05:19 +01:00
ec2189370d Adds the library_report table (#60599)
* Adds the library_report table

* Updating subsystem defines

* fix table name

* Update database_changelog.txt

* Update tgstation_schema.sql

* Update tgstation_schema_prefixed.sql

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Jordie <4343468+Jordie0608@users.noreply.github.com>
2021-08-03 12:59:45 +10:00
ORCACommanderandGitHub 40ab50c3fd why must it always be the hard way (#6271)
makes https://github.com/Skyrat-SS13/Skyrat-tg/pull/6221#pullrequestreview-681367860 compliant
2021-06-12 03:06:53 +01:00
0fa2b48b59 [MIRROR] 2FA for Admins (#6221)
* 2FA for Admins

* a

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-10 23:59:30 +01:00
MothblocksandGitHub 3e1e7f7f92 2FA for Admins (#59467)
Adds a 2FA system for admins. When a config is enabled, a database storing your last CID and IP will be checked to see if you have connected through there before. If not, you will not be able to admin until you are verified. Verification is done by opening a website (decided by config), which is tasked with updating the database entry, which will then let you reverify.

MSO wants to implement this as a forum page, but the DM-side is completely agnostic to whatever the implementation is, just that it updates the database. This means that it could potentially be some TOTP stuff, even.

If the database is down, a backup file is checked for your most recent verified connection (IP + CID). If you are on this connection, you will be able to connect fine. If the database is down and you are on a new connection, someone with +PERMISSIONS can manually verify you through the Permissions Panel.

We've had repeated attacks of admins getting their accounts stolen, it's time.
2021-06-09 17:07:36 -07:00
5cdc6a6bc9 [MIRROR] Moves explorer adventures to the database. (#5923)
* Moves explorer adventures to the database.

* Cleans up Merge Conflict. Increments DB Version (#5979)

* Automatic changelog generation for PR #5979 [ci skip]

* Update tgstation_schema.sql

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: ORCACommander <ORCACommander@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-05-27 21:59:34 +02:00
f989da1fc1 Moves explorer adventures to the database. (#59089)
* Moves explorer adventures to the database.

* Fixes default images not showing up in playtest.

* Review changes.

* Please

* SPACING

* Makes this a bit atomic.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-05-24 16:56:14 -04:00
ORCACommanderandGitHub 7f42a5a6cf [FIX] SQL Changelog cleanup AGAIN (#5513) 2021-05-07 01:54:53 +01:00
c84d208fa6 [MIRROR] Sorts the majority of the rest of the unsorted chat (#5459)
* Sorts the majority of the rest of the unsorted chat

* 0.

* Update database_changelog.txt

Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-05-06 23:48:08 +01:00
ORCACommanderandGitHub 8df04ad6c5 clean up and and incremented DB version (#5477)
makes https://github.com/Skyrat-SS13/Skyrat-tg/pull/5422 conform to database standards
2021-05-05 18:25:51 +02:00
336d99adcd Security citations are now logged to the DB (#5422)
Co-authored-by: Nick <nick@nfreader.net>
2021-05-03 15:12:59 +01:00
e3b1e3c8c5 Security citations are now logged to the DB (#58827)
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2021-05-03 05:17:04 -07:00
UserothandGitHub faf4762e63 [Mostly non-modular] Stuff to accomodate multiple servers talking to the same database, including local/global bans. (#4032)
* Better accomodation of multiple servers using the same database.

* updated the PR number in readme.md

* Updated the database_changelog description.

* Oopsie.

* Cosmetic touch and sql query fixes.

* Opsie wopsie

* Oopsie x2

* Fugg
2021-03-30 07:50:29 +02:00
15b345017f [MIRROR] Fix sql changelog (#4485)
* Fix sql changelog (#57972)

Fixed bad SQL that I originally wrote in the changelog for 5.11, anyone trying to update their schema from < 5.11 up would notice this.

* Fix sql changelog

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2021-03-28 18:39:03 +01:00
BobbahbrownandGitHub b35a1dd122 Fix sql changelog (#57972)
Fixed bad SQL that I originally wrote in the changelog for 5.11, anyone trying to update their schema from < 5.11 up would notice this.
2021-03-28 12:32:42 -04:00
3727431c10 [NON-MODULAR] [TM Only] Added the SQL logging.. waf (#2668)
* Added the SQL logging.. waf

* I dont know why CI does not like my sql......

* I think i fixed the sql....

* Attempt #1 to make linter happy

* Shhh linter, it will be over soon

Just breath into this cloth... ignore the chloroform smell.

(Add a Preprocesser statement, to make the SpacemanDMM linter ignore the SQL code in a mob atom obj, that causes it to trigger its hard coded test for stoplag.
This only does not trigger on other SQL, as there is hard coded exception in SpacemanDMM that ignores the other objects. the better fix would be to update SpacemanDMM to add this into the exclusion. but this change at least allows the PR to be merged finally)

Co-authored-by: MissFox <github@aesir.org.uk>
2021-01-28 18:25:19 +00:00
7a424010d9 [MIRROR] Sets the charset and collation for the SQL schema to utf8mb4 (#2623)
* Sets the charset and collation for the SQL schema to utf8mb4 (#56060)

Changes the charset and collation in the SQL schema to utf8mb4 (which is default in ubuntu 20.04 and debian 10 for MariaDB). This solves all the problems with russian or other non-latin1 characters in many cases related to the use of the database, because surprisingly the rest is already ready for such use cases.

I am not adding any SQL script to migrate from latin1 to utf8mb4, as this is an extremely destructive action. It must be performed manually with the data of all tables backed up before doing so.
However, this can be done by using the following queries, one time for database:
ALTER DATABASE databse_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
and one for each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

* Sets the charset and collation for the SQL schema to utf8mb4

Co-authored-by: Vladimir Veisman <v.veisman@fl45h13.me>
2021-01-14 16:54:26 +01:00
Vladimir VeismanandGitHub 56a01e8d82 Sets the charset and collation for the SQL schema to utf8mb4 (#56060)
Changes the charset and collation in the SQL schema to utf8mb4 (which is default in ubuntu 20.04 and debian 10 for MariaDB). This solves all the problems with russian or other non-latin1 characters in many cases related to the use of the database, because surprisingly the rest is already ready for such use cases.

I am not adding any SQL script to migrate from latin1 to utf8mb4, as this is an extremely destructive action. It must be performed manually with the data of all tables backed up before doing so.
However, this can be done by using the following queries, one time for database:
ALTER DATABASE databse_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
and one for each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2021-01-10 16:58:28 -03:00
9921adcf11 [MIRROR] Add playtime tracking to notes (#2426)
* Add playtime tracking to notes (#55800)

* Added playertime tracking to player notes

* Updated sql change log with revision

* Fixed typo in db_query

* And fixed another typo with query_get...

* Add recomended changes from Jordie0608

* Added missing DEFAULT NULL to sql

Co-authored-by: MissFox <github@ aesir.org.uk>

* Add playtime tracking to notes

Co-authored-by: MissFox0810 <4310446+MissFox0810@users.noreply.github.com>
Co-authored-by: MissFox <github@ aesir.org.uk>
2021-01-01 20:55:56 +01:00
c0a4df5efb Add playtime tracking to notes (#55800)
* Added playertime tracking to player notes

* Updated sql change log with revision

* Fixed typo in db_query

* And fixed another typo with query_get...

* Add recomended changes from Jordie0608

* Added missing DEFAULT NULL to sql

Co-authored-by: MissFox <github@aesir.org.uk>
2021-01-01 21:10:27 +11:00
6f084f3a6e [MIRROR] SQL Schema Version 5.11 / Add indices for ticket table to support Statbus operations (#1049)
* SQL Schema Version 5.11 / Add indices for ticket table to support Statbus operations (#53541)

* I hope you're proud of yourselves. You've driven away another customer! It's baffling, I tell you! Your deep rooted lack of self-control only fosters failure in every endeavor we undertake! I mean, it's always one step forward and two steps back! Why? Don't you see the example I try to set for you?

* thanks jordie

* SQL Schema Version 5.11 / Add indices for ticket table to support Statbus operations

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2020-09-29 12:44:04 +02:00
BobbahbrownandGitHub 3035fbfc3a SQL Schema Version 5.11 / Add indices for ticket table to support Statbus operations (#53541)
* I hope you're proud of yourselves. You've driven away another customer! It's baffling, I tell you! Your deep rooted lack of self-control only fosters failure in every endeavor we undertake! I mean, it's always one step forward and two steps back! Why? Don't you see the example I try to set for you?

* thanks jordie
2020-09-29 12:07:39 +02:00
41788d096e [MIRROR] Overhauls discord verification system (#588)
* Overhauls discord verification system (#53289)

This completely replaces the previous verification system, for one that
will interoperate with a discord redbot instance that uses the cogs
located at you github.com/optimumtact/orangescogs

This cuts out several steps in the system, but it also leaves alone the
existing notify system (which just uses a file list of discord ids) as a
record of who to notify

SQL changes required for the new database system

Version 5.10, 7 August 2020, by oranges

Changes how the discord verification process works.
Adds the discord_links table, and migrates discord id entries from
player table to the discord links table in a once off operation and then
removes the discord id on the player table

The user connects to any tg server, and uses the "Verify Discord
Account" verb, this generates a six word one time use token, with a 4
hour time validity period (defined as 4 hours from the timestamp value)
in the discord links table.

This one time token, and the ckey of the user are stored in
discord_links

At this point the entire DM side is done, this is all it does

* Overhauls discord verification system

Co-authored-by: oranges <email@oranges.net.nz>
2020-09-02 02:47:22 +02:00
orangesandGitHub 6c9d88a4cd Overhauls discord verification system (#53289)
This completely replaces the previous verification system, for one that
will interoperate with a discord redbot instance that uses the cogs
located at you github.com/optimumtact/orangescogs

This cuts out several steps in the system, but it also leaves alone the
existing notify system (which just uses a file list of discord ids) as a
record of who to notify

SQL changes required for the new database system

Version 5.10, 7 August 2020, by oranges

Changes how the discord verification process works.
Adds the discord_links table, and migrates discord id entries from
player table to the discord links table in a once off operation and then
removes the discord id on the player table

The user connects to any tg server, and uses the "Verify Discord
Account" verb, this generates a six word one time use token, with a 4
hour time validity period (defined as 4 hours from the timestamp value)
in the discord links table.

This one time token, and the ckey of the user are stored in
discord_links

At this point the entire DM side is done, this is all it does
2020-08-30 18:24:23 -07:00
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
JordieandGitHub 248a6fd50c Datum based poll creation and vote handling update (#50843)
An almost complete rework of how creating polls, their data and voting on them is handled.

Instead of repeatedly querying for poll data, running polls are loaded at runtime into poll_question and poll_option datums that stores all the needed variables for both. This datum is then used for creating, editing and accessing poll data. The database is only contacted when saving changes or votes.

Creating polls and options is now done with a html window instead of a series of popups akin to how the banning panel works. The form data is parsed and error-checked before passing to be saved.
This is done in two stages, first time a poll's details are entered and it must be initialized (created as a datum) before options can be added and all of both are saved to the database. Instructions about how this work are shown on the poll creation window.

A new field for polls has been added, subtitles, which is text only shown when a poll is opened by a player instead of on the list of polls. Intended so the actual question text can be kept to only a name and important information about a poll goes in a subtitle.
All polls can now have revoting enabled on them.
Polls can have a starting datetime specified, this can be in the past but why would you do that?
Polls and options can be edited once created, excluding the type of a poll. Doing so will by default clear all existing poll votes. Votes can also be cleared by a button.

The handling of how votes are processed has been adapted for the datum system but is on the whole not functionally that different aside from poll validation not being roughly copypasted across each poll type's vote proc

All poll tables now have a deleted column for retaining 'deleted' data.
poll_question has also gained the columns created_datetime, subtitle, allow_revoting, their function explained above, and a change of idx_pquest_time_admin to idx_pquest_time_deleted_id.

A stored procedure set_poll_deleted has been added. This is called when setting a poll as deleted to avoid needing 4 separate queries from the server or one fairly long 4-way joined 

Create Poll verb is renamed to Server Poll Management
2020-05-11 14:34:51 +12:00
JordieandGitHub 4c7dfbc655 adds recording who deleted a note (#50445)
It came up that this isn't recorded, only logged.

Technically needs syncing merge with schema change but only deleting notes would break from this and tbh that isn't done very often so I think it'd be fine to yolo.
2020-04-18 11:28:34 +12:00
NickandJordie c758bdd51c [Ready] Database Tickets (#48727)
* DB ticket procs

* Schema changes for DB tickets

* Schema version update

* Fixes requested by Jordie

* SQL updates

Adds a recipient column

* Still one dangling issue where this DOESN'T WORK

* Alright, this should work

* Requested SQL fixes

* Rogue changes

* less bad defaults

* utf8 for the utf8 gods

* aaaaaa

* Update tgstation_schema_prefixed.sql

* Update tgstation_schema.sql

* Update database_changelog.txt

Co-authored-by: Jordie <4343468+Jordie0608@users.noreply.github.com>
2020-01-17 05:35:16 +11:00
AnturKandJordie 27ee01cee1 Adds name and desc to achievement metadata (#48146)
* Adds name and desc to achievement metadata

* Name 64, Desc 512
2019-12-10 15:59:18 +11:00
AnturKandJordie f28b2d60b9 Adds achievement metadata table (#48007)
* Renames hub_id to database_id
Adds achievement_metadata table.

* Fixups

* enum
2019-11-30 18:34:42 +11:00
AnturKandoranges a31c460dc0 Moves achievements from Hub to DB. (#47617)
Drops byond hub support and adds score and top 50 browsers.

Requires DB changes and manual creation of migration script if we want to keep old achievements so no random merges please.
2019-11-26 20:35:28 +13:00
NickandJordie 8f8dde46b8 Adds the feeedback column to admin (#45025)
* Adds the feeedback column to `admin`

* edited changelog message for clarity

* increments db minor version define like you're meant to nednerd
2019-07-08 22:20:52 +10:00
AffectedArc07andJordie c4e75bc40b [READY] SSdiscord and Round Notifications (#44231)
* Notify System

* V2

* Adds a hint

* Stoned fixes round 1

* Use grammar wells I can

* This didnt work

* I wish you could test on TGS without committing

* Jordie fixes round 1

* oops

* This took way longer than it should have taken

* Adds in endnotify for serverops

* Spacing
2019-06-30 00:43:25 +10:00
ShizCalev ae2854626e Removes unintentional prefixes from schema 2019-03-19 11:44:55 -04:00
MrStonedOne 0e2cb84ac6 prefix cases 2019-03-16 00:26:01 -07:00