Commit Graph

64 Commits

Author SHA1 Message Date
scatterflower
ca84b54597
Replace packet handler with templates (#300)
* Replace packet handler with templates

* Move all packet functions into classes

* Liberal use of Q_UNSUED

* Add correct argument count to packets

* Fix windows build issues

* Partially implement argument type validation
* Where applicable.
* Checking if we can convert from a string to a string would be useless

* Fix unit tests for AOPacket

Co-authored-by: scatterflower <marisa@scatterflower.online>
Co-authored-by: Salanto <62221668+Salanto@users.noreply.github.com>
2022-07-07 10:33:41 -05:00
Salanto
777132e698 Disable chat deskmod 2022-06-18 10:01:47 -05:00
Salanto
c9818a137f Websockets refactor (#26)
* Implement NetworkSocket Thin-Proxy

Removes the need for the overengineered WS-Proxy
2022-06-15 17:52:27 -05:00
Salanto
c26319701e Rework AOPacket (#24) 2022-06-15 17:52:27 -05:00
Salanto
0d41a1e8bd Prevent double or invalid HWID/ID packet (#23) 2022-06-15 17:52:27 -05:00
Salanto
70b5212640 Add per area wtce and shout disable options (#22) 2022-06-15 17:52:27 -05:00
Salanto
d82e6b8e59 Disable music change for spectator (#21)
* Disable music change for spectator

* Appease clang-format

* Properly handle this bullshit.
2022-06-15 17:52:27 -05:00
Leifa♥
f307f728c9 Added command extension system (#12)
* Added command extension system

Resolve #10

* Added akashi definitions

* Updated headers to comply to the standard

* Added full definition to argument

* Clang-format pass

* Missing header for GCC

* Missing header for GCC

* Move method implementation to source file
2022-06-15 17:52:27 -05:00
Leifa♥
e01f0e1c57 Changed message_floodguard logic and introduced global_message_floodguard (#8)
* Changed message_floodguard logic, ...

Resolve #3

The client individual client timer was ignored in favor of the area timer as it wouldn't make a lot of sense to have 3 different timers for game messages.

* Changed message_floodguard to only affect the area in which the message was sent rather than globally. The default value is 250ms.
* Added global_message_floodguard, this restores the previous functionality of message_floodguard. The default value is 0ms.
2022-06-15 17:52:27 -05:00
Leifa♥
657a47b029 Added flexible ACL roles (#7)
Resolve #4
2022-06-15 17:52:27 -05:00
Leifa♥
b0555207d6 Privatization rework (#2)
* Add clang-format

* Multiple privatization changes

"Participation handshake" this refers to the moment that the user's client sends the `askchaa` packet.

* Server::m_clients is now private. Get a copy with Server::getClients()
* Server::m_player_count is now private. Get a copy with Server::getPlayerCount() (Additional logic was added to handle the player count.)
* AOClient::m_joined is now private. Get a copy with AOClient::hasJoined()
* Added signal AOClient::joined(); will be emitted when the client first complete the participation handshake.
* Renamed Server::updatePlayerCount to Server::playerCountUpdated

* Privatized Server

* Made Server members private: m_characters, m_areas, m_area_names
* Added Server methods: getCharacters(), getAreas(), getAreaById(f_area_id), getAreaByName(f_area_name), getAreaNames(), getAreaName(f_area_id), getMusicList
* Added Server helper methods: getCharacterCount(), getAreaCount()
- This reduce code repetition of the following example: server->getCharacters().length(), server->getAreas().size()

* Solved other merge conflicts

* Added Server methods, various fixes

* Added Server methods: getCharacterById(f_chr_id)
* Various optimizations

* More Server privatization changes

* Made Server members private: db_manager, next_message_timer, can_send_ic_messages
* Renamed Server members:
  * next_message_timer -> m_message_floodguard_timer
  * can_send_ic_message -> m_can_send_ic_message
Added Server methods: getDatabaseManager, isMessageAllowed, startMessageFloodguard(f_duration)
Made Server methods private: allowMessage

* Added new fields to load for AreaData

* Added fields: `area_message` (default: empty string) and `send_area_message_on_join` (default: false)

* Added Server::clearAreaMessage

* Cleaned up headers include (AOPacket excluded)

* Removed most project file includes, moved to source file (cpp)
  * AOPacket was excluded because some methods modify the copy

* Fix compile error when using MingW compiler

* Appease clang by using proper or and putting it in parentheses
* Remove extra semicolon
2022-06-15 17:52:27 -05:00
Salanto
c1451b6b15 Fix pair lookup
* Fixes incorrect lookup where the server would try to pair a user with another user outside the current users area.
2022-05-26 17:13:50 +02:00
in1tiate
69e6c1f32a improve modcall message 2022-05-14 21:23:55 -05:00
MangosArentliterature
ec4022ed9a Properly validate MS#% args length 2022-03-26 10:52:29 -05:00
Salanto
c85471d2cd
Fix #234 / Exclude stop track from alias lookup. (#245)
* Exclude ~stop.mp3 from alias lookup

* Fix auto-looping for on-join songs.
2022-03-14 18:24:47 -05:00
Salanto
601fa10f4f Move arup below updating playercount. 2022-03-14 18:45:22 +01:00
Salanto
06aebc1f81 Actually play song on join 2022-03-14 18:44:40 +01:00
Salanto
cde07b5c50
Add server description to the PN packet (#230)
* Add SDESC packet

This packet allows servers to overwrite the server description, allowing them to display them even in the favourites menu.

* Un-Add SDESC and hijack PN to supply description
2022-02-15 17:52:48 -06:00
in1tiate
83c41c05f7 Squashed commit of the following:
commit e946bf124602f224ce0e371ba1374f0355b537eb
Merge: d6a4e64 4505909
Author: Rosemary Witchaven <32779090+in1tiate@users.noreply.github.com>
Date:   Fri Jan 28 19:43:36 2022 -0600

    Merge pull request #225 from Salanto/Dynamic-Area-Musiclist-Take2

    Allow users to add custom songs to the music list on a per-area basis

commit 45059092d2888b60912f721e43a380910d10ccd8
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 24 22:05:27 2022 +0100

    TIL what a typedef is

commit 02584db9640fff0a1969a7f516c4bccfae9b5388
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 24 21:39:17 2022 +0100

    Not all OR are equal. Explain weird command splitting

    Remove hardcoded URLs

commit d00ebd5692296cd0c29dd377113b53fe0e7b99c0
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 24 21:28:08 2022 +0100

    Salanto PR Language Update by in1tiate

    As usual, my English is absolutely unreadable.

    Co-authored-by: Rosemary Witchaven <32779090+in1tiate@users.noreply.github.com>

commit d3842106e06350dc02d8864bb28232fdc5643f00
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 24 20:35:32 2022 +0100

    Add missing config file + document commands for help

commit ac64360e1c1741023b01052977de77a7d5ea4f8c
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 24 19:52:13 2022 +0100

    Minor improvements to command usage and addition of clear command

commit c614578e78ce9afa0c8e22aa36bdf46a70a97169
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 23 22:19:54 2022 +0100

    Purge last traces of old songInformation system

commit 07618761f044a13d75587b28a9c994342a5980e2
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 23 22:10:54 2022 +0100

    Working version, needs some refinement and debugging in AOClient

commit 33c0358c98c0fd2de805356a9aa3ac7bbed204e1
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 23 21:48:05 2022 +0100

    Almost functional implementation

    Now only need to determine why I can't play the customs yet

commit b0acbace78b3f16f2fe4f3c6f65a422e3343f992
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 23 15:26:42 2022 +0100

    Fix build error, expand validation test slightly

commit a48c4f503998ce8e42f0bb409c5a3c7dc5e40329
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 23 01:03:27 2022 +0100

    Add commands

commit 88ab0b473953873166e291e5009b97df31547b3f
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sat Jan 22 15:10:26 2022 +0100

    Float sucks, int has to be good enough

    + add retrival of song information

commit e924e1340be1a0909eba84072f1646fe9770bd02
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Thu Jan 20 22:28:35 2022 +0100

    Fix removing moving

    Add necessary tests

commit 3df088f8d07ce7e0d8fe08b6a97608a623e6ef97
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Wed Jan 19 19:34:16 2022 +0100

    Start work on adding this shit into commands

commit c293ecfa99d1b2bd1e0b34cb8752d69b2eca057c
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Tue Jan 18 19:07:11 2022 +0100

    Fix typo and add singal for incremental upgrades

commit 10a42322e1e23af5795278a40b2ac59f3ab952ef
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Tue Jan 18 06:17:51 2022 +0100

    Hookup packet sending to music manager

    This might sound like a bad idea on first glance, but otherwise it breaks the AreaData tests and I am NOT gonna try to fix those without even understanding why they break.

commit 319836296374162b0b847432e8a626778317b869
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Tue Jan 18 06:17:51 2022 +0100

    Enraged comments, make area send FM packet

    Revert "Enraged comments, make area send FM packet"

    This reverts commit ec7a1a25646b2c2acc8a3a748b853851cc47d205.

commit 224a0d7efe989a5f336167c3f716061813f93ee3
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Tue Jan 18 05:10:18 2022 +0100

    Change packet communication from area to client

    First steps to hookup the custom musiclist.

commit 65aa8f7855a36f2c668b1399a5ed22fefeaf186d
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 17 00:48:38 2022 +0100

    Add test for custom list sanitisation.

    + Fix intentionally broken tests

commit 7c00ab437a6ff12033742d029ce49037f5bb1ebe
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Mon Jan 17 00:29:51 2022 +0100

    Sanitise the custom list opposed to deleting it

    This will fail tests intentionally to test the CI.

commit 80ad401267068e75707b2517a0bf836763141f8b
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 16 17:17:12 2022 +0100

    Add custom category capabilities

commit 08d8f5f8f683816ceba532f9c47cd0d5ab34389a
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sun Jan 16 03:58:18 2022 +0100

    Fix music addition and move relevant tests

commit 6ebf0d03b5da61a9c287115009d28038710ba7af
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sat Jan 15 08:08:20 2022 +0100

    Hookup music_manager into server, change default musiclist source for new clients

    + More tests 🆒

commit bd50c62376f131e2508ecdd3e272209894ecaec1
Author: Salanto <62221668+Salanto@users.noreply.github.com>
Date:   Sat Jan 15 03:13:42 2022 +0100

    Add central song validator for other classes

    Also added applicable test cases to ensure proper operation.
2022-01-28 19:51:30 -06:00
Rosemary Witchaven
d6a4e64070
Merge pull request #224 from Salanto/addClientIDtoArea
Change broadcast to area to use userIDs instead of iterating over all joined clients.
2022-01-24 13:49:54 -06:00
Salanto
7e8ea8b35c Keep record of joined userIds in area.
Adds the server-assigned clientid to the area, allowing the server to exclusively broadcast to this area without checking each clients area, instead pulling a list of them from the area itself and sending exclusively to them.

Tests have been adjusted to account that area leaving and joining can now be identified by userid.
2022-01-14 04:45:38 +01:00
Salanto
8c3ea52f94 Allow songs to be aliased.
Allows you to alias songs by providing the main name as a "Friendly name", while the actual song name can be an URL or a different name.

Solves the ancient issue of "but MOM, it's called [Insert Japanese Weaboo name here" and allows servers without dedicated WebAO repository to have their music be streams.
2022-01-09 04:17:21 +01:00
Salanto
659d53f0a3 Fix incorrect playercount when advertising
+ Some design changes because they are better imo. Fight me.
2021-12-20 01:07:10 +01:00
Salanto
d92ba88cb7 Add mapped IPv4 address parser. 2021-11-14 13:28:37 +01:00
stonedDiscord
7acc70464e web clients get removed later by the proxy 2021-11-14 13:28:37 +01:00
stonedDiscord
3ac0bc6247 add web range bans 2021-11-14 13:28:37 +01:00
Salanto
df237bbe3a Improve error handling and messaging to user 2021-09-13 18:13:48 +02:00
Salanto
8bdfe1e045 Ensure that no stale songs are in the jukebox queue when its disabled
Housekeeping and fix /currentmusic not returning a song
2021-09-12 23:20:09 +02:00
Salanto
f9dcaa2aa5 Implement a basic and functional jukebox implementation 2021-09-12 22:32:10 +02:00
Salanto
d42c2f2ae4 Outdated QtVersion boogaloo 2021-09-11 19:56:25 +02:00
Salanto
f523fc6ec0 AOClient madness 2021-09-11 19:46:40 +02:00
Salanto
a4e8442657 Cleanup some variable naming
+ move file reading operations into ConfigManager
2021-09-10 23:33:37 +02:00
Salanto
0cfaf25f66 Fix Webhook Buffer, Fix QStringLiteral Arg missing 2021-08-25 06:34:46 +02:00
Salanto
5e4f2f0ccb Implement login logging 2021-08-25 05:52:00 +02:00
Salanto
70a63dd8b3 emit most log slots from AOClient
- Still need to figure out how login handles it
2021-08-25 05:34:16 +02:00
Salanto
bc5ec9fa9d Add hwid to logconnectionattempt 2021-08-25 03:29:16 +02:00
Salanto
01fcb51155
Nix-QString::Splitbehaviour complaint (#195) 2021-08-24 00:05:38 -05:00
Rosemary Witchaven
624fe41e12
Fix or suppress compiler warnings (#158)
* purge warnings

* indentation change

* unused macros for notice cmd

* cleanup clazy/clang-tidy diagnostics
2021-08-23 19:07:22 -05:00
Salanto
2efb6edee8 Privatize Discord + use Signals better
None of this is called outside of Discord, so there's no point on having it public.

Bonus note on the slots :
But if you close your eyes,
Does it almost feel like
Nothing changed at all?
2021-08-19 21:46:05 +02:00
oldmud0
5566cdfedd
Fix out of bounds crash on evidence 2021-07-27 22:57:29 -05:00
Salanto
9f727dcc19 Update packets.cpp 2021-07-03 18:47:33 +02:00
scatterflower
a90dfd2005
Merge pull request #138 from AttorneyOnline/remote-bans
Allow banning clients not connected to the server
2021-06-21 22:25:27 -05:00
MangosArentLiterature
1e20ab0ae6 Merge branch 'master' into remote-bans 2021-06-21 22:07:30 -05:00
MangosArentLiterature
5d63ce7a2a Merge branch 'master' into discord-refactor 2021-06-21 21:52:24 -05:00
scatterflower
4f4b64e662
Merge pull request #140 from AttorneyOnline/fix-logging
Log commands and OOC messages separately
2021-06-21 21:46:29 -05:00
scatterflower
3d0b954536
Merge pull request #142 from AttorneyOnline/case-sens
Make iniswap detection case-insensitive
2021-06-21 21:45:18 -05:00
MangosArentLiterature
c4db245bec Rewrite ConfigManager and server configs
- Rewrites ConfigManager
- Adds DataTypes
- Changes "auth" and "logging" to use new AuthType and LogType types.
- ConfigManager now handles all config loading
- Remove AreaData and Server config.ini and command config loading.
2021-06-18 18:06:32 -05:00
MangosArentLiterature
4f7d5cd045 Discord webhook refactor
Completely refactors the Discord class, breaking it up into separate functions and slots, removing circular dependencies, and replacing most pointers with const references.
2021-06-17 19:21:37 -05:00
in1tiate
bdd5ad745c Make iniswap detection ignore case 2021-06-17 03:32:01 -05:00
MangosArentLiterature
9896feb1ab Fix localhost being used for webAO IPIDs
this was really dumb of me
2021-06-13 21:07:38 -05:00