* ffluci: first work on statistics application based on collectd
This commit is contained in:
parent
6eae1a0103
commit
191848dae0
16 changed files with 231 additions and 0 deletions
2
applications/luci-statistics/Makefile
Normal file
2
applications/luci-statistics/Makefile
Normal file
|
@ -0,0 +1,2 @@
|
|||
include ../../build/config.mk
|
||||
include ../../build/module.mk
|
85
applications/luci-statistics/root/etc/init.d/luci_statistics
Normal file
85
applications/luci-statistics/root/etc/init.d/luci_statistics
Normal 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
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
module("ffluci.controller.admin.statistics", package.seeall)
|
|
@ -0,0 +1 @@
|
|||
module("ffluci.controller.public.statistics", package.seeall)
|
|
@ -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
|
|
@ -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" )
|
|
@ -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>
|
Loading…
Reference in a new issue