(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
authortruelight
Mon, 13 Dec 2004 17:47:21 +0000
changeset 629 ce914eb4023d
parent 628 717b50d76e4b
child 630 fd3c36132342
(svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
-Add: [Network] Add ip-bind ('set server_bind_ip <ip>' in console or use
scripts/pre_dedicated.scr)
console_cmds.c
network.c
network.h
network_udp.c
scripts/pre_dedicated.scr.example
scripts/pre_server.scr.example
scripts/readme.txt
settings.c
settings_gui.c
--- a/console_cmds.c	Mon Dec 13 17:07:32 2004 +0000
+++ b/console_cmds.c	Mon Dec 13 17:47:21 2004 +0000
@@ -657,8 +657,8 @@
 		return NULL;
 	}
 
-	// setting the server name
-	if (strcmp(argv[1],"port") == 0) {
+	// setting the server port
+	if (strcmp(argv[1],"server_port") == 0) {
 		if (argc == 3 && atoi(argv[2]) != 0) {
 			_network_server_port = atoi(argv[2]);
 			IConsolePrintF(_iconsole_color_warning, "Server-port changed to '%d'", _network_server_port);
@@ -670,7 +670,22 @@
 		return NULL;
 	}
 
-#endif
+	// setting the server ip
+	if (strcmp(argv[1],"server_bind_ip") == 0 || strcmp(argv[1],"server_ip_bind") == 0 ||
+			strcmp(argv[1],"server_ip") == 0 || strcmp(argv[1],"server_bind") == 0) {
+		if (argc == 3) {
+			_network_server_bind_ip = inet_addr(argv[2]);
+			snprintf(_network_server_bind_ip_host, sizeof(_network_server_bind_ip_host), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
+			IConsolePrintF(_iconsole_color_warning, "Server-bind-ip changed to '%s'", _network_server_bind_ip_host);
+			IConsolePrintF(_iconsole_color_warning, "Changes will take effect the next time you start a server.");
+		} else {
+			IConsolePrintF(_iconsole_color_default, "Current server-bind-ip is '%s'", _network_server_bind_ip_host);
+			IConsolePrint(_iconsole_color_warning, "Usage: set server_bind_ip <ip>.");
+		}
+		return NULL;
+	}
+
+#endif /* ENABLE_NETWORK */
 
 	// Patch-options
 	if (strcmp(argv[1],"patch") == 0) {
@@ -688,7 +703,17 @@
 	}
 
 
-	IConsolePrintF(_iconsole_color_error,"Unknown setting");
+	IConsolePrint(_iconsole_color_error, "Unknown setting");
+	IConsolePrint(_iconsole_color_error, "Known settings are:");
+#ifdef ENABLE_NETWORK
+	IConsolePrint(_iconsole_color_error, " - server_pw \"<password>\"");
+	IConsolePrint(_iconsole_color_error, " - company_pw \"<password>\"");
+	IConsolePrint(_iconsole_color_error, " - name \"<playername>\"");
+	IConsolePrint(_iconsole_color_error, " - servername \"<name>\"");
+	IConsolePrint(_iconsole_color_error, " - server_port <port>");
+	IConsolePrint(_iconsole_color_error, " - server_bind_ip <ip>");
+#endif /* ENABLE_NETWORK */
+	IConsolePrint(_iconsole_color_error, " - patch <patch_name> [<value>]");
 
 	return NULL;
 }
--- a/network.c	Mon Dec 13 17:07:32 2004 +0000
+++ b/network.c	Mon Dec 13 17:47:21 2004 +0000
@@ -623,7 +623,7 @@
 
 	port = _network_server_port;
 
-	DEBUG(net, 1) ("[NET] Listening on port %d", port);
+	DEBUG(net, 1) ("[NET] Listening on %s:%d", _network_server_bind_ip_host, port);
 
 	ls = socket(AF_INET, SOCK_STREAM, 0);
 	if (ls == INVALID_SOCKET) {
@@ -652,7 +652,7 @@
 	}
 
 	sin.sin_family = AF_INET;
-	sin.sin_addr.s_addr = 0;
+	sin.sin_addr.s_addr = _network_server_bind_ip;
 	sin.sin_port = htons(port);
 
 	if (bind(ls, (struct sockaddr*)&sin, sizeof(sin)) != 0) {
@@ -841,13 +841,17 @@
 {
 	if (!_network_available) return false;
 
+	/* Call the pre-scripts */
+	IConsoleCmdExec("exec scripts/pre_server.scr 0");
+	if (_network_dedicated) IConsoleCmdExec("exec scripts/pre_dedicated.scr 0");
+
 	NetworkInitialize();
 	if (!NetworkListen())
 		return false;
 
 	// Try to start UDP-server
 	_network_udp_server = true;
-	_network_udp_server = NetworkUDPListen(0, _network_server_port);
+	_network_udp_server = NetworkUDPListen(_network_server_bind_ip, _network_server_port);
 
 	_network_server = true;
 	_networking = true;
@@ -1157,6 +1161,11 @@
 	_network_available = true;
 	_network_dedicated = false;
 
+	/* Load the ip from the openttd.cfg */
+	_network_server_bind_ip = inet_addr(_network_server_bind_ip_host);
+	/* And put the data back in it in case it was an invalid ip */
+	snprintf(_network_server_bind_ip_host, sizeof(_network_server_bind_ip_host), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
+
 	/* Generate an unique id when there is none yet */
 	if (_network_unique_id[0] == '\0')
 		NetworkGenerateUniqueId();
--- a/network.h	Mon Dec 13 17:07:32 2004 +0000
+++ b/network.h	Mon Dec 13 17:47:21 2004 +0000
@@ -138,6 +138,11 @@
 VARDEF uint16 _network_lobby_company_count;
 
 VARDEF uint _network_server_port;
+/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
+    bind_ip_host, and bind_ip the numeric value, because we want a nice number
+    in the openttd.cfg, but we wants to use the uint32 internally.. */
+VARDEF uint32 _network_server_bind_ip;
+VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
 VARDEF bool _is_network_server; // Does this client wants to be a network-server?
 VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
 
--- a/network_udp.c	Mon Dec 13 17:07:32 2004 +0000
+++ b/network_udp.c	Mon Dec 13 17:47:21 2004 +0000
@@ -182,7 +182,7 @@
 	sin.sin_port = htons(port);
 
 	if (bind(udp, (struct sockaddr*)&sin, sizeof(sin)) != 0) {
-		DEBUG(net, 1) ("[NET][UDP] error: bind failed on port %i", port);
+		DEBUG(net, 1) ("[NET][UDP] error: bind failed on %s:%i", inet_ntoa(*(struct in_addr *)&host), port);
 		return false;
 	}
 
@@ -200,7 +200,7 @@
 	else
 		_udp_client_socket = udp;
 
-	DEBUG(net, 1)("[NET][UDP] Listening on port %d", port);
+	DEBUG(net, 1)("[NET][UDP] Listening on port %s:%d", inet_ntoa(*(struct in_addr *)&host), port);
 
 	return true;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/pre_dedicated.scr.example	Mon Dec 13 17:47:21 2004 +0000
@@ -0,0 +1,2 @@
+set server_ip 0.0.0.0
+set server_port 3979
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/pre_server.scr.example	Mon Dec 13 17:47:21 2004 +0000
@@ -0,0 +1,1 @@
+set server_port 3979
--- a/scripts/readme.txt	Mon Dec 13 17:07:32 2004 +0000
+++ b/scripts/readme.txt	Mon Dec 13 17:47:21 2004 +0000
@@ -6,6 +6,8 @@
  - 'on_client.scr' is executed when you join a server as client
  - 'on_server.scr' is executed when you start a server / dedicated server
  - 'on_dedicated.scr' is additionally executed when you start a dedicated server
+ - 'pre_server.scr' is executed before the server is started
+ - 'pre_dedeicated.scr' is additionally executed when you start a dedicated server
 
 For examples how a script can look, check the .example examples.
 
--- a/settings.c	Mon Dec 13 17:07:32 2004 +0000
+++ b/settings.c	Mon Dec 13 17:47:21 2004 +0000
@@ -725,6 +725,7 @@
 static const SettingDesc network_settings[] = {
 	{"sync_freq",			SDT_UINT16 | SDT_NOSAVE,	(void*)100,			&_network_sync_freq,		NULL},
 	{"frame_freq",			SDT_UINT8 | SDT_NOSAVE,	(void*)0,			&_network_frame_freq,		NULL},
+	{"server_bind_ip",		SDT_STRINGBUF | (lengthof(_network_server_bind_ip_host) << 16),	NULL,	&_network_server_bind_ip_host,	NULL},
 	{"server_port",		SDT_UINT,	(void*)NETWORK_DEFAULT_PORT,	&_network_server_port,	NULL},
 	{"player_name",		SDT_STRINGBUF | (lengthof(_network_player_name) << 16), NULL, &_network_player_name, NULL},
 	{"server_password",		SDT_STRINGBUF | (lengthof(_network_game_info.server_password) << 16), NULL, &_network_game_info.server_password, NULL},
--- a/settings_gui.c	Mon Dec 13 17:07:32 2004 +0000
+++ b/settings_gui.c	Mon Dec 13 17:47:21 2004 +0000
@@ -1005,7 +1005,7 @@
 
 	/* We did not found the patch setting */
 	if (!found) {
-		IConsolePrintF(_iconsole_color_warning, "'%s' is an unkown patch settings", name);
+		IConsolePrintF(_iconsole_color_warning, "'%s' is an unkown patch setting", name);
 		return;
 	}
 
@@ -1063,7 +1063,7 @@
 
 	/* We did not found the patch setting */
 	if (!found) {
-		IConsolePrintF(_iconsole_color_warning, "'%s' is an unkown patch settings", name);
+		IConsolePrintF(_iconsole_color_warning, "'%s' is an unkown patch setting", name);
 		return;
 	}