SourceBans++

web SourceBans++ 1.6.3

Нет прав для скачивания
Установка
Системные требования
Убедитесь, что Ваш сервер удовлетворяет системным требованиям для работы как самой веб-панели, так и для серверной части.
Так же, если Вы используете CloudFlare, убедитесь, что у Вас отключен Rocket Loader, в противном случае Вы можете испытывать проблемы при работе с веб-панелью.

Загрузка файлов
  • Скачайте последнюю версию веб-панели по кнопке "Скачать" выше, или отсюда.
  • Распакуйте архив.
  • Всё содержимое папки web/ загрузите на Ваш веб-сервер в директорию, из которой веб-панель будет доступна из браузера (как правило, такая папка называется public_html или document_root).
  • Всё содержимое папки game/ загрузите на Ваши игровые сервера, соблюдая структуру файлов, в папку игрового мода (tf, cstrike, csgo, и так далее...).
Необходимые права (веб)
Для записи, должны быть доступны следующие файлы и директории.
  • /config.php. В этом файле располагаются данные от базы данных.
  • /demos/. В этой директории располагаются все загруженные администраторами демо-записи. Они загружаются при выдаче банов.
  • /themes_c/. В этой директории SourceBans++ располагает свой внутренний кеш для скомпилированных шаблонов.
  • /images/games/. В этой директории SourceBans++ располагает все иконки игр, отображаемые в мониторинге серверов, а так же на странице списка модов.
  • /images/maps/. В этой директории SourceBans++ располагает все превью для карт, отображаемые в мониторинге серверов.
На Linux, права на запись можно выставить посредством команды chmod.

Установка веб-панели
В целях демонстрации, предположим, что SourceBans++ загружен в папку, содержимое которой доступно по адресу https://example.com/.
  1. Откройте установщик SourceBans++ (https://example.com/install/) в Вашем браузере для начала установки.
  2. Прочтите лицензионное соглашение, установите галочку напротив надписи I have read, and accept the license, нажмите кнопку OK.
  3. Заполните информацию:
    • Server Hostname - адрес сервера Базы данных. Используйте localhost, если Вы уверены, что сервер БД находится на одной машине, что и веб-панель. В противном случае, укажите IP-адрес или домен сервера БД.
    • Server Port - порт сервера Базы данных. Как правило, используется порт 3306. Если Ваш хостинг-провайдер использует отличный порт, укажите его.
    • Username - имя пользователя для авторизации на сервере Базы данных.
    • Password - пароль от учётной записи пользователя для авторизации на сервере Базы данных. Может быть оставлено пустым, если пароля нет.
    • Database - имя Базы данных, используемой для хранения данных.
    • Table Prefix - используемый префикс таблиц при формировании имён таблиц. Может быть использовано для выполнения установки нескольких копий веб-панели в одну базу данных. В противном случае, оставьте значение по-умолчанию.
    • Steam API Key - ключ Steam Web API. Может быть получен здесь.
    • SourceBans URL - адрес веб-панели вместе с протоколом (https://example.com/).
    • SourceBans EMail - используемый почтовый адрес для отправки писем касательно сброса пароля, добавления жалоб на игроков и протестов банов. Оставьте пустым, если Вы не планируете отправлять письма.
  4. Система проверит системные характеристики Вашего сервера. Убедитесь, что везде горит зелёный цвет, и нажмите Next.
  5. На странице создания таблиц базы данных, нажмите OK, как только вылезит всплывающее окно.
  6. Заполните информацию для создания Вашего Администраторского аккаунта, и нажмите OK, как только Вы закончите.

Установка серверной части
Перейдите в директорию /addons/sourcemod/configs/, откройте файл databases.cfg любым удобным текстовым редактором с поддержкой кодировки UTF-8 без BOM, добавьте в файле подключение sourcebans, чтобы вышло что-то вроде:
Код:
"Databases"
{
  "default_driver"  "sqlite"

  "default"
  {
    // ...
  }

  // ... много других подключений к БД ...
  "sourcebans"
  {
    "driver"      "mysql"
    "host"        "ОТРЕДАКТИРУЙ МЕНЯ! АДРЕС СЕРВЕРА БАЗЫ ДАННЫХ"
    "database"    "ОТРЕДАКТИРУЙ МЕНЯ! ИМЯ БАЗЫ ДАННЫХ"
    "user"        "ОТРЕДАКТИРУЙ МЕНЯ! ИМЯ ПОЛЬЗОВАТЕЛЯ"
    "pass"        "ОТРЕДАКТИРУЙ МЕНЯ! ПАРОЛЬ ОТ УЧЁТНОЙ ЗАПИСИ"
    "port"          "3306" // ОТРЕДАКТИРУЙ, ЕСЛИ НЕОБХОДИМО
    "timeout"     "10"
  }
}
Сохраните, загрузите обратно на сервер, и выполните его перезагрузку.
Настройки
Веб-панель
Веб-панель хранит свои настройки в базе данных. Доступ к ним можно получить по адресу /index.php?p=admin&c=settings. Настройки от базы данных, адрес сайта и так далее прописываются в конфиге сайта (/config.php).

Серверная часть
Плагины используют конфигурационные файлы, и хранят их в директории /addons/sourcemod/configs/sourcebans/.
  • sourcebans.cfg. Конфигурационный файл основного плагина SourceBans++, отвечающего за загрузку администраторов из СУБД, управление банами.
  • sourcecomms.cfg. Конфигурационный файл вспомогательного плагина SourceComms++, отвечающего за управление голосовым и текстовым чатом (возможность включать, отключать перечисленные виды чатов для определённых игроков на время).
  • sourcesleuth_whitelist.cfg. Белый список игроков, баны для которых игнорируются вспомогательным плагином SourceSleuth.
Файлы sb_admins.cfg и sb_admin_groups.cfg не являются конфигурационными, и играют роль хранилища загруженных администраторов из СУБД.
Все настройки в вышеперечисленных файлах прокомментированы, вопросов возникнуть не должно.
API
Веб-часть
Веб-панель не предоставляет никакого API для взаимодействия. Это означает, что работать с базой данных, не имея данных от неё, из своих скриптов - нельзя.

Серверная часть
Серверная часть предоставляет упрощённое API, позволяющее выдавать баны, отслеживать их выдачу и ещё по мелочи.
C++:
// *************************************************************************
//  This file is part of SourceBans++.
//
//  Copyright (C) 2014-2016 SourceBans++ Dev Team <https://github.com/sbpp>
//
//  SourceBans++ is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, per version 3 of the License.
//
//  SourceBans++ is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with SourceBans++. If not, see <http://www.gnu.org/licenses/>.
//
//  This file based off work(s) covered by the following copyright(s):
//
//   SourceBans 1.4.11
//   Copyright (C) 2007-2015 SourceBans Team - Part of GameConnect
//   Licensed under GNU GPL version 3, or later.
//   Page: <http://www.sourcebans.net/> - <https://github.com/GameConnect/sourcebansv1>
//
// *************************************************************************

#if defined _sourcebanspp_included
#endinput
#endif
#define _sourcebanspp_included

public SharedPlugin __pl_sourcebanspp =
{
    name = "sourcebans++",
    file = "sbpp_main.smx",
    #if defined REQUIRE_PLUGIN
    required = 1
    #else
    required = 0
    #endif
};

#if !defined REQUIRE_PLUGIN
public void __pl_sourcebanspp_SetNTVOptional()
{
    MarkNativeAsOptional("SBBanPlayer");
    MarkNativeAsOptional("SBPP_BanPlayer");
    MarkNativeAsOptional("SBPP_ReportPlayer");
}
#endif


/*********************************************************
 * Ban Player from server
 *
 * @param iAdmin    The client index of the admin who is banning the client
 * @param iTarget    The client index of the player to ban
 * @param iTime        The time to ban the player for (in minutes, 0 = permanent)
 * @param sReason    The reason to ban the player from the server
 * @noreturn
 *********************************************************/
#pragma deprecated Use SBPP_BanPlayer() instead.
native void SBBanPlayer(int iAdmin, int iTarget, int iTime, const char[] sReason);

/*********************************************************
 * Ban Player from server
 *
 * @param iAdmin    The client index of the admin who is banning the client
 * @param iTarget    The client index of the player to ban
 * @param iTime        The time to ban the player for (in minutes, 0 = permanent)
 * @param sReason    The reason to ban the player from the server
 * @noreturn
 *********************************************************/
native void SBPP_BanPlayer(int iAdmin, int iTarget, int iTime, const char[] sReason);

/*********************************************************
 * Reports a player
 *
 * @param iReporter    The client index of the reporter
 * @param iTarget    The client index of the player to report
 * @param sReason    The reason to report the player
 * @noreturn
 *********************************************************/
native void SBPP_ReportPlayer(int iReporter, int iTarget, const char[] sReason);

/*********************************************************
 * Called when the admin banning the player.
 *
 * @param iAdmin    The client index of the admin who is banning the client
 * @param iTarget    The client index of the player to ban
 * @param iTime      The time to ban the player for (in minutes, 0 = permanent)
 * @param sReason    The reason to ban the player from the server
 *********************************************************/
forward void SBPP_OnBanPlayer(int iAdmin, int iTarget, int iTime, const char[] sReason);

/*********************************************************
 * Called when a new report is inserted
 *
 * @param iReporter    The client index of the reporter
 * @param iTarget    The client index of the player to report
 * @param sReason    The reason to report the player
 * @noreturn
 *********************************************************/
forward void SBPP_OnReportPlayer(int iReporter, int iTarget, const char[] sReason);

//Yarr!
C++:
// *************************************************************************
//  This file is part of SourceBans++.
//
//  Copyright (C) 2014-2016 SourceBans++ Dev Team <https://github.com/sbpp>
//
//  SourceBans++ is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, per version 3 of the License.
//
//  SourceBans++ is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with SourceBans++. If not, see <http://www.gnu.org/licenses/>.
//
//  This file based off work(s) covered by the following copyright(s):
//
//   SourceComms 0.9.266
//   Copyright (C) 2013-2014 Alexandr Duplishchev
//   Licensed under GNU GPL version 3, or later.
//   Page: <https://forums.alliedmods.net/showthread.php?p=1883705> - <https://github.com/d-ai/SourceComms>
//
// *************************************************************************

#if defined _sourcecomms_included
#endinput
#endif
#define _sourcecomms_included

/**
 * @section Int definitions for punishments types.
 */

#define TYPE_MUTE           1   /**< Voice Mute */
#define TYPE_GAG            2   /**< Gag (text chat) */
#define TYPE_SILENCE        3   /**< Silence (mute + gag) */
#define TYPE_UNMUTE         4   /**< Voice Unmute*/
#define TYPE_UNGAG          5   /**< Ungag*/
#define TYPE_UNSILENCE      6   /**< Unsilence */
#define TYPE_TEMP_UNMUTE    14  /**< Temp mute removed */
#define TYPE_TEMP_UNGAG     15  /**< Temp gag removed */
#define TYPE_TEMP_UNSILENCE 16  /**< Temp silence removed */

/* Punishments types */
enum bType {
    bNot = 0,  // Player chat or voice is not blocked
    bSess,  // ... blocked for player session (until reconnect)
    bTime,  // ... blocked for some time
    bPerm // ... permanently blocked
}

/**
 * Sets a client's mute state.
 *
 * @param client        Client index.
 * @param muteState        True to mute client, false to unmute.
 * -------------------------------------Parameters below this line are used only for muteState=true-------------------------------------
 * ----------------------------------for muteState=false these parameters are ignored (saveToDB=false)----------------------------------
 * @param muteLength        Length of punishment in minutes. Value < 0 muting client for session. Permanent (0) is not allowed at this time.
 * @param saveToDB        If true, punishment will be saved in database.
 * @param reason        Reason for punishment.
 * @return                True if this caused a change in mute state, false otherwise.
 */
native bool SourceComms_SetClientMute(int client, bool muteState, int muteLength = -1, bool saveToDB = false, const char[] reason = "Muted through natives");

/**
 * Sets a client's gag state.
 *
 * @param client        Client index.
 * @param gagState        True to gag client, false to ungag.
 * --------------------------------------Parameters below this line are used only for gagState=true--------------------------------------
 * -----------------------------------for gagState=false these parameters are ignored (saveToDB=false)-----------------------------------
 * @param gagLength        Length of punishment in minutes. Value < 0 gagging client for session. Permanent (0) is not allowed at this time.
 * @param saveToDB        If true, punishment will be saved in database.
 * @param reason        Reason for punishment.
 * @return                True if this caused a change in gag state, false otherwise.
 */
native bool SourceComms_SetClientGag(int client, bool gagState, int gagLength = -1, bool saveToDB = false, const char[] reason = "Gagged through natives");

/**
 * Returns the client's mute type
 *
 * @param client    The client index of the player to check mute status
 * @return          The client's current mute type index (see enum bType in the begin).
 */
native bType SourceComms_GetClientMuteType(int client);


/**
 * Returns the client's gag type
 *
 * @param client    The client index of the player to check gag status
 * @return          The client's current gag type index (see enum bType in the begin).
 */
native bType SourceComms_GetClientGagType(int client);

/**
 * Called when added communication block for player.
 *
 * @param client    The client index of the admin who is blocking the client.
 * @param target    The client index of the player to blocked.
 * @param time        The time to blocked the player for (in minutes, 0 = permanent).
 * @param type        The type of block. See section "Int definitions for punishments types".
 * @param reason    The reason to block the player.
 */
forward void SourceComms_OnBlockAdded(int client, int target, int time, int type, char[] reason);

public SharedPlugin __pl_sourcecomms =
{
    name = "sourcecomms++",
    file = "sbpp_comms.smx",
    #if defined REQUIRE_PLUGIN
    required = 1
    #else
    required = 0
    #endif
};

public void __pl_sourcecomms_SetNTVOptional()
{
    MarkNativeAsOptional("SourceComms_SetClientMute");
    MarkNativeAsOptional("SourceComms_SetClientGag");
    MarkNativeAsOptional("SourceComms_GetClientMuteType");
    MarkNativeAsOptional("SourceComms_GetClientGagType");
}
Сверху Снизу