1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-22 23:27:46 +00:00
Commit graph

158 commits

Author SHA1 Message Date
dbade00616 Restore the test_packet_sizes test 2025-03-18 20:33:12 -04:00
1f2283af14 Specify a connection type when sending packets 2025-03-18 20:33:12 -04:00
f886fbfe4b Turn the gates on in the example config 2025-03-17 17:44:22 -04:00
22379bccdd Set the remaining days subscribed to 30
To hide that message every time you login, warning you that the subscription is
running out.
2025-03-17 17:43:28 -04:00
fecfa821ad Use PatchList from Physis
This is what the Physis implementation was based off of anyway, so it should be
more or less a drop-in replacement.
2025-03-17 17:36:43 -04:00
aee23a200b Create timestamp_msecs function, run Clippy auto-fix 2025-03-17 17:31:22 -04:00
974efe3824 Move compression logic out of send_packet and into it's own function 2025-03-17 17:28:57 -04:00
a7f56a62a1 Rename FFXIVOodle to OodleNetwork, move out of a folder
I was thinking I was going to add other modules but it wasn't needed, so it
doesn't need to live in a folder.
2025-03-17 17:22:09 -04:00
c34f5d7ea8 Move CharaMake up to it's super module 2025-03-17 17:19:28 -04:00
8859683074 Document the various LobbyConnection functions, move it up to it's super module 2025-03-17 17:17:49 -04:00
dae20a1e0c Rename IpcSegmentTrait to ReadWriteIpcSegment, add docs
This also adds a default calc_size() implementation so client packets don't have
to implement it.
2025-03-17 17:12:40 -04:00
ee1b79ee56 Document what LobbyConnection and ZoneConnection is 2025-03-17 17:03:10 -04:00
c510d955bd Document more random things, move session_id from PacketState to LobbyConnection 2025-03-17 16:58:48 -04:00
9009ae527c Update some documentation for modules and constants 2025-03-17 16:44:17 -04:00
NotNite
481d6b69a2 Document chat commands 2025-03-17 16:40:04 -04:00
NotNite
da69b40ca6 Document config.json 2025-03-17 16:40:04 -04:00
NotNite
10fc8e32ce Document manual command line arguments
I don't have Astra locally so I had to do this to test things. It works
fine right now, but in the future the user must complete the login
process manually.
2025-03-17 16:40:04 -04:00
NotNite
aeb8516a82 Document magic domains, privileged port usage
I ran into the issue with privileged ports myself. The link to the Caddy
website has an aside about how to use setcap or sudo, which should be
good enough.
2025-03-17 16:40:04 -04:00
NotNite
e3b5bea440 Move to .localhost TLD for Caddyfile
.local is reserved for mDNS (see RFC 6762), and it wasn't properly
resolving on my machine. .localhost (RFC 6761) seems more correct.
2025-03-17 16:40:04 -04:00
NotNite
9fa6a230d6 Clarify Oodle instructions, link against "oodle" directory
While you can just drop the Oodle static library into /usr, I'm not a
big fan of doing it, especially when the binary didn't come from my
machine or package manager. You can set a RUSTFLAGS environment variable
or cargo config file to specify a link path, but having the build script
search there for you is easier.

The docs now specify which variant of Oodle is required, since there are
multiple. It also specifically mentions the static library, because I
had some weird issues leaving the dynamic library in that folder, where
the executables wouldn't start unless it could dynamically load the .so.
2025-03-17 16:40:04 -04:00
a8c740a322 Setup sessions table to keep track of active SIDs
This is very simple, as I just replace the last active session ID if you login
again. There's no way to invalidate them yet.
2025-03-16 21:15:58 -04:00
bd23c04848 Add a basic login system
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.
2025-03-16 20:55:51 -04:00
3140dad378 Remove leftover bits of debugging logging 2025-03-16 18:35:11 -04:00
a021abc3c7 Use WORLD_NAME constant in Lobby server 2025-03-16 18:23:04 -04:00
dc8d8638f6 Move LobbyCharacterAction into it's own struct 2025-03-16 18:22:15 -04:00
ff9bcb255d Extract sequence number from the lobby character action packet 2025-03-16 18:18:49 -04:00
7315ece194 Move some larger Lobby IPC structs to their own files, add more tests for these
Also fix a bunch of mistakes when calculating size, and so on.
2025-03-16 18:15:19 -04:00
f5d75301b2 Re-organize the IPC structures so they live in their own server-specific module
My old setup of throwing *all* of the IPC types and opcodes into *one* enum was
becoming unbearable. Now that we have multiple things using the same opcodes
(because they can overlap) I think it's time to repay this technical debt.

This overhauls the structure of the project to move IPC structs into their own
modules, and separate the opcode data/lists into separate ones depending on if
it's clientbound and serverbound.

Nothing has changed functionall, but this is going to make it way easier to add
more IPC in the future.
2025-03-16 17:43:29 -04:00
726d351f8b Add documentation for the different modules, move patchlist code 2025-03-16 15:42:46 -04:00
23050e7b95 Move more structs out of the root src/ folder and into their respective server 2025-03-16 15:39:44 -04:00
bdef7752b0 Add comments explaining the use of each dependency 2025-03-16 15:24:01 -04:00
f8a28e45c9 Add helper function to send lobby errors
This isn't used yet, but implemented for future use.
2025-03-16 15:20:55 -04:00
22acdc4a3b Print IP address when lobby & world servers are started 2025-03-16 14:51:18 -04:00
053730017f Remove unused code & imports 2025-03-16 14:50:40 -04:00
b1b0d9ac9f Only send the welcome server message on initial login, not for every zone change 2025-03-16 14:49:18 -04:00
a72199e5af Use the same nameday/deity/etc information everywhere, add tests for PlayerSpawn
This doesn't really fix anything functionally, but makes the Character window
look nicer. The same (currently unchangable) data is now reflected in the lobby.
2025-03-16 14:43:30 -04:00
0bf4cd1264 Create CharacterMode enum 2025-03-16 14:13:26 -04:00
3bbf345cd6 Run Clippy auto-fix 2025-03-16 14:09:12 -04:00
51f6ad6744 Grab bag of various fixes
I have unsuccessfully tried to spawn another actor, the game recieves it (and
adds it to the object table) but they are marked invisible. Besises, this also
contains various field improvements and initial support for social lists.
2025-03-16 14:07:56 -04:00
1cbc5c72b9 Remove Gridania hack, allow changing between any zone
This now properly translates territory types using the Excel sheet, making it
possible to move between any zone (you can walk through.)
2025-03-15 21:41:39 -04:00
3aaa8ae3eb Move zone changing into ZoneConnection's purview
I suspect that we have to rigidly control the fade in/out or whatever
PrepareZoning is, and it's just a good idea in general.
2025-03-15 20:49:07 -04:00
f372f3173d Create dedicated Connection implementations to handle future server work
The current situation of throw-every-piece-of-logic-into-one-file for each
server isn't working out. So now there is a new ZoneConnection/LobbyConnection
struct that will be delegating tasks to their own Handlers (for example, there
could be a ChatHandler.)

I'm not sure how well this architecture will scale, but it's better than what
we have right now.
2025-03-15 20:38:10 -04:00
059becf55f Detect when players enter exit zones, and transistion them to the correct place
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.
2025-03-15 19:34:29 -04:00
dbe1ef208c Initialize the weather correctly, add test for InitZone packet
This makes the lighting not a horrible dark mess!
2025-03-14 20:47:36 -04:00
ff3305b3e0 Update documentation 2025-03-14 17:00:40 -04:00
640aeb797c Fix a few problems with ClientSelectData, use the same character in both servers
I apparently had a few fields missing here. Also just some general clean up,
make it the same looking character in both the Lobby and World server. I also
chose Gridania as the test zone.
2025-03-14 00:30:37 -04:00
5c22532474 Add Lobby IPC packets for character creation
This adds the packets required for name confirmation, character creation etc so
you can actually go through the process now!
2025-03-13 23:30:48 -04:00
4d4720b192 Add new character name rejection
Next is being able to create a new character (but not really, because there is
no persistent.) This is a good first step, though.
2025-03-13 22:22:02 -04:00
45be3835bb Add more init IPC packets
This doesn't improve the loading situation unfortunately, but I guess it's more
"correct". Unk7/Unk11 is still a complete mystery to me, though.
2025-03-13 21:49:03 -04:00
8bfc6cafb3 Send a message when logging in 2025-03-13 21:11:20 -04:00