From 191848dae080ba19390925b7acefe99e00968ec3 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 17 May 2008 17:43:49 +0000 Subject: [PATCH] * ffluci: first work on statistics application based on collectd --- applications/luci-statistics/Makefile | 2 + .../root/etc/config/luci_statistics | 0 .../root/etc/init.d/luci_statistics | 85 +++++++++++++++++++ .../src/controller/admin/statistics.lua | 1 + .../src/controller/public/statistics.lua | 1 + .../src/model/cbi/admin_statistics/csv.lua | 0 .../src/model/cbi/admin_statistics/dns.lua | 0 .../src/model/cbi/admin_statistics/exec.lua | 0 .../src/model/cbi/admin_statistics/index.lua | 71 ++++++++++++++++ .../model/cbi/admin_statistics/interface.lua | 0 .../model/cbi/admin_statistics/iptables.lua | 0 .../src/model/cbi/admin_statistics/ping.lua | 0 .../model/cbi/admin_statistics/processes.lua | 0 .../model/cbi/admin_statistics/tcpconns.lua | 0 .../src/model/menu/70luci-statistics.lua | 40 +++++++++ .../src/view/public_statistics/index.htm | 31 +++++++ 16 files changed, 231 insertions(+) create mode 100644 applications/luci-statistics/Makefile create mode 100644 applications/luci-statistics/root/etc/config/luci_statistics create mode 100644 applications/luci-statistics/root/etc/init.d/luci_statistics create mode 100644 applications/luci-statistics/src/controller/admin/statistics.lua create mode 100644 applications/luci-statistics/src/controller/public/statistics.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/csv.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/dns.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/exec.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/index.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/interface.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/iptables.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/ping.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/processes.lua create mode 100644 applications/luci-statistics/src/model/cbi/admin_statistics/tcpconns.lua create mode 100644 applications/luci-statistics/src/model/menu/70luci-statistics.lua create mode 100644 applications/luci-statistics/src/view/public_statistics/index.htm diff --git a/applications/luci-statistics/Makefile b/applications/luci-statistics/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/applications/luci-statistics/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/applications/luci-statistics/root/etc/config/luci_statistics b/applications/luci-statistics/root/etc/config/luci_statistics new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/root/etc/init.d/luci_statistics b/applications/luci-statistics/root/etc/init.d/luci_statistics new file mode 100644 index 000000000..20f7865fd --- /dev/null +++ b/applications/luci-statistics/root/etc/init.d/luci_statistics @@ -0,0 +1,85 @@ +#!/bin/sh /etc/rc.common +START=70 + +iface_add() { + local cfg="$1" + + config_get net "$cfg" network + [ -n "$net" ] || return 0 + + config_get iface "$net" ifname + [ -n "$iface" ] || return 0 + iface="${iface%%:*}" + + config_get ipaddr "$net" ipaddr + [ -n "$ipaddr" ] || return 0 + + config_get netmask "$net" netmask + [ -n "$netmask" ] || return 0 + + eval "$(ipcalc.sh $ipaddr $netmask)" + + iptables -t nat -A luci_splash -i "$iface" -s "$NETWORK/$PREFIX" -j luci_splash_portal + iptables -t nat -A luci_splash_portal -i "$iface" -s "$NETWORK/$PREFIX" -d "$ipaddr" -p tcp -m multiport --dports 22,80,443 -j RETURN +} + +blacklist_add() { + local cfg="$1" + + config_get mac "$cfg" mac + [ -n "$mac" ] && iptables -t nat -A luci_splash_portal -m mac --mac-source "$mac" -j DROP +} + +whitelist_add() { + local cfg="$1" + + config_get mac "$cfg" mac + [ -n "$mac" ] && iptables -t nat -A luci_splash_portal -m mac --mac-source "$mac" -j RETURN +} + +start() { + ### Read chains from config + include /lib/network + scan_interfaces + config_load luci_splash + + ### Create subchains + iptables -t nat -N luci_splash + iptables -t nat -N luci_splash_portal + iptables -t nat -N luci_splash_leases + + ### Build the main and portal rule + config_foreach blacklist_add blacklist + config_foreach whitelist_add whitelist + config_foreach iface_add iface + + ### Build the portal rule + iptables -t nat -A luci_splash_portal -p udp --dport 53 -j RETURN + iptables -t nat -A luci_splash_portal -j luci_splash_leases + + ### Build the leases rule + iptables -t nat -A luci_splash_leases -p tcp --dport 80 -j REDIRECT --to-ports 8082 + iptables -t nat -A luci_splash_leases -j DROP + + ### Start the splash httpd + httpd -c /etc/luci_splash_httpd.conf -p 8082 -h /usr/lib/luci-splash/htdocs + + ### Hook in the chain + iptables -t nat -A prerouting_rule -j luci_splash +} + +stop() { + ### Hook out the chain + iptables -t nat -D prerouting_rule -j luci_splash + + ### Clear subchains + iptables -t nat -F luci_splash_leases + iptables -t nat -F luci_splash_portal + iptables -t nat -F luci_splash + + ### Delete subchains + iptables -t nat -X luci_splash_leases + iptables -t nat -X luci_splash_portal + iptables -t nat -X luci_splash +} + diff --git a/applications/luci-statistics/src/controller/admin/statistics.lua b/applications/luci-statistics/src/controller/admin/statistics.lua new file mode 100644 index 000000000..3318f70cd --- /dev/null +++ b/applications/luci-statistics/src/controller/admin/statistics.lua @@ -0,0 +1 @@ +module("ffluci.controller.admin.statistics", package.seeall) diff --git a/applications/luci-statistics/src/controller/public/statistics.lua b/applications/luci-statistics/src/controller/public/statistics.lua new file mode 100644 index 000000000..d7ed1e327 --- /dev/null +++ b/applications/luci-statistics/src/controller/public/statistics.lua @@ -0,0 +1 @@ +module("ffluci.controller.public.statistics", package.seeall) diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/csv.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/csv.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/dns.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/dns.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/exec.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/exec.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/index.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/index.lua new file mode 100644 index 000000000..743909c18 --- /dev/null +++ b/applications/luci-statistics/src/model/cbi/admin_statistics/index.lua @@ -0,0 +1,71 @@ +--[[ + +Luci configuration model for statistics - general collectd configuration +(c) 2008 Freifunk Leipzig / Jo-Philipp Wich + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ + +]]-- + +require("ffluci.sys") + + +m = Map("collectd", "Collector Daemon", +[[Collectd ist ein kleiner und flexibler Dienst zum Sammeln und Abfragen von Daten +aus verschieden Quellen. Zur weiteren Verarbeitung werden die Daten in RRD Datenbanken +gespeichert oder per Multicast Relaying über das Netzwerk versendet.]]) + +-- general config section +s = m:section( NamedSection, "general", "collectd", "Allgemeine Einstellungen" ) + +-- general.basedir (BaseDir) +basedir = s:option( Value, "BaseDir", "Basisverzeichnis" ) +basedir.default = "/var/run/collectd" + +-- general.include (Include) +include = s:option( Value, "Include", "Verzeichnis für Unterkonfigurationen" ) +include.default = "/etc/collectd/conf.d/*.conf" + +-- general.pidfile (PIDFile) +pidfile = s:option( Value, "PIDFile", "PID-Datei für den Collector Dienst" ) +pidfile.default = "/var/run/collectd.pid" + +-- general.plugindir (PluginDir) +plugindir = s:option( Value, "PluginDir", "Verzeichnis für die Collector-Plugins" ) +plugindir.default = "/usr/lib/collectd/" + +-- general.typesdb (TypesDB) +typesdb = s:option( Value, "TypesDB", "Datenbank mit den Datenset-Beschreibungen" ) +typesdb.default = "/etc/collectd/types.db" + +-- general.interval (Interval) +interval = s:option( Value, "Interval", "Abfrageintervall für die Datenerfassung in Sekunden" ) +interval.default = 60 +interval.isnumber = true + +-- general.readthreads (ReadThreads) +readthreads = s:option( Value, "ReadThreads", "Anzahl paralleler Prozesse für die Datenabfrage" ) +readthreads.default = 5 +readthreads.isnumber = true + +-- general.hostname (Hostname) +hostname = s:option( Value, "Hostname", "Hostname zur Identifikation des Collector Dienstes (leer lassen um den Namen automatisch zu bestimmen)" ) +hostname.default = ffluci.sys.hostname() +hostname.optional = true + +-- general.fqdnlookup (FQDNLookup) +fqdnlookup = s:option( Flag, "FQDNLookup", "Versuchen den vollen Hostnamen dieser Installation herauszufinden" ) +fqdnlookup.enabled = "true" +fqdnlookup.disabled = "false" +fqdnlookup.default = "false" +fqdnlookup.optional = true +fqdnlookup:depends( "Hostname", "" ) + + +return m diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/interface.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/interface.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/iptables.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/iptables.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/ping.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/ping.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/processes.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/processes.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/cbi/admin_statistics/tcpconns.lua b/applications/luci-statistics/src/model/cbi/admin_statistics/tcpconns.lua new file mode 100644 index 000000000..e69de29bb diff --git a/applications/luci-statistics/src/model/menu/70luci-statistics.lua b/applications/luci-statistics/src/model/menu/70luci-statistics.lua new file mode 100644 index 000000000..ded0b8676 --- /dev/null +++ b/applications/luci-statistics/src/model/menu/70luci-statistics.lua @@ -0,0 +1,40 @@ +add( "admin", "statistics", "Statistiken", 70 ) +--act( "apache", "Apache" ) +--act( "apcups", "Apcups" ) +--act( "ascent", "Ascent" ) +--act( "cpufreq", "Cpufreq" ) +act( "csv", "CSV" ) +--act( "df", "Speicher" ) +--act( "disk", "Festplatte" ) +act( "dns", "DNS" ) +--act( "email", "E-Mail" ) +act( "exec", "Exec" ) +--act( "hddtemp", "Festplattentemperatur" ) +act( "interface", "Netzwerkschnittstellen" ) +act( "iptables", "Firewall" ) +--act( "irq", "Interrupts" ) +--act( "libvirt", "Virtualisierung" ) +--act( "logfile", "Protokolldateien" ) +--act( "mbmon", "Mainboardsensoren" ) +--act( "memcached", "Memcached" ) +--act( "mysql", "MySQL" ) +--act( "netlink", "Netlink" ) +--act( "network", "Netzwerk" ) +--act( "nginx", "nginx Server" ) +--act( "ntpd", "NTP Server" ) +--act( "nut", "Nut" ) +--act( "perl", "Perl" ) +act( "ping", "Ping" ) +--act( "powerdns", "Powerdns Server" ) +act( "processes", "Prozessüberwachung" ) +--act( "rrdtool", "RRD Tool" ) +--act( "sensors", "Sensoren" ) +--act( "snmp", "SNMP Datenquellen" ) +--act( "syslog", "Systemlog" ) +--act( "tail", "Dateiverfolgung" ) +--act( "teamspeak2", "TeamSpeak 2" ) +act( "tcpconns", "TCP Verbindungen" ) +--act( "unixsock", "UNIX Sockets" ) +--act( "uuid", "UUID" ) +--act( "vmem", "Vmem" ) +--act( "vserver", "VServer" ) diff --git a/applications/luci-statistics/src/view/public_statistics/index.htm b/applications/luci-statistics/src/view/public_statistics/index.htm new file mode 100644 index 000000000..db4bd0f78 --- /dev/null +++ b/applications/luci-statistics/src/view/public_statistics/index.htm @@ -0,0 +1,31 @@ +

<%:welcome Willkommen%>!

+

+Du bist jetzt mit dem freien Funknetz +<%~freifunk.community.name%> verbunden.
+Wir sind ein experimentelles Gemeinschaftsnetzwerk, aber kein Internetanbieter. +

+ +

+Ein Zugang ins Internet ist trotzdem möglich, +da einige Freifunker ihre privaten Internetzugänge zur Verfügung stellen. +Diese Zugänge müssen sich hier alle teilen. +Bitte sei Dir dessen bewusst und verhalte Dich dementsprechend: +

+

+ +

+Wenn Du unsere Idee gut findest, kannst Du uns unterstützen: +

+

+ +

+Mit einem Klick auf <%:accept Annehmen%> kannst du für <%~luci_splash.general.leasetime%> Stunden +über unser Netz das Internet verwenden. Dann wirst du erneut aufgefordet, diese Bedingungen zu akzeptieren. +

\ No newline at end of file -- 2.25.1