PHP RCON, Ищу php скрипт для уравления Remote Console |
|
Здравствуйте, гость ( Вход | Регистрация )
PHP RCON, Ищу php скрипт для уравления Remote Console |
6.11.2006, 19:30
Сообщение
#1
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Столкнулся с одной проблемой. Камп-сервер с выделенкой, проведенной до роутера. Я администрирую сервер с bf2. Но не могу использовать bf2cc или какие-либо альтернативы, поскольку на роутере стоит запрет (ради безопасности) на порт 4717 (используемый RCON). Мейн админ сказал, что если я найду скрипт на php, позволяющий управлять консолью, то он поставит его на сайт и мне больше не придется грузить игру только для смены карты. Просто у моих коллег, правда по контре, стоят подобные скрипты и они легко управляют сервером с сайта.
Есть ли подобная система на bf2, или я обречен постоянно загружать ботву ради смены карты? :no: |
|
|
6.11.2006, 20:05
Сообщение
#2
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
6.11.2006, 20:08
Сообщение
#3
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
у них контровские - я же написал.
|
|
|
6.11.2006, 23:49
Сообщение
#4
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Столкнулся с одной проблемой. Камп-сервер с выделенкой, проведенной до роутера. Я администрирую сервер с bf2. Но не могу использовать bf2cc или какие-либо альтернативы, поскольку на роутере стоит запрет (ради безопасности) на порт 4717 (используемый RCON). Мейн админ сказал, что если я найду скрипт на php, позволяющий управлять консолью, то он поставит его на сайт и мне больше не придется грузить игру только для смены карты. Просто у моих коллег, правда по контре, стоят подобные скрипты и они легко управляют сервером с сайта. Есть ли подобная система на bf2, или я обречен постоянно загружать ботву ради смены карты? :no: твоя проблема не понятна ;) я тоже администрирую сервак, правда он у меня не в канаде, а в моей комнате находится, но на отдельном компе, на который я захожу по ssh. на компе линукс RHEL4. bf2cc имхо ненужная весчь. да и хороший администратор - это то, который не парит мозГ гамером и ничего не делает, только следит чтоб сервак не падал (проверено :lol: ) |
|
|
8.11.2006, 12:12
Сообщение
#5
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
может перенаправить RCON на порт 8080 ?
|
|
|
24.3.2007, 1:47
Сообщение
#6
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Полюзуюсь вот таким ... не сильно навороченный но зато всегда под рукой :D
Цитата <?php
session_start(); // Start ze session, yuppi! function digest($seed, $pw) { $m = md5($seed . $pw); return $m; } // Check if we entered ze login-box if(isset($_POST["server"]) && isset($_POST["port"]) && isset($_POST["password"]) && isset($_GET["mode"])) { $_SESSION["server"] = $_POST["server"]; $_SESSION["port"] = $_POST["port"]; $_SESSION["password"] = $_POST["password"]; // $mode = $_POST["mode"]; } $timeout = 5; if(!empty($_SESSION["server"]) && !empty($_SESSION["port"]) && !empty($_SESSION["password"]) && !empty($_GET["mode"])) { if(!$handle = @fsockopen($_SESSION["server"], $_SESSION["port"], $errno, $errstr, $timeout)) { echo "Could not connect to server! (" . $errstr . ")"; } else { socket_set_timeout($handle, $timeout); @fread($handle,128); $keyzeile = @fread($handle,33); $key = str_replace("### Digest seed: ", "", $keyzeile); $pass_send = "login " . digest($key, $_SESSION["password"]) . "\n"; @fwrite($handle, $pass_send); @fgets($handle); @fgets($handle); $antwort = @fgets($handle); echo "<center>" . $antwort . "</center>"; echo "<center><b>" . $_SESSION["server"] . ":" . $_SESSION["port"] . "</b></center><br>"; echo "<center><a href=\"" . $_SERVER["php_self"] . "\" target=\"_self\">Select another server</a>"; echo " • "; echo "<a href=\"" . $_SERVER["php_self"] . "?mode=maplist\" target=\"_self\">Maplist</a>"; echo " • "; echo "<a href=\"" . $_SERVER["php_self"] . "?mode=playerlist\" target=\"_self\">Playerlist</a>"; echo " • "; echo "<a href=\"" . $_SERVER["php_self"] . "?mode=banlist\" target=\"_self\">Banlist</a>"; echo "</center><hr><br>"; switch($_GET["mode"]) { case "changemap": if(isset($_POST["mapid"])) { $mapid = $_POST["mapid"]; $cmd = "exec admin.nextLevel " . $mapid . "\n"; @fwrite($handle, $cmd); @fread($handle, 128); $cmd = "exec admin.runNextLevel\n"; @fwrite($handle, $cmd); @fread($handle, 128); echo "<center><b>The map is changing. Please note that it can take some time.</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; } else { echo "<center><b>The map-id wasnt delivered.</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "\">"; } break; case "maplist": $cmd = "exec mapList.currentMap\n"; @fwrite($handle, $cmd); $curmap = @fgets($handle); $cmd = "exec admin.nextLevel\n"; @fwrite($handle, $cmd); $nextmap = @fgets($handle); $cmd = "exec mapList.mapCount\n"; @fwrite($handle, $cmd); $mapcount = @fgets($handle); $cmd = "exec mapList.list\n"; @fwrite($handle, $cmd); echo "<b>Current map: " . $curmap . "</b><br>"; echo "<b>Next map: " . $nextmap . "</b><br><br>"; echo "<table align=\"center\" border=\"1\"><tr><td>ID</td><td>Map</td><td>Gametype</td><td>Mapsize</td></tr>"; for( $i = 0; $i < $mapcount; $i++ ) { $result = @fgets($handle); $columns = explode(" ", $result); echo "<tr><td>" . $columns[0] . "</td><td>" . $columns[1] . "</td><td>" . $columns[2] . "</td><td><center>" . $columns[3] . "</center></td></tr>"; } echo "</table>"; echo "<br><br><table align=\"center\"><tr>"; echo "<td><form method=\"post\" action=\"?mode=changemap\"><fieldset><legend>Change map</legend>"; echo "ID: <input type=\"text\" maxlenght=\"2\" size=\"3\" name=\"mapid\">"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<input type=\"submit\" value=\"Change map\">"; echo "</fieldset></form></td>"; echo "<td><form method=\"post\" action=\"?mode=setnextmap\"><fieldset><legend>Set next map</legend>"; echo "<center>ID: <input type=\"text\" maxlenght=\"2\" size=\"3\" name=\"mapid\">"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<input type=\"submit\" value=\"Set map\"></center>"; echo "</fieldset></form></td>"; echo "<td><form method=\"post\" action=\"?mode=restart\"><fieldset><legend>Restart map</legend>"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<center><input type=\"submit\" value=\"restart\"></center>"; echo "</fieldset></form></td></tr></table>"; echo "<table align=\"center\"><tr><td><form method=\"post\" action=\"?mode=pause\"><fieldset><legend>Pause map</legend>"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<center><input type=\"submit\" value=\"pause\"></center>"; echo "</fieldset></form></td>"; echo "<td><form method=\"post\" action=\"?mode=unpause\"><fieldset><legend>Unpause map</legend>"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<center><input type=\"submit\" value=\"unpause\"></center>"; echo "</fieldset></form></td>"; echo "</tr></table>"; break; case "playerlist": $cmd = "exec admin.listPlayers\n"; @fwrite($handle, $cmd); echo "<table border=\"1\" align=\"center\"><tr><td>ID</td><td>Playername</td><td>IP</td><td>Hashkey</td></tr>"; $eofplist = false; while( !$eofplist ) { $result = @fgets($handle); if(trim($result) == "") { $eofplist = true; } else { $result = str_replace(" ", " ", $result); $columns = explode(" ", trim($result)); $result2 = @fgets($handle); $columns2 = explode(" ", trim($result2)); $ipcolumn = explode(":", $columns[7]); echo "<tr><td>" . $columns[1] . "</td><td>" . $columns[3] . "</td><td>" . $ipcolumn[0] . "</td><td>" . $columns2[2] . "</td><td><a href=\"" . $_SERVER["php_self"] . "?mode=kick&id=" . $columns[1] . "\" target=\"_self\">kick</a></td><td><a href=\"./bf2_rcon.php?mode=ban&id=" . $columns[1] . "&time=round\" target=\"_self\">ban (round)</a></td><td><a href=\"" . $_SERVER["php_self"] . "?mode=ban&id=" . $columns[1] . "&time=perm\" target=\"_self\">ban (perm)</a></td></tr>"; } } echo "</table><br><br>"; echo "<table align=\"center\"><tr>"; echo "<td><form method=\"post\" action=\"?mode=say\"><fieldset><legend>Send ingame-message</legend>"; echo "Message: <input type=\"text\" name=\"msg\">"; echo "<input type=\"radio\" name=\"team\" value=\"3\" checked><b>all</b>"; echo "<input type=\"radio\" name=\"team\" value=\"1\"><b>MEC</b>"; echo "<input type=\"radio\" name=\"team\" value=\"2\"><b>US</b>"; echo "<input type=\"hidden\" name=\"port\" value=\"" . $_SESSION["port"] . "\">"; echo "<input type=\"hidden\" name=\"password\" value=\"" . $_SESSION["password"] . "\">"; echo "<input type=\"hidden\" name=\"server\" value=\"" . $_SESSION["server"] . "\">"; echo "<center><input type=\"submit\" value=\"send message\"></center>"; echo "</fieldset></form></td>"; break; case "kick": if(isset($_GET["id"])) { $id = $_GET["id"]; $cmd = "exec admin.kickPlayer " . $id . "\n"; @fwrite($handle, $cmd); echo "<center><b>Player no. " . $id . " has been kicked!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; } else { echo "<center><b>Player-id wasnt delivered!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; } break; case "ban": if(isset($_GET["id"]) && isset($_GET["time"])) { $id = $_GET["id"]; $time = $_GET["time"]; $cmd = "exec admin.banPlayerKey " . $id . " " . $time . "\n"; @fwrite($handle, $cmd); echo "Player no. " . $id . " has been banned. (" . $time . ")"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; } else { echo "<center><b>Player-id wasnt delivered!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; } break; case "banlist": $cmd = "exec admin.listBannedKeys\n"; @fwrite($handle, $cmd); $eofbplist = false; echo "<table align=\"center\" border=\"1\">"; echo "<tr><td>Hashkey</td><td>Time</td><td></td>"; while( !$eofblist ) { $result = @fgets($handle); if(trim($result) == "") { $eofblist = true; } else { $columns = explode(" ", $result); echo "<tr><td>" . $columns[1] . "</td><td>" . $columns[2] . "</td><td><a href=\"" . $_SERVER["php_self"] . "?mode=delban&key=" . $columns[1] . "\" target=\"_self\">Unban</a></td>"; } } echo "</table>"; break; case "delban": if(isset($_GET["key"])) { $key = $_GET["key"]; $cmd = "exec admin.removeKeyFromBanList " . $key . "\n"; @fwrite($handle, $cmd); echo "<center><b>Player-ban with hashkey " . $key . " has been deleted!"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=banlist\">"; } else { echo "<center><b>The hashkey wasnt delivered!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=banlist\">"; } break; case "setnextmap": if(isset($_POST["mapid"])) { $mapid = $_POST["mapid"]; $cmd = "exec admin.nextLevel " . $mapid . "\n"; @fwrite($handle, $cmd); echo "<center><b>The next map will be no. " . $mapid . "!</center></b>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; } else { echo "<center><b>The map-id wasnt delivered!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; } break; case "restart": $cmd = "exec admin.restartMap"; @fwrite($handle, $cmd); echo "<center><b>The map will be restarted!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; break; case "pause": $cmd = "pause\n"; @fwrite($handle, $cmd); echo "<center><b>Game paused!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; break; case "unpause": $cmd = "unpause\n"; @fwrite($handle, $cmd); echo "<center><b>Game unpaused!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=maplist\">"; break; case "say": if(isset($_POST["msg"]) && isset($_POST["team"])) { $msg = $_POST["msg"]; $team = $_POST["team"]; switch($team) { case 1: case 2: $cmd = "exec game.sayTeam " . $team . " \"" . $msg . "\"\n"; @fwrite($handle, $cmd); switch($team) { case 1: $teamname = "MEC"; break; case 2: $teamname = "US"; break; } echo "<center><b>The message \"" . $msg . "\" was sent to the " . $teamname . "-Team!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; break; case 3: $cmd = "exec game.sayAll \"" . $msg . "\"\n"; @fwrite($handle, $cmd); echo "<center><b>The message \"" . $msg . "\" was sent to all players!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; break; } } else { echo "<center><b>The message or the team wasnt delivered!</b></center>"; echo "<meta http-equiv=\"refresh\" content=\"5; URL=" . $_SERVER["php_self"] . "?mode=playerlist\">"; } break; } fclose($handle); } } else { echo "<center><b>BF2RCON-Webinterface</b><br><hr><br>"; echo "<form method=\"post\" action=\"?mode=maplist\"><fieldset><legend>Login</legend>"; echo "<table><tr><td>IP or address:</td><td><input type=\"text\" name=\"server\" value=\"\"></td></tr>"; echo "<tr><td>RCON-port:</td><td><input type=\"text\" name=\"port\" value=\"\"></tr>"; echo "<tr><td>RCON-password:</td><td><input type=\"password\" name=\"password\"></td></tr>"; echo "<tr><td colspan=\"2\" align=\"right\"><input type=\"submit\" value=\"log in\"></td></tr></table></fieldset></form></center>"; echo "<br><br><hr><p align=\"right\">report bugs at <a href=\"http://samson.fragthe.net/~imp/index.php\">BF2RCON</a>"; } ?> Сообщение отредактировал Vasaleks - 24.3.2007, 1:52 |
|
|
26.3.2007, 12:59
Сообщение
#7
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Не ожидал, что получу подобное...
Vasaleks - огромное спассибо! |
|
|
23.1.2013, 12:32
Сообщение
#8
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Кстати, если я правильно понимаю в математике, в скрипте небольшая "очепятка":
Код $eofbplist = false лишняя буковка P Сообщение отредактировал plagiat4x4 - 23.1.2013, 12:33 |
|
|
Текстовая версия | Сейчас: 23.9.2024, 9:53 |