Commit graph

244 commits

Author SHA1 Message Date
Robert Müller 843d021f82 add IServer::ChangeMap to fix change_map command
(cherry picked from commit 97d907304c56f643a9ed99e60c35052f950b27fb)
2021-12-15 03:36:25 +03:00
Robert Müller 019f8b665f set m_MapReload instead of polling sv_map, use bool, remove dead code
(cherry picked from commit dc56ab6d93e60f1a4bf26196a76b9e12df65529c)
2021-12-15 03:36:25 +03:00
Alexander Akulich 4d346456c5 CServer: Add a const CConfig getter for const Server instance 2021-12-15 03:36:25 +03:00
Alexander Akulich 145816b046 IServer: Change GetMapName() type to const char *
Partially follow upstream 77daedc814
2021-12-15 03:04:03 +03:00
heinrich5991 4fab7d7500 Remove unused variable m_SupportsMapSha256 2021-12-14 06:49:40 +01:00
Alexander Akulich d832800ebc Server: Implement a 'reason' argument for Console Shutdown
(cherry picked from the upstream commit teeworlds / 6899778b348cce800665e3e320f88a6688168a14)
2021-12-08 20:43:59 +03:00
ChillerDragon 3eb3dcd48b Make use of IO_MAX_PATH_LENGTH
Inspired by
0a7d0fee7c
2021-09-13 12:14:50 +02:00
Jupeyy a663799188 uint64 -> uint64_t, int64 -> int64_t 2021-06-24 17:19:17 +02:00
Jupeyy 853e00ed15 More colors from chat in console 2021-03-08 01:20:28 +01:00
Alexander Akulich 6b49bf1388 Make spectators stay specs on map changed
Based on PRs to the upstream:
https://github.com/teeworlds/teeworlds/pull/2065
https://github.com/teeworlds/teeworlds/pull/2066

Co-authored-by: Jordy Ruiz <jordy.ruiz@univ-lille.fr>
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2021-02-23 19:36:52 +03:00
Alexander Akulich 2790270abf Adopt upstream refactoring: Mark several functions as 'const' 2021-02-23 18:26:16 +03:00
Alexander Akulich c2f276cee1 Port CConfig API from the upstream (0.7.5)
The old (g_Config) API is kept to not break the stuff.

See commits:
    de5859b371
    78076761eb
2021-01-10 17:10:19 +03:00
bors[bot] d80d1df0db
Merge #3297 #3305 #3307
3297: Fix memleak in CServer on instant shutdown r=Jupeyy a=def-

```
Direct leak of 566869 byte(s) in 1 object(s) allocated from:
    #0 0x4f28e3 in __interceptor_malloc (/home/teeworlds/servers/DDNet-Server-asan+0x4f28e3)
    #1 0x55b3c9 in CServer::LoadMap(char const*) /home/teeworlds/src/master/src/engine/server/server.cpp:2312:49
    #2 0x55bfdd in CServer::Run() /home/teeworlds/src/master/src/engine/server/server.cpp:2351:6
    #3 0x56add2 in main /home/teeworlds/src/master/src/engine/server/server.cpp:3553:21
    #4 0x7f54401cd09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
```

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3305: DemoRecorder: Only remove existing filenames r=Jupeyy a=def-

As noticed by Jupstar

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [x] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3307: Don't crash with debug mode in demo r=Jupeyy a=def-

Since character doesn't exist then. Reported by murpi

Originally introduced in https://github.com/ddnet/ddnet/pull/2578

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2020-11-13 10:31:20 +00:00
def 71674b13da Fix memleak in CServer on instant shutdown
Direct leak of 566869 byte(s) in 1 object(s) allocated from:
    #0 0x4f28e3 in __interceptor_malloc (/home/teeworlds/servers/DDNet-Server-asan+0x4f28e3)
    #1 0x55b3c9 in CServer::LoadMap(char const*) /home/teeworlds/src/master/src/engine/server/server.cpp:2312:49
    #2 0x55bfdd in CServer::Run() /home/teeworlds/src/master/src/engine/server/server.cpp:2351:6
    #3 0x56add2 in main /home/teeworlds/src/master/src/engine/server/server.cpp:3553:21
    #4 0x7f54401cd09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
2020-11-11 17:24:51 +01:00
heinrich5991 7663641ed2 Fix some variable name's style 2020-11-08 17:15:48 +01:00
heinrich5991 246d2ac3d6 Allow IServer users to check when client's names change
Use that available interface to process name change spam protection more
cleanly.
2020-10-14 16:42:35 +02:00
def 3be8a592e5 Run clang-format
Purely automatic change. In case of conflict with this change, apply the
other change and rerun the formatting to restore it:

$ python scripts/fix_style.py
2020-09-26 21:50:15 +02:00
def 6ce04d93f1 Server: Only recv new packets when we know they are waiting
Reduces the number of syscalls
2020-09-15 19:11:51 +02:00
heinrich5991 31cfa9250d Fix server port in teehistorian
Official servers weren't affected because they didn't use the default of
`sv_port 0`.
2020-08-29 14:14:37 +02:00
Learath 97b6704a6b Add ban_region_range and sv_region_name 2020-08-19 14:07:55 +03:00
Learath 6a936602aa Add ban_region 2020-08-19 12:38:49 +03:00
Zwelf 2eb3d23ef4 Rewrite score using the new interface
delete file_score for now as it will be replaced by a sqlite backend
2020-08-03 12:58:52 +02:00
def 66c7bf8851 Tell why DNSBL isn't allowing to vote (fixes #2466) 2020-07-07 23:12:55 +02:00
def f15ac1d869 Fix uninitialised values in sixup differently (fixes #2421)
"./DDNet-Server shutdown" still works
2020-07-07 10:26:44 +02:00
Learath f327e5bc42 Log join type 2020-06-23 18:30:57 +03:00
Learath 91c44f1808 Sixup needs it's own maps 2020-06-20 01:00:45 +03:00
Learath 88ca573682 Serverinfo and Register support for 0.7
Co-authored-by: Tim Schumacher <tim@timakro.de>
2020-06-19 20:28:55 +03:00
Tim Schumacher 442148a194 Begin work on 0.7 support 2020-06-19 20:27:15 +03:00
Zwelf 62d56ca8e8 Make database init with create tables synchronous
Note: database init without creating tables behaves the same
2020-06-15 11:14:15 +02:00
bors[bot] 92fc95d742
Merge #2202
2202: Send DDNet version early in the connection process r=Learath2 a=heinrich5991

This gets rid of the problem that we don't know whether we should send
full snapshots to clients because they haven't told us about them being
DDNet yet.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-05-27 17:49:31 +00:00
heinrich5991 f339fea748
Merge pull request #2139 from edg-l/pr_add_upnp
Add UPnP support
2020-05-24 22:23:20 +02:00
Edgar 3569e174f2
refactor upnp code 2020-05-24 11:36:43 +02:00
heinrich5991 0d7872c79e Send DDNet version early in the connection process
This gets rid of the problem that we don't know whether we should send
full snapshots to clients because they haven't told us about them being
DDNet yet.
2020-05-22 17:58:41 +02:00
Learath 5e02bb5a23 Extend antibot interface
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-05-13 23:39:40 +03:00
oy 1b4131a7fd fixed faulty message id
(cherry picked from commit 9023796d27)
2020-01-19 21:30:12 +01:00
Learath2 c0b0f48d16 Oops 2019-11-03 20:58:35 +01:00
Learath2 c4d18118c1 Use automatic storage for the data 2019-11-03 18:31:05 +01:00
Learath2 52cca29cd9 Use a std::list, improve variable naming 2019-11-03 15:39:32 +01:00
Learath2 3d495a9936 Initialize variables 2019-11-03 01:53:50 +01:00
Learath2 79e4651d5b Only update serverinfo when needed 2019-11-03 01:07:10 +01:00
Learath2 7f0589bff7 Cache serverinfo responses 2019-11-03 00:33:30 +01:00
heinrich5991 f31e081bd4 Remove all checking for the gametype in the game
OK, maybe not actually remove because it is kept for fallback when the
new method isn't available.

The whole gametype parsing business had the same downsides as user agent
parsing on the web, hence I removed it while keeping behavior the same.

This allows servers to explicitly opt in or out of certain bug
workarounds and other client behavior. This increases the complexity of
different configurations that are available in the client (which is a
bad thing).
2019-06-14 00:28:59 +02:00
def 85bb376bdc sv_server_info_per_second, sv_van_conn_per_second: allow 0 to disable
Clean up code a bit, also allow larger values
2019-06-11 18:12:43 +02:00
def 25c54ef4db Implement show_ips to protect accidental leaking of IPs
Marks all sensitive data with <{ }> and then filters that out when
show_ips is not set.
2019-04-06 19:22:02 +02:00
12pm a7ef921e3f Add playerflags, dnsbl, and ips for non-admins in status 2019-04-03 15:07:05 +02:00
def 6f9cfd5af1 Increase MAX_PATH_LENGTH to support our own downloadedmaps names 2019-03-12 18:43:03 +01:00
ChillerDragon 3f8e9613f7 Fix style 2019-02-06 13:06:28 +01:00
ChillerDragon 03a20d6406 Add IServer::Ban 2019-02-04 23:09:14 +01:00
fokkonaut fe4426b008 fixed ddrace score (time score) 2019-01-14 08:01:20 +01:00
fokkonaut 0e842359ad Add DDRace Score NETMSG 2019-01-14 08:01:20 +01:00
Learath 1073b72965 Ignore DNSBL on "empty" servers. 2018-10-08 01:59:07 +03:00
Dennis Felsing 925f7b6325 Fix weird Windows compilation 2018-08-29 11:32:36 +02:00
Dennis Felsing a63f210a01 Fix segfault when deleting lock 2018-08-29 10:32:12 +02:00
Dennis Felsing c29a72eb70 Lock style 2018-08-27 16:36:36 +02:00
Dennis Felsing 4d634bb7fd Global lock for MySQL Connector's get_driver_instance
See note in https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-connecting.html

> get_mysql_driver_instance() calls get_driver_instance(), which is not
> thread-safe. Either avoid invoking these methods from within multiple
> threads at once, or surround the calls with a mutex to prevent
> simultaneous execution in multiple threads.
2018-08-27 09:42:37 +02:00
yangfl 81a39c229b Fix typo 2018-07-10 17:29:02 +08:00
heinrich5991 ca8fcc823c Use more secure hash function for map downloads
SHA256 was chosen because it is reasonably standard, the file names
don't explode in length (this rules out SHA512) and it is supported by
basically all versions of OpenSSL (this rules out SHA512/256 and SHA3).

The protocol is changed in a backward compatible way: The supporting
server sends the SHA256 corresponding to the map in the `MAP_DETAILS`
message prior to sending the `MAP_CHANGE` message. The client saves the
SHA256 obtained from the `MAP_DETAILS` message until the next
`MAP_CHANGE` message.

For servers not supporting this protocol, the client falls back to
simply opening maps like in the previous scheme.

Remove the `map_version` tool, it is not being used and would have been
a little bit effort to update.

Use the OpenSSL implementation of SHA256 if it is supported, otherwise
fall back to a public domain one.

Fix #1127.
2018-06-24 17:04:50 +02:00
heinrich5991 9454dfbff9 Remove superfluous parameter from CServer::NewClientNoAuthCallback
The `Reset` parameter was only ever set to true, at the only call site.
2018-05-09 23:50:25 +02:00
Dennis Felsing 5a53e4c54d Fix compilation 2018-04-03 10:27:19 +02:00
heinrich5991 11304661db Put name ban stuff into a separate file
Fix a bug when overlong names could be used to circumvent name bans. Add
tests for name bans.
2018-03-14 02:35:31 +01:00
Learath b7610901e3 Handle empty reason. Fix formatting 2018-03-12 23:29:46 +01:00
Learath c1a7c30f0f Add reason to name bans 2018-03-12 19:05:49 +01:00
heinrich5991 31a3e8d4c0 Add possibility to ban players by name
This uses the Unicode confusable data together with judging how close
two strings are by using the Levenshtein distance.

Adds the commands `name_ban`, `name_unban` and `name_bans`. Kicks
players who join using a banned name and doesn't allow ingame players to
change their names to the banned ones.
2018-03-09 20:30:27 +01:00
heinrich5991 61c7e9307d Don't log out on sv_rcon{,_mod,_helper}_password if not changed 2018-02-26 18:01:02 +01:00
heinrich5991 1c3dc8c316 Record rcon authentication stuff into teehistorian
This allows to check moderator actions after-the-fact.
2018-01-28 03:13:05 +01:00
heinrich5991 1a236dbefc Send connection information to external server 2017-12-20 16:56:34 +01:00
heinrich5991 94acac91a0 Overhauled job system
The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-23 15:47:38 +01:00
heinrich5991 8e778cd9ab Address pull request comments 2017-10-13 02:29:18 +02:00
heinrich5991 6ef9c8dbcd First working version of teehistorian
teehistorian records all inputs from the players as well as the player
positions in each tick. It stores this info in a highly compressible
output format (I've achived 5x compression using xz or bz2).
2017-09-20 02:16:11 +02:00
def 89ed22e8d8 Introduce ddnet-info.json
- Single json file containing all information for the client
- Fetched from https://info.ddnet.tw/info?name=deen
- Replaces versionsrv, news, ddnet-maps.json and ddnet-ranks.json
- Servers are sorted by most popular ones for respective player
- Always stays < 100 ms response time, compared to occasional 50 s for
  old ddnet-ranks.json
2017-09-03 17:42:04 +02:00
heinrich5991 1ebb4f89a6 Reopen: Add a flag for rcon login via username (#800)
This uses an extended protocol message to signal that rcon
authentication might require a username, allowing the client to enable
the username prompt.

Add a forgotten logout on key update
2017-07-24 21:43:55 +02:00
eeeee 0497cdd49d stop casting auth state to bool 2017-06-08 13:03:44 -07:00
eeeee 9c5ade24da remove ConDnsblStatus copypasta 2017-06-07 11:04:04 +02:00
eeeee 9b6699d3b8 remove casts to CServer
improving encapsulation by going through the interface instead of including engine/server/server.h
2017-06-05 20:51:12 -07:00
heinrich5991 5ae37e6c72 Add protocol extension with UUIDs
This system can easily be extended by independent authors without
collisions, something the old system with plain increasing integers did
not allow.

Do this by utilizing the previously unused message code `NETMSG_NULL`
which has a value of 0.

This works for engine and game messages, snapshot items and events.
2017-05-25 00:52:43 +02:00
def f4112e3bcb Revert "Tees must be teamed up before loading"
This reverts commit d29f2306ef.
2017-05-14 22:36:44 +02:00
Learath d29f2306ef Tees must be teamed up before loading 2017-04-11 21:18:26 +02:00
heinrich5991 1d81d56850 Introduce new, vanilla-compatible server info protocol
This means that we have a reliable and fast way to query for extended info,
while also not wasting network bandwidth.

The protocol is designed to be extensible, there's four bytes space for
encoding more request types (currently zeroed), and there's one string in each
response packet and one string for each player available (currently the empty
string).

The protocol itself has no problems with more than 64 players, although the
current client implementation will drop the player info after the 64th player,
because it uses a static array for storage.

Also fixes #130, the player list is just sorted each time new player info
arrives.
2017-03-29 12:56:13 +02:00
necropotame b8e4e5beea Fix style in several places 2017-03-22 19:45:14 +01:00
heinrich5991 c1e826e853 Fix key slot indices after removing a key 2017-03-06 18:02:19 +01:00
Learath2 95bb9894a7 Get rid of pw generation in CServer, Err out in CAuthManager instead 2017-03-04 23:16:02 +03:00
Learath2 b7cbaedea0 New auth system for rcon 2017-03-02 18:16:29 +03:00
heinrich5991 b510db9ee9 Add the VITAL flag to fastdownload packets
This lets 0.6.4 clients connect to DDNet servers again. Instead of doing
our own resend logic, just always send `sv_map_window` packets ahead and
let the Teeworlds network deal with possible resends.
2016-11-18 15:12:48 +01:00
east c6efc85a80 dnsbl_status added 2016-09-05 14:05:07 +02:00
east 678a69bf5b basic DNSBL implementation 2016-09-05 11:38:11 +02:00
H-M-H e351080dd3 removed double semicolons 2016-05-04 00:24:54 +02:00
H-M-H c9e65c7931 Merge branch 'master' into sqlmasters 2016-05-03 23:07:24 +02:00
def 21ac41bfae Clean up fifo console 2016-05-02 23:36:21 +02:00
def 91df0a2af0 Remove hacky security against rcon spoofing because we have a better one now 2016-02-22 19:54:45 +01:00
H-M-H 1314085928 restructured sqlconnection
reading from and writing to several different servers is now possible
TODO:
-handle Exceptions properly (try another sqlserver)
-if everything fails while writing write the insert to a file
2016-02-20 15:33:35 +01:00
H-M-H 7199ae3f22 ConAddSqlMaster will not block the main thread anymore 2016-02-20 15:33:35 +01:00
H-M-H 15f2e07c48 moved sqlserver stuff into CServer-class
as sqlconnections should not last only
until next mapreload
2016-02-20 15:33:35 +01:00
heinrich5991 b29a733c4f Add DoS protection to server info requests
Only allow 10 requests per second before falling back to smaller server
info responses.
2016-01-22 16:42:46 +01:00
Tim Schumacher d99660f20e Merge pull request #356 from H-M-H/helper_pw
Implemented Helper accesslevel
2015-10-27 02:18:00 +01:00
H-M-H cd6c297cb0 removed some code duplication and updated autoexec_server.cfg 2015-10-27 00:46:28 +01:00
H-M-H 0e532adb67 Implemented Helper accesslevel
basically just copied everything from moderator-accesslevel implementation

note however that mod_command changed to access_level
2015-10-23 04:21:07 +02:00
timgame 7fafd2db2f added sv_reload_when_empty 2015-10-22 17:27:30 +02:00
east cf9e1373d7 correctly reset client 2015-08-23 17:51:28 +02:00
east c47697bdef session rejoin 2015-08-23 17:01:01 +02:00
east d1382349f5 vanilla token handshake implemented 2015-08-14 18:30:49 +02:00