Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   WWW (http://mangos.ytdb.ru/forumdisplay.php?f=23)
-   -   MaNGOS баг-трекер (разработка) (http://mangos.ytdb.ru/showthread.php?t=1441)

KiriX 11.06.2010 12:11

MaNGOS баг-трекер (разработка)
 
Хотелось бы сделать удобный баг-трекер, которым можно было бы пользоваться и даже в общих целях, не только на определённом сервере, а, например, даже на официальном форуме базы/ядра
К сожалению, не располагаю необходимыми знаниями, чтобы начать.
НУЖНО: -) реализовать вход под аккаунтом и оправку баг-репорта (для начала - аккаунт просто из realmd базы)
Далее функционал я могу бы постараться сделать сам.
Набросал шаблоны:


Смысл: удобное управление и отслеживание баг-репортов. Ни один из существующих баг-трекеров удобным, простым и достаточно функциональным назвать нельзя...
+ поиск объекта баг-репорта по базе мангоса, возможно ссылка на него на офф сайт (ВХ, к примеру) или на сайт БД сервера, которая автоматом вставляется в баг-репорт, что даёт администратору сразу наиболее полную информацию и облегчает анализ баг-репорта.
Основная проблема: не знаю как реализовать вход на сайт и правильно разбить структуру сайта (css). С реализацией функционала, я думаю, я справится смогу...

BombermaG 11.06.2010 12:27

Так был же: MaNPOT [баг-трекер для серверов на MaNGOS]

KiriX 11.06.2010 12:53

Цитата:

Сообщение от BombermaG (Сообщение 8388)

Он и сейчас есть в данном разделе уже на новом форуме, но:
Не попадает по пунктам:
Цитата:

Смысл: удобное управление и отслеживание баг-репортов. Ни один из существующих баг-трекеров удобным, простым и достаточно функциональным назвать нельзя...
+ поиск объекта баг-репорта по базе мангоса, возможно ссылка на него на офф сайт (ВХ, к примеру) или на сайт БД сервера, которая автоматом вставляется в баг-репорт, что даёт администратору сразу наиболее полную информацию и облегчает анализ баг-репорта.

BombermaG 11.06.2010 12:54

Дык не велосипед же изобретать, проще допилить, не так ли?

KiriX 11.06.2010 13:13

Цитата:

Сообщение от BombermaG (Сообщение 8390)
Дык не велосипед же изобретать, проще допилить, не так ли?

Допилить можно бревно, а вот пытаться сделать из кровати шкаф - сложнее - лучше с нуля шкаф начать делать...
Неудобен он, его не допиливать, а переделывать надо, что сложнее, если дело касается чужого кода.
К тому же я уже написал - мне требуется довольно небольшая помощь - входи и отправка сообщения в базу - дальше смогу сам.

ghostpast 11.06.2010 16:13

Цитата:

Сообщение от KiriX (Сообщение 8387)
НУЖНО: -) реализовать вход под аккаунтом и оправку баг-репорта (для начала - аккаунт просто из realmd базы)

Этот функционал реализовать в одном файле или в виде модулей?
Если в виде модулей, то у меня есть некоторые наработки.
Хотелось бы увидеть шаблоны входа и отправки баг-репорта.

Hantet 11.06.2010 19:07

Стукнул в ЛС, есть несколько вопросов по теме.

srv38 11.06.2010 19:28

Когда то делал авторизацию проекта через воблу, вот выдрал вроде кусок

Код:

$CONFIG['forum_dir'] = "C:/Program Files/xampp/htdocs/forum"; //Путь к форуму на диске

  $curDir = dirname(__FILE__);
 
  chdir($CONFIG['forum_dir']);
 
  require_once($CONFIG['forum_dir'].'/global.php');
 
  chdir($curDir);
 
//print_r($vbulletin->userinfo);

  $f_userid = $vbulletin->userinfo['userid'];
  $f_username = $vbulletin->userinfo['username'];
  $f_email = $vbulletin->userinfo['email'];
  $f_logouthash = $vbulletin->userinfo['logouthash'];
  $f_homepage = $vbulletin->userinfo['homepage'];

я думаю поймете идею :).

KiriX 11.06.2010 23:04

Цитата:

Сообщение от ghostpast (Сообщение 8397)
Этот функционал реализовать в одном файле или в виде модулей?
Если в виде модулей, то у меня есть некоторые наработки.
Хотелось бы увидеть шаблоны входа и отправки баг-репорта.

Цитата:

Сообщение от Hantet (Сообщение 8404)
Стукнул в ЛС, есть несколько вопросов по теме.

Цитата:

Сообщение от srv38 (Сообщение 8406)
Когда то делал авторизацию проекта через воблу, вот выдрал вроде кусок

Код:

$CONFIG['forum_dir'] = "C:/Program Files/xampp/htdocs/forum"; //Путь к форуму на диске

  $curDir = dirname(__FILE__);
 
  chdir($CONFIG['forum_dir']);
 
  require_once($CONFIG['forum_dir'].'/global.php');
 
  chdir($curDir);
 
//print_r($vbulletin->userinfo);

  $f_userid = $vbulletin->userinfo['userid'];
  $f_username = $vbulletin->userinfo['username'];
  $f_email = $vbulletin->userinfo['email'];
  $f_logouthash = $vbulletin->userinfo['logouthash'];
  $f_homepage = $vbulletin->userinfo['homepage'];

я думаю поймете идею :).

1) Модули? Что вы имеете ввиду под этим термином? Естественно, это будет не один файл - index.php, bug.php, edit.php Шаблоны и так предоставил...
2) Вопросов не заметил, а так вообще ответил =)
3) Код, хорошо, но мне бы готовый продукт - дальше сам....

tempura 11.06.2010 23:42

Вложений: 1
Багтрекер, которым мы несколько лет назад по работе активно пользовались. В какой-то момент решил посмотреть версию посвежее, но сайт автора был сдохшим. Поискал автора по своим каналам - никакого эффекта.
Короче - скрипт изначально бесплатный, автора найти не удавалось, так что получается, что можно пользоваться открыто.

Если вдруг найдется автор - будет хорошо.


Главное преимущество - простота и легкость. И заточить под любой интерфейс должно быть (по воспоминаниям) несложно.







PS
Кстати, раз уж разговор зашел... Может тут на субдомене поднять этот баг-трекер? Что-то типа bug.ru-mangos.ru или tracker.ru-mangos.ru - и писать там... кстати, я даже не знаю что там писать.
Я к чему - возможность есть, и если Администрация Форума решит что оно надо - сделать несложно. Опять же - РНР программеров у нас своих вагон (и маленькая тележка), и если там что-то дописать понадобится - не проблема же будет.

srv38 12.06.2010 06:32

Цитата:

Сообщение от KiriX (Сообщение 8422)
3) Код, хорошо, но мне бы готовый продукт - дальше сам....

Ну я там доску объявлений делал, на баг трекер она ну никак не похожа :), я просто кинул кусок кода который дает возможность посмотреть класс зарегистрированного пользователя форума "vBulletin",

допустим

Код:

  $CONFIG['forum_dir'] = "C:/Program Files/xampp/htdocs/forum"; //Путь к форуму на диске

  $curDir = dirname(__FILE__);
 
  chdir($CONFIG['forum_dir']);
 
  require_once($CONFIG['forum_dir'].'/global.php');
 
  chdir($curDir);
 
  $isUser = vbforum::isUser();
 
  if ($isUser)
    {
        пользователь зареган и все так сказать его атрибуты можно глянуть так
        print_r($vbulletin->userinfo);

        и выбрать нужные

        $f_userid = $vbulletin->userinfo['userid'];
        $f_username = $vbulletin->userinfo['username'];
        $f_email = $vbulletin->userinfo['email'];
        $f_logouthash = $vbulletin->userinfo['logouthash'];
        $f_homepage = $vbulletin->userinfo['homepage'];
    }
    else
    {
        пользователь не зареган то ридерект на станицу авторизации форума
    }


ghostpast 12.06.2010 08:47

Вложений: 1
Цитата:

Сообщение от KiriX (Сообщение 8422)
1) Модули? Что вы имеете ввиду под этим термином? Естественно, это будет не один файл - index.php, bug.php, edit.php Шаблоны и так предоставил...

Функционально законченный фрагмент программы как часть её исходного текста.

В предоставленных шаблонах не видно формы отправки баг-репорта. Как только ее покажете, добавлю соответствующий модуль.

Для изменения оформления достаточно отредактировать файлы html из папки style.
Настройки соединения с БД в файле ConnectDB.xml.
В БД необходимо выполнить все запросы из папки SQL.

KiriX 12.06.2010 12:19

Цитата:

Сообщение от ghostpast (Сообщение 8437)
Функционально законченный фрагмент программы как часть её исходного текста.

В предоставленных шаблонах не видно формы отправки баг-репорта. Как только ее покажете, добавлю соответствующий модуль.

Для изменения оформления достаточно отредактировать файлы html из папки style.
Настройки соединения с БД в файле ConnectDB.xml.
В БД необходимо выполнить все запросы из папки SQL.

Симпатичный дизайн, авторизация не работает, да и как-то странно она сделана... Для неё надо вливать в БД процедуру зачем-то...
3 шаблон добавлен в первый пост.
Темпура, твой вариант вообще запустить у меня не удалось...
По поводу субдомена баг-трекера - хорошая идея, создавая тему с таким ТЗ я на это и расчитывал, был бы только удобен баг-трекер и полностью подходил бы для мангоса, что я и хочу реализовать в конечном итоге...

ghostpast 12.06.2010 13:40

Цитата:

Сообщение от KiriX (Сообщение 8443)
Симпатичный дизайн, авторизация не работает, да и как-то странно она сделана... Для неё надо вливать в БД процедуру зачем-то...
3 шаблон добавлен в первый пост.
Темпура, твой вариант вообще запустить у меня не удалось...
По поводу субдомена баг-трекера - хорошая идея, создавая тему с таким ТЗ я на это и расчитывал, был бы только удобен баг-трекер и полностью подходил бы для мангоса, что я и хочу реализовать в конечном итоге...

Какую ошибку выводит скрипт при авторизации?
При написании скрипта я решил отделить SQL от PHP, передавая в БД только параметры запросов. Хранимая процедура в БД выполняется быстрее, чем запрос из PHP, поскольку она хранится в откомпилированном виде.
При поиске надо выбирать предмет, ГО или квест или их все надо вводить?

KiriX 12.06.2010 14:10

Цитата:

Сообщение от ghostpast (Сообщение 8451)
Какую ошибку выводит скрипт при авторизации?
При написании скрипта я решил отделить SQL от PHP, передавая в БД только параметры запросов. Хранимая процедура в БД выполняется быстрее, чем запрос из PHP, поскольку она хранится в откомпилированном виде.
При поиске надо выбирать предмет, ГО или квест или их все надо вводить?

Предмет, го, НПС, квест - зависит от выбранной категории. В категории другое - поиск по всему.

Из ошибок, тотисов и варнингов:
Код:

Notice: Undefined index: do in D:\SITE\localhost\www\bug\index.php  on line 42
При логине:
Strict Standards: Non-static method authorization::Main() should not be called statically in D:\SITE\localhost\www\bug\index.php on line 51

Strict Standards: Non-static method authorization::CheckPassword() should not be called statically in D:\SITE\localhost\www\bug\modules\authorization.php on line 36

Strict Standards: Non-static method authorization::GetAccountData() should not be called statically in D:\SITE\localhost\www\bug\modules\authorization.php on line 19

Fatal error: Class 'PDO' not found in D:\SITE\localhost\www\bug\index.php on line 18


ghostpast 12.06.2010 14:42

Цитата:

Сообщение от KiriX (Сообщение 8453)
Предмет, го, НПС, квест - зависит от выбранной категории. В категории другое - поиск по всему.

Из ошибок, тотисов и варнингов:
Код:

Notice: Undefined index: do in D:\SITE\localhost\www\bug\index.php  on line 42
При логине:
Strict Standards: Non-static method authorization::Main() should not be called statically in D:\SITE\localhost\www\bug\index.php on line 51

Strict Standards: Non-static method authorization::CheckPassword() should not be called statically in D:\SITE\localhost\www\bug\modules\authorization.php on line 36

Strict Standards: Non-static method authorization::GetAccountData() should not be called statically in D:\SITE\localhost\www\bug\modules\authorization.php on line 19

Fatal error: Class 'PDO' not found in D:\SITE\localhost\www\bug\index.php on line 18


Какая версия PHP?
Строка "extension=php_pdo_mysql.dll" раскомментирована в php.ini?

В modules/authorization.php в строке 40 должно быть
PHP код:

    $_SESSION***91;'AccountData'***93; = authorization::GetAccountData($username); 


LordJZ 12.06.2010 14:48

Strict Standards - укажите те функции как статик, т.е. public static function CheckPassword()

tempura 12.06.2010 15:01

Цитата:

Сообщение от KiriX (Сообщение 8453)
Код:

Fatal error: Class 'PDO' not found in D:\SITE\localhost\www\bug\index.php on line 18

мускл не подключен - забавно. :) А бы тоже не допер навскидку, если бы не знал что такое PDO. :)

Цитата:

Сообщение от ghostpast (Сообщение 8454)
Какая версия PHP?
Строка "extension=php_pdo_mysql.dll" раскомментирована в php.ini?

А с чего бы это вообще решили использовать PDO? Какие-то преимущества? Все-таки не на каждом углу (хостинге) их подключают по дефолту.

virusav 12.06.2010 15:46

Если нужна авторизация под аккаунтом в игре, то это определяется одним запросом.
У себя уже давно написал мини-раздел, куда и поступают баг-репорты.

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

Если делать авторизацию независимо от базы, то можно взять с любого форума.

tempura 12.06.2010 16:26

Цитата:

Сообщение от virusav (Сообщение 8462)
Если делать авторизацию независимо от базы, то можно взять с любого форума.

Главное - чтобы скрипт простой был. Чтобы ту самую "независимую авторизацию" можно было легко привязать к базе аккаунтов. :)

KiriX 12.06.2010 19:59

Нотис так и остался:
Код:

Notice: Undefined index: do in D:\SITE\localhost\www\bug\index.php  on line 42
Модуль в пхп подключил, проверю позже...

Madmunus 14.06.2010 18:50

Цитата:

Сообщение от KiriX (Сообщение 8467)
Нотис так и остался:
Код:

Notice: Undefined index: do in D:\SITE\localhost\www\bug\index.php  on line 42
Модуль в пхп подключил, проверю позже...

После
PHP код:

if (empty($_SESSION)) $_SESSION null

добавьте строку
PHP код:

$do = (isset($_GET***91;'do'***93;)) ?$_GET***91;'do'***93; :null

и замените строку
PHP код:

switch ($_GET***91;'do'***93;): 

на
PHP код:

switch ($do): 

с 39 по 42:
PHP код:

 if (empty($_POST)) $_POST null;
 if (empty(
$_SESSION)) $_SESSION null;
 
$do = (isset($_GET***91;'do'***93;)) ?$_GET***91;'do'***93; :null;
 switch (
$do): 


KiriX 16.06.2010 12:38

Хорошо... А можно простейшую форму входа. Без всякого оформления - требуется просто вход по данным из базы realmd?

Hantet 16.06.2010 13:08

Уже кидал:

Код:

<?php
$dbhost = "localhost";
$dbuser = "mangos";
$dbpass = "mangos";
$realmd = "realmd";
 
echo '
<form name="login" method="post" action="index.php">
<input type="text" name="log" value="Логин">
<input type="text" name="pass" value="Пароль">
<input type="submit" value="Вход">
</form>';
 
if(!empty($_POST['log']) && !empty($_POST['pass']))
{
        $log = (isset($_POST['log'])) ? $_POST['log'] : null;
        $pass = (isset($_POST['pass'])) ? $_POST['pass'] : null;
        mysql_connect($dbhost,$dbuser,$dbpass);
        mysql_select_db($realmd);
        $fetch = mysql_fetch_array(mysql_query("SELECT * FROM `account` WHERE `name` = '".$log."' AND `sha_pass_hash` = SHA1(UPPER('".$log.":".$pass."'))"));
        if($fetch['id'] > 0)
        {
                echo "Hello, ".$fetch['name']."!<br>";
                echo "Your e-mail: ".$fetch['email']; 
        }
        else
                echo "Login failed!";
}
?>


Madmunus 16.06.2010 13:29

Лучше использовать DBSimple так как такой простой логин взломать 5 секунд, что не есть хорошо.

Shadez 16.06.2010 14:09

Цитата:

Сообщение от Madmunus (Сообщение 8821)
Лучше использовать DBSimple

А ещё лучше юзать addslashes или аналогичные функции :-)

LordJZ 16.06.2010 14:52

Цитата:

Сообщение от Shadez (Сообщение 8826)
А ещё лучше юзать addslashes или аналогичные функции :-)

И получите раскрытие путей

Madmunus 16.06.2010 18:13

Цитата:

Сообщение от Shadez (Сообщение 8826)
А ещё лучше юзать addslashes или аналогичные функции :-)

escape'ом надо пользоваться тогда уж...)))

Fer0x 24.09.2010 20:30

Цитата:

Сообщение от Madmunus (Сообщение 8834)
escape'ом надо пользоваться тогда уж...)))

escape не панацея.

Праведник 25.09.2010 05:10

Всегда при держивался логики: всё гениальное, просто.
К данной пословице частично подходит авторизация, которую сделал Кот Да Винчи в своём личном кабинете.

Изначально выглядит так:

Код:

if (isset($_POST['auth_name']))
  {
  $par= SHA1(strtoupper($_POST['auth_name']).':'.strtoupper($_POST['auth_pass']));
  $cont = mysql_connect($r_ip, $r_userdb, $r_pw);
  mysql_select_db($r_db, $cont);
  mysql_query("SET NAMES '$encoding'"); 
  $res = mysql_query('SELECT * FROM `account` WHERE `username`="'.strtoupper(addslashes($_POST['auth_name'])).'" AND sha_pass_hash ="'.$par.'"');
  if ($row = mysql_fetch_assoc($res))
      {
      session_start();
      $_SESSION['user_id'] = (int)$row['id'];
      $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
      $_SESSION['kito'] = strtoupper($_POST['auth_name']);
      $_SESSION['slovo'] = strtoupper($par);
      $_SESSION['gnom'] = (int)$row['gmlevel'];
      $_SESSION['modul'] = 'news';
      $_SESSION['acpskin'] = $acpskin;
      }
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  exit;
  }

Ничего сверхъестественного, всё просто и доступно.
Ну особые параноики (я сам оказался таковым =)))) могут добавить ещё некий хеш (допустим, добавим к таблице account поле hash) + DBSimple и получим такой вариант:

Код:

session_start();
if( isset( $_POST['accountName'] )) {
$passw = SHA1(strtoupper(trim($_POST['accountName'])).':'.strtoupper(trim($_POST['password'])));
$name = strtoupper(trim($_POST['accountName']));
$member_check = $realmd->selectRow('SELECT `id`, `gmlevel` FROM `account` WHERE `username` = ? AND sha_pass_hash= ?', $name, $passw);
      if ($member_check['id']) {       
            $_SESSION['user_id'] = $member_check['id'];
            $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
            $_SESSION['gmlevel'] = $member_check['gmlevel'];
            $_SESSION['template'] = $config['templates'];
            $_SESSION['hash'] = md5($member_check['id'].'_'.$_SERVER['REMOTE_ADDR'].date('d.m', time()));
           
          $realmd->query('UPDATE `account` set `hash` = ? WHERE `id`= ?', $_SESSION['hash'], $member_check['id']);
    }
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
 }

При использовании проверяем ещё и наличие такового хеша в базе. Для ещё больших фанатиков можно предложить контролить изменение IP адреса + какого-нибудь случайного "довеска" к нему. Но на самом деле, на фоне того, что сессии подделать/украсть невозможно, всё это как-то даже не смотрится...

p.s. Само собой все введённые данные (логин и пароль) должны дополнительно проверяться на валидность с помощью регулярных выражений.

Fer0x 25.09.2010 16:27

preg_match("/^\w*$/", $username.$password)

deadangel 25.10.2010 10:22

подскажите народ, откуда брать ZoneId и MapId, на примере Creature

Нужно ли парсить DBC и если да, то какие именно?

virusav 25.10.2010 10:50

Map.dbc
AreaTable.dbc

deadangel 26.10.2010 11:59

Спарсить DBC я то спарсил. А есть описание полей этих самых DBC. Например в Map.dbc 36 полей. Есть у них названия и описания для чего они служат?

Lightunit 26.10.2010 12:45

_http://www.madx.dk/wowdev/wiki/index.php?title=DBC


Текущее время: 01:48. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS