| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | prevent password brute force (#4) | fusion32 | 2025-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 queries | fusion32 | 2025-10-27 |
| | | |||
| * | change how guild data is stored | fusion32 | 2025-10-23 |
| | | |||
| * | add include path for PostgreSQL + overall cleanup | fusion32 | 2025-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 scripts | fusion32 | 2025-10-18 |
| | | |||
| * | properly handle NULL values with postgres result helpers | fusion32 | 2025-10-18 |
| | | |||
| * | modify how automatic SQLite patches/upgrades works + overall cleanup | fusion32 | 2025-10-18 |
| | | |||
| * | world startup/shutdown timestamps + adjust a few column names | fusion32 | 2025-10-17 |
| | | |||
| * | properly handle text encoding differences with QueryManager clients | fusion32 | 2025-10-16 |
| | | |||
| * | move ResolveHostName outside of GetCharacterEndpoints | fusion32 | 2025-10-16 |
| | | |||
| * | prevent a few SQLite queries to fail when they affected no rows | fusion32 | 2025-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 used | fusion32 | 2025-10-16 |
| | | |||
| * | lower monotonic uptime resolution from MILLISECONDS to SECONDS | fusion32 | 2025-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(*)" queries | fusion32 | 2025-10-16 |
| | | |||
| * | make config.cfg a distribution template | fusion32 | 2025-10-16 |
| | | |||
| * | fix a few postgres queries | fusion32 | 2025-10-15 |
| | | |||
| * | implement all postgres queries | fusion32 | 2025-10-15 |
| | | |||
| * | postgres interval helpers + a few more queries | fusion32 | 2025-10-15 |
| | | |||
| * | make query output parameter names more specific | fusion32 | 2025-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 names | fusion32 | 2025-10-14 |
| | | |||
| * | the remainder of postgres helpers (probably) | fusion32 | 2025-10-14 |
| | | | | | | This should give us everything we need to implement all the supported queries. | ||
| * | more postgres helpers and a couple of queries | fusion32 | 2025-10-14 |
| | | |||
| * | most of the postgres primitives/helpers | fusion32 | 2025-10-13 |
| | | |||
| * | beginning of postgres driver + overall tweaks | fusion32 | 2025-10-13 |
| | | |||
| * | organize database configs and schema files + compilation guards | fusion32 | 2025-10-10 |
| | | |||
| * | switch to blocking poll + fix config, signals, time, non-game login | fusion32 | 2025-10-10 |
| | | |||
| * | update query functions | fusion32 | 2025-10-09 |
| | | |||
| * | small indentation adjustment | fusion32 | 2025-10-09 |
| | | |||
| * | update sqlite driver + impl INTERNAL_RESOLVE_WORLD | fusion32 | 2025-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 processing | fusion32 | 2025-10-07 |
| | | |||
| * | make connections properly handle async queries | fusion32 | 2025-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 queries | fusion32 | 2025-10-06 |
| | | |||
| * | fix problem with finishing or excluding from auctions | fusion32 | 2025-10-04 |
| | | |||
| * | fix RIGHT check with notations and ip banishments | fusion32 | 2025-09-13 |
| | | |||
| * | remove ParseOptionalIPAddress | fusion32 | 2025-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 optional | fusion32 | 2025-09-12 |
| | | |||
| * | add check to make sure the database is open with write permissions | fusion32 | 2025-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 change | fusion32 | 2025-08-18 |
| | | |||
| * | wrapping up for a public release | fusion32 | 2025-08-15 |
| | | |||
| * | store world hostname and resolve at runtime | fusion32 | 2025-08-08 |
| | | |||
| * | fix problem with concurrent writes + implement website queries | fusion32 | 2025-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 fixes | fusion32 | 2025-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 server | fusion32 | 2025-07-17 |
| | | |||
| * | finish game queries | fusion32 | 2025-07-15 |
| | | |||
| * | impl banishment, deaths, and buddies queries | fusion32 | 2025-07-14 |
| | | |||
| * | impl BANISH_ACCOUNT | fusion32 | 2025-07-13 |
| | | |||
| * | reorganize query functions and impl SET_NOTATION | fusion32 | 2025-07-13 |
| | | |||
| * | house related queries | fusion32 | 2025-07-12 |
| | | |||
| * | add `TransactionScope` | fusion32 | 2025-07-11 |
| | | |||
| * | implement more queries + overall improvements | fusion32 | 2025-07-11 |
| | | |||
