0) {
for($i=1;$i<$argc;$i++) {
parse_str($argv[$i], $tmp);
$_REQUEST=array_merge($_REQUEST, $tmp);
}
}
function ucmp($a, $b) {
if (($a->playerid == 0) || ($b->playerid == 0)) {
return ($a->playerid - $b->playerid);
}
return strcasecmp($a->name, $b->name);
}
$confitems = array();
$confbig = array();
$confitems['host']="IP Address to bind to";
$confitems['port']="Port to use";
$confitems['password']="Password for unregistered users";
$confitems['timeout']="Timeout before kicking dead connections";
$confitems['bandwidth']="Maximum bandwidth in bytes/sec";
$confitems['users']="Maximum number of users on server";
$confitems['welcometext']="Welcome message";
$confbig['welcometext']=1;
$confitems['registername']="Server Name";
$confitems['registerpassword']="Password for Global Server List";
$confitems['registerhostname']="Hostname for Global Server List";
$confitems['registerurl']="HTTP URL for Global Server List";
$confitems['certificate']="PEM Encoded SSL Certificate";
$confbig['certificate']=1;
$confitems['key']="PEM Encoded SSL Key";
$confbig['key']=1;
try {
$base = $ICE->stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502");
$meta = $base->ice_checkedCast("::Murmur::Meta");
$default = $meta->getDefaultConf();
if (! is_null($_REQUEST['newserver'])) {
$meta->newServer();
} else if (! is_null($_REQUEST['delserver'])) {
$meta->getServer((int)$_REQUEST['delserver'])->delete();
} else if (! is_null($_REQUEST['stop'])) {
$meta->getServer((int) $_REQUEST['stop'])->stop();
} else if (! is_null($_REQUEST['start'])) {
$meta->getServer((int) $_REQUEST['start'])->start();
} else if (! is_null($_REQUEST['action'])) {
$server = $meta->getServer((int) $_REQUEST['action']);
if (!is_null($_REQUEST['kick'])) {
$server->kickPlayer((int) $_REQUEST['kick'], "Mushroom");
}
} else if (! is_null($_REQUEST['uedit'])) {
$server = $meta->getServer((int) $_REQUEST['uedit']);
if (isset($_REQUEST['newplayer'])) {
$reg = array();
$reg[Murmur_UserInfo::UserName] = $_REQUEST['newplayer'];
if ($_REQUEST['password']) $reg[Murmur_UserInfo::UserPassword] = $_REQUEST['password']; // This line is added for password at user creation
$_REQUEST['uid'] = $server->registerUser($reg);
}
if (! is_null($_REQUEST['deleteplayer'])) {
$server->unregisterUser((int) $_REQUEST['deleteplayer']);
}
if (! is_null($_REQUEST['uid'])) {
$uid = (int) $_REQUEST['uid'];
$user = $server->getRegistration($uid);
if (! is_null($_REQUEST['set'])) {
$user[Murmur_UserInfo::UserEmail] = $_REQUEST['email'];
$user[Murmur_UserInfo::UserPassword] = $_REQUEST['pw'];
$server->updateRegistration($uid,$user);
} else {
echo "\n";
}
}
echo "Registered User List
\n";
echo "\n";
echo "\n";
} else if (! is_null($_REQUEST['server'])) {
$server = $meta->getServer($_REQUEST['server'] + 0);
if (! is_null($_REQUEST['set'])) {
foreach($confitems as $key=>$desc) {
$server->setConf($key, $_REQUEST[$key]);
}
} else {
$conf = $server->getAllConf();
$default['port'] += $server->id() - 1;
echo "Server Configuration
\n";
echo "\n";
}
}
$servers = $meta->getAllServers();
$booted = $meta->getBootedServers();
echo "Murmur ICE Interface demo
\n";
echo "Warning: This is not intended as a full management suite. It's an example. It has bugs. It has security holes. ";
echo "It might make precious body parts fall off. Do not run it on a production server.\n";
echo "
\n";
echo "\n";
echo "[New Server]\n";
echo "
\n";
foreach($servers as $s) {
$name = $s->getConf("registername");
if (! $name) {
$name = $default["registername"];
}
$id = $s->id();
echo "SERVER #" . $id . " " .$name ."
\n";
echo "\n";
echo "[Config] ";
if (in_array($s, $booted)) {
echo "[Manage Users] ";
echo "[Stop] ";
} else {
echo "[Delete Server] ";
echo "[Start] ";
}
echo "
\n";
if (in_array($s, $booted)) {
echo "Name | Channel | Actions |
\n";
$channels = $s->getChannels();
$players = $s->getUsers();
foreach($players as $pid => $state) {
$chan = $channels[$state->channel];
echo "".$state->name." | ".$chan->name." | ";
echo "session\">[Kick]";
echo " |
\n";
}
echo "
\n";
}
}
} catch (Ice_Exception $ex) {
echo "\n
\n";
print_r($ex);
echo "
\n\n";
}
?>