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 "

\n"; echo "Name: ".$user[Murmur_UserInfo::UserName]."
\n"; echo "\n"; echo "id()."\" />\n"; echo "\n"; echo "Email:
\n"; echo "New password:
\n"; echo "\n"; echo "

\n"; echo "
\n"; } } echo "

Registered User List

\n"; echo "
\n"; echo "

\n"; echo "id()."\" />\n"; echo "New User:"; echo ""; echo "User Password:"; echo ""; echo "\n"; echo "

\n"; echo "
\n"; echo "\n"; echo "\n"; $users = $server->getRegisteredUsers(""); foreach($users as $id=>$name) { $u = $server->getRegistration($id); echo "\n"; } echo "
UserNameEmail
$name $id".$u[Murmur_UserInfo::UserEmail].""; echo "id()."&uid=".$id."\">[Edit] "; echo "id()."&deleteplayer=".$id."\">[Unregister] "; 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"; echo "
\n"; echo "id()."\" />\n"; echo "\n"; echo "
\n"; echo "\n"; foreach($confitems as $key=>$desc) { if (! isset($confbig[$key])) { echo "\n"; } else { echo ""; echo "\n"; } } echo "
DescriptionDefaultValue
$desc".htmlspecialchars($default[$key]).""; echo ""; echo "
$desc".htmlspecialchars($default[$key])."
 "; echo "
\n"; echo "
\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 "\n"; $channels = $s->getChannels(); $players = $s->getUsers(); foreach($players as $pid => $state) { $chan = $channels[$state->channel]; echo "\n"; } echo "
NameChannelActions
".$state->name."".$chan->name.""; echo "session\">[Kick]"; echo "
\n"; } } } catch (Ice_Exception $ex) { echo "

\n

\n";
  print_r($ex);
  echo "
\n

\n"; } ?>