Näiden
kolmen skriptin avulla voi toteuttaa IRC-botin, joka on "yksisuuntainen
gateway" ja lähettää IRC-kanavalle tai yksityisviestinä selainpohjaisen
webchatin logit IRCiin.
Tarvitaan Linux, internet-yhteys ja Chromium-perheen selain, sillä
vain Chromium-perheen selaimet tukevat tällä hetkellä suoraa tallennusta
kiintolevylle konsoliskriptillä.
Luo hakemisto nimeltä logbot
mihin tahansa. Tallenna kaikki nämä kolme allaolevaa skriptiä sinne.
Kolmas lähinnä siksi, että se olisi tallessa jossain myöhempää käyttöä
varten.
Skripti 1 on Linux shell script ja "wrapper", eli se pyörittää
varsinaista skriptiä siten, että jos botti tippuu IRC-verkosta, se
käynnistää pääskriptin uudestaan ja yhdistää takaisin IRC-verkkoon.
Wrapper on se skripti, jota ajetaan "itse". Nimeä tämä "wrapper"
nimellä logbot.sh ja laita se hakemistoon logbot:
#!/usr/bin/env bash while true; do ./ircmsg.sh sleep 10 done
Skripti 2 on edelleen Linux shell script, jota tuo aiempi skripti pyörittää sisällään. Nimeä se nimellä ircmsg.sh ja laita edelleen hakemistoon logbot:
#!/usr/bin/env bash while true; do exec 3>/dev/tcp/open.ircnet.net/6667 echo "NICK l0gb0t" >&3 echo "USER l0gb0t 8 * : l0gb0t" >&3 echo "JOIN #l0gz" >&3 while true; do yes | cp -rf 0.txt 1.txt while cmp -s 0.txt 1.txt; do sleep 1 done yes | cp -rf 0.txt 2.txt sed -i -e 's/ / /g' 2.txt echo "PRIVMSG #l0gz $(cat 2.txt)" >&3 done done
Tuo skripti tarkistaa, onko uusi viesti tullut 1 sekunnin välein, joka
tarkoittaa sitä, että aika ajoin yksittäiset viestit voivat jäädä
loggaamatta jos viestejä satelee tiheään tahtiin. Aikaa voi säätää
tällöin halutessaan pienemmäksi, esimerkiksi puoleksi sekunniksi
vaihtamalla rivin "sleep 1" tilalle "sleep 0.5", mutta ole maltillinen,
koska tietokoneilla ja näiden kiintolevyilläkin on rajansa. Botille voi
antaa uuden nimen ja voi määritellä, mihin irc-palvelimeen ja mille
kanavalle se yhdistää ja "juttelee". Esimerkkibotti on nikiltään "l0gb0t" ja käy IRCnetissä serverin open.ircnet.net (port 6667) kanavalla #l0gz. Kanavan voi toki korvata käyttäjänimellä, jos haluat viestit vain yksityisesti.
Mene kansioon logbot ja anna komennot chmod +x logbot.sh ja chmod +x ircmsg.sh – näin noilla kahdella skripteillä on "ajo-oikeus". Älä käynnistä vielä mitään.
Skripti 3 on javascriptiä ja tätä ajetaan selaimen
konsolissa. Konsolihan aukeaa yleensä painamalla F12 ja skriptejä
ajetaan copy-pastettamalla ne konsoliin ("Console"). Se kysyy,
ajettaessa, mihin tallennetaan ja millä nimellä. Tallennus tehdään
aiempaan logbot-hakemistoon ja nimellä 0.txt
(nolla, ei O). Skriptissä on myös aika, tässä tapauksessa 2 sekuntia,
eli se tallentaa uusimman viestin selaimesta 2 sekunnin välein, josta
joskus voi seurata yksittäisten viestein hukkumista kiireisessä
webchatissa. Aikaa voi tällöin muuttaa pienemmäksi, mutta ole edelleen
maltillinen samasta syystä kuin aiemmankin skriptin osalta. Eri
webchateissa tekstisisältö sijoittuu eri sijaintiin. Esimerkiksi
Randomin webchatissa se paikka olisi "li.chat-line", mutta tähän esimerkkiskriptiini olen laittanut sijainniksi "li.chattirivi.muokkaa",
johon voit itse laittaa haluamasi sijainnin. Skriptin toimiminen
yleensä edellyttää kyseisessä webchatissa "käyttäjänä" läsnäoloa.
let fileHandle = null; async function initializeFile() { try { fileHandle = await window.showSaveFilePicker({ suggestedName: '0.txt', types: [{ description: 'Text Files', accept: {'text/plain': ['.txt']}, }], }); console.log('Starting'); startSaving(); } catch (err) { console.error('E:', err); } } async function saveLatestContent() { if (!fileHandle) return; const elements = document.querySelectorAll('li.chattirivi.muokkaa'); if (elements.length === 0) { return; } const latestElement = elements[elements.length - 1]; const content = latestElement.textContent || latestElement.innerText; try { const writable = await fileHandle.createWritable(); await writable.write(content); await writable.close(); } catch (err) { console.error('E:', err); } } function startSaving() { saveLatestContent(); setInterval(saveLatestContent, 2000); } initializeFile();
Kun olet saanut selaimen konsoliskriptin pyörimään, voit sen jälkeen
käynnistää ensimmäisen shell scriptin menemällä logbot-hakemistoon ja
kirjoittamalla ./logbot.sh