fli4l - OPT_ONCO

# OPT_ONCO Version 3.0.1.1

## ONlineCOuntdown

Letzte Änderung: $Id: onco.html 22 2006-03-12 18:45:59Z sirprize $

### Überblick

OnCo ist ein Opt-Paket für fli4l, mit dem man den Internetzugang für die einzelnen PCs im lokalen Netzwerk steuern kann. Damit ist auch der Betrieb eines "Internetcafes" möglich.

### Funktionsweise

OnCo sperrt alle ihm bekannten Rechner. Per Webinterface (oder zeitgesteuert) kann man dann einzelne PCs freischalten, und zwar entweder unbeschränkt oder für eine gewisse Zeit. Nach Ablauf dieser Zeit wird der entsprechende PC wieder gesperrt. So kann man z.B. den Kindern eine Stunde Surfzeit geben. Dies geht auch automatisiert, z.B. Montags bis Freitags 18:00 bis 19:00.
Bitte beachten: diese Art der Freischaltung funktioniert nur, wenn der Rechner vor dem Freischaltungszeitpunkt schon hochgefahren ist. Dies liegt an der internen Funktionsweise von OnCo.

### Features

- Dauerhaftes Freischalten von Clients für den Internetzugang.
- Freischalten von Clients für 15, 30, 60, 120 oder 240 Minuten.
- Verlängern von Onlinezeit um 15, 30, 60, 120 oder 240 Minuten.
- Sofortiges Sperren einzelner oder aller Clients.
- Anzeige der Restsurfzeit.
- Zeitabhängige Freischaltung einzelner Clients.
- Sperren von ICMP und UDP optional auch möglich.
- Optional: Anzeige, ob und welche Rechner gerade eingeschaltet sind.

### Voraussetzungen

- httpd
  - Die benötigten Rechte (HTTPD_USER_x_RIGHTS), um die Rechnerliste anzuzeigen, sind "onco:view". Zum Ändern der Freischaltung ist es "onco:change" bzw. "onco:all". Natürlich funktioniert es auch mit "all" ;-)
- easycron

Beide sind bei den fli4l-3-Downloads zu finden.

### Installation

- Sicherstellen, dass httpd und easycron (aus den Grundpaketen) installiert sind.
- In config/httpd.txt muss OPT_HTTPD='yes' stehen, und ein Benutzer muss angelegt sein
- In config/easycron.txt muss lediglich OPT_EASYCRON='yes' stehen. Eine weitere Konfiguration ist nicht nötig
- Die gepackte Datei "NNNN-onco-3.x.x-fli4l-3.x.x.zip" ins fli4l-Verzeichnis entpacken
- config/onco.txt öffnen und anpassen, Hinweise dazu gibt es weiter unten in dieser Datei
- Bei Unklarheiten mir (Michael Mattes) eine E-Mail schicken (Vorsicht: lange Wartezeit!)
- Diskette erstellen und rebooten.
- Fertig!

### Konfigurationshinweise

#### Übersicht der Konfigurationsvariablen

- OPT_ONCO: Bestimmt, ob OnCo überhaupt installiert werden soll. Ist Voraussetzung für alle anderen Einstellungen von OnCo
- ONCO_BLOCKALL_HOSTS: Falls diese Variable auf yes steht, werden beim Booten des Routers alle Rechner gesperrt, die fli4l kennt. Ansonsten ist der Internetzugang für alle frei, bis man ihn über das Webinterface sperrt.
- ONCO_BLOCK_UDP: Normalerweise blockt OnCo nur TCP-Pakete. Manche Spiele (und auch andere Programme) verwenden jedoch manchmal UDP. Falls diese Option auf yes gesetzt ist, wird auch UDP geblockt.
- ONCO_BLOCK_ICMP: Wie bei ONCO_BLOCK_UDP, nur mit ICMP-Paketen. Verhindert z.B. das Anpingen von Rechnern im Internet.
- ONCO_BLOCK_DNS: Wenn diese Option auf yes gesetzt ist, können gesperrte Rechner keine DNS-Anfragen an den fli4l-Router schicken. Dies verhindert eine evtl. unnötige Einwahl ins Internet und ist deshalb für Leute ohne Flatrate sehr zu empfehlen. Für Flatrate-Nutzer ist diese Option eher unnötig und kann auch zu Problemen im lokalen Netzwerk führen (da auch lokale Namen nicht mehr aufgelöst werden können). Achtung: Auch wenn ich die Einstellungen teste, kann ich nicht dafür garantieren, daß nicht doch eine Einwahl durch einen gesperrten Rechner irgendwie geschehen kann. Falls so etwas auffällt: bitte mir eine E-Mail mit möglichst vielen Informationen dazu schreiben!
- ONCO_PORTBLOCK_N: Dies gibt die Anzahl der TCP-Ports an, die für gesperrte Rechner auf dem Router nicht erreichbar sind. Wichtig für Proxy-Benutzer! Die Proxy-Ports müssen hier eingestellt werden. Sonst würde ein gesperrter Rechner zwar nicht direkt ins Internet kommen, aber der Proxy würde es trotzdem ermöglichen.
- ONCO_PORTBLOCK_x: Der x. TCP-Port, der nicht für gesperrte Rechner erreichbar ist. Wenn hier die IP des Webinterfaces steht, kann sich ein gesperrter Rechner nicht selbst wieder entsperren (denn er kommt gar nicht auf das Webinterface!).
- ONCO_HOSTLIST: Eine sehr wichtige Einstellung! Sie bestimmt, woher OnCo seine Rechnerliste bekommt. OnCo wird keinen Rechner beeinflussen, der nicht auf dieser Liste steht. Das bedeutet: hat der Router die IP-Adresse 192.168.0.1/24 (in der base.txt unter IP_NET_x zu finden), dann ermöglicht er dem gesamten Subnetz von 192.168.0.1 bis 192.168.0.254 den Internetzugang. Ist jedoch die Hostliste von OnCo nur von 192.168.0.1 bis 192.168.0.10, so sind alle Rechner ab 192.168.0.11 immer freigeschaltet! Mögliche Einstellungen sind:
  - base: Die Hostliste wird aus den Rechnern generiert, die in der base.txt eingetragen sind. Um alles abzudecken, wird man also im Normalfall 254 solcher Einträge benötigen (HOSTS_N='254')!
  - file: Die Hostliste wird aus files/usr/local/onco_hostlist.txt übernommen. Also einfach die IP-Adressen und Namen anpassen, fertig.
- ONCO_NEVERBLOCK_N: Gibt die Anzahl der IP-Adressen an, die nie gesperrt werden dürfen. Die IP des Routers selbst muss da nicht eingetragen werden. Sie wird automatisch nie gesperrt.
- ONCO_NEVERBLOCK_x: Die x. IP, die nie gesperrt wird.
- OPT_FPING: Falls diese Option auf yes gesetzt ist, wird fping auf den Router kopiert. Damit kann OnCo regelmäßig alle Rechner in der Hostliste anpingen, um zu sehen ob diese gerade an sind. Diese Option ist nicht notwendig, aber ganz nett für den Überblick.
- ONCO_HOSTUPDATE_DELAY: Falls fping aktiviert ist, gibt diese Einstellung die Häufigkeit von Online-Status-Updates an (also wie oft der Router alle Rechner im Netzwerk anpingen soll). Die Zeit ist in Minuten angegeben. 10 bedeutet, alle 10 Minuten erfolgt ein Update.
- ONCO_TIMECTL_N: Dies gibt die Anzahl der Zeitsteuerungen an.
- ONCO_TIMECTL_x_IP: Welche IP soll zeitgesteuert werden?
- ONCO_TIMECTL_x_START: Wann soll die Zeitsteuerung starten? Dies ist cron-Syntax. Das bedeutet, es sind 5 Felder: Minute, Stunde, "Tag des Monats", Monat, "Tag der Woche". Wenn alle Felder zutreffen, wird die Zeitsteuerung aktiv. Mehr Informationen zur cron-Syntax gibt es im Internet. Am Ende dieser Datei sind noch ein paar Beispiele.
- ONCO_TIMECTL_x_TIME: Für wie lange soll die Zeitsteuerung den Rechner freischalten? Angabe in Minuten.

### Versionsinformationen:

Version 3.0.0:
Anpassung an fli3l 3.0.0 (und an die Versionsnummer :-) )
Viele Änderungen im Code. Support für ältere OnCo-Versionen wird somit eingestellt. Ebenso ist die Versionshistorie nun nutzlos und wird zurückgesetzt.>

Version 3.0.0.1:
Kleiner Bugfix. Danke an Andreas Städer für die Meldung.

Version 3.0.0.2:
Größere Änderungen in fast allen Skripten. Bugfixes, Optimierungen usw..
Sehr empfehlenswert!
Vielen Dank an Jean Wolter für die Änderungen und Anregungen!

Version 3.0.0.3:
Bug beim Herunterzählen der Onlinezeit behoben. Vielen Dank an Mario Möller und an Jan Reimers für die fast gleichzeitige Meldung des Bugs.
Außerdem wurde noch ein Bug im Zusammenhang mit einem Proxyserver behoben. Vielen Dank an Volker Staeblein fürs Melden.

Version 3.0.1.1:
Anpassung des Versionschecks an fli4l 3.0.1
Bugfix beim Blocken der Ports. Danke an Michael Schweikert für die Meldung.
Bugfix für die Zugriffsrechte beim Sperren aller PCs. Danke an Uwe Helms für die Meldung.

### Danksagungen

Vielen Dank an alle, die mich mit Bugreports versorgt haben. Insbesondere möchte ich mich allerdings bei folgenden Leuten bedanken, die alle einen größeren Beitrag zu OnCo gemacht haben: (bitte melden, falls noch eine E-Mail-Adresse dazugeschrieben oder entfernt werden soll)

- Dr. Robert Probst - Gruppen-Blocking (in 3.0.x vorerst rausgenommen)
- Alexander Schaber - Dokumentation
- Jürgen Mackiol - Anpassung an fli4l 2.1.x sowie Aufräumen in den Skripten
- Jean Wolter - Bugfixes und Optimierungen in OnCo 3.0.0.2

### Beispiele zur Zeitsteuerung

Die IP 123.234.123.234 soll jeden Tag von 14:00 bis 17:00 freigeschaltet werden. Wie geht das?
Freischaltungsdauer bestimmen: 14:00-17:00 sind 3 Stunden, also 180 Minuten.
Freischaltungsbeginn: 14:00, jeden Tag. Das bedeutet, das Minutenfeld muss 00 sein, das Stundenfeld 14, und der Rest ist egal:
00 14 * * *
Gesamtergebnis:
ONCO_TIMECTL_1_IP='123.234.123.234'
ONCO_TIMECTL_1_START='00 14 * * *'
ONCO_TIMECTL_1_TIME='180'

Die IP 1.2.3.4 soll unter der Woche (Montag bis Freitag) von 17:00 bis 17:30 freigeschaltet werden.
Freischaltungsdauer bestimmen: 17:00-17:30 sind 30 Minuten.
Freischaltungsbeginn: 17:00, Montag bis Freitag. Das bedeutet, das Minutenfeld muss 00 sein, das Stundenfeld 17, Tag und Monat sind egal, und das "Tag der Woche"-Feld muss Montag bis Freitag lauten. Dabei gilt: 0 ist Sonntag, 1 ist Montag, etc.. bis Samstag mit Wert 6. Sonntag kann auch als Wert 7 gesehen werden. Das Ergebnis ist jedenfalls
00 17 * * 1-5
Möglich wäre auch folgendes: 00 17 * * 1,2,3,4,5
Gesamtergebnis:
ONCO_TIMECTL_1_IP='1.2.3.4'
ONCO_TIMECTL_1_START='00 17 * * 1-5'
ONCO_TIMECTL_1_TIME='30'

Die IP 2.3.4.5 soll unter der Woche (Montag bis Freitag) von 16:30 bis 17:30 freigeschaltet werden. Am Wochenende soll die Freischaltung von 09:15 bis 20:00 gehen.
Hier können wir einen Trick anwenden: wir machen einfach 2 Zeitsteuerungen für dieselbe IP-Adresse. Hier ohne weitere Erklärungen das Gesamtergebnis:
ONCO_TIMECTL_1_IP='2.3.4.5'
ONCO_TIMECTL_1_START='30 16 * * 1,2,3,4,5'
ONCO_TIMECTL_1_TIME='60'
ONCO_TIMECTL_2_IP='2.3.4.5'
ONCO_TIMECTL_2_START='15 09 * * 0,6'
ONCO_TIMECTL_2_TIME='645'