Eggdrop

Wikipedia
Loikkaa: valikkoon, hakuun

Eggdrop on UNIX-järjestelmissä toimiva modulaarinen IRC-bottiohjelma. Sen on kirjoittanut Robey Pointer vuonna 1993 alun perin EFnetin #gayteen-kanavaa varten.[1] Se on kirjoitettu C-kielellä, 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 kuluttaa tyypillisesti Linux-koneen resursseja hyvin vähän. Virtuaalista keskusmuistia se tarvitsee noin 2 MB, ja koko kasvaa käyttäjätietokannan koon mukaan. Prosessoriaikaa Eggdrop-botti kuluttaa erittäin vähän verrattuna Linux-koneen muihin prosesseihin.

Skriptit ja moduulit[muokkaa | muokkaa wikitekstiä]

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 tilastoinnit, tiedostojen jakaminen (yleensä DCC-protokollalla) sekä vaikkapa tietokilpailun pitäminen kanavalla.

Skriptien lisäksi Eggdrop-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 mahdollistaa botin täydellisen hallinnan DCC-menetelmällä (direct client to client), joka on tuettu kaikissa yleisimmissä IRC-asiakasohjelmissa. Partyline avautuu yksityiskeskusteluksi 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. Partyline on yksi eggdropin suurimmista vahvuuksista. 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ääritellyistä tapahtumista kuten esimerkiksi siitä, kun kanavalle asetetaan jokin tietty kanavamoodi. Eggdrop-botti ei sisällä ainuttakaan ns. public-komentoa puhtaan asennuksen jälkeen, sillä kaikki hallinta voidaan toteuttaa turvallisemmin ja paremmin privaatissa partylinessä. Ainoana ns. public-komentona eggdropissa on pysynyt "seen"-komento, 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 häätäminen (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ömiltä käyttäjiltä operaattorin statuksen saavuttamisen kanavalla, tai ystäväksi lisättyjen käyttäjien suojeleminen.

Eggdrop voi hallita useita kanavia samaan aikaanlähde?. Kanavien määrään ei tiettävästi ole rajoitusta mutta IRC-verkot usein rajoittavat tätä asiakaskohtaisesti. Eggdrop kuitenkin hidastuisi huomattavasti, jos siihen lisättäisiin esimerkiksi satoja kanavia, joissa on paljon toimintaa, tai vastaavasti vaikeutettaisiin kanavien hallintaa ylläpitäjän kannalta. Tosin yhdellä botilla voi olla useita ylläpitäjiä. Toistaiseksi eggdrop pystyy hallitsemaan ainoastaan yhtä IRC-verkkoa kerrallaanlähde?.

Jononhallinta[muokkaa | muokkaa wikitekstiä]

Eggdropissa on sisäänrakennettu jononhallinta sen käskyjen lähettämisessä 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 käskyjonon läpi, jolloin 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ämisen vuoksi (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 harkinnassa, mitä jonoa käytetään ja minkälaisessa tilanteessa. Tämä tulee kysymykseen 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 kanavatiedostot, joihin on määritelty lisätyt käyttäjät sekä kanavat, joihin botti liittyy verkkoon päästyään. 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ä]

Eggdropia 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ä]