aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* prevent password brute force (#4)fusion322025-10-30
| | | | | | | Prevent blocked IP addresses and accounts from returning anything other than a blocked error message. Previously, further attempts would first check the password which enabled brute force attacks to use the "invalid account/password" message as an oracle.
* adjust character death indexes for common queriesfusion322025-10-27
|
* change how guild data is storedfusion322025-10-23
|
* add include path for PostgreSQL + overall cleanupfusion322025-10-19
| | | | | | | Some distributions place libpq headers under /usr/include/postgresql which is why it's added to the include path. And even though we don't support it yet, the same happens with MariaDB, with headers being placed under /usr/include/mariadb.
* update documentation + wrap the few SQLite scriptsfusion322025-10-18
|
* properly handle NULL values with postgres result helpersfusion322025-10-18
|
* modify how automatic SQLite patches/upgrades works + overall cleanupfusion322025-10-18
|
* world startup/shutdown timestamps + adjust a few column namesfusion322025-10-17
|
* properly handle text encoding differences with QueryManager clientsfusion322025-10-16
|
* move ResolveHostName outside of GetCharacterEndpointsfusion322025-10-16
|
* prevent a few SQLite queries to fail when they affected no rowsfusion322025-10-16
| | | | | | | This was done with the old design in mind, but with the query thread offloading, returning false is meant to signal a failure in completing it. A connection lost with PostgreSQL or BUSY error with SQLite, for example.
* allow all database config options to be loaded, even when not usedfusion322025-10-16
|
* lower monotonic uptime resolution from MILLISECONDS to SECONDSfusion322025-10-16
| | | | | | | | | | | | The monotonic uptime was used exclusively with caches and having a resolution of SECONDS allows it to be stored as an int without risk of wrapping (~68 years). Using MILLISECONDS meant that it would wrap after ~25 days which is totally possible and EXPECTED. Just as an example, the small test server I ran for about 1 month had ZERO downtime on the QueryManager except for when I manually restarted it. It was probably very close to wrapping when I took it down.
* gracefully handle no rows on "COUNT(*)" queriesfusion322025-10-16
|
* make config.cfg a distribution templatefusion322025-10-16
|
* fix a few postgres queriesfusion322025-10-15
|
* implement all postgres queriesfusion322025-10-15
|
* postgres interval helpers + a few more queriesfusion322025-10-15
|
* make query output parameter names more specificfusion322025-10-14
| | | | | This also avoids conflicts with database RESULT objects that we lacked with SQLite but show up with PostgreSQL and MySQL.
* GET_WORLD_CONFIG robustness + tidying up a few variable namesfusion322025-10-14
|
* the remainder of postgres helpers (probably)fusion322025-10-14
| | | | | This should give us everything we need to implement all the supported queries.
* more postgres helpers and a couple of queriesfusion322025-10-14
|
* most of the postgres primitives/helpersfusion322025-10-13
|
* beginning of postgres driver + overall tweaksfusion322025-10-13
|
* organize database configs and schema files + compilation guardsfusion322025-10-10
|
* switch to blocking poll + fix config, signals, time, non-game loginfusion322025-10-10
|
* update query functionsfusion322025-10-09
|
* small indentation adjustmentfusion322025-10-09
|
* update sqlite driver + impl INTERNAL_RESOLVE_WORLDfusion322025-10-09
| | | | | | With this change the game server is able to login again but we still need to re-implement/re-fit the other queries for it to properly startup.
* worker initialization robustness + query processingfusion322025-10-07
|
* make connections properly handle async queriesfusion322025-10-07
| | | | | | This moves queries from `src/connections.cc` to `src/query.cc` and adds a few missing details. The only thing left is to review query processing and tie database operations to the `TDatabase` struct.
* sketch out new query queue/worker for async queriesfusion322025-10-06
|
* fix problem with finishing or excluding from auctionsfusion322025-10-04
|
* fix RIGHT check with notations and ip banishmentsfusion322025-09-13
|
* remove ParseOptionalIPAddressfusion322025-09-13
| | | | | | | I had just added it in the last commit but it made its use case non-obvious. Checking whether the string is empty before trying to parse an IP address is clearer than calling some function that has its own concept of what an empty address is.
* fix queries where the IP address is optionalfusion322025-09-12
|
* add check to make sure the database is open with write permissionsfusion322025-08-30
| | | | | | Using `sqlite_open` with `SQLITE_OPEN_READWRITE` doesn't guarantee the database will be open with read-write permissions. - See: https://www.sqlite.org/c3ref/open.html
* fix player index loading + small service config changefusion322025-08-18
|
* wrapping up for a public releasefusion322025-08-15
|
* store world hostname and resolve at runtimefusion322025-08-08
|
* fix problem with concurrent writes + implement website queriesfusion322025-08-01
| | | | | | There was a problem with concurrent writes not being visible until after restart, due to how cached prepared statements work with SQLite (see comment in `database.cc`).
* improvements and bug fixesfusion322025-07-22
| | | | | | | | | - Add support for SIGINT and SIGTERM signals for graceful termination. - Properly check premium account status with `EVICT_FREE_ACCOUNTS` query. - Properly check if character is already online before failing game login with "too many characters" error. - Overall cleanup.
* impl LOGIN_ACCOUNT to be used with the login serverfusion322025-07-17
|
* finish game queriesfusion322025-07-15
|
* impl banishment, deaths, and buddies queriesfusion322025-07-14
|
* impl BANISH_ACCOUNTfusion322025-07-13
|
* reorganize query functions and impl SET_NOTATIONfusion322025-07-13
|
* house related queriesfusion322025-07-12
|
* add `TransactionScope`fusion322025-07-11
|
* implement more queries + overall improvementsfusion322025-07-11
|