This also moves the login pages to the login server, which makes the
code slightly a bit more contained. The account management page doesn't
allow you to do anything yet, but for future usage.
All accounts were sharing the same character list, but now they should
be properly separated. This also modifies the login database to prepare
for multiple service accounts, but there's no way to manage them in the
web interface yet still.
It turns out (amazingly) that this data exists client-side, I guess because the
server and the client share the same planevent LGB file. So instead of
hardcoding the starting location in each city, it's now literally like retail*
* Except for the fact that we don't support rotation yet, and positions in pop
ranges are probably randomized too. But it's close!
This allows you to register in the web frontend now, and the login server now
checks this before giving a session ID. Note that this is wildly insecure (it
stores the passwords in plaintext!) and is duly noted in the USAGE.
It's a hack and only really works going from New -> Old Gridania, but this does
work! It also means Kawari now actually requires a valid game installation,
since it has to read layer group information.
This is a slightly modified version of the one in Physis, with the required
modifications inspired from WorkingRobot's TemporalStatis fork. Thanks so much!
I ended up just stealing this from iolite, which in turn took it from Sapphire.
I tried for a few hours to get a Rust Blowfish implementation going, but the one
from Physis didn't work. I'll try again later.