Skip to content

Commit 6e00c8b

Browse files
committed
Replace patch with new variable serverpublicip
1 parent a59f7a5 commit 6e00c8b

File tree

7 files changed

+30
-28
lines changed

7 files changed

+30
-28
lines changed

doc/examples/servinit.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ if (= $rehashing 0) [
2727
// servertype 3 // type of server, 1 = private (does not register with masterserver), 2 = public, 3 = dedicated
2828
// serveruprate 0 // maximum upload speed; cmdline: -suN
2929
// serverip "127.0.0.1" // host which server binds to; cmdline: -siN
30+
// serverpublicip "127.0.0.1" // host the server advertises to the master server (useful if behind NAT, e.g., in Docker); cmdline: -sjN
3031
// servermaster "master.blue-nebula.org" // host server tries to use as master by default; cmdline: -smS
3132
// serverport 28801 // port which server binds to (you must open this port [UDP] and this plus one, default 28801 and 28802); cmdline: -spN
3233
// servermasterport 28800 // master server port which server *connects* to; cmdline: -saN

docker/Dockerfile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,8 @@ COPY data/ /blue-nebula/data
1414

1515
COPY CMakeLists.txt /blue-nebula/
1616
COPY README.md /blue-nebula/
17-
COPY docker/serverip.patch /serverip.patch
1817

19-
RUN git apply < /serverip.patch && \
20-
ls -al && \
21-
mkdir build && \
18+
RUN mkdir build && \
2219
cd build && \
2320
# TODO: server-only build configuration
2421
cmake .. -DCMAKE_BUILD_TYPE=Release -G Ninja -DCMAKE_INSTALL_PREFIX=/blue-nebula/install -DBUILD_CLIENT=OFF && \

docker/serverip.patch

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/engine/server.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ VAR(0, serveruprate, 0, 0, VAR_MAX);
275275
VAR(0, serverport, 1, SERVER_PORT, VAR_MAX);
276276
VAR(0, serverlanport, 0, LAN_PORT, VAR_MAX);
277277
SVAR(0, serverip, "");
278+
SVAR(0, serverpublicip, "");
278279

279280
bool filterword(char *src, const char *list)
280281
{
@@ -1415,10 +1416,22 @@ void changeservertype()
14151416
void setupserver()
14161417
{
14171418
server::changemap(load && *load ? load : NULL);
1418-
if(!servertype) return;
1419+
1420+
if (servertype <= 0) {
1421+
return;
1422+
}
1423+
14191424
setupmaster();
1425+
14201426
conoutf("loading server (%s:%d)..", *serverip ? serverip : "*", serverport);
1421-
if(setupserversockets() && verbose) conoutf("game server started");
1427+
if (*serverpublicip != '\0') {
1428+
conoutf("public server IP is %s", serverpublicip);
1429+
}
1430+
1431+
if (setupserversockets() && verbose) {
1432+
conoutf("game server started");
1433+
}
1434+
14221435
#ifndef STANDALONE
14231436
if(servertype >= 3) serverloop();
14241437
#endif
@@ -1470,6 +1483,7 @@ bool serveroption(char *opt)
14701483
{
14711484
case 'u': setvar("serveruprate", atoi(opt+3)); return true;
14721485
case 'i': setsvar("serverip", opt+3); return true;
1486+
case 'j': setsvar("serverpublicip", opt+3); return true;
14731487
case 'm': setsvar("servermaster", opt+3); return true;
14741488
case 'l': load = opt+3; return true;
14751489
case 's': setvar("servertype", atoi(opt+3)); return true;

src/game/auth.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,16 @@ namespace auth
438438
conoutf("Updating master server");
439439
// the position of the 0 was used to signalize support for the global stats system, which has been removed
440440
// to retain compatibility, we just send a 0, pretending it was simply disabled by the administrator
441-
requestmasterf("server %d %s %d %s 0 %s\n", serverport, *serverip ? serverip : "*", CUR_VERSION, escapestring(limitstring(G(serverdesc), MAXSDESCLEN+1)), escapestring(versionbranch));
441+
const char *advertisedIp;
442+
if (*serverpublicip != '\0') {
443+
advertisedIp = serverpublicip;
444+
} else if (*serverip != '\0') {
445+
advertisedIp = serverip;
446+
} else {
447+
advertisedIp = "*";
448+
}
449+
450+
requestmasterf("server %d %s %d %s 0 %s\n", serverport, advertisedIp, CUR_VERSION, escapestring(limitstring(G(serverdesc), MAXSDESCLEN+1)), escapestring(versionbranch));
442451
}
443452
reqserverauth();
444453
}

src/game/server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7321,6 +7321,7 @@ namespace server
73217321
{
73227322
case 'P': setsvar("adminpass", &arg[3]); return true;
73237323
case 'k': setsvar("serverpass", &arg[3]); return true;
7324+
case 'j': setsvar("serverpublicip", &arg[3]); return true;
73247325
default: break;
73257326
}
73267327
return false;

src/shared/iengine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ extern int verbose, curtime, lastmillis, totalmillis, timescale, paused;
66
extern uint totalsecs;
77
extern time_t clocktime, currenttime, clockoffset;
88
extern int servertype, serverport, serverlanport, servermasterport;
9-
extern char *servermaster, *serverip;
9+
extern char *servermaster, *serverip, *serverpublicip;
1010
#ifdef STANDALONE
1111
#define ifserver(x) if(x)
1212
#define ifnserver(x) if(x)

0 commit comments

Comments
 (0)