mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
197 lines
7.4 KiB
PHP
197 lines
7.4 KiB
PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<title>Userlist</title>
|
|
</head>
|
|
<body>
|
|
<?php
|
|
|
|
Ice_loadProfile();
|
|
|
|
if ($argc > 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($_REQUEST['delserver'] + 0)->delete();
|
|
} else if (! is_null($_REQUEST['stop'])) {
|
|
$meta->getServer($_REQUEST['stop'] + 0)->stop();
|
|
} else if (! is_null($_REQUEST['start'])) {
|
|
$meta->getServer($_REQUEST['start'] + 0)->start();
|
|
} else if (! is_null($_REQUEST['action'])) {
|
|
$server = $meta->getServer($_REQUEST['action'] + 0);
|
|
if (! is_null($_REQUEST['kick'])) {
|
|
$server->kickPlayer($_REQUEST['kick'] + 0, "Mushroom");
|
|
}
|
|
} else if (! is_null($_REQUEST['uedit'])) {
|
|
$server = $meta->getServer($_REQUEST['uedit'] + 0);
|
|
if (isset($_REQUEST['newplayer'])) {
|
|
$_REQUEST['uid'] = $server->registerPlayer($_REQUEST['newplayer']);
|
|
}
|
|
if (! is_null($_REQUEST['deleteplayer'])) {
|
|
$server->unregisterPlayer($_REQUEST['deleteplayer'] + 0);
|
|
}
|
|
if (! is_null($_REQUEST['uid'])) {
|
|
$user = $server->getRegistration($_REQUEST['uid'] + 0);
|
|
if (! is_null($_REQUEST['set'])) {
|
|
$user->email = $_REQUEST['email'];
|
|
$user->pw = $_REQUEST['pw'];
|
|
$server->updateRegistration($user);
|
|
} else {
|
|
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
|
|
echo "<p>\n";
|
|
echo "<b>Name:</b> $user->name<br />\n";
|
|
echo "<input type=\"hidden\" name=\"set\" value=\"1\" />\n";
|
|
echo "<input type=\"hidden\" name=\"uedit\" value=\"".$server->id()."\" />\n";
|
|
echo "<input type=\"hidden\" name=\"uid\" value=\"$user->playerid\" />\n";
|
|
echo "<b>Email:</b> <input type=\"text\" name=\"email\" size=\"30\" maxlength=\"128\" value=\"".htmlspecialchars($user->email)."\" /><br />\n";
|
|
echo "<b>New password:</b> <input type=\"password\" name=\"pw\" size=\"30\" maxlength=\"128\" /><br />\n";
|
|
echo "<input type=\"submit\" />\n";
|
|
echo "</p>\n";
|
|
echo "</form>\n";
|
|
}
|
|
}
|
|
echo "<h1>Registered User List</h1>\n";
|
|
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
|
|
echo "<p>\n";
|
|
echo "<input type=\"hidden\" name=\"uedit\" value=\"".$server->id()."\" />\n";
|
|
echo "<b>New User:</b>";
|
|
echo "<input type=\"text\" name=\"newplayer\" size=\"30\" maxlength=\"60\" />";
|
|
echo "<input type=\"submit\" />\n";
|
|
echo "</p>\n";
|
|
echo "</form>\n";
|
|
echo "<table>\n";
|
|
echo "<tr><th>UserName</th><th>Email</th><th></th></tr>\n";
|
|
$users = $server->getRegisteredPlayers("");
|
|
usort($users, "ucmp");
|
|
foreach($users as $u) {
|
|
echo "<tr><td>$u->name</td><td>".$u->email."</td><td>";
|
|
echo "<a href=\"?uedit=".$server->id()."&uid=".$u->playerid."\">[Edit]</a> ";
|
|
echo "<a href=\"?uedit=".$server->id()."&deleteplayer=".$u->playerid."\">[Unregister]</a> ";
|
|
echo "</td></tr>\n";
|
|
}
|
|
echo "</table>\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 "<h1>Server Configuration</h1>\n";
|
|
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
|
|
echo "<div>\n";
|
|
echo "<input type=\"hidden\" name=\"server\" value=\"".$server->id()."\" />\n";
|
|
echo "<input type=\"hidden\" name=\"set\" value=\"1\" />\n";
|
|
echo "</div>\n";
|
|
echo "<table><tr><th>Description</th><th>Default</th><th>Value</th></tr>\n";
|
|
foreach($confitems as $key=>$desc) {
|
|
if (! isset($confbig[$key])) {
|
|
echo "<tr><td>$desc</td><td>".htmlspecialchars($default[$key])."</td><td>";
|
|
echo "<input type=\"text\" name=\"$key\" size=\"30\" maxlength=\"64000\" value=\"".htmlspecialchars($conf[$key])."\" />";
|
|
echo "</td></tr>\n";
|
|
} else {
|
|
echo "<tr><td>$desc</td><td colspan=\"2\">".htmlspecialchars($default[$key])."</td></tr>";
|
|
echo "<tr><td> </td><td colspan=\"2\"><textarea rows=\"5\" cols=\"80\" name=\"$key\">".htmlspecialchars($conf[$key])."</textarea>";
|
|
echo "</td></tr>\n";
|
|
}
|
|
}
|
|
echo "</table>\n";
|
|
echo "<div><input type=\"submit\" /></div>\n";
|
|
echo "</form>\n";
|
|
}
|
|
}
|
|
|
|
$servers = $meta->getAllServers();
|
|
$booted = $meta->getBootedServers();
|
|
|
|
echo "<h1>Murmur ICE Interface demo</h1>\n";
|
|
echo "<p><b>Warning:</b> 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. <b>Do not run it on a production server</b>.\n";
|
|
echo "</p>\n";
|
|
echo "<p>\n";
|
|
echo "<a href=\"?newserver\">[New Server]</a>\n";
|
|
echo "</p>\n";
|
|
foreach($servers as $s) {
|
|
$name = $s->getConf("registername");
|
|
if (! $name) {
|
|
$name = $default["registername"];
|
|
}
|
|
$id = $s->id();
|
|
echo "<h1>SERVER #" . $id . " " .$name ."</h1>\n";
|
|
echo "<p>\n";
|
|
echo "<a href=\"?server=".$id."\">[Config]</a> ";
|
|
if (in_array($s, $booted)) {
|
|
echo "<a href=\"?uedit=".$id."\">[Manage Users]</a> ";
|
|
echo "<a href=\"?stop=".$id."\">[Stop]</a> ";
|
|
} else {
|
|
echo "<a href=\"?delserver=".$id."\">[Delete Server]</a> ";
|
|
echo "<a href=\"?start=".$id."\">[Start]</a> ";
|
|
}
|
|
echo "</p>\n";
|
|
if (in_array($s, $booted)) {
|
|
echo "<table><tr><th>Name</th><th>Channel</th><th>Actions</th></tr>\n";
|
|
|
|
$channels = $s->getChannels();
|
|
$players = $s->getPlayers();
|
|
|
|
foreach($players as $pid => $state) {
|
|
$chan = $channels[$state->channel];
|
|
echo "<tr><td>".$state->name."</td><td>".$chan->name."</td><td>";
|
|
echo "<a href=\"?action=".$id."&kick=$state->session\">[Kick]</a>";
|
|
echo "</td></tr>\n";
|
|
}
|
|
echo "</table>\n";
|
|
}
|
|
}
|
|
} catch (Ice_Exception $ex) {
|
|
echo "<p>\n<pre>\n";
|
|
print_r($ex);
|
|
echo "</pre>\n</p>\n";
|
|
}
|
|
|
|
?>
|
|
</body>
|
|
</html>
|