slaptazodis

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
morka
Gana aktyvus vartotojas
Posts: 292
Joined: 2011 Jan 08 00:21

slaptazodis

Post by morka »

kaip su amxx padaryt toki kodavima?

$hash = md5( md5( $salt ) . md5( $password ) );

Arba galite padaryt kad tikrintu is duombazes jau su uzkoduotu kodu?

Code: Select all

#include <amxmodx> #include <amxmisc>#include <sqlx> //new Vector:AdminList; new AdminCount; #define ADMIN_LOOKUP    (1<<0)#define ADMIN_NORMAL    (1<<1)#define ADMIN_STEAM     (1<<2)#define ADMIN_IPADDR    (1<<3)#define ADMIN_NAME      (1<<4) new g_cmdLoopback[16]  // pcvarsnew amx_mode;new amx_password_field;new amx_default_access; public plugin_init(){    register_plugin("Nick system", "1.0", "ct.lt")     register_dictionary("admin.txt")    register_dictionary("common.txt")    amx_mode=register_cvar("amx_mode", "1")    amx_password_field=register_cvar("amx_password_field", "login")    amx_default_access=register_cvar("amx_default_access", "z")     register_cvar("amx_vote_ratio", "0.02")    register_cvar("amx_vote_time", "10")    register_cvar("amx_vote_answers", "1")    register_cvar("amx_vote_delay", "60")    register_cvar("amx_last_voting", "0")    register_cvar("amx_show_activity", "2")    register_cvar("amx_votekick_ratio", "0.40")    register_cvar("amx_voteban_ratio", "0.40")    register_cvar("amx_votemap_ratio", "0.40")     set_cvar_float("amx_last_voting", 0.0)     register_srvcmd("amx_sqladmins", "adminSql")    register_cvar("amx_sql_table", "amx_admins")    register_cvar("amx_sql_group", "0")     register_cvar("amx_sql_host", "127.0.0.1")    register_cvar("amx_sql_user", "root")    register_cvar("amx_sql_pass", "")    register_cvar("amx_sql_db", "amxbans")    register_cvar("amx_sql_type", "mysql")     register_concmd("amx_reloadadmins", "cmdReload", ADMIN_CFG)     format(g_cmdLoopback, 15, "amxauth%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'))     register_clcmd(g_cmdLoopback, "ackSignal")     remove_user_flags(0, read_flags("z"))       // Remove 'user' flag from server rights     new configsDir[64]    get_configsdir(configsDir, 63)        server_cmd("exec %s/amxx.cfg", configsDir)  // Execute main configuration file     server_cmd("amx_sqladmins")} public plugin_cfg(){    set_task(6.1, "delayed_load")} public delayed_load(){    new configFile[128], curMap[64], configDir[128]     get_configsdir(configDir, sizeof(configDir)-1)    get_mapname(curMap, sizeof(curMap)-1)     new i=0;        while (curMap[i] != '_' && curMap[i++] != '^0') {/*do nothing*/}        if (curMap[i]=='_')    {        // this map has a prefix        curMap[i]='^0';        formatex(configFile, sizeof(configFile)-1, "%s/maps/prefix_%s.cfg", configDir, curMap);         if (file_exists(configFile))        {            server_cmd("exec %s", configFile);        }    }     get_mapname(curMap, sizeof(curMap)-1)         formatex(configFile, sizeof(configFile)-1, "%s/maps/%s.cfg", configDir, curMap)     if (file_exists(configFile))    {        server_cmd("exec %s", configFile)    }    } loadSettings(szFilename[]){    new File=fopen(szFilename,"r");        if (File)    {        new Text[512];        new Flags[32];        new Access[32]        new AuthData[44];        new Password[32];                while (!feof(File))        {            fgets(File,Text,sizeof(Text)-1);                        trim(Text);                        // comment            if (Text[0]==';')             {                continue;            }                        Flags[0]=0;            Access[0]=0;            AuthData[0]=0;            Password[0]=0;                        // not enough parameters            if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Access,sizeof(Access)-1,Flags,sizeof(Flags)-1) < 2)            {                continue;            }                        admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));             AdminCount++;        }                fclose(File);    }     if (AdminCount == 1)    {        server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMIN");    }    else    {        server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMINS", AdminCount);    }        return 1;} public adminSql(){    new table[32], group[32], error[128], type[12], errno            new Handle:info = SQL_MakeDbTuple("127.0.0.1","user","pass","db")    new Handle:sql = SQL_Connect(info, errno, error, 127)        get_cvar_string("amx_sql_table", table, 31)    get_cvar_string("amx_sql_group", group, 31)        SQL_GetAffinity(type, 11)        if (sql == Empty_Handle)    {        server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_CON", error)                //backup to users.ini        new configsDir[64]                get_configsdir(configsDir, 63)        format(configsDir, 63, "%s/users.ini", configsDir)        loadSettings(configsDir) // Load admins accounts         return PLUGIN_HANDLED    }     new Handle:query    query = SQL_PrepareQuery(sql,"SELECT `members_display_name`,`members_pass_hash`,`access`,`flags` FROM `%s` WHERE `member_group_id`='%s'", table, group)     if (!SQL_Execute(query))    {        SQL_QueryError(query, error, 127)        server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error)    } else if (!SQL_NumResults(query)) {        server_print("[AMXX] %L", LANG_SERVER, "NO_ADMINS")    } else {                AdminCount = 0                /** do this incase people change the query order and forget to modify below */        new qcolAuth = SQL_FieldNameToNum(query, "members_display_name")        new qcolPass = SQL_FieldNameToNum(query, "members_pass_hash")        new qcolAccess = SQL_FieldNameToNum(query, "access")        new qcolFlags = SQL_FieldNameToNum(query, "flags")                new AuthData[44];        new Password[44];        new Access[32];        new Flags[32];                while (SQL_MoreResults(query))        {            SQL_ReadResult(query, qcolAuth, AuthData, sizeof(AuthData)-1);            SQL_ReadResult(query, qcolPass, Password, sizeof(Password)-1);            SQL_ReadResult(query, qcolAccess, Access, sizeof(Access)-1);            SQL_ReadResult(query, qcolFlags, Flags, sizeof(Flags)-1);                admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));                ++AdminCount;            SQL_NextRow(query)        }            if (AdminCount == 1)        {            server_print("[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMIN")        }        else        {            server_print("[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMINS", AdminCount)        }                SQL_FreeHandle(query)        SQL_FreeHandle(sql)        SQL_FreeHandle(info)    }        return PLUGIN_HANDLED} public cmdReload(id, level, cid){    if (!cmd_access(id, level, cid, 1))        return PLUGIN_HANDLED     //strip original flags (patch submitted by mrhunt)    remove_user_flags(0, read_flags("z"))        admins_flush();     AdminCount = 0    adminSql()     if (id != 0)    {        if (AdminCount == 1)            console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMIN")        else            console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMINS", AdminCount)    }     new players[32], num, pv    new name[32]    get_players(players, num)    for (new i=0; i<num; i++)    {        pv = players[i]        get_user_name(pv, name, 31)        accessUser(pv, name)    }     return PLUGIN_HANDLED} getAccess(id, name[], authid[], ip[], password[]){    new index = -1    new result = 0        static Count;    static Flags;    static Access;    static AuthData[44];    static Password[32];        Count=admins_num();    for (new i = 0; i < Count; ++i)    {        Flags=admins_lookup(i,AdminProp_Flags);        admins_lookup(i,AdminProp_Auth,AuthData,sizeof(AuthData)-1);                if (Flags & FLAG_AUTHID)        {            if (equal(authid, AuthData))            {                index = i                break            }        }        else if (Flags & FLAG_IP)        {            new c = strlen(AuthData)                        if (AuthData[c - 1] == '.')     /* check if this is not a xxx.xxx. format */            {                if (equal(AuthData, ip, c))                {                    index = i                    break                }            }                                   /* in other case an IP must just match */            else if (equal(ip, AuthData))            {                index = i                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);         if (Flags & FLAG_NOPASS)        {            result |= 8            new sflags[32]                        get_flags(Access, sflags, 31)            set_user_flags(id, Access)                        log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip)        }        else         {                    admins_lookup(index,AdminProp_Password,Password,sizeof(Password)-1);             if (equal(password, Password))            {                result |= 12                set_user_flags(id, Access)                                new sflags[32]                get_flags(Access, sflags, 31)            }             else             {                result |= 1                                if (Flags & FLAG_KICK)                {                    result |= 2                }            }        }    }    else if (get_pcvar_float(amx_mode) == 2.0)    {        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} accessUser(id, name[] = ""){    remove_user_flags(id)        new userip[32], userauthid[32], password[32], 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, 31)        new result = getAccess(id, username, userauthid, userip, password)        if (result & 1)    {        client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")    }        if (result & 2)    {        client_cmd(id, "%s", g_cmdLoopback)        return PLUGIN_HANDLED    }        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 (!equali(newname, oldname))    {        accessUser(id, newname)    }     return PLUGIN_CONTINUE} public ackSignal(id){    server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "NO_ENTRY")    return PLUGIN_HANDLED} 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}   
Last edited by morka on 2011 Jul 18 20:16, edited 1 time in total.
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: slaptazodis

Post by aaarnas »

Tai amxx turi tokią pačią funckiją, md5. Darai lygiai taip pat, tik string sujungimas vietoje taško su copy funkcija.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

morka
Gana aktyvus vartotojas
Posts: 292
Joined: 2011 Jan 08 00:21

Re: slaptazodis

Post by morka »

Nezinau as kurioje vietoje yra isgaunamas slaptazodis is kliento puses. Todel nezinau kurioje vietoje reikia uzkoduoti slaptazodi.

Yra tokie stulpeliai

members_display_name

members_pass_hash

members_pass_salt
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: slaptazodis

Post by aaarnas »

Paaiškink ką tau tiksliai reikia padaryti. Be kodą per naujo įkelk. Matai simbolių neatkūrė.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

morka
Gana aktyvus vartotojas
Posts: 292
Joined: 2011 Jan 08 00:21

Re: slaptazodis

Post by morka »

http://xn--arka-f6a.lt/nick_admins_sql.sma

Yra duomenu bazeje uzkoduotas slaptazodis

tokia koduote $hash = md5( md5( $salt ) . md5( $password ) );

salt yra si lentele members_pass_salt

Man reikia kad sutikrintu slaptazodi su duomenu baze kad atitiktu tam reikia ji uzkoduoti paciam plugine kai tikrina jungiantis.
Attachments
nick_admins_sql.sma
(10.12 KiB) Downloaded 833 times
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: slaptazodis

Post by aaarnas »

Taip suprantu pas žaidėją tas slaptažodis turi būti įvestas?
Jei taip, tai šis būdas iš duomenų bazės suveda visus administratorius į amxx ir tada kai žaidėjas jugiasi į serverį pats amxx tikrina ar jis tinka, tad negali padaryti, kad jei neatitinka slaptažodis, negautų privilegijų.
Tada visai kitaip sistemą reikia perdarinėti.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

morka
Gana aktyvus vartotojas
Posts: 292
Joined: 2011 Jan 08 00:21

Re: slaptazodis

Post by morka »

Duomenu bazeje yra uzkoduotas slaptazodis, o zaidejas veda i cfg neuzkoduota slaptazodi. Tai tipo amxx pluginas uzkrauna viska i atminti slaptazodzius ir tik tada tikrina, ar kai zaidejas jungiasi amxx duoda uzklausa i mysql? Nes jei pluginas paima is zaidejo slaptazodi tai galima kaip nors uzkoduoti ji. Arba padaryti prisijungima paciame zaidime aisku atsiskaityciau jei padarytum.
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: slaptazodis

Post by aaarnas »

Aaaa. Ta prasme adminus nuskaitant? Tada galima.

-- 2011 Lie 20 19:43 --

Šito negali padaryti, nes amx pats skaito žaidėjo slaptažodį ir tikrina pas save atmintyje. Tavo atveju tada reiktų visą privilegijų suteikimą daryti pačiam.

Be to kam tau tą slaptažodį koduoti? Nėra jis tokios svarbos. Be to juk be tavęs ir žaidėjo daugiau jo niekas nemato.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

morka
Gana aktyvus vartotojas
Posts: 292
Joined: 2011 Jan 08 00:21

Re: slaptazodis

Post by morka »

Noriu sujungti su forumu del to ir yra uzkoduoti slaptazodziai. Tai galima padaryti uzkoduoti slaptazodi ir sutikrinti su istrauktais is mysql?
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: slaptazodis

Post by aaarnas »

Įmanoma. Tada reikės nenaudoti default amx admin registracijos, o kai žaidėjas jungiasi į serverį, tikrinti jo duomenis, ar jam priklauso privilegijos, ar sutampa slaptažodžiai ir tada su set_user_flags nustatyti rankiniu būdu privilegijas.

Be to jei galvoji iš serverio žaidėjams saugoti slaptažodžius config.cfg faile, atmink, kad daug kas užsidėjęs read-only, dėl to išjungus cs, slaptažodžio config.cfg faile neišsaugos.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 11 guests