v.1.4 misc updates
42
Makefile
|
@ -4,21 +4,45 @@ CC=gcc
|
||||||
# CFLAGS=-lircclient
|
# CFLAGS=-lircclient
|
||||||
# CFLAGS=-static libircclient.a
|
# CFLAGS=-static libircclient.a
|
||||||
MKDIR_P = mkdir -p
|
MKDIR_P = mkdir -p
|
||||||
|
APP_NAME = loperIRCLogBot
|
||||||
|
SYSTEMD_DETECT = shell cat /proc/1/comm|grep systemd
|
||||||
|
|
||||||
all: lib loperIRCLogBot
|
all: lib $(APP_NAME)
|
||||||
|
|
||||||
lib:
|
lib:
|
||||||
cp ./files/* ./libircclient-1.9/src/
|
cp ./src/files/* ./src/libircclient-1.9/src/
|
||||||
# patch -p0 -i ./files/patchFile
|
# patch -p0 -i ./files/patchFile
|
||||||
$(MAKE) -C ./libircclient-1.9/src/ || exit 1;
|
$(MAKE) -C ./src/libircclient-1.9/src/ || exit 1;
|
||||||
cp -r ./libircclient-1.9/include/ ./libircclient
|
cp -r ./src/libircclient-1.9/include/ ./src/libircclient
|
||||||
cp ./libircclient-1.9/src/libircclient.a .
|
cp ./src/libircclient-1.9/src/libircclient.a ./src
|
||||||
|
|
||||||
loperIRCLogBot: loperIRCLogBot.c
|
loperIRCLogBot: ./src/$(APP_NAME).c
|
||||||
$(MKDIR_P) ./bin
|
$(MKDIR_P) ./bin
|
||||||
# $(CC) $(CFLAGS) loperIRCLogBot.c -o ./bin/loperIRCLogBot
|
# $(CC) $(CFLAGS) $(APP_NAME).c -o ./bin/loperIRCLogBot
|
||||||
$(CC) -std=gnu89 loperIRCLogBot.c libircclient.a -o ./bin/loperIRCLogBot
|
$(CC) -std=gnu89 ./src/$(APP_NAME).c ./src/libircclient.a -o ./bin/$(APP_NAME)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf ./bin/*.o ./bin/loperIRCLogBot ./libircclient libircclient.a ./libircclient-1.9/src/libircclient.o ./libircclient-1.9/src/libircclient.a ./libircclient-1.9/src/config.h ./libircclient-1.9/src/Makefile
|
rm -rf ./bin/*.o \
|
||||||
|
./bin/loperIRCLogBot \
|
||||||
|
./src/libircclient \
|
||||||
|
./src/libircclient.a \
|
||||||
|
./src/libircclient-1.9/src/libircclient.o \
|
||||||
|
./src/libircclient-1.9/src/libircclient.a \
|
||||||
|
./src/libircclient-1.9/src/config.h \
|
||||||
|
./src/libircclient-1.9/src/Makefile
|
||||||
|
install:
|
||||||
|
install ./bin/loperIRCLogBot /usr/bin
|
||||||
|
$(MKDIR_P) /etc/$(APP_NAME)
|
||||||
|
ifeq ($(SYSTEMD_DETECT),'systemd')
|
||||||
|
cp ./src/files/loperIRCLogBot.service /etc/systemd/system/loperIRCLogBot.service
|
||||||
|
else
|
||||||
|
@echo "* Not a systemD distro. Skipping unit installation."
|
||||||
|
endif
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm /usr/bin/loperIRCLogBot
|
||||||
|
rmdir /etc/$(APP_NAME)
|
||||||
|
ifeq ($(SYSTEMD_DETECT),'systemd')
|
||||||
|
rm -rf /etc/systemd/system/loperIRCLogBot.service
|
||||||
|
endif
|
||||||
|
|
93
README
|
@ -1,40 +1,47 @@
|
||||||
README that actually FAQ.
|
# loperIRCLogBot
|
||||||
|
|
||||||
What is it about?
|
|
||||||
loperIRCLogBot is an IRC logging bot made for writing log-files. It could connect to one server and log one channel.
|
loperIRCLogBot is an IRC logging bot made for writing log-files. It could connect to one server and log one channel.
|
||||||
When someone says bot's name at the chat, the URL to logs could be published.
|
When someone says bot's name at the chat, the URL to logs web-storage could be published (or any message defined in configuration file).
|
||||||
|
|
||||||
Is it works for Windows™?
|
## Description
|
||||||
Nope
|
|
||||||
|
|
||||||
And if I compile it for Windows™?
|
Works for linux. Need to be tested on other UNIX-like OS.
|
||||||
It won't.
|
|
||||||
|
|
||||||
OS X? BSD?
|
Key feachures and limitations:
|
||||||
I don't know. Give a try, let me know.
|
* Could work as a daemon.
|
||||||
|
* Store configuration file in current folder (./bot.conf) or on /etc/loperIRCLogBot/bot.conf
|
||||||
|
* Only one channel and server supported for now.
|
||||||
|
* User can define folder to store files.
|
||||||
|
* Reconnect in ~6 minutes. Maybe earlier.
|
||||||
|
* Dumb flood-control
|
||||||
|
* Authorization only as: /nickserv IDENTIFY [password]
|
||||||
|
|
||||||
How to build?
|
# License
|
||||||
Type 'make'
|
|
||||||
|
|
||||||
It doesn't work and you don't provide ./configure, what should I do? Why is it happening?
|
Source code spreads under the GNU General Public License v.3. You can find it in LICENSE file or just visit www.gnu.org (it should be there for sure).
|
||||||
Change Makfile and ./files/Makefile. They're simple as hell. I don't know much about ./configure, so there is no such option. Sorry.
|
It also uses libircclient writted by George Yunaev, that is stored at ./src/libircclient-1.9. Libircclient is licensed under Lesser General Public License version 3 or higher.
|
||||||
|
|
||||||
I see some warnings during compilation. Is it ok?
|
## Build & Deploy
|
||||||
Yeah, I hope so. I also saw them. When I find the time, I'll do something with this.
|
|
||||||
|
|
||||||
Where is the executable? Where should I look for this and how to start?
|
```
|
||||||
$ ./bin/loperIRCLogBot
|
$ make
|
||||||
|
# sudo make install
|
||||||
|
```
|
||||||
|
# Uninstall
|
||||||
|
```
|
||||||
|
make uninstall
|
||||||
|
```
|
||||||
|
|
||||||
What about license?
|
NOTES:
|
||||||
Source code, which is actually 'loperIRCLogBot.c' file spreads under the GNU General Public License v.3 license. You can find it in LICENSE file or just visit www.gnu.org (it should be there for sure). It also uses libircclient writted by George Yunaev. Libircclient is licensed under Lesser General Public License version 3 or higher.
|
I believe you could change Makefile to let this app work with libircclien as a shared library. Now it's statically linked.
|
||||||
|
If you have bot.conf file at /etc/loperIRCLogBot folder it won't be deleted. So remember to delete it manually if needed.
|
||||||
|
|
||||||
Is it possible to let this app work with shared libraries of the libircclient that I already have in my distro?
|
## Configuration
|
||||||
Yes! Will update Makefile sooner or later.
|
|
||||||
|
|
||||||
Where is the application configuration should be set? How?
|
Application settings should be set on /etc/loperIRCLogBot/bot.conf OR ./bin/bot.conf file. You could generate template by passing -g option: './loperIRCLogBot -g'.
|
||||||
At the /etc/loperIRCLogBot/bot.conf OR ./bin/bot.conf file. You could generate template by passing -g option: './loperIRCLogBot -g'.
|
|
||||||
Configuration file contains 15 lines, so make sure that you didn't define any sensetive information below these 15 lines.
|
Configuration file contains 15 lines, so make sure that you didn't define any sensetive information below these 15 lines.
|
||||||
Here is an example:
|
Here is an example:
|
||||||
|
```
|
||||||
server: irc.example.com
|
server: irc.example.com
|
||||||
channel: #channel
|
channel: #channel
|
||||||
port: 6667
|
port: 6667
|
||||||
|
@ -47,31 +54,29 @@ logPath: 0
|
||||||
link: http://localhost:8080/logs/
|
link: http://localhost:8080/logs/
|
||||||
reJoin: yes
|
reJoin: yes
|
||||||
floodTimeOut: 10
|
floodTimeOut: 10
|
||||||
|
```
|
||||||
|
|
||||||
'server' should be set as described. NO "irc://" or stuff like this allowed, no slashes and backslashes.
|
Let's go deeper:
|
||||||
'channel' is the channel to log. Should be started by '#' symbol
|
|
||||||
'port' is server port.
|
|
||||||
'nick' is nick. Restricted by 'maxNickLength'. It means, that your nick shouldn't be greater then 'maxNickLength'.
|
|
||||||
'username' is username that defined as second parameter at your nick-on-server. Like nick!~[USERNAME]@ip_adress.
|
|
||||||
'realname' is realname. Don't ask, just set here something, ok?
|
|
||||||
'password' is a password for the nick. It goes to server as '/nickserv IDENTIFY [password]'. If '0' then no password needed,
|
|
||||||
'maxNickLength' is a maximum length of the nick. Various servers restrict the length of the nick. '30' should be enough. '128' is maximum, but I'm not sure that you have to set '128' in here, because if server doesn't support nicknames with such lenght, you could face to unforseen behavior in the application.
|
|
||||||
'logPath' is a path to 'logs' directory, where all your logs will be stored. If '0' then they will be stored at executable file folder. Pay attention, that logPath should be defined as full path. Not like ~/logs of ../../logs.
|
|
||||||
'link' is a link, that will be provided to anyone on the channel, who starts his/her message by your nick. If '0' then smile will be shown.
|
|
||||||
'reJoin'. If set to 'yes', then bot will be re-connect to channel after kick. If 'no' then it won't.
|
|
||||||
'floodTimeOut' is a time in seconds before answering on request sent to us.
|
|
||||||
|
|
||||||
Is there any other options for this application?
|
* 'server' should be set as described. NO "irc://" or stuff like this allowed, no slashes and backslashes.
|
||||||
Yes. When you start application, you could pass next options:
|
* 'channel' is the channel to log. Should be started by '#' symbol
|
||||||
-d, --daemon Start application as daemon. Writes to /var/log/loperIRCLogBot.log and syslog. Stores PID number at /var/run/loperIRCLogBot.pid\n
|
* 'port' is server port.
|
||||||
|
* 'nick' is nick. Restricted by 'maxNickLength'. It means, that your nick shouldn't be greater then 'maxNickLength'.
|
||||||
|
* 'username' is username that defined as second parameter at your nick-on-server. Like nick!~[USERNAME]@ip_adress.
|
||||||
|
* 'realname' is realname. Don't ask, just set here something, ok?
|
||||||
|
* 'password' is a password for the nick. It goes to server as '/nickserv IDENTIFY [password]'. If '0' then no password needed.
|
||||||
|
* 'maxNickLength' is a maximum length of the nick. Various servers restrict the length of the nick. '30' should be enough. '128' is maximum, but I'm not sure that you have to set '128' in here, because if server doesn't support nicknames with such lenght, you could face to unforseen behavior inside the application.
|
||||||
|
* 'logPath' is a path to 'logs' directory, where all your logs will be stored. If '0' then they will be stored at executable file folder. Pay attention, that logPath should be defined as full path. Not like '~/logs' or '../../logs'.
|
||||||
|
* 'link' is a link, that will be provided to anyone on the channel, who starts his/her message by your nick.
|
||||||
|
* 'reJoin'. If set to 'yes', then bot will be re-connect to channel after kick. If 'no' then it won't.
|
||||||
|
* 'floodTimeOut' is a time in seconds before answering on next request sent to us.
|
||||||
|
|
||||||
|
## Options & work modes
|
||||||
|
|
||||||
|
When you start application, you could pass next options:
|
||||||
|
-d, --daemon Start application as daemon. Writes to /var/log/loperIRCLogBot.log and syslog. Stores PID number at /var/run/loperIRCLogBot.pid
|
||||||
Also can interrupt correctly on SIGTERM, not so smooth on SIGINT and reopen log file directory on SIGHUP (used to handle logrotation).
|
Also can interrupt correctly on SIGTERM, not so smooth on SIGINT and reopen log file directory on SIGHUP (used to handle logrotation).
|
||||||
-g, --genconf Create configuration file template. Attention! It will overrite your existing configuration file.
|
-g, --genconf Create configuration file template. Attention! It will overrite your existing configuration file.
|
||||||
-s, --silent Silent mode. All program messages stores to the 'output.txt' file
|
-s, --silent Silent mode. All program messages stores to the 'output.txt' file
|
||||||
-v, --version Application version
|
-v, --version Application version
|
||||||
--help Show this message and terminate application
|
--help Show this message and terminate application
|
||||||
|
|
||||||
Any chance to log more than one channel?
|
|
||||||
Nope.
|
|
||||||
|
|
||||||
If connection is lost, could this bot re-connect? When he will do it?
|
|
||||||
In ~6 minutes. Maybe earlier.
|
|
||||||
|
|
18
src/files/loperIRCLogBot.service
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[Unit]
|
||||||
|
Description=IRC log bot
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
PIDFile=/var/run/loperIRCLogBot.pid
|
||||||
|
OOMScoreAdjust=-100
|
||||||
|
TimeoutSec=300
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
ExecStart=/usr/bin/loperIRCLogBot -d
|
||||||
|
ExecReload=/bin/kill -TERM $PIDFile && /usr/bin/loperIRCLogBot -d
|
||||||
|
ExecStop=/bin/kill -TERM $PIDFile
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 400 B After Width: | Height: | Size: 400 B |
Before Width: | Height: | Size: 401 B After Width: | Height: | Size: 401 B |
Before Width: | Height: | Size: 35 B After Width: | Height: | Size: 35 B |
Before Width: | Height: | Size: 706 B After Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |