Merge branch 'next' of ssh://git.ipfire.org/pub/git/ipfire-2.x into asterisk-update

This commit is contained in:
Dirk Wagner
2014-08-11 21:05:14 +02:00
59 changed files with 5148 additions and 107 deletions

View File

@@ -627,9 +627,8 @@ sub validdomainname
my @parts = split (/\./, $domainname); # Split hostname at the '.'
foreach $part (@parts) {
# Each part should be at least two characters in length
# but no more than 63 characters
if (length ($part) < 2 || length ($part) > 63) {
# Each part should be no more than 63 characters in length
if (length ($part) < 1 || length ($part) > 63) {
return 0;}
# Only valid characters are a-z, A-Z, 0-9 and -
if ($part !~ /^[a-zA-Z0-9-]*$/) {

View File

@@ -73,13 +73,13 @@ etc/rc.d/init.d/networking/red.down/05-RS-dnsmasq
etc/rc.d/init.d/networking/red.down/10-ipsec
etc/rc.d/init.d/networking/red.down/10-miniupnpd
etc/rc.d/init.d/networking/red.down/10-ovpn
etc/rc.d/init.d/networking/red.down/20-RL-firewall
etc/rc.d/init.d/networking/red.down/20-firewall
#etc/rc.d/init.d/networking/red.up
etc/rc.d/init.d/networking/red.up/01-conntrack-cleanup
etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq
etc/rc.d/init.d/networking/red.up/10-miniupnpd
etc/rc.d/init.d/networking/red.up/10-multicast
etc/rc.d/init.d/networking/red.up/20-RL-firewall
etc/rc.d/init.d/networking/red.up/20-firewall
etc/rc.d/init.d/networking/red.up/23-RS-snort
etc/rc.d/init.d/networking/red.up/24-RS-qos
etc/rc.d/init.d/networking/red.up/27-RS-squid

View File

@@ -0,0 +1,2 @@
usr/sbin/batctl
#usr/share/man/man8/batctl.8

View File

@@ -60,4 +60,7 @@ usr/lib/python2.7/site-packages/ddns/system.pyo
#usr/share/locale/uz@Latn/LC_MESSAGES
#usr/share/locale/uz@Latn/LC_MESSAGES/ddns.mo
#usr/share/locale/vi/LC_MESSAGES/ddns.mo
#usr/share/locale/zh
#usr/share/locale/zh/LC_MESSAGES
#usr/share/locale/zh/LC_MESSAGES/ddns.mo
#var/ipfire/ddns/ddns.conf.sample

View File

@@ -75,13 +75,13 @@ etc/rc.d/init.d/networking/red.down/05-RS-dnsmasq
etc/rc.d/init.d/networking/red.down/10-ipsec
etc/rc.d/init.d/networking/red.down/10-miniupnpd
etc/rc.d/init.d/networking/red.down/10-ovpn
etc/rc.d/init.d/networking/red.down/20-RL-firewall
etc/rc.d/init.d/networking/red.down/20-firewall
#etc/rc.d/init.d/networking/red.up
etc/rc.d/init.d/networking/red.up/01-conntrack-cleanup
etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq
etc/rc.d/init.d/networking/red.up/10-miniupnpd
etc/rc.d/init.d/networking/red.up/10-multicast
etc/rc.d/init.d/networking/red.up/20-RL-firewall
etc/rc.d/init.d/networking/red.up/20-firewall
etc/rc.d/init.d/networking/red.up/23-RS-snort
etc/rc.d/init.d/networking/red.up/24-RS-qos
etc/rc.d/init.d/networking/red.up/27-RS-squid

View File

@@ -0,0 +1,204 @@
#etc/libnl
etc/libnl/classid
etc/libnl/pktloc
#usr/include/libnl3
#usr/include/libnl3/netlink
#usr/include/libnl3/netlink/addr.h
#usr/include/libnl3/netlink/attr.h
#usr/include/libnl3/netlink/cache-api.h
#usr/include/libnl3/netlink/cache.h
#usr/include/libnl3/netlink/cli
#usr/include/libnl3/netlink/cli/addr.h
#usr/include/libnl3/netlink/cli/class.h
#usr/include/libnl3/netlink/cli/cls.h
#usr/include/libnl3/netlink/cli/ct.h
#usr/include/libnl3/netlink/cli/exp.h
#usr/include/libnl3/netlink/cli/link.h
#usr/include/libnl3/netlink/cli/neigh.h
#usr/include/libnl3/netlink/cli/qdisc.h
#usr/include/libnl3/netlink/cli/route.h
#usr/include/libnl3/netlink/cli/rule.h
#usr/include/libnl3/netlink/cli/tc.h
#usr/include/libnl3/netlink/cli/utils.h
#usr/include/libnl3/netlink/data.h
#usr/include/libnl3/netlink/errno.h
#usr/include/libnl3/netlink/fib_lookup
#usr/include/libnl3/netlink/fib_lookup/lookup.h
#usr/include/libnl3/netlink/fib_lookup/request.h
#usr/include/libnl3/netlink/genl
#usr/include/libnl3/netlink/genl/ctrl.h
#usr/include/libnl3/netlink/genl/family.h
#usr/include/libnl3/netlink/genl/genl.h
#usr/include/libnl3/netlink/genl/mngt.h
#usr/include/libnl3/netlink/handlers.h
#usr/include/libnl3/netlink/hash.h
#usr/include/libnl3/netlink/hashtable.h
#usr/include/libnl3/netlink/idiag
#usr/include/libnl3/netlink/idiag/idiagnl.h
#usr/include/libnl3/netlink/idiag/meminfo.h
#usr/include/libnl3/netlink/idiag/msg.h
#usr/include/libnl3/netlink/idiag/req.h
#usr/include/libnl3/netlink/idiag/vegasinfo.h
#usr/include/libnl3/netlink/list.h
#usr/include/libnl3/netlink/msg.h
#usr/include/libnl3/netlink/netfilter
#usr/include/libnl3/netlink/netfilter/ct.h
#usr/include/libnl3/netlink/netfilter/exp.h
#usr/include/libnl3/netlink/netfilter/log.h
#usr/include/libnl3/netlink/netfilter/log_msg.h
#usr/include/libnl3/netlink/netfilter/netfilter.h
#usr/include/libnl3/netlink/netfilter/nfnl.h
#usr/include/libnl3/netlink/netfilter/queue.h
#usr/include/libnl3/netlink/netfilter/queue_msg.h
#usr/include/libnl3/netlink/netlink-compat.h
#usr/include/libnl3/netlink/netlink-kernel.h
#usr/include/libnl3/netlink/netlink.h
#usr/include/libnl3/netlink/object-api.h
#usr/include/libnl3/netlink/object.h
#usr/include/libnl3/netlink/route
#usr/include/libnl3/netlink/route/act
#usr/include/libnl3/netlink/route/act/mirred.h
#usr/include/libnl3/netlink/route/action.h
#usr/include/libnl3/netlink/route/addr.h
#usr/include/libnl3/netlink/route/class.h
#usr/include/libnl3/netlink/route/classifier.h
#usr/include/libnl3/netlink/route/cls
#usr/include/libnl3/netlink/route/cls/basic.h
#usr/include/libnl3/netlink/route/cls/cgroup.h
#usr/include/libnl3/netlink/route/cls/ematch
#usr/include/libnl3/netlink/route/cls/ematch.h
#usr/include/libnl3/netlink/route/cls/ematch/cmp.h
#usr/include/libnl3/netlink/route/cls/ematch/meta.h
#usr/include/libnl3/netlink/route/cls/ematch/nbyte.h
#usr/include/libnl3/netlink/route/cls/ematch/text.h
#usr/include/libnl3/netlink/route/cls/fw.h
#usr/include/libnl3/netlink/route/cls/police.h
#usr/include/libnl3/netlink/route/cls/u32.h
#usr/include/libnl3/netlink/route/link
#usr/include/libnl3/netlink/route/link.h
#usr/include/libnl3/netlink/route/link/api.h
#usr/include/libnl3/netlink/route/link/bonding.h
#usr/include/libnl3/netlink/route/link/bridge.h
#usr/include/libnl3/netlink/route/link/can.h
#usr/include/libnl3/netlink/route/link/inet.h
#usr/include/libnl3/netlink/route/link/info-api.h
#usr/include/libnl3/netlink/route/link/ip6tnl.h
#usr/include/libnl3/netlink/route/link/ipgre.h
#usr/include/libnl3/netlink/route/link/ipip.h
#usr/include/libnl3/netlink/route/link/ipvti.h
#usr/include/libnl3/netlink/route/link/macvlan.h
#usr/include/libnl3/netlink/route/link/sit.h
#usr/include/libnl3/netlink/route/link/veth.h
#usr/include/libnl3/netlink/route/link/vlan.h
#usr/include/libnl3/netlink/route/link/vxlan.h
#usr/include/libnl3/netlink/route/neighbour.h
#usr/include/libnl3/netlink/route/neightbl.h
#usr/include/libnl3/netlink/route/nexthop.h
#usr/include/libnl3/netlink/route/pktloc.h
#usr/include/libnl3/netlink/route/qdisc
#usr/include/libnl3/netlink/route/qdisc.h
#usr/include/libnl3/netlink/route/qdisc/cbq.h
#usr/include/libnl3/netlink/route/qdisc/dsmark.h
#usr/include/libnl3/netlink/route/qdisc/fifo.h
#usr/include/libnl3/netlink/route/qdisc/fq_codel.h
#usr/include/libnl3/netlink/route/qdisc/htb.h
#usr/include/libnl3/netlink/route/qdisc/netem.h
#usr/include/libnl3/netlink/route/qdisc/plug.h
#usr/include/libnl3/netlink/route/qdisc/prio.h
#usr/include/libnl3/netlink/route/qdisc/red.h
#usr/include/libnl3/netlink/route/qdisc/sfq.h
#usr/include/libnl3/netlink/route/qdisc/tbf.h
#usr/include/libnl3/netlink/route/route.h
#usr/include/libnl3/netlink/route/rtnl.h
#usr/include/libnl3/netlink/route/rule.h
#usr/include/libnl3/netlink/route/tc-api.h
#usr/include/libnl3/netlink/route/tc.h
#usr/include/libnl3/netlink/socket.h
#usr/include/libnl3/netlink/types.h
#usr/include/libnl3/netlink/utils.h
#usr/include/libnl3/netlink/version.h
#usr/lib/libnl
#usr/lib/libnl-3.a
#usr/lib/libnl-3.la
#usr/lib/libnl-3.so
usr/lib/libnl-3.so.200
usr/lib/libnl-3.so.200.20.0
#usr/lib/libnl-cli-3.a
#usr/lib/libnl-cli-3.la
#usr/lib/libnl-cli-3.so
usr/lib/libnl-cli-3.so.200
usr/lib/libnl-cli-3.so.200.20.0
#usr/lib/libnl-genl-3.a
#usr/lib/libnl-genl-3.la
#usr/lib/libnl-genl-3.so
usr/lib/libnl-genl-3.so.200
usr/lib/libnl-genl-3.so.200.20.0
#usr/lib/libnl-idiag-3.a
#usr/lib/libnl-idiag-3.la
#usr/lib/libnl-idiag-3.so
usr/lib/libnl-idiag-3.so.200
usr/lib/libnl-idiag-3.so.200.20.0
#usr/lib/libnl-nf-3.a
#usr/lib/libnl-nf-3.la
#usr/lib/libnl-nf-3.so
usr/lib/libnl-nf-3.so.200
usr/lib/libnl-nf-3.so.200.20.0
#usr/lib/libnl-route-3.a
#usr/lib/libnl-route-3.la
#usr/lib/libnl-route-3.so
usr/lib/libnl-route-3.so.200
usr/lib/libnl-route-3.so.200.20.0
#usr/lib/libnl/cli
#usr/lib/libnl/cli/cls
#usr/lib/libnl/cli/cls/basic.a
#usr/lib/libnl/cli/cls/basic.la
usr/lib/libnl/cli/cls/basic.so
#usr/lib/libnl/cli/cls/cgroup.a
#usr/lib/libnl/cli/cls/cgroup.la
usr/lib/libnl/cli/cls/cgroup.so
#usr/lib/libnl/cli/qdisc
#usr/lib/libnl/cli/qdisc/bfifo.a
#usr/lib/libnl/cli/qdisc/bfifo.la
usr/lib/libnl/cli/qdisc/bfifo.so
#usr/lib/libnl/cli/qdisc/blackhole.a
#usr/lib/libnl/cli/qdisc/blackhole.la
usr/lib/libnl/cli/qdisc/blackhole.so
#usr/lib/libnl/cli/qdisc/fq_codel.a
#usr/lib/libnl/cli/qdisc/fq_codel.la
usr/lib/libnl/cli/qdisc/fq_codel.so
#usr/lib/libnl/cli/qdisc/htb.a
#usr/lib/libnl/cli/qdisc/htb.la
usr/lib/libnl/cli/qdisc/htb.so
#usr/lib/libnl/cli/qdisc/ingress.a
#usr/lib/libnl/cli/qdisc/ingress.la
usr/lib/libnl/cli/qdisc/ingress.so
#usr/lib/libnl/cli/qdisc/pfifo.a
#usr/lib/libnl/cli/qdisc/pfifo.la
usr/lib/libnl/cli/qdisc/pfifo.so
#usr/lib/libnl/cli/qdisc/plug.a
#usr/lib/libnl/cli/qdisc/plug.la
usr/lib/libnl/cli/qdisc/plug.so
#usr/lib/pkgconfig/libnl-3.0.pc
#usr/lib/pkgconfig/libnl-cli-3.0.pc
#usr/lib/pkgconfig/libnl-genl-3.0.pc
#usr/lib/pkgconfig/libnl-nf-3.0.pc
#usr/lib/pkgconfig/libnl-route-3.0.pc
#usr/sbin/genl-ctrl-list
usr/sbin/nl-class-add
usr/sbin/nl-class-delete
usr/sbin/nl-class-list
usr/sbin/nl-classid-lookup
usr/sbin/nl-cls-add
usr/sbin/nl-cls-delete
usr/sbin/nl-cls-list
usr/sbin/nl-link-list
usr/sbin/nl-pktloc-lookup
usr/sbin/nl-qdisc-add
usr/sbin/nl-qdisc-delete
usr/sbin/nl-qdisc-list
#usr/share/man/man8/genl-ctrl-list.8
#usr/share/man/man8/nl-classid-lookup.8
#usr/share/man/man8/nl-pktloc-lookup.8
#usr/share/man/man8/nl-qdisc-add.8
#usr/share/man/man8/nl-qdisc-delete.8
#usr/share/man/man8/nl-qdisc-list.8

View File

@@ -8,6 +8,7 @@ etc/rc.d/init.d/firewall
etc/rc.d/init.d/networking/red.up/30-ddns
etc/rc.d/init.d/rngd
srv/web/ipfire/cgi-bin/ddns.cgi
srv/web/ipfire/cgi-bin/ids.cgi
srv/web/ipfire/cgi-bin/logs.cgi/firewalllogcountry.dat
srv/web/ipfire/cgi-bin/logs.cgi/log.dat
srv/web/ipfire/cgi-bin/netexternal.cgi

View File

@@ -0,0 +1,20 @@
boot/config.txt
etc/collectd.custom
etc/ipsec.conf
etc/ipsec.secrets
etc/ipsec.user.conf
etc/ipsec.user.secrets
etc/localtime
etc/shadow
etc/ssh/ssh_config
etc/ssh/sshd_config
etc/ssl/openssl.cnf
etc/sudoers
etc/sysconfig/firewall.local
etc/sysconfig/rc.local
etc/udev/rules.d/30-persistent-network.rules
srv/web/ipfire/html/proxy.pac
var/ipfire/ovpn
var/log/cache
var/state/dhcp/dhcpd.leases
var/updatecache

View File

@@ -0,0 +1 @@
../../../common/ddns

View File

@@ -0,0 +1,5 @@
etc/system-release
etc/issue
etc/rc.d/init.d/firewall
srv/web/ipfire/cgi-bin/ddns.cgi
srv/web/ipfire/cgi-bin/ovpnmain.cgi

View File

@@ -0,0 +1 @@
../../../common/lzo

View File

@@ -0,0 +1 @@
../../../common/openssh

View File

@@ -0,0 +1 @@
../../../common/openssl

View File

@@ -0,0 +1 @@
DEPS=""

View File

@@ -0,0 +1,57 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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. #
# #
# IPFire 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 IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2014 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
/usr/local/bin/backupctrl exclude >/dev/null 2>&1
# Remove old core updates from pakfire cache to save space...
core=81
for (( i=1; i<=$core; i++ ))
do
rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
done
# Stop services
# Remove old strongswan files
# Extract files
extract_files
# Start services
/etc/init.d/apache restart
# Update Language cache
#perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
sync
# This update need a reboot...
touch /var/run/need_reboot
^^
# Finish
/etc/init.d/fireinfo start
sendprofile
# Don't report the exitcode last command
exit 0

View File

@@ -0,0 +1,176 @@
usr/lib/perl5/site_perl/5.12.3/PDF
usr/lib/perl5/site_perl/5.12.3/PDF/API2
usr/lib/perl5/site_perl/5.12.3/PDF/API2.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Annotation.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Array.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Bool.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Dict.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/File.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter/ASCII85Decode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter/ASCIIHexDecode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter/FlateDecode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter/LZWDecode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Filter/RunLengthDecode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Literal.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Name.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Null.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Number.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Objind.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Page.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Pages.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/String.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Basic/PDF/Utils.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Content
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Content.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Content/Text.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Lite.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Matrix.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/NamedDestination.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Outline.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Outlines.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Page.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/BaseFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont/adobemingstdlightacro.data
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont/adobemyungjostdmediumacro.data
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont/adobesongstdlightacro.data
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont/kozgopromediumacro.data
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CJKFont/kozminproregularacro.data
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CMap
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CMap/japanese.cmap
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CMap/korean.cmap
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CMap/simplified.cmap
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/CMap/traditional.cmap
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/TrueType
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/TrueType.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/DeviceN.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Indexed
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Indexed.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Indexed/ACTFile.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Indexed/Hue.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Indexed/WebColor.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ColorSpace/Separation.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Colors.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/ExtGState.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/BdFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/bankgothic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/courier.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/courierbold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/courierboldoblique.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/courieroblique.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/georgia.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/georgiabold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/georgiabolditalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/georgiaitalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/helvetica.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/helveticabold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/helveticaboldoblique.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/helveticaoblique.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/symbol.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/timesbold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/timesbolditalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/timesitalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/timesroman.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/trebuchet.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/trebuchetbold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/trebuchetbolditalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/trebuchetitalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/verdana.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/verdanabold.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/verdanabolditalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/verdanaitalic.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/webdings.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/wingdings.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/CoreFont/zapfdingbats.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/Postscript.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Font/SynFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Glyphs.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/PaperSizes.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Pattern.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/Shading.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/UniFont.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode/codabar.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode/code128.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode/code3of9.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode/ean13.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/BarCode/int2of5.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Form/Hybrid.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/GD.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/GIF.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/JPEG.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/PNG.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/PNM.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/XObject/Image/TIFF.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Resource/uniglyph.txt
usr/lib/perl5/site_perl/5.12.3/PDF/API2/UniWrap.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Util.pm
usr/lib/perl5/site_perl/5.12.3/PDF/API2/Win32.pm
#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/PDF
#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/PDF/API2
#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/PDF/API2/.packlist
#usr/share/man/man3/PDF::API2.3
#usr/share/man/man3/PDF::API2::Annotation.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Array.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Bool.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Dict.3
#usr/share/man/man3/PDF::API2::Basic::PDF::File.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Filter.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Filter::RunLengthDecode.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Name.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Null.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Number.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Objind.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Page.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Pages.3
#usr/share/man/man3/PDF::API2::Basic::PDF::String.3
#usr/share/man/man3/PDF::API2::Basic::PDF::Utils.3
#usr/share/man/man3/PDF::API2::Content.3
#usr/share/man/man3/PDF::API2::Lite.3
#usr/share/man/man3/PDF::API2::NamedDestination.3
#usr/share/man/man3/PDF::API2::Outline.3
#usr/share/man/man3/PDF::API2::Page.3
#usr/share/man/man3/PDF::API2::Resource.3
#usr/share/man/man3/PDF::API2::Resource::BaseFont.3
#usr/share/man/man3/PDF::API2::Resource::CIDFont.3
#usr/share/man/man3/PDF::API2::Resource::CIDFont::CJKFont.3
#usr/share/man/man3/PDF::API2::Resource::CIDFont::TrueType.3
#usr/share/man/man3/PDF::API2::Resource::ColorSpace.3
#usr/share/man/man3/PDF::API2::Resource::ColorSpace::Indexed::ACTFile.3
#usr/share/man/man3/PDF::API2::Resource::ColorSpace::Separation.3
#usr/share/man/man3/PDF::API2::Resource::ExtGState.3
#usr/share/man/man3/PDF::API2::Resource::Font.3
#usr/share/man/man3/PDF::API2::Resource::Font::BdFont.3
#usr/share/man/man3/PDF::API2::Resource::Font::CoreFont.3
#usr/share/man/man3/PDF::API2::Resource::Font::SynFont.3
#usr/share/man/man3/PDF::API2::Resource::UniFont.3
#usr/share/man/man3/PDF::API2::Resource::XObject.3
#usr/share/man/man3/PDF::API2::Resource::XObject::Form.3
#usr/share/man/man3/PDF::API2::Resource::XObject::Form::BarCode.3
#usr/share/man/man3/PDF::API2::Resource::XObject::Form::BarCode::code128.3
#usr/share/man/man3/PDF::API2::Resource::XObject::Image.3
#usr/share/man/man3/PDF::API2::Resource::XObject::Image::TIFF.3
#usr/share/man/man3/PDF::API2::Util.3

View File

@@ -0,0 +1,13 @@
etc/fcron.hourly/squid-accounting
var/log/accounting.log
srv/web/ipfire/cgi-bin/accounting.cgi
srv/web/ipfire/html/accounting/logo
usr/local/bin/acct.pl
var/ipfire/accounting
var/ipfire/accounting/dbinstall.pl
var/ipfire/accounting/bill
var/ipfire/accounting/acct-lib.pl
var/ipfire/addon-lang/acct.de.pl
var/ipfire/addon-lang/acct.en.pl
var/ipfire/menu.d/EX-squid-accounting.menu
var/ipfire/backup/addons/includes/squid-accounting

View File

@@ -598,6 +598,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy cache-digest
WARNING: untranslated string: advproxy errmsg cache
WARNING: untranslated string: advproxy errmsg invalid upstream proxy
@@ -867,6 +868,12 @@ WARNING: untranslated string: last
WARNING: untranslated string: least preferred
WARNING: untranslated string: lifetime
WARNING: untranslated string: mac filter
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: maximum
WARNING: untranslated string: messages
WARNING: untranslated string: minimum

View File

@@ -608,6 +608,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy cache-digest
WARNING: untranslated string: advproxy errmsg cache
WARNING: untranslated string: advproxy errmsg invalid upstream proxy
@@ -878,6 +879,12 @@ WARNING: untranslated string: last
WARNING: untranslated string: least preferred
WARNING: untranslated string: lifetime
WARNING: untranslated string: mac filter
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: maximum
WARNING: untranslated string: messages
WARNING: untranslated string: minimum

View File

@@ -664,6 +664,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy group access control
WARNING: untranslated string: advproxy group required
WARNING: untranslated string: atm device
@@ -688,6 +689,12 @@ WARNING: untranslated string: gen dh
WARNING: untranslated string: generate dh key
WARNING: untranslated string: imei
WARNING: untranslated string: imsi
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: messages
WARNING: untranslated string: model
WARNING: untranslated string: modem hardware details

View File

@@ -598,6 +598,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy cache-digest
WARNING: untranslated string: advproxy errmsg cache
WARNING: untranslated string: advproxy errmsg invalid upstream proxy
@@ -867,6 +868,12 @@ WARNING: untranslated string: last
WARNING: untranslated string: least preferred
WARNING: untranslated string: lifetime
WARNING: untranslated string: mac filter
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: maximum
WARNING: untranslated string: messages
WARNING: untranslated string: minimum

View File

@@ -601,6 +601,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy cache-digest
WARNING: untranslated string: advproxy errmsg cache
WARNING: untranslated string: advproxy errmsg invalid upstream proxy
@@ -863,6 +864,12 @@ WARNING: untranslated string: last
WARNING: untranslated string: least preferred
WARNING: untranslated string: lifetime
WARNING: untranslated string: mac filter
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: maximum
WARNING: untranslated string: messages
WARNING: untranslated string: minimum

View File

@@ -667,6 +667,7 @@ WARNING: untranslated string: administrator password
WARNING: untranslated string: administrator username
WARNING: untranslated string: advproxy AUTH method ntlm
WARNING: untranslated string: advproxy AUTH method ntlm auth
WARNING: untranslated string: advproxy basic authentication
WARNING: untranslated string: advproxy group access control
WARNING: untranslated string: advproxy group required
WARNING: untranslated string: bytes
@@ -688,6 +689,12 @@ WARNING: untranslated string: gen dh
WARNING: untranslated string: generate dh key
WARNING: untranslated string: imei
WARNING: untranslated string: imsi
WARNING: untranslated string: masquerade blue
WARNING: untranslated string: masquerade green
WARNING: untranslated string: masquerade orange
WARNING: untranslated string: masquerading
WARNING: untranslated string: masquerading disabled
WARNING: untranslated string: masquerading enabled
WARNING: untranslated string: messages
WARNING: untranslated string: model
WARNING: untranslated string: modem hardware details

View File

@@ -19,6 +19,7 @@
< adsl settings
< advproxy AUTH method ntlm
< advproxy AUTH method ntlm auth
< advproxy basic authentication
< advproxy cache-digest
< advproxy errmsg cache
< advproxy errmsg invalid upstream proxy
@@ -341,6 +342,12 @@
< least preferred
< lifetime
< mac filter
< masquerade blue
< masquerade green
< masquerade orange
< masquerading
< masquerading disabled
< masquerading enabled
< maximum
< MB read
< MB written
@@ -560,6 +567,7 @@
< adsl settings
< advproxy AUTH method ntlm
< advproxy AUTH method ntlm auth
< advproxy basic authentication
< advproxy cache-digest
< advproxy errmsg cache
< advproxy errmsg invalid upstream proxy
@@ -882,6 +890,12 @@
< least preferred
< lifetime
< mac filter
< masquerade blue
< masquerade green
< masquerade orange
< masquerading
< masquerading disabled
< masquerading enabled
< maximum
< MB read
< MB written
@@ -1094,6 +1108,7 @@
< adsl settings
< advproxy AUTH method ntlm
< advproxy AUTH method ntlm auth
< advproxy basic authentication
< advproxy cache-digest
< advproxy errmsg cache
< advproxy errmsg invalid upstream proxy
@@ -1407,6 +1422,12 @@
< least preferred
< lifetime
< mac filter
< masquerade blue
< masquerade green
< masquerade orange
< masquerading
< masquerading disabled
< masquerading enabled
< maximum
< MB read
< MB written
@@ -1604,6 +1625,7 @@
< adsl settings
< advproxy AUTH method ntlm
< advproxy AUTH method ntlm auth
< advproxy basic authentication
< advproxy cache-digest
< advproxy errmsg cache
< advproxy errmsg invalid upstream proxy
@@ -1923,6 +1945,12 @@
< least preferred
< lifetime
< mac filter
< masquerade blue
< masquerade green
< masquerade orange
< masquerading
< masquerading disabled
< masquerading enabled
< maximum
< MB read
< MB written

View File

@@ -89,7 +89,6 @@ close (FILE);
# Save General Settings.
#
if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
# Open /var/ipfire/ddns/settings for writing.
open(FILE, ">$settingsfile") or die "Unable to open $settingsfile.";
@@ -104,9 +103,6 @@ if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
# Close file after writing.
close(FILE);
# Unset given CGI parmas.
undef %settings;
# Update ddns config file.
&GenerateDDNSConfigFile();
}
@@ -115,7 +111,6 @@ if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
# Toggle enable/disable field. Field is in second position
#
if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) {
# Open /var/ipfire/ddns/config for writing.
open(FILE, ">$datafile") or die "Unable to open $datafile.";
@@ -127,23 +122,19 @@ if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) {
# Read file line by line.
foreach my $line (@current) {
# Remove newlines.
chomp($line);
if ($settings{'ID'} eq $id) {
# Splitt lines (splitting element is a single ",") and save values into temp array.
@temp = split(/\,/,$line);
# Check if we want to toggle ENABLED or WILDCARDS.
if ($settings{'ENABLED'} ne '') {
# Update ENABLED.
print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$settings{'ENABLED'}\n";
}
} else {
# Print unmodified line.
print FILE "$line\n";
}
@@ -151,13 +142,11 @@ if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) {
# Increase $id.
$id++;
}
undef $settings{'ID'};
# Close file after writing.
close(FILE);
# Unset given CGI params.
undef %settings;
# Write out logging notice.
&General::log($Lang::tr{'ddns hostname modified'});
@@ -169,7 +158,6 @@ if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) {
# Add new accounts, or edit existing ones.
#
if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::tr{'update'})) {
# Check if a hostname has been given.
if ($settings{'HOSTNAME'} eq '') {
$errormessage = $Lang::tr{'hostname not set'};
@@ -187,19 +175,23 @@ if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::
# Check if a password has been typed in.
# freedns.afraid.org does not require this field.
if (($settings{'PASSWORD'} eq '') && ($settings{'SERVICE'} ne 'freedns.afraid.org')) {
if (($settings{'PASSWORD'} eq '') && ($settings{'SERVICE'} ne 'freedns.afraid.org') && ($settings{'SERVICE'} ne 'regfish.com')) {
$errormessage = $Lang::tr{'password not set'};
}
# Go furter if there was no error.
if ( ! $errormessage) {
if (!$errormessage) {
# Splitt hostname field into 2 parts for storrage.
my($hostname, $domain) = split(/\./, $settings{'HOSTNAME'}, 2);
# Handle enabled checkbox. When the checkbox is selected a "on" will be returned,
# if the checkbox is not checked nothing is returned in this case we set the value to "off".
if ($settings{'ENABLED'} ne 'on') {
$settings{'ENABLED'} = 'off';
}
# Handle adding new accounts.
if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
# Open /var/ipfire/ddns/config for writing.
open(FILE, ">>$datafile") or die "Unable to open $datafile.";
@@ -215,11 +207,8 @@ if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::
# Write out notice to logfile.
&General::log($Lang::tr{'ddns hostname added'});
# Update ddns config file.
# Handle account edditing.
} elsif ($settings{'ACTION'} eq $Lang::tr{'update'}) {
# Open /var/ipfire/ddns/config for writing.
open(FILE, ">$datafile") or die "Unable to open $datafile.";
@@ -230,7 +219,6 @@ if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::
# Read file line by line.
foreach my $line (@current) {
if ($settings{'ID'} eq $id) {
print FILE "$settings{'SERVICE'},$hostname,$domain,$settings{'PROXY'},$settings{'WILDCARDS'},$settings{'LOGIN'},$settings{'PASSWORD'},$settings{'ENABLED'}\n";
} else {
@@ -247,9 +235,7 @@ if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::
# Write out notice to logfile.
&General::log($Lang::tr{'ddns hostname modified'});
}
# Unset given CGI params.
undef %settings;
undef $settings{'ID'};
# Update ddns config file.
&GenerateDDNSConfigFile();
@@ -260,7 +246,6 @@ if (($settings{'ACTION'} eq $Lang::tr{'add'}) || ($settings{'ACTION'} eq $Lang::
# Remove existing accounts.
#
if ($settings{'ACTION'} eq $Lang::tr{'remove'}) {
# Open /var/ipfire/ddns/config for writing.
open(FILE, ">$datafile") or die "Unable to open $datafile.";
@@ -271,7 +256,6 @@ if ($settings{'ACTION'} eq $Lang::tr{'remove'}) {
# Read file line by line.
foreach my $line (@current) {
# Write back every line, except the one we want to drop
# (identified by the ID)
unless ($settings{'ID'} eq $id) {
@@ -281,13 +265,11 @@ if ($settings{'ACTION'} eq $Lang::tr{'remove'}) {
# Increase id.
$id++;
}
undef $settings{'ID'};
# Close file after writing.
close(FILE);
# Unset given CGI params.
undef %settings;
# Write out notice to logfile.
&General::log($Lang::tr{'ddns hostname removed'});
@@ -299,15 +281,12 @@ if ($settings{'ACTION'} eq $Lang::tr{'remove'}) {
# Read items for editing.
#
if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
my $id = 0;
my @temp;
# Read file line by line.
foreach my $line (@current) {
if ($settings{'ID'} eq $id) {
# Remove newlines.
chomp($line);
@@ -331,10 +310,12 @@ if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
$settings{'PASSWORD'} = $temp[6];
$settings{'ENABLED'} = $temp[7];
}
# Increase $id.
$id++;
# Increase $id.
$id++;
}
&GenerateDDNSConfigFile();
}
#
@@ -347,9 +328,10 @@ if ($settings{'ACTION'} eq $Lang::tr{'instant update'}) {
#
# Set default values.
#
if (! $settings{'ACTION'}) {
if (!$settings{'ACTION'}) {
$settings{'SERVICE'} = 'dyndns.org';
$settings{'ENABLED'} = 'on';
$settings{'ID'} = '';
}
&Header::openpage($Lang::tr{'dynamic dns'}, 1, '');
@@ -363,7 +345,9 @@ $checked{'BEHINDROUTER'}{'RED_IP'} = '';
$checked{'BEHINDROUTER'}{'FETCH_IP'} = '';
$checked{'BEHINDROUTER'}{$settings{'BEHINDROUTER'}} = "checked='checked'";
$checked{'ENABLED'}{'on'} = ($settings{'ENABLED'} eq '' ) ? '' : "checked='checked'";
$checked{'ENABLED'}{'on'} = '';
$checked{'ENABLED'}{'off'} = '';
$checked{'ENABLED'}{$settings{'ENABLED'}} = "checked='checked'";
# Show box for errormessages..
if ($errormessage) {
@@ -413,18 +397,15 @@ my $buttontext = $Lang::tr{'add'};
# Change buttontext and headline if we edit an account.
if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
# Rename button and print headline for updating.
$buttontext = $Lang::tr{'update'};
&Header::openbox('100%', 'left', $Lang::tr{'edit an existing host'});
} else {
# Otherwise use default button text and show headline for adding a new account.
&Header::openbox('100%', 'left', $Lang::tr{'add a host'});
}
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='ID' value='$settings{'ID'}' />
<table width='100%'>
@@ -440,7 +421,6 @@ END
# Loop to print the providerlist.
foreach my $provider (@providers) {
# Check if the current provider needs to be selected.
if ($provider eq $settings{'SERVICE'}) {
$selected = 'selected';
@@ -460,7 +440,7 @@ print <<END
<tr>
<td class='base'>$Lang::tr{'enabled'}</td>
<td><input type='checkbox' name='ENABLED' value='on' $checked{'ENABLED'}{'on'} /></td>
<td><input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>
<td class='base'>$Lang::tr{'username'}</td>
<td><input type='text' name='LOGIN' value='$settings{'LOGIN'}' /></td>
</tr>
@@ -516,17 +496,32 @@ END
chomp(@current);
my @temp = split(/\,/,$line);
# Handle hostname details. Only connect the values with a dott if both are available.
my $hostname="";
if (($temp[1]) && ($temp[2])) {
$hostname="$temp[1].$temp[2]";
} else {
$hostname="$temp[1]";
}
# Generate value for enable/disable checkbox.
my $sync = "<font color='blue'>";
my $sync = '';
my $gif = '';
my $gdesc = '';
if ($temp[7] eq "on") {
$gif = 'on.gif';
$gdesc = $Lang::tr{'click to disable'};
$sync = (&General::DyndnsServiceSync ($ip,$temp[1], $temp[2]) ? "<font color='green'>": "<font color='red'>") ;
# Check if the given hostname is a FQDN before doing a nslookup.
if (&General::validfqdn($hostname)) {
$sync = (&General::DyndnsServiceSync ($ip,$temp[1], $temp[2]) ? "<font color='green'>": "<font color='red'>") ;
}
$toggle_enabled = 'off';
} else {
$sync = "<font color='blue'>";
$gif = 'off.gif';
$gdesc = $Lang::tr{'click to enable'};
$toggle_enabled = 'on';
@@ -648,6 +643,7 @@ sub GenerateDDNSConfigFile {
while (<SETTINGS>) {
my $line = $_;
chomp($line);
# Generate array based on the line content (seperator is a single or multiple space's)
my @settings = split(/,/, $line);
@@ -657,7 +653,7 @@ sub GenerateDDNSConfigFile {
next unless ($provider ~~ @providers);
# Skip disabled entries.
next if ($enabled eq "off");
next unless ($enabled eq "on");
# Handle hostname details. Only connect the values with a dott if both are available.
if (($hostname) && ($domain)) {
@@ -674,8 +670,8 @@ sub GenerateDDNSConfigFile {
if ($provider ~~ ["dns.lightningwirelabs.com", "entrydns.net", "regfish.com"] && $username eq "token") {
$use_token = 1;
# Handle token auth for freedns.afraid.org.
} elsif ($provider eq "freedns.afraid.org" && $password eq "") {
# Handle token auth for freedns.afraid.org and regfish.com.
} elsif ($provider ~~ ["freedns.afraid.org", "regfish.com"] && $password eq "") {
$use_token = 1;
$password = $username;

View File

@@ -263,11 +263,11 @@ if (-e "/etc/snort/snort.conf") {
####################### End added for snort rules control #################################
if ($snortsettings{'RULES'} eq 'subscripted') {
$url=" http://www.snort.org/sub-rules/snortrules-snapshot-2961.tar.gz/$snortsettings{'OINKCODE'}";
$url=" https://www.snort.org/rules/snortrules-snapshot-2961.tar.gz?oinkcode=$snortsettings{'OINKCODE'}";
} elsif ($snortsettings{'RULES'} eq 'registered') {
$url=" http://www.snort.org/reg-rules/snortrules-snapshot-2960.tar.gz/$snortsettings{'OINKCODE'}";
$url=" https://www.snort.org/rules/snortrules-snapshot-2961.tar.gz?oinkcode=$snortsettings{'OINKCODE'}";
} elsif ($snortsettings{'RULES'} eq 'community') {
$url=" http://s3.amazonaws.com/snort-org/www/rules/community/community-rules.tar.gz";
$url=" https://www.snort.org/rules/community";
} else {
$url="http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz";
}

View File

@@ -70,6 +70,17 @@ if ($errormessage) {
&Header::closebox();
}
# Set new defaults
if (!$settings{'MASQUERADE_GREEN'}) {
$settings{'MASQUERADE_GREEN'} = 'on';
}
if (!$settings{'MASQUERADE_ORANGE'}) {
$settings{'MASQUERADE_ORANGE'} = 'on';
}
if (!$settings{'MASQUERADE_BLUE'}) {
$settings{'MASQUERADE_BLUE'} = 'on';
}
$checked{'DROPNEWNOTSYN'}{'off'} = '';
$checked{'DROPNEWNOTSYN'}{'on'} = '';
$checked{'DROPNEWNOTSYN'}{$settings{'DROPNEWNOTSYN'}} = "checked='checked'";
@@ -112,12 +123,69 @@ $checked{'SHOWDROPDOWN'}{$settings{'SHOWDROPDOWN'}} = "checked='checked'";
$selected{'FWPOLICY'}{$settings{'FWPOLICY'}}= 'selected';
$selected{'FWPOLICY1'}{$settings{'FWPOLICY1'}}= 'selected';
$selected{'FWPOLICY2'}{$settings{'FWPOLICY2'}}= 'selected';
$selected{'MASQUERADE_GREEN'}{'off'} = '';
$selected{'MASQUERADE_GREEN'}{'on'} = '';
$selected{'MASQUERADE_GREEN'}{$settings{'MASQUERADE_GREEN'}} = 'selected="selected"';
$selected{'MASQUERADE_ORANGE'}{'off'} = '';
$selected{'MASQUERADE_ORANGE'}{'on'} = '';
$selected{'MASQUERADE_ORANGE'}{$settings{'MASQUERADE_ORANGE'}} = 'selected="selected"';
$selected{'MASQUERADE_BLUE'}{'off'} = '';
$selected{'MASQUERADE_BLUE'}{'on'} = '';
$selected{'MASQUERADE_BLUE'}{$settings{'MASQUERADE_BLUE'}} = 'selected="selected"';
&Header::openbox('100%', 'center',);
print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
print <<END
print <<END;
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<table width='95%' cellspacing='0'>
<tr bgcolor='$color{'color20'}'>
<td colspan='2' align='left'><b>$Lang::tr{'masquerading'}</b></td>
</tr>
<tr>
<td align='left' width='60%'>$Lang::tr{'masquerade green'}</td>
<td>
<select name='MASQUERADE_GREEN'>
<option value='on' $selected{'MASQUERADE_GREEN'}{'on'}>$Lang::tr{'masquerading enabled'}</option>
<option value='off' $selected{'MASQUERADE_GREEN'}{'off'}>$Lang::tr{'masquerading disabled'}</option>
</select>
</td>
</tr>
END
if (&Header::orange_used()) {
print <<END;
<tr>
<td align='left' width='60%'>$Lang::tr{'masquerade orange'}</td>
<td>
<select name='MASQUERADE_ORANGE'>
<option value='on' $selected{'MASQUERADE_ORANGE'}{'on'}>$Lang::tr{'masquerading enabled'}</option>
<option value='off' $selected{'MASQUERADE_ORANGE'}{'off'}>$Lang::tr{'masquerading disabled'}</option>
</select>
</td>
</tr>
END
}
if (&Header::blue_used()) {
print <<END;
<tr>
<td align='left' width='60%'>$Lang::tr{'masquerade blue'}</td>
<td>
<select name='MASQUERADE_BLUE'>
<option value='on' $selected{'MASQUERADE_BLUE'}{'on'}>$Lang::tr{'masquerading enabled'}</option>
<option value='off' $selected{'MASQUERADE_BLUE'}{'off'}>$Lang::tr{'masquerading disabled'}</option>
</select>
</td>
</tr>
END
}
print <<END
</table>
<br>
<table width='95%' cellspacing='0'>
<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'fw logging'}</b></td></tr>
<tr><td align='left' width='60%'>$Lang::tr{'drop newnotsyn'}</td><td align='left'>on <input type='radio' name='DROPNEWNOTSYN' value='on' $checked{'DROPNEWNOTSYN'}{'on'} />/

View File

@@ -3968,10 +3968,8 @@ if ($cgiparams{'TYPE'} eq 'net') {
$errormessage = $Lang::tr{'name too long'};
goto VPNCONF_ERROR;
}
if ($cgiparams{'CERT_NAME'} !~ /^[a-zA-Z0-9 ,\.\-_]+$/) {
if ($cgiparams{'CERT_NAME'} eq '' || $cgiparams{'CERT_NAME'} !~ /^[a-zA-Z0-9 ,\.\-_]+$/) {
$errormessage = $Lang::tr{'invalid input for name'};
unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
goto VPNCONF_ERROR;
}
if ($cgiparams{'CERT_EMAIL'} ne '' && (! &General::validemail($cgiparams{'CERT_EMAIL'}))) {

View File

@@ -267,6 +267,7 @@ $proxysettings{'LDAP_BINDDN_USER'} = '';
$proxysettings{'LDAP_BINDDN_PASS'} = '';
$proxysettings{'LDAP_GROUP'} = '';
$proxysettings{'NTLM_AUTH_GROUP'} = '';
$proxysettings{'NTLM_AUTH_BASIC'} = 'off';
$proxysettings{'NTLM_DOMAIN'} = '';
$proxysettings{'NTLM_PDC'} = '';
$proxysettings{'NTLM_BDC'} = '';
@@ -895,6 +896,10 @@ $checked{'NTLM_USER_ACL'}{'positive'} = '';
$checked{'NTLM_USER_ACL'}{'negative'} = '';
$checked{'NTLM_USER_ACL'}{$proxysettings{'NTLM_USER_ACL'}} = "checked='checked'";
$checked{'NTLM_AUTH_BASIC'}{'on'} = '';
$checked{'NTLM_AUTH_BASIC'}{'off'} = '';
$checked{'NTLM_AUTH_BASIC'}{$proxysettings{'NTLM_AUTH_BASIC'}} = "checked='checked'";
$checked{'RADIUS_ENABLE_ACL'}{'off'} = '';
$checked{'RADIUS_ENABLE_ACL'}{'on'} = '';
$checked{'RADIUS_ENABLE_ACL'}{$proxysettings{'RADIUS_ENABLE_ACL'}} = "checked='checked'";
@@ -2002,6 +2007,14 @@ END
if ($proxysettings{'AUTH_METHOD'} eq 'ntlm-auth') {
print <<END;
<hr size ='1'>
<table width='100%'>
<td width='20%' class='base'>$Lang::tr{'advproxy basic authentication'}:</td>
<td width='40%'><input type='checkbox' name='NTLM_AUTH_BASIC' $checked{'NTLM_AUTH_BASIC'}{'on'} /></td>
<td colspan='2'>&nbsp;</td>
</table>
<hr size='1' />
<table width='100%'>
<tr>
<td colspan='4'><b>$Lang::tr{'advproxy group access control'}</b></td>
@@ -3376,7 +3389,22 @@ END
}
print FILE "\n";
print FILE "auth_param ntlm children $proxysettings{'AUTH_CHILDREN'}\n";
print FILE "auth_param ntlm children $proxysettings{'AUTH_CHILDREN'}\n\n";
# BASIC authentication
if ($proxysettings{'NTLM_AUTH_BASIC'} eq "on") {
print FILE "auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic";
if ($proxysettings{'NTLM_AUTH_GROUP'}) {
my $ntlm_auth_group = $proxysettings{'NTLM_AUTH_GROUP'};
$ntlm_auth_group =~ s/\\/\+/;
print FILE " --require-membership-of=\"$ntlm_auth_group\"";
}
print FILE "\n";
print FILE "auth_param basic children 10\n";
print FILE "auth_param basic realm IPFire Web Proxy Server\n";
print FILE "auth_param basic credentialsttl 2 hours\n\n";
}
}
if ($proxysettings{'AUTH_METHOD'} eq 'radius')

View File

@@ -196,6 +196,7 @@
'advproxy back to main page' => 'Zurück zur Hauptseite',
'advproxy banned ip clients' => 'Gesperrte IP-Adressen (eine pro Zeile)',
'advproxy banned mac clients' => 'Gesperrte MAC-Adressen (eine pro Zeile)',
'advproxy basic authentication' => 'Erlaube HTTP-Basic-Authentifizierung',
'advproxy cache management' => 'Cacheverwaltung',
'advproxy cache replacement policy' => 'Cache Ersetzungsrichtlinie',
'advproxy cache-digest' => 'Cache-Digest-Erstellung aktivieren',
@@ -1438,6 +1439,12 @@
'map to guest' => 'Map to Guest',
'march' => 'März',
'marked' => 'Markiert',
'masquerade blue' => 'NAT auf BLAU',
'masquerade green' => 'NAT auf GREEN',
'masquerade orange' => 'NAT auf ORANGE',
'masquerading' => 'Masquerading/NAT',
'masquerading disabled' => 'NAT ausgeschaltet',
'masquerading enabled' => 'NAT eingeschaltet',
'max bandwith' => 'Maximale Bandbreite',
'max incoming size' => 'Max. eingehende Größe (kB):',
'max lease time' => 'Max. Haltezeit in min:',

View File

@@ -196,6 +196,7 @@
'advproxy back to main page' => 'Back to main page',
'advproxy banned ip clients' => 'Banned IP addresses (one per line)',
'advproxy banned mac clients' => 'Banned MAC addresses (one per line)',
'advproxy basic authentication' => 'Allow HTTP Basic authentication',
'advproxy cache management' => 'Cache management',
'advproxy cache replacement policy' => 'Cache replacement policy',
'advproxy cache-digest' => 'Enable Cache-Digest Generation',
@@ -1468,6 +1469,12 @@
'map to guest' => 'Map to Guest',
'march' => 'March',
'marked' => 'Marked',
'masquerade blue' => 'Masquerade BLUE',
'masquerade green' => 'Masquerade GREEN',
'masquerade orange' => 'Masquerade ORANGE',
'masquerading' => 'Masquerading',
'masquerading disabled' => 'Masquerading disabled',
'masquerading enabled' => 'Masquerading enabled',
'max bandwith' => 'Maximum bandwith',
'max incoming size' => 'Max incoming size (KB):',
'max lease time' => 'Max lease time (mins):',

79
lfs/batctl Normal file
View File

@@ -0,0 +1,79 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
# #
# 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 = 2014.3.0
THISAPP = batctl-$(VER)
DL_FILE = $(THISAPP).tar.gz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
###############################################################################
# Top-level Rules
###############################################################################
objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = 7d2b8c129424c014d020c4b1a2add31b
install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
dist:
@$(PAK)
###############################################################################
# Downloading, checking, md5sum
###############################################################################
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
@$(CHECK)
$(patsubst %,$(DIR_DL)/%,$(objects)) :
@$(LOAD)
$(subst %,%_MD5,$(objects)) :
@$(MD5)
###############################################################################
# Installation Details
###############################################################################
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install PREFIX=/usr
@rm -rf $(DIR_APP)
@$(POSTBUILD)

View File

@@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/check_mk-${VER}
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = check_mk_agent
PAK_VER = 3
PAK_VER = 4
DEPS = ""

View File

@@ -24,7 +24,7 @@
include Config
VER = 003
VER = 004
THISAPP = ddns-$(VER)
DL_FILE = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = 9ff8ab5fa716859b51f63b0a241f1337
$(DL_FILE)_MD5 = ff77cb72d0cb06c73bde70419b15bae8
install : $(TARGET)
@@ -71,8 +71,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ddns-003-Add-a-program-prefix-to-syslog-messages.patch
cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh
cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire
cd $(DIR_APP) && make $(MAKETUNING)

View File

@@ -187,7 +187,6 @@ $(TARGET) :
/etc/rc.d/init.d/networking/red.up/24-RS-qos
ln -sf ../../squid /etc/rc.d/init.d/networking/red.up/27-RS-squid
ln -sf ../../dnsmasq /etc/rc.d/init.d/networking/red.down/05-RS-dnsmasq
ln -sf ../../firewall /etc/rc.d/init.d/networking/red.down/20-RL-firewall
for i in green blue orange; do \
ln -sf any /etc/rc.d/init.d/networking/$$i; \

80
lfs/libnl-3 Normal file
View File

@@ -0,0 +1,80 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
# #
# 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 = 3.2.25
THISAPP = libnl-$(VER)
DL_FILE = $(THISAPP).tar.gz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
###############################################################################
# Top-level Rules
###############################################################################
objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = 03f74d0cd5037cadc8cdfa313bbd195c
install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
dist:
@$(PAK)
###############################################################################
# Downloading, checking, md5sum
###############################################################################
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
@$(CHECK)
$(patsubst %,$(DIR_DL)/%,$(objects)) :
@$(LOAD)
$(subst %,%_MD5,$(objects)) :
@$(MD5)
###############################################################################
# Installation Details
###############################################################################
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
@rm -rf $(DIR_APP)
@$(POSTBUILD)

View File

@@ -24,7 +24,7 @@
include Config
VER = 2.08
VER = 2.06
THISAPP = lzo-$(VER)
DL_FILE = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = fcec64c26a0f4f4901468f360029678f
$(DL_FILE)_MD5 = 95380bd4081f85ef08c5209f4107e9f8
install : $(TARGET)
@@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/lzo-2.06-CVE-2014-4607.patch
cd $(DIR_APP) && ./configure --prefix=/usr --enable-shared
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install

View File

@@ -24,7 +24,7 @@
include Config
VER = 1.0.1h
VER = 1.0.1i
THISAPP = openssl-$(VER)
DL_FILE = $(THISAPP).tar.gz
@@ -51,7 +51,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = 8d6d684a9430d5cc98a62a5d8fbda8cf
$(DL_FILE)_MD5 = c8dc151a671b9b92ff3e4c118b174972
install : $(TARGET)

82
lfs/perl-PDF-API2 Normal file
View File

@@ -0,0 +1,82 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2011 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 = 2.020
THISAPP = PDF-API2-$(VER)
DL_FILE = $(THISAPP).tar.gz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = perl-PDF-API2
PAK_VER = 1
###############################################################################
# Top-level Rules
###############################################################################
objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = c0d20bfd03883b5b2b2a7fd47455249a
install : $(TARGET)
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
download :$(patsubst %,$(DIR_DL)/%,$(objects))
md5 : $(subst %,%_MD5,$(objects))
dist:
@$(PAK)
###############################################################################
# Downloading, checking, md5sum
###############################################################################
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
@$(CHECK)
$(patsubst %,$(DIR_DL)/%,$(objects)) :
@$(LOAD)
$(subst %,%_MD5,$(objects)) :
@$(MD5)
###############################################################################
# Installation Details
###############################################################################
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && perl Makefile.PL
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
@rm -rf $(DIR_APP)
@$(POSTBUILD)

71
lfs/squid-accounting Normal file
View File

@@ -0,0 +1,71 @@
###############################################################################
# IPFire.org - An Open Source Firewall Solution #
# Copyright (C) - IPFire Development Team <info@ipfire.org> #
###############################################################################
###############################################################################
# Definitions
###############################################################################
include Config
VER = 1.0.1
THISAPP = squid-accounting-$(VER)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = squid-accounting
PAK_VER = 2
DEPS = "perl-DBI perl-DBD-SQLite perl-File-ReadBackwards perl-PDF-API2 sendEmail"
###############################################################################
# Top-level Rules
###############################################################################
install : $(TARGET)
check :
download :
md5 :
dist:
@$(PAK)
###############################################################################
# Installation Details
###############################################################################
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && mkdir $(DIR_APP) && cp -R $(DIR_SRC)/src/squid-accounting/ $(DIR_APP)
cd $(DIR_APP)
mkdir -p /var/ipfire/accounting/bill
mkdir -p /srv/web/ipfire/html/accounting/logo
#Touch Logfile
touch /var/log/accounting.log
chmod 777 /var/log/accounting.log
#Set permissions for logo and graphs
chmod -R 777 /srv/web/ipfire/html/accounting
install -v -m 755 $(DIR_APP)/squid-accounting/accounting.cgi /srv/web/ipfire/cgi-bin/
install -v -m 755 $(DIR_APP)/squid-accounting/acct.pl /usr/local/bin/
install -v -m 644 $(DIR_APP)/squid-accounting/acct-lib.pl /var/ipfire/accounting/
install -v -m 655 $(DIR_APP)/squid-accounting/acct.de.pl /var/ipfire/addon-lang/
install -v -m 655 $(DIR_APP)/squid-accounting/acct.en.pl /var/ipfire/addon-lang/
install -v -m 655 $(DIR_APP)/squid-accounting/EX-squid-accounting.menu /var/ipfire/menu.d/
install -v -m 755 $(DIR_APP)/squid-accounting/dbinstall.pl /var/ipfire/accounting/
install -v -m 644 $(DIR_APP)/squid-accounting/config/backup/includes/squid-accounting \
/var/ipfire/backup/addons/includes/squid-accounting
#activate hourly logging of proxy logfile
ln -sf /usr/local/bin/acct.pl /etc/fcron.hourly/squid-accounting
chown -R nobody.nobody /var/ipfire/accounting
@rm -rf $(DIR_APP)
@$(POSTBUILD)

View File

@@ -24,7 +24,7 @@
include Config
VER = 0.2.4.22
VER = 0.2.4.23
THISAPP = tor-$(VER)
DL_FILE = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = tor
PAK_VER = 7
PAK_VER = 8
DEPS = "libevent2"
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
$(DL_FILE)_MD5 = 5a7eee0d9df87233255d78b25c6f8270
$(DL_FILE)_MD5 = 9e39928e310612c3bffee727f554c63f
install : $(TARGET)

View File

@@ -25,8 +25,8 @@
NAME="IPFire" # Software name
SNAME="ipfire" # Short name
VERSION="2.15" # Version number
CORE="80" # Core Level (Filename)
PAKFIRE_CORE="80" # Core Level (PAKFIRE)
CORE="81" # Core Level (Filename)
PAKFIRE_CORE="81" # Core Level (PAKFIRE)
GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch
SLOGAN="www.ipfire.org" # Software slogan
CONFIG_ROOT=/var/ipfire # Configuration rootdir
@@ -478,6 +478,7 @@ buildipfire() {
ipfiremake fireinfo
ipfiremake libnet
ipfiremake libnl
ipfiremake libnl-3
ipfiremake libidn
ipfiremake nasm
ipfiremake libjpeg
@@ -811,6 +812,9 @@ buildipfire() {
ipfiremake sslscan
ipfiremake owncloud
ipfiremake bacula
ipfiremake batctl
ipfiremake perl-PDF-API2
ipfiremake squid-accounting
}
buildinstaller() {

View File

@@ -277,10 +277,16 @@ iptables_init() {
/usr/sbin/firewall-policy
# Install firewall rules for the red interface.
iptables_red
iptables_red_up
# If red has not been brought up yet, we will
# add the blocking rules for MASQUERADE
if [ ! -e "/var/ipfire/red/active" ]; then
iptables_red_down
fi
}
iptables_red() {
iptables_red_up() {
iptables -F REDINPUT
iptables -F REDFORWARD
iptables -t nat -F REDNAT
@@ -327,16 +333,49 @@ iptables_red() {
# Outgoing masquerading (don't masqerade IPSEC (mark 50))
iptables -t nat -A REDNAT -m mark --mark 50 -o $IFACE -j RETURN
if [ "$IFACE" != "$GREEN_DEV" ]; then
iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
if [ "$IFACE" = "$GREEN_DEV" ]; then
MASQUERADE_GREEN="off"
fi
local NO_MASQ_NETWORKS
if [ "${MASQUERADE_GREEN}" = "off" ]; then
NO_MASQ_NETWORKS="${NO_MASQ_NETWORKS} ${GREEN_NETADDRESS}/${GREEN_NETMASK}"
fi
if [ "${MASQUERADE_BLUE}" = "off" ]; then
NO_MASQ_NETWORKS="${NO_MASQ_NETWORKS} ${BLUE_NETADDRESS}/${BLUE_NETMASK}"
fi
if [ "${MASQUERADE_ORANGE}" = "off" ]; then
NO_MASQ_NETWORKS="${NO_MASQ_NETWORKS} ${ORANGE_NETADDRESS}/${ORANGE_NETMASK}"
fi
local network
for network in ${NO_MASQ_NETWORKS}; do
iptables -t nat -A REDNAT -s "${network}" -o "${IFACE}" -j RETURN
done
# Masquerade everything else
iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
fi
# Reload all rules.
/usr/local/bin/firewallctrl
}
iptables_red_down() {
# Prohibit packets to reach the masquerading rule
# while the wan interface is down - this is required to
# circumvent udp related NAT issues
# http://forum.ipfire.org/index.php?topic=11127.0
iptables -F REDFORWARD
iptables -A REDFORWARD -o $IFACE -j DROP
# Reload all rules.
/usr/local/bin/firewallctrl
}
# See how we were called.
case "$1" in
start)
@@ -367,9 +406,9 @@ case "$1" in
/etc/sysconfig/firewall.local start
fi
;;
reload)
reload|up)
boot_mesg "Reloading firewall"
iptables_red
iptables_red_up
evaluate_retval
# run local firewall configuration, if present
@@ -377,6 +416,11 @@ case "$1" in
/etc/sysconfig/firewall.local reload
fi
;;
down)
boot_mesg "Disabling firewall access to RED"
iptables_red_down
evaluate_retval
;;
restart)
# run local firewall configuration, if present
if [ -x /etc/sysconfig/firewall.local ]; then

View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec /etc/rc.d/init.d/firewall down

View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec /etc/rc.d/init.d/firewall up

View File

@@ -22,6 +22,7 @@
############################################################################
#
. /opt/pakfire/lib/functions.sh
extract_backup_includes
make_backup ${NAME}
remove_files

View File

@@ -0,0 +1,35 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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 IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2009 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
extract_files
restore_backup ${NAME}
#Generate SQLite DB if it does not exist
if [ ! -f /var/ipfire/accounting/acct.db ]; then
perl /var/ipfire/accounting/dbinstall.pl
chmod 644 /var/ipfire/accounting/acct.db
chown nobody.nobody /var/ipfire/accounting/acct.db
fi
rm -f /var/ipfire/accounting/dbinstall.pl
/usr/local/bin/update-lang-cache

View File

@@ -0,0 +1,27 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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 IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2014 IPFire-Team <alexander.marx@ipfire.org> #
# #
############################################################################
. /opt/pakfire/lib/functions.sh
make_backup ${NAME}
remove_files
/usr/local/bin/update-lang-cache

View File

@@ -0,0 +1,26 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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 IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
./uninstall.sh
./install.sh

View File

@@ -1,25 +0,0 @@
From 21fd4b8d26d01d622185ab8de971a9ee934220a3 Mon Sep 17 00:00:00 2001
From: Michael Tremer <michael.tremer@ipfire.org>
Date: Thu, 24 Jul 2014 13:23:36 +0200
Subject: [PATCH] Add a program prefix to syslog messages.
---
src/ddns/__init__.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/ddns/__init__.py b/src/ddns/__init__.py
index 22764e6..6fe3a33 100644
--- a/src/ddns/__init__.py
+++ b/src/ddns/__init__.py
@@ -42,6 +42,8 @@ def setup_logging():
handler = logging.handlers.SysLogHandler(address="/dev/log",
facility=logging.handlers.SysLogHandler.LOG_DAEMON
)
+ formatter = logging.Formatter("ddns[%(process)d]: %(message)s")
+ handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
rootlogger.addHandler(handler)
--
1.9.3

View File

@@ -0,0 +1,245 @@
diff --git a/minilzo/minilzo.c b/minilzo/minilzo.c
index 34ce0f0..ecfdf66 100644
--- a/minilzo/minilzo.c
+++ b/minilzo/minilzo.c
@@ -3547,6 +3547,8 @@ DO_COMPRESS ( const lzo_bytep in , lzo_uint in_len,
#undef TEST_LBO
#undef NEED_IP
#undef NEED_OP
+#undef TEST_IV
+#undef TEST_OV
#undef HAVE_TEST_IP
#undef HAVE_TEST_OP
#undef HAVE_NEED_IP
@@ -3561,6 +3563,7 @@ DO_COMPRESS ( const lzo_bytep in , lzo_uint in_len,
# if (LZO_TEST_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun
+# define TEST_IV(x) if ((x) > (lzo_uint)0 - (511)) goto input_overrun
# endif
#endif
@@ -3572,6 +3575,7 @@ DO_COMPRESS ( const lzo_bytep in , lzo_uint in_len,
# undef TEST_OP
# define NEED_OP(x) \
if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun
+# define TEST_OV(x) if ((x) > (lzo_uint)0 - (511)) goto output_overrun
# endif
#endif
@@ -3602,11 +3606,13 @@ DO_COMPRESS ( const lzo_bytep in , lzo_uint in_len,
# define HAVE_NEED_IP 1
#else
# define NEED_IP(x) ((void) 0)
+# define TEST_IV(x) ((void) 0)
#endif
#if defined(NEED_OP)
# define HAVE_NEED_OP 1
#else
# define NEED_OP(x) ((void) 0)
+# define TEST_OV(x) ((void) 0)
#endif
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
@@ -3687,6 +3693,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
{
t += 255;
ip++;
+ TEST_IV(t);
NEED_IP(1);
}
t += 15 + *ip++;
@@ -3835,6 +3842,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 31 + *ip++;
@@ -3879,6 +3887,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 7 + *ip++;
@@ -4073,6 +4082,8 @@ lookbehind_overrun:
#undef TEST_LBO
#undef NEED_IP
#undef NEED_OP
+#undef TEST_IV
+#undef TEST_OV
#undef HAVE_TEST_IP
#undef HAVE_TEST_OP
#undef HAVE_NEED_IP
@@ -4087,6 +4098,7 @@ lookbehind_overrun:
# if (LZO_TEST_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun
+# define TEST_IV(x) if ((x) > (lzo_uint)0 - (511)) goto input_overrun
# endif
#endif
@@ -4098,6 +4110,7 @@ lookbehind_overrun:
# undef TEST_OP
# define NEED_OP(x) \
if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun
+# define TEST_OV(x) if ((x) > (lzo_uint)0 - (511)) goto output_overrun
# endif
#endif
@@ -4128,11 +4141,13 @@ lookbehind_overrun:
# define HAVE_NEED_IP 1
#else
# define NEED_IP(x) ((void) 0)
+# define TEST_IV(x) ((void) 0)
#endif
#if defined(NEED_OP)
# define HAVE_NEED_OP 1
#else
# define NEED_OP(x) ((void) 0)
+# define TEST_OV(x) ((void) 0)
#endif
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
@@ -4213,6 +4228,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
{
t += 255;
ip++;
+ TEST_IV(t);
NEED_IP(1);
}
t += 15 + *ip++;
@@ -4361,6 +4377,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 31 + *ip++;
@@ -4405,6 +4422,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 7 + *ip++;
diff --git a/src/lzo1_d.ch b/src/lzo1_d.ch
index 40a5bfd..c442d9c 100644
--- a/src/lzo1_d.ch
+++ b/src/lzo1_d.ch
@@ -76,6 +76,8 @@
#undef TEST_LBO
#undef NEED_IP
#undef NEED_OP
+#undef TEST_IV
+#undef TEST_OV
#undef HAVE_TEST_IP
#undef HAVE_TEST_OP
#undef HAVE_NEED_IP
@@ -91,6 +93,7 @@
# if (LZO_TEST_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun
+# define TEST_IV(x) if ((x) > (lzo_uint)0 - (511)) goto input_overrun
# endif
#endif
@@ -102,6 +105,7 @@
# undef TEST_OP /* don't need both of the tests here */
# define NEED_OP(x) \
if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun
+# define TEST_OV(x) if ((x) > (lzo_uint)0 - (511)) goto output_overrun
# endif
#endif
@@ -135,11 +139,13 @@
# define HAVE_NEED_IP 1
#else
# define NEED_IP(x) ((void) 0)
+# define TEST_IV(x) ((void) 0)
#endif
#if defined(NEED_OP)
# define HAVE_NEED_OP 1
#else
# define NEED_OP(x) ((void) 0)
+# define TEST_OV(x) ((void) 0)
#endif
diff --git a/src/lzo1b_d.ch b/src/lzo1b_d.ch
index fe5f361..36b4b6b 100644
--- a/src/lzo1b_d.ch
+++ b/src/lzo1b_d.ch
@@ -187,6 +187,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += (M4_MIN_LEN - M3_MIN_LEN) + *ip++;
diff --git a/src/lzo1f_d.ch b/src/lzo1f_d.ch
index 9e942f5..0c2199e 100644
--- a/src/lzo1f_d.ch
+++ b/src/lzo1f_d.ch
@@ -84,6 +84,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
{
t += 255;
ip++;
+ TEST_IV(t);
NEED_IP(1);
}
t += 31 + *ip++;
@@ -138,6 +139,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 31 + *ip++;
diff --git a/src/lzo1x_d.ch b/src/lzo1x_d.ch
index 49cf326..c804cc7 100644
--- a/src/lzo1x_d.ch
+++ b/src/lzo1x_d.ch
@@ -120,6 +120,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
{
t += 255;
ip++;
+ TEST_IV(t);
NEED_IP(1);
}
t += 15 + *ip++;
@@ -273,6 +274,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 31 + *ip++;
@@ -317,6 +319,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += 7 + *ip++;
diff --git a/src/lzo2a_d.ch b/src/lzo2a_d.ch
index 48e51ca..954f07e 100644
--- a/src/lzo2a_d.ch
+++ b/src/lzo2a_d.ch
@@ -131,6 +131,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += *ip++;

View File

@@ -0,0 +1,5 @@
$sublogs->{'32.proxy'} = {'caption' => $Lang::tr{'acct menu'},
'uri' => '/cgi-bin/accounting.cgi',
'title' => $Lang::tr{'acct menu'},
'enabled' => 1,
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,923 @@
#!/usr/bin/perl
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2014 IPFire Team <alexander.marx@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/>. #
# #
###############################################################################
package ACCT;
use DBI;
use POSIX;
use Time::Local;
use PDF::API2;
use utf8;
use Encode;
use File::Copy;
use File::Temp qw/ tempfile tempdir /;
###############################################################################
my $dbh;
my $dsn="dbi:SQLite:dbname=/var/ipfire/accounting/acct.db";
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
my %mainsettings;
###############################################################################
&General::readhash("/var/ipfire/main/settings", \%mainsettings);
my $uplang=uc($mainsettings{'LANGUAGE'});
#############
# Functions #
#############
sub connectdb {
$dbh = DBI->connect($dsn, "", "",{RaiseError => 1, AutoCommit => 1})or die "ERROR $!";
return $dbh;
}
sub closedb {
$dbh->disconnect();
return $dbh;
}
sub getminmax {
my $min;
my $max;
$dbh=&connectdb;
my $sth = $dbh->prepare('Select min(TIME_RUN),max(TIME_RUN) from ACCT;');
$sth->execute;
while ( my @row = $sth->fetchrow_array ) {
$min=$row[0];
$max=$row[1];
}
$dbh->disconnect();
return ($min,$max);
}
sub cleardbtraf {
&connectdb;
$dbh->do("DELETE FROM ACCT;");
$dbh->do("DELETE FROM ACCT_HIST;");
&closedb;
}
sub cleardb {
&connectdb;
$dbh->do("DELETE FROM ACCT;");
$dbh->do("DELETE FROM ACCT_HIST;");
$dbh->do("DELETE FROM ACCT_ADDR ");
$dbh->do("DELETE FROM BILLINGGRP");
$dbh->do("DELETE FROM BILLINGHOST");
&closedb;
}
sub delbefore {
my $till=$_[0];
&connectdb;
$dbh->do("DELETE FROM ACCT WHERE TIME_RUN < ".$till.";");
$dbh->do("DELETE FROM ACCT_HIST WHERE TIME_RUN < date('".$till."','unixepoch');");
&closedb;
}
sub movedbdata {
$dbh->do("insert into ACCT_HIST select datetime(TIME_RUN,'unixepoch'),NAME,SUM(BYTES) from ACCT where date(TIME_RUN,'unixepoch') < date('now','-2 months') group by NAME,date(TIME_RUN,'unixepoch');");
$dbh->do("DELETE FROM ACCT WHERE datetime(TIME_RUN,'unixepoch') < date('now','-2 months');");
}
sub gethourgraphdata {
my $table=$_[0];
my $from=$_[1];
my $till=$_[2];
my $name=$_[3];
my $res;
$dbh=connectdb;
if ($table eq 'ACCT'){
$res = $dbh->selectall_arrayref( "SELECT TIME_RUN,BYTES FROM ACCT WHERE TIME_RUN BETWEEN ".$from." AND ".$till." AND NAME = '".$name."';");
}else{
$res = $dbh->selectall_arrayref( "SELECT TIME_RUN,BYTES FROM ACCT_HIST WHERE TIME_RUN BETWEEN date(".$from.",'unixepoch') AND date(".$till.",'unixepoch') AND NAME = '".$name."';");
}
return $res;
}
sub getmonthgraphdata {
my $table=$_[0];
my $from=$_[1];
my $till=$_[2];
my $name=$_[3];
my $res;
$dbh=connectdb;
if ($table eq 'ACCT'){
$res = $dbh->selectall_arrayref( "SELECT strftime('%d.%m.%Y',xx.tag),(SELECT SUM(BYTES)/1024/1024 FROM ACCT WHERE date(TIME_RUN,'unixepoch') <= xx.tag and NAME = '".$name."') kum_bytes FROM (SELECT date(TIME_RUN,'unixepoch') tag,SUM(BYTES)/1024/1024 sbytes FROM ACCT WHERE NAME='".$name."' and TIME_RUN between ".$from." and ".$till." GROUP by date(TIME_RUN,'unixepoch')) xx;");
}else{
$res = $dbh->selectall_arrayref( "SELECT TIME_RUN, (SELECT SUM(BYTES)/1024/1024 FROM ACCT_HIST WHERE TIME_RUN <= ah.TIME_RUN and NAME = '".$name."') kum_bytes FROM ACCT_HIST ah WHERE TIME_RUN BETWEEN date(".$from.",'unixepoch') AND date(".$till.",'unixepoch') AND NAME = '".$name."' group by TIME_RUN;");
}
$dbh=closedb;
return $res;
}
sub writeaddr {
my $comp = $_[0];
my $type = $_[1];
my $name1 = $_[2];
my $str = $_[3];
my $nr = $_[4];
my $post = $_[5];
my $city = $_[6];
my $bank = $_[7];
my $iban = $_[8];
my $bic = $_[9];
my $blz = $_[10];
my $kto = $_[11];
my $mail = $_[12];
my $inet = $_[13];
my $hrb = $_[14];
my $ustid = $_[15];
my $tel = $_[16];
my $fax = $_[17];
$dbh=&connectdb;
#COMPANY,TYPE,NAME1,STR,NR,POSTCODE,CITY,BANK,IBAN,BLZ,ACCOUNT,EMAIL,INTERNET,HRB,USTID,TEL,FAX
my $sql = "INSERT INTO ACCT_ADDR (COMPANY,TYPE,NAME1,STR,NR,POSTCODE,CITY,BANK,IBAN,BIC,BLZ,ACCOUNT,EMAIL,INTERNET,HRB,USTID,TEL,FAX) VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
my $sth = $dbh->prepare( $sql );
$sth->execute( $comp,$type,$name1,$str,$nr,$post,$city,$bank,$iban,$bic,$blz,$kto,$mail,$inet,$hrb,$ustid,$tel,$fax );
$dbh=&closedb;
}
sub updateaddr {
my $type = $_[0];
my $comp = $_[1];
my $name1 = $_[2];
my $str = $_[3];
my $nr = $_[4];
my $post = $_[5];
my $city = $_[6];
my $bank = $_[7];
my $iban = $_[8];
my $bic = $_[9];
my $blz = $_[10];
my $kto = $_[11];
my $mail = $_[12];
my $inet = $_[13];
my $hrb = $_[14];
my $ustid = $_[15];
my $tel = $_[16];
my $fax = $_[17];
my $oldname = $_[18];
$dbh=&connectdb;
$dbh->do("UPDATE ACCT_ADDR SET COMPANY=?,TYPE=?,NAME1=?,STR=?,NR=?,POSTCODE=?,CITY=?,BANK=?,IBAN=?,BIC=?,BLZ=?,ACCOUNT=?,EMAIL=?,INTERNET=?,HRB=?,USTID=?,TEL=?,FAX=? WHERE COMPANY=?", undef,$comp,$type,$name1,$str,$nr,$post,$city,$bank,$iban,$bic,$blz,$kto,$mail,$inet,$hrb,$ustid,$tel,$fax,$oldname)or die "Could not UPDATE Address.";
$dbh=&closedb;
}
sub deladdr {
my $comp = $_[0];
$dbh=&connectdb;
$dbh->do("DELETE FROM ACCT_ADDR WHERE COMPANY=?", undef,$comp )or die "Could not delete address $comp!";
$dbh=&closedb;
}
sub getaddresses {
$dbh=&connectdb;
my $res=$dbh->selectall_arrayref("SELECT (SELECT COUNT(NAME) FROM BILLINGGRP GROUP BY NAME),* FROM ACCT_ADDR ORDER BY COMPANY;");
$dbh=&closedb;
return $res;
}
sub gethosts{
$dbh=&connectdb;
my $res =$dbh->selectall_arrayref("SELECT NAME from ACCT GROUP BY NAME ORDER BY NAME;");
$dbh=&closedb;
return $res;
}
sub getbillgroups {
$dbh=connectdb;
my $res=$dbh->selectall_arrayref("SELECT NAME,HOST,CUST,BILLTEXT,(SELECT COUNT(HOST) FROM BILLINGHOST WHERE BILLINGGRP.NAME=BILLINGHOST.GRP),CENT FROM BILLINGGRP ORDER BY NAME;");
return $res;
$dbh->disconnect();
}
sub getextrabillpos {
my $grp=$_[0];
$dbh=&connectdb;
my $res=$dbh->selectall_arrayref("SELECT * from BILLPOS WHERE GRP =?", undef,$grp);
$dbh=&closedb;
return $res;
}
sub savebillgroup {
my $grp=$_[0];
my $txt=$_[1];
my $host=$_[2];
my $cust=$_[3];
my $ust=$_[4];
my @ips=@{$_[5]};
$dbh=&connectdb;
my $sql = "INSERT INTO BILLINGGRP (NAME,BILLTEXT,HOST,CUST,CENT) VALUES (?,?,?,?,?)";
my $sth = $dbh->prepare( $sql );
$sth->execute( $grp,$txt,$host,$cust,$ust );
foreach my $ip (@ips){
my $sql = "INSERT INTO BILLINGHOST (GRP,HOST) VALUES (?,?)";
my $sth = $dbh->prepare( $sql ) or die "Could not prepare insert into BILLINGHOST $!";
$sth->execute( $grp,$ip ) or die "Could not execute INSERT into BILLINGHOST $!";
}
$dbh=&closedb;
}
sub updatebillgrouphost {
my $oldgrp=$_[0];
my $newgrp=$_[1];
$dbh=&connectdb;
my $sql = "UPDATE BILLINGGRP SET HOST=? WHERE HOST=?;";
my $sth = $dbh->prepare( $sql );
$sth->execute( $newgrp,$oldgrp );
$dbh=&closedb;
}
sub updatebillgroupcust {
my $oldgrp=$_[0];
my $newgrp=$_[1];
$dbh=&connectdb;
my $sql = "UPDATE BILLINGGRP SET CUST=? WHERE CUST=?;";
my $sth = $dbh->prepare( $sql );
$sth->execute( $newgrp,$oldgrp );
$dbh=&closedb;
}
sub deletebillgroup {
my $name=shift;
$dbh=connectdb;
$dbh->do("DELETE FROM BILLINGGRP WHERE NAME=?;", undef,$name);
$dbh->do("DELETE FROM BILLINGHOST WHERE GRP=?;", undef,$name);
&closedb;
}
sub savebillpos {
my $grp=$_[0];
my $amnt=$_[1];
my $pos=$_[2];
my $price=$_[3];
$dbh=&connectdb;
my $sql = "INSERT INTO BILLPOS (GRP,AMOUNT,POS,PRICE) VALUES (?,?,?,?)";
my $sth = $dbh->prepare( $sql )or die "Could not prepare insert into BILLINGPOS $!";
$sth->execute( $grp,$amnt,$pos,$price ) or die "Could not execute INSERT into BILLINGHOST $!";
$dbh->disconnect();
}
sub updatebillpos {
my $oldgrp=shift;
my $newgrp=shift;
$dbh=&connectdb;
my $sql = "UPDATE BILLPOS SET GRP=? WHERE GRP=?;";
my $sth = $dbh->prepare( $sql );
$sth->execute( $newgrp,$oldgrp );
my $sql1 = "UPDATE BILLS SET GRP=? WHERE GRP=?;";
my $sth1 = $dbh->prepare( $sql1 );
$sth1->execute( $newgrp,$oldgrp );
$dbh=&closedb;
#Now rename directories
rename ("/srv/web/ipfire/html/accounting/logo/$oldgrp","/srv/web/ipfire/html/accounting/logo/$newgrp");
rename ("/var/ipfire/accounting/bill/$oldgrp","/var/ipfire/accounting/bill/$newgrp")
}
sub delbillpos_single {
my $pos=$_[0];
my $grp=$_[1];
my $sql = "DELETE FROM BILLPOS WHERE GRP=? AND POS=?;";
$dbh=&connectdb;
my $sth = $dbh->prepare( $sql )or die "Could not prepare DELETE POS from BILLINGPOS $!";
$sth->execute( $grp,$pos ) or die "Could not execute DELETE from BILLINGHOST $!";
$dbh=&closedb;
}
sub delbillpos {
my $grp=$_[0];
my $sql = "DELETE FROM BILLPOS WHERE GRP=?;";
$dbh=&connectdb;
my $sth = $dbh->prepare( $sql )or die "Could not prepare DELETE POS from BILLINGPOS $!";
$sth->execute( $grp ) or die "Could not execute DELETE from BILLINGHOST $!";
$dbh=&closedb;
}
sub listhosts{
my $name=$_[0];
my $a;
my $res=$dbh->selectall_arrayref("SELECT * FROM BILLINGHOST WHERE GRP='".$name."';");
foreach my $gzu (@$res){
my ($x,$y)=@$gzu;
$a.= "|$y";
}
return $a;
}
sub checkusergrp {
$dbh=connectdb;
my $res=$dbh->selectall_arrayref("SELECT * FROM BILLINGHOST;");
$dbh->disconnect();
return $res;
}
sub getmonth{
#GET : 1. month 2. year
#GIVES: 1.day of given month AND last day of given month in seconds since 1.1.1970
($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
my $jahr=$_[1];
my $monat=$_[0]-1 if($_[0]);
my $tag=1;
my $time1=timelocal(0,0,0,$tag,$monat,$jahr);
my $time2=timelocal(0,0,0,$tag,($monat+1),$jahr);
--$time2;
return ($time1,$time2);
}
sub GetTaValues {
$dbh=&connectdb;
my $from = $_[0]; #unixtimestamp
my $till = $_[1]; #unixtimestamp
my $grp = $_[2]; #Billgroupname
my $all = $dbh->selectall_arrayref("SELECT bh.HOST,SUM(ac.BYTES) sbytes,bh.GRP FROM ACCT ac ,BILLINGHOST bh WHERE ac.NAME=bh.HOST AND bh.GRP=? AND ac.TIME_RUN between ? AND ? GROUP BY bh.GRP,bh.HOST;", undef, $grp, $from, $till) or die "Could not fetch Groupdata $!";
my $nri1 = @$all;
my @return;
my $cnt=0;
if ($nri1 eq "0"){
$return[$cnt]="999";
}
else
{
foreach my $row (@$all){
my ($bytes,$billgrp,$host) = @$row;
$return[$cnt]="$bytes,$billgrp,$host";
$cnt++;
}
}
&closedb;
return @return;
}
sub getTaAddress {
my $grp=$_[0];
my $type=$_[1];
$dbh=&connectdb;
my $res = $dbh->selectall_arrayref("select * from ACCT_ADDR,BILLINGGRP where (BILLINGGRP.HOST=ACCT_ADDR.COMPANY AND BILLINGGRP.NAME=? AND ACCT_ADDR.TYPE=?) or (BILLINGGRP.CUST=ACCT_ADDR.COMPANY and BILLINGGRP.NAME=? AND ACCT_ADDR.TYPE=?);", undef, $grp,$type,$grp,$type);
&closedb;
return $res;
}
sub checkbillgrp {
my $comp=$_[0];
$dbh=&connectdb;
my $res=$dbh->selectall_arrayref("SELECT NAME,HOST,CUST FROM BILLINGGRP;");
&closedb;
return $res;
}
sub pdf2 {
my @billar = @{$_[0]}; #DATA from sendbill (just host/values)
my $month = $_[1];
$month = '0'.$month if $month < 10;
my $year = $_[2];
my $mwst = $_[3];
my @address_cust= @{$_[4]}; #Array which contains customer and hoster adresses and some additional info from billgroup
my @address_host= @{$_[5]};
my @billpos = @{$_[6]};
my $grp = $_[7];
my $cur = $_[8]; #(Eur,USD,...)
my $preview = $_[9];
my $no = &getBillNr;
my $name = $month."-".$year."-".$no.".pdf";
my $path ="/var/ipfire/accounting/bill/";
my $filename = "$path/$grp/$name";
my @summen; #Used for counting the sums
my $x = 500;
my $y = 1;
my $zwsum;
my $pages = 0;
my $anzbillpos = @billpos;
my $anz = (@billar+$anzbillpos)/18; #Total pages
$anz = ceil($anz); #round the $anz value
my $aktpage=1;
my $sum=0;
my $sum1=0;
my $lines;
my $title;
my $txt;
my $txt1;
my $txt2;
my $txt3;
my $txt4;
my $txt5;
my $fnt;
my $fnt1;
my $fulldate = strftime('%d.%m.%Y',localtime(time()));
my($company_host,$type_host,$name1_host,$str_host,$str_nr_host,$plz_host,$city_host,$bank,$iban,$bic,$blz,$kto,$email,$internet,$hrb,$stnr,$tel_host,$fax_host,$ccmail,$billgrp,$text,$host,$cust,$cent);
my($company_cust,$type_cust,$name1_cust,$str_cust,$str_nr_cust,$plz_cust,$city_cust);
#First of all check if directory exists, else create it
if(! -d "$path/$grp" && $preview ne 'on'){
mkdir("$path/$grp",0777);
}
#Check if we are creating a preview or a real bill
if($preview eq 'on'){
$filename="$path/".tempfile( SUFFIX => ".pdf", );
}
####################################################################
#Prepare DATA from arrays
####################################################################
#Get HOSTER for this grp
foreach my $addrline (@address_host){
($company_host,$type_host,$name1_host,$str_host,$str_nr_host,$plz_host,$city_host,$bank,$iban,$bic,$blz,$kto,$email,$internet,$hrb,$stnr,$tel_host,$fax_host,$ccmail,$billgrp,$text,$host,$cust,$cent)=@$addrline;
}
#Get CUST for this grp
foreach my $addrline_cust (@address_cust){
($company_cust,$type_cust,$name1_cust,$str_cust,$str_nr_cust,$plz_cust,$city_cust)=@$addrline_cust;
}
#Generate PDF File
my $pdf = PDF::API2->new(-file => $filename);
$pdf->mediabox('A4');
my $page = $pdf->page;
$fnt = $pdf->corefont('Helvetica');
$fnt1 = $pdf->corefont('HelveticaBold');
#Set lines
$lines = $page->gfx;
$title = $page->gfx;
$lines->strokecolor('grey');
$lines->linewidth('0.5');
#Fill BILL DATA into PDF
setlocale(LC_ALL, "$mainsettings{'LANGUAGE'}_$uplang");
foreach (@billar) {
my ($a1,$a2) = split( /\,/, $_ );
$a2=sprintf"%.2f",($a2/1024/1024);
my $sum=(($a2)*$cent);
$sum = sprintf"%.2f",($sum);
# Seitenwechsel ermitteln
if ($y % 18 == 0) {
$txt1->translate(390, 120);
$txt1->text($Lang::tr{'acct pdf zwsum'}); #Pos
$zwsum=sprintf("%.2f",($zwsum));
$txt1->translate(540, 120);
$txt1->text_right("$zwsum".decode('utf8',$cur)); #Pos
$zwsum=0;
$pages++;
$aktpage++;
$x=500;
$page=$pdf->page;
#draw lines
$lines = $page->gfx;
$title = $page->gfx;
$lines->strokecolor('grey');
$lines->linewidth('0.5');
}
#TITLES
$title->linewidth(14);
$title->move(385, 168);
$title->line(545, 168); #Title of SUMBOX
$title->move(60, 523);
$title->line(545, 523);#Bottom horiz. line of Title
# Generate Tables
$lines->move(59, 745);
$lines->line(545, 745);
$lines->move(59, 563);
$lines->line(545, 563);
# Addressbox
$lines->move(61, 710);
$lines->line(61, 715, 66, 715); #TL
$lines->move(61, 610);
$lines->line(61, 605, 66, 605); #BL
$lines->move(285, 715);
$lines->line(290, 715, 290, 710); #TR
$lines->move(290, 610);
$lines->line(290, 605, 285, 605); #BR
# Table for positions
$lines->move(60, 530);
$lines->line(60, 200); #First vert. line POS
$lines->move(90, 523);
$lines->line(90, 200); #Second vert. line
$lines->move(280, 523);
$lines->line(280, 200); #third vert. line
$lines->move(385, 523);
$lines->line(385, 200); #third vert. line
$lines->move(430, 523);
$lines->line(430, 200); #fourth vert. line
$lines->move(545, 530);
$lines->line(545, 200); #fifth vert. line
$lines->move(60, 200);
$lines->line(545, 200); #Bottom horizontal line
#SUM BOX
$lines->move(385, 175);
$lines->line(385, 115); #Left vert. line of SUMBOX
$lines->move(545, 175);
$lines->line(545, 115); #Right vert. line of SUMBOX
$lines->move(385, 115);
$lines->line(545, 115); #Bottom horiz. line of SUMBOX
#Lines on right side after sender and after "bank"
$lines->move(420, 723);
$lines->line(545, 723);# Line "Sender"
$lines->move(420, 648);
$lines->line(545, 648);# Line "Bank"
$lines->move(420, 600);
$lines->line(545, 600);# Line HRB/USTID
#Make lines Visible
$lines->stroke;
$title->stroke;
if (-f "/srv/web/ipfire/html/accounting/logo/$grp/logo.png"){
#Image LOGO
my $gfx = $page->gfx;
my $image = $pdf->image_png("/srv/web/ipfire/html/accounting/logo/$grp/logo.png");
my $width= $image->width;
my $height= $image->height;
$gfx->image($image, (545+($width/2))-$width, 750,0.5);
}
#Set Fonts
$txt = $page->text;
$txt1 = $page->text;
$txt2 = $page->text;
$txt3 = $page->text;
$txt4 = $page->text;
$txt5 = $page->text;
$txt->textstart; #Begin Text
$txt->font($fnt, 10); #Set fontsize for font1
$txt1->font($fnt, 8); #Set fontsize for font2
$txt2->font($fnt1, 10); #Set fontsize for font3
$txt3->font($fnt1, 16); #Set fontsize for font4
$txt4->font($fnt, 6); #Set fontsize for font5
$txt5->font($fnt1, 6); #Set fontsize for font6
#if $cent not set, set it to 0.5
if(!$cent){$cent='0.005';}
#if MWst not set, set it to 19%
if(!$mwst){$mwst='19';}
# Titles
$txt1->translate(65,520);
$txt1->text($Lang::tr{'acct pos'}); #Pos
$txt1->translate(95, 520);
$txt1->text($Lang::tr{'acct name'}); #Host/Name
$txt1->translate(285, 520);
$txt1->text($Lang::tr{'acct amount'}); #Traffic
$txt1->translate(390, 520);
$txt1->text($Lang::tr{'acct cent1'}); #Price /MB
$txt1->translate(435, 520);
$txt1->text($Lang::tr{'acct pdf price'}); #Sum
####################################################################
#Fill Recipient address
my $rec_name= "$company_cust";
my $rec_name1="$name1_cust";
my $rec_str = "$str_cust $str_nr_cust";
my $rec_city = "$plz_cust $city_cust";
#INSERT RECIPIENT
my $o=675;
$txt2->translate(78, 685);
$txt2->text(decode('utf8',$rec_name));
if($rec_name1){
$txt1->translate(78, $o);
$txt1->text(decode('utf8',$rec_name1));
$o=$o-15;
}else{
$o=$o-15;
}
$txt1->translate(78, $o);
$txt1->text(decode('utf8',$rec_str));
$o=$o-10;
$txt1->translate(78, $o);
$txt1->text(decode('utf8',$rec_city));
# INSERT SENDER
my $send_name= "$company_host";
my $send_str = "$str_host $str_nr_host";
my $send_city = "$plz_host $city_host";
my $send_bank ="$bank";
$txt5->translate(420, 725);
$txt5->text(decode('utf8',$Lang::tr{'acct pdf prov'}));
$txt5->translate(420, 715);
$txt5->text(decode('utf8',$send_name));
my $j=705;
if($name1_host){
$txt4->translate(420, $j);
$txt4->text(decode('utf8',$name1_host));
$j=$j-8;
}
$txt4->translate(420, $j);
$txt4->text(decode('utf8',$send_str)); #STR
$j=$j-8;
$txt4->translate(420, $j);
$txt4->text(decode('utf8',$send_city)); #PLZ.City
#Print optional Values tel,fax
my $i=680;
if($tel_host){
$txt4->translate(420, $i);
$txt4->text($Lang::tr{'acct tel'}); #Tel
$txt4->translate(480, $i);
$txt4->text($tel_host); #Telnr
$i=$i-8;
}
if($fax_host){
$txt4->translate(420, $i);
$txt4->text($Lang::tr{'acct fax'}); #Fax
$txt4->translate(480, $i);
$txt4->text($fax_host); #Faxnr
$i=$i-8;
}
if($internet){
$txt4->translate(420, $i);
$txt4->text($Lang::tr{'acct inet'}); #Internet
$txt4->translate(480, $i);
$txt4->text($internet); #www-address
$i=$i-8;
}
$txt5->translate(420, 650);
$txt5->text(decode('utf8',$Lang::tr{'acct bank'})); #"BANK"
$txt4->lead(7);
$txt4->translate(420, 640);
$txt4->paragraph(decode('utf8',$bank), 130, 20, -align => "justify"); #Bankname
if($iban){
$txt4->translate(420, 625);
$txt4->text($Lang::tr{'acct iban'}); #iban
$txt4->translate(480, 625);
$txt4->text(decode('utf8',$iban)); #iban
$txt4->translate(420, 619);
$txt4->text($Lang::tr{'acct bic'}); #bic
$txt4->translate(480, 619);
$txt4->text(decode('utf8',$bic)); #bic
}
if($blz){
$txt4->translate(420, 613);
$txt4->text($Lang::tr{'acct blz'}); #blz
$txt4->translate(420, 607);
$txt4->text($Lang::tr{'acct kto'}); #kto
$txt4->translate(480, 613);
$txt4->text(decode('utf8',$blz)); #blz
$txt4->translate(480, 607);
$txt4->text(decode('utf8',$kto)); #kto
}
#Print USTID and optional HRB
$txt4->translate(420, 590);
$txt4->text($Lang::tr{'acct ustid'}); #USTID
$txt4->translate(480, 590);
$txt4->text($stnr); #ustid
if($hrb){
$txt4->translate(420, 580);
$txt4->text($Lang::tr{'acct hrb'}); #USTID
$txt4->translate(480, 580);
$txt4->text($hrb); #ustid
}
################################################################
#Print Date, Pages ....
$txt3->translate(59, 545);
$txt3->text($Lang::tr{'acct pdf billtxt'});
$txt1->translate(160, 545);
$txt1->text("$no $Lang::tr{'acct billnr'}");
$txt1->translate(60, 532);
$txt1->text("$Lang::tr{'acct pdf time'} $month/$year");
$txt1->translate(545, 550);
$txt1->text_right("$Lang::tr{'acct pdf date'} $fulldate");
$txt1->translate(545, 532);
$txt1->text_right("$Lang::tr{'acct pdf page'} $aktpage / $anz");
if ($a1 eq '999'){last;}
#Print DATA from array to Position table
$txt1->translate(80, $x);
$txt1->text_right($y);
$txt1->translate(95, $x);
$txt1->text($a1);
$txt1->translate(380, $x);
$txt1->text_right("$a2 MB");
$txt1->translate(425, $x);
$txt1->text_right("$cent ".decode('utf8',$cur));
$txt1->translate(540, $x);
$txt1->text_right("$sum ".decode('utf8',$cur));
#Build SUMMARY
$summen[$y-1]="$y,$a2,$sum";
$zwsum=$zwsum+$sum;
$x=$x-15;
$y++;
}
#Print extra billpositions
foreach my $line (@billpos){
my ($grp,$amount,$art,$price)=@$line;
#Print DATA from array to Position table
$txt1->translate(80, $x);
$txt1->text_right($y);
$txt1->translate(95, $x);
$txt1->text(decode('utf8',$art));
$txt1->translate(380, $x);
$txt1->text_right($amount." pcs");
$txt1->translate(540, $x);
$txt1->text_right("$price ".decode('utf8',$cur));
#Build SUMMARY
my $zu=$amount * $price;
$summen[$y-1]="$y,'0',$zu";
$zwsum=$zwsum+$zu;
$x=$x-15;
$y++;
}
foreach (@summen){
my ($a1,$a2,$a3) = split( /\,/, $_ );
$sum=$sum+$a2;
$sum1=$sum1+$a3;
}
# Last Line in positiontable prints the sum of all traffic (therefor txt2 which is BOLD)
$txt2->translate(95, 205);
$txt2->text($Lang::tr{'acct pdf sum1'}); #SUM
$txt2->translate(427, 205);
$txt2->text_right($cent); #cent
$txt2->translate(380, 205);
$txt2->text_right("$sum MB"); #MB
$sum1=sprintf("%.2f",($sum1));
$txt2->translate(540, 205);
$txt2->text_right("$sum1 ".decode('utf8',$cur)); #SUM Eur
$txt->translate(390, 150);
$txt->text($Lang::tr{'acct pdf sum1'});
$txt->translate(540, 150);
$txt->text_right("$sum1 ".decode('utf8',$cur));
$txt->translate(390, 135);
my $endsum=$sum1;
$txt->text("$Lang::tr{'acct mwst_name'} $mwst%");
my $sum1=sprintf("%.2f",($sum1/100*$mwst));
$txt->translate(540, 135);
$txt->text_right("$sum1 ".decode('utf8',$cur));
$txt2->translate(390, 120);
$txt2->text($Lang::tr{'acct sum total'});
my $endsum=sprintf("%.2f",($sum1+$endsum));
$txt2->translate(540, 120);
$txt2->text_right("$endsum ".decode('utf8',$cur));
#Print the optional Billtext if any
$txt4->translate(60, 170);
$txt4->paragraph(decode('utf8',$text), 300, 40, -align => "justify"); #Bankname
#Watermark if preview
if ($preview eq 'on'){
my $eg_trans = $pdf->egstate();
$eg_trans->transparency(0.9);
$txt5->egstate($eg_trans);
$txt5->textlabel(80, 400, $fnt, 60, "PDF preview", -rotate => 40);
$txt5->textlabel(150, 330, $fnt, 60, "IPFire accounting", -rotate => 40);
}
$txt->textend; #END Text
$pdf->save; #Save pdf
$pdf->end( ); #END
if ($preview ne 'on'){
&fillBill($path.$grp,$name,$no,$grp);
}
if($preview eq 'on'){
return $filename;
}
return '0';
}
sub getBillNr {
$dbh=&connectdb;
my $year1=$year+1900;
my $no1;
my $res=$dbh->selectall_arrayref("SELECT MAX(NO) FROM BILLS;");
foreach my $row (@$res){
($no1) = @$row;
}
if(!$no1){$no1=$year1."1000";}
$no1++;
return $no1;
}
sub fillBill {
my $path=$_[0];
my $name=$_[1];
my $no=$_[2];
my $grp=$_[3];
my $sth = $dbh->prepare("INSERT INTO BILLS (NO,GRP,PATH,NAME,DATE) VALUES (?,?,?,?,?);");
my $year1=$year+1900;
++$mon;
$sth->execute($no,$grp,$path,$name,"$mday.$mon.$year1");
$sth->finish();
$dbh->disconnect();
}
sub getbills {
my $grp=shift;
$dbh=&connectdb;
my $res=$dbh->selectall_arrayref("SELECT * FROM BILLS WHERE GRP=?;",undef, $grp);
$dbh->disconnect();
return $res;
}
sub pngsize {
my $Buffer = shift;
my ($width,$height) = ( undef, undef );
if ($Buffer =~ /IHDR(.{8})/) {
my $PNG = $1;
($width,$height) = unpack( "NN", $PNG );
} else {
$width=$Lang::tr{'acct invalid png'};
};
return ($width,$height);
}
sub gifsize {
my ($GIF)=@_;
my ($type,$a,$b,$c,$d,$s,$width,$height) ;
$type=substr($GIF,0,6);
if(!($type =~ m/GIF8[7,9]a/) || (length($s=substr($GIF, 6, 4))!=4) ){
return;
}
($a,$b,$c,$d)=unpack("C"x4,$s);
$width= $b<<8|$a;
$height= $d<<8|$c;
return ($width,$height);
}
sub jpegsize {
my ($JPEG)=@ _ ;
my ($count)=2 ;
my ($length)=length($JPEG) ;
my ($ch)="" ;
my ($c1,$c2,$a,$b,$c,$d,$width,$height) ;
while (($ch ne "\xda") && ($count<$length)) {
while (($ch ne "\xff") && ($count < $length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
while (($ch eq "\xff") && ($count<$length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
if ((ord($ch) >= 0xC0) && (ord($ch) <= 0xC3)) {
$count+=3;
($a,$b,$c,$d)=unpack("C"x4,substr($JPEG,$count,4));
$width=$c<<8|$d;
$height=$a<<8|$b;
return($width,$height);
}else {
($c1,$c2)= unpack("C"x2,substr($JPEG,$count,2));
$count += $c1<<8|$c2;
}
}
}
sub time{
($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
$hour=sprintf("%02d",$hour);
$min=sprintf("%02d",$min);
$sec=sprintf("%02d",$sec);
$year +=1900;
$mday=sprintf("%02d",$mday);
$mon=sprintf("%02d",$mon+1);
my $res="$mday.$mon.$year $hour:$min:$sec - ";
return $res;
}
sub logger{
my $settings=shift;
my $msg=shift;
#open LOGFILE
if ($settings eq 'on'){
open ACCTLOG,">>/var/log/accounting.log" || print "could not open /var/log/accounting.log ";
print ACCTLOG &time."$msg";
close (ACCTLOG);
}
}
sub updateccaddr {
my $addr=shift;
my $cust=shift;
$dbh=&connectdb;
$dbh->do("UPDATE ACCT_ADDR SET CCMAIL=? WHERE COMPANY=? ;",undef, $addr, $cust);
$dbh->disconnect();
}
return 1;

View File

@@ -0,0 +1,134 @@
# Added for Squid accounting
%tr = (
%tr,
'acct action' => 'Aktion',
'acct activate' => 'Aktivieren',
'acct addresses' => 'Adressverwaltung',
'acct bank' => 'Bank',
'acct bic' => 'BIC',
'acct billarchive' => 'Rechnungsarchiv',
'acct billgroup' => 'Rechnungsgruppen',
'acct billgroupexists' => 'Eine Abrechnungsgruppe mit diesem Namen existiert bereits',
'acct billtext1' => 'Rechnungstext',
'acct billnr' => '(Rechnungsnummer immer angeben)',
'acct billoverview' => 'Rechnungsübersicht',
'acct blz' => 'BLZ',
'acct ccmail' => 'E-Mail Kopie an',
'acct currency' => 'Währung (EUR,USD)',
'acct traffic' => 'Traffic',
'acct amount' => 'Anzahl',
'acct cent' => 'Preis je MB (z.B 0.003)',
'acct cent1' => 'Preis MB',
'acct city' => 'Ort',
'acct config' => 'Konfiguration',
'acct commit' => 'Ausführen',
'acct company' => 'Firma',
'acct companyexists' => 'Eine Firma mit diesem Namen existiert bereits',
'acct companytype' => 'Typ',
'acct customer' => 'Kunde',
'acct cust empty' => 'Noch keine Kunden-Adressen angelegt',
'acct dbsize' => 'Datenbankgröße',
'acct dbmaintenance' => 'Datenbank-Wartung',
'acct delbefore' => 'Alle Einträge löschen vor',
'acct deladr' => 'Löschen',
'acct edit' => 'Bearbeiten',
'acct edit_addr' => 'Anlegen/Bearbeiten',
'acct email' => 'E-Mail',
'acct emptydb' => 'Datenbank leeren (alles)',
'acct emptydbtraf' => 'Datenbank leeren (nur Trafficdaten)',
'acct empty field' => 'Feld darf nicht leer sein: ',
'acct entries' => 'Einträge',
'acct err custdel' => 'Die Adresse kann nicht gelöscht werden, weil sie als Kunde in einer Rechnungsgruppe verwendet wird - Rechnungsgruppe',
'acct err hostdel' => 'Die Adresse kann nicht gelöscht werden, weil sie als Hoster in einer Rechnungsgruppe verwendet wird - Rechnungsgruppe',
'acct exst_cust_addr' => 'Kunden-Adressen',
'acct exst_host_addr' => 'Hoster-Adressen',
'acct expert' => 'Wartungsbereich aktivieren',
'acct expdelbefore' => 'Löschen',
'acct fax' => 'Fax',
'acct fix billpos' => 'Feste Rechnungspositionen der Rechnungsgruppe',
'acct gb' => 'GB',
'acct generated' => 'Erzeugt',
'acct hint billgrp' => 'Bitte zuerst mindestens eine Hoster-Adresse und eine Kunden-Adresse anlegen',
'acct hint_hoster' => 'Muss nur ausgefüllt werden, wenn Typ "Hoster"',
'acct hrb' => 'HRB-Nr',
'acct hoster' => 'Hoster',
'acct hosts' => 'Hostübersicht',
'acct host empty' => 'Noch keine Hoster-Adressen angelegt',
'acct host detail' => 'Host-Details',
'acct iban' => 'IBAN',
'acct inet' => 'Internet',
'acct interval' => 'Checkintervall',
'acct invalid' => 'Ungültiger Wert für',
'acct invalid billpos' => 'Es müssen alle Felder für Extra-Rechnungspositionen ausgefüllt sein',
'acct invalid mailip' => 'Ungültige IP-Adresse für Mailserver',
'acct invalid mailfqdn' => 'Ungültiger FQDN für Mailserver',
'acct invalid mailport' => 'Ungültiger Port für Mailserver',
'acct invalid png' => 'Ungültige PNG Datei',
'acct invalid pngsize' => 'Ungültige PNG Größe',
'acct kb' => 'KB',
'acct kto' => 'KTO',
'acct latestdb' => 'Letzter DB-Eintrag',
'acct logging' => 'Logging (/var/log/accounting.log) aktivieren',
'acct logo' => 'Aktuelles Logo',
'acct logo upload' => 'Logo Hochladen (PNG, max. 400x150)',
'acct maintenance' => 'Wartung',
'acct mailaddr' => 'Mailserver-Adresse',
'acct mailport' => 'Mailserver-Port',
'acct mailuser' => 'Benutzername',
'acct mailpass' => 'Passwort',
'acct mailrcpt' => 'E-Mail-Empfänger',
'acct mailsender' => 'E-Mail Absender',
'acct mailtxt' => 'Text der Rechnungsmails',
'acct mb' => 'MB',
'acct members' => 'Mitglieder',
'acct menu' => 'Proxy-Abrechnung',
'acct month' => 'Monat',
'acct multiuser' => 'User dürfen in mehreren Gruppen sein',
'acct mwst_name' => 'USt.',
'acct mwst' => 'Mehrwertsteuer in %',
'acct name1' => 'Name 1',
'acct name2' => 'Name 2',
'acct nr' => 'RG-Nr.',
'acct oldestdb' => 'Erster DB-Eintrag',
'acct optional' => 'Diese Felder sind optional',
'acct parameter' => 'Parameter',
'acct path' => 'Pfad',
'acct pdf billtxt' => 'Rechnung',
'acct pdf date' => 'Datum',
'acct pdf zwsum' => 'Zwischensumme',
'acct pdf page' => 'Seite',
'acct pdf prov' => 'Absender',
'acct pdf sum1' => 'Summe',
'acct pdf price' => 'Preis',
'acct pdf time' => 'Abrechnung',
'acct plz' => 'PLZ',
'acct preview' => 'Rechnungsvorschau',
'acct price pp' => 'Einzelpreis',
'acct proxy_enable' => 'Bitte zuerst Proxy aktivieren',
'acct pos' => 'Pos.',
'acct sum total' => 'Gesamtsumme',
'acct name' => 'Bezeichnung',
'acct no data' => 'Keine Daten vorhanden',
'acct rrdsize' => 'Größe des Rechnungs-Verzeichnisses',
'acct settings' => 'Accounting-Einstellungen',
'acct skipurl' => 'Diese URLs nicht bewerten',
'acct status' => 'Status',
'acct str' => 'Straße',
'acct str_nr' => 'Nr.',
'acct subject' => 'Betreff der Rechnungsmails',
'acct sum' => 'Summe',
'acct task' => 'Aufgabe',
'acct tb' => 'TB',
'acct tel' => 'Telefon',
'acct tls' => 'Benutze TLS',
'acct traffic monthly' => 'Monatliches Datenvolumen',
'acct title' => 'Webproxy-Abrechnung',
'acct usemail' => 'Mailversand aktivieren',
'acct usermulti' => 'befindet sich bereits in Gruppe',
'acct ustid' => 'USt-ID',
'acct edit settings' => 'Einstellungen bearbeiten',
'acct value' => 'Wert',
'acct view' => 'Anzeigen',
'acct year' => 'Jahr'
);
# End Squid accounting

View File

@@ -0,0 +1,134 @@
# Added for Squid accounting
%tr = (
%tr,
'acct action' => 'Action',
'acct activate' => 'Activate',
'acct addresses' => 'Address Management',
'acct bank' => 'Bank',
'acct bic' => 'BIC',
'acct billarchive' => 'Bill Archive',
'acct billgroup' => 'Billing Groups',
'acct billgroupexists' => 'A billing group with this name already exists',
'acct billtext1' => 'Bill text',
'acct billnr' => '(always state bill number)',
'acct billoverview' => 'Bill overview',
'acct blz' => 'Bank code',
'acct ccmail' => 'E-Mail CC-Addresses',
'acct currency' => 'Currency (EUR,USD)',
'acct traffic' => 'Traffic',
'acct amount' => 'Amount',
'acct cent' => 'Price/MB (e.g. 0.003)',
'acct cent1' => 'Price MB',
'acct city' => 'City',
'acct config' => 'Configuration',
'acct commit' => 'Execute',
'acct company' => 'Company',
'acct companyexists' => 'A Company with this name already exists',
'acct companytype' => 'Type',
'acct customer' => 'Customer',
'acct cust empty' => 'No Customer addresses defined',
'acct dbsize' => 'Database size',
'acct dbmaintenance' => 'Database maintenance',
'acct delbefore' => 'Delete all entries before',
'acct deladr' => 'Delete',
'acct edit' => 'Edit',
'acct edit_addr' => 'Add / Edit',
'acct email' => 'E-Mail',
'acct emptydb' => 'Erase Database (all data)',
'acct emptydbtraf' => 'Erase Database (only traffic data)',
'acct empty field' => 'Field must not be empty: ',
'acct entries' => 'Entries',
'acct err custdel' => 'Address can not be deleted. It is defined as customer in a Bill group - Bill group',
'acct err hostdel' => 'Address can not be deleted. It is defined as provider in a Bill group - Bill group',
'acct exst_cust_addr' => 'Customer addresses',
'acct exst_host_addr' => 'Provider addresses',
'acct expert' => 'Activate maintenance area',
'acct expdelbefore' => 'Delete',
'acct fax' => 'Faximile',
'acct fix billpos' => 'Fixed bill positions of bill group',
'acct gb' => 'GB',
'acct generated' => 'Generated',
'acct hint billgrp' => 'You have to define a provider and a customer address first',
'acct hint_hoster' => 'Has only to be filled when type "provider"',
'acct hrb' => 'HRB-No',
'acct hoster' => 'Provider',
'acct hosts' => 'Host Overview',
'acct host empty' => 'No provider addresses defined',
'acct host detail' => 'Host Details',
'acct iban' => 'IBAN',
'acct inet' => 'Internet',
'acct interval' => 'Checkintervall',
'acct invalid' => 'Invalid value for',
'acct invalid billpos' => 'You have to fill in all fields for fixed bill positions',
'acct invalid mailip' => 'Invalid IP address for mailserver',
'acct invalid mailfqdn' => 'Invalid FQDN for mailserver',
'acct invalid mailport' => 'Invalid port for mailserver',
'acct invalid png' => 'Invalid PNG file',
'acct invalid pngsize' => 'Invalid PNG size',
'acct kb' => 'KB',
'acct kto' => 'Account Number',
'acct latestdb' => 'Last DB entry',
'acct logging' => 'Activate Logging (/var/log/accounting.log)',
'acct logo' => 'Actual Logo',
'acct logo upload' => 'Upload Logo (PNG, max. 400x150)',
'acct maintenance' => 'Maintenance',
'acct mailaddr' => 'Mailserver address',
'acct mailport' => 'Mailserver port',
'acct mailuser' => 'Username',
'acct mailpass' => 'Password',
'acct mailrcpt' => 'E-Mail Recipient',
'acct mailsender' => 'E-Mail Sender',
'acct mailtxt' => 'Text for bill mail',
'acct mb' => 'MB',
'acct members' => 'Members',
'acct menu' => 'Proxy Accounting',
'acct month' => 'Month',
'acct multiuser' => 'User can be in multiple groups',
'acct mwst_name' => 'VAT',
'acct mwst' => 'Tax rate',
'acct name1' => 'Name 1',
'acct name2' => 'Name 2',
'acct nr' => 'RG-No.',
'acct oldestdb' => 'Fist DB Entry',
'acct optional' => 'These fields are optional',
'acct parameter' => 'Parameter',
'acct path' => 'Path',
'acct pdf billtxt' => 'Bill',
'acct pdf date' => 'Date',
'acct pdf zwsum' => 'subtotal',
'acct pdf page' => 'Page',
'acct pdf prov' => 'Sender',
'acct pdf sum1' => 'Sum',
'acct pdf price' => 'Price',
'acct pdf time' => 'Accounting',
'acct plz' => 'Postcode',
'acct preview' => 'Bill preview',
'acct price pp' => 'Unit price',
'acct proxy_enable' => 'Please actiavte proxy first',
'acct pos' => 'Pos.',
'acct sum total' => 'Total',
'acct name' => 'Description',
'acct no data' => 'No Data available',
'acct rrdsize' => 'Size of Bill directory',
'acct settings' => 'Accounting settings',
'acct skipurl' => 'Skip these URLs (Intranet)',
'acct status' => 'Status',
'acct str' => 'Steet',
'acct str_nr' => 'No.',
'acct subject' => 'Subject',
'acct sum' => 'Sum',
'acct task' => 'Task',
'acct tb' => 'TB',
'acct tel' => 'Telephone',
'acct tls' => 'Use TLS',
'acct traffic monthly' => 'Monthly data volume',
'acct title' => 'Webproxy Accounting',
'acct usemail' => 'Send bills via Mail',
'acct usermulti' => 'is already in group',
'acct ustid' => 'USt-ID',
'acct edit settings' => 'Edit settings',
'acct value' => 'Value',
'acct view' => 'Show',
'acct year' => 'Year'
);
# End Squid accounting

265
src/squid-accounting/acct.pl Executable file
View File

@@ -0,0 +1,265 @@
#!/usr/bin/perl
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2014 IPFire Team <alexander.marx@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/>. #
# #
###############################################################################
###########
# Modules #
###########
use Time::Local;
use File::ReadBackwards;
use strict;
#use warnings;
require '/var/ipfire/general-functions.pl';
require "${General::swroot}/accounting/acct-lib.pl";
require "${General::swroot}/lang.pl";
#############
# Variables #
#############
my $count = 0;
my $dbh;
my $logfile = "/var/log/squid/access.log";
my $line = '';
my $checktime = 3600; #1 hour = 3600 sec
my $starttime = time;
my ($time,$elapsed,$ip,$state,$bytes,$method,$url,$user,$peerstate,$type); #split logfileline into variables
my $name;
my $name1;
my $settingsfile = "${General::swroot}/accounting/settings.conf";
my $proxyenabled = "${General::swroot}/proxy/enable";
my %counter = ();
my %counterip = ();
my %settings = ();
my %toplist = ();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
my $skipurlcount=0;
my $skipurlsum=0;
&General::readhash("$settingsfile", \%settings);
my $skipurl=$settings{'SKIPURLS'};
$skipurl="'".$skipurl."'";
my ($mini,$max)=&ACCT::getminmax;
my $now = localtime;
my $proxylog;
my $proxysrv;
########
# Main #
########
&checkproxy;
#If we have a disabled file and the proxy is off, we don't need to check anything, exit!
if((! -f $proxyenabled || $proxylog eq $Lang::tr{'stopped'}) && -f "${General::swroot}/accounting/disabled"){
&ACCT::logger($settings{'LOG'}," Proxy or proxylogging disabled - exiting with no data collection\n");
exit 0;
}
#If proxy was turned off within last hour, we need to check missing minutes and write a disabled file
if ((! -f $proxyenabled || $proxylog eq $Lang::tr{'stopped'}) && ! -f "${General::swroot}/accounting/disabled"){
$checktime = (time-$max);
open (FH,">${General::swroot}/accounting/disabled");
close (FH);
&ACCT::logger($settings{'LOG'}," Proxy or proxylogging was disabled during last hour - just checking meantime and disabling data collection\n");
}
#If proxy is on, we are doing a normal run. maybe we had a disabled file, so delete it here
if (-f $proxyenabled && $proxylog eq $Lang::tr{'running'}){
#check if we are running again after the was shutdown and reenabled
if (-f "${General::swroot}/accounting/disabled"){
unlink("${General::swroot}/accounting/disabled");
}
#Find out if the month changed
$dbh=&ACCT::connectdb;
my $m=sprintf("%d",(localtime((time-3600)))[4]+1);
&ACCT::logger($settings{'LOG'},"month before one hour $m, now is ".($mon+1)."\n");
if ($m < ($mon+1) || $m == '12' && ($mon+1) == '1'){
#Logrotate
my $year1=$year+1900;
system ("tar", "cfz", "/var/log/accounting-$m-$year1.tar.gz", "/var/log/accounting.log");
unlink ("/var/log/accounting.log");
open (FH,">/var/log/accounting.log");
close (FH);
chmod 0755, "/var/log/accounting.log";
#move all db entries older than 2 months to second table and cumulate them hourly
&ACCT::movedbdata;
&ACCT::logger($settings{'LOG'},"New Month. Old trafficvalues moved to ACCT_HIST Table\n");
if ($settings{'USEMAIL'} eq 'on'){
&ACCT::logger($settings{'LOG'},"Mailserver is activated - Now sending bills via mail...\n");
my $res=&ACCT::getbillgroups;
foreach my $line (@$res){
my ($grp) = @$line;
&sendbill($grp,$settings{'MWST'},$settings{'CURRENCY'});
}
}else{
&ACCT::logger($settings{'LOG'},"Mailserver is deactivated - We are NOT sending bills via mail...\n");
}
}
&ACCT::logger($settings{'LOG'},"Start reading last hour of access.log\n");
&readlog;
&fill_db;
&ACCT::closedb;
$skipurlsum=sprintf("%.2f",$skipurlsum/(1024*1024));
&ACCT::logger($settings{'LOG'},"skipped: $skipurlcount Adressen\n");
&ACCT::logger($settings{'LOG'},"skipped: $skipurlsum MB\n") if ($skipurl);
}
#############
# functions #
#############
sub checkproxy{
if(-f "${General::swroot}/proxy/enable"){
$proxysrv=$Lang::tr{'running'};
}else{
$proxysrv=$Lang::tr{'stopped'};
}
my $srce = "${General::swroot}/proxy/squid.conf";
my $string1 = 'access\.log';
open(FH, $srce);
while(my $line = <FH>) {
if($line =~ m/$string1/) {
$proxylog=$Lang::tr{'running'};
}
}
close FH;
return;
}
sub readlog{
my $url1;
my $user1;
$count = 0;
my $urlcnt=0;
&ACCT::logger($settings{'LOG'},"Start: $now. Reading data back till: ".localtime(($starttime-$checktime)).".\n");
#Open Logfile and begin to read the file backwards
my $bw = File::ReadBackwards->new( $logfile ) or die "can't read $logfile $!" ;
while( defined( $line = $bw->readline ) ) {
undef $url1;
chomp $line;
#Divide $line into single variables to get timestamp and check if we are within hte desired timerange
($time,$elapsed,$ip,$state,$bytes,$method,$url,$user,$peerstate,$type)=split(m/\s+/, $line);
$count += $bytes;
$time = substr($time, 0, -4);
if (($time > ($starttime-$checktime))){
#Skip DENIED stated lines (can be reactivated later)
next if ($state =~ m/DENIED/);
#extract site name
if ($url =~ m/([a-z]+:\/\/)??([a-z0-9\-]+\.){1}(([a-z0-9\-]+\.){0,})([a-z0-9\-]+){1}(:[0-9]+)?\/(.*)/o) {
$url=$2.$3.$5;
} else {
my ($a,$b)=split(":",$url);
$url=$a;
}
#Skip special URLs like intranet and webservers from local network
if ($url =~ m/$skipurl/o) {
$skipurlcount++;
$skipurlsum+=$bytes;
next;
};
#Increase urlcounter
$urlcnt++;
#Get Data for accounting
$counter{$user}{'bytes'} += $bytes if ($user ne '-');
$counter{$ip}{'bytes'} += $bytes;
}else{
#If we are out of timewindow, break
last;
}
}
$count=sprintf("%.2f",$count/(1024*1024));
&ACCT::logger($settings{'LOG'},"got $count MB from $urlcnt URLs this run.\n");
$bw->close;
}
sub fill_db{
my $tim=time();
#Fill ACCT table with accounting information
foreach my $name (sort keys %counter){
foreach my $bytes (keys %{ $counter{$name} }) {
$dbh->do("insert into ACCT (TIME_RUN,NAME,BYTES) values ('$tim','$name','$counter{$name}{$bytes}');");
}
}
}
sub sendbill {
my $rggrp=$_[0];
my $mwst=$_[1];
my $cur = $_[2];
my @now = localtime(time);
$now[5] = $now[5] + 1900;
my $actmonth = $now[4];
my $month = '0'.$actmonth if $actmonth < 10;
my $actyear = $now[5];
my ($from,$till)=&ACCT::getmonth($actmonth,$actyear); #FIXME month and year as variables!
my @billar = &ACCT::GetTaValues($from,$till,$rggrp);
my $address_cust = &ACCT::getTaAddress($rggrp,'CUST');
my $address_host = &ACCT::getTaAddress($rggrp,'HOST');
my $billpos = &ACCT::getextrabillpos($rggrp);
my $no = &ACCT::getBillNr;
my $back = &ACCT::pdf2(\@billar,$actmonth,$actyear,$mwst,$address_cust,$address_host,$billpos,$rggrp,$cur);
my ($company_cust,$type_cust,$name1_cust,$str_cust,$str_nr_cust,$plz_cust,$city_cust,$bank,$iban,$bic,$blz,$kto,$email,$internet,$hrb,$stnr,$tel_host,$fax_host,$ccmail,$billgrp,$text,$host,$cust,$cent);
foreach my $addrline_cust (@$address_cust){
($company_cust,$type_cust,$name1_cust,$str_cust,$str_nr_cust,$plz_cust,$city_cust,$bank,$iban,$bic,$blz,$kto,$email,$internet,$hrb,$stnr,$tel_host,$fax_host,$ccmail,$billgrp,$text,$host,$cust,$cent)=@$addrline_cust;
}
if ($back eq '0'){
&ACCT::logger($settings{'LOG'},"Bill for $company_cust successfully created.\n");
my $file="'/var/ipfire/accounting/bill/$rggrp/$month-$actyear-$no.pdf'";
$settings{'MAILTXT'} =~ tr/\|/\r\n/ ;
my $cmd = "/usr/local/bin/sendEmail ";
$cmd .= " -f $settings{'MAILSENDER'}"; #Sender
$cmd .= " -t $email"; #Recipient
if ($ccmail){
$cmd .= " -cc $ccmail";
}
#Send Mail via TLS?
if ($settings{'TLS'} eq 'on'){
$cmd .= " -o tls=yes"; #TLS
}
$cmd .= " -u '$settings{'MAILSUB'}'"; #Subject
$cmd .= " -m '$settings{'MAILTXT'}'"; #Mailtext
$cmd .= " -s $settings{'MAILSRV'}:$settings{'MAILPORT'}"; #Mailserver:port
$cmd .= " -a $file";
my $res=system ($cmd);
if ($res == 0){
&ACCT::logger($settings{'LOG'},"Bill for $company_cust successfully sent.\n");
}elsif ($res > 0){
&ACCT::logger($settings{'LOG'},"ERROR: Bill for $company_cust NOT sent.\n");
}
return 0;
}else{
&ACCT::logger($settings{'LOG'},"ERROR Bill for $company_cust could not be created.\n");
my $cmd = "/usr/local/bin/sendEmail ";
$cmd .= " -f $settings{'MAILSENDER'}";
$cmd .= " -t $settings{'MAILSENDER'}";
$cmd .= " -u Fehler Squid Accounting";
$cmd .= " -m 'Die Rechnung konnte nicht erzeugt und per Mail versendet werden' $company_cust";
$cmd .= " -s $settings{'MAILSRV'}:$settings{'MAILPORT'}";
my $res=system ($cmd);
return 0;
}
}

View File

@@ -0,0 +1,5 @@
/var/ipfire/accounting/settings.conf
/var/ipfire/accounting/bill
/srv/web/ipfire/html/accounting
/var/ipfire/accounting/acct.db
/var/log/accounting.log

View File

@@ -0,0 +1,49 @@
#!/usr/bin/perl
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2014 IPFire Team <alexander.marx@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/>. #
# #
###############################################################################
use DBI;
###############################################################################
my $dbh;
my $dsn="dbi:SQLite:dbname=/var/ipfire/accounting/acct.db";
###############################################################################
$dbh = DBI->connect($dsn, "", "",{RaiseError => 1, AutoCommit => 1})or die "ERROR $!";
$dbh->do('CREATE TABLE ACCT (TIME_RUN "NUM",NAME "TXT",BYTES "NUM");');
$dbh->do('CREATE TABLE ACCT_HIST (TIME_RUN "NUM",NAME "TXT",BYTES "NUM");');
$dbh->do('CREATE TABLE ACCT_ADDR (COMPANY "TXT",TYPE "TXT",NAME1 "TXT", STR "TXT", NR "TXT", POSTCODE "NUM", CITY "TXT",BANK "TXT",IBAN "TXT",BIC "TXT",BLZ "NUM",ACCOUNT "NUM", EMAIL "TXT",INTERNET "TXT", HRB "TXT", USTID "TXT", TEL "TXT", FAX "TXT", CCMAIL "TXT");');
$dbh->do('CREATE TABLE BILLINGGRP (NAME "TXT",BILLTEXT "TXT",HOST "TXT",CUST "TXT",CENT "NUM");');
$dbh->do('CREATE TABLE BILLINGHOST (GRP "TXT",HOST "TXT");');
$dbh->do('CREATE TABLE BILLPOS (GRP "TXT",AMOUNT "INT", POS "TXT", PRICE "NUM");');
$dbh->do('CREATE TABLE BILLS (NO "NUM", PATH "TXT", NAME "TXT", DATE "NUM", GRP "TXT");');
$dbh->disconnect();
exit 0;