Blob


1 version=pmwiki-2.2.130 ordered=1 urlencoded=1
2 agent=w3m/0.5.3+git20210102
3 author=jrmu
4 charset=UTF-8
5 csum=
6 ctime=1612781017
7 host=38.87.162.8
8 name=Pylink.Install
9 rev=94
10 targets=Oidentd.Install
11 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
12 time=1638453762
13 title=Pylink Install Guide
14 author:1638453762=jrmu
15 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
16 host:1638453762=38.87.162.8
17 author:1638453705=jrmu
18 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
19 host:1638453705=38.87.162.8
20 author:1614990676=jrmu
21 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
22 host:1614990676=198.251.81.119
23 author:1614529499=jrmu
24 diff:1614529499:1614524235:=329,330d328%0a%3c %0a%3c Replace 38.81.163.143 with your IP address.%0a
25 host:1614529499=198.251.81.119
26 author:1614524235=jrmu
27 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
28 host:1614524235=198.251.81.119
29 author:1613811946=jrmu
30 diff:1613811946:1613805713:=91c91%0a%3c (:ifend:)%0a---%0a> (:endif:)%0a
31 host:1613811946=198.251.81.119
32 author:1613805713=jrmu
33 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
34 host:1613805713=198.251.81.119
35 author:1613724103=jrmu
36 diff:1613724103:1613484632:=130c130%0a%3c "username":%0a---%0a> "username"%0a
37 host:1613724103=198.251.81.119
38 author:1613484632=jrmu
39 diff:1613484632:1613398342:=106d105%0a%3c spawn_services: false%0a
40 host:1613484632=198.251.81.119
41 author:1613398342=fizi
42 diff:1613398342:1613397662:=35d34%0a%3c $ cd PyLink%0a
43 host:1613398342=39.42.103.95
44 author:1613397662=jrmu
45 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
46 host:1613397662=198.251.81.119
47 author:1613388265=miniontoby
48 csum:1613388265=added simple command
49 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
50 host:1613388265=145.132.146.30
51 author:1613292131=jrmu
52 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
53 host:1613292131=198.251.81.119
54 author:1613291742=jrmu
55 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
56 host:1613291742=198.251.81.119
57 author:1613290855=jrmu
58 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
59 host:1613290855=198.251.81.119
60 author:1613290484=jrmu
61 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
62 host:1613290484=198.251.81.119
63 author:1613282999=jrmu
64 diff:1613282999:1613282921:=
65 host:1613282999=198.251.81.119
66 author:1613282921=jrmu
67 diff:1613282921:1613282428:=286a287%0a> - "*damn*"%0a294a296,297%0a> - "* lmao*"%0a> - "* lmfao*"%0a
68 host:1613282921=198.251.81.119
69 author:1613282428=jrmu
70 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
71 host:1613282428=198.251.81.119
72 author:1613281981=jrmu
73 diff:1613281981:1613281850:=241c241%0a%3c I delete the games, global plugin:%0a---%0a> I delete the games plugin:%0a
74 host:1613281981=198.251.81.119
75 author:1613281850=jrmu
76 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
77 host:1613281850=198.251.81.119
78 author:1613281521=jrmu
79 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
80 host:1613281521=198.251.81.119
81 author:1613145225=jrmu
82 diff:1613145225:1613144903:=237d236%0a%3c accept_weird_senders: false%0a
83 host:1613145225=198.251.81.119
84 author:1613144903=jrmu
85 diff:1613144903:1613144582:=
86 host:1613144903=198.251.81.119
87 author:1613144582=jrmu
88 diff:1613144582:1613144020:=234c234%0a%3c allow_clientbot_pms: true%0a---%0a> allow_clientbot_pms: false%0a
89 host:1613144582=198.251.81.119
90 author:1613144020=jrmu
91 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
92 host:1613144020=198.251.81.119
93 author:1613143860=jrmu
94 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
95 host:1613143860=198.251.81.119
96 author:1613143420=jrmu
97 diff:1613143420:1613142955:=185d184%0a%3c - raw%0a
98 host:1613143420=198.251.81.119
99 author:1613142955=jrmu
100 diff:1613142955:1613141743:=184d183%0a%3c - antispam%0a
101 host:1613142955=198.251.81.119
102 author:1613141743=jrmu
103 diff:1613141743:1613141430:=
104 host:1613141743=198.251.81.119
105 author:1613141430=jrmu
106 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 host:1613141430=198.251.81.119
108 author:1613141385=jrmu
109 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 host:1613141385=198.251.81.119
111 author:1613141269=jrmu
112 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 host:1613141269=198.251.81.119
114 author:1613133528=jrmu
115 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 host:1613133528=198.251.81.119
117 author:1613117335=jrmu
118 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 host:1613117335=198.251.81.119
120 author:1613117121=jrmu
121 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 host:1613117121=198.251.81.119
123 author:1613116306=jrmu
124 diff:1613116306:1613116255:=
125 host:1613116306=198.251.81.119
126 author:1613116255=jrmu
127 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 host:1613116255=198.251.81.119
129 author:1613115665=jrmu
130 diff:1613115665:1613115644:=261d260%0a%3c 15:39 -ircnow(ircnow@f6e1cdd3)- Done.%0a
131 host:1613115665=198.251.81.119
132 author:1613115644=jrmu
133 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 host:1613115644=198.251.81.119
135 author:1613115401=jrmu
136 diff:1613115401:1613115290:=175,176d174%0a%3c - relay%0a%3c - relay_clientbot%0a
137 host:1613115401=198.251.81.119
138 author:1613115290=jrmu
139 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 host:1613115290=198.251.81.119
141 author:1613115247=jrmu
142 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 host:1613115247=198.251.81.119
144 author:1613114786=jrmu
145 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 host:1613114786=198.251.81.119
147 author:1613114688=jrmu
148 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 host:1613114688=198.251.81.119
150 author:1613114528=jrmu
151 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 host:1613114528=198.251.81.119
153 author:1613114380=jrmu
154 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 host:1613114380=198.251.81.119
156 author:1613113403=jrmu
157 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 host:1613113403=198.251.81.119
159 author:1613111739=jrmu
160 diff:1613111739:1613111680:=
161 host:1613111739=198.251.81.119
162 author:1613111680=jrmu
163 diff:1613111680:1613110895:=
164 host:1613111680=198.251.81.119
165 author:1613110895=jrmu
166 diff:1613110895:1613110839:=122c122%0a%3c ssl: false%0a---%0a> ssl: true%0a123a124%0a> %0a
167 host:1613110895=198.251.81.119
168 author:1613110839=jrmu
169 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 host:1613110839=198.251.81.119
171 author:1613110762=jrmu
172 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 host:1613110762=198.251.81.119
174 author:1613110444=jrmu
175 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 host:1613110444=198.251.81.119
177 author:1613110410=jrmu
178 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 host:1613110410=198.251.81.119
180 author:1613109322=jrmu
181 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 host:1613109322=198.251.81.119
183 author:1613108845=jrmu
184 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 host:1613108845=198.251.81.119
186 author:1613108506=jrmu
187 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 host:1613108506=198.251.81.119
189 author:1613108400=jrmu
190 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 host:1613108400=198.251.81.119
192 author:1613062204=jrmu
193 diff:1613062204:1613061966:=
194 host:1613062204=198.251.81.119
195 author:1613061966=jrmu
196 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 host:1613061966=198.251.81.119
198 author:1613061361=jrmu
199 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 host:1613061361=198.251.81.119
201 author:1613061156=jrmu
202 diff:1613061156:1613060957:=71d70%0a%3c cp -R /usr/local/lib/ /home/pylink/usr/local/%0a
203 host:1613061156=198.251.81.119
204 author:1613060957=jrmu
205 diff:1613060957:1613060854:=43d42%0a%3c mkdir -p /home/pylink/etc/%0a68d66%0a%3c cp /etc/resolv.conf /home/pylink/etc/%0a
206 host:1613060957=198.251.81.119
207 author:1613060854=jrmu
208 diff:1613060854:1613060824:=71d70%0a%3c $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install pyyaml --user%0a
209 host:1613060854=198.251.81.119
210 author:1613060824=jrmu
211 diff:1613060824:1613060680:=70c70%0a%3c $ doas chroot -u pylink -g pylink /home/pylink pip3.8 install setuptools --user%0a---%0a> %0a
212 host:1613060824=198.251.81.119
213 author:1613060680=jrmu
214 diff:1613060680:1613060086:=
215 host:1613060680=198.251.81.119
216 author:1613060086=jrmu
217 diff:1613060086:1613060023:=68c68%0a%3c cp -R /usr/lib/ /home/pylink/usr/%0a---%0a> cp /usr/lib/ /home/pylink/usr/lib/%0a
218 host:1613060086=198.251.81.119
219 author:1613060023=jrmu
220 diff:1613060023:1613059735:=
221 host:1613060023=198.251.81.119
222 author:1613059735=jrmu
223 diff:1613059735:1613059666:=68d67%0a%3c cp /usr/lib/ /home/pylink/usr/lib/%0a
224 host:1613059735=198.251.81.119
225 author:1613059666=jrmu
226 diff:1613059666:1613055813:=67d66%0a%3c cp /usr/local/bin/pip3.8 /home/pylink/usr/local/bin/%0a
227 host:1613059666=198.251.81.119
228 author:1613055813=jrmu
229 diff:1613055813:1613055781:=
230 host:1613055813=198.251.81.119
231 author:1613055781=jrmu
232 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 host:1613055781=198.251.81.119
234 author:1613055390=jrmu
235 diff:1613055390:1613055126:=42d41%0a%3c mkdir -p /home/pylink/usr/local/share/aclocal-1.11/am/%0a
236 host:1613055390=198.251.81.119
237 author:1613055126=jrmu
238 diff:1613055126:1613055108:=
239 host:1613055126=198.251.81.119
240 author:1613055108=jrmu
241 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 host:1613055108=198.251.81.119
243 author:1613055082=jrmu
244 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 host:1613055082=198.251.81.119
246 author:1613055041=jrmu
247 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 host:1613055041=198.251.81.119
249 author:1613054968=jrmu
250 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 host:1613054968=198.251.81.119
252 author:1613053470=jrmu
253 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 host:1613053470=198.251.81.119
255 author:1613052991=jrmu
256 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 host:1613052991=198.251.81.119
258 author:1613052762=jrmu
259 diff:1613052762:1613052701:=23d22%0a%3c [@%0a28,29c27%0a%3c @]%0a%3c %0a---%0a> %0a32d29%0a%3c [@%0a48d44%0a%3c @]%0a
260 host:1613052762=198.251.81.119
261 author:1613052701=jrmu
262 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 host:1613052701=198.251.81.119
264 author:1613052624=jrmu
265 diff:1613052624:1613052599:=
266 host:1613052624=198.251.81.119
267 author:1613052599=jrmu
268 diff:1613052599:1613052518:=
269 host:1613052599=198.251.81.119
270 author:1613052518=jrmu
271 diff:1613052518:1613052399:=
272 host:1613052518=198.251.81.119
273 author:1613052399=jrmu
274 diff:1613052399:1613052242:=42a43%0a> %0a
275 host:1613052399=198.251.81.119
276 author:1613052242=jrmu
277 diff:1613052242:1613052152:=44,45d43%0a%3c %0a%3c $ doas chroot -u pylink -g pylink /home/pylink python3%0a
278 host:1613052242=198.251.81.119
279 author:1613052152=jrmu
280 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 host:1613052152=198.251.81.119
282 author:1613051246=jrmu
283 diff:1613051246:1613051095:=24c24%0a%3c $ doas%0a---%0a> %0a
284 host:1613051246=198.251.81.119
285 author:1613051095=jrmu
286 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 host:1613051095=198.251.81.119
288 author:1613050876=jrmu
289 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 host:1613050876=198.251.81.119
291 author:1612788769=jrmu
292 diff:1612788769:1612781017:=
293 host:1612788769=198.251.81.119
294 author:1612781017=jrmu
295 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 host:1612781017=198.251.81.119