Portál AbcLinuxu, 29. dubna 2024 15:18

Killem.al

21.8.2012 21:37 | Přečteno: 1214×

Před X měsíci jsem koupil fajnovou doménu killem.al (registrována u Albánského host.al - vše v pohodě). Akorát mě nenapadá co tam teď dát :-), tak jsem zvedávej na tipy od místních KERNEL ULTRAS :-)

Zatím jsem tam hodil veřejný openarena server. Rád bych aby se na webu ukazovalo kolik je zrovna připojeno hráčů. Samozřejmě žádný z nástrojů, doporučených na OpenArena wiki, toto neumí. Rozhodl jsem se tedy vytvořit vlastní skriptik co použije crcon (utilitka do konzole která pošle příkaz OpenArena serveru a vypíše odpověď - příkazy jsou stejne jaké bere konzole ve hře). Když ani crcon nechtěl fungovat, to už mě naštvalo natolik že jsem se ze zahrady vrátil zpátky do baráku i když máme jeden krasnej slunecnej den snad po měsíci.

Zpátky k crcon, ve zdrojaku stačilo víceméně zvětšit timeout při čekání na odpověď a začalo to šlapat. Ale když už jsem se díval do zdrojaku tak mě zarazilo že i když se skládají z několika souboru a možná tisíce řádku kódu tak to vlastně nic moc nedělá :-) (autor si implementuje vlastní parser argumentů apod.) a navíc protokol kterým s q3/openarena serverem komunikuje je těžce jednoduchý. Tak jsem rovnou napsal skriptik v pythonu který celý crcon nahradí. Tady je. Dvacet řádku pythonu místo tisíce v céčku .. a navíc to i funguje :-):


import socket
import argparse
import sys

parser = argparse.ArgumentParser(description="OpenArena rcon")

parser.add_argument("-s","--server",type=str,required=True)
parser.add_argument("-p","--password",type=str,required=True)
parser.add_argument("-c","--command",type=str,required=True)
parser.add_argument("-t","--timeout",type=float,default=10,required=False)

args = parser.parse_args()
if ":" not in args.server:
        ip = args.server
        port = 27960
else:
        doubledot_pos = args.server.find(":")
        ip = args.server[:doubledot_pos]
        try:
                port = int(args.server[doubledot_pos+1:])
        except ValueError:
                print("invalid server, use 'ip:port' format for -s")
                sys.exit(2)
try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(args.timeout)
        sock.connect( (ip,port) )
        sock.sendall("\xff\xff\xff\xffrcon "+args.password+" "+args.command+"\n")
        reply = sock.recv(1024)[10:]
        while True:
                try:
                        reply += sock.recv(1024)[10:]
                except socket.timeout:
                        break
        if reply and not reply[-1] == "\n":
                raise socket.timeout("reply doesnt end with \\n")
        print(reply)
except socket.timeout:
        print ("timeout reached, try with higher -t")
        sys.exit(2)
except socket.error:
        print ("couldn't connect")
        sys.exit(2)
       

Hodnocení: 71 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

21.8.2012 21:43 Gothiquenoir
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
killema.ll by malo byt nie ? daj tam metallicu - diskografiu =]
=^..^= AmigaPower® avatar 21.8.2012 23:50 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
Rozbalit Rozbalit vše Re: Killem.al
přesměruj to na poslaneckou sněmovnu :-D
22.8.2012 12:07 otec
Rozbalit Rozbalit vše Re: Killem.al
"daj tam metallicu - diskografiu " Blbneš? A co by pak jako členové té "kapely" žrali? Ty bys je nechal pochcípat hlady? ;-)
22.8.2012 16:14 w4rr10r
Rozbalit Rozbalit vše Re: Killem.al
Ti by mohli žrát bez práce ještě aspoň století. Naopak bych jim dal sežrat loudness war a komerční tvorbu posledních let.
=^..^= AmigaPower® avatar 22.8.2012 16:21 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
Rozbalit Rozbalit vše Re: Killem.al
...posledních dvaceti let.
4.9.2012 15:41 smazáno | skóre: 18 | blog: smazáno
Rozbalit Rozbalit vše Re: Killem.al
Jako kdyby tam metallica uz nebyla :-), a pokud vim tak .ll TLD neni.
Мiriam avatar 21.8.2012 21:46 Мiriam | skóre: 3 | blog: rychlovarna_konvice | Brno
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
pornografii - the internet is for porn!
MS-CHAPv2 jiz neni bezpecny ): dukaz, ze jsem skutecna osoba ;-)
=^..^= AmigaPower® avatar 21.8.2012 23:49 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
Rozbalit Rozbalit vše Re: Killem.al
Příloha:
Ty si klug, jako BUG!
AsciiWolf avatar 22.8.2012 00:26 AsciiWolf | skóre: 40 | blog: Blog
Rozbalit Rozbalit vše Re: Killem.al
"Kill 'em all" - gore porno? :-D
Max avatar 22.8.2012 07:12 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
Jednou jsem něco podobného řešil, ale u serveru, který něco takového nepodporoval, nebo bylo potřeba doinstalovat rozšíření, které se o to staralo. Nakonec jsem to vyřešil strašně jednoduše, sice né 100% přesně, ale stačilo to. Základní myšlenka je taková to :
netstat -unt | grep $SERVERPORT |wc -l
Zdar Max
Měl jsem sen ... :(
22.8.2012 10:55 w4rr10r
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
Zaregistruju si big.gay.al.
Limoto avatar 22.8.2012 11:58 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin

Jde to i bez RCON - qstat, na web by se ti možná hodil GameQ (PHP)

.
AsciiWolf avatar 22.8.2012 12:14 AsciiWolf | skóre: 40 | blog: Blog
Rozbalit Rozbalit vše Re: Killem.al
+1 :-)
22.8.2012 13:53 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
Doména je jedna věc, server druhá. Na čem ti to běží?
What Big Oil knew about climate change
22.8.2012 14:11 smazáno | skóre: 18 | blog: smazáno
Rozbalit Rozbalit vše Re: Killem.al
ve virtualu u tagadab - VPS500 s minimalni instalaci debianu jen s openarena serverem a lighttpd serverujicim staticky obsah (proto tam nacitam tu statistiku pres iframe), takze je tam vzdycky volnych asi 90% RAM :-)
23.8.2012 10:40 PetrHL | skóre: 17 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: Killem.al
U WEDOSu byste za tu cenu měl 2GB RAM. 512MB RAM je za 100,- měsíčně :-). Viz má patička.

OpenArenu si občas zahraju, tak snad se tam Tvůj server objeví až zase budu mít náladu to zapnout.
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů
23.8.2012 11:40 smazáno | skóre: 18 | blog: smazáno
Rozbalit Rozbalit vše Re: Killem.al
Vidis, zajimava informace - ja jsem ty ceny moc neporovnal, vzal jsem to u tagadab protoze s nima mam jen dobry zkusenosti a 20gbp mesicne mi prislo jako hezka castka - priste si snad vzpomenu ze to muzu mit jinde za ctvrtinu (i kdyz v CZ) :-)
pavlix avatar 24.8.2012 02:51 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Killem.al
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokémony.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.