[Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера - Страница 5 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Инструменты

Инструменты Софт который облегчает обслуживание java сервера.
Описание темы:OpenSource проект

Ответ
Опции темы
Непрочитано 09.11.2015, 15:01   #1
Пользователь

Автор темы (Топик Стартер) [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Доброго дня!
Практикуя программирование решил в качестве дебюта забабахать себе удобную админку для сервера.
В ходе работы передумал делать для себя, теперь делаю для портфолио скорее....


В общем представляю вашему вниманию проект L2j Pane

Проект написан на Java, а значит полностью кроссплатформенный + прилагаются нативные пакеты под 3 популярных Ос

Поддерживает 26 сборок (список есть на сайте)

Если в сборке есть delayed зачисление в инвентарь - программа использует его.

Также реализована возможность подключения через SSH благодаря Jsch библиотеке

На сайте можно найти ссылку на GIT и проект для Netbeans 8+

Также и в приложении и на сайте вшит фидбэк от доброго проекта reformal, в котором я предлагаю заинтересовавшихся добавлять отзывы о работе программы, сдавать баги и вносить идеи.



Сайт проекта: http://L2jPane.com

Последний раз редактировалось Aleksey; 31.01.2016 в 12:52. Причина: удаление неактуальной информации
Aleksey вне форума Ответить с цитированием
Непрочитано 05.03.2016, 02:30   #41
Аватар для Alligat0r
Заинтересовавшийся

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Aleksey Посмотреть сообщение
Вот честное слово, я с 10 года вроде админю, но телнет никогда не включал даже. Вообще было бы здорово послушать гуру на тему телнета. Его используют? Помню байка ходила мол лишняя уязвимость, но в те года все было одной большой уязвимостью.
Aleksey, его можно в принципе безопасно использовать. К примеру на фаерволе можно обозначить доступ к порту на котором телнет крутится только для своих хостов.

Я им как то пользовался когда нужно было выкинуть из игры юзеров и забанить их, но при этом у меня не было игрового клиента. В этом случае вещь очень полезная. Итемы насколько помню в онлайн режиме когда игрок в игре можно выдавать.


По сути, имея с собой мобильник с Java можно такой админкой получить отдачу команд ядру сборки, в точности будто я в игре нахожусь и отдаю эти команды в игровом интерфейсе.
Можно сервак ребутнуть, добавить/отобрать итем, забанить+кикнуть, бан чата дать, ну и так далее. Бывают моменты что срочно что то надо сделать, а под боком кроме телефона нет ничего.

К примере если через Вашу админку забанить акк то игрок все равно в игре остается, но не сможет зайти если оффнется. А при наличии телнета его можно кикнуть+бан одновременно. Очень здорово помогает если нет клиента игрового.
Alligat0r вне форума Отправить сообщение для Alligat0r с помощью Skype™ Ответить с цитированием
Непрочитано 05.03.2016, 02:43   #42
Пользователь

Автор темы (Топик Стартер) Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Alligat0r Посмотреть сообщение
Aleksey, его можно в принципе безопасно использовать. К примеру на фаерволе можно обозначить доступ к порту на котором телнет крутится только для своих хостов.

Я им как то пользовался когда нужно было выкинуть из игры юзеров и забанить их, но при этом у меня не было игрового клиента. В этом случае вещь очень полезная. Итемы насколько помню в онлайн режиме когда игрок в игре можно выдавать.

К примере если через Вашу админку забанить акк то игрок все равно в игре остается, но не сможет зайти если оффнется. А при наличии телнета его можно кикнуть+бан одновременно. Очень здорово помогает если нет клиента игрового.
Не, в плане защиты порта - тут даже ssh туннель подойдет и закрытый телнет извне. Где раздобыть команды для телнета?
__________________
L2j Pane v1.7 - админка для вашего L2 сервера
Aleksey вне форума Ответить с цитированием
Непрочитано 05.03.2016, 02:48   #43
Аватар для Alligat0r
Заинтересовавшийся

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Aleksey Посмотреть сообщение
Не, в плане защиты порта - тут даже ssh туннель подойдет и закрытый телнет извне. Где раздобыть команды для телнета?
Aleksey, могу попробовать вспомнить это, но насколько я помню это отдача команд ядру точно такая же будто Вы в игре находитесь и командуете с игрового интерфейса. То есть можете рестарт делать, банить с выкидыванием из игры, добавлять итемы, даже если чар онлайн. Ну вообщем все как будто в игре Вы. Помоему он точно такие же команды просто ядру передает.

Вот из стрессвеба файл который рулит телнетом, я пользовался этой опцией в SW и она работала, судя по коду команды такие же как Вы из игры отдаете будучи там админом.

Код:
<?php

if ( !defined("STRESSWEB") )
    die( "Access denied..." );
if ( !$controller->isAdmin() ) {
    $controller->redirect( "index.php" );
}
$_action = isset( $_REQUEST["action"] ) ? $controller->SafeData( $_REQUEST["action"], 3 ):"";
function Telnet( $sendmsg )
{
    global $l2cfg, $sid;
    if ( $telnet = @fsockopen($l2cfg["gs"][$sid]["host"], $l2cfg["gs"][$sid]["telnet"]["port"], $errno, $errstr, $l2cfg["gs"][$sid]["telnet"]["timeout"]) ) {
        fputs( $telnet, $l2cfg["gs"][$sid]["telnet"]["pass"] );
        fputs( $telnet, "\r\n" );
        if ( !empty($l2cfg["gs"][$sid]["telnet"]["gmname"]) ) {
            fputs( $telnet, $l2cfg["gs"][$sid]["telnet"]["gmname"] );
            fputs( $telnet, "\r\n" );
        }
        fputs( $telnet, $sendmsg );
        fputs( $telnet, "\r\nexit\r\n" );
        if ( $telnet ) {
            fclose( $telnet );
            $echo = "<fieldset><legend>OK</legend>\n";
            $echo .= "<div class='warning'> &nbsp; Комманда успешно отправлена.</div>\n";
            $echo .= "</fieldset><br>\n";
        } else {
            $echo = "<fieldset><legend>Error</legend>\n";
            $echo .= "<div class='warning'> &nbsp; Ошибка при отправке команды (возможно неверный пароль).</div>\n";
            $echo .= "</fieldset><br>\n";
        }
    } else {
        $echo = "<fieldset><legend>Error</legend>\n";
        $echo .= "<div class='warning'> Невозможно подключиться к серверу через Telnet {$l2cfg["gs"][$sid]["host"]}:{$l2cfg["gs"][$sid]["telnet"]["port"]}</div>";
        $echo .= "</fieldset><br>\n";
    }
    return $echo;
}
$telnet_msg = "";
if ( empty($l2cfg["gs"][$sid]["host"]) ) {

    $telnet_msg = "<fieldset><legend>Ошибка</legend>\n";
    $telnet_msg .= "<div class='warning'> &nbsp; Не задан адрес telnet сервера</div>";
    $telnet_msg .= "</fieldset>\n";
} else {
    if ( isset($_action) ) {
        if ( $_action == "announce" ) {
            $telnet_msg = Telnet( "announce ".$_REQUEST["msg"] );
        } elseif ( $_action == "msg" ) {
            $telnet_msg = Telnet( "msg ".$_REQUEST["nick"]." ".iconv("UTF8", "UTF-8", $_REQUEST["msg"]) );
        } elseif ( $_action == "kick" ) {
            $telnet_msg = Telnet( "kick ".$_REQUEST["nick"] );
        } elseif ( $_action == "restart" ) {
            $telnet_msg = Telnet( "restart ".$_REQUEST["time"] );
        } elseif ( $_action == "shutdown" ) {
            $telnet_msg = Telnet( "shutdown ".$_REQUEST["time"] );
        } elseif ( !empty($_action) ) {
            $telnet_msg .= "<fieldset><legend>Error</legend>\n";
            $telnet_msg .= "<div class='warning'> &nbsp; Неизвестная комманда</div>\n";
            $telnet_msg .= "</fieldset><br>\n";
        }
    }
}
$select_server = $controller->select( "sid", $gsListTitles	, $sid, 'style="width: 100px;" onchange="javascript: document.sid.submit(); return false;"' );
$telnet_content = <<< HTML
<br /><table width="100%" border='0' cellpadding='0' cellspacing='0' style="border: 1px solid #AAA;" class='shadow'>
<tr>
    <td bgcolor="#EEEFEF" height="29" style="padding-right:10px; color: #888;" align="right" valign="middle">
		<form action="" method="GET" id="sid" name="sid">
		<input type="hidden" name="mod" value="telnet">
		Сервер: {$select_server}
		</form>
	</td>
</tr>
</table><br />
<table width="100%" cellpadding='0' cellspacing='0' class='shadow'>
<tr>
	<td bgcolor="#DDEFEF" height="29" style="padding-left:10px; color: #888; border: 1px solid #AAA;">
		<a href="javascript:ChangeOption('divAnnounce');"> &raquo;Announce</a> &nbsp;
		<a href="javascript:ChangeOption('divMsg');"> &raquo;ПМ</a> &nbsp;
		<a href="javascript:ChangeOption('divKick');"> &raquo;Kick</a> &nbsp;
		<a href="javascript:ChangeOption('divRestart');"> &raquo;Рестарт сервера</a> &nbsp;
		<a href="javascript:ChangeOption('divShutdown');"> &raquo;Выключение сервера</a> &nbsp;
	</td>
</tr>	
<tr>
    <td style="padding:5px;" bgcolor="#FFFFFF">
		{$telnet_msg}
		<div id="dle_tabView1">
			<div id="divAnnounce" style="" >
			<form action='{$_url}=telnet&action=announce&sid={$sid}' method='POST'>
				<b>Сообщение</b> <input type='text' name='msg'> <br />
				<input type='submit' value='Отправить' class='swbutton2 aleft'>							
			</form>
			</div>
					
			<div id="divMsg" style="display:none" >
			<form action='{$_url}=telnet&action=msg&sid={$sid}' method='POST'>
				<b>Ник игрока</b> <input type='text' name='nick'> <br /><br />
				<b>Сообщение</b> <input type='text' name='msg'> <br />
				<input type='submit' value='Отправить' class='swbutton2 aleft'>
			</form>
			</div>
					
			<div id="divKick" style="display:none" >
			<form action='{$_url}=telnet&action=kick&sid={$sid}' method='POST'>
				<b>Ник игрока</b> <input type='text' name='nick'> <br />
				<input type='submit' value='Отправить' class='swbutton2 aleft'>
			</form>
			</div>
				
			<div id="divRestart" style="display:none" >
				<form action='{$_url}=telnet&action=restart&sid={$sid}' method='POST'>
				<b>Время до рестарта</b> (сек) <input type='text' name='time' size='16'> <br />
				<input type='submit' value='Отправить' class='swbutton2 aleft'>
			</form>
			</div>
			
			<div id="divShutdown" style="display:none" >
			<form action='{$_url}=telnet&action=shutdown&sid={$sid}' method='POST'>
				<b>Время до выключения</b> (сек) <input type='text' name='time' size='16'> <br />
				<input type='submit' value='Отправить' class='swbutton2 aleft'>
			</form>
			</div>
		</div>
	</td>
</tr>
</table>
<script type="text/javascript">
function ChangeOption(selectedOption) 
{
	document.getElementById('divAnnounce').style.display = "none";
	document.getElementById('divMsg').style.display = "none";
	document.getElementById('divKick').style.display = "none";
	document.getElementById('divRestart').style.display = "none";
	document.getElementById('divShutdown').style.display = "none";
	if(selectedOption == 'divAnnounce') {document.getElementById('divAnnounce').style.display = "";}
	if(selectedOption == 'divMsg') {document.getElementById('divMsg').style.display = "";}
	if(selectedOption == 'divKick') {document.getElementById('divKick').style.display = "";}
	if(selectedOption == 'divRestart') {document.getElementById('divRestart').style.display = "";}
	if(selectedOption == 'divShutdown') {document.getElementById('divShutdown').style.display = "";}	
}
</script>
HTML;
$tpl->SetResult( "content", $telnet_content );
?>
Alligat0r вне форума Отправить сообщение для Alligat0r с помощью Skype™ Ответить с цитированием
Непрочитано 05.03.2016, 02:51   #44
Пользователь

Автор темы (Топик Стартер) Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Alligat0r Посмотреть сообщение
Aleksey, могу попробовать вспомнить это, но насколько я помню это отдача команд ядру точно такая же будто Вы в игре находитесь и командуете с игрового интерфейса. То есть можете рестарт делать, банить с выкидыванием из игры, добавлять итемы, даже если чар онлайн. Ну вообщем все как будто в игре Вы. Помоему он точно такие же команды просто ядру передает.
Спасибо за идею )
Думаю, было бы неплохо дополнить софтину
Кик чара например очень не помешает
__________________
L2j Pane v1.7 - админка для вашего L2 сервера
Aleksey вне форума Ответить с цитированием
Непрочитано 05.03.2016, 04:17   #45
Аватар для Alligat0r
Заинтересовавшийся

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Aleksey, могу Вам посоветовать подумать над клиент-серверной реализацией.

Одна из причин - не каждый админ жаждет держать порт 3306 открытый из вне на сервере и ограничивается обычно доступом с домашнего хоста+хоста сервера где стоит веб-обвязка.
Телнет порт открытым держать если честно как то то же немного стремновато. Это же касается и SSH порта.

А вот если отдельно будет серверная версия этой админки висеть на порту с надежной авторизацией то возможности реализации функционала тут очень велики. Серверная софтина могла ты и по телнету со сборкой общаться по локалхосту и делать запросы в MySQL. Можно так же реализовать при бане/кике отдачу операционной системе к примеру команды iptables -I INPUT -p tcp -s xx.xx.xx.xx -j DROP, где xx.xx.xx.xx - IP облокируемого, можно и так xx.xx.xx.xx/24 по целой подсети, если игрок может быстро сменить IP в случае если провайдер по DHCP выдает. Это очень помогает когда кто то в чате сидит и рекламирует сторонние проекты, Вы его баните а он тут же новый акк регит, а способов обойти бан по железу полно. С заходом в исходники сборки можно даже реализовать отдачу сообщений чата в клиентскую часть админки. То есть у Вас очень большие возможности появятся в плане постоянного наращивания функционала данного продукта. Можно конечно параллельно держать Lite версию, без серверной части.
Alligat0r вне форума Отправить сообщение для Alligat0r с помощью Skype™ Ответить с цитированием
Непрочитано 05.03.2016, 12:45   #46
Пользователь

Автор темы (Топик Стартер) Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Alligat0r Посмотреть сообщение
Aleksey, могу Вам посоветовать подумать над клиент-серверной реализацией.

Одна из причин - не каждый админ жаждет держать порт 3306 открытый из вне на сервере и ограничивается обычно доступом с домашнего хоста+хоста сервера где стоит веб-обвязка.
Телнет порт открытым держать если честно как то то же немного стремновато. Это же касается и SSH порта.

А вот если отдельно будет серверная версия этой админки висеть на порту с надежной авторизацией то возможности реализации функционала тут очень велики. Серверная софтина могла ты и по телнету со сборкой общаться по локалхосту и делать запросы в MySQL. Можно так же реализовать при бане/кике отдачу операционной системе к примеру команды iptables -I INPUT -p tcp -s xx.xx.xx.xx -j DROP, где xx.xx.xx.xx - IP облокируемого, можно и так xx.xx.xx.xx/24 по целой подсети, если игрок может быстро сменить IP в случае если провайдер по DHCP выдает. Это очень помогает когда кто то в чате сидит и рекламирует сторонние проекты, Вы его баните а он тут же новый акк регит, а способов обойти бан по железу полно. С заходом в исходники сборки можно даже реализовать отдачу сообщений чата в клиентскую часть админки. То есть у Вас очень большие возможности появятся в плане постоянного наращивания функционала данного продукта. Можно конечно параллельно держать Lite версию, без серверной части.
В своих целях использую порткнокинг к 22 порту.
Кстати реализовано в программе, но в настойки выносить не стал. Я там раньше описсывал, куда что добавить.
А вообще к 22 порту доступ должен быть всегда у админов имхо. Так что пока над серверно-клиентской версией не задумываюсь даже

Добавлено через 6 минут
Нашел чуть про телнет
Почему его не рекомендуют использовать? Допустим при условии, что порт будет закрыт извне?
http://www.l2jserver.com/forum/viewtopic.php?t=18292
__________________
L2j Pane v1.7 - админка для вашего L2 сервера

Последний раз редактировалось Aleksey; 05.03.2016 в 12:51. Причина: Добавлено сообщение
Aleksey вне форума Ответить с цитированием
Непрочитано 05.03.2016, 14:04   #47
Аватар для Alligat0r
Заинтересовавшийся

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Aleksey Посмотреть сообщение
Нашел чуть про телнет
Почему его не рекомендуют использовать? Допустим при условии, что порт будет закрыт извне?
http://www.l2jserver.com/forum/viewtopic.php?t=18292
Если честно больше баек про него ходит чем правды. Ломануть по сути нельзя, можно только пароль подобрать брутефорсом, но опять же если он сложный то нереально. Если даже и получат доступ то рулить смогут только игровой сборкой но не сервером. Есть еще отличие в плане безопасности, телнет использует открытый текстовый протокол и если снифером ловить где то на узлах маршрутизации то можно легко снять пароль, но вряд ли операторы связи будут страдать этой фигней. SSH напротив, использеут шифрование при работе.
Alligat0r вне форума Отправить сообщение для Alligat0r с помощью Skype™ Ответить с цитированием
Непрочитано 06.03.2016, 01:46   #48
Аватар для n3k0nation
Antihero

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Alligat0r,
Aleksey, telnet не везде есть и обработка команд никак не связана с админ командами (там свои хандлеры). Если уж и использовать телнет, то только, как бинд на локалхост, а до него делать проброс через SSH-тунель.
А вообще, рекомендую отказаться от этого устаревшего... хм... механизма и посмотреть куда-нибудь в сторону написания референс бука по внешнему АПИ сервера <- любой_софт/обвязка/етц.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 06.03.2016, 02:31   #49
Пользователь

Автор темы (Топик Стартер) Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Alligat0r,
Aleksey, telnet не везде есть и обработка команд никак не связана с админ командами (там свои хандлеры). Если уж и использовать телнет, то только, как бинд на локалхост, а до него делать проброс через SSH-тунель.
А вообще, рекомендую отказаться от этого устаревшего... хм... механизма и посмотреть куда-нибудь в сторону написания референс бука по внешнему АПИ сервера <- любой_софт/обвязка/етц.
Покормите полезными ссылочками или хотя бы кратким разъяснением - куда копать?
__________________
L2j Pane v1.7 - админка для вашего L2 сервера
Aleksey вне форума Ответить с цитированием
Непрочитано 08.03.2016, 02:57   #50
Аватар для n3k0nation
Antihero

По умолчанию Re: [Шара, исходники, BOOMSTARTER] L2jPane - Удобное управление базой сервера

Цитата:
Сообщение от Aleksey Посмотреть сообщение
Покормите полезными ссылочками или хотя бы кратким разъяснением - куда копать?
RPC (remote procedure calling). От рав протокола на сокетах, до JSON RPC (что потребует интеграцию веб-сервера в эмуль). Так же, в джаве есть Corba & RMI, но это по большей части ужОс и пережиток прошлого.
Если опишите протокол, экшены на каждую команду и остальные вещи, которые входят в референс бук, то вполне можно будет реализовать для большинства эмуляторов расширение, которое можно будет легко подключить
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
topanons.ru - кидало Winner10 Курилка / Yak floor 122 29.10.2012 15:22
Руководство по поднятию сервера AiON на Linux платформе sotariz Документация 26 27.07.2011 07:05
Создание сервера с готовым ядром, базой и скриптами Perfecto Документация 49 16.08.2010 16:04


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:53. Часовой пояс GMT +3.

Вверх