Модуль grip

Сообщения
83
Реакции
7
Ошибка
L 09/19/2019 - 15:33:59: [AMXX] Module "cstrike/addons/amxmodx/modules/grip_amxx_i386.so" failed to load (/lib/libc.so.6: version `GLIBC_2.18' not found (required by cstrike/addons/amxmodx/modules/grip_amxx_i386.so))
L 09/19/2019 - 15:33:59: Error:
L 09/19/2019 - 15:33:59: [AMXX] Module is not a valid library (file "cstrike/addons/amxmodx/modules/grip_amxx_i386.so")

L 09/19/2019 - 15:34:00: [AMXX] Plugin "bg_provider_iphub.amxx" failed to load: Module/Library "grip" required for plugin. Check modules.ini.
ОС
Linux
Amx Mod X
AMX Mod X 1.9.0.5249 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Jun 19 2019 13:31:53
Built from: https://github.com/alliedmodders/amxmodx/commit/6cecb34
Build ID: 5249:6cecb34
Core mode: JIT+ASM32
Билд
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.7.0.690-dev
Build date: 00:03:52 Sep 13 2019 (1980)
Build from: https://github.com/dreamstalker/rehlds/commit/d870d6b
ReGamedll
ReGameDLL version: 5.11.0.403-dev
Build date: 12:42:17 Sep 17 2019
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/8c3cd4f
Версия Metamod
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
Список метамодулей
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.0.133 ini Start Never
[ 2] Ultimate Unprecacher RUN - unprecacher_i386.so vBeta 2.5.3 ini Chlvl Chlvl
[ 3] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 4] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 5] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC3 ini ANY ANY
[ 6] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5249 ini Start ANY
[ 7] WHBlocker RUN - whblocker_mm_i386.so v1.5.695 ini Chlvl ANY
[ 8] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 9] MySQL RUN - mysql_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[10] GeoIP RUN - geoip_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[11] ReAPI RUN - reapi_amxx_i386.so v5.10.0.188-dev pl6 ANY Never
[12] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.1 pl6 ANY Never
[13] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[14] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[15] Engine RUN - engine_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[16] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
[17] Fun RUN - fun_amxx_i386.so v1.9.0.5249 pl6 ANY ANY
17 plugins, 17 running
Список плагинов
Currently loaded plugins:
name version author file status
[ 1] Admin Loader 3.5 neygomon admin_loader.am running
[ 2] FreshBans 1.3.8b kanagava fresh_bans_138. running
[ 3] DopBan 3.0.3b kanagava dop_ban303.amxx running
[ 4] Bypass Guard 17.09.2019 mx?! bypass_guard.am running
[ 5] unknown unknown unknown bg_provider_iph bad load
[ 6] [BG] Provider: GeoIP 0.2 mx?! bg_provider_geo running
[ 7] ReAimDetector API 0.2.1 ReHLDS Team reaimdetector.a running
[ 8] Aliases checker 1.0.3 kanagava alias_detector. running
[ 9] Lite NightMode 1.1 neygomon lite_nightmode. running
[ 10] Block grande info 1.0 neygomon BlockGrenadeInf running
[ 11] CSStatsX SQL 0.7.4+2 serfreeman1337 csstatsx_sql.am running
[ 12] [Reapi] Custom Models 1.6.1 neygomon custom_models.a running
[ 13] Advanced Experience Sy 0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 14] AES: Bonus System 0.5.9 Vega serfreeman1337/s aes_bonus_syste running
[ 15] AES: Bonus CSTRIKE 0.5.9.1 [R serfreeman1337/s aes_bonus_cstri running
[ 16] AES: CStrike Addon 0.5.9 [REA serfreeman1337/s aes_exp_cstrike running
[ 17] AES: Informer 0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 18] AES: Admin Tools 0.5.9 [REA serfreeman1337/s aes_exp_editor. running
[ 19] AES: StatsX 0.5.9 [REA serfreeman1337/s aes_statsx_cstr running
[ 20] V.I.P Custom Weapons 1.0.0 Vaqtincha vip_custom.amxx running
[ 21] V.I.P Custom DEAGLE 1.0.0 Vaqtincha custom_deagle.a running
[ 22] V.I.P Custom M4A1 1.0.0 Vaqtincha custom_m4a1.amx running
[ 23] V.I.P Custom AK-47 1.0.0 Vaqtincha custom_ak47.amx running
[ 24] V.I.P Custom AWP 1.0.0 Vaqtincha custom_awp.amxx running
[ 25] [ReAPI] AdminFreeLook 1.0 ReHLDS Team adminfreelook.a running
[ 26] Players Menu 1.9.0.5249 AMXX Dev Team plmenu.amxx running
[ 27] Admin Commands 1.9.0.5249 AMXX Dev Team admincmd.amxx running
[ 28] AdminListen 2.3x /dev/ urandom adminlisten.amx running
[ 29] Admin Check 1.51 OneEyed admin_check.amx running
[ 30] SS Menu 1.0 lalka screnmenu.amxx running
[ 31] Admin Votes 1.9.0.5249 AMXX Dev Team adminvote.amxx running
[ 32] Lite Kill Assist 1.17 neygomon lite_assist.amx running
[ 33] Commands Menu 1.9.0.5249 AMXX Dev Team cmdmenu.amxx running
[ 34] Maps Menu 1.9.0.5249 AMXX Dev Team mapsmenu.amxx running
[ 35] unknown unknown unknown GenServerMenu.a running
[ 36] Admin Gag 1.0 AndrewZ gag_menu.amxx running
[ 37] CS Misc. Stats 1.9.0.5249 AMXX Dev Team miscstats.amxx running
[ 38] NextMap 1.9.0.5249 AMXX Dev Team nextmap.amxx running
[ 39] Restrict Weapons 1.9.0.5249 AMXX Dev Team restmenu.amxx running
[ 40] StatsX 1.9.0.5249 AMXX Dev Team statsx.amxx running
[ 41] Stats Configuration 1.9.0.5249 AMXX Dev Team statscfg.amxx running
[ 42] CS Stats Logging 1.9.0.5249 AMXX Dev Team stats_logging.a running
[ 43] TimeLeft 1.9.0.5249 AMXX Dev Team timeleft.amxx running
[ 44] mute menu 1.0 cheap_suit mute.amxx running
[ 45] GHW Auto Message Displ 3.1b GHW_Chronic/Safe GHW_Message_Dis running
[ 46] [Y18] DeagsMapManager 3.23 Deags/AMXX Commu deagsmapmanager running
[ 47] C4 CD Voice 1.1 TTuCTOH c4cdvoice.amxx running
[ 48] Automatic knife duel 0.3 JGHG automatic_knife running
[ 49] unknown unknown unknown resetscore.amxx running
[ 50] Afk Control 0.5.1 neygomon afk_control.amx running
[ 51] Fake Ping 1.1 MeRcyLeZZ/gyxoBk FakePing.amxx running
[ 52] Damager 0.1b Subb98 damager.amxx running
[ 53] IP 2.1 Bl0ck IP.amxx running
[ 54] BombDefuse SuddenDeath 0.1 serfreeman1337 BombDefuse_Sudd running
[ 55] Free_parachute 1.1 xD Free_parachute. running
[ 56] Server Menu 0.1 JIo6koBbIu BoJIo server_menu.amx running
[ 57] PsychoStats Plugin 1.1 Stormtrooper ps_heatmaps.amx running
[ 58] nice Demo 1.0 sector nice_demo.amxx running
[ 59] Ping Checker 26.0.1 RC1 h1k3 ping_checker.am running
[ 60] Killa HP 1.0 jas0n killa_hp.amxx running
[ 61] AMX Slay Losers 1.2 [email protected] slaylosers.amxx running
[ 62] Knife warmup 0.1 Subb98 knife_warmup.am running
[ 63] [ReAPI] AWPoff 1.2 PAffAEJIkA :3 awp_off.amxx running
[ 64] Fake Map 0.2 Vaqtincha Mapname.amxx running
[ 65] Nade Health 0.1 Dorus new_health_nade running
[ 66] Knives Shop 1.2 OverGame knifes.amxx running
[ 67] [ReAPI] No Team Flash 1.0 ReHLDS Team noteamflash.amx running
[ 68] No Slash 0.1 Flash NoSlash.amxx running
[ 69] World Model Group 1.1 w0w world_model_gro running
[ 70] [grey_models] 1.1 greykoo grey_csgo_model running
[ 71] Kill Supplybox 1.0 Exodus Dex_Supplybox.a running
[ 72] Lite Translit 2.8 neygomon lite_translit.a running
( 5) Load fails: Module/Library "grip" required for plugin. Check modules.ini.
72 plugins, 71 running
Автор плагина
Inline и BlackSignature
Версия плагина
версия grip 0.1.5-beta . версия bg_provider_iphub 0.1
Исходный код
/*
Данный плагин является модулем-провайдером информации для основного плагина (ядра), - Bypass Guard.
Данный плагин может как предоставлять AS-номер, так и проверять IP-адрес на proxy/VPN (регулируется кварами).

Используемый сервис: https://iphub.info/ (требуется регистрация; вход через прокси, если не открывается)
Описание API: https://iphub.info/api

Плюсы:
* Высокий уровень точности проверки на proxy/VPN
* Возможность задать несколько ключей

Минусы:
* Необходима регистрация
* Зачастую невнятное описание провайдера при получении AS-номера

Использование:
1) Зарегистрируйтесь на сервисе и получите бесплатный ключ (используйте прокси, если сайт не открывается)
2) Пропишите ключ (на новой строке) в конфиг 'iphub_api_keys.ini'
3) Запустите плагин
4) Отредактируйте квары плагина в конфиге в 'configs/plugins'
5) Смените карту, чтобы новые значения кваров вступили в силу
*/

new const PLUGIN_VERSION[] = "0.1"

/* ----------------------- */

#define AUTO_CFG // Создавать конфиг с кварами в 'configs/plugins', и запускать его ?

const MAX_KEYS = 5 // Макс. кол-во API-ключей. Увеличить при необходимости.

new const KEY_FILE_NAME[] = "iphub_api_keys.ini"

/* ----------------------- */

#include <amxmodx>
#include <grip>
#include <bypass_guard>

#define chx charsmax
#define chx_len(%0) charsmax(%0) - iLen

#define MAX_API_KEY_LEN 64

enum _:CHECK_TYPE_ENUM {
CHECK_TYPE__AS,
CHECK_TYPE__PROXY
}

enum _:CHECK_EXT_DATA_STRUCT {
CHECK_EXT_DATA__TYPE,
CHECK_EXT_DATA__CHECK_TRIES,
CHECK_EXT_DATA__PLAYER_USERID,
CHECK_EXT_DATA__IP[MAX_IP_LENGTH]
}

enum _:CHECK_CACHE_DATA_STRUCT {
CHECK_CACHE__AS[MAX_AS_LEN],
CHECK_CACHE__DESC[MAX_DESC_LEN],
bool:CHECK_CACHE__IS_PROXY
}

enum _:CVAR_ENUM {
CVAR__USE_FOR_AS,
CVAR__USE_FOR_PROXY,
CVAR__BAN_SUSPICIOUS
}

new g_eCvar[CVAR_ENUM]
new bool:g_bPluginEnded
new Trie:g_tCheckExtData
new Trie:g_tCheckCache
new g_szApiKey[MAX_KEYS][MAX_API_KEY_LEN]
new g_iCurrentKey
new g_iLoadedKeys

/* ----------------------- */

public plugin_init() {
register_plugin("[BG] Provider: iphub.info", PLUGIN_VERSION, "mx?!")

g_tCheckExtData = TrieCreate()
g_tCheckCache = TrieCreate()

bind_pcvar_num( create_cvar("bg_iphub_use_for_as", "1",
.description = "Use this provider for getting AS number?^n\
Set this cvar to 0 if you use another plugin for that purpose"),
g_eCvar[CVAR__USE_FOR_AS]
);

bind_pcvar_num( create_cvar("bg_iphub_use_for_proxy", "1",
.description = "Use this provider for proxy status checking?^n\
Set this cvar to 0 if you use another plugin for that purpose"),
g_eCvar[CVAR__USE_FOR_PROXY]
);

bind_pcvar_num( create_cvar("bg_iphub_ban_suspicious", "0",
.description = "Count suspicious IPs as proxy (can bring false detections)?^n\
Has no effect if 'bg_iphub_use_for_proxy' is set to 0"),
g_eCvar[CVAR__BAN_SUSPICIOUS]
);

#if defined AUTO_CFG
AutoExecConfig()
#endif

/* --- */

func_LoadApiKeys()
}

/* ----------------------- */

public BypassGuard_RequestAsInfo(pPlayer, szIP[], iMaxTries) {
if(!g_eCvar[CVAR__USE_FOR_AS]) {
return PLUGIN_CONTINUE
}

new eCheckCache[CHECK_CACHE_DATA_STRUCT]

// NOTE: 'bg_get_as_by_ip' command depends on this cache (instant return), see main plugin
if(TrieGetArray(g_tCheckCache, szIP, eCheckCache, sizeof(eCheckCache))) {
BypassGuard_SendAsInfo( pPlayer, eCheckCache[CHECK_CACHE__AS],
eCheckCache[CHECK_CACHE__DESC], .bSuccess = true );

return PLUGIN_HANDLED
}

func_MakeRequest(pPlayer, szIP, iMaxTries, CHECK_TYPE__AS)
return PLUGIN_HANDLED
}

/* ----------------------- */

public BypassGuard_RequestProxyStatus(pPlayer, szIP[], iMaxTries) {
if(!g_eCvar[CVAR__USE_FOR_PROXY]) {
return PLUGIN_CONTINUE
}

new eCheckCache[CHECK_CACHE_DATA_STRUCT]

// NOTE: 'bg_check_ip' command depends on this cache (instant return), see main plugin
if(TrieGetArray(g_tCheckCache, szIP, eCheckCache, sizeof(eCheckCache))) {
BypassGuard_SendProxyStatus(pPlayer, eCheckCache[CHECK_CACHE__IS_PROXY], .bSuccess = true)
return PLUGIN_HANDLED
}

func_MakeRequest(pPlayer, szIP, iMaxTries, CHECK_TYPE__PROXY)
return PLUGIN_HANDLED
}

/* ----------------------- */

func_MakeRequest(pPlayer, szIP[], iMaxTries, iCheckType) {
new iDataID = func_GetCheckID()

new eExtData[CHECK_EXT_DATA_STRUCT]

eExtData[CHECK_EXT_DATA__TYPE] = iCheckType
eExtData[CHECK_EXT_DATA__CHECK_TRIES] = iMaxTries
eExtData[CHECK_EXT_DATA__PLAYER_USERID] = get_user_userid(pPlayer) // return 0 if out of range
copy(eExtData[CHECK_EXT_DATA__IP], MAX_IP_LENGTH - 1, szIP)

TrieSetArray(g_tCheckExtData, fmt("%i", iDataID), eExtData, sizeof(eExtData))

new GripRequestOptions:hRequestOptions = grip_create_default_options(.timeout = -1.0)

grip_options_add_header(hRequestOptions, "X-Key", g_szApiKey[g_iCurrentKey])

grip_request( fmt("http://v2.api.iphub.info/ip/%s", szIP),
Empty_GripBody, GripRequestTypeGet, "OnCheckComplete", hRequestOptions, iDataID );

grip_destroy_options(hRequestOptions)
}

/* ----------------------- */

func_GetCheckID() {
new iDataID

do {
iDataID = random_num(0, 10000)
}
while(TrieKeyExists(g_tCheckExtData, fmt("%i", iDataID)))

return iDataID
}

/* -------------------- */

public OnCheckComplete(iDataID) {
if(g_bPluginEnded) {
return
}

new eExtData[CHECK_EXT_DATA_STRUCT]

if(!TrieGetArray(g_tCheckExtData, fmt("%i", iDataID), eExtData, sizeof(eExtData))) {
BypassGuard_LogError( fmt("[Error] Can't find data for check with id %i", iDataID) )
return
}

TrieDeleteKey(g_tCheckExtData, fmt("%i", iDataID))

new pPlayer = find_player("k", eExtData[CHECK_EXT_DATA__PLAYER_USERID])

func_AgregateCheckResponse(pPlayer, iDataID, eExtData)
}

/* -------------------- */

func_AgregateCheckResponse(pPlayer, iDataID, eExtData[CHECK_EXT_DATA_STRUCT]) {
new szBuffer[MAX_RESPONSE_LEN]

new GripResponseState:iResponseState = grip_get_response_state()

if(iResponseState != GripResponseStateSuccessful) {
if(func_TryRetry(pPlayer, eExtData, iDataID)) {
return
}

BypassGuard_LogError( fmt("Response state: %i", iResponseState) )

if(iResponseState == GripResponseStateError && grip_get_error_description(szBuffer, chx(szBuffer))) {
BypassGuard_LogError( fmt("%s", szBuffer) )
}

return
}

new GripHTTPStatus:iHttpStatus = grip_get_response_status_code()

if(iHttpStatus != GripHTTPStatusOk) {
/* {
"code":"TooManyRequests",
"message":"You've exceeded your rate limit of 1000 request(s) per 86400 second(s)."
} */
if(iHttpStatus == GripHTTPStatusTooManyRequests) {
func_TrySwitchToNextKey()
}

if(func_TryRetry(pPlayer, eExtData, iDataID)) {
return
}

BypassGuard_LogError( fmt("HTTP status: %i", iHttpStatus) )

if(grip_get_response_body_string(szBuffer, chx(szBuffer))) {
BypassGuard_LogError( fmt("Response body: %s", szBuffer) )
}

return
}

new GripJSONValue:hResponceBody = grip_json_parse_response_body(szBuffer, chx(szBuffer))

if(hResponceBody == Invalid_GripJSONValue) {
if(func_TryRetry(pPlayer, eExtData, iDataID)) {
return
}

if(szBuffer[0]) {
BypassGuard_LogError( fmt("Error text: %s", szBuffer) )
}

if(grip_get_response_body_string(szBuffer, chx(szBuffer))) {
BypassGuard_LogError( fmt("Response body: %s", szBuffer) )
}

return
}

new eCheckCache[CHECK_CACHE_DATA_STRUCT]

new GripJSONValue:hAsNumber = grip_json_object_get_value(hResponceBody, "asn")
new iAsNumber = grip_json_get_number(hAsNumber)
grip_destroy_json_value(hAsNumber)
formatex(eCheckCache[CHECK_CACHE__AS], MAX_AS_LEN - 1, "%i", iAsNumber)

new GripJSONValue:hIsp = grip_json_object_get_value(hResponceBody, "isp")
grip_json_get_string(hIsp, eCheckCache[CHECK_CACHE__DESC], MAX_DESC_LEN - 1)
grip_destroy_json_value(hIsp)

new GripJSONValue:hProxy = grip_json_object_get_value(hResponceBody, "block")
new iProxy = grip_json_get_number(hProxy)
grip_destroy_json_value(hProxy)

if(iProxy == 1 || (g_eCvar[CVAR__BAN_SUSPICIOUS] && iProxy == 2)) {
eCheckCache[CHECK_CACHE__IS_PROXY] = true
}

TrieSetArray(g_tCheckCache, eExtData[CHECK_EXT_DATA__IP], eCheckCache, sizeof(eCheckCache))

grip_destroy_json_value(hResponceBody)

if(pPlayer) {
if(eExtData[CHECK_EXT_DATA__TYPE] == CHECK_TYPE__AS) {
BypassGuard_SendAsInfo( pPlayer, eCheckCache[CHECK_CACHE__AS],
eCheckCache[CHECK_CACHE__DESC], .bSuccess = true );
}
else { // CHECK_TYPE__PROXY
BypassGuard_SendProxyStatus(pPlayer, eCheckCache[CHECK_CACHE__IS_PROXY], .bSuccess = true)
}
}
}

/* -------------------- */

bool:func_TryRetry(pPlayer, eExtData[CHECK_EXT_DATA_STRUCT], iDataID) {
static const szCheckType[CHECK_TYPE_ENUM][] = {
"AS number",
"proxy status"
}

if(!pPlayer || --eExtData[CHECK_EXT_DATA__CHECK_TRIES] == 0) {
BypassGuard_LogError( fmt( "[Error] Can't get %s for IP '%s'",
szCheckType[ eExtData[CHECK_EXT_DATA__TYPE] ], eExtData[CHECK_EXT_DATA__IP] ) );

if(pPlayer) {
if(eExtData[CHECK_EXT_DATA__TYPE] == CHECK_TYPE__AS) {
BypassGuard_SendAsInfo(pPlayer, .szAsNumber = "", .szDesc = "", .bSuccess = false)
}
else { // CHECK_TYPE__PROXY
BypassGuard_SendProxyStatus(pPlayer, .IsProxy = false, .bSuccess = false)
}
}

return false

}

// else ->

TrieSetArray(g_tCheckExtData, fmt("%i", iDataID), eExtData, sizeof(eExtData))

new GripRequestOptions:hRequestOptions = grip_create_default_options(.timeout = -1.0)

grip_options_add_header(hRequestOptions, "X-Key", g_szApiKey[g_iCurrentKey])

grip_request( fmt("http://v2.api.iphub.info/ip/%s", eExtData[CHECK_EXT_DATA__IP]),
Empty_GripBody, GripRequestTypeGet, "OnCheckComplete", hRequestOptions, iDataID );

grip_destroy_options(hRequestOptions)

return true
}

/* ----------------------- */

func_TrySwitchToNextKey() {
if(g_iCurrentKey < g_iLoadedKeys - 1) {
BypassGuard_LogError( fmt( "[Error] Request limit for API key '%i', switching to API key '%i' of '%i'",
g_iCurrentKey + 1, ++g_iCurrentKey + 1, g_iLoadedKeys ) );
}
else {
g_iCurrentKey = 0
BypassGuard_LogError( fmt("[Error] Request limit reached, and no more available API keys!") )
}
}

/* ----------------------- */

func_LoadApiKeys() {
new szFolderName[32]
BypassGuard_GetPluginFolderName(szFolderName, chx(szFolderName))

new szPath[PLATFORM_MAX_PATH]
new iLen = get_localinfo("amxx_configsdir", szPath, chx(szPath))
formatex(szPath[iLen], chx_len(szPath), "/%s/%s", szFolderName, KEY_FILE_NAME)

new hFile = fopen(szPath, "r")

if(!hFile) {
if(file_exists(szPath)) {
BypassGuard_LogError( fmt("[Error] Can't open existing '%s'", KEY_FILE_NAME) )
return
}

hFile = fopen(szPath, "w")

if(!hFile) {
BypassGuard_LogError( fmt("[Error] Can't create default '%s'", KEY_FILE_NAME) )
return
}

fputs( hFile,
"; Ключи к API iphub'а. Зарегистрируйтесь на https://iphub.info/ , получите бесплатный ключ (1000 проверок/сутки), и введите его сюда^n\
; При необходимости вы можете указать несколько ключей (по 1 ключу на строку)^n\
; API-keys for iphub. Register at https://iphub.info/ , get free key (1000 checks/day), and set it here^n\
; You can set multiple keys if you need to (1 key per row)"
);

fclose(hFile)
return
}

new szBuffer[MAX_API_KEY_LEN + 8]

while(!feof(hFile)) {
if(g_iLoadedKeys == MAX_KEYS) {
BypassGuard_LogError( fmt("[Error] Keys limit reached! Increase 'MAX_KEYS' in .sma !") )
break
}

fgets(hFile, szBuffer, chx(szBuffer))
trim(szBuffer)

if(szBuffer[0] == ';' || !szBuffer[0]) {
continue
}

copy(g_szApiKey[g_iLoadedKeys++], MAX_API_KEY_LEN - 1, szBuffer)
}

fclose(hFile)
}

/* ----------------------- */

public plugin_end() {
g_bPluginEnded = true

if(g_tCheckExtData) {
TrieDestroy(g_tCheckExtData)
TrieDestroy(g_tCheckCache)
}
}
Модуль grip не стартует и поэтому не запускается плагин bg_provider_iphub. Помогите люди добрые
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
airat, читайте другие темы. Данный модуль собран с более новой версией GLIBC. В то время как на вашем хостинге стоит версия постарее. Нужн оперекомпилировать модуль на старой версии, чтобы он работал.
 
Сообщения
83
Реакции
7
fantom, дело в том что на хостинге говорят что для centos 2.17 это крайняя версия.
вот ответ -
"Пусть автор компилирует модуль с GLIB 2.17, для centos - это последняя версия. "

Inline помоги (
 
Сообщения
83
Реакции
7
fantom, Да я читал. на хостинге ответили .
разве нельзя обновить GLIBS?
https://www.myarena.ru/avatars/8f788f3710d9e708f23ce0f7b76f16d9.jpgСообщение от специалиста технической поддержки Ивана в 19.09.2019 16:16
Для centos 7 нет, вы можете заказать VDS, установить ОС debian или ubuntu и там будет более новый glibc, либо просить автора скомпилировать модуль для 2.17, тогда он будет работать на вашем сервере.
 
Сообщения
83
Реакции
7
есть умельцы кто сможет скомпилировать GRIP под GLIBC_2.17 ?
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
airat, вчера питался. Там не все так просто как казалось. С Rust частью модуля вообше никаких проблем. Проблемы с частью написаных на С++
 
Сообщения
48
Реакции
209
Помог
1 раз(а)
fantom, а что за проблемы и как ты делаешь? может есть вариант проще чем я делал, компилил на os с требуемой версией glibc) ещё и компилятор пришлось компилить
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Polarhigh, я так и пробовал делать. Мне предоставили сервер с центос и нужными библиотеками (как оказалось на центосе крайняя версия 2.17). И если раст часть у меня получилось скомпилить? То плюсовую нет? Я не разработчик и не знаю как это сделать. Возможно у вас получится
 
Сообщения
83
Реакции
7
Polarhigh, может быть у вас получится, помогите пожалуйста ?
 
Сообщения
48
Реакции
209
Помог
1 раз(а)
не, сорян, у меня нет времени на это
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу