Commit graph

54 commits

Author SHA1 Message Date
toaster
4f58842804 Merge branch 'next' into public_next
# Conflicts:
#	src/i_tcp.c
2022-07-09 20:31:49 +01:00
toaster
36e44f2f6f Free the banned struct on SOCK_ClearBans. 2022-07-03 22:01:51 +01:00
toaster
7bc59abc30 Create a single struct for bannednode and bannednodetimelft, and use the matching ban ID inside that struct.
While this commit does not increase the visibility of ban reasons, it makes this possible later.
2022-06-14 22:09:27 +01:00
toaster
8addea0d45 Core 1.4 specific changes.
* Ensure it can compile.
    * Removing vanilla 2.2 properties that slipped in to previous commits.
    * Rearranging i_tcp.c to avoid implicit declaration.
    * Complete rename of `IsNameGood` to `EnsurePlayerNameIsGood`.
* Add "BANFORMAT" header, for versioning support.
* Add conversion from 1.3-and-earlier format to new system.
* Don't ban the entire internet - convert zero-masks to the most specific ones.
2022-06-14 21:15:35 +01:00
toaster
55be74396f Ban improvements
- Save a note of the username, not just the reason.
- Allow setting a mask with the `banip` command.
- Make ban.txt's formatting a lot more sane. Username and reason are stored in quotes. The mask uses the same formatting as actual CDIR.
- Keep track of if we tried to load ban.txt. If it wasn't, then don't save over it with a blank file.
- Disallow quotes in player names, as it makes player name detection in console more annoying, and saving username in files scary.

# Conflicts:
#	src/d_clisrv.c
#	src/d_netcmd.c
#	src/i_tcp.c
2022-06-14 17:25:40 +01:00
toaster
8d05bf669b Kicks are now temp bans
Length is determined by the "kicktime" cvar, in minutes. By default, this is set to 10, but I'm willing to adjust this. Only applies to manual kicks (in the future, maybe also name filter kicks).

The timestamp for the unban time is even saved in ban.txt, so long-term temporary bans are completely possible. (I checked, you can attempt to ban someone for up to 1902 years if you really want to.)

# Conflicts:
#	src/d_clisrv.c
#	src/d_clisrv.h
#	src/i_tcp.c
2022-06-14 17:15:28 +01:00
toaster
24181ae738 - Attach ban reasons to banned_t
- Properly call D_SaveBan after remote bans. Bans are no longer saved in the ban command and instead wait for the actual kick to process, since before they were split between the two, which is what caused the discrepancy.

# Conflicts:
#	src/d_clisrv.c
#	src/i_tcp.c
2022-06-14 16:58:07 +01:00
toaster
2f0e1521d0 Combine banned & bannedmask into banned_t
Better code cleanliness, also makes it easier to add more data to bans later (such as a timestamp for temporary bans)

# Conflicts:
#	src/i_tcp.c
2022-06-14 16:48:29 +01:00
toaster
77e67d86bc Remove MAXBANS
Needs proper stress testing but seems to work.

# Conflicts:
#	src/i_tcp.c
2022-06-14 16:46:12 +01:00
James R
0f122fd5dd Don't accept hole punch requests to local network 2021-08-30 19:00:28 -07:00
James R
eab8f99eab Document the hole punching protocol 2021-08-30 18:31:17 -07:00
James R
df59f3580d Don't do anything hole punching related if rendezvousserver is unset 2021-08-30 18:27:52 -07:00
James R
b5086b848b Ignore zero length packets 2021-08-30 16:52:14 -07:00
James R
ba5b6aa7af Hole punching 2021-08-30 16:52:13 -07:00
James R
b8bfe9b83a Use STUN instead of curl to fetch the public IP address for Discord
RFC 5389 is a standard protocol that can be used for this instead of ip4.me.

I may have gone overboard on the CSPRNG... It was fun though.
2020-09-30 03:57:50 -07:00
James R
94512c49e4 -clientport (it's back!) and -serverport, which is an alias to -port
If you ever need to, you can change the client port number.

(cherry picked from commit 843d9b9f0a345330d97c579e94f208eb2b65c156)
2020-08-19 18:16:54 -07:00
James R
b77541b51d Use a pointer for port_name
Using strcpy is stupid because we don't know how long the argument would be.
There's no need for a buffer anyway.

(cherry picked from commit 4e321012894b2aa87e312597f19be26b30545a8b)
2020-08-19 18:16:53 -07:00
James R
b1f5e66a23 Use a random port when connecting
(cherry picked from commit f584b61c93a97e1a9852f306acba673ced21e03a)
2020-08-19 18:16:53 -07:00
Wolfy
fcea81e018 Revert basically every attempted join passwords fix 2020-04-26 01:20:46 -07:00
Latapostrophe
86986adf6e Merge branch 'ignore-posthumous-ackret' of git.magicalgirl.moe:KartKrew/Kart-Public into v1-ignore-posthumous-ackret 2020-04-05 11:23:29 +02:00
James R
0a2eac682b Don't use client port as default peer port 2019-07-04 16:38:00 -07:00
Steel Titanium
0128643043 Prettyify code. 2019-04-28 22:02:25 -04:00
Steel Titanium
1c21a4ed6f New -port param 2019-04-28 21:53:36 -04:00
fickleheart
9bc3acd17a Fix compile issues 2019-03-26 08:26:41 -05:00
fickleheart
ca2979c1af Free nodes properly in cleanupnodes
Hopefully the other changes herein have rendered
cleanupnodes obsolete, but I'm not too sure of
that.....
2019-03-26 01:10:00 -05:00
fickleheart
8c56f1aa0b Wacky attempt at not reopening nodes for D/Ced ackreting clients 2019-03-25 22:22:25 -05:00
James R
ed0f8fd967 Actually allow connecting to "localhost"
Because IPv6 doesn't seem to work anyway.
2019-03-20 20:37:00 -07:00
James R
f139ffd1dc Let localhost connections 2019-03-20 20:37:00 -07:00
Alam Ed Arias
7285f9ff1d Netcode: handle NULL in addrinfo lookup 2018-12-22 21:06:13 -05:00
Monster Iestyn
1b2aea81dc Merge branch 'master' into next 2018-11-25 20:39:17 +00:00
mazmazz
ea7162a76a Update source copyrights to 2018 2018-11-25 07:35:38 -05:00
Monster Iestyn
91113cb79c Merge branch 'master' into next 2018-11-08 20:50:58 +00:00
Monster Iestyn
9fb301ecb5 don't bother with inlining the function, on second thoughts 2018-10-27 16:47:56 +01:00
Monster Iestyn
bb3d850bbf static the buffer, forgot to do this earlier 2018-10-27 16:27:00 +01:00
Monster Iestyn
e4e76f83c3 Use temporary buffer with a max size of 255 bytes instead of having Microsoft's FormatMessageA alloc one for us. Also, provide a fallback message in case no message was available for some reason 2018-10-27 16:09:14 +01:00
Monster Iestyn
3b39a25ade Save the result of errno (aka WSAGetLastError() for WinSock) as soon as possible, to prevent anything in SOCK_GetNodeAddress resetting the value to 0 while trying to print the message for the error itself! 2018-10-27 15:49:04 +01:00
Monster Iestyn
ab38e6cebb Creating a quick get_WSAErrorStr function to act as a wrapper for FormatMessageA so we can string-ify Winsock errors properly
Untested!
2018-10-27 15:36:15 +01:00
Monster Iestyn
ea06e8a62b SOCK_Send: Split the actual sending data parts into a new function, SOCK_SendToAddr, to make everything look a bit neater in general 2018-09-03 20:53:40 +01:00
Monster Iestyn
7b083f07cd UDP_Socket: I doubt client addresses are meant to be included in the total for broadcast addresses 2018-09-03 15:56:02 +01:00
Monster Iestyn
846bddfdcf SOCK_Send: Fix what appears to be a mistaken use of i instead of j 2018-09-03 15:52:22 +01:00
Monster Iestyn
24aafa6dac UDP_Socket: Add missing limit checks for s, for client and broadcast addresses 2018-09-03 15:43:36 +01:00
Alam Ed Arias
e2b604fdfd TCP: remove BADSOCKET 2017-12-26 19:56:50 -05:00
LJSonik
084a534f6a
Merge branch 'master' into download-freeze-fix 2017-12-17 22:48:13 +01:00
Louis-Antoine
67aba2648c Fix download freezes (well, most of them) 2017-11-03 22:58:47 +01:00
Monster Iestyn
900bab9b13 Fix includes for SDL 1.2-only ports' files 2017-09-14 21:15:38 +01:00
Louis-Antoine
8298ed3559 DEBUGMODE -> _DEBUG =) 2017-01-14 19:24:22 +01:00
Louis-Antoine
e9cb6d0331 -Added a timeout for game state downloading to prevent definitive join freezes in some cases. The timeout has a minimum value of "jointimeout" and gets higher as the game state grows in size
-If the server tries to kick a joiner who is downloading the game state, they will get a timeout instead, because a regular kick would only happen once the game state has been downloaded
-Added a timeout for player ticcmd packets, again to prevent freezes to happen in some cases
-File/game state downloading is now faster, the speed is controlled by the "downloadspeed" cvar, in packets per tic
-The reason is now properly shown when the server refuses connection
-Changed the default values of "nettimeout" to 10 seconds (previously 15) and "maxsend" to 4 MB (previously 1)
-Added a "noticedownload" cvar that displays a message in the server console when someone is downloading a file
2017-01-13 20:53:52 +01:00
Alam Ed Arias
bdb5db878a NONET should also disable UPNP support 2016-08-13 10:12:14 -04:00
Alam Ed Arias
4956be2bd4 gcc-6: error: left shift of negative value [-Werror=shift-negative-value] 2016-05-28 21:23:09 -04:00
Inuyasha
f07585191b copyright dates/statements updated and such
(no actual SLOC changes)
2016-05-17 17:42:11 -07:00