Commit Graph

58 Commits

Author SHA1 Message Date
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
MangosArentLiterature
8416232ff9 Log commands and OOC messages separately
Now every OOC message won't be treated as if it were a command, only commands will be sent to the command logger.
Also, much needed .gitignore update
2021-06-12 12:05:47 -05:00
MangosArentLiterature
a561d3eb47 Mirror isIPBanned() changes to isHDIDBanned()
this also removes getBanReason and getBanDuration as they are now no longer needed

also minor clean up this websocket ip ban or whatever
2021-06-09 23:32:55 -05:00
MangosArentLiterature
555b4a0cbf Implement remote banning
- Use IPID for IP bans instead of remote IP.
- Remove 2 extraneous DB queries by altering isIPBanned()
- Allow banning unconnected clients
2021-06-09 23:15:06 -05:00
MangosArentLiterature
526ebcf635 Fix testimony recorder
Fixes the entirely broken testimony recorder and makes it work like intended.

Co-Authored-By: Cerapter <43446478+Cerapter@users.noreply.github.com>
Co-Authored-By: Salanto <62221668+Salanto@users.noreply.github.com>
2021-06-03 16:10:28 -05:00
Cerapter
e6b00575d8 Merge remote-tracking branch 'refs/remotes/scatter/master' 2021-05-13 07:15:18 +02:00
Cerapter
de085461d9 Fix testimony problems, simplify statement hops, add tests for testimony 2021-05-09 18:02:50 +02:00