Blame
Date:
Wed Feb 1 05:00:29 2023 UTC
Message:
Daily backup
001
2023-01-22
jrmu
version=pmwiki-2.2.130 ordered=1 urlencoded=1
002
2023-01-22
jrmu
agent=w3m/0.5.3+git20210102
003
2023-01-22
jrmu
author=jrmu
004
2023-01-22
jrmu
charset=UTF-8
005
2023-01-22
jrmu
csum=
006
2023-01-22
jrmu
ctime=1612781017
007
2023-01-22
jrmu
host=38.87.162.8
008
2023-01-22
jrmu
name=Pylink.Install
009
2023-01-22
jrmu
rev=94
010
2023-01-22
jrmu
targets=Oidentd.Install
011
2023-01-22
jrmu
text=(:title Pylink Install Guide:)%0a%0aPyLink is a relay that can help connect channels across multiple networks together.%0a%0aAdvantages:%0a%0a# Can link up channels on multiple networks quickly%0a# Shows all users on the home server%0a%0aDisadvantages:%0a%0a# Bloated and insecure%0a# Buggy and unstable, crashes frequently%0a# Requires channel owner to op the bot to link%0a# Bad spam defenses%0a%0aPyLink should eventually be replaced with a more reliable relay written in pure C.%0a%0a!! Installation%0a%0aFirst we install all python related dependencies:%0a%0a[@%0a$ doas pkg_add python%253.8 py3-pip git%0a$ doas useradd -m -g =uid -c pylink -d /home/pylink -s /bin/ksh pylink%0a$ doas su pylink%0a$ cd%0a$ git clone https://github.com/jlu5/PyLink && cd PyLink%0a$ pip3.8 install setuptools --user%0a$ pip3.8 install pyyaml --user%0a$ pip3.8 install cachetools --user%0a$ pip3.8 install passlib --user%0a$ pip3.8 install Unidecode --user%0a$ pip3.8 install psutil --user%0a$ cd PyLink%0a$ python3 setup.py install --user%0a@]%0a%0aPyLink does not appear very secure, so we will create a chroot for it. We run the following commands as root:%0a%0a[@%0amkdir -p /home/pylink/usr/local/bin%0amkdir -p /home/pylink/usr/local/lib%0amkdir -p /home/pylink/usr/local/include/%0amkdir -p /home/pylink/usr/local/lib/pkgconfig/%0amkdir -p /home/pylink/usr/local/share/doc/%0amkdir -p /home/pylink/usr/lib%0amkdir -p /home/pylink/usr/libexec%0amkdir -p /home/pylink/var/run/%0amkdir -p /home/pylink/usr/local/man/man1/%0amkdir -p /home/pylink/usr/local/share/aclocal-1.11/am/%0amkdir -p /home/pylink/etc/ssl/%0acp /usr/local/bin/python3 /home/pylink/usr/local/bin/%0acp /usr/local/bin/python3.8-config /home/pylink/usr/local/bin/%0acp /usr/local/bin/python3-config /home/pylink/usr/local/bin/%0acp /usr/local/bin/python3.8 /home/pylink/usr/local/bin/%0acp /usr/local/lib/libpython3.8.so.0.0 /home/pylink/usr/local/lib/%0acp /usr/local/lib/libintl.so.7.0 /home/pylink/usr/local/lib/%0acp /usr/lib/libpthread.so.26.1 /home/pylink/usr/lib/%0acp /usr/lib/libutil.so.15.0 /home/pylink/usr/lib/%0acp /usr/lib/libm.so.10.1 /home/pylink/usr/lib/%0acp /usr/lib/libc.so.96.0 /home/pylink/usr/lib/%0acp /usr/local/lib/libiconv.so.7.0 /home/pylink/usr/local/lib/%0acp /usr/libexec/ld.so /home/pylink/usr/libexec/%0acp /var/run/ld.so.hints /home/pylink/var/run/%0acp -R /usr/local/include/python3.8 /home/pylink/usr/local/include/%0acp /usr/local/lib/pkgconfig/python-3.8.pc /home/pylink/usr/local/lib/pkgconfig/%0acp /usr/local/lib/pkgconfig/python3.pc /home/pylink/usr/local/lib/pkgconfig/%0acp /usr/local/lib/pkgconfig/python-3.8-embed.pc /home/pylink/usr/local/lib/pkgconfig/%0acp /usr/local/lib/pkgconfig/python3-embed.pc /home/pylink/usr/local/lib/pkgconfig/%0acp -R /usr/local/lib/python3.8 /home/pylink/usr/local/lib/%0acp /usr/local/man/man1/python3.1 /home/pylink/usr/local/man/man1/%0acp /usr/local/man/man1/python3.8.1 /home/pylink/usr/local/man/man1/%0acp -R /usr/local/share/doc/python3.8 /home/pylink/usr/local/share/doc/%0acp /usr/local/share/aclocal-1.11/python.m4 /home/pylink/usr/local/share/aclocal-1.11/%0acp /usr/local/share/automake-1.11/am/python.am /home/pylink/usr/local/share/aclocal-1.11/am/%0acp /etc/resolv.conf /home/pylink/etc/%0acp /etc/ssl/cert.pem /home/pylink/etc/ssl/%0acp /usr/local/bin/pip3.8 /home/pylink/usr/local/bin/%0acp -R /usr/lib/ /home/pylink/usr/%0acp -R /usr/local/lib/ /home/pylink/usr/local/%0achroot -u pylink -g pylink /home/pylink pip3.8 install setuptools --user%0achroot -u pylink -g pylink /home/pylink pip3.8 install pyyaml --user%0achroot -u pylink -g pylink /home/pylink pip3.8 install cachetools --user%0achroot -u pylink -g pylink /home/pylink pip3.8 install passlib --user%0achroot -u pylink -g pylink /home/pylink pip3.8 install unidecode --user%0a@]%0a%0a(:if false:)%0achroot -u pylink -g pylink /home/pylink pip3.8 install psutil --user%0a(:ifend:)%0a%0aAfterwards, we run the following as the user pylink:%0a%0a[@%0a$ cd ~/PyLink%0a$ cp example-conf.yml pylink.yml%0a@]%0a%0aWe then edit pylink.yml:%0a%0a[@%0apylink:%0a nick: BotNick%0a ident: BotIdent%0a realname: Relay%0a serverdesc: Relay%0a prefix: "&"%0a spawn_services: false%0a@]%0a%0aIn order for ident to display properly, you must install and configure [[oidentd/install|oidentd]].%0a%0aYou will want to run this as the user pylink to generate a password hash:%0a%0a[@%0a/home/pylink/PyLink/pylink-mkpasswd%0aPassword: %0a$pbkdf2-sha256$29000$AeBcKwWA0HqvNUYIgbBWqg$9EPkgnfsLsZHJk9YJy16MKqTEKCvZohdT1MyAbXQTjQ%0a@]%0a%0aThe login section below lets us pick a username and password for administering the bot. Use the password hash you generated above:%0a%0a[@%0alogin:%0a accounts:%0a username:%0a password: "$6$rounds=81447$WlVlZYCgbnjPmVqy$28Tu/Zl0xNpePqimax2wABKn5GCoWomYEI1Pu5jqYyQNULazR4BxQmscZ0MgBHqBCCke.3u5eOtBSZwL3WwVf0"%0a encrypted: true%0a #require_oper: true%0a #hosts: ["*!*@localhost", "*!*@trusted.isp"]%0apermissions:%0a "username":%0a - "*"%0a@]%0a%0aFor extra security, we recommend you uncomment #require_oper and set it to true, so that only opers can login. We also recommend you uncomment #hosts and set it to properly match your vhost. This will make it harder for someone to steal your relay.%0a%0aIn the permissions block, you can replace username with a full hostmask for more security.%0a%0aNow we specify the server running on our VPS:%0a%0a[@%0aservers:%0a your:%0a ip: 127.0.0.1%0a port: 16667%0a recvpass: "abcdefghijklmnopqrstuvwxyz"%0a sendpass: "abcdefghijklmnopqrstuvwxyz"%0a bindhost: 10.0.0.1%0a netname: "YourNet"%0a hostname: "relay.example.com"%0a sid: "0PY"%0a sidrange: "8##"%0a protocol: "ngircd"%0a maxnicklen: 16%0a ssl: false%0a autoconnect: 10%0a@]%0a%0aFor the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is YourNet, the hostname depends upon your team's domain. You can leave sid and sidrange unchanged.%0a%0aFor each server you want to connect, add a new block like below:%0a%0a[@%0a oftc:%0a ip: irc.oftc.net%0a port: 6697%0a netname: "OFTC"%0a protocol: "clientbot"%0a pylink_nick: BotNick%0a pylink_ident: BotIdent%0a pylink_altnicks: ["BotNick`", "BotNick-"]%0a ssl: true%0a autoconnect: 30%0a throttle_time: 1.0%0a@]%0a%0aThis block is for OFTC.%0a%0a[@%0aplugins:%0a - commands%0a - networks%0a - ctcp%0a - relay%0a - relay_clientbot%0a - servprotect%0a - antispam%0a - raw%0a@]%0a%0aWe are going to uncomment the relay and relay_clientbot plugins so we can relay in client mode.%0a%0aNext, we set up logging:%0a%0a[@%0alogging:%0a console: INFO%0a channels:%0a# your:%0a# "#services":%0a# loglevel: INFO%0a# "#pylink-notifications":%0a# loglevel: WARNING%0a files:%0a "errors":%0a loglevel: ERROR%0a "commands":%0a loglevel: INFO%0a@]%0a%0aIf you want to log to a channel, uncomment those lines, then replace @@your@@ with your shortened network name and replace with your channel names. I prefer to just have error messages go to console and files.%0a%0aWe delete the changehost plugin, then add clientbot_styles to the relay plugin in order to make the relay less noisy:%0a%0a[@%0arelay:%0a allow_free_oper_links: true%0a tag_nicks: true%0a forcetag_nicks:%0a - "*Serv"%0a separator: "/"%0a allow_clientbot_pms: true%0a hideoper: true%0a show_netsplits: false%0a accept_weird_senders: false%0a whois_show_accounts: all%0a whois_show_server: opers%0a clientbot_styles:%0a ACTION: ""%0a JOIN: ""%0a KICK: ""%0a MESSAGE: "%3c$sender> $text"%0a MODE: ""%0a NICK: ""%0a NOTICE: "%3c$sender> $text"%0a PART: ""%0a PM: "PM from $sender on $netname: $text"%0a PNOTICE: "%3c$sender> $text"%0a QUIT: ""%0a SJOIN: ""%0a SQUIT: ""%0a@]%0a%0aI delete the games and global plugin. Then, for automode and stats:%0a%0a[@%0aautomode:%0a nick: Automode%0a joinmodes: 'o'%0a prefix: "@"%0astats:%0a time_format: "%25c"%0a@]%0a%0aNow we configure antispam to block mass highlights, part/quit floods, and profanity. You can adjust the word lists (the word shibboleth is used as a test phrase):%0a%0a[@%0aantispam:%0a masshighlight:%0a enabled: true%0a punishment: block%0a reason: "Mass highlight spam is prohibited"%0a min_length: 50%0a min_nicks: 5%0a textfilter:%0a enabled: true%0a punishment: block%0a reason: "Spam is prohibited"%0a watch_pms: true%0a textfilter_globs:%0a - "*shibboleth*"%0a partquit:%0a@]%0a%0aYou'll need to add this to /etc/ngircd/ngircd.conf:%0a%0a[@%0a[Server]%0a Name = relay.example.com%0a Host = 127.0.0.1%0a Bind = 38.81.163.143%0a Port = 16667%0a MyPassword = fyLnwwxSvxc2gpn3AM994FMitD%0a PeerPassword = fyLnwwxSvxc2gpn3AM994FMitD%0a ;Group = 123%0a Passive = no%0a SSLConnect = no %0a@]%0a%0aReplace 38.81.163.143 with your IP address.%0a%0aWe reload ngircd.conf:%0a%0a[@%0a$ doas rcctl reload ngircd%0a@]%0a%0aThen we start PyLink by running it inside a chroot:%0a%0a[@%0a$ doas su%0a# export HOME=/%0a# chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink PyLink/pylink.yml%0a@]%0a%0a!! Logging in%0a%0a[@%0a/msg %3cbotnick> login username password%0a/msg %3cbotnick> create #channel%0a/msg %3cbotnick> remote %3cother> link %3cyour> #channel%0a15:39 -botnick(botident@f6e1cdd3)- Joining '#channel' now to check for op status; please run this command again after I join.%0a@]%0a%0aNow op the bot, then run the command again:%0a%0a[@%0a/msg %3cbotnick> remote %3cother> link %3cyour> #channel%0a15:39 -botnick(botident@f6e1cdd3)- Done.%0a@]%0a%0aFinally, to prevent pylink from accidentally de-opping other users:%0a%0a[@%0a/msg %3cbotnick> claim #channel -%0a@]%0a%0a!! Troubleshooting%0a%0aSometimes PyLink may crash, and when you attempt to restart it, it says that the PID file already exists: %0a%0a[@%0a$ doas su%0a# export HOME=/%0a# chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink PyLink/pylink.yml%0a2021-02-12 00:19:39,495 [ERROR] PID file 'pylink.pid' exists; aborting!%0a@]%0a%0aSimply remove the file:%0a%0a[@%0a# rm /home/pylink/pylink.pid%0a# rm /home/pylink/PyLink/pylink.pid%0a@]%0a%0aIf the bot ever gets stuck and you can't kill it:%0a%0a[@%0a$ ps ax | grep pylink%0a22986 p7 S+ 0:03.08 python3.8 PyLink/pylink PyLink/pylink.yml%0a$ doas kill -KILL 22986%0a@]%0a%0aReplace 22986 with whatever process ID python has.%0a%0aOr use an simpler command:%0a%0a[@%0acd /home/pylink%0adoas kill -KILL `cat pylink.pid`%0a@]%0a
012
2023-01-22
jrmu
time=1638453762
013
2023-01-22
jrmu
title=Pylink Install Guide
014
2023-01-22
jrmu
author:1638453762=jrmu
015
2023-01-22
jrmu
diff:1638453762:1638453705:=272a273,310%0a> - "* arse *"%0a> - "* ass *"%0a> - "* asses *"%0a> - "*asshole*"%0a> - "*bastard*"%0a> - "*bitch*"%0a> - "*blow job*"%0a> - "*blowjob*"%0a> - "*bollock*"%0a> - "* boner *"%0a> - "* boob *"%0a> - "* boobs *"%0a> - "* cock *"%0a> - "* cocks *" %0a> - "*cocksuck*"%0a> - "* crap*" %0a> - "* cum *"%0a> - "* cumming*"%0a> - "* cunt*" %0a> - "*dick*"%0a> - "* dildo*" %0a> - "*ejaculat*"%0a> - "* fag*"%0a> - "*fatass*"%0a> - "*fuck*"%0a> - "* jizz*"%0a> - "* horny*"%0a> - "*mast?rbat*"%0a> - "*nigger*"%0a> - "*nigga*"%0a> - "* piss*"%0a> - "*pussies*"%0a> - "*pussy*"%0a> - "* shit*"%0a> - "* slut*"%0a> - "* suck*"%0a> - "* tits*"%0a> - "* whore*"%0a
016
2023-01-22
jrmu
host:1638453762=38.87.162.8
017
2023-01-22
jrmu
author:1638453705=jrmu
018
2023-01-22
jrmu
diff:1638453705:1614990676:=24c24%0a%3c $ doas pkg_add python%253.8 py3-pip git%0a---%0a> $ doas pkg_add python-3.8.6p0 py3-pip-20.1.1p0 git%0a401c401%0a%3c @]%0a---%0a> @]%0a\ No newline at end of file%0a
019
2023-01-22
jrmu
host:1638453705=38.87.162.8
020
2023-01-22
jrmu
author:1614990676=jrmu
021
2023-01-22
jrmu
diff:1614990676:1614529499:=360,365d359%0a%3c @]%0a%3c %0a%3c Finally, to prevent pylink from accidentally de-opping other users:%0a%3c %0a%3c [@%0a%3c /msg %3cbotnick> claim #channel -%0a
022
2023-01-22
jrmu
host:1614990676=198.251.81.119
023
2023-01-22
jrmu
author:1614529499=jrmu
024
2023-01-22
jrmu
diff:1614529499:1614524235:=329,330d328%0a%3c %0a%3c Replace 38.81.163.143 with your IP address.%0a
025
2023-01-22
jrmu
host:1614529499=198.251.81.119
026
2023-01-22
jrmu
author:1614524235=jrmu
027
2023-01-22
jrmu
diff:1614524235:1613811946:=39c39%0a%3c PyLink does not appear very secure, so we will create a chroot for it. We run the following commands as root:%0a---%0a> PyLink does not appear very secure, so we will create a chroot for it:%0a
028
2023-01-22
jrmu
host:1614524235=198.251.81.119
029
2023-01-22
jrmu
author:1613811946=jrmu
030
2023-01-22
jrmu
diff:1613811946:1613805713:=91c91%0a%3c (:ifend:)%0a---%0a> (:endif:)%0a
031
2023-01-22
jrmu
host:1613811946=198.251.81.119
032
2023-01-22
jrmu
author:1613805713=jrmu
033
2023-01-22
jrmu
diff:1613805713:1613724103:=86a87%0a> chroot -u pylink -g pylink /home/pylink pip3.8 install psutil --user%0a88,91d88%0a%3c %0a%3c (:if false:)%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install psutil --user%0a%3c (:endif:)%0a
034
2023-01-22
jrmu
host:1613805713=198.251.81.119
035
2023-01-22
jrmu
author:1613724103=jrmu
036
2023-01-22
jrmu
diff:1613724103:1613484632:=130c130%0a%3c "username":%0a---%0a> "username"%0a
037
2023-01-22
jrmu
host:1613724103=198.251.81.119
038
2023-01-22
jrmu
author:1613484632=jrmu
039
2023-01-22
jrmu
diff:1613484632:1613398342:=106d105%0a%3c spawn_services: false%0a
040
2023-01-22
jrmu
host:1613484632=198.251.81.119
041
2023-01-22
jrmu
author:1613398342=fizi
042
2023-01-22
jrmu
diff:1613398342:1613397662:=35d34%0a%3c $ cd PyLink%0a
043
2023-01-22
jrmu
host:1613398342=39.42.103.95
044
2023-01-22
jrmu
author:1613397662=jrmu
045
2023-01-22
jrmu
diff:1613397662:1613388265:=29,34c29,34%0a%3c $ pip3.8 install setuptools --user%0a%3c $ pip3.8 install pyyaml --user%0a%3c $ pip3.8 install cachetools --user%0a%3c $ pip3.8 install passlib --user%0a%3c $ pip3.8 install Unidecode --user%0a%3c $ pip3.8 install psutil --user%0a---%0a> $ pip3 install setuptools --user%0a> $ pip3 install pyyaml --user%0a> $ pip3 install cachetools --user%0a> $ pip3 install passlib --user%0a> $ pip3 install Unidecode --user%0a> $ pip3 install psutil --user%0a
046
2023-01-22
jrmu
host:1613397662=198.251.81.119
047
2023-01-22
jrmu
author:1613388265=miniontoby
048
2023-01-22
jrmu
csum:1613388265=added simple command
049
2023-01-22
jrmu
diff:1613388265:1613292131:=381,388c381%0a%3c Replace 22986 with whatever process ID python has.%0a%3c %0a%3c Or use an simpler command:%0a%3c %0a%3c [@%0a%3c cd /home/pylink%0a%3c doas kill -KILL `cat pylink.pid`%0a%3c @]%0a\ No newline at end of file%0a---%0a> Replace 22986 with whatever process ID python has.%0a\ No newline at end of file%0a
050
2023-01-22
jrmu
host:1613388265=145.132.146.30
051
2023-01-22
jrmu
author:1613292131=jrmu
052
2023-01-22
jrmu
diff:1613292131:1613291742:=357,358d356%0a%3c Sometimes PyLink may crash, and when you attempt to restart it, it says that the PID file already exists: %0a%3c %0a360,362c358%0a%3c $ doas su%0a%3c # export HOME=/%0a%3c # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink PyLink/pylink.yml%0a---%0a> $ python3 pylink%0a364,370c360%0a%3c @]%0a%3c %0a%3c Simply remove the file:%0a%3c %0a%3c [@%0a%3c # rm /home/pylink/pylink.pid%0a%3c # rm /home/pylink/PyLink/pylink.pid%0a---%0a> $ rm pylink.pid%0a
053
2023-01-22
jrmu
host:1613292131=198.251.81.119
054
2023-01-22
jrmu
author:1613291742=jrmu
055
2023-01-22
jrmu
diff:1613291742:1613290855:=241,242c241,242%0a%3c I delete the games and global plugin. Then, for automode and stats:%0a%3c %0a---%0a> I delete the games, global plugin:%0a> %0a252c252%0a%3c Now we configure antispam to block mass highlights, part/quit floods, and profanity. You can adjust the word lists (the word shibboleth is used as a test phrase):%0a---%0a> Now we configure antispam to block mass highlights, part/quit floods, and profanity:%0a
056
2023-01-22
jrmu
host:1613291742=198.251.81.119
057
2023-01-22
jrmu
author:1613290855=jrmu
058
2023-01-22
jrmu
diff:1613290855:1613290484:=146,147c146,147%0a%3c netname: "YourNet"%0a%3c hostname: "relay.example.com"%0a---%0a> netname: "IRCNow"%0a> hostname: "relay.ircnow.org"%0a156,157c156,157%0a%3c For the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is YourNet, the hostname depends upon your team's domain. You can leave sid and sidrange unchanged.%0a%3c %0a---%0a> For the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname depends upon your team's domain. You can leave sid and sidrange unchanged.%0a> %0a166,168c166,168%0a%3c pylink_nick: BotNick%0a%3c pylink_ident: BotIdent%0a%3c pylink_altnicks: ["BotNick`", "BotNick-"]%0a---%0a> pylink_nick: ircnow%0a> pylink_ident: ircnow%0a> pylink_altnicks: ["ircnow`", "ircnow-"]%0a314c314%0a%3c Name = relay.example.com%0a---%0a> Name = relay.ircnow.org%0a345c345%0a%3c 15:39 -botnick(botident@f6e1cdd3)- Joining '#channel' now to check for op status; please run this command again after I join.%0a---%0a> 15:39 -ircnow(ircnow@f6e1cdd3)- Joining '#ircnow-test' now to check for op status; please run this command again after I join.%0a352c352%0a%3c 15:39 -botnick(botident@f6e1cdd3)- Done.%0a---%0a> 15:39 -ircnow(ircnow@f6e1cdd3)- Done.%0a
059
2023-01-22
jrmu
host:1613290855=198.251.81.119
060
2023-01-22
jrmu
author:1613290484=jrmu
061
2023-01-22
jrmu
diff:1613290484:1613282999:=156c156%0a%3c For the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname depends upon your team's domain. You can leave sid and sidrange unchanged.%0a---%0a> For the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname is depends upon your team's domain. You can leave sid and sidrange unchanged.%0a
062
2023-01-22
jrmu
host:1613290484=198.251.81.119
063
2023-01-22
jrmu
author:1613282999=jrmu
064
2023-01-22
jrmu
diff:1613282999:1613282921:=
065
2023-01-22
jrmu
host:1613282999=198.251.81.119
066
2023-01-22
jrmu
author:1613282921=jrmu
067
2023-01-22
jrmu
diff:1613282921:1613282428:=286a287%0a> - "*damn*"%0a294a296,297%0a> - "* lmao*"%0a> - "* lmfao*"%0a
068
2023-01-22
jrmu
host:1613282921=198.251.81.119
069
2023-01-22
jrmu
author:1613282428=jrmu
070
2023-01-22
jrmu
diff:1613282428:1613281981:=250,310d249%0a%3c @]%0a%3c %0a%3c Now we configure antispam to block mass highlights, part/quit floods, and profanity:%0a%3c %0a%3c [@%0a%3c antispam:%0a%3c masshighlight:%0a%3c enabled: true%0a%3c punishment: block%0a%3c reason: "Mass highlight spam is prohibited"%0a%3c min_length: 50%0a%3c min_nicks: 5%0a%3c textfilter:%0a%3c enabled: true%0a%3c punishment: block%0a%3c reason: "Spam is prohibited"%0a%3c watch_pms: true%0a%3c textfilter_globs:%0a%3c - "* arse *"%0a%3c - "* ass *"%0a%3c - "* asses *"%0a%3c - "*asshole*"%0a%3c - "*bastard*"%0a%3c - "*bitch*"%0a%3c - "*blow job*"%0a%3c - "*blowjob*"%0a%3c - "*bollock*"%0a%3c - "* boner *"%0a%3c - "* boob *"%0a%3c - "* boobs *"%0a%3c - "* cock *"%0a%3c - "* cocks *" %0a%3c - "*cocksuck*"%0a%3c - "* crap*" %0a%3c - "* cum *"%0a%3c - "* cumming*"%0a%3c - "* cunt*" %0a%3c - "*damn*"%0a%3c - "*dick*"%0a%3c - "* dildo*" %0a%3c - "*ejaculat*"%0a%3c - "* fag*"%0a%3c - "*fatass*"%0a%3c - "*fuck*"%0a%3c - "* jizz*"%0a%3c - "* horny*"%0a%3c - "* lmao*"%0a%3c - "* lmfao*"%0a%3c - "*mast?rbat*"%0a%3c - "*nigger*"%0a%3c - "*nigga*"%0a%3c - "* piss*"%0a%3c - "*pussies*"%0a%3c - "*pussy*"%0a%3c - "* shit*"%0a%3c - "* slut*"%0a%3c - "* suck*"%0a%3c - "* tits*"%0a%3c - "* whore*"%0a%3c - "*shibboleth*"%0a%3c partquit:%0a
071
2023-01-22
jrmu
host:1613282428=198.251.81.119
072
2023-01-22
jrmu
author:1613281981=jrmu
073
2023-01-22
jrmu
diff:1613281981:1613281850:=241c241%0a%3c I delete the games, global plugin:%0a---%0a> I delete the games plugin:%0a
074
2023-01-22
jrmu
host:1613281981=198.251.81.119
075
2023-01-22
jrmu
author:1613281850=jrmu
076
2023-01-22
jrmu
diff:1613281850:1613281521:=241,242c241,242%0a%3c I delete the games plugin:%0a%3c %0a---%0a> The remaining plugins:%0a> %0a247a248,250%0a> games:%0a> nick: Games%0a> prefix: "./"%0a
077
2023-01-22
jrmu
host:1613281850=198.251.81.119
078
2023-01-22
jrmu
author:1613281521=jrmu
079
2023-01-22
jrmu
diff:1613281521:1613145225:=210c210,225%0a%3c We delete the changehost plugin, then add clientbot_styles to the relay plugin in order to make the relay less noisy:%0a---%0a> [@%0a> changehost:%0a> enabled_nets:%0a> - inspnet%0a> - ts6net%0a> enforce_exceptions:%0a> - "*!*@yournet/staff/*"%0a> hosts:%0a> "*!yourname@*.yournet.com": "$nick.opers.yournet.com"%0a> "*!*@localhost": "some-server.hostname"%0a> "*!*@bnc-server.yournet.com": "yournet/bnc-users/$ident"%0a> "*!*@ircip?.mibbit.com": "$ident.$realhost"%0a> "WebchatUser*!*@*": "webchat/users/$ident"%0a> @]%0a> %0a> We add clientbot_styles to the relay plugin in order to make the relay less noisy:%0a
080
2023-01-22
jrmu
host:1613281521=198.251.81.119
081
2023-01-22
jrmu
author:1613145225=jrmu
082
2023-01-22
jrmu
diff:1613145225:1613144903:=237d236%0a%3c accept_weird_senders: false%0a
083
2023-01-22
jrmu
host:1613145225=198.251.81.119
084
2023-01-22
jrmu
author:1613144903=jrmu
085
2023-01-22
jrmu
diff:1613144903:1613144582:=
086
2023-01-22
jrmu
host:1613144903=198.251.81.119
087
2023-01-22
jrmu
author:1613144582=jrmu
088
2023-01-22
jrmu
diff:1613144582:1613144020:=234c234%0a%3c allow_clientbot_pms: true%0a---%0a> allow_clientbot_pms: false%0a
089
2023-01-22
jrmu
host:1613144582=198.251.81.119
090
2023-01-22
jrmu
author:1613144020=jrmu
091
2023-01-22
jrmu
diff:1613144020:1613143860:=208c208%0a%3c If you want to log to a channel, uncomment those lines, then replace @@your@@ with your shortened network name and replace with your channel names. I prefer to just have error messages go to console and files.%0a---%0a> If you want to log to a channel, uncomment those lines, then replace @@your@@ with your shortened network name and replace with your channel names. I prefer to just have error messages go to console.%0a
092
2023-01-22
jrmu
host:1613144020=198.251.81.119
093
2023-01-22
jrmu
author:1613143860=jrmu
094
2023-01-22
jrmu
diff:1613143860:1613143420:=190,191d189%0a%3c Next, we set up logging:%0a%3c %0a196,200c194,198%0a%3c # your:%0a%3c # "#services":%0a%3c # loglevel: INFO%0a%3c # "#pylink-notifications":%0a%3c # loglevel: WARNING%0a---%0a> inspnet:%0a> loglevel: INFO%0a> loglevel: WARNING%0a> ts6net:%0a> loglevel: INFO%0a206,210d203%0a%3c @]%0a%3c %0a%3c If you want to log to a channel, uncomment those lines, then replace @@your@@ with your shortened network name and replace with your channel names. I prefer to just have error messages go to console.%0a%3c %0a%3c [@%0a
095
2023-01-22
jrmu
host:1613143860=198.251.81.119
096
2023-01-22
jrmu
author:1613143420=jrmu
097
2023-01-22
jrmu
diff:1613143420:1613142955:=185d184%0a%3c - raw%0a
098
2023-01-22
jrmu
host:1613143420=198.251.81.119
099
2023-01-22
jrmu
author:1613142955=jrmu
100
2023-01-22
jrmu
diff:1613142955:1613141743:=184d183%0a%3c - antispam%0a
101
2023-01-22
jrmu
host:1613142955=198.251.81.119
102
2023-01-22
jrmu
author:1613141743=jrmu
103
2023-01-22
jrmu
diff:1613141743:1613141430:=
104
2023-01-22
jrmu
host:1613141743=198.251.81.119
105
2023-01-22
jrmu
author:1613141430=jrmu
106
2023-01-22
jrmu
diff:1613141430:1613141385:=134c134%0a%3c In the permissions block, you can replace username with a full hostmask for more security.%0a---%0a> In the permissions block, you can replace username with a full vhost for more security.%0a
107
2023-01-22
jrmu
host:1613141430=198.251.81.119
108
2023-01-22
jrmu
author:1613141385=jrmu
109
2023-01-22
jrmu
diff:1613141385:1613141269:=128c128%0a%3c "username"%0a---%0a> "username":%0a133,134d132%0a%3c %0a%3c In the permissions block, you can replace username with a full vhost for more security.%0a
110
2023-01-22
jrmu
host:1613141385=198.251.81.119
111
2023-01-22
jrmu
author:1613141269=jrmu
112
2023-01-22
jrmu
diff:1613141269:1613133528:=125,126d124%0a%3c #require_oper: true%0a%3c #hosts: ["*!*@localhost", "*!*@trusted.isp"]%0a131,132d128%0a%3c %0a%3c For extra security, we recommend you uncomment #require_oper and set it to true, so that only opers can login. We also recommend you uncomment #hosts and set it to properly match your vhost. This will make it harder for someone to steal your relay.%0a
113
2023-01-22
jrmu
host:1613141269=198.251.81.119
114
2023-01-22
jrmu
author:1613133528=jrmu
115
2023-01-22
jrmu
diff:1613133528:1613117335:=106,107d105%0a%3c %0a%3c In order for ident to display properly, you must install and configure [[oidentd/install|oidentd]].%0a
116
2023-01-22
jrmu
host:1613133528=198.251.81.119
117
2023-01-22
jrmu
author:1613117335=jrmu
118
2023-01-22
jrmu
diff:1613117335:1613117121:=38,39c38,39%0a%3c PyLink does not appear very secure, so we will create a chroot for it:%0a%3c %0a---%0a> Then we run this script as root:%0a> %0a206,210d205%0a%3c @]%0a%3c %0a%3c We add clientbot_styles to the relay plugin in order to make the relay less noisy:%0a%3c %0a%3c [@%0a236,240d230%0a%3c @]%0a%3c %0a%3c The remaining plugins:%0a%3c %0a%3c [@%0a267,269d256%0a%3c We reload ngircd.conf:%0a%3c %0a%3c [@%0a271,273d257%0a%3c @]%0a%3c %0a%3c Then we start PyLink by running it inside a chroot:%0a
119
2023-01-22
jrmu
host:1613117335=198.251.81.119
120
2023-01-22
jrmu
author:1613117121=jrmu
121
2023-01-22
jrmu
diff:1613117121:1613116306:=167a168,169%0a> The rest of the settings below have been left untouched:%0a> %0a176,180d177%0a%3c @]%0a%3c %0a%3c We are going to uncomment the relay and relay_clientbot plugins so we can relay in client mode.%0a%3c %0a%3c [@%0a
122
2023-01-22
jrmu
host:1613117121=198.251.81.119
123
2023-01-22
jrmu
author:1613116306=jrmu
124
2023-01-22
jrmu
diff:1613116306:1613116255:=
125
2023-01-22
jrmu
host:1613116306=198.251.81.119
126
2023-01-22
jrmu
author:1613116255=jrmu
127
2023-01-22
jrmu
diff:1613116255:1613115665:=214,227d213%0a%3c clientbot_styles:%0a%3c ACTION: ""%0a%3c JOIN: ""%0a%3c KICK: ""%0a%3c MESSAGE: "%3c$sender> $text"%0a%3c MODE: ""%0a%3c NICK: ""%0a%3c NOTICE: "%3c$sender> $text"%0a%3c PART: ""%0a%3c PM: "PM from $sender on $netname: $text"%0a%3c PNOTICE: "%3c$sender> $text"%0a%3c QUIT: ""%0a%3c SJOIN: ""%0a%3c SQUIT: ""%0a
128
2023-01-22
jrmu
host:1613116255=198.251.81.119
129
2023-01-22
jrmu
author:1613115665=jrmu
130
2023-01-22
jrmu
diff:1613115665:1613115644:=261d260%0a%3c 15:39 -ircnow(ircnow@f6e1cdd3)- Done.%0a
131
2023-01-22
jrmu
host:1613115665=198.251.81.119
132
2023-01-22
jrmu
author:1613115644=jrmu
133
2023-01-22
jrmu
diff:1613115644:1613115401:=251,260c251%0a%3c /msg %3cbotnick> login username password%0a%3c /msg %3cbotnick> create #channel%0a%3c /msg %3cbotnick> remote %3cother> link %3cyour> #channel%0a%3c 15:39 -ircnow(ircnow@f6e1cdd3)- Joining '#ircnow-test' now to check for op status; please run this command again after I join.%0a%3c @]%0a%3c %0a%3c Now op the bot, then run the command again:%0a%3c %0a%3c [@%0a%3c /msg %3cbotnick> remote %3cother> link %3cyour> #channel%0a---%0a> /msg login username password%0a
134
2023-01-22
jrmu
host:1613115644=198.251.81.119
135
2023-01-22
jrmu
author:1613115401=jrmu
136
2023-01-22
jrmu
diff:1613115401:1613115290:=175,176d174%0a%3c - relay%0a%3c - relay_clientbot%0a
137
2023-01-22
jrmu
host:1613115401=198.251.81.119
138
2023-01-22
jrmu
author:1613115290=jrmu
139
2023-01-22
jrmu
diff:1613115290:1613115247:=244,249d243%0a%3c @]%0a%3c %0a%3c !! Logging in%0a%3c %0a%3c [@%0a%3c /msg login username password%0a
140
2023-01-22
jrmu
host:1613115290=198.251.81.119
141
2023-01-22
jrmu
author:1613115247=jrmu
142
2023-01-22
jrmu
diff:1613115247:1613114786:=252,262c252%0a%3c @]%0a%3c %0a%3c If the bot ever gets stuck and you can't kill it:%0a%3c %0a%3c [@%0a%3c $ ps ax | grep pylink%0a%3c 22986 p7 S+ 0:03.08 python3.8 PyLink/pylink PyLink/pylink.yml%0a%3c $ doas kill -KILL 22986%0a%3c @]%0a%3c %0a%3c Replace 22986 with whatever process ID python has.%0a\ No newline at end of file%0a---%0a> @]%0a\ No newline at end of file%0a
143
2023-01-22
jrmu
host:1613115247=198.251.81.119
144
2023-01-22
jrmu
author:1613114786=jrmu
145
2023-01-22
jrmu
diff:1613114786:1613114688:=51c51%0a%3c mkdir -p /home/pylink/etc/ssl/%0a---%0a> mkdir -p /home/pylink/etc/%0a77d76%0a%3c cp /etc/ssl/cert.pem /home/pylink/etc/ssl/%0a
146
2023-01-22
jrmu
host:1613114786=198.251.81.119
147
2023-01-22
jrmu
author:1613114688=jrmu
148
2023-01-22
jrmu
diff:1613114688:1613114528:=242c242,244%0a%3c # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink PyLink/pylink.yml%0a---%0a> # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink %0a> ERROR: Failed to load config from 'pylink.yml': FileNotFoundError: [Errno 2] No such file or directory: 'pylink.yml'%0a> # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink pylink.yml%0a
149
2023-01-22
jrmu
host:1613114688=198.251.81.119
150
2023-01-22
jrmu
author:1613114528=jrmu
151
2023-01-22
jrmu
diff:1613114528:1613114380:=238a239,241%0a> $ doas chroot -u pylink -g pylink /home/pylink python3%0a> %0a> %0a240,244c243,245%0a%3c $ doas su%0a%3c # export HOME=/%0a%3c # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink %0a%3c ERROR: Failed to load config from 'pylink.yml': FileNotFoundError: [Errno 2] No such file or directory: 'pylink.yml'%0a%3c # chroot -u pylink -g pylink /home/pylink python3.8 PyLink/pylink pylink.yml%0a---%0a> $ ftp https://github.com/jlu5/PyLink/archive/master.zip%0a> $ unzip master.zip%0a> $ cd PyLink-master/%0a
152
2023-01-22
jrmu
host:1613114528=198.251.81.119
153
2023-01-22
jrmu
author:1613114380=jrmu
154
2023-01-22
jrmu
diff:1613114380:1613113403:=147,165c147,150%0a%3c For the short network name (here named @@your@@), pick something 3-5 letters that represents your network. Keep it short. ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname is depends upon your team's domain. You can leave sid and sidrange unchanged.%0a%3c %0a%3c For each server you want to connect, add a new block like below:%0a%3c %0a%3c [@%0a%3c oftc:%0a%3c ip: irc.oftc.net%0a%3c port: 6697%0a%3c netname: "OFTC"%0a%3c protocol: "clientbot"%0a%3c pylink_nick: ircnow%0a%3c pylink_ident: ircnow%0a%3c pylink_altnicks: ["ircnow`", "ircnow-"]%0a%3c ssl: true%0a%3c autoconnect: 30%0a%3c throttle_time: 1.0%0a%3c @]%0a%3c %0a%3c This block is for OFTC.%0a---%0a> ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname is depends upon your team's domain. You can leave sid and sidrange unchanged.%0a> %0a> The rest of the settings below have been left untouched:%0a> %0a
155
2023-01-22
jrmu
host:1613114380=198.251.81.119
156
2023-01-22
jrmu
author:1613113403=jrmu
157
2023-01-22
jrmu
diff:1613113403:1613111739:=38,39c38,39%0a%3c Then we run this script as root:%0a%3c %0a---%0a> Then we run this script:%0a> %0a88,89c88%0a%3c Afterwards, we run the following as the user pylink:%0a%3c %0a---%0a> %0a92a92%0a> $ vi pylink.yml%0a95,96d94%0a%3c We then edit pylink.yml:%0a%3c %0a104,117d101%0a%3c @]%0a%3c %0a%3c You will want to run this as the user pylink to generate a password hash:%0a%3c %0a%3c [@%0a%3c /home/pylink/PyLink/pylink-mkpasswd%0a%3c Password: %0a%3c $pbkdf2-sha256$29000$AeBcKwWA0HqvNUYIgbBWqg$9EPkgnfsLsZHJk9YJy16MKqTEKCvZohdT1MyAbXQTjQ%0a%3c @]%0a%3c %0a%3c The login section below lets us pick a username and password for administering the bot. Use the password hash you generated above:%0a%3c %0a%3c [@%0a%3c login:%0a119c103%0a%3c username:%0a---%0a> adminnick:%0a123c107%0a%3c "username":%0a---%0a> "ABC123":%0a125,129d108%0a%3c @]%0a%3c %0a%3c Now we specify the server running on our VPS:%0a%3c %0a%3c [@%0a131c110%0a%3c your:%0a---%0a> irc:%0a145,201d123%0a%3c @]%0a%3c %0a%3c ip should remain 127.0.0.1 in order to connect to localhost. We want to use port 16667 (ports 16667 and 16697 are reserved for server to server links). Note that we do not need to use SSL because we are connecting to localhost. recvpass and sendpass are the server passwords we must specify in /etc/ngircd/ngircd.conf in the [Server] block. The netname is IRCNow, the hostname is depends upon your team's domain. You can leave sid and sidrange unchanged.%0a%3c %0a%3c The rest of the settings below have been left untouched:%0a%3c %0a%3c [@%0a%3c plugins:%0a%3c - commands%0a%3c - networks%0a%3c - ctcp%0a%3c - servprotect%0a%3c logging:%0a%3c console: INFO%0a%3c channels:%0a%3c inspnet:%0a%3c loglevel: INFO%0a%3c loglevel: WARNING%0a%3c ts6net:%0a%3c loglevel: INFO%0a%3c files:%0a%3c "errors":%0a%3c loglevel: ERROR%0a%3c "commands":%0a%3c loglevel: INFO%0a%3c changehost:%0a%3c enabled_nets:%0a%3c - inspnet%0a%3c - ts6net%0a%3c enforce_exceptions:%0a%3c - "*!*@yournet/staff/*"%0a%3c hosts:%0a%3c "*!yourname@*.yournet.com": "$nick.opers.yournet.com"%0a%3c "*!*@localhost": "some-server.hostname"%0a%3c "*!*@bnc-server.yournet.com": "yournet/bnc-users/$ident"%0a%3c "*!*@ircip?.mibbit.com": "$ident.$realhost"%0a%3c "WebchatUser*!*@*": "webchat/users/$ident"%0a%3c relay:%0a%3c allow_free_oper_links: true%0a%3c tag_nicks: true%0a%3c forcetag_nicks:%0a%3c - "*Serv"%0a%3c separator: "/"%0a%3c allow_clientbot_pms: false%0a%3c hideoper: true%0a%3c show_netsplits: false%0a%3c whois_show_accounts: all%0a%3c whois_show_server: opers%0a%3c automode:%0a%3c nick: Automode%0a%3c joinmodes: 'o'%0a%3c prefix: "@"%0a%3c games:%0a%3c nick: Games%0a%3c prefix: "./"%0a%3c stats:%0a%3c time_format: "%25c"%0a
158
2023-01-22
jrmu
host:1613113403=198.251.81.119
159
2023-01-22
jrmu
author:1613111739=jrmu
160
2023-01-22
jrmu
diff:1613111739:1613111680:=
161
2023-01-22
jrmu
host:1613111739=198.251.81.119
162
2023-01-22
jrmu
author:1613111680=jrmu
163
2023-01-22
jrmu
diff:1613111680:1613110895:=
164
2023-01-22
jrmu
host:1613111680=198.251.81.119
165
2023-01-22
jrmu
author:1613110895=jrmu
166
2023-01-22
jrmu
diff:1613110895:1613110839:=122c122%0a%3c ssl: false%0a---%0a> ssl: true%0a123a124%0a> %0a
167
2023-01-22
jrmu
host:1613110895=198.251.81.119
168
2023-01-22
jrmu
author:1613110839=jrmu
169
2023-01-22
jrmu
diff:1613110839:1613110762:=151,158d150%0a%3c @]%0a%3c %0a%3c !! Troubleshooting%0a%3c %0a%3c [@%0a%3c $ python3 pylink%0a%3c 2021-02-12 00:19:39,495 [ERROR] PID file 'pylink.pid' exists; aborting!%0a%3c $ rm pylink.pid%0a
170
2023-01-22
jrmu
host:1613110839=198.251.81.119
171
2023-01-22
jrmu
author:1613110762=jrmu
172
2023-01-22
jrmu
diff:1613110762:1613110444:=112c112%0a%3c port: 16667%0a---%0a> port: 6667%0a115d114%0a%3c bindhost: 10.0.0.1%0a127,142c126%0a%3c You'll need to add this to /etc/ngircd/ngircd.conf:%0a%3c %0a%3c [@%0a%3c [Server]%0a%3c Name = relay.ircnow.org%0a%3c Host = 127.0.0.1%0a%3c Bind = 38.81.163.143%0a%3c Port = 16667%0a%3c MyPassword = fyLnwwxSvxc2gpn3AM994FMitD%0a%3c PeerPassword = fyLnwwxSvxc2gpn3AM994FMitD%0a%3c ;Group = 123%0a%3c Passive = no%0a%3c SSLConnect = no %0a%3c @]%0a%3c %0a%3c $ doas rcctl reload ngircd%0a---%0a> %0a
173
2023-01-22
jrmu
host:1613110762=198.251.81.119
174
2023-01-22
jrmu
author:1613110444=jrmu
175
2023-01-22
jrmu
diff:1613110444:1613110410:=99,100c99,100%0a%3c realname: Relay%0a%3c serverdesc: Relay%0a---%0a> realname: Town Crier%0a> serverdesc: Town Crier%0a116c116%0a%3c hostname: "relay.ircnow.org"%0a---%0a> hostname: "relay.irc.ircnow.org"%0a
176
2023-01-22
jrmu
host:1613110444=198.251.81.119
177
2023-01-22
jrmu
author:1613110410=jrmu
178
2023-01-22
jrmu
diff:1613110410:1613109322:=113,114c113,114%0a%3c recvpass: "abcdefghijklmnopqrstuvwxyz"%0a%3c sendpass: "abcdefghijklmnopqrstuvwxyz"%0a---%0a> #recvpass: "abcd"%0a> #sendpass: "abcd"%0a116,122c116%0a%3c hostname: "relay.irc.ircnow.org"%0a%3c sid: "0PY"%0a%3c sidrange: "8##"%0a%3c protocol: "ngircd"%0a%3c maxnicklen: 16%0a%3c ssl: true%0a%3c autoconnect: 10%0a---%0a> hostname: "towncrier.irc.ircnow.org"%0a
179
2023-01-22
jrmu
host:1613110410=198.251.81.119
180
2023-01-22
jrmu
author:1613109322=jrmu
181
2023-01-22
jrmu
diff:1613109322:1613108845:=110,116d109%0a%3c irc:%0a%3c ip: 127.0.0.1%0a%3c port: 6667%0a%3c #recvpass: "abcd"%0a%3c #sendpass: "abcd"%0a%3c netname: "IRCNow"%0a%3c hostname: "towncrier.irc.ircnow.org"%0a
182
2023-01-22
jrmu
host:1613109322=198.251.81.119
183
2023-01-22
jrmu
author:1613108845=jrmu
184
2023-01-22
jrmu
diff:1613108845:1613108506:=95d94%0a%3c [@%0a97,112c96,101%0a%3c nick: BotNick%0a%3c ident: BotIdent%0a%3c realname: Town Crier%0a%3c serverdesc: Town Crier%0a%3c prefix: "&"%0a%3c accounts:%0a%3c adminnick:%0a%3c password: "$6$rounds=81447$WlVlZYCgbnjPmVqy$28Tu/Zl0xNpePqimax2wABKn5GCoWomYEI1Pu5jqYyQNULazR4BxQmscZ0MgBHqBCCke.3u5eOtBSZwL3WwVf0"%0a%3c encrypted: true%0a%3c permissions:%0a%3c "ABC123":%0a%3c - "*"%0a%3c servers:%0a%3c %0a%3c @]%0a%3c %0a---%0a> nick: PyLink%0a> ident: pylink%0a> realname: PyLink Service Client%0a> %0a> # Server description (shown in /links, /whois, etc.)%0a> serverdesc: IRCNow Town Crier%0a
185
2023-01-22
jrmu
host:1613108845=198.251.81.119
186
2023-01-22
jrmu
author:1613108506=jrmu
187
2023-01-22
jrmu
diff:1613108506:1613108400:=87,102d86%0a%3c %0a%3c %0a%3c [@%0a%3c $ cd ~/PyLink%0a%3c $ cp example-conf.yml pylink.yml%0a%3c $ vi pylink.yml%0a%3c @]%0a%3c %0a%3c pylink:%0a%3c nick: PyLink%0a%3c ident: pylink%0a%3c realname: PyLink Service Client%0a%3c %0a%3c # Server description (shown in /links, /whois, etc.)%0a%3c serverdesc: IRCNow Town Crier%0a%3c %0a
188
2023-01-22
jrmu
host:1613108506=198.251.81.119
189
2023-01-22
jrmu
author:1613108400=jrmu
190
2023-01-22
jrmu
diff:1613108400:1613062204:=28,35d27%0a%3c $ git clone https://github.com/jlu5/PyLink && cd PyLink%0a%3c $ pip3 install setuptools --user%0a%3c $ pip3 install pyyaml --user%0a%3c $ pip3 install cachetools --user%0a%3c $ pip3 install passlib --user%0a%3c $ pip3 install Unidecode --user%0a%3c $ pip3 install psutil --user%0a%3c $ python3 setup.py install --user%0a
191
2023-01-22
jrmu
host:1613108400=198.251.81.119
192
2023-01-22
jrmu
author:1613062204=jrmu
193
2023-01-22
jrmu
diff:1613062204:1613061966:=
194
2023-01-22
jrmu
host:1613062204=198.251.81.119
195
2023-01-22
jrmu
author:1613061966=jrmu
196
2023-01-22
jrmu
diff:1613061966:1613061361:=24c24%0a%3c $ doas pkg_add python-3.8.6p0 py3-pip-20.1.1p0 git%0a---%0a> $ doas pkg_add python-3.8.6p0 py3-pip-20.1.1p0%0a
197
2023-01-22
jrmu
host:1613061966=198.251.81.119
198
2023-01-22
jrmu
author:1613061361=jrmu
199
2023-01-22
jrmu
diff:1613061361:1613061156:=72,77d71%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install setuptools --user%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install pyyaml --user%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install cachetools --user%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install passlib --user%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install unidecode --user%0a%3c chroot -u pylink -g pylink /home/pylink pip3.8 install psutil --user%0a79c73,74%0a%3c %0a---%0a> $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install setuptools --user%0a> $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install pyyaml --user%0a80a76,82%0a> %0a> Setuptools (pip3 install setuptools)%0a> PyYAML (pip3 install pyyaml)%0a> cachetools (pip3 install cachetools)%0a> For hashed password support: Passlib >= 1.7.0 (pip3 install passlib)%0a> For Unicode support in Relay: unidecode (pip3 install Unidecode)%0a> For extended PID file tracking (i.e. removing stale PID files after a crash): psutil (pip3 install psutil)%0a
200
2023-01-22
jrmu
host:1613061361=198.251.81.119
201
2023-01-22
jrmu
author:1613061156=jrmu
202
2023-01-22
jrmu
diff:1613061156:1613060957:=71d70%0a%3c cp -R /usr/local/lib/ /home/pylink/usr/local/%0a
203
2023-01-22
jrmu
host:1613061156=198.251.81.119
204
2023-01-22
jrmu
author:1613060957=jrmu
205
2023-01-22
jrmu
diff:1613060957:1613060854:=43d42%0a%3c mkdir -p /home/pylink/etc/%0a68d66%0a%3c cp /etc/resolv.conf /home/pylink/etc/%0a
206
2023-01-22
jrmu
host:1613060957=198.251.81.119
207
2023-01-22
jrmu
author:1613060854=jrmu
208
2023-01-22
jrmu
diff:1613060854:1613060824:=71d70%0a%3c $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install pyyaml --user%0a
209
2023-01-22
jrmu
host:1613060854=198.251.81.119
210
2023-01-22
jrmu
author:1613060824=jrmu
211
2023-01-22
jrmu
diff:1613060824:1613060680:=70c70%0a%3c $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install setuptools --user%0a---%0a> %0a
212
2023-01-22
jrmu
host:1613060824=198.251.81.119
213
2023-01-22
jrmu
author:1613060680=jrmu
214
2023-01-22
jrmu
diff:1613060680:1613060086:=
215
2023-01-22
jrmu
host:1613060680=198.251.81.119
216
2023-01-22
jrmu
author:1613060086=jrmu
217
2023-01-22
jrmu
diff:1613060086:1613060023:=68c68%0a%3c cp -R /usr/lib/ /home/pylink/usr/%0a---%0a> cp /usr/lib/ /home/pylink/usr/lib/%0a
218
2023-01-22
jrmu
host:1613060086=198.251.81.119
219
2023-01-22
jrmu
author:1613060023=jrmu
220
2023-01-22
jrmu
diff:1613060023:1613059735:=
221
2023-01-22
jrmu
host:1613060023=198.251.81.119
222
2023-01-22
jrmu
author:1613059735=jrmu
223
2023-01-22
jrmu
diff:1613059735:1613059666:=68d67%0a%3c cp /usr/lib/ /home/pylink/usr/lib/%0a
224
2023-01-22
jrmu
host:1613059735=198.251.81.119
225
2023-01-22
jrmu
author:1613059666=jrmu
226
2023-01-22
jrmu
diff:1613059666:1613055813:=67d66%0a%3c cp /usr/local/bin/pip3.8 /home/pylink/usr/local/bin/%0a
227
2023-01-22
jrmu
host:1613059666=198.251.81.119
228
2023-01-22
jrmu
author:1613055813=jrmu
229
2023-01-22
jrmu
diff:1613055813:1613055781:=
230
2023-01-22
jrmu
host:1613055813=198.251.81.119
231
2023-01-22
jrmu
author:1613055781=jrmu
232
2023-01-22
jrmu
diff:1613055781:1613055390:=64c64%0a%3c cp -R /usr/local/share/doc/python3.8 /home/pylink/usr/local/share/doc/%0a---%0a> cp /usr/local/share/doc/python3.8 /home/pylink/usr/local/share/doc/%0a
233
2023-01-22
jrmu
host:1613055781=198.251.81.119
234
2023-01-22
jrmu
author:1613055390=jrmu
235
2023-01-22
jrmu
diff:1613055390:1613055126:=42d41%0a%3c mkdir -p /home/pylink/usr/local/share/aclocal-1.11/am/%0a
236
2023-01-22
jrmu
host:1613055390=198.251.81.119
237
2023-01-22
jrmu
author:1613055126=jrmu
238
2023-01-22
jrmu
diff:1613055126:1613055108:=
239
2023-01-22
jrmu
host:1613055126=198.251.81.119
240
2023-01-22
jrmu
author:1613055108=jrmu
241
2023-01-22
jrmu
diff:1613055108:1613055082:=36c36%0a%3c mkdir -p /home/pylink/usr/local/lib/pkgconfig/%0a---%0a> mkdir -p /home/pylink/usr/local/lib/pkconfig/%0a
242
2023-01-22
jrmu
host:1613055108=198.251.81.119
243
2023-01-22
jrmu
author:1613055082=jrmu
244
2023-01-22
jrmu
diff:1613055082:1613055041:=56c56%0a%3c cp /usr/local/lib/pkgconfig/python-3.8.pc /home/pylink/usr/local/lib/pkgconfig/%0a---%0a> cp /usr/local/lib/pkgconfig/python-3.8.pc /home/pylink/usr/local/lib/pkconfig/%0a58,59c58,59%0a%3c cp /usr/local/lib/pkgconfig/python-3.8-embed.pc /home/pylink/usr/local/lib/pkgconfig/%0a%3c cp /usr/local/lib/pkgconfig/python3-embed.pc /home/pylink/usr/local/lib/pkgconfig/%0a---%0a> cp /usr/local/lib/pkgconfig/python-3.8-embed.pc /home/pylink/usr/local/lib/pkconfig/%0a> cp /usr/local/lib/pkgconfig/python3-embed.pc /home/pylink/usr/local/lib/pkconfig/%0a
245
2023-01-22
jrmu
host:1613055082=198.251.81.119
246
2023-01-22
jrmu
author:1613055041=jrmu
247
2023-01-22
jrmu
diff:1613055041:1613054968:=64,65c64,66%0a%3c cp /usr/local/share/aclocal-1.11/python.m4 /home/pylink/usr/local/share/aclocal-1.11/%0a%3c cp /usr/local/share/automake-1.11/am/python.am /home/pylink/usr/local/share/aclocal-1.11/am/%0a---%0a> cp /usr/local/share/aclocal-1.11/python.m4%0a> cp /usr/local/share/automake-1.11/am/python.am%0a> %0a
248
2023-01-22
jrmu
host:1613055041=198.251.81.119
249
2023-01-22
jrmu
author:1613054968=jrmu
250
2023-01-22
jrmu
diff:1613054968:1613053470:=37d36%0a%3c mkdir -p /home/pylink/usr/local/share/doc/%0a62,63c61,62%0a%3c cp /usr/local/man/man1/python3.8.1 /home/pylink/usr/local/man/man1/%0a%3c cp /usr/local/share/doc/python3.8 /home/pylink/usr/local/share/doc/%0a---%0a> cp /usr/local/man/man1/python3.8.1%0a> cp /usr/local/share/doc/python3.8%0a
251
2023-01-22
jrmu
host:1613054968=198.251.81.119
252
2023-01-22
jrmu
author:1613053470=jrmu
253
2023-01-22
jrmu
diff:1613053470:1613052991:=35,36d34%0a%3c mkdir -p /home/pylink/usr/local/include/%0a%3c mkdir -p /home/pylink/usr/local/lib/pkconfig/%0a40d37%0a%3c mkdir -p /home/pylink/usr/local/man/man1/%0a60,64c57,62%0a%3c cp /usr/local/man/man1/python3.1 /home/pylink/usr/local/man/man1/%0a%3c cp /usr/local/man/man1/python3.8.1%0a%3c cp /usr/local/share/doc/python3.8%0a%3c cp /usr/local/share/aclocal-1.11/python.m4%0a%3c cp /usr/local/share/automake-1.11/am/python.am%0a---%0a> /usr/local/man/man1/python3.1%0a> /usr/local/man/man1/python3.8.1%0a> /usr/local/share/doc/python3.8%0a> /usr/local/share/aclocal-1.11/python.m4%0a> /usr/local/share/automake-1.11/am/python.am%0a> /var/db/pkg/python-3.8.6p0%0a
254
2023-01-22
jrmu
host:1613053470=198.251.81.119
255
2023-01-22
jrmu
author:1613052991=jrmu
256
2023-01-22
jrmu
diff:1613052991:1613052762:=39,41d38%0a%3c cp /usr/local/bin/python3.8-config /home/pylink/usr/local/bin/%0a%3c cp /usr/local/bin/python3-config /home/pylink/usr/local/bin/%0a%3c cp /usr/local/bin/python3.8 /home/pylink/usr/local/bin/%0a51,63d47%0a%3c cp -R /usr/local/include/python3.8 /home/pylink/usr/local/include/%0a%3c cp /usr/local/lib/pkgconfig/python-3.8.pc /home/pylink/usr/local/lib/pkconfig/%0a%3c cp /usr/local/lib/pkgconfig/python3.pc /home/pylink/usr/local/lib/pkgconfig/%0a%3c cp /usr/local/lib/pkgconfig/python-3.8-embed.pc /home/pylink/usr/local/lib/pkconfig/%0a%3c cp /usr/local/lib/pkgconfig/python3-embed.pc /home/pylink/usr/local/lib/pkconfig/%0a%3c cp -R /usr/local/lib/python3.8 /home/pylink/usr/local/lib/%0a%3c /usr/local/man/man1/python3.1%0a%3c /usr/local/man/man1/python3.8.1%0a%3c /usr/local/share/doc/python3.8%0a%3c /usr/local/share/aclocal-1.11/python.m4%0a%3c /usr/local/share/automake-1.11/am/python.am%0a%3c /var/db/pkg/python-3.8.6p0%0a%3c %0a
257
2023-01-22
jrmu
host:1613052991=198.251.81.119
258
2023-01-22
jrmu
author:1613052762=jrmu
259
2023-01-22
jrmu
diff:1613052762:1613052701:=23d22%0a%3c [@%0a28,29c27%0a%3c @]%0a%3c %0a---%0a> %0a32d29%0a%3c [@%0a48d44%0a%3c @]%0a
260
2023-01-22
jrmu
host:1613052762=198.251.81.119
261
2023-01-22
jrmu
author:1613052701=jrmu
262
2023-01-22
jrmu
diff:1613052701:1613052624:=34d33%0a%3c mkdir -p /home/pylink/var/run/%0a44d42%0a%3c cp /var/run/ld.so.hints /home/pylink/var/run/%0a
263
2023-01-22
jrmu
host:1613052701=198.251.81.119
264
2023-01-22
jrmu
author:1613052624=jrmu
265
2023-01-22
jrmu
diff:1613052624:1613052599:=
266
2023-01-22
jrmu
host:1613052624=198.251.81.119
267
2023-01-22
jrmu
author:1613052599=jrmu
268
2023-01-22
jrmu
diff:1613052599:1613052518:=
269
2023-01-22
jrmu
host:1613052599=198.251.81.119
270
2023-01-22
jrmu
author:1613052518=jrmu
271
2023-01-22
jrmu
diff:1613052518:1613052399:=
272
2023-01-22
jrmu
host:1613052518=198.251.81.119
273
2023-01-22
jrmu
author:1613052399=jrmu
274
2023-01-22
jrmu
diff:1613052399:1613052242:=42a43%0a> %0a
275
2023-01-22
jrmu
host:1613052399=198.251.81.119
276
2023-01-22
jrmu
author:1613052242=jrmu
277
2023-01-22
jrmu
diff:1613052242:1613052152:=44,45d43%0a%3c %0a%3c $ doas chroot -u pylink -g pylink /home/pylink python3%0a
278
2023-01-22
jrmu
host:1613052242=198.251.81.119
279
2023-01-22
jrmu
author:1613052152=jrmu
280
2023-01-22
jrmu
diff:1613052152:1613051246:=24,44c24%0a%3c $ doas useradd -m -g =uid -c pylink -d /home/pylink -s /bin/ksh pylink%0a%3c $ doas su pylink%0a%3c $ cd%0a%3c %0a%3c Then we run this script:%0a%3c %0a%3c mkdir -p /home/pylink/usr/local/bin%0a%3c mkdir -p /home/pylink/usr/local/lib%0a%3c mkdir -p /home/pylink/usr/lib%0a%3c mkdir -p /home/pylink/usr/libexec%0a%3c cp /usr/local/bin/python3 /home/pylink/usr/local/bin/%0a%3c cp /usr/local/lib/libpython3.8.so.0.0 /home/pylink/usr/local/lib/%0a%3c cp /usr/local/lib/libintl.so.7.0 /home/pylink/usr/local/lib/%0a%3c cp /usr/lib/libpthread.so.26.1 /home/pylink/usr/lib/%0a%3c cp /usr/lib/libutil.so.15.0 /home/pylink/usr/lib/%0a%3c cp /usr/lib/libm.so.10.1 /home/pylink/usr/lib/%0a%3c cp /usr/lib/libc.so.96.0 /home/pylink/usr/lib/%0a%3c cp /usr/local/lib/libiconv.so.7.0 /home/pylink/usr/local/lib/%0a%3c cp /usr/libexec/ld.so /home/pylink/usr/libexec/%0a%3c %0a%3c %0a---%0a> $ doas%0a
281
2023-01-22
jrmu
host:1613052152=198.251.81.119
282
2023-01-22
jrmu
author:1613051246=jrmu
283
2023-01-22
jrmu
diff:1613051246:1613051095:=24c24%0a%3c $ doas%0a---%0a> %0a
284
2023-01-22
jrmu
host:1613051246=198.251.81.119
285
2023-01-22
jrmu
author:1613051095=jrmu
286
2023-01-22
jrmu
diff:1613051095:1613050876:=22,23c22%0a%3c %0a%3c $ doas pkg_add python-3.8.6p0 py3-pip-20.1.1p0%0a---%0a> First, make sure the following dependencies are met:%0a
287
2023-01-22
jrmu
host:1613051095=198.251.81.119
288
2023-01-22
jrmu
author:1613050876=jrmu
289
2023-01-22
jrmu
diff:1613050876:1612788769:=2,30d1%0a%3c %0a%3c PyLink is a relay that can help connect channels across multiple networks together.%0a%3c %0a%3c Advantages:%0a%3c %0a%3c # Can link up channels on multiple networks quickly%0a%3c # Shows all users on the home server%0a%3c %0a%3c Disadvantages:%0a%3c %0a%3c # Bloated and insecure%0a%3c # Buggy and unstable, crashes frequently%0a%3c # Requires channel owner to op the bot to link%0a%3c # Bad spam defenses%0a%3c %0a%3c PyLink should eventually be replaced with a more reliable relay written in pure C.%0a%3c %0a%3c !! Installation%0a%3c %0a%3c First we install all python related dependencies:%0a%3c First, make sure the following dependencies are met:%0a%3c %0a%3c Setuptools (pip3 install setuptools)%0a%3c PyYAML (pip3 install pyyaml)%0a%3c cachetools (pip3 install cachetools)%0a%3c For hashed password support: Passlib >= 1.7.0 (pip3 install passlib)%0a%3c For Unicode support in Relay: unidecode (pip3 install Unidecode)%0a%3c For extended PID file tracking (i.e. removing stale PID files after a crash): psutil (pip3 install psutil)%0a%3c %0a
290
2023-01-22
jrmu
host:1613050876=198.251.81.119
291
2023-01-22
jrmu
author:1612788769=jrmu
292
2023-01-22
jrmu
diff:1612788769:1612781017:=
293
2023-01-22
jrmu
host:1612788769=198.251.81.119
294
2023-01-22
jrmu
author:1612781017=jrmu
295
2023-01-22
jrmu
diff:1612781017:1612781017:=1,7d0%0a%3c (:title Pylink Install Guide:)%0a%3c %0a%3c [@%0a%3c $ ftp https://github.com/jlu5/PyLink/archive/master.zip%0a%3c $ unzip master.zip%0a%3c $ cd PyLink-master/%0a%3c @]%0a\ No newline at end of file%0a
296
2023-01-22
jrmu
host:1612781017=198.251.81.119
IRCNow