Eggdrop

Wikipedia
Loikkaa: valikkoon, hakuun

Eggdrop on UNIX-järjestelmissä (Windows: Windrop) toimiva modulaarinen IRC-bottiohjelma. Sen on kirjoittanut Robey Pointer vuonna 1993 alun perin EFnetin kanavaa #gayteen varten.[1] Se on kirjoitettu C:llä, ja sen toiminnallisuutta voi laajentaa skripteillä ja moduuleilla. Skripteissä käytetään TCL-kieltä.

Nykyään eggdrop on suosituin IRC-botti. Useimmat normaalien käyttäjien (eli siis ei esimerkiksi IRC-operaattoreiden, jotka ajavat verkkopalveluja kuten ChanServ ja NickServ) ajamista boteista ovat eggdroppeja.

Eggdrop-botti käyttää tyypillisesti Linux-koneen resursseja hyvin vähän. Virtuaalista keskusmuistia kuluu noin 2 MB ja se kasvaa käyttäjätietokannan koosta riippuen. Prosessoriaikaa Eggdrop-botti kuluttaa minimaalisesti verrattuna Linux-koneen muihin prosesseihin.

Skriptit ja moduulit[muokkaa | muokkaa wikitekstiä]

Suosionsa takia eggdropille on saatavilla runsaasti erilaisia skriptejä eri käyttötarkoituksiin. Useimmat skriptit ovat eggdrop-käyttäjien kirjoittamia. Skriptien tarkoituksena on yleensä esimerkiksi TV-ohjelmien näyttäminen, uusimmat uutiset, google-haku, erilaiset statistiikat, tiedostojen jakaminen (yleensä DCC-protokollalla) sekä vaikkapa tietokilpailun pitäminen kanavalla.

Skriptien lisäksi Eggrop-bottiin voi kirjoittaa omia C-kielisiä moduuleita. Moduulien etuna on nopeampi toiminta, sillä skriptit suoritetaan tulkkausmenetelmällä.

Ominaisuudet[muokkaa | muokkaa wikitekstiä]

Partyline sekä botin hallinta[muokkaa | muokkaa wikitekstiä]

Partyline on yksi eggdropin suurin vahvuus sen suuren suosion ohella. Partyline mahdollistaa botin täydellisen hallinnan dcc-menetelmällä (direct client to client), joka on tuettu kaikissa yleisimmissä irc-asiakasohjelmissa. Partyline avautuu privaattikeskusteluksi botin ja käyttäjän välillä ja on täysin irrallinen irc-verkosta. Bottiin lisätyt käyttäjät voivat kirjautua partylineen, mikäli heille on asetettu oikeudet siihen ja asetettuna henkilökohtainen salasana. Käyttäjät voivat keskustella partylinessä toistensa kanssa sekä hallita kanavia, mikäli omistavat tarvittavat oikeudet siihen. Botin saa myös raportoimaan partylineen erikseen määriteltyjä tapahtumia kuten esimerkiksi sen kun kanavalle asetetaan joku tietty kanavamoodi. Erittäin monipuolinen partyline on ehkä yksi syy siihen, että eggdrop-botti ei sisällä ainuttakaan ns. public-komentoa puhtaan asennuksen jälkeen sillä kaikki hallinta voidaan tehdä turvallisemmin ja paremmin privaatissa partylinessä. 'seen' komento on pysynyt ainoana ns. public-komentona eggdropissa, mutta se pitää erikseen aktivoida partylinen kautta kanavakohtaisesti. Public-komentojen määrittäminen skriptien avulla nopeuttaa hallintaa ja samalla tuo botin ominaisuuksia käytettäväksi niille käyttäjille, joilla ei ole oikeutta partylineen. Bottiin voidaan lisätä käyttäjä, jolla on vain oikeus käyttää partylineä, mutta ei oikeuksia millään kanavalla tai muualla.

Kanavien hallinta[muokkaa | muokkaa wikitekstiä]

Bottiin on valmiiksi ohjelmoitu kaikki kanavan hallintaa koskevat ominaisuudet, joista merkittävimpiä ovat muun muassa: flood-rajoitukset (kaikissa seuraavissa tapahtumissa: kanavalle liittyminen, nimimerkin vaihto, kanavalaajuisen ctcp-komennon (client to client protocol) käyttö, muiden käyttäjien potkiminen (kick) kanavalta, kanavalle lähetettyjen rivien määrä), kanavan omistajien ja tunnettujen käyttäjien hallinta tarkoin sovitussa hierarkiassa, kanavan asetusten ylläpitäminen, kuten kanavamoodin pakottaminen. Lisäksi kanavakohtaisesti voidaan määritellä useita turvallisuutta koskevia asetuksia, kuten asetus joka estää bottiin lisäämättömien käyttäjien saavuttaa operaattorin statusta kanavalla, tai ystäväksi lisättyjen käyttäjien suojeleminen.

Eggdrop voi hallita useita kanavia samaan aikaa. Kanavien määrään ei tiettävästi ole rajoitusta mutta irc-verkot usein rajoittavat tämän asiakas-kohtaisesti. Eggdrop kuitenkin hidastuisi huomattavasti jos siihen lisättäisi esimerkiksi satoja kanavia joissa on paljon toimintaa, tai vastaavasti vaikeuttaisi kanavien hallintaa ylläpitäjän kannalta. Tosin yhdellä botilla voi olla useita ylläpitäjiä. Toistaiseksi eggdrop pystyy hallitsemaan ainoastaan yhtä irc-verkkoa kerrallaan.

Jononhallinta[muokkaa | muokkaa wikitekstiä]

Eggdroppissa on sisäänrakennettu jononhallinta sen lähettäessä käskyjä irc-verkkoon. Esimerkiksi, jos käyttäjä on kirjoittanut skriptin, joka virheellisesti lähettää tietoa irc-verkkoon monta kertaa lyhyessä ajassa, botti ei lähetä komentoa verkkoon täysin reaaliajassa, vaan se käy jononhallinnan läpi, jossa botti muun muassa tutkailee onko sama tieto jo lähetetty verkkoon tai onko kulunut sopiva aika siitä, kun viime viesti on lähetetty. Näin mahdollistetaan se, että irc-verkko ei katkaise botin yhteyttä liian nopean tiedon lähettämisestä johtuen (Excess flood). Jononhallinta koostuu kolmesta erilaisesta jonosta, joissa kahdessa on viive ja muuta tarkkailua ja kolmannessa tieto välitetään suoraan verkkoon. On siis käyttäjän harkinnan alla, mitä jonoa käytetään ja minkälaisessa tilanteessa. Tämä kuitenkin tulee kysymykseen vasta sitten kun kirjoitetaan omia skriptejä.

Asetustiedosto[muokkaa | muokkaa wikitekstiä]

Käynnistyessään botti lukee suuren, noin tuhannen rivin config-tiedoston, jonka yhteydessä myös ladataan käyttäjä- ja kanava-tiedostot, joihin on määritelty lisätyt käyttäjät sekä kanavat, joihin botti liittyy verkkoon päästyään. Config-tiedoston muokkaaminen aloittelijalle on usein hieman kivulias toimenpide, mutta kokenut käyttäjä tekee sen muutamassa minuutissa. Kaikki asetukset on hyvin dokumentoitu ja useista on myös hyviä esimerkkejä configissa. Config-tiedostoa voidaan muokata ns. lennossa ja se voidaan ladata uudelleen partylinessä, jolloin uudet asetukset tulevat voimaan. Config-tiedosto käsittää käytännössä kaiken sen miten botti käyttäytyy, mitä moduuleita tai skriptejä ladataan ja muita lukemattomia asetuksia.

Botnet[muokkaa | muokkaa wikitekstiä]

Eggdroppia käytetään usein myös botnettien tekemiseen. Botnetit ovat IRC-bottien verkkoja, joiden avulla linkitetään kaksi tai useampi botti yhteen. Toinen irc-kanavalla oleva botti voi kutsua toisen botin invite-only-kanavalle tai avaimella suojatulle kanavalle, jolloin tulevaan bottiin ei tarvitse erikseen asettaa kulloistakin avainta. Botit voivat jakaa toisillensa käyttäjätiedot. Silloin bottien toiminta yhdellä kanavalla on yhtenäistä, eikä tule bottisotia.

Botnettejä käytetään myös muun kuin käyttäjätietojen jakamiseen. Kanavan muutettu käyttäjärajoitus (limit) voidaan välittää kanavan kaikille boteille botnetin kautta. Idle-kick-aikaa voidaan myös vaihtaa, ja botnetin kautta kaikki kanavan botit saavat uudet tiedot. Botteja voidaan asettaa käynnistämään uusia botteja, jos jokin botti kanavalla tulee toimintakelvottomaksi tai häviää.

Botnetin botit voivat bannata käyttäjiä synkronoidusti. Käyttäjät, joka yhdistävät botnettiin bottien kautta DCC-chatilla tai telnetillä, voivat kommunikoida botnetissä monilla kanavilla, eli periaatteessa "pienemmässä" IRC:ssä. Netsplit ei katkaise botnetin omaa chattia.

Yksi suosittu botnet-skripti Eggdropille on netbots. Siinä on ominaisuuksia bottien kanavallekutsumiseen, netsplit-opsien väärinkäytön estäminen, bottien irc-palvelimien kontrollointi, kanava-asetusten säätö koko botnetissä, käyttäjätietojen kontrollointi (esimerkiksi liian monta host-tietoa), yms.

Laajemmissa botneteissä on botteja hierarkkisissa tasoissa. Ylemmän tason botit eivät ole ollenkaan IRC-neteissä vaan ohjaavat IRC-neteissä olevia botteja. Näiden etuna on nopeampi toiminta kun irc-moduulia ei tarvita. Näitä kutsutaan Eggdrop-terminologiassa tandem-boteiksi tai limboiksi.

Tuki[muokkaa | muokkaa wikitekstiä]

Virallinen eggdropin tukikanava on #eggdrop UnderNetissä. Eggdrop-apua on saatavilla myös #egghelp-kanavalla esimerkiksi freenodessa ja IRCNetissä ja #eggdrop kanavalla IRCNetissä sekä #eggdrop.support Quakenetissä.

Eggdropin TCL-skriptaukselle on myös apukanava #tcl UnderNet sekä Quakenet verkoissa

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Our Products Eggheads.org. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]