Sniffnet je multiplatformní aplikace pro sledování internetového provozu. Ke stažení pro Windows, macOS i Linux. Jedná se o open source software. Zdrojové kódy v programovacím jazyce Rust jsou k dispozici na GitHubu. Vývoj je finančně podporován NLnet Foundation.
Byl vydán Debian Installer Trixie RC 2, tj. druhá RC verze instalátoru Debianu 13 s kódovým názvem Trixie.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).
Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.
Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.
Svobodný nemocniční informační systém GNU Health Hospital Information System (HIS) (Wikipedie) byl vydán ve verzi 5.0 (Mastodon).
Open source mapová a navigační aplikace OsmAnd (OpenStreetMap Automated Navigation Directions, Wikipedie, GitHub) oslavila 15 let.
Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.
V uplynulých dnech byla v depu Českých drah v Brně-Maloměřicích úspěšně dokončena zástavba speciální antény satelitního internetu Starlink od společnosti SpaceX do jednotky InterPanter 660 004 Českých drah. Zástavbu provedla Škoda Group. Cestující se s InterPanterem, vybaveným vysokorychlostním satelitním internetem, setkají například na linkách Svitava Brno – Česká Třebová – Praha nebo Moravan Brno – Břeclav – Přerov – Olomouc.
Byla vydána nová verze 8.7.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
Předevčírem jsem dostal náladu napsat si bota pro přístup do jabber chat roomu. Moc českých návodů pro python-jabber jsem nenašel a ono ani anglických, takže jsem nastudoval zdrojáky, přiložených příkladů a zkusím interpretovat co jsem se naučil.
Jabber je protokol pro IM komunikaci. Otevřenost je v tomto ohledu jeho obrovskou výhodou. Krom toho že si můžete napsat taky svého bota, můžete udělat i věci jako monitor nějakého svého serveru, který vám pošle zprávu, když se něco stane. Tady možnosti nekončí, ale mě zrovna nic jiného nenapadá :) Pokud jste o jabberu neslyšeli tak hup na jabber.cz a prostudovat wiki.
Nás bude ovšem zajímat samotný protokol a to ještě pouze knihovna python-jabber. Díky ní toho o protokolu zas tolik vědět nemusíme a s jabber serverem se dá krásně komunikovat. Něco ovšem vědět musíme. Začal bych tím, že jabber komunikuje v XML formátu. Využívá tři druhy zpráv a těmi jsou message, presence a iq. Message odesílá všechno co nevyžaduje odpověď. To jsou právě naše zprávy co si se všemi píšeme a asi to bude jediné co nás bude zajímat. Presence odesílá informace o stavu a iq jsou všechny zprávy vyžadující odpověď od serveru. Bližší vysvětlení najdete na root.cz, kde je seriál o kompletním protokolu.
Než začneme se samotným programem, tak si na najakém serveru vytvoříme účet pod kterým se náš program bude připojovat. Dále pak budeme potřebovat knihovnu python-jabber (takhle se označuje v mém Kubuntu, jinde bude mít obdobný název).
import jabber,sys c = jabber.Client(host="jabber.cz") #tady vytvoříme instanci třídy Client #zkusíme se připojit try: c.connect() except: print "Chyba při připojení." sys.exit() #autorizujeme se se svým jménem a heslem, poslední parametr označuje klienta c.auth("Jmeno","Heslo","MujKlient") #tahle metoda není v manuálu, ale registruje objekt, který má zpracovávat naše zprávy c.registerHandler('presence',presenceCB) c.registerHandler('message',messageCB) c.registerHandler('iq',iqCB) #tímhle vyžádáme roster (kontakt list) c.requestRoster() #tímhle pošleme initializační Presence zprávy c.sendInitPresence()
Myslím, že uvedený kód je dobře okomentován, ale měl bych vysvětlit blíže metodu registerHandler(). Tato metoda registruje objekt (to může být metoda nebo fce), který se postárá o příchozí zprávy. Tento objekt je volán vždy s určitými parametry a všechny tři by mohli vypadat nějak takto:
def messageCB(con, msg): print msg.getFrom()+" - "+msg.getBody() def presenceCB(con, prs): pass def iqCB(con, iq): pass
Takže toto jsou ty tři fce co jsme registrovali výše. První se stará o příchozí zprávy a vypíše je na výstup. Pro další dvě jsem nenašel zatím uplatnění, tak tam nechávám pass. Parametry jsou vždy objekt jabber.Client a objekt jabber.Message, jabber.Presence nebo jabber.Iq podle druhu zprávy.
Zprávy si určitě zpracujete podle svého, ale to hlavní co musíme udělat, je vytvořit smyčku ve které se ty zprávy budou příjímat.
while 1: inputs, outputs, errors = select([sys.stdin], [], [],1) if sys.stdin in inputs: c.disconnect() sys.exit() else: c.process(1)
Tento kousek kódu je vzat z jednoho příkladu, který se dodává k python-jabber. Princip je jednoduchý, v nekonečně smyčce se čte pořád dokola jestli není něco na vstupu. Pokud je tak se program ukončí a pokud není tak se čtou zprávy. Rozšíření si každý udělá sám.
Nakonec se ještě zmíním o odesílání zpráv. Není na tom opět nic těžkého, využijeme objekt jabber.Message.
m = jabber.Message("ucet@jabber.cz","Ahoj světe")#vytvoříme zprávu m.setType("chat")#nastavíme typ jako chat, můžeme použít i groupchat pokud jsme v místnosti (nebo jiný typ, najdeme je v dokumentaci) c.send(m)#a odešleme
Tady bych doplnil, že pokud pracujeme v chat roomu, tak setType bude "groupchat". Příjemce zase jmeno_konference@konf.server.cz/nick (např. ubuntu@conf.jabber.cz/Cx).
Do roomu našeho bota příhlásíme či z něj odhlásíme následujícím způsobem.
c.send(jabber.Presence(to="jmeno_konference@konf.server.cz/NasNick"))#přihlásíme c.send(jabber.Presence(to="jmeno_konference@konf.server.cz/NasNick", type='unavailable'))#odhlásíme
To bude asi všechno, víc toho ani není potřeba a detaily si v manuálu už snad každý najde. Nakonec bych rád řek, že je důležité, že se s touto knihovnou dá na pár řádcích napsat program co se připojí k jabber serveru a je schopen s ním komunikovat a reagovat na něj. Na konci je uveden link na manuál, který je v ledasčem zastaralý, ale jinak dobrým pomocníkem. Hodně štěstí :)
Manuál k pythoní jabber knihovně
Tiskni
Sdílej: