AdminMod.de https://www.adminmod.de/ |
|
Per passwordeingabe adminrechte https://www.adminmod.de/viewtopic.php?t=8874 |
Seite 1 von 1 |
Autor: | 7ime2die [ 08.10.2004, 22:16 ] |
Betreff des Beitrags: | Per passwordeingabe adminrechte |
Halli hallo, ich mochte einen lan- cw server ans laufen bringen. Jeweils einer soll adminrechte bekommen wenn er ein pw eingibt. Kann mir jemand weiterhelfen, das das nur per pw eingabe klappt. Also name egal ip egal wonid sowieso egal ....wäre nice dakeschön |
Autor: | [WING] Black Knight [ 08.10.2004, 22:38 ] |
Betreff des Beitrags: | |
Hmmm, wenn ich das richtig verstanden habe, müsste da was in Richtung admin_highlander und Regex-Nutzung in der users.ini rauskommen. Könntest Du mal ein Beispiel geben? |
Autor: | Sir Drink a lot [ 09.10.2004, 12:42 ] |
Betreff des Beitrags: | |
hm... es gibt also ein globales Passwort und wer es als erster eingibt, der ist dann Admin? Also eine Plugin-Idee: 1. users.ini ist am Anfang leer 2. nach globaler Passworteingabe wird der Spielername/IP:zufällig generiertes Password:131071 in die users.ini eingetragen 3. ein reload wird durchgeführt 4. ein admin_login "zufällig generiertes Password" wird bei dem Spieler durchgeführt. Spieler ist Admin. 5. verlässt der Spieler den Server, wird die users.ini wieder geleert und eine Freigabe für ein neuen login durchgeführt. Leider ist das mit dem Spielernamen so eine Sache...Bei Namensänderung im Spiel sind die Rechte wieder weg und er muss erneut ein login ausführen. (Er darf als einzigster den login erneut durchführen!) Ich probiere es doch mal mit der IP des Spielers. *Mit der IP klappt es auf jeden Fall* |
Autor: | Sir Drink a lot [ 09.10.2004, 12:52 ] |
Betreff des Beitrags: | |
Also der Spieler, der als erster login test in der Konsole eingibt, wird in die users.ini geschrieben. Über Sinn/Unsinn des Plugins kann jetzt diskutiert werden Code: /* Command: login (ACCESS_ALL) 1. get users_file 2. login global password 2.1 create random password 2.2 write IP:random password:131071 to users.ini 2.3 reload() 2.4 execute admin_login "random password" by client */ #include <string> #include <admin> #include <adminlib> #define ACCESS_CONSOLE 131072 new g_Version[MAX_TEXT_LENGTH]="0.8"; new g_GlobalPassword[MAX_TEXT_LENGTH]; new g_UsersIni[MAX_TEXT_LENGTH]; new g_UsersPassword[10]; new g_login; new g_User[MAX_PLAYERS]; public plugin_init() { plugin_registerinfo("Became Admin","Enter only global password to become admin",g_Version); plugin_registercmd("login","login",ACCESS_ALL,"login <global password>: became admin"); getstrvar("users_file",g_UsersIni,MAX_TEXT_LENGTH); get_vaultdata("GLOBAL_PASSWORD",g_GlobalPassword,MAX_TEXT_LENGTH); //command can only be used from server console plugin_registercmd("change_login","change_login",ACCESS_CONSOLE,"change_login <new global password>: change global password"); return PLUGIN_CONTINUE; } public change_login(HLCommand,HLData,HLUserName,UserIndex) { new Data[MAX_DATA_LENGTH]; new Text[MAX_TEXT_LENGTH]; convert_string(HLData,Data,MAX_DATA_LENGTH); set_vaultdata("GLOBAL_PASSWORD",Data); snprintf(Text,MAX_DATA_LENGTH,"[ADMIN LOGIN] Changed global password '%s' to '%s'",g_GlobalPassword,Data); log(Text); remove_admin(); strcpy(g_GlobalPassword,Data,MAX_TEXT_LENGTH); return PLUGIN_HANDLED; } public login(HLCommand,HLData,HLUserName,UserIndex) { if(!g_login || g_User[UserIndex]){ new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; new IP[MAX_NAME_LENGTH]; convert_string(HLData,Data,MAX_DATA_LENGTH); if(strcmp(Data,g_GlobalPassword)==0){ convert_string(HLUserName,User,MAX_NAME_LENGTH); get_userIP(User,IP,MAX_NAME_LENGTH); resetfile(g_UsersIni); snprintf(g_UsersPassword,10,"%i%i%i%i%i",random(9),random(9),random(9),random(9),random(9)); snprintf(Data,MAX_DATA_LENGTH,"%s:%s:131071",IP,g_UsersPassword); writefile(g_UsersIni,Data,-1); g_User[UserIndex]=1; g_login=1; reload(); snprintf(Data,MAX_TEXT_LENGTH,"admin_login ^"%s^"",g_UsersPassword); execclient(User,Data); }else{ selfmessage("[ADMIN LOGIN] Sorry. Wrong password!"); } }else{ selfmessage("[ADMIN LOGIN] Sorry. Someone else became admin!"); } return PLUGIN_HANDLED; } public plugin_disconnect(HLUserName,UserIndex) { remove_admin(); return PLUGIN_CONTINUE; } public plugin_connect(HLUserName,HLIP, UserIndex) { remove_admin(); return PLUGIN_CONTINUE; } remove_admin(){ new i; new maxplayers=maxplayercount(); for(i=1;i<=maxplayers;i++){ if(g_User[i]){ g_login=0; g_User[i]=0; resetfile(g_UsersIni); reload(); } } } |
Autor: | 7ime2die [ 09.10.2004, 13:16 ] |
Betreff des Beitrags: | |
vielen dank für eure ultraschnelle hilfe. ich will das ganze mal an einem bespiel verdeutlichen Auf einer lan soll ein clanwar auf einem vom lanveranstalter gestellen server ausgetragen werden. Ein Spieler aus dem match soll als admin fungieren und die für nen cw wichtigen befehle ausführen drüfen die da wären restart round, map, csay allerdings will ich nicht auf dem server vorher die rechte für den spieler erstellen, sondern ihm nur ien pw geben womit er dann automatisch die richtigen rechte bekommt. das ganze soll auf einem 1.5 linux server laufen ich hätte das vielleicht vorher schon so beschreiben sollen |
Autor: | Sir Drink a lot [ 09.10.2004, 13:32 ] |
Betreff des Beitrags: | |
ok. das Plugin oben ermittelt und trägt alles automatisch in die users.ini ein, wenn ein Spieler das Passwort mit login passwort in der Konsole eingibt und verifiziert ihn dann auch automatisch als Admin. Er muss nur das login password auf jeder Map einmal in der Konsole ausführen. Ok. Jetzt müsste man noch für den Server-Admin einen Befehl hinterlegen, damit er das globale Passwort auch ändern kann. So..jetzt habe ich einen Befehl change_login <new password> eingebaut. Dieser Befehl kann aber nur direkt am Server in der Console ausgeführt werden. admin_cmd change_login "neues globales Password" |
Autor: | [WING] Black Knight [ 09.10.2004, 13:53 ] |
Betreff des Beitrags: | |
use_regex auf 1 stellen. In users.ini: .*:<Passwort>:<benötigte Accesslevel> z.B. für den CW-Creator .*:cwpass:256 Bitte mal ausprobieren. Das müsste eigentlich so funktionieren. |
Autor: | Sir Drink a lot [ 09.10.2004, 14:35 ] |
Betreff des Beitrags: | |
stimmt. Warum kompliziert, wenn es auch einfach geht Das Regex funktioniert. Im Accesslevel bitte nicht Reserved Nickname verwenden. und admin_highlander auf 1 in der adminmod.cfg setzen |
Autor: | 7ime2die [ 09.10.2004, 15:53 ] |
Betreff des Beitrags: | |
jetzt hab ich das problem das ich egal mit welchem name in den server joine gekickt werde weil der name reserviert ist |
Autor: | Sir Drink a lot [ 09.10.2004, 15:56 ] |
Betreff des Beitrags: | |
Zitat: Im Accesslevel bitte nicht Reserved Nickname verwenden.
16384 darf in der Addition der Level nicht verwendet werdenUnd der Befehl, um sich dann einzuloggen ist: admin_login <password aus der users.ini> |
Autor: | 7ime2die [ 09.10.2004, 16:30 ] |
Betreff des Beitrags: | |
also ich habe da eingetragen .*:(password):66 geht auch alles wunderbar. Nur wenn ich jetzt noch einen nutzer anlege dann kommt wieder die message mit dem nickname reserved auch wenn der kein nick protect hat |
Autor: | [WING] Black Knight [ 09.10.2004, 16:45 ] |
Betreff des Beitrags: | |
Die zusätzlichen Nutzer müssen VOR dem .* Eintrag in die users.ini geschrieben werden. |
Autor: | 7ime2die [ 09.10.2004, 17:16 ] |
Betreff des Beitrags: | |
ok war ne schwere geburt aber jetzt geht alles vielen dank |
Autor: | [WING] Black Knight [ 09.10.2004, 17:55 ] |
Betreff des Beitrags: | |
NP. Schön, dass es jetzt klappt. Ungewöhnliche Konfigurationen funktionieren meist nicht auf Anhieb. |
Seite 1 von 1 | Alle Zeiten sind UTC+01:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |