From b0063db78ebc306a5afd76e1cee569feb0446e27 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Mon, 24 Feb 2020 12:01:12 -0500 Subject: [PATCH] add nickserv support --- .gitignore | 1 + README.md | 28 +++++++++++++++++++++++++--- account.ini.sample | 2 ++ sedbot.bash | 17 ++++++++++++++++- sedbot.service | 4 ++-- 5 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 account.ini.sample mode change 100755 => 100644 sedbot.bash diff --git a/.gitignore b/.gitignore index a372b6c..69d0f6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .cfg sedbot.err sedbot.log +account.ini diff --git a/README.md b/README.md index 278bf7f..e7f554c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,30 @@ -sedbot -====== +# sedbot + +forked from [clsr/sedbot](https://github.com/clsr/sedbot) - +updated for `-i`'s new argument requirement and daemonized sedbot is an IRC search-replace bot written using bash and sed. -Usage: Edit the settings on top of sedbot.bash and run it under an unprivileged user. +### usage + +1. `cp .cfg{.example,}` +1. adjust as needed +1. `bash sedbot.bash` + +### daemonization + +1. adjust sedbot.service +1. `mkdir -p ~/.config/systemd/user` +1. `cp sedbot.service ~/.config/systemd/user/` +1. `systemctl --user daemon-reload` +1. `systemctl --user enable --now sedbot` + +### authenticate to services + +1. `cp account.ini{.sample,}` +1. fill in your credentials +1. restart the bot (`systemctl --user restart sedbot`) + Only the s command and g and i flags are supported. Multiple regular expressions can be used at once, delimit them with spaces in between the flags and the s next one's s command. The last one may omit the trailing / if it has no options. @@ -24,3 +45,4 @@ Example usage in chat: gfhi Note that the bot uses the standard grep (POSIX) regular expressions, i.e. use `.\+` and `\(foo\)\?` instead of `.+` and `(foo)?` as you'd do in egrep or other regex engines. Backreferences are written like `s/\(.\)/\1`, where `\1` matches the first capturing group. [Read more about sed regular expressions.](https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html) + diff --git a/account.ini.sample b/account.ini.sample new file mode 100644 index 0000000..297bb99 --- /dev/null +++ b/account.ini.sample @@ -0,0 +1,2 @@ +account=bensbots +password="my super secret password" diff --git a/sedbot.bash b/sedbot.bash old mode 100755 new mode 100644 index 2cb07e6..d739fe9 --- a/sedbot.bash +++ b/sedbot.bash @@ -3,7 +3,14 @@ #license: GNU GPL v3+ # source configs -. .cfg +if [[ -f .cfg ]]; then + . .cfg +else + printf "configs not found\n" + printf " cp .cfg.example .cfg\n" + printf "adjust settings and restart\n" + exit 1 +fi exec 4> >(tee -a -- "$IRC_LOG") 2> >(tee -a -- "$ERROR_LOG" >&2) @@ -29,6 +36,14 @@ connect() { sendmsg MODE "$NICK +B" if (($?)); then return $? + fi + # log in to services account if we have configs + if [ -f account.ini ]; then + . account.ini + sendmsg SQUERY "NickServ IDENTIFY ${account} ${password}" + if (($?)); then + return $? + fi fi return 0 } diff --git a/sedbot.service b/sedbot.service index cc17b5b..f52e856 100644 --- a/sedbot.service +++ b/sedbot.service @@ -4,8 +4,8 @@ After=sedbot.service [Service] Type=simple -WorkingDirectory=/home/bot/sedbot -ExecStart=/home/bot/sedbot/sedbot.bash +WorkingDirectory=/home/ben/workspace/sedbot +ExecStart=/bin/bash sedbot.bash Restart=always RestartSec=5 StartLimitInterval=60s