-
Posts
5,882 -
Joined
-
Last visited
-
Days Won
16
chain last won the day on February 20
chain had the most liked content!
About chain

- Birthday 01/26/1962
Contact Methods
-
Website URL
http://www.coders-resources.net
Profile Information
-
Gender
Male
-
Location
Montreal,Quebec
-
Interests
scripting and chatting
Recent Profile Visitors
28,923 profile views
chain's Achievements
-
Soju is an IRC bouncer and gamja is a web client that works nicely with it. This article describes how to make them work with Caddy web server. The file paths mentioned may vary depending on the operating system or Linux distribution used. I set this up using the current stable soju release (0.5.2) provided by Arch Linux. Install gamja into your web server path: git clone https://git.sr.ht/~emersion/gamja cd gamja npm install --production You can optionally add a config.json file in the gamja directory to define various settings. Note that you have to remove the comments from the example provided in the gamja site as they are not valid JSON. For this particular setup, there is no need to define a “url” option as the default “/socket” will be used. In your DNS records, define a subdomain. Example configuration block for Caddy: irc.blabla.com { encode gzip tls my@email.com root * /var/www/gamja reverse_proxy /socket http://127.0.0.1:1234 file_server } Replace the port as you want. You might want to add basicauth for access control. /etc/soju/config has by default db sqlite3 /var/lib/soju/main.db message-store fs /var/lib/soju/logs/ Run sojuctl to create an admin user: sudo sojuctl -config /etc/soju/config create-user username -admin This will modify /var/lib/soju/main.db, adding the new admin user. Save the password as it will be used when logging in via gamja. In the next release, the admin user creation will be done with the sojudb command instead. The systemd service file provided by the Arch Linux package did not work for me, so I adapted Damjan Georgievski’s example service, resulting in a /etc/systemd/system/soju.service that looked like this: [Unit] Description=soju IRC bouncer service After=network-online.target [Service] Type=simple DynamicUser=yes StateDirectory=soju LogsDirectory=soju ConfigurationDirectory=soju RuntimeDirectory=soju Restart=always ExecStart=/usr/bin/soju --config /etc/soju/config -listen ws+insecure://127.0.0.1:1234 ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target Enable and start the service with sudo systemctl enable --now soju Now you can navigate to your subdomain with a web browser and log into gamja with the admin user name and password. In the gamja interface, click “bouncer” in the top left to attach to the bouncer. Click “Add network” in the top right to add an IRC network. You can say /msg BouncerServ help to see all the commands you can use to interact with the bouncer. The commands are also documented in soju’s manual. Regarding the first steps, note what the soju manual says in the description: When joining a channel, the channel will be saved and automatically joined on the next connection. When registering or authenticating with NickServ, the credentials will be saved and automatically used on the next connection if the server supports SASL. To conveniently access the log text files with my normal user, I use bindfs and FUSE. I avoid having to mess around with permissions by adding a line like this to /etc/fstab: /var/lib/soju/logs /home/myuser/sojulogs fuse.bindfs force-user=myuser,force-group=myuser,create-for-user=soju,create-for-group=soju,create-with-perms=g=rD,chgrp-ignore,chown-ignore,chmod-ignore 0 0 and creating the corresponding directory to bind to and mounting it with sudo mount /home/myuser/sojulogs. If you are interested in trying this out, you can start by checking the distro availability of bindfs from Repology. Thanks to everyone who helped me on #soju at Libera Chat and Caddy server forum! Made with Hugo ʕ•ᴥ•ʔ Bear
-
-
Been using RafaeLLa IRC Bot Services on our irc server and love it. the features and commands are great the only thing that did not function was the weather which I know is due to Wunderground always changing api keys. But other then that this is a must for any admin server has a lot to offer!! Westor has done a great job on this server bot and i see he continues to upgrade so hats off to Westor!! 👍 westor (aka ^WeSt) Website - Home page (ucoz.com)
-
We at Relay-Radio would like to thank all the people that came out to donate & have fun with our radiothon. At the same time we like to thanks all the dj's for there massive time and great shows they put on for all of us. Thanks to all 😀
-
Join the DJ's of Relay-Radio today @ 5:30pm EST for their first Relay Radiothon. Starting with DJ Mario! Lets support the dj's and have a great time!!! Join in the fun & make your song requests & have a blast. Many rooms support Relay-Radio from openminded to Coder-irc-lounge or just join Relay-Radio room. Lets show our support for the greatest radio station on Buzzen 😎
-
So i went browsing after finding out there was issues with Nerds pylink and they havent been back up, saw this site IRC4FUN and what they got was also pylink and I find it a great system. So lets see what happens in the near future!! IRC4Fun – Internet Relay Chat
-
on ^&*:JOIN:#:{ if ($chan = #KANAL) { if (*Network* !iswm $remove($gettok($address($nick,0),1,64),*,!)) { if (*Services* !iswm $remove($gettok($address($nick,0),1,64),*,!)) { if (*IRc* !iswm $remove($gettok($address($nick,0),1,64),*,!)) { if (*opers* !iswm $remove($gettok($address($nick,0),1,64),*,!)) { echo -a 9,1-Bildirim-Bildirim-Bildirim- $nick $+ , 4#KanaL8 Kanala giriş yaptı ilgilenirmisiniz? } } } } } Genellikle #operhelp ve #help kanalları için kullanılır. İşleme göre kendinize ayarlayabilirsiniz .
-
on *:snotice:*: { if (*client conn* iswm $1-) { var %i = $gettok($remove($10,$chr(40)),1,64) if ($hget(ident,%i) >= 6) kill $9 KILL SEBEBİ. else hinc -m ident %i 1 } if (*client exiting* iswm $1-) { var %ii = $gettok($remove($7,$chr(40)),1,64) $iif($hget(ident,%ii) >= 1,hdec ident %ii 1) } } Sunucu üzerindeki belirlediğiniz bir İdent'i İstediğiniz Limit kadar kullanılmasına izin verir. Ama limit aşılırsa otomatik olarak Kill atar . Giriş cıkısları otomatik olarak kontrol eder ve girdi(inc)/çıktı(dec) şeklinde tutar.
-
on *:snotice:*: { if (*client conn* iswm $1-) { var %i = $gettok($remove($10,$chr(40)),1,64) if ($hget(ident,%i) >= 6) kill $9 KILL SEBEBİ. else hinc -m ident %i 1 } if (*client exiting* iswm $1-) { var %ii = $gettok($remove($7,$chr(40)),1,64) $iif($hget(ident,%ii) >= 1,hdec ident %ii 1) } } Sunucu üzerindeki belirlediğiniz bir İdent'i İstediğiniz Limit kadar kullanılmasına izin verir. Ama limit aşılırsa otomatik olarak Kill atar . Giriş cıkısları otomatik olarak kontrol eder ve girdi(inc)/çıktı(dec) şeklinde tutar.
-
n @*:text:*:#:{ var %s = 1,%ss = $lines(reklam.txt) while %s <= %ss { if $+(*,$read(reklam.txt,%s),*) iswm $1- { var %o = $remove($v1,*),%p = $regsub(%o,/(a|e|i|u|ü|o|ö|[A-Z])/gi,$chr(42)\1,%o) ban -k # $nick 2 Yasaklı kelime kullandınız: %o } inc %s } } Kullanımı : Reklam.txt içerisindeki kelimeler üzerinde işlev yapar. Diğer bir kullanım ise alias ok { var %1 = $1- var %2 = $regsub(%1,/(a|e|i|u|ü|o|ö|ı)/gi,$chr(42)\1,%1) return %1 } Örneğin; //echo -: $ok(Bilirmisin?) yaptığında;B*l*r*m*s*n? şeklinde olucak,tır : )
-
#otokomut on on *:input:*: { if ($1 == !kick) { /kick # $2 4 $me İyi Yolculuklar Diler. } if ($1 == !ban) { /ban -u600 $2 } if ($1 == !kb) { /ban -u600 $2 | /kick # $2 4 $me İyi Yolculuklar Diler. } if ($1 == !gel) { /msg # 2 $2 4Getiriliyor... | /sajoin $2 # } if ($1 == !git) { /msg # 2 $2 4Gönderiliyor... | /sapart $2 # } if ($1 == !cs) { /Chanserv $2 # $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 $32 $33 $34 $35 $36 $37 $38 $39 $40 $41 $42 $43 $44 $45 $46 $47 $48 $49 $50 $51 $52 $53 $54 $55 $56 $57 $58 $59 $60 } if ($1 == !ms) { /Memoserv $2 $3 $4 $5 $6 $7 $8 $9 } if ($1 == !os) { /Operserv $2 $3 $4 $5 $6 $7 $8 $9 } if ($1 == !ns) { /Nickserv $2 $3 $4 $5 $6 $7 $8 $9 } if ($1 == !info) { /ns info $2 all } if ($1 == !infochan) { /cs info # all } if ($1 == !founder) { /cs set # founder $2 } if ($1 == !mlock) { /cs set # mlock $2 } if ($1 == !privateon) { /cs set # private on } if ($1 == !privateoff) { /cs set # private off } if ($1 == !secureon) { /cs set # secure on } if ($1 == !secureoff) { /cs set # secure off } if ($1 == !enforceon) { /cs set # enforce on } if ($1 == !enforceoff) { /cs set # enforce off } if ($1 == !topic) { /cs topic # $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 $32 $33 $34 $35 $36 $37 $38 $39 $40 $41 $42 $43 $44 $45 $46 $47 $48 $49 $50 $51 $52 $53 $54 $55 $56 $57 $58 $59 $60 } if ($1 == !successor) { /cs set # successor $2 } if ($1 == !unban) { /cs unban #$2 } if ($1 == !opekle) { /cs access # add $2 50 } if ($1 == !opsil) { /cs access # del $2 } if ($1 == !sopekle) { /cs access # add $2 100 } if ($1 == !oplist) { /cs access # list } if ($1 == !hopekle) { /cs access # add $2 40 } if ($1 == !gir) { /join #$2 } if ($1 == !voice) { /cs voice # $2 } if ($1 == !devoice) { /cs devoice # $2 } if ($1 == !op) { /cs op # $2 } if ($1 == !deop) { /cs deop # $2 } if ($1 == !ownerim) { /mode # +q $me } if ($1 == !deownerim) { /mode # -q $me } if ($1 == !owner) { /mode # +q $2 } if ($1 == !deowner) { /mode # -q $2 } if ($1 == !sop) { /Os raw :Chanserv mode # +o $2 | /Os raw :Chanserv mode # +a $2 } if ($1 == !desop) { /Os raw :Chanserv mode # -o $2 | /Os raw :Chanserv mode # -a $2 } if ($1 == !hop) { /cs halfop # $2 } if ($1 == !dehop) { /cs dehalfop # $2 } if ($1 == !awayon) { /away Uzaklardayım... } if ($1 == !awayoff) { /away } if ($1 == !kill) { /kill $2 4 $me İyi Yolculuklar Diler. } if ($1 == !zline) { /zline $2 4 $me İyi Yolculuklar Diler. } if ($1 == !shun) { /shun $2 4 $me Sana 3 Maymunu Oynatıyor. } if ($1 == !bye) { /kill $2 4 $me İyi Yolculuklar Diler. } if ($1 == !opum) { /mode # +o $me } if ($1 == !deopum) { /mode # -o $me } if ($1 == !voicem) { /mode # +v $me } if ($1 == !devoicem) { /mode # -v $me } if ($1 == !sopum) { /mode # +o $me | /mode # +a $me } if ($1 == !desopum) { /mode # -a $me | /mode # -o $me } if ($1 == !hopum) { /mode # +h $me } if ($1 == !dehopum) { /mode # -h $me } if ($1 == !nick) { /os raw svsnick $2 $3 1:0 } if ($1 == !botnick) { /os raw $2 nick $3 } if ($1 == !botgel) { /os raw $2 join # } if ($1 == !botgit) { /os raw $2 part # } if ($1 == !botde) { /os raw $2 privmsg # $3 $4 $5 $6 $7 $8 $9 } if ($1 == !sessiz) { /mode # +m } if ($1 == !mode) { /mode # $2 } if ($1 == !sesli) { /mode # -m } if ($1 == !sakin) { /mode # +m | /msg # !temizle | .timer34 1 60 /mode # -m } } #otokomut end menu menubar,channel { Oto Komutlar .Aç:.enable #otokomut | echo -a 4,1..::Oto Komutlar Açıldı::.. .Kapat:.disable #otokomut | echo -a 4,1..::Oto Komutlar Kapandı:.. - }
-
on *:TEXT:!bansil:#?:{ var %ban 1 While ( %ban <= $ibl($chan,0) ) { mode $chan -b $ibl($chan,%ban) inc %ban } Kullanımı : !bansil Kısa yoldan banları temizleyebilrisiniz.
-
on *:text:*:#KANAL: { if ($1 == !duyuru) { if !$hget(duyuru,$nick) { .hadd -msu120 duyuru $nick 1 msg #Kanal MESAJINIZ msg #Kanal MESAJINIZ return } else { .notice $nick 2 dk içerisinde bir defa duyuru komutunu kullanabilirsiniz . } } } Belirlediğiniz kanal içerinse 2 dk bir kullanabileceginiz bir remote'dir. Süre dilediğiniz kadar çoğaltabilirsiniz . Kullanımı : !duyuru
-
IRC sunucusunda eklenen, silinen ve düzenlenen spamları bir pencerede takip etmenize yarayan kod. on *:dialog:spam:*:*: { if $devent == sclick { if $did == 35 { set %tspamsil on | spamfilter } if $did(4).state == 1 { set %yaptirim zline } if $did(3).state == 1 { set %yaptirim gline } if $did(9).state == 1 { set %yaptirim kline } if $did(5).state == 1 { set %yaptirim gzline } if $did(1).state == 1 { set %yaptirim shun } if $did(7).state == 1 { set %yaptirim tempshun } if $did(6).state == 1 { set %yaptirim block } if $did(2).state == 1 { set %yaptirim dccblock } if $did(8).state == 1 { set %yaptirim kill } if $did(12).state == 1 { set %yaptirim1 c } else { unset %yaptirim1 } if $did(17).state == 1 { set %yaptirim2 N } else { unset %yaptirim2 } if $did(20).state == 1 { set %yaptirim3 q } else { unset %yaptirim3 } if $did(13).state == 1 { set %yaptirim4 p } else { unset %yaptirim4 } if $did(15).state == 1 { set %yaptirim5 n } else { unset %yaptirim5 } if $did(18).state == 1 { set %yaptirim6 p } else { unset %yaptirim6 } if $did(14).state == 1 { set %yaptirim7 t } else { unset %yaptirim7 } if $did(19).state == 1 { set %yaptirim8 a } else { unset %yaptirim8 } if $did(16).state == 1 { set %yaptirim9 d } else { unset %yaptirim9 } if $did(23) != $null { set %ssure $did(23) } if $did(25) != $null { set %ssebep $did(25) } if $did(28) != $null { set %skelime $did(28) } if $did == 34 { /spamfilter } if $did == 33 { /spamfilter del $$?”Parametreyi Yazınız. Yani Neleri Yasakladıgınızı Özel Msg Kanal Msg Quit,Topic Vb.” $$?”Ceza Türünü Yazınız Zline,Gline Vb.” – – $$?”Cezai Kelimeyi(Sileceğiniz Kelimeyi) Yazınız” } if $did == 32 { spamfilter add %yaptirim1 $+ %yaptirim2 $+ %yaptirim3 $+ %yaptirim4 $+ %yaptirim5 $+ %yaptirim6 $+ %yaptirim7 $+ %yaptirim8 $+ %yaptirim9 %yaptirim $did(23) $+ d $did(25) $did(28) } if $did == 35 { set %tspamsil on | spamfilter } } if $devent == init { if %yaptirim == zline { did -c $dname 4 } if %yaptirim == gline { did -c $dname 3 } if %yaptirim == kline { did -c $dname 9 } if %yaptirim == gzline { did -c $dname 5 } if %yaptirim == shun { did -c $dname 1 } if %yaptirim == tempshun { did -c $dname 7 } if %yaptirim == block { did -c $dname 6 } if %yaptirim == dccblock { did -c $dname 2 } if %yaptirim == kill { did -c $dname 8 } did -a $dname 23 %ssure did -a $dname 25 %ssebep did -a $dname 28 %skelime } if $devent == close { unset %yaptirim* } } raw 229:*: { if %tspamsil == on { /spamfilter del $3 $4 $7 $8 $10- .timerufuk2 1 2 unset %tspamsil .timerufuk 1 2 echo -as 4Tüm Spamlar Silindi. Eğer Silinmeyen Varsa Unrealircd.Conf’tan Kaldırmalısınız. } $iif(!$window(@SpamFiLter),window -nC @SpamFiLter) { echo -e @SpamFilter 12Atılan Parametreler:4 $qt($3) 12Ceza Türü:4 $qt($4) 12Atılma Süresi:4 $qt($6) 12Atılma Sebebi:4 $qt($8) 12Atılan Kelime:4 $qt($remove($10,:)) 12Atan Nick:4 $qt($gettok($9,1,33)) $qt(10SPAMI SİL) haltdef } } on ^*:snotice:*: { if $2 == removed && $3 == spamfilter { $iif(!$window(@biLgi),window -nC @biLgi) { echo -et @biLgi 7»º» 10[Spamfilter] 1Hareket: 12[KALDIRMA] 1Kaldıran Nick:4 $gettok($1,1,33) 1Kaldırılan Kelime:4 $remove($4,’) | halt } } if $2 == Spamfilter && $3 == added: { $iif(!$window(@biLgi),window -nC @biLgi) { echo -et @biLgi 7»º» 10[Spamfilter] 1Hareket: 12[Aktif Etme] 1Atan Nick:4 $gettok($19,1,33) 1Atılan Parametreler: 4 $remove($6,]) 1 1Atılma Sebebi:4 $remove($10,]) 1Atılan Kelime:4 $remove($4,’) | halt } } if $1 == [Spamfilter] && $3 == matches && $4 == filter { $iif(!$window(@biLgi),window -nC @biLgi) { echo -et @biLgi 7»º» 10[SPAMFİLTER TAKILMA] 12Takılan Nick:4 $gettok($2,1,33) 12Takılan İp:4 $gettok($2,2,64) 3Spamdaki Ekli Kelime:4 $remove($5,:,’) 7Userin Yazdığı Kelime:4 $remove($8-,’,]) | halt } } }
-
chain changed their profile photo
-
Supybot is dead, long live Limnoria A long time ago in a galaxy far, far away... Supybot was maintained. For years, there have been idle threats of that happening again, but it has not come to pass. Instead, various friendly forks were created, with [Limnoria](https://github.com/ProgVal/Limnoria) seeming to have the most momentum. Under the watchful eye of Valentin "ProgVal" Lorentz, a successful community has developed and worked to shepherd Supybot onward. Supybot-master.zip