Ru-MaNGOS

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

Праведник 28.08.2012 18:20

[Разработка] Сайтег
 
Требования
  • MySQL 5.x
  • PHP 5.4.x
  • библиотека Zend Framework 1.11

Детали
  • В основе лежит Zend Framework 1.11.
  • AJAX
  • HTML5 (индусский)

Поддерживаемые сервера
  • TrinityCore 3.3.5 (master)
  • MaNGOS 3.3.5 (master)
    • Для серверов на базе MaNGOS необходимо сгенерировать (/tools/entity) классы-определения таблиц.

Функционал (как планируемый, так и реализованный)
  • Неограниченное количество реалмов (+)
  • Новостная лента (+)
    • Новости парсятся автоматически (по заданию планировщика) с официального сайта WoW (+)
  • Личный кабинет
    • Работа с аккаунтом
      • Основная информация об аккаунте (+)
        • Отображение в модальном окне деталей блокировки аккаунта/ip (если имеется) (+)
      • Смена пароля (+)
        • Для смены пароля необходимо подтвердить E-mail адрес(опционально) (+)
      • Смена E-mail (+)
      • Смена Дополнения (+)
      • Привязка к IP (+)
      • Подтверждение E-mail адреса (+)
      • Баланс счёта (+)
        • Золото (+)
          • Пополняется за счёт перевода золота с выбранного персонажа на виртуальный счёт аккаунта (+)
            • Этот счёт необходим для совершения операций в кабинете, в которых выставлен тип оплаты "золото".
            • Снять золото со счёта невозможно
        • Деньги (+)
          • Пополняется через агрегаторов платежей
            • Этот счёт необходим для совершения операций в кабинете, в которых выставлен тип оплаты "деньги".
        • Бонусы (+)
          • Пополняется за счёт голосований (+)
            • Этот счёт необходим для совершения операций в кабинете, в которых выставлен тип оплаты "бонусы".
        • История операций (+)
    • Работа с персонажами
      • Основная информация о персонажах (+)
        • Отображение в модальном окне деталей блокировки (если имеется) (+)
      • Перенос персонажей (+)
        • Зпрещён перенос персонажа с заблокированного аккаунта (+)
        • Запрещён перенос персонажа на заблокированный аккаунт (+)
        • Опционально запрещён перенос рыцарей смерти (+)
        • Запрещён перенос, если на аккаунте присутсвуют персонажи противоположной фракции (+)
        • Запрет на перенос рыцарей смерти для аккаунтов, чей уровень установленного дополнения ниже World of Warcraft: Wrath of the Lich King (+)
      • Смена расы
        • Выполняется через at_login (+)
        • Суммируется с иными запрошеными операциями, выполняющимися через at_login (+)
      • Восстановление удалённых персонажей (+)
        • После восстановления переименовываем персонажа и устанавливаем действие at_login, чтобы игрок сам мог переименовать персонажа (во избежании коллизии ников) (+)
      • Исправление ошибок персонажей (+)
        • Телепортация персонажа (+)
        • Воскрешение персонажа (+)
        • Очистка аур персонажа (+)
        • Чистка групп персонажа (+)
      • Смена фракции (+)
        • Выполняется через at_login (+)
        • Суммируется с иными запрошеными операциями, выполняющимися через at_login (+)
      • Смена внешности (+)
        • Выполняется через at_login (+)
        • Суммируется с иными запрошеными операциями, выполняющимися через at_login (+)
  • Логирование
    • Логирование перехваченных исключений (+)
    • Логирование ошибок PHP (+)
    • Логирование нарушений безопасности (+)
    • Логирование пользовательских операций (+)
    • Логирование администраторских операций (+)
  • Панель управления
    • Основные настройки приложения (+)
    • Включение/отключение/настройка модулей (+)
    • Редактирование специфических для реалма опций (+)
    • Возможность требовать оплату за модули (+)
      • Каждый модуль оценивается отдельно (+)
        • Допустимая валюта (+)
          • Золото (+)
          • Бонусы (+)
          • Деньги (+)
    • История всех операций в панеле управления (+)
    • История ошибок (исключений) приложения (+)
    • История нарушений безопасности (+)
  • GM панель
    • Блокировка доступа к ресурсу по IP (+)
      • Заблокировать можно как целый адрес, так и маску (+)
  • Магазин
    • Клиентская часть
    • Администрирование
      • Импорт вещей из базы данных сервера (+)
        • Можно импортировать как все вещи, так и вещи из конкретной категории (+)
        • При импорте можно указывать глобальную цену, а также статус (в продаже, или нет) и кол-во (сколько максимум вещей выбранной категории поступит в продажу) (+)
  • Аукцион персонажей
    • Детали в данный момент отсутсвуют. Принимаются предложенияи комментарии
  • Прочие возможности
    • Контроль изменения IP адреса (сброс авторизации при смене IP) (+)
    • Блокировка доступа к порталу по IP адресу (+)
      • Возможно блокировать как целый IP, так и маску (+)
    • Регистрация аккаунта (+)
      • Пригласи друга (только для TrinityCore)
      • Подтверждение регистрации (опционально)
    • Ajax-статистика (автообновление) сервера и реалмов (+)
    • Восстановление пароля (+)
    • Вывод последних тем с форума (+)
      • Поддерживаемые движки: (+)
        • XenForo (+)
    • Рейтинги
      • Ключевые возможности
        • Поиск персонажа
        • Прирост очков за день/неделю (+) / (-)
        • Изменение позиций за день/неделю (+) / (-)
    • Голосование с зачислением бонусов на счёт (+)
      • Отдельно оцениваются обычные и смс голоса (+)
    • Полная статистика реалмов (+)
  • Безопасность (+)
    • Защита от XSS, SQL инъекций, расщеплений запроса, прохода по директориям, RFE/LFI, DoS и LDAP инъекции, Обфусцированными атаки на базе юникодов, кодировок и т.п (+)
    • При обнаружении атаки доступ к скрипту прекращается, информация логируется (+)
Репозиторий проектаАвторы
Возможная помощь проекту
  • Жизненно необходим человек, владеющий JavaScript (jquery)
  • Приветствуется конструктивная критика PHP кода (ибо далёк от совершенства); логики реализации приложения; логики реализации модулей
  • По вопросам финансовой поддержки обращаться в лс Desperado
  • Тестирование и поиск ошибок

Праведник 28.08.2012 18:21

О копирайтах
  • Проект, как вы могли заметить, некоммерческий. Посему большая просьба, копирайты оставлять на месте.

Установка

В примере рассматриваю установку исключительно для *nix-систем.
  • Загружаем всё (кроме папок /public и /sql в директорию вашего пользователя.
    • Например, /home/desperado/portal
    • Получается следующая картина:
      /home/desperado/portal/application
      /home/desperado/portal/crontab
      /home/desperado/portal/data
      /home/desperado/portal/library
      /home/desperado/portal/tools
  • Содержимое папки /public закидываем в корневую директорию web-пространства
    • Наример,
      /var/www/js
      /var/www/styles
      /var/www/uploads
      /var/www/.htaccess
      /var/www/index.php
  • Данный пример будет работать только для веб-сервера apache
    • для nginx правила реврайта прописываются в конфиге хоста. Нагуглите сами
  • После этого открываем файл /var/www/index.php и ищем в нём
    PHP код:

    define'APPLICATION_PATH'realpathdirname__FILE__ ) . '/../application' ) ); 

    и меняем на
    Код:

    define( 'APPLICATION_PATH', '/home/desperado/portal/application' );
  • Профит. Всё должно "заработать".
    • На самом деле это ещё не всё. Необходимо настроить файл конфигурации, залить дампы таблиц, выставить задание планировщика (команда crontab -e). Подробнее о списке заданий. Но с этим уже и сами разберётесь.
Ключевой момент: все директории, кроме /public не должны быть видны из веб-пространства!

Что нужно от сервера:
  • Версия php 5.4.x
  • Установленные расширения php
    • extension=php_pdo_mysql
    • extension=php_openssl
    • extension=php_curl
  • MySQL 5.x

Праведник 28.08.2012 18:22

Как вы могли заметить, в числе каталогов есть папка tools
Она там отнюдь не для красоты.

Её назначение (на данный момент) - генерация определений таблиц и очистка кеша

Как пользоваться
  • Выполняется файл tools из консоли
  • В качестве атрибутов передаётся выполняемая команда и её атрибуты.
    • Пример очистки кеша:
      • C:\Users\Desperado>php F:\WebServer\localhost\www\tools\tools flush-cache all
    • Пример генерации шлюзов:
      • C:\Users\Desperado>php F:\WebServer\localhost\www\tools\tools genereate-entity usercp
Список поддерживаемых команд и атрибутов
  • genereate-entity
    • usercp
    • auth
    • characters
    • world
  • flush-cache
    • all

*****************

Данная утилита схожа с tools
В отличии от неё, назначение файла не разовые сервисные действия, а выполнение заданий планировщика Cron.

Доступные команды:
  • parse_news
    • Парсинг новостей.
    • Выставлять на выполнение каждый час
  • mmotop
    • Парсинг голосов MMOTOP
    • Выставлять на выполнение каждые 30 минут
  • ratings
    • Обновление рейтингов на всех реалмах
    • Параметры
      • day
        • Обновление данных за текущие сутки. Выставлять на выполнение раз в 4 часа
      • weekly
        • Обновление данных за текущую неделю. Выставлять на обновление раз в 7 дней
    • Ахтунг! Оочень ресурсоёмкая операция. Всвязи с этим минимальный уровень игроков, которые попадут в рейтинги - 75 (чем меньше их будет, тем быстрее и безболезненнее закончится)
Список будет пополняться

Праведник 28.08.2012 18:24

Вроде всё :)

Очень приветсвуются тесты именно на мангосе.

Fedia22 28.08.2012 19:32

ещё б скриншот сие чуда :)

Кот ДаWINчи 28.08.2012 19:36

Цитата:

Сообщение от Fedia22 (Сообщение 29030)
ещё б скриншот сие чуда :)

http://dev-masters.ru/threads/432/ - там есть.

LordJZ 28.08.2012 20:46

Цитата:

Сообщение от Кот ДаWINчи (Сообщение 29031)

А без смс и регистрации?

Праведник 28.08.2012 21:11

Вложений: 5
часть 1

Праведник 28.08.2012 21:11

Вложений: 4
часть 2

Konctantin 28.08.2012 21:18

аватарку мою заюзали :)

Праведник 28.08.2012 21:19


KiriX 29.08.2012 10:22

Я бы назвал сайт по-другому... Что-то вроде "Вдохновлённый XenForo!"
Может проще просто плагин к этому форуму нарисовать ;)

Праведник 29.08.2012 10:52



ну от Ксена там только шаблон, и тот имеет общего разве что цветовую гамму)
Что касается плагина, то нет, по факту не проще и даже не логичнее)
Почему выбран такой шаблон, думаю понятно)

DiffuSer 12.09.2012 12:34

Кто-нибудь пробовал ставить на mangos? После генерации определений таблиц на сайте ошибка:
Цитата:

Primary key column(s) (petitionguid) are not columns in this table (NextArenaPointDistributionTime,NextDailyQuestRese tTime,NextWeeklyQuestResetTime,NextRandomBGResetTi me,NextMonthlyQuestResetTime,cleaning_flags)
Понятно, что он несуществующий столбик ищет, но на какое поле из таблицы не заменяю - сайт открывается, но ничего не работает.


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

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