flowscan-cuflow (1.7-5) debian-dir only changes

Summary

 debian/CUFlow.cf-example                 |   87 ++++++++
 debian/changelog                         |   44 ++++
 debian/compat                            |    1 
 debian/control                           |   28 ++
 debian/copyright                         |   18 +
 debian/flowscan-cuflow.README.Debian     |  166 +++++++++++++++
 debian/flowscan-cuflow.docs              |    1 
 debian/flowscan-cuflow.examples          |    3 
 debian/flowscan-cuflow.install           |    2 
 debian/flowscan-cugrapher.README.Debian  |   35 +++
 debian/flowscan-cugrapher.docs           |    1 
 debian/flowscan-cugrapher.install        |    2 
 debian/flowscan-cugrapher.links          |    1 
 debian/flowscan.rc                       |   47 ++++
 debian/patches/00list                    |    2 
 debian/patches/01-etc_config.patch       |   20 +
 debian/patches/02-cugrapher-config.patch |  334 +++++++++++++++++++++++++++++++
 debian/rules                             |   47 ++++
 debian/watch                             |    3 
 19 files changed, 842 insertions(+)

    
download this patch

Patch contents

--- flowscan-cuflow-1.7.orig/debian/compat
+++ flowscan-cuflow-1.7/debian/compat
@@ -0,0 +1 @@
+5
--- flowscan-cuflow-1.7.orig/debian/flowscan-cuflow.install
+++ flowscan-cuflow-1.7/debian/flowscan-cuflow.install
@@ -0,0 +1,2 @@
+CUFlow.pm usr/share/perl5
+CUFlow.cf etc/flowscan
--- flowscan-cuflow-1.7.orig/debian/rules
+++ flowscan-cuflow-1.7/debian/rules
@@ -0,0 +1,47 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+include /usr/share/dpatch/dpatch.make
+
+get-orig-source:
+	@if [ -z "$(UPSTREAM_VERSION)" ]; then echo "Please run as .../debian/rules UPSTREAM_VERSION=xxx $@"; exit 1; fi
+	wget -O "CUFlow-$(UPSTREAM_VERSION).tgz" "http://www.columbia.edu/acis/networks/advanced/CUFlow/CUFlow-$(UPSTREAM_VERSION).tgz"
+	mv CUFlow-$(UPSTREAM_VERSION).tgz flowscan-cuflow_$(UPSTREAM_VERSION).orig.tar.gz
+
+build: patch
+	# Nothing to do here.
+
+clean: clean-patched unpatch
+clean-patched:
+	dh_testdir
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_install
+	dh_installdocs
+	dh_installchangelogs
+	dh_installexamples
+	dh_link
+	dh_installdeb
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_shlibdeps
+	dh_gencontrol
+
+binary-indep: install
+	dh_testdir
+	dh_testroot
+	dh_md5sums -i
+	dh_builddeb -i
+
+# Build architecture-dependent files here.
+binary-arch: install
+
+binary: binary-indep binary-arch
+
+.PHONY: build clean binary-indep binary-arch binary install 
--- flowscan-cuflow-1.7.orig/debian/copyright
+++ flowscan-cuflow-1.7/debian/copyright
@@ -0,0 +1,18 @@
+This Debian package was created by:
+  Russell Stuart <russell-debian@stuart.id.au>
+on:
+  Tue, 20 Dec 2005 20:20:59 +1000
+
+It was downloaded from:
+  http://www.columbia.edu/acis/networks/advanced/CUFlow
+
+Upstream Authors:
+  Johan Andersen <johan@columbia.edu>
+  Matt Selsky <selsky@columbia.edu>
+
+Copyright:
+  Copyright (c) 2002-2005, Trustees of Columbia University, New York.
+
+  The program is released under the the GNU General Public
+  License Version 2, found on Debian GNU/Linux systems in
+  the file /usr/share/common-licenses/GPL-2.
--- flowscan-cuflow-1.7.orig/debian/CUFlow.cf-example
+++ flowscan-cuflow-1.7/debian/CUFlow.cf-example
@@ -0,0 +1,87 @@
+# This is typical of something you might use for a firewall server
+# for home or an small office.
+#
+# These are the subnets in our network
+# These are used only to determine whether a packet is inbound our 
+# outbound
+Subnet 192.168.1.0/24       # The local lan
+Subnet 12.34.56.78/32       # The external IP allocated by the ISP
+
+# These are networks we are particularly interested in, and want to
+# get separate rrd's for their aggregate traffic
+Network 12.34.56.78/32,192.168.1.1/32 localhost
+Network 192.168.1.0/24 lan
+
+# Where to put the rrd's
+# Make sure this is the same as $rrddir in CUGrapher.pl
+# Make sure you create it!
+OutputDir /var/local/netflow/rrd
+
+# Track multicast traffic
+Multicast
+
+# Keep top N lists 
+# Show the top ten talkers, storing reports in /cflow/flows/reports
+# and keeping the current report in /etc/httpd/data/reports/topten.html
+# Make sure you create this directory!
+Scoreboard 10 /var/local/netflow/cuflow/scoreboard /var/local/netflow/cuflow/top10.html
+
+# Same, but build an over-time average top N list
+# Make sure you create this directory!
+AggregateScore 10 /var/local/netflow/cuflow/scoreboard/agg.dat /var/local/netflow/cuflow/agg10.html
+
+# Our two netflow exporters. Produce service and protocol reports for the
+# total, and each of these.
+Router 127.0.0.1 localhost
+
+# Services we are interested in
+# File transfer traffic.  540=rsync,873=uucp,2401=cvs,3690=svn
+Service 540/tcp,873/tcp,873/udp,2401/tcp,3690/tcp		        rsync+uucp+..
+# Interfactive traffic.  22=ssh,23=telnet,992=telnets
+Service 22/tcp,23/tcp,992/tcp						ssh+telnet
+# Email out.  25/smtp,465=smtps,587=message-submission
+Service 25/tcp,465/tcp,587/tcp						email-out
+# Admin traffic.  53=dns,67-68=bootp/dhcp,69=tftp,123=ntp,389=ldap
+Service 53/udp,53/tcp,67-68/udp,67-68/tcp,69/udp,123/udp,123/tcp,389/tcp dns+ldap+dhcp..
+# Web traffic.  20-21=ftp,80=http,443=https,563=nntps,989-990=ftps,1080=socks,2628=dict,3128=squid,3130=squid,8080=windows proxy,8118=privoxy,
+Service 20-21/tcp,80/tcp,119/tcp,443/tcp,563/tcp,989-990/tcp,1080/tcp,2628/tcp,2628/udp,3128/tcp,3130/udp,8080/tcp,8118/tcp	ftp+http+nntp
+# Email in.  109-110=pop,993-imaps,995=pop3s
+Service 109-110/tcp,993/tcp,995/tcp					email-in
+# Networked file systems.  111=nfs,137-139=smb
+Service 111/tcp,111/udp,137-139/tcp,137-139/udp				nfs+smb
+# Instant messaging.  194=irc,994=ircs,1863=msn,5050=yahoo,5190=aim/icq,5222=jabber,6665-6669=irc,6891-6900=ircd
+Service 194/tcp,194/udp,994/tcp,994/udp,1863/tcp,5050/tcp,5050/udp,5190/tcp,5222/tcp,5222/udp,6665-6669/tcp,6891-6900/tcp im
+# Sql servers.  1433-1434=mssql,3050=Firebird,3306=mysql,5432=postgre
+Service 1433-1434/tcp,3050/tcp,3050/udp,3306/tcp,3306/udp,5432/tcp,5432/udp	sql
+# Voice over IP.  1718-1720=h.323,4569=iax,5060-5061=sip.
+Service 1718-1720/tcp,1720/udp,4569/tcp,4569/udp,5060-5061/tcp,5060-5061/udp	voip
+# Peer to Peer.  1214=Kazza,2705=ShareDirect,4660-4665=edonkey,5500-5503=HotLine,6346-6347=GNUTella,6881-6889=BitTorrent,8038=grouper,8888-8889=napster
+Service 1214/tcp,1214/udp,2705/tcp,2705/udp,4660-4665/tcp,4660-4665/udp,5500-5503/tcp,5500-5503/udp,6346-6347/tcp,6346-6347/udp,6881-6889/tcp,6881-6889/udp,6969/tcp,6989/udp,8038/tcp,8038/udp,8888-8889/tcp,8888-8889/udp	p2p
+# Printing.  515=lpr,631=ipp.
+Service 515/tcp,515/udp,631/tcp,631/udp					printing
+# Remote Control.  1494=citrix,1604=citrix,3389=rdp,5800=vnc,5900=vnc,6000-6005=x11.
+Service 1494/tcp,1604/udp,3389/tcp,3389/udp,5800/tcp,5900/tcp,6000-6005/tcp,6000-6005/udp		x11+vnc
+# Streaming Audio / Video.  554=QuickTime4,1558=Xing,1755=MS-NetShow,3689=iTunes,6970-6999=rtp-qt4,7000=VDOLive,7070=rtsp,6970-7170=rtsp,18888=Liquid Audio
+Service 554/tcp,554/udp,1558/udp,1755/tcp,1755/udp,3689/tcp,3689/udp,6970-6999/udp,7070/tcp,6970-7170/udp,7000/tcp,18888/tcp streaming
+# Games. 666=Doom,2300-2400=MS-DirectPlay-7,7002=CounterStrike,26000=Quake,27000-27031=CounterStrike,28800-29100=msn,11999=YahooGames,47624=MS-DirectPlay
+Service 666/tcp,666/udp,2300-2400/tcp,2300-2400/udp,7002/tcp,26000/tcp,26000/udp,27000-27031/udp,28800-29100/tcp,28800-29100/udp,11999/tcp,47624/tcp games
+
+# protocols we are interested in
+Protocol 1 icmp
+Protocol 4 ipip
+Protocol 6 tcp
+Protocol 17 udp
+Protocol 47 gre
+Protocol 50 esp
+Protocol 51 ah
+
+# ToS bit percentages to graph
+TOS 0-1 normal
+TOS 2-3 cheap
+TOS 4-7 reliable
+TOS 8-15 fast
+TOS 16-31 interactive
+TOS 32-255 other
+
+# Interested in traffic to/from AS 1
+##@ ASNumber 1 Genuity
--- flowscan-cuflow-1.7.orig/debian/flowscan-cugrapher.README.Debian
+++ flowscan-cuflow-1.7/debian/flowscan-cugrapher.README.Debian
@@ -0,0 +1,35 @@
+Using this package
+==================
+
+To use this you need to have installed flowscan-cuflow
+package and got it running.  See that packages
+README.Debian for more information.
+
+Having done that, edit /etc/flowscan/CUGrapher.cf to
+reflect your tastes.  The file is self-documenting -
+read it.  In particular, be sure to set the OutputDir
+variable must be identical to what is in
+/etc/flowscan/CUFlow.cf.
+
+Finally, reconfigure your HTTP server to run CUGrapher.pl.
+It is installed into:
+
+  /usr/lib/cgi-bin/CUGrapher.pl
+
+and this is a symlink to it:
+
+  /usr/lib/cgi-bin/CUGrapher.cgi
+
+In Apache / Apache2 adding this line to httpd.conf
+should suffice:
+
+  Alias "/cuflow"	"/usr/lib/cgi-bin/CUFlow.cgi"
+
+This will allow you to view the CUFlow web page at:
+
+  http://127.0.0.1/cuflow
+
+CUGrapher in this package has been modified to read its
+configuration from /etc/flowscan/CUGrapger.cf, so the
+instruction in the README.txt file about modifying the
+$rrddir to point to your databases no longer applies.
--- flowscan-cuflow-1.7.orig/debian/changelog
+++ flowscan-cuflow-1.7/debian/changelog
@@ -0,0 +1,44 @@
+flowscan-cuflow (1.7-5) unstable; urgency=low
+
+  * Got rid of bash ism's.
+    Closes: #530083.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Sat, 23 May 2009 17:09:28 +1000
+
+flowscan-cuflow (1.7-4) unstable; urgency=low
+
+  * Added: DM-Upload-Allowed: yes
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Mon, 28 Jan 2008 20:58:18 +1000
+
+flowscan-cuflow (1.7-3) unstable; urgency=low
+
+  * Expenaded README.Debian for cuflow to cover a few traps newbies.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Mon,  8 May 2006 20:27:02 +1000
+
+flowscan-cuflow (1.7-2) unstable; urgency=low
+
+  * Changes architecture from "any" to "all".
+    Closes: #356869.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Wed, 15 Mar 2006 09:43:06 +1000
+
+flowscan-cuflow (1.7-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Wed, 11 Jan 2006 16:56:00 +1000
+
+flowscan-cuflow (1.5-2) unstable; urgency=low
+
+  * CUGrapher.pl now retains some settings after generating graphs.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Sun,  8 Jan 2006 17:38:30 +1000
+
+flowscan-cuflow (1.5-1) unstable; urgency=low
+
+  * Initial Release. closes: #344359.
+
+ -- Russell Stuart <russell-debian@stuart.id.au>  Tue, 20 Dec 2005 18:13:02 +1000
+
--- flowscan-cuflow-1.7.orig/debian/flowscan.rc
+++ flowscan-cuflow-1.7/debian/flowscan.rc
@@ -0,0 +1,47 @@
+#!/bin/sh -e
+#
+# flowscan	Transforms Cisco netflow files into rrd files.
+#
+# chkconfig:	345 20 20
+#
+# description:	Start / stop the netflow recorder
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/flowscan
+CONFIG=/etc/flowscan/flowscan.cf
+DESC="netflow recorder"
+
+test -f $DAEMON || exit 0
+test -f $CONFIG || exit 0
+
+startstop() {
+  local background=
+  [ "$1" != ."--start" ] || background="--background"
+  start-stop-daemon "$@" $background --make-pidfile --name ${DAEMON##*/} \
+    --pidfile="/var/run/${DAEMON##*/}.pid" --startas "$DAEMON"
+}
+
+case "$1" in
+  start)
+	echo -n "Starting $DESC: "
+	startstop --start
+	echo "${DAEMON##*/}."
+	;;
+  stop)
+	echo -n "Stopping $DESC: "
+	startstop --stop
+	echo "${DAEMON##*/}."
+	;;
+  restart|force-reload)
+	echo -n "Reloading $DESC: "
+	startstop --stop --oknodo --quiet
+	startstop --start
+	echo "${DAEMON##*/}."
+	;;
+  *)
+	echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+	exit 1
+	;;
+esac
+
+exit 0
--- flowscan-cuflow-1.7.orig/debian/control
+++ flowscan-cuflow-1.7/debian/control
@@ -0,0 +1,28 @@
+Source: flowscan-cuflow
+Section: net
+Priority: optional
+Maintainer: Russell Stuart <russell-debian@stuart.id.au>
+Build-Depends: debhelper (>> 5), dpatch
+Standards-Version: 3.8.1
+Homepage: http://www.columbia.edu/acis/networks/advanced/CUFlow/
+DM-Upload-Allowed: yes
+
+Package: flowscan-cuflow
+Architecture: all
+Depends: flowscan
+Recommends: flowscan-cugrapher
+Description: Flowscan module combining CampusIO and SubNetIO
+ CUFlow is a FlowScan module designed to combine the features
+ of CampusIO and SubNetIO and to process data more quickly.  CUFlow
+ allows you to differentiate traffic by protocol, service, TOS,
+ router, and network and then generate TopN reports over 5 minutes
+ periods and over an extended period of time.
+
+Package: flowscan-cugrapher
+Architecture: all
+Depends: flowscan-cuflow
+Description: A CGI interface for flowscan-cuflow
+ CUGrapher creates graphs for the data collected CUFlow.  The graphs
+ are displayed in a web browser.  The graphs can be customised by
+ entering queries on the web form, or by creating a default set of
+ graphs in the /etc configuration file.
--- flowscan-cuflow-1.7.orig/debian/flowscan-cugrapher.install
+++ flowscan-cuflow-1.7/debian/flowscan-cugrapher.install
@@ -0,0 +1,2 @@
+CUGrapher.pl usr/lib/cgi-bin
+CUGrapher.cf etc/flowscan
--- flowscan-cuflow-1.7.orig/debian/flowscan-cuflow.docs
+++ flowscan-cuflow-1.7/debian/flowscan-cuflow.docs
@@ -0,0 +1 @@
+README.txt
--- flowscan-cuflow-1.7.orig/debian/flowscan-cugrapher.links
+++ flowscan-cuflow-1.7/debian/flowscan-cugrapher.links
@@ -0,0 +1 @@
+usr/lib/cgi-bin/CUGrapher.pl usr/lib/cgi-bin/CUGrapher.cgi
--- flowscan-cuflow-1.7.orig/debian/flowscan-cuflow.README.Debian
+++ flowscan-cuflow-1.7/debian/flowscan-cuflow.README.Debian
@@ -0,0 +1,166 @@
+Using this module
+=================
+
+1.  Edit /etc/flowscan/flowscan.cf and change the ReportClasses
+    to read:
+
+      ReportClasses CUFlow
+
+2.  Edit /etc/flowscan/CUFlow.cf to suit.  There is a copy of
+    this file as distributed upstream in the examples directory.
+    There is also an example of a version more suited to a
+    typical home / small office server.
+
+3.  Capture data in 5 minute intervals.  (See the -N flag to
+    flow-capture below).  CUFlow doesn't handle anything
+    other than 5 minute intervals very well.
+
+4.  Consider installing flowscan-cugrapher so you can display
+    pretty graphs of the data you collect on a web page.
+
+
+
+Micro HOWTO on using CUFlow to monitor data on the local server
+===============================================================
+
+My guess is that 90% of people just want to use this package
+to track what data is flowing through their Debian server,
+typically with the end goal being to nail whatever is hogging
+their bandwidth.  It will do this well, but installing this
+package is just one step among many.  Here are the entire
+list:
+
+a.  Install the fprobe-ulog package to gather the raw data.
+
+b.  Use debconf (ie during installation or later by running
+    dpkg-reconfigure fprobe-ulog) to set the FLOW_COLLECTOR
+    variable in /etc/default/fprobe-ulog to:
+
+      FLOW_COLLECTOR="127.0.0.1:555"
+
+    The INTERFACES variable can be left blank.
+
+c.  Add some "iptables -j ULOG" entries to your firewall
+    to direct the traffic to fprobe-ulog you want logged.
+    These commands may suffice:
+
+      iptables --insert INPUT 1 ! --source LAN/N --interface ! lo --jump ULOG
+      iptables --insert FORWARD 1 --interface ! lo --jump ULOG
+      iptables --insert OUTPUT 1 ! --destination  LAN/N --jump ULOG
+
+    Here "LAN/N" is the IP address range of your LAN, eg
+    "192.168.0.0/24".  Having it there prevents fprobe-ulog
+    from seeing LAN traffic.  Writing the LAN traffic to
+    the log doesn't confuse flowscan, but fprobe-ulog can
+    be overwhelmed by too much traffic, such as you might
+    find on a 100Mbit LAN.
+
+d.  Create these directories:
+
+      mkdir -p /var/local/netflow/flows
+      mkdir -p /var/local/netflow/rrd
+      mkdir -p /var/local/netflow/cuflow/scoreboard
+
+e.  Use the flow-capture program, which is provided by the
+    flow-tools package, to write the data fprobe gathers 
+    to disk.  Be sure to use version 0.68-5 or better -
+    versions prior to that had a bug which meant it didn't
+    work with flowscan.  Comment out all the existing
+    lines in /etc/flow-tools/flow-capture.conf and add
+    this line at the end:
+
+      -E1G -N 0 -n 287 -S60 -V5 -w /var/local/netflow/flows -z9 127.0.0.1/127.0.0.1/555
+
+    You can alter some of these settings (making
+    compensating changes elsewhere), but leave "-n 287"
+    and "-V5" strictly alone.
+
+f.  Edit /etc/flowscan/flowscan.cf and change the
+    FlowFileGlob line to read:
+
+      FlowFileGlob /var/local/netflow/flows/ft-v05.*
+
+g.  Edit /etc/flowscan/CUFlow.cf, and change the following
+    lines:
+
+      OutputDir /var/local/netflow/rrd
+      Scoreboard 10 /var/local/netflow/cuflow/scoreboard /var/local/netflow/cuflow/top10.html
+      AggregateScore 10 /var/local/netflow/cuflow/scoreboard/agg.dat /var/local/netflow/cuflow/agg10.html
+      Router 127.0.0.1 localhost
+
+    You will have to change the following configuration items
+    to reflect the IP address allocation for your local LAN.
+    For example, if "ifconfig eth0" says something like
+    "inet addr:192.168.1.10 Bcast:192.168.1.255 Netmask:255.255.255.0"
+    then you would set them to:
+
+      Subnet    192.168.1.10/24
+      Network   192.168.1.10/24
+
+    You must also put all other IP addresses you machine has
+    been allocated in this file.  For example, if your
+    machine is running a PPPoE server and has been allocated
+    the IP address 11.12.13.14 by your ISP, then you need a
+    line like this:
+
+      Subnet	11.12.13.14/32
+
+    Alas adding this IP address is NOT optional.  CUFlow will
+    only gather statistics on packets it thinks are going from
+    an internal IP address to an external IP address, or visa
+    versa.  If you don't add all IP addresses the machine has,
+    then incoming packet destined those IP addresses will look
+    like external-->external, and hence be ignored.  This is a
+    real issue if your ISP allocated you your IP address
+    dynamically.  Your only recourse it to create CUFlow.cf
+    dynamically every time you re-connect the link, and
+    re-start flowscan after you have done so.
+
+h.  Start/restart the services you have just configured by
+    running:
+
+      /etc/init.d/fprobe-ulog restart
+      /etc/init.d/flow-capture restart
+
+i.  Within 5 minutes files named ft-v05.* should appear in
+    /var/local/netflow/flows.  When they do run "flowscan".
+    No parameters are needed.  The only error your should
+    see is something like:
+
+      illegal attempt to update using time 1135127401 when last update time is 1135127701 (minimum one second step)
+
+    Press control+C to stop it running.
+
+j.  Install flowscan.rc to /etc/init.d.  flowscan.rc can be
+    found in the /usr/share/doc/flowscan-cuflow/examples
+    directory:
+
+      cp /usr/share/doc/flowscan-cuflow/examples/flowscan.rc /etc/init.d/flowscan
+      update-rc.d flowscan defaults
+      /etc/init.d/flowscan start
+
+k.  Install the flow-cugrapher package.
+
+l.  Edit /etc/flowscan/CUGrapher.cf and change these settings:
+
+      OutputDir /var/local/netflow/rrd
+      Scoreboard /var/local/netflow/cuflow/top10.html
+      AggregateScore /var/local/netflow/cuflow/agg10.html
+
+m.  Configure your web server to run CUGrapher.pl.  For
+    Apache this line will achieve that for the URL
+    "http://host.name/cuflow":
+
+      Alias "/cuflow"	"/usr/lib/cgi-bin/CUFlow.cgi"
+
+    Restart apache.
+
+    You should now be able to see pretty pictures when
+    you display http://127.0.0.1/cuflow.
+
+n.  Use the web page to produce the graphs you would like
+    to see.  You can display those graphs when the web page
+    is initially displayed by following the instructions
+    in /etc/flowscan/CUGrapger.cf for the "DefaultGraph"
+    variable.  Add one "DefaultGraph" line for each graph
+    you want to display.
--- flowscan-cuflow-1.7.orig/debian/flowscan-cuflow.examples
+++ flowscan-cuflow-1.7/debian/flowscan-cuflow.examples
@@ -0,0 +1,3 @@
+CUFlow.cf
+debian/flowscan.rc
+debian/CUFlow.cf-example
--- flowscan-cuflow-1.7.orig/debian/watch
+++ flowscan-cuflow-1.7/debian/watch
@@ -0,0 +1,3 @@
+version=3
+
+http://www.columbia.edu/acis/networks/advanced/CUFlow/CUFlow-(.*).tgz
--- flowscan-cuflow-1.7.orig/debian/flowscan-cugrapher.docs
+++ flowscan-cuflow-1.7/debian/flowscan-cugrapher.docs
@@ -0,0 +1 @@
+README.txt
--- flowscan-cuflow-1.7.orig/debian/patches/01-etc_config.patch
+++ flowscan-cuflow-1.7/debian/patches/01-etc_config.patch
@@ -0,0 +1,20 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## etc_config.patch.dpatch by  <russell-debian@stuart.id.au>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Move config files to /etc
+
+@DPATCH@
+diff -Nur flowscan-cuflow-1.7.orig/CUFlow.pm flowscan-cuflow-1.7/CUFlow.pm
+--- flowscan-cuflow-1.7.orig/CUFlow.pm	2006-01-11 06:47:04.000000000 +1000
++++ flowscan-cuflow-1.7/CUFlow.pm	2006-01-11 16:36:48.000000000 +1000
+@@ -346,7 +346,8 @@
+ $CUFlow::MCAST_MASK = unpack('N', inet_aton('240.0.0.0'));
+ 
+ $CUFlow::SUBNETS = new Net::Patricia || die "Could not create a trie ($!)\n";
+-&parseConfig("${FindBin::Bin}/CUFlow.cf");	# Read our config file
++#&parseConfig("${FindBin::Bin}/CUFlow.cf");	# Read our config file
++&parseConfig("/etc/${FindBin::Script}/CUFlow.cf");	# Read our config file
+ 
+ sub parseConfig {
+     my $file = shift;
--- flowscan-cuflow-1.7.orig/debian/patches/02-cugrapher-config.patch
+++ flowscan-cuflow-1.7/debian/patches/02-cugrapher-config.patch
@@ -0,0 +1,334 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02-cugrapher-config.patch.dpatch by  <russell-debian@stuart.id.au>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Make CUGrapher.pl read settings from /etc/flowscan/CUGrapher.cf
+
+@DPATCH@
+diff -Nur CUFlow-1.7/CUGrapher.cf flowscan-cuflow-1.7/CUGrapher.cf
+--- CUFlow-1.7/CUGrapher.cf	1970-01-01 10:00:00.000000000 +1000
++++ flowscan-cuflow-1.7/CUGrapher.cf	2006-01-11 16:58:03.000000000 +1000
+@@ -0,0 +1,67 @@
++# Configuration file for CUGrapger.pl.
++#
++
++# Where to find the rrd's.  You must set this.
++# Make sure it is the same as OutputDir in CUFlow.cf.  
++# 
++# Eg:      OutputDir /cflow/reports/rrds
++# Default: not set
++
++# Organisation name - appears in the graph title.
++#
++# Eg:      Organization Columbia University Campus
++# Default: (blank)
++
++# Default number of hours to go back.
++#
++# Eg:      Hours 24
++# Default: Hours 48
++
++# Default width of graph in pixels.
++#
++# Eg:      Width 800
++# Default: Width 640
++
++# Default height of graph in pixels.
++#
++# Eg:      Height 480
++# Default: Height 320
++
++# Default image type.  Can be png or gif.
++#
++# Eg:      ImageType gif
++# Default: ImageType png
++
++# Default graph title.
++#
++# Eg:      Title My Graph
++# Default: Title Well Known Protocols/Services
++
++#
++# Specify a graph to be displayed on startup, when no query
++# has been entered.  To display multiple graphs supply
++# multiple "DefaultGraph" lines.  To generate the string
++# following the "DefaultGraph":
++#  1.  Use the web page to generate the graph you want.
++#  2.  Copy the query part of the URL displayed by your browser
++#      (ie everything part the '?').
++#  3.  Remove the ';showmenu=1' from the query string copied.
++#
++# Eg:      DefaultGraph report=bits;hours=48;imageType=png;width=640;height=320;duration=;router=all;all_all_services=1;legend=1;title=My%20Graph
++# Default: not set
++
++# The path to the AggregateScore web page build by CUFlow.  If
++# non-blank a like to AggregateScore web page will be displayed.
++# If supplied this must be the same as the file name given to
++# the AggregateScore setting in CUFlow.cf.
++#
++# Eg:      AggregateScore /var/local/netflow/cuflow/agg10.html
++# Default: (not set)
++
++# The path to the Scoreboard web page built by CUFlow.  If
++# non-blank a link to the Scoreboard web page will be
++# displayed.  If supplied this must be the same as the file
++# name given to the Scoreboard setting in CUFlow.cf.
++#
++# Eg:      Scoreboard /var/local/netflow/cuflow/top10.html
++# Default: (not set)
+diff -Nur CUFlow-1.7/CUGrapher.pl flowscan-cuflow-1.7/CUGrapher.pl
+--- CUFlow-1.7/CUGrapher.pl	2006-01-11 06:47:10.000000000 +1000
++++ flowscan-cuflow-1.7/CUGrapher.pl	2006-01-11 17:02:07.000000000 +1000
+@@ -15,23 +15,68 @@
+ 
+ ### Local settings ###
+ 
++# top 10 url's
++my $aggregateScoreFile;
++my $scoreboardFile;
+ # directory with rrd files
+-my $rrddir = "/cflow/reports/rrds";
++my $rrddir;
+ # default number of hours to go back
+ my $hours = 48;
+ # duration of graph, starting from $hours ago
+ my $duration;
+ # organization name
+-my $organization = "Estimated Columbia University Campus";
++my $organization = "";
+ # default graph width
+ my $width = 640;
+ # default graph height
+ my $height = 320;
+ # default image type (png/gif)
+ my $imageType = 'png';
++# default image display on startup
++my @defaultGraph;
++# Page title
++my $title = "Well Known Protocols/Services";
+ 
+ ### End local settings ###
+ 
++## Read the configuration file
++my $conffile = "/etc/flowscan/CUGrapher.cf";
++if (open(FH,$conffile)) {
++    while(<FH>) {
++	s/\#.*$//;		# Strip out everything after a #
++	next if /^\s*$/;	# Skip blank lines
++
++	if (/^\s*OutputDir\s+(\S+)\s*$/) {
++	    $rrddir = $1;
++	} elsif (/^\s*AggregateScore\s+(\S.*)\s*$/) {
++	    $aggregateScoreFile = $1;
++	} elsif (/^\s*Scoreboard\s+(\S.*)\s*$/) {
++	    $scoreboardFile = $1;
++	} elsif (/^\s*Organization\s+(\S.*)\s*$/) {
++	    $organization = $1;
++	} elsif (/^\s*Width\s+(\S+)\s*$/) {
++	    $width = $1;
++	} elsif (/^\s*Height\s+(\S.*)\s*$/) {
++	    $height = $1;
++	} elsif (/^\s*ImageType\s+(\S.*)\s*$/) {
++	    $imageType = $1;
++	} elsif (/^\s*Hours\s+(\S.*)\s*$/) {
++	    $hours = $1;
++	} elsif (/^\s*Title\s+(\S.*)\s*$/) {
++	    $title = $1;
++	} elsif (/^\s*DefaultGraph\s+(\S*)\s*$/) {
++	    $defaultGraph[@defaultGraph] = $1;
++	} else {
++	    &browserDie( "Invalid line $. in $conffile\n\t$_\n" );
++	}
++    }
++    close(FH);
++}
++
++if (! $rrddir) {
++    &browserDie( "OutputDir not set in $conffile\n" );
++}
++
+ # auto-flush STDOUT
+ $| = 1;
+ 
+@@ -41,12 +86,21 @@
+ 		   'flows' => 'flows' );
+ 
+ unless( param() ) {
+-    &showMenu();
++    &showMenu(@defaultGraph);
+ }
+ 
+ if (param('showmenu')) {
+     Delete('showmenu');
+-    &showMenu(self_url());
++    @defaultGraph = ( query_string() );
++    &showMenu(@defaultGraph);
++}
++
++if (param("show-aggregateScore")) {
++    &showFile('AggregateScore', $aggregateScoreFile);
++}
++
++if (param("show-scoreboard")) {
++    &showFile('Scoreboard', $scoreboardFile);
+ }
+ 
+ # protocol/service -> filename
+@@ -72,6 +126,7 @@
+ &getDuration();
+ &getWidth();
+ &getHeight();
++&getTitle();
+ &getTotal();
+ &getDebug();
+ 
+@@ -104,15 +159,57 @@
+     }
+ }
+ 
++sub showFile {
++    my ($title, $fileName) = @_;
++    my $q = new CGI::Pretty(""); # Avoid inheriting the parameter list
++
++    print $q->header;
++
++    open(HTMLFILE, $fileName) or
++      &browserDie("Can't open ${title} ${fileName}");
++    while (<HTMLFILE>) {
++      print $_;
++    }
++    exit;
++}
++
++sub defParam {
++  my ($name, $default) = @_;
++  my $result = param($name);
++  
++  return $result if ($result);
++  return $default;
++}
++
+ sub showMenu {
+-    my ($imgurl) = @_;
++    my (@graphs) = @_;
+     my $q = new CGI::Pretty(""); # Avoid inheriting the parameter list
++    my $url = $q->url(-relative => 1);
++    my $default;
+     
+ 
+     print $q->header, $q->start_html( -title => 'Generate FlowScan graphs on the fly',
+ 				      -bgcolor => 'ffffff' );
++    
++    print $q->h1({-align => "center"}, "NetFlow report for ${organization}");
++
++    print $q->start_p({-align => "center"});
++    if ($aggregateScoreFile) {
++        print $q->a(
++	  { -href => "${url}?show-aggregateScore=1" },
++	  $q->font({-size => "+1"}, "See the Aggregate Scores"));
++	print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
++    }
++    if ($scoreboardFile) {
++        print $q->a(
++	  { -href => "${url}?show-scoreboard=1" },
++	  $q->font({-size => "+1"}, "See the Scoreboard"));
++    }
++    print $q->end_p();
++
++    foreach my $imguri (@graphs) {
++	my $imgurl = $url . "?" . $imguri;
+ 
+-    if ($imgurl) {
+ 	if ($imgurl =~ /debug=1/) {
+ 	    (my $cleanimgurl = $imgurl) =~ s/debug=1//;
+ 	    print $q->center( $q->a( { href => $imgurl},
+@@ -124,8 +221,8 @@
+ 					-alt => 'The Graph you requested'}));
+ 	}
+     }
+-    
+-    print $q->start_form( -action => $q->url(), -method => 'get' ); # Just the url, without query string
++      
++    print $q->start_form( -action => $url, -method => 'get' ); # Just the url, without query string
+ 
+     print $q->start_table( { -align => 'center',
+ 			     -cellspacing => '10' } );
+@@ -137,37 +234,41 @@
+ 		  "Report: ",
+ 		  $q->popup_menu( -name => 'report',
+ 				  -values => [sort keys %reportName],
+-				  -default => '' ) );
++				  -default => defParam('report', 'bin') ) );
+     
+-    my %hours = ( 24 => '24 hours',
++    my %hours = ( 12 => '12 hours',
++		  24 => '24 hours',
+ 		  36 => '36 hours',
+ 		  48 => '48 hours',
+ 		  168 => '1 week',
+ 		  720 => '1 month' );
++    $hours{defParam('hours', $hours)} = defParam('hours', $hours) . " hours" 
++      if (!$hours{defParam('hours', $hours)}); 
+ 
+     print $q->td( { -align => 'right' },
+ 		  "Time period: ",
+ 		  $q->popup_menu( -name => 'hours',
+ 				  -values => [sort {$a <=> $b} keys %hours],
+-				  -default => $hours,
++				  -default => defParam('hours', $hours) + "",
+ 				  -labels => \%hours ) );
+     
+     print $q->td( { -rowspan => '2' },
+ 		  "Image type: ",
+ 		  $q->popup_menu( -name => 'imageType',
+ 				  -values => ['png', 'gif'],
+-				  -default => 'png' ) );
++				  -default => defParam('imageType', 'png') ) );
+     
++    $default = param
+     print $q->td( { -rowspan => '2' },
+ 		  "Width:",
+ 		  $q->textfield( -name => "width",
+-				 -default => $width,
++				 -default => defParam('width', $width),
+ 				 -size => 7 ) );
+     
+     print $q->td( { -rowspan => '2' },
+ 		  "Height:",
+ 		  $q->textfield( -name => "height",
+-				 -default => $height,
++				 -default => defParam('height', $height),
+ 				 -size => 7 ) );
+ 
+     print $q->end_Tr();
+@@ -267,6 +368,7 @@
+     print $q->br;
+ 
+     print $q->hidden('showmenu','1');
++    print $q->hidden('title',$title);
+ 
+     print $q->center( $q->submit( -name => '',
+ 				  -value => 'Generate graph' ),
+@@ -355,6 +457,12 @@
+     }
+ }
+ 
++sub getTitle {
++  if ( param('title') ) {
++    $title = param('title');
++  }
++}
++
+ sub getDebug {
+     if( param('debug') && param('debug') eq '1' ) {
+ 	$debug = 1;
+@@ -652,8 +760,7 @@
+     push @args, ('--interlaced',
+ 		 '--imgformat='.uc($imageType),
+ 		 '--vertical-label='.$reportName{$reportType}.' per second',
+-		 "--title=${organization} Well Known Protocols/Services, ".
+-		 "\u${reportName{$reportType}}, +out/-in",
++		 "--title=${title}, \u${reportName{$reportType}}, +out/-in",
+ 		 "--start=".(time - $hours*60*60),
+ 		 "--end=".(time - $hours*60*60 + $duration*60*60),
+ 		 "--width=${width}",
--- flowscan-cuflow-1.7.orig/debian/patches/00list
+++ flowscan-cuflow-1.7/debian/patches/00list
@@ -0,0 +1,2 @@
+01-etc_config.patch
+02-cugrapher-config.patch