Commit graph

801 commits

Author SHA1 Message Date
Zwelf a808ad5463 Enhance SQL error reporting 2020-08-21 10:37:52 +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 961ad077fb Don't print MySQL password to console 2020-08-09 18:18:25 +02:00
Zwelf 5893913922 Clean up includes in sql backend 2020-08-09 17:54:25 +02:00
Zwelf 61ffd88f34 Reformulate #if not defined() because MSVC errors on this expression 2020-08-09 17:13:21 +02:00
Zwelf b2cf3cafc5 Implement dump_sqlserver 2020-08-03 16:37:50 +02:00
Zwelf 9e1979f561 Rename Database connect result from ERROR to FAILURE 2020-08-03 13:11:52 +02:00
Zwelf c6b1b08355 Database specific collate utf8 nocase
making and work
2020-08-03 12:58:52 +02:00
Zwelf d16bb5cc08 Make timestamps compatible with SQLite
works for `/mapinfo`, `/load`, `/save`, `/times`
2020-08-03 12:58:52 +02:00
Zwelf 044edbe42b Make storing teamrank compatible with SQLite 2020-08-03 12:58:52 +02:00
Zwelf e3a78a7a31 Add BindBlob and BindFloat function to IDbConnection interface 2020-08-03 12:58:52 +02:00
Zwelf 26a2c91235 Trying to reconnect when ongoing MySQL connection failed 2020-08-03 12:58:52 +02:00
Zwelf eb4d77f071 Make inserting ranks compatible with SQLite 2020-08-03 12:58:52 +02:00
Zwelf 17de42a947 Implement locking in SQLite 2020-08-03 12:58:52 +02:00
Zwelf 1677e1fed5 Gracefully shutdown database pool 2020-08-03 12:58:52 +02:00
Zwelf 00da45191c Make CREATE TABLE compatible with SQLite 2020-08-03 12:58:52 +02:00
Zwelf 452017a58b Move format string to CREATE TABLE into own file 2020-08-03 12:58:52 +02:00
Zwelf 2c5f892205 Apply suggestions from code review 2020-08-03 12:58:52 +02:00
Zwelf b898f8c7c2 Remove unused MySQL interface 2020-08-03 12:58:52 +02:00
Zwelf 7c31a15c93 Add SQLite interface 2020-08-03 12:58:52 +02: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
Zwelf 295ce95d64 Roughly define database pool interface 2020-08-03 12:58:52 +02:00
Zwelf d59cdf47b5 Define new database interface 2020-08-03 12:58:52 +02:00
def c8876b2c02 Fix legacy 64 player serverinfo, don't send duplicate packets (fixes #2495)
For legacy we sent the first packet once correctly, then the 2nd and 3rd
packet without the marker and token at the start, so they never worked.

For new 64 player serverinfo we sent all packets correctly but the 1st
packet twice.

Introduced in #1955.
2020-07-13 00:19:00 +02:00
def a34c72530b Some minor improvements to sv_port 0, make it default 2020-07-09 18:28:20 +02:00
MikiGamer f7eda384ea changes for auto port 2020-07-09 17:48:03 +02:00
MikiGamer beaadca6a9 switch, limited tries & sv_port 0 2020-07-09 17:47:30 +02:00
MikiGamer 6a87278c3d find available port 2020-07-09 17:46:22 +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
Zwelf 6be35cd4e7 Remove unused function 2020-07-03 20:13:51 +02:00
Learath 416cb37000 Send Sixup information to antibot 2020-07-01 21:09:58 +03:00
heinrich5991 358735aadb Revert "Don't run UpdateServerInfo if server isn't initialized yet"
This reverts commit e69f747e5f.

Fixes `shutdown` on the initial command line which is also used on CI.
2020-07-01 17:45:01 +02:00
def e69f747e5f Don't run UpdateServerInfo if server isn't initialized yet
or currently shutting down anyway. Fixes the first half of #2421
2020-06-30 18:33:22 +02:00
Learath 8d8f1d7208 Only SendChat to clients that exist. Initialize m_Sixup anyway 2020-06-30 18:58:44 +03:00
bors[bot] 1750bb09f7
Merge #2335 #2336 #2340 #2342 #2349
2335: Make it more clear that this is a sixup translation server r=heinrich5991 a=def-



2336: Set skill level for Sixup (fixes #2334) r=heinrich5991 a=def-



2340: Keeping multiple states consistent is hard (fixes #2315) r=heinrich5991 a=def-

let's go recount every time

2342: Don't forget video recorder fps setting r=heinrich5991 a=def-

after switching to non-videorecorder client

2349: Document which MySQL/MariaDB versions we require (fixes #2343) r=heinrich5991 a=def-



Co-authored-by: def <dennis@felsin9.de>
2020-06-24 14:37:53 +00:00
def 5b3b42b771 Make it more clear that this is a sixup translation server 2020-06-24 14:49:23 +02:00
def a8a2b41f3a Set skill level for Sixup (fixes #2334) 2020-06-23 22:47:29 +02:00
Learath f327e5bc42 Log join type 2020-06-23 18:30:57 +03:00
def 252cda2d49 Use str_comp instead of strcmp
error: ‘strcmp’ was not declared in this scope
2020-06-22 14:47:49 +02:00
Learath 28905c4659 Disable timeout for 0.7 clients 2020-06-20 19:52:23 +03:00
Learath 6db72b2388 Times are no longer negative in 0.7 2020-06-20 11:59:46 +03:00
Learath 91c44f1808 Sixup needs it's own maps 2020-06-20 01:00:45 +03:00
bors[bot] 5b4227fbba
Merge #2283
2283: teehistorian: Track whether clients join via the 0.7 protocol r=Learath2 a=heinrich5991



Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-06-19 20:31:40 +00:00
heinrich5991 e294da41ba teehistorian: Track whether clients join via the 0.7 protocol 2020-06-19 22:06:39 +02:00
Learath da68923ac3 Implement a switch for 0.7 compatibility 2020-06-19 22:08:41 +03:00
Learath aeb7ea2971 Don't forget that the client is Sixup 2020-06-19 20:28:55 +03:00
Learath 70ecf785bb Compatible version filter 2020-06-19 20:28:55 +03:00
Learath 9f71478099 Get Rcon working 2020-06-19 20:28:55 +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
Learath 9e2434c65d Better skin colors. Better game message translation 2020-06-19 20:28:55 +03:00
Learath 9dc1a0357a Get /spec working 2020-06-19 20:28:55 +03:00
Learath 03070d0567 Fix many issues 2020-06-19 20:28:52 +03:00
Learath 807c92f1a4 Generate the 0.7 protocol 2020-06-19 20:27:15 +03:00
Learath f7e9df7abf Move the rest of the translation to CServer 2020-06-19 20:27:15 +03:00
Learath b0e5a37fa9 Do message translation differently 2020-06-19 20:27:15 +03:00
Learath 5000b248bb Fix things 2020-06-19 20:27:15 +03:00
Tim Schumacher 442148a194 Begin work on 0.7 support 2020-06-19 20:27:15 +03:00
bors[bot] 6f8f606e05
Merge #2276
2276: Fix segmentation fault when creating sql tables failed r=heinrich5991 a=Zwelf

`GameServer()->OnShutdown(true);` (which would wait on running threads to exit)
wasn't called if an error occured in the server init. Therefore `CServer` was
freed before the init-thread finished executing, causing a use after free from
`CSqlConnector::ms_ppSqlReadServers` pointing to `CServer->m_apSqlReadServers`.

Fixes #2271 

Note that the server exits when creating tables failed. Since the tables are created by default, it has to be disabled explicitly (e.g. `add_sqlserver r teeworlds record teeworlds PASSWORD "localhost" 3306 0`) if the servers should start even when the database connection fails.

Co-authored-by: Zwelf <zwelf@strct.cc>
2020-06-18 19:23:00 +00:00
Zwelf f5ac6eea56 Fix segmentation fault when creating sql tables failed
`GameServer()->OnShutdown(true);` (which would wait on running threads to exit)
wasn't called if an error occured in the server init. Therefore `CServer` was
freed before the init-thread finished executing, causing a use after free from
`CSqlConnector::ms_ppSqlReadServers` pointing to `CServer->m_apSqlReadServers`.
2020-06-18 21:11:36 +02:00
def 882185e299 Make SaveID DEFAULT NULL 2020-06-18 10:32:58 +02:00
Zwelf f1b2ff086c Clean up thread safe SQL refactor 2020-06-17 21:15:07 +02:00
Zwelf ea31171873 Generate passphrase for save-code
* when none is given
* if the given save-code already exist
* if the database connection fails therefore it can't be checked if the save-code already exists

Using the short word list from eff:
https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases
2020-06-15 11:14:15 +02:00
Zwelf 528ca377ed Thread safe saving of team score 2020-06-15 11:14:15 +02: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
Zwelf 031ac52320 Thread safe /save 2020-06-15 11:14:15 +02:00
Zwelf 4152a1995e Add missing dependeny to sql string helper 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 850e4e84e4 Reserve bytes for the type and token 2020-05-18 21:13:15 +03:00
Learath 788fc8bb5f Update can happen when the gameserver doesn't exist 2020-05-18 16:17:06 +03:00
Learath 1426392ae7 Don't Destroy if we didn't Init 2020-05-16 23:10:42 +03:00
heinrich5991 457c4db964 Some antibot fixes 2020-05-16 00:39:17 +02:00
Learath eacc56059b Keep ticks going 2020-05-15 19:29:34 +03:00
Learath 5e02bb5a23 Extend antibot interface
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-05-13 23:39:40 +03:00
Ryozuki b647c1e978
Add UPnP support 2020-04-14 12:11:50 +02:00
bors[bot] 7a3ebd5948
Merge #2041
2041: Strip spaces in browser (server name) r=heinrich5991 a=ChillerDragon

before:
![image](https://user-images.githubusercontent.com/20344300/72688976-b45f1d00-3b0c-11ea-8920-5328c6d721f7.png)
after:
![image](https://user-images.githubusercontent.com/20344300/72688970-9db8c600-3b0c-11ea-8636-330218d75ca1.png)


Co-authored-by: KillaBilla <robomastermail@googlemail.com>
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-01-25 12:45:36 +00:00
bors[bot] 749929431a
Merge #2040
2040: fixed faulty message id r=heinrich5991 a=ChillerDragon

(cherry picked from commit 9023796d27)

Co-authored-by: oy <Tom_Adams@web.de>
2020-01-25 12:40:14 +00:00
12pm ec42291756 Allow filtering by name in status
Easier to find players when the server is full
2020-01-24 14:44:54 +01:00
KillaBilla ba1abac52f remove leading and trailing space from server name and forbit the use of multiple spaces
(cherry picked from commit a9cc1e8de2)
2020-01-19 22:28:19 +01:00
oy 1b4131a7fd fixed faulty message id
(cherry picked from commit 9023796d27)
2020-01-19 21:30:12 +01:00
Learath d2fad6c79a Fix demo bug 2020-01-03 12:13:40 +03:00
ChillerDragon 4a6a85124a Remove some unused includes 2019-12-14 10:20:42 +01:00
def 18e2232727 Add support to tell DDNet7 ranks apart from DDNet ones
Saves should not be loadable from one to the other.

Requires:
ALTER TABLE record_race ADD COLUMN DDNet7 BOOL DEFAULT FALSE AFTER GameID;
ALTER TABLE record_teamrace ADD COLUMN DDNet7 BOOL DEFAULT FALSE AFTER GameID;
ALTER TABLE record_saves ADD COLUMN DDNet7 BOOL DEFAULT FALSE AFTER Server;
2019-12-08 16:04:49 +01:00
Dennis Felsing 785ec3d345 Expire server info on connected/drop events 2019-11-04 15:45:55 +01:00
Learath2 c2bcd3bd4d Fix bug 2019-11-04 01:06:52 +01:00
bors[bot] 0de012572b
Merge #1955
1955: Cache serverinfo responses r=def- a=Learath2

I'm not sure I like it but it works

Co-authored-by: Learath2 <learath2@gmail.com>
2019-11-03 20:09:21 +00:00
Learath2 c0b0f48d16 Oops 2019-11-03 20:58:35 +01:00
def fdaafea6b5 Also init m_aClients[*].m_Latency
as reported by valgrind --tool=memcheck:

==376722== Conditional jump or move depends on uninitialised value(s)
==376722==    at 0x1CDBDB: int maximum<int>(int, int) (math.h:79)
==376722==    by 0x216A46: CPlayer::Tick() (player.cpp:174)
==376722==    by 0x1FB308: CGameContext::OnTick() (gamecontext.cpp:658)
==376722==    by 0x1C60AF: CServer::Run() (server.cpp:2046)
==376722==    by 0x1CB099: main (server.cpp:3040)
==376722==
==376722== Conditional jump or move depends on uninitialised value(s)
==376722==    at 0x183F27: int minimum<int>(int, int) (math.h:77)
==376722==    by 0x216A65: CPlayer::Tick() (player.cpp:175)
==376722==    by 0x1FB308: CGameContext::OnTick() (gamecontext.cpp:658)
==376722==    by 0x1C60AF: CServer::Run() (server.cpp:2046)
==376722==    by 0x1CB099: main (server.cpp:3040)
2019-11-03 18:54:25 +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
def cb738ffed0 Fix show_ips to show regular formatting (fixes #1873) 2019-08-01 20:24:30 +02:00
Learath 0bc3650356 Send DDNet capability flag 2019-07-29 14:18:40 +03:00
12pm c57fcf3ee7 Persist playerflags when using timeout protection 2019-07-26 01:39:53 +02:00