* ffluci: first work on statistics application based on collectd

This commit is contained in:
Jo-Philipp Wich 2008-05-17 17:43:49 +00:00
parent 6eae1a0103
commit 191848dae0
16 changed files with 231 additions and 0 deletions

View file

@ -0,0 +1,2 @@
include ../../build/config.mk
include ../../build/module.mk

View file

@ -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
}

View file

@ -0,0 +1 @@
module("ffluci.controller.admin.statistics", package.seeall)

View file

@ -0,0 +1 @@
module("ffluci.controller.public.statistics", package.seeall)

View file

@ -0,0 +1,71 @@
--[[
Luci configuration model for statistics - general collectd configuration
(c) 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
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

View file

@ -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" )

View file

@ -0,0 +1,31 @@
<h1><%:welcome Willkommen%>!</h1>
<p>
Du bist jetzt mit dem freien Funknetz
<a href="<%~freifunk.community.homepage%>"><%~freifunk.community.name%></a> verbunden.<br />
Wir sind ein experimentelles Gemeinschaftsnetzwerk, aber kein Internetanbieter.
</p>
<p>
Ein Zugang <strong>ins Internet</strong> 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:
<ul>
<li>bitte <strong>keine Filesharing-Programme</strong> betreiben!</li>
<li>bitte <strong>keine unnötigen Downloads oder Streams</strong> starten!</li>
<li>bitte <strong>keine illegalen Aktivitäten</strong>!</li>
</ul>
</p>
<p>
Wenn Du unsere Idee gut findest, kannst Du uns unterstützen:
<ul>
<li><a href="<%~freifunk.community.homepage%>">Werde selbst Freifunker oder teile deinen Internetzugang!</a></li>
<li>Betreibe deine anderen WLAN-Geräte <em>NICHT</em> auf den Kanälen 1-5, diese stören oft unser Netz.</li>
</ul>
</p>
<p>
Mit einem Klick auf <em><%:accept Annehmen%></em> kannst du für <%~luci_splash.general.leasetime%> Stunden
über unser Netz das Internet verwenden. Dann wirst du erneut aufgefordet, diese Bedingungen zu akzeptieren.
</p>