GNET on your own server

Blitz3D Forums/Blitz3D Programming/GNET on your own server

Here's mine Halo ... works for me on the Leadfoot server ... Make sure you have phpMyAdmin and that the table is set up correctly. The t_time field must be of type datetime and the other fields should be varchars.

<?php

//Assumes DB already open.

function ping(){
	global $ip;

	echo "$ip\n";
	exit();
}

//return a list of all servers
function list_servers(){

	$res=mysql_query( "select game,server,ip from gnet_servers order by t_time desc" );
	while( $row=mysql_fetch_row($res) ){
		echo( "$row[0]\n" );
		echo( "$row[1]\n" );
		echo( "$row[2]\n" );
	}
	echo "\n";
	exit();
}

//add a server
function add_server(){
	global $ip,$game,$server;

	$err="ERROR\n";
	if( $game ){
		if( !$server ) $server="$game@$ip";
		$res=mysql_query( "select count(*) from gnet_servers where game='$game' and ip='$ip'" );
		$row=mysql_fetch_row( $res );
		if( $row[0]==0 ){
			mysql_query( "insert into gnet_servers (game,server,ip,t_time) values ('$game','$server','$ip',now())" );
			$err="OK\n";
		}
	}
	echo $err;
	exit();
}

//refresh a server
function ref_server(){
	global $ip,$game,$server;

	$err="ERROR\n";
	if( $game ){
		if( !$server ) $server="$game@$ip";
		$res=mysql_query( "select count(*) from gnet_servers where game='$game' and ip='$ip'" );
		$row=mysql_fetch_row( $res );
		if( $row[0]==1 ){
			mysql_query( "update gnet_servers set server='$server',t_time=now() where game='$game' and ip='$ip'" );
			$err="OK\n";
		}
	}
	echo $err;
	exit();
}

//remove a server
function rem_server(){
	global $ip,$game,$server;

	$err="ERROR\n";
	if( $game ){
		if( !$server ) $server="$game@$ip";
		$res=mysql_query( "select count(*) from gnet_servers where game='$game' and ip='$ip'" );
		$row=mysql_fetch_row( $res );
		if( $row[0]==1 ){
			mysql_query( "delete from gnet_servers where game='$game' and ip='$ip'" );
			$err="OK\n";
		}
	}
	echo $err;
	exit();
}


$link = mysql_connect("mysql.fatcow.com", "name", "password");

$db_selected = mysql_select_db("name", $link); 

//setup some useful globals
$ip=$_SERVER["REMOTE_ADDR"];
$opt=array_key_exists("opt",$_GET) ? $_GET["opt"] : "";
$game=array_key_exists("game",$_GET) ? $_GET["game"] : "";
$server=array_key_exists("server",$_GET) ? $_GET["server"] : "";

//delete 'old' servers
mysql_query( "delete from gnet_servers where time_to_sec(now())-time_to_sec(t_time)>300" );

//begin header...(not sure about the no-cache bit!)
header( "content-type: text/html\ncache-control: no-cache\n\n" );

switch( $opt ){
case "add":add_server();break;
case "ref":ref_server();break;
case "rem":rem_server();break;
case "list":list_servers();break;
case "ping":ping();break;
default:echo "ERROR\n";
}

exit();

?>