←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Zmiana hasła rcon

  • +
  • -
Snickers - zdjęcie Snickers 18.02.2010

Witam. Chciałem napisać plugin, który co dwie godziny ustawia losowe hasło rcon do serwera. No i niby coś tam napisałem, niby się skompilowało ale nie wiem czy takie coś przejdzie :)

#include <amxmodx>
new const duza[][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","Q","U","W","V","X","Y","Z"}
new const mala[][] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","q","u","w","v","x","y","z"}
new const cyfra[][] = {"1","2","3","4","5","6","7","8","9","0"}
public plugin_init()
{
	register_plugin("HasloRcon","1.0","Snickers");
	set_task ( 7200.0, "rcon", _, _, _, "b");
}
public rcon()
{
	server_cmd("rcon_password ^"%s%s%s%s%s%s^"", mala[random_num(0,26)],duza[random_num(0,26)],mala[random_num(0,26)],mala[random_num(0,26)],cyfra[random_num(0,10)],duza[random_num(0,26)]);
}

I mam kilka pytań. Czy taki plugin będzie działał skutecznie ? Czy da radę zrobić, by plugin zmieniał to hasło o pełnych godzinach (0:00, 2:00 itd.), albo np. gdy ktoś wpisze komendę "rcon rcon_password "jakies haslo"" to zaczyna odliczać 2 h i po tym czasie zmienia. I czy da radę, by aktualne hasło było wyświetlane na stronie www i ile do następnej zmiany hasła :)

Trochę to pokomplikowane, ale chce po prostu wynajmować serwer, a ustawienie jednego hasła i wypożyczanie pod warunkiem zmiany na ustalone hasło po mixie raczej nie przejdzie, bo jak ktos nie zmieni to będzie miał serwer na cały dzień, a wpisanie do cfg to wyobraźcie sobie, że ktoś gra dwie mapy, zmienia mapę, cfg się wczytuje wchodzi ktoś obcy zmienia hasło i pograne :)

P.S. Tylko prosiłbym by wytłumaczyć mi to jak najprościej, bo nigdy nie pisałem pluginów, tylko je edytowałem :)
Użytkownik Snickers edytował ten post 18.02.2010 22:00
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 18.02.2010

Kod który dałeś wygląda sensownie, powinien działać.
O pełnych godzinach może zmieniać. Wystarczy w task'u dać sprawdzanie godziny: Nieoficjalny polski support AMX Mod X -> Dokumentacja :: AMXX > Core > core >> time
Przechwycenie wpisania komendy "rcon rcon_password" było by truuudne jak nie niemożliwe.

Żeby wyświetlić na stronie rcon_password musiałbyś znać... rcon_password ;>
Więc żeby to było możliwe to mógłbyś korzystać np z bazy danych mysql.
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 18.02.2010

set_task rusza od początku mapy po 7200s wykona funkcję = zadziała tylko pod warunkiem, że ustawisz czas mapy na 2h i 1s :P

sprawa dość skomplikowana i pewnie nie obędzie się bez MySQLa, kiedyś chyba zacząłem pisać coś podobnego, ale nie pamiętam czy wypaliło; jak znajdę źródła to podrzucę potem
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 18.02.2010

nie jestem pewien ale czy co mape nie bedzie odliczac tych 2h ?? wiec tak w nieskonczonosc :D a co do godziny mozesz dac tak jak pav w new year coutdown tylko pominac date

@up szybszy byles :D


EDIT a czy w php pav nie da sie odczytac pliku? wiec mozna chyba zrobic odczyt rcon_password z server.cfg

EDIT 2

z dokumentacji

new godzin, minut, sekund
new unix = time(godzin, minut, sekund)
client_print(0, print_chat, "Od poczatku epoki Linux'owej minelo %d sekund", unix)
client_print(0, print_chat, "Aktualnie mamy: %d godzine, %d minute, %d sekunde", godzin, minut, sekund)


wiec mozna chyba sprawdzac co jakis czas czy godzin==23 i wtedy o 23 bedzie sie wykonywal cod
Użytkownik G[o]Q edytował ten post 18.02.2010 22:16
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 18.02.2010

Jest jeszcze opcja że masz ten serwer na własnym dedyku lub vps'ie. Wtedy możesz połączyć się po ssh i zmieniać/pobierać rcon_password.


EDIT a czy w php pav nie da sie odczytac pliku? wiec mozna chyba zrobic odczyt rcon_password z server.cfg

A skąd ten plik ma się znaleźć na serwerze z PHP ?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 18.02.2010

nom i wersja poza AMXXem byłaby tu najlepsza :-)
Odpowiedz

  • +
  • -
Snickers - zdjęcie Snickers 18.02.2010

Nie mam serwera na dedyku, a co do tego że trzeba użyć MySQL podejrzewałem :)

Więc jakby coś to czekam na konkrety :)
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 18.02.2010

zgodnie z tym co napisalem wczesniej masz takie cos

#include <amxmodx>
#define godziny 23
#define minuty 00
#define sekundy 00

new const duza[][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","Q","U","W","V","X","Y","Z"}
new const mala[][] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","q","u","w","v","x","y","z"}
new const cyfra[][] = {"1","2","3","4","5","6","7","8","9","0"}
public plugin_init()
{
	register_plugin("HasloRcon","1.0","Snickers");
	set_task ( 1.0, "rcon", _, _, _, "b");
	register_clcmd("say czas","rcon")
	}
public rcon()
{	
	new godzin, minut, sekund
	new unix = time(godzin, minut, sekund)
	
	if ((godzin==godziny)&&(minut==minuty)&&(sekund==sekundy)
	
	server_cmd("rcon_password ^"%s%s%s%s%s%s^"", mala[random_num(0,26)],duza[random_num(0,26)],mala[random_num(0,26)],mala[random_num(0,26)],cyfra[random_num(0,10)],duza[random_num(0,26)]);
}


w tych 3 define ustawiasz kiedy ma zmieniac haslo tzn o ktorej godzinie

ewentualnie mozesz zrobic tak ze co 1 sekunde sprawdzasz reszte z dzielenia czasu od poczatku unixa przez 3600 jesli jest 0 to wykonujesz instrukcje wtedy haslo bedzie sie zmieniac co godzine o ile jest tak jak w c++ to operatorem reszty z dzielenia jest %
Odpowiedz

  • +
  • -
Snickers - zdjęcie Snickers 19.02.2010

Wiedziałem że tak będzie, musiało coś być. Bo szczerze mówiąc to nie rozumiem co do mnie rozmawiasz ^^
Myślałem, że to wszystko będzie takie proste jak napisanie tego co ja tam u góry nabazgrałem :P Ten kod nie chce się skompilować, a jakby się dał to mam rozumieć że wtedy codziennie o 23 zmieniałby się rcon, czy raczej co 23 godziny ? ;]

P.S. Oporny jestem w tych sprawach, więc jeżeli jest to a wykonalne, lub zbyt trudne dla mnie, to może ktoś z Was by się połakomił ? A jak nie to dajmy sobie spokój. Oczywiście chciałbym próbować zrobić coś sam i się nauczyć, ale rozumiem, że cierpliwość ludzka ma granice :P
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 19.02.2010

Napisałem ci plugin nie testowałem go bo nie mam czasu :F w końcu 3 dobija :D
Jakby nie działał napisz postaram się poprawić i resztę ludzi którzy zajrzą do sma o ew. poprawki ;]
Edit:
Załączony plik  rcon.sma   4,47 KB   79 Ilość pobrań
Zmieniłem że ma sprawdzać co 1min a nie 2 razy na mapę.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.02.2010

mozesz tak jak wyzej albo tak jak ja czyli przy standardowych ustawieniach o 23 kazego dnia zmieni sie rcon pass :D
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 19.02.2010

GoQ myślenie boli :F

I czy da radę, by aktualne hasło było wyświetlane na stronie www

Hmm?:F Do mojego musi sobie skrypt php skołować ;]
Powiedz jak u ciebie ten rcon pobierze?:F
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.02.2010

serwer gry jest dalej serverem ftp wiec teoretycznie mozna sie polaczyc chociaz nie wiem bo sie nie znam na tym

a pozatym ja robilem losowanie hasla o danej godzinie bo o to tez prosil pozatym twoj kod bedzie zmieniac co mape rcona
Odpowiedz

  • +
  • -
Snickers - zdjęcie Snickers 20.02.2010

Vertricus, plugin tworzy tabele w bazie danych, ale w tej tabeli nie ma nic, co więcej plugin nie zmienia hasła.
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 20.02.2010

A nie lepiej zrobic funkcje co "generuje" haslo od godziny, w sposób dość mało jasny dla użytkownika i zaopatrzyć skrypt php w ten sam algorytm generujący?

Moge napisać funkcje generatora i opcjonalnie dodać go do pluga, ale musiał byś znaleźć kogoś od php'a...
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 20.02.2010

Jak wytłumaczysz tok myślenia to może Ci pomogę ;P W zasadzie chyba najprościej i najelastyczniej było by zwyczajnie w PHP napisać skrypt który powiedzmy co 12 h zmienia hasło rcon na losowe + aktualizuje rekord w bazie. Potem na serwerze napisać plugin który z bazy pobierze owy rekord i niech sobie wymusza powiedzmy co 10min to hasło rcon. Funkcja generująca ograniczy się do wylosowania tak jak mamy w pierwszym pluginie wartości z pośród 3 tablic, w postaci powiedzmy 9 znaków - operacja powtórzy się 3x.
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 20.02.2010

Ale wersja miczu jest też całkiem dobra. Wystarczy jakiś algorytm zamiany godz+dzien+miesiac+rok na rcon_password
Opracowanie takiego samego algorytmu dla php i amxx nie będzie problemem, wystarczy tylko wymyślić zasadę.
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 20.02.2010

Pavulon php ma opcje zmieniania liczb na kod ASCII? Jesli tak, to moge wymyslic dosc skuteczna metode + liczby w cvarach/define by nawet obecnosc na forum dawala pełne bezpieczenstwo :)

Hmm... tylko moze, jak ktos zna godzine i haslo to moze na twardo szukac, kombinacji ktora da taki wynik... O ale wiem juz jak to omine :D
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 20.02.2010

php ma wszystko czego człowiek może potrzebować i jeszcze trochę więcej.
tylko wiesz, taki mix typu przesunięcia, mnożenie itp :D
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 20.02.2010

mozna zrobic tablice 24 elementowa liczb oraz 60 elementowa roznych slowek,zbitek literowych i potem np liczby[godzina]+slowka[minuta] +np liczby[godzina/4] itd. takiego czegos nie odgadnie nikt bez dostepu do sma/php
Odpowiedz