[bf1942] Failure to open ports

ScratchMonkey ScratchMonkey at SewingWitch.com
Thu Jan 2 11:00:35 EST 2003


--On Thursday, January 02, 2003 9:01 AM -0600 "Rust, Robert" 
<RustRobert at stanleygroup.com> wrote:

> How about sharing the php code...that looks interesting..

Use the exec function. In the PHP file, you pass the service (eg. "bf1942") 
and operation (eg. "restart") as HTTP params and use something like this:

<?
$command = "/usr/bin/sudo /sbin/service " . $_GET['service'] . " " . 
$_GET['operation'];
print($command . "<br>");
exec($command, $sudo_command_array, $returnvar);
while (list ($key, $val) = each ($sudo_command_array)) {
        print($val . "<br>");
}
?>

You should first run the script arguments through a filter that limits them 
to alphanumerics, so a malicious user can't get the script to do something 
naughty with shell escapes.

In /etc/sudoers have something like this:

User_Alias      GAMESERVER = apache
GAMESERVER      ALL = (root) NOPASSWD: /sbin/service bf1942 *

This allows the PHP script to run the command to restart the game server.



More information about the Bf1942 mailing list