
VERSION:=1.3
RELEASE:=5

CC=gcc
CFLAGS= -O2 -Wall -DVERSION=\"$(VERSION)\" -DRELEASE=\"$(RELEASE)\"

default: firelogd

easy: setup firelogd install start

firelogd: dmn_main.o dmn_fun.o icmp.o match.o resolve.o dmn.h match.h
	$(CC) $(CFLAGS) -o firelogd dmn_main.o dmn_fun.o icmp.o match.o resolve.o
	@ctags *.c

obj: dmn_main.c dmn_fun.c icmp.c match.c resolve.c dmn.h match.h
	$(CC) $(CFLAGS) -c dmn_main.c dmn_fun.c icmp.c match.c resolve.c
	@ctags *.c
	
install:
	@make
	@cp -f firelogd /usr/sbin/firelogd
	@chown root.root /usr/sbin/firelogd
	@chmod 0500 /usr/sbin/firelogd
	@echo "Restrictive permissions set for /usr/sbin/firelogd"
	@cp -f TEMPLATES /etc/firelog.conf
	@chown root.root /etc/firelog.conf
	@chmod 0600 /etc/firelog.conf
	@cp -f iana-port-numbers /etc/iana-port-numbers
	@cp -f iana-icmp-numbers /etc/iana-icmp-numbers
	@cp -f firelogd.8.gz /usr/man/man8/firelogd.8.gz || echo "Man page could not be installed to /usr/man/man8/firelogd.8.gz. You will have to do it yourself."
	@echo "Failures after this point are OK, firelogd is installed."
	@echo
	@echo "Installing documentation to /usr/doc/firelogd"
	@mkdir /usr/doc/firelogd
	@cp -f Changelog /usr/doc/firelogd/
	@cp -f Makefile /usr/doc/firelogd/
	@cp -f FILES /usr/doc/firelogd/
	@cp -f BUGS /usr/doc/firelogd/
	@cp -f decode.php /usr/doc/firelogd/
	@cp -f QUICKSTART /usr/doc/firelogd/
	@cp -f README /usr/doc/firelogd/
	@cp -f TEMPLATES /usr/doc/firelogd/
	@echo "Adding firelogd to init..."
	@cp -f init-firelogd.sh /etc/rc.d/init.d/firelogd || echo "Unable to add firelogd to init. You will have to do it yourself."
	@which chkconfig && chkconfig --add firelogd
	@echo "Files installed (see FILES):"
	@cat FILES

setup:
	@echo "Creating FIFO"
	@test -p /var/log/kernelpipe || mkfifo /var/log/kernelpipe
	@chown root.root /var/log/kernelpipe
	@chmod 0600 /var/log/kernelpipe
	@echo "Modifying /etc/syslog.conf"
	@echo "Backing up syslog.conf to the install directory..."
	@cp -f /etc/syslog.conf ./syslog.conf-original
	@grep -q kernelpipe /etc/syslog.conf || \
	echo "kern.info				|/var/log/kernelpipe" >> \
	/etc/syslog.conf
	@echo "/etc/syslog.conf modified, restarting system logger..."
	@/etc/rc.d/init.d/syslog restart
	
start:
	@/etc/rc.d/init.d/firelogd start || /usr/sbin/firelogd -d

uninstall:
	@/etc/rc.d/init.d/firelogd stop &
	@cat /etc/syslog.conf > /etc/syslog.conf-backup
	@cp -f /etc/syslog.conf ./syslog.conf-uninstall
	@grep -v kernelpipe /etc/syslog.conf-backup > /etc/syslog.conf
	@/etc/rc.d/init.d/syslog restart
	@chkconfig --del firelogd
	@rm -f /var/log/kernelpipe
	@rm -f /etc/syslog.conf-backup
	@rm -f /etc/firelog.conf
	@rm -f /usr/sbin/firelogd
	@rm -f /var/tmp/firelogd.buffer
	@rm -f /etc/iana-icmp-numbers
	@rm -f /etc/iana-port-numbers
	@rm -f /usr/man/man8/firelogd.8.gz
	@rm -f /usr/doc/firelogd/* && rmdir /usr/doc/firelogd
	@rm -f /etc/rc.d/init.d/firelogd
	@echo
	@echo
	@echo "Verify your /etc/syslog.conf file!!!"
	@echo "A backup copy was placed in the installation directory."

indent:
	@indent *.c
	@rm -f *.c~
	@ctags *.c

clean:
	@rm -f *.o co* firelogd tags syslog*
	
oclean:
	@rm -f *.o co* tags syslog*
	
release:
	@vim Changelog
	@vim Makefile
	@make
	@make indent
	@make oclean
	@rm -f tags
	@echo "%define version $(VERSION)" > /usr/src/redhat/SPECS/firelogd.spec
	@echo "%define release $(RELEASE)" >> /usr/src/redhat/SPECS/firelogd.spec
	@cat firelogd.spec >> /usr/src/redhat/SPECS/firelogd.spec
	@cd ..; \
	tar -c --exclude firelogd-$(VERSION)/dist -vzf firelogd-$(VERSION)-$(RELEASE).tgz firelogd-$(VERSION); \
	mv -f firelogd-$(VERSION)-$(RELEASE).tgz /usr/src/redhat/SOURCES
	@rpm -e `rpm -qa | grep firelogd` || true
	@rpm -ba /usr/src/redhat/SPECS/firelogd.spec
	@make uninstall
	@make oclean
	@rm -f syslog*
	@rm -Rf /usr/src/redhat/BUILD/firelogd-$(VERSION)
	@rm -f /usr/src/redhat/SPECS/firelogd.spec
	@mv -f /usr/src/redhat/RPMS/i386/firelogd-$(VERSION)-$(RELEASE).i386.rpm dist/
	@mv -f /usr/src/redhat/SRPMS/firelogd-$(VERSION)-$(RELEASE).src.rpm dist/
	@mv -f /usr/src/redhat/SOURCES/firelogd-$(VERSION)-$(RELEASE).tgz dist/
	@rpm -i dist/firelogd-$(VERSION)-$(RELEASE).i386.rpm
	@make oclean
	@echo "Finished with distribution build. Starting distribution..."
	@./dist/finish $(VERSION) $(RELEASE)
