Files
bpfire/lfs/stage2
Michael Tremer 708f2b7368 openvpn: Add metrics script
This script is called when an OpenVPN Roadwarrior client
connects or disconnect and logs the start and duration
of the session.

This can be used to monitor session duration and data transfer.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
2020-05-01 19:18:00 +00:00

163 lines
5.7 KiB
Plaintext

###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007-2020 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
###############################################################################
# Definitions
###############################################################################
include Config
VER = ipfire
THISAPP = stage2
TARGET = $(DIR_INFO)/$(THISAPP)
###############################################################################
# Top-level Rules
###############################################################################
install : $(TARGET)
check :
download :
md5 :
###############################################################################
# Installation Details
###############################################################################
$(TARGET) :
@$(PREBUILD)
# Create directories
-mkdir -pv /{bin,boot,etc/opt,etc/modprobe.d,home,lib/firmware/brcm,mnt,opt,run}
-mkdir -pv /{media/{floppy,cdrom,usbkey},sbin,srv,var}
-install -dv -m 0750 /root
-install -dv -m 1777 /tmp /var/tmp
-mkdir -pv /usr/{,local/}{bin,include,lib{,/sse2},sbin,src}
-mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
-mkdir -v /usr/{,local/}share/{misc,terminfo,xt_geoip,zoneinfo}
-mkdir -pv /usr/{,local/}share/man/man{1..8}
#-for dir in /usr /usr/local; do \
# ln -sv share/{man,doc,info} $$dir; \
#done
# Symlink /var/run -> /run.
ln -svf ../run /var/run
ifeq "$(IS_64BIT)" "1"
ln -svf lib /lib64
ln -svf lib /usr/lib64
endif
# Symlinks
# for this reason, stage2 rebuild will broke the iso:perl, grubbatch
-ln -sv $(TOOLS_DIR)/bin/{bash,cat,echo,pwd,stty} /bin
-ln -sv $(TOOLS_DIR)/bin/perl /usr/bin
-ln -sv $(TOOLS_DIR)/lib/libgcc_s.so{,.1} /usr/lib
-ln -sv $(TOOLS_DIR)/lib/libstdc++.so{,.6} /usr/lib
sed 's@$(TOOLS_DIR)@/usr@' $(TOOLS_DIR)/lib/libstdc++.la > /usr/lib/libstdc++.la
-ln -sv bash /bin/sh
# Config files
cp -rvf $(DIR_SRC)/config/etc/* /etc;
cp -rvf $(DIR_SRC)/config/lib/* /lib;
touch /etc/{fs,m}tab
echo "$(NAME) v$(VERSION) - $(SLOGAN)" > /etc/issue
echo "===============================" >> /etc/issue
echo "\n running on \s \r \m" >> /etc/issue
# Bash startup files
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
for i in $(DIR_SRC)/config/profile.d/*; do \
[ -f $$i ] && cp $$i /etc/profile.d; \
done
chmod 755 /etc/bashrc
# Install root's bash files.
for i in $(DIR_SRC)/config/bash/dot_*; do \
[ -f $$i ] && cp $$i /root/$$(basename $${i/dot_/\.}); \
done
# Scripts
for i in `find $(DIR_SRC)/src/scripts -maxdepth 1 -type f`; do \
sed "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" $$i > /usr/local/bin/`basename $$i`; \
chmod 755 /usr/local/bin/`basename $$i`; \
done
# Move script to correct place.
mv -vf /usr/local/bin/openvpn-metrics /usr/sbin/
mv -vf /usr/local/bin/ovpn-ccd-convert /usr/sbin/
mv -vf /usr/local/bin/ovpn-collectd-convert /usr/sbin/
mv -vf /usr/local/bin/captive-cleanup /usr/bin/
# Install firewall scripts.
mkdir -pv /usr/lib/firewall
install -m 755 $(DIR_SRC)/config/firewall/rules.pl \
/usr/lib/firewall/rules.pl
install -m 644 $(DIR_SRC)/config/firewall/firewall-lib.pl \
/usr/lib/firewall/firewall-lib.pl
install -m 755 $(DIR_SRC)/config/firewall/ipsec-policy \
/usr/lib/firewall/ipsec-policy
# Nobody user
-mkdir -p /home/nobody
chown -R nobody:nobody /home/nobody
# Create /var dirs and files
-mkdir -v /var/{lock,log,mail,spool,empty}
-mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
-mkdir -pv /var/log/{counter,calamaris}
chown nobody.nobody /var/log/calamaris
touch /var/log/{btmp,lastlog,wtmp}
chmod -v 600 /var/log/btmp
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
# Permissions
chmod 0711 /var/empty
# A small hack to include /root to the iso but not all of it's files.
touch /root/ipfire
# License agreement
-mkdir -pv /usr/share/doc/licenses/
cp -vf $(DIR_SRC)/doc/COPYING /usr/share/doc/licenses/GPLv3
# System release
echo "$(SYSTEM_RELEASE)" > /etc/system-release
# OS release
: >/etc/os-release
echo "NAME=\"$(NAME)\"" >> /etc/os-release
echo "VERSION=\"$(VERSION)\"" >> /etc/os-release
echo "ID=$(SNAME)" >> /etc/os-release
echo "VERSION_ID=2" >> /etc/os-release
echo "PRETTY_NAME=\"$(SYSTEM_RELEASE)\"" >> /etc/os-release
echo "ANSI_COLOR=\"0:31\"" >> /etc/os-release
# Pakfire
-mkdir -pv /opt/pakfire/db/core
echo "$(CORE)" > /opt/pakfire/db/core/mine
@$(POSTBUILD)