Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ffbs/ffbs-website
  • darkbit/ffbs-website
2 results
Show changes
Commits on Source (105)
Showing
with 311 additions and 494 deletions
deployment:
stage: deploy
only:
- /^testbed*$/i
- /^master*$/i
build:
stage: build
image: python:3.9
tags:
- docker
script:
- cd flamingo
- echo $CI_COMMIT_REF_SLUG > REF_SLUG
- make html
- touch /var/www/$CI_COMMIT_REF_SLUG/htdocs/foo
- rm -r /var/www/$CI_COMMIT_REF_SLUG/htdocs/*
- cp -r output/* /var/www/$CI_COMMIT_REF_SLUG/htdocs/
- chmod go+r -R /var/www/$CI_COMMIT_REF_SLUG/htdocs/*
artifacts:
paths:
- flamingo/output
- contact
expire_in: 1 week
- touch /var/www/$CI_COMMIT_REF_SLUG/cgi/foo
- rm -r /var/www/$CI_COMMIT_REF_SLUG/cgi/*
- cp -r ../cgi/* /var/www/$CI_COMMIT_REF_SLUG/cgi/
- chmod go+r -R /var/www/$CI_COMMIT_REF_SLUG/cgi/*
deployment:
stage: deploy
tags:
- ffbs-deploy-frido
only:
refs:
- master
- /^testbed/i
variables:
- $CI_PROJECT_PATH == "ffbs/ffbs-website"
script:
- rm -r /var/www/website/$CI_COMMIT_REF_SLUG/*
- cp -r flamingo/output /var/www/website/$CI_COMMIT_REF_SLUG/htdocs
- cp -r contact /var/www/website/$CI_COMMIT_REF_SLUG/contact
- chmod go+r -R /var/www/website/$CI_COMMIT_REF_SLUG/*
#!/usr/bin/env python2
# coding=utf-8
import cgi
import cgitb
import re
import subprocess
cgitb.enable()
NAME_PATTERN = '^[a-zA-Z0-9-_\. äÄöÖüÜß]+$'
CODE_PATTERN = '^[a-zA-Z0-9]{64}$'
KEY_DIR='/home/kasalehlia/keys/'
KEY_SCRIPT = '/home/kasalehlia/bin/ffbs_keys'
GIT_DIR = '/home/kasalehlia/peers'
print "Content-Type: text/html;charset=utf-8"
print ""
form = cgi.FieldStorage()
try:
name = form['name'].value
code = form['code'].value
if re.match(NAME_PATTERN, name) and re.match(CODE_PATTERN, code) and name not in ['.','..']:
with open(KEY_DIR+'codes/'+code, 'r') as f:
validate = f.read()
if validate == name:
try:
print subprocess.check_output([KEY_SCRIPT, 'approve', name])
_ = subprocess.check_output(['/usr/bin/git', 'pull'], cwd=GIT_DIR)
_ = subprocess.check_output(['/usr/bin/git', 'add', 'peers/'+name], cwd=GIT_DIR)
_ = subprocess.check_output(['/usr/bin/git', 'commit', '-m', 'automated commit'], cwd=GIT_DIR)
_ = subprocess.check_output(['/usr/bin/git', 'push'], cwd=GIT_DIR)
except subprocess.CalledProcessError as e:
print e.output
else:
print "invalid request"
else:
print "invalid request"
except Exception as e:
print "Die Anfrage ist ungültig"
#!/usr/bin/env python2
# coding=utf-8
import cgi
import cgitb
import re
import smtplib
import uuid
import datetime
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
cgitb.enable()
CONTACT_EMAIL_TO = 'kontakt@freifunk-bs.de'
EMAIL_REGEX = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
print "Content-Type: text/html"
print ""
template = """<meta charset="utf-8">\n%s<br>\n<a href="/kontakt.html">zurück</a>"""
form = cgi.FieldStorage()
try:
email = form['email'].value
if not re.match(EMAIL_REGEX, email):
raise ValueError()
message = form['message'].value
captcha = form['captcha'].value
captcha = captcha.replace("'", "")
captcha = captcha.replace('"', "")
captcha = captcha.strip()
today = str(datetime.datetime.now().day)
if today == captcha:
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = "kontakt@freifunk-bs.de"
msg['To'] = CONTACT_EMAIL_TO
msg['Subject'] = 'Kontaktanfrage von %s' % email
msg['Reply-To'] = ','.join([email,CONTACT_EMAIL_TO])
uuid = str(uuid.uuid4()) #get a random uuid
msg['Message-ID'] = '<'+uuid+'@freifunk-bs.de>'
p = Popen(["/usr/sbin/sendmail", "-t", "-oi", "-FKontaktformular"], stdin=PIPE)
p.communicate(msg.as_string())
print template % "Ihre Nachricht wurde entgegengenommen"
else:
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = "kontakt@freifunk-bs.de"
msg['To'] = CONTACT_EMAIL_TO
msg['Subject'] = '[CAPTCHA]Kontaktanfrage von %s' % email
msg['Reply-To'] = ','.join([email,CONTACT_EMAIL_TO])
uuid = str(uuid.uuid4()) #get a random uuid
msg['Message-ID'] = '<'+uuid+'@freifunk-bs.de>'
msg['X-FFBS-CAPTCHA'] = "Failed: User tried: {}; I expected: {}".format(captcha, today)
p = Popen(["/usr/sbin/sendmail", "-t", "-oi", "-FKontaktformular"], stdin=PIPE)
p.communicate(msg.as_string())
print template % "Der Spamschutz wurde nicht erfolgreich ausgefüllt. Bitte versuchen Sie es erneut."
except Exception as e:
print template % "Die Anfrage ist ungültig"
#!/usr/bin/env python2
# coding=utf-8
import cgi
import cgitb
import re
import subprocess
cgitb.enable()
NAME_PATTERN = '^[a-zA-Z0-9-_\. äÄöÖüÜß]+$'
CODE_PATTERN = '^[a-zA-Z0-9]{64}$'
KEY_DIR='/home/kasalehlia/keys/'
KEY_SCRIPT = '/home/kasalehlia/bin/ffbs_keys'
print "Content-Type: text/html"
print ""
form = cgi.FieldStorage()
try:
name = form['name'].value
code = form['code'].value
if re.match(NAME_PATTERN, name) and re.match(CODE_PATTERN, code) and name not in ['.','..']:
with open(KEY_DIR+'codes/'+code, 'r') as f:
validate = f.read()
if validate == name:
try:
print subprocess.check_output([KEY_SCRIPT, 'deny', name])
except subprocess.CalledProcessError as e:
print e.output
else:
print "invalid request"
else:
print "invalid request"
except Exception as e:
print template % "Die Anfrage ist ungültig"
#!/usr/bin/env python2
# coding=utf-8
import cgi
import cgitb
import datetime
import json
SECRET = "ahqu2Choshi7sahDme8aePh4iegh8Wee"
print "Content-Type: text/html"
print ""
params = cgi.FieldStorage()
if 'secret' in params and params['secret'].value == SECRET:
info = dict()
info['updated'] = datetime.datetime.now().isoformat()
for i in xrange(100): # be prepared for many gateways
key = "gw"+str(i).zfill(2)
if key in params:
try:
info[key] = int(params[key].value)
except ValueError: # value is not a number
pass
print "accepted status for "+str(len(info))+" gateways"
with open('/home/kasalehlia/ffbs-website/gatewaystatus.json','w') as f:
json.dump(info, f)
else:
print "nothing to see here"
#!/usr/bin/env python2
# coding=utf-8
import cgi
import cgitb
import os
import random
import re
import smtplib
import string
import time
from email.mime.text import MIMEText
from subprocess import Popen, PIPE, check_output, CalledProcessError
cgitb.enable()
KEY_DIR='/home/kasalehlia/keys/'
CONTACT_FILE='/home/kasalehlia/contacts.txt'
KEY_PATTERN = r'# ([a-zA-Z0-9-_\. äÄöÖüÜß]+) ?#? ?([\S ]+)?\r?\n([0-9a-f]{64})$';
#KEY_PATTERN = r'# ([\w.- ]+) ?#? ?([\S ]+)?\r?\n([0-9a-f]{64})$';
EMAIL_FROM = 'keys@freifunk-bs.de'
EMAIL_TO = 'ffbs-admin@stratum0.org'
#EMAIL_TO = 'kasa@shakik.de'
EMAIL_TEXT = """Key approval request: {name} with key {key}.\n
To approve: http://www.freifunk-bs.de/approve_key?name={name}&code={code}\n
To deny: http://www.freifunk-bs.de/deny_key?name={name}&code={code}\n
\n`{quote}`"""
QUOTES = list(open('/home/kasalehlia/portal.quotes'))
print "Content-Type: application/json; charset=utf-8"
print ""
form = cgi.FieldStorage()
try:
inp = form['key'].value.strip()
contact = form.getfirst('contact','').strip()
match = re.match(KEY_PATTERN, inp)
if match:
name,_contact,key = match.groups()
name = name.strip()
if not contact:
contact = _contact
code = ''.join(random.choice(string.letters + string.digits) for _ in xrange(64))
if os.path.isfile(KEY_DIR+name):
print '{"success":false, "message":"Dieser Name oder dieser Schlüssel ist bereits eingetragen"}'
else:
try:
res = check_output(['/bin/grep','-r','--exclude-dir=codes',key,KEY_DIR])
except CalledProcessError as e:
res = e.output
if len(res):
print '{"success":false, "message":"Dieser Name oder dieser Schlüssel ist bereits eingetragen"}'
else:
with open(KEY_DIR+name,'w') as f:
f.write('key "%s";\n' % key)
with open(KEY_DIR+'/codes/'+code,'w') as f:
f.write(name)
with open(CONTACT_FILE, 'a') as f:
f.write('{},{},{},{}\n'.format(time.time(),key,name,contact))
#s = smtplib.SMTP('localhost')
if 'NOMAIL' not in name:
msg = MIMEText(EMAIL_TEXT.format(name=name.replace(' ', '%20'), key=key, code=code, quote=random.choice(QUOTES)[:-1]),'plain','utf-8')
msg['From'] = EMAIL_FROM
msg['To'] = EMAIL_TO
msg['Subject'] = 'Key approval request for %s' % name
#s.sendmail(EMAIL_FROM, [EMAIL_TO], msg.as_string())
#s.quit()
p = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE)
p.communicate(msg.as_string())
print '{"success":true, "message":"Dein Schlüssel wurde eingetragen, muss aber noch von einem Administrator bestätigt werden"}'
else:
print '{"success":true, "message":"debug input accepted"}'
else:
print '{"success":false, "message":"Die Eingabe ist fehlerhaft"}'
except Exception as e:
print '{"success":false, "message":"Die Eingabe ist fehlerhaft", "err":"'+repr(e)+'"}'
#raise e
aiohttp
#!/usr/bin/env python3
# coding=utf-8
from aiohttp import web
import asyncio
import re
import smtplib
import uuid
import datetime
from email.mime.text import MIMEText
from subprocess import Popen, PIPE
import logging
logging.basicConfig(level=logging.INFO)
CONTACT_EMAIL_TO = 'kontakt@freifunk-bs.de'
EMAIL_REGEX = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
template = """
<html>
<head>
<meta charset="utf-8">
</head>
<body>
%s<br>
<a href="/kontakt.html">zurück</a>
</body>
</html>
"""
async def handle(req):
logging.debug('Got a new request:')
form = await req.post()
logging.debug(f'Form data: {form}')
try:
email = form['email']
if not re.match(EMAIL_REGEX, email):
raise ValueError()
message = form['message']
captcha = form['captcha']
captcha = captcha.replace("'", "")
captcha = captcha.replace('"', "")
captcha = captcha.strip()
today = str(datetime.datetime.now().day)
if today == captcha:
logging.info('CAPTCHA successfull')
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = "kontakt@freifunk-bs.de"
msg['To'] = CONTACT_EMAIL_TO
msg['Subject'] = 'Kontaktanfrage von %s' % email
msg['Reply-To'] = ','.join([email,CONTACT_EMAIL_TO])
ruuid = str(uuid.uuid4()) #get a random uuid
msg['Message-ID'] = '<'+ruuid+'@freifunk-bs.de>'
p = Popen(["/usr/sbin/sendmail", "-t", "-oi", "-FKontaktformular"], stdin=PIPE)
p.communicate(msg.as_string().encode())
logging.info('Mail sent')
return web.Response(body = template % "Ihre Nachricht wurde entgegengenommen", content_type='text/html')
else:
logging.info('CAPTCHA NOT successfull')
return web.Response(body = template % "Der Spamschutz wurde nicht erfolgreich ausgefüllt. Bitte versuchen Sie es erneut.", content_type='text/html')
except Exception as e:
logging.exception('Request failed! Exception:')
return web.Response(body = template % "Die Anfrage ist ungültig", content_type='text/html')
app = web.Application()
app.add_routes([web.post('/contact', handle)])
if __name__ == '__main__':
web.run_app(app, host='0.0.0.0', port=7392)
# vim: expandtab:shiftwidth=4:softtabstop=4
[Unit]
Description=Provide our contact form backend
[Service]
Type=simple
Environment="PYTHONUNBUFFERED=1"
ExecStart=/var/www/website/venv/bin/python3 /var/www/website/master/contact/contact.py
Restart=always
RestartSec=60
StartLimitInterval=0
User=gitlab-runner
[Install]
WantedBy=multi-user.target
~
flamingo[feeds]==1.3
beautifulsoup4==4.5.3
Pillow==4.3.0
flamingo[full]
beautifulsoup4
Pillow
ipython==6
coloredlogs
flamingo[full]==1.3
beautifulsoup4==4.5.3
Pillow==4.3.0
flamingo[full]
beautifulsoup4
Pillow
ipython==6
coloredlogs
template: page_html.html
<div class="container">
<div class="page-header">
<h1>Router eintragen</h1>
</div>
<div class="row">
<div class="col-lg-6">
<div id="alert" class="alert" style="display:none"></div>
<form class="form" id="keyform" method="POST" action="/newkey">
<p>Du bist der Anleitung gefolgt und
hast einen Schlüssel von deinem Router bekommen? Dann trage hier deinen Schlüssel ein:</p>
<fieldset>
<textarea id="key" name="key" cols="50" rows="2" class="span6"></textarea><br><br>
</fieldset>
<p>Hier hast du die Möglichkeit einen Kontaktweg zu Dir einzutragen. Diese Information werden wir nicht
weitergeben, sondern nur auf unseren Servern speichern. Wir werden die Information nur im Falle technischer
Probleme mit deinem Router verwenden um Dich zu kontaktieren. Um diese Information löschen zu lassen
<a href="/kontakt.html">kontaktiere uns.</a></p>
<fieldset>
<input type="text" name="contact" id="contact" size="50">
</fieldset>
<fieldset>
<input type="submit" value="Absenden" class="btn btn-primary pull-right">
</fieldset>
</form>
</div>
<div class="col-lg-6">
<p>Die Schlüsselinformationen sollten so eingetragen werden:</p>
<!-- totally a random key... -->
<pre># Beispiel <br>70e9157d98c9780c27ea17e95e27885997cf321225050f397f0fa82ac1733639</pre>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#keyform').submit(function () {
$.post('/newkey', {'key':$('#key').val(),'contact':$('#contact').val()}, function (ans) {
$('#alert').hide(500, function() {
if (ans.success) {
$('#alert').removeClass('alert-danger').addClass('alert-success').text(ans.message)
} else {
$('#alert').removeClass('alert-success').addClass('alert-danger').text(ans.message)
}
$('#alert').show(500)
});
}, 'json')
return false
});
if (document.location.hash !== '') {
$('#key').val(decodeURIComponent(document.location.hash));
}
});
</script>
......@@ -12,8 +12,8 @@ der Firmware anders als hier beschrieben.
Router anschließen
------------------
1. Lade das passende Erstinstallations-Firmware-Image für deinen Router von `unserer Seite <https://firmware.freifunk-bs.de/#stable>`__ herunter.
2. Verbinde deinen Computer mit einem der gelben LAN-Anschlüsse des Routers.
1. Lade das passende Erstinstallations-Firmware-Image für Deinen Router von `unserer Seite <https://firmware.freifunk-bs.de/#stable>`__ herunter.
2. Verbinde Deinen Computer mit einem der gelben LAN-Anschlüsse des Routers.
3. Dein Computer erhält nun automatisch via DHCP eine IP-Adresse.
Installation
......@@ -22,17 +22,17 @@ Installation
Mit Hersteller-Firmware
_______________________
Ist auf Deinem Router noch die Firmware des Herstellers installiert sind die genauen Schritte abhängig vom Hersteller Deines Gerätes.
Ist auf Deinem Router noch die Firmware des Herstellers installiert, sind die genauen Schritte abhängig vom Hersteller Deines Gerätes.
#. Öffne das Webinterface deines Routers in deinem Browser.
#. Folge den Anweisungen im Handbuch deines Routers um die Firmware zu aktualisieren.
#. Öffne das Webinterface Deines Routers in deinem Browser.
#. Folge den Anweisungen im Handbuch Deines Routers um die Firmware zu aktualisieren.
#. Nutze nun das von der zuvor heruntergeladene Firmware-Image.
#. Warte bis der Router wieder gestartet ist.
Mit Freifunk-Firmware
_____________________
Ist auf Deinem Router bereits eine Freifunk-Firmware installiert ist diese Anleitung für dich relevant.
Ist auf Deinem Router bereits eine Freifunk-Firmware installiert, ist diese Anleitung für Dich relevant.
#. Starte den Router im Konfigurationsmodus neu. \
Wie dies funktioniert ist in unserer `FAQ </faq/faq.html>`__ erklärt.
......@@ -40,14 +40,14 @@ Ist auf Deinem Router bereits eine Freifunk-Firmware installiert ist diese Anlei
#. Gehe auf den Reiter *Firmware aktualisieren*.
#. Wähle die Firmware-Datei aus und lade diese hoch.
#. Bei Bedarf können die Einstellungen des Gerätes zurückgesetzt oder beibehalten werden.
#. Werden die Einstellungen beibehalten startet das Gerät anschließend in den Betriebsmodus neu.
#. Werden die Einstellungen nicht beibehalten startet das Gerät in den Konfigurationsmodus neu.
#. Werden die Einstellungen beibehalten, startet das Gerät anschließend in den Betriebsmodus neu.
#. Werden die Einstellungen nicht beibehalten, startet das Gerät in den Konfigurationsmodus neu.
Konfigurationsmodus
-------------------
Dein Router sollte nun in den Konfigurationsmodus starten. Du erhälst erneut eine IP-Adresse per DHCP, dein Freifunk-Router ist nun unter http://192.168.1.1 in deinem Browser erreichbar.
Dein Router sollte nun in den Konfigurationsmodus starten. Du erhälst erneut eine IP-Adresse per DHCP, dein Freifunk-Router ist nun unter http://192.168.1.1 in Deinem Browser erreichbar.
Den Router konfigurieren
......@@ -57,22 +57,20 @@ Den Router konfigurieren
#. Aktiviere das Mesh-VPN, um eine Verbindung mit dem Freifunk-Netz über das Internet herzustellen.
#. Füge GPS-Koordinaten des Router-Standorts ein. Diese kannst du auf unterschiedliche Weisen erhalten:
- Ist dein Rechner gleichzeitig mit dem Router und dem Internet verbunden kannst
du die Koordinaten direkt auf der Seite des Konfigurationsmodus auswählen.
- Ist Dein Rechner gleichzeitig mit dem Router und dem Internet verbunden kannst
Du die Koordinaten direkt auf der Seite des Konfigurationsmodus auswählen.
- Alternativ kannst du die Koordinaten bei einem Kartendienst wie
- Alternativ kannst Du die Koordinaten bei einem Kartendienst wie
`Openstreetmap <https://openstreetmap.org>`__ ermitteln.
#. Nach einem Klick auf Speichern und Neustarten siehst du den öffentlichen Schlüssel für den VPN-Zugang. \
Diesen trage bitte auf `unserer Webseite <https://freifunk-bs.de/eintragen.html>`__ ein. \
Dort kannst Du auch eine Kontaktmöglichkeit angeben. \
Diese ist nur für Administratoren sichtbar und nur verwendet, falls technische Probleme mit \
Deinem Gerät vorliegen.
#. Du hast die Option, eine Kontaktmöglichkeit anzugeben. Diese ist entweder nur für Administratoren, \
oder öffentlich für alle sichtbar, je nachdem wie du möchtest.
#. Nach einem Klick auf Speichern und Neustarten wird die Konfiguration beendet. Seit einer Änderung \
Ende 2021 wird an dieser Stelle kein Key mehr angezeigt, um ihn auf unserer Webseite einzutragen.
Dies geschieht nun automatisch.
Danach startet der Router neu, sendet das WLAN 'Freifunk' aus und versucht sich per Mesh
mit anderen Nachbarn zu verbinden. Falls du keine Mesh-Nachbarn hast, ist eine Verbindung
mit dem WLAN-Netzwerk erst dann möglich, sobald der Schlüssel auf den Gateways eingetragen wurde.
Dies kann einige Minuten dauern, da der Schlüssel von uns manuell bestätigt werden muss.
mit anderen Nachbarn, sowie sich über seinen Uplink direkt selbst mit unserem Netz zu verbinden.
Der Router ist jetzt im Normalbetrieb und nicht mehr unter http://192.168.1.1 erreichbar.
Für spätere Änderungen kann der Router wieder in den Konfigurationsmodus versetzt werden.
......@@ -89,17 +87,17 @@ ist und sich mit anderen Routern verbindet um eine Meshverbindung zu bilden.
Verbinde den Router mit dem Netzwerk
------------------------------------
Wenn du deinen Internetzugang zur Verfügung stellen möchtest, verbinde jetzt den WAN-Anschluss
deines Freifunk-Router mit deinem vorhandenen Internetrouter. Möchtest oder kannst du das nicht
bist du auf andere Freifunker in deiner Nähe angewiesen um eine Verbindung zum Freifunk-Netzwerk
Wenn Du Deinen Internetzugang zur Verfügung stellen möchtest, verbinde jetzt den WAN-Anschluss
Deines Freifunk-Router mit deinem vorhandenen Internetrouter. Möchtest oder kannst Du das nicht,
bist Du auf andere Freifunker in deiner Nähe angewiesen um eine Verbindung zum Freifunk-Netzwerk
und ins Internet herzustellen.
Fertig
------
Super, du hast es geschafft.
Dein Freifunk-Knoten funktioniert jetzt und sollte, wenn du GPS Koordinaten angegeben hast,
Super, Du hast es geschafft.
Dein Freifunk-Knoten funktioniert jetzt und sollte, wenn Du GPS Koordinaten angegeben hast,
in Kürze auf der `Karte <https://freifunk-bs.de/map/#!v:m>`__ erscheinen.
.. raw:: html
......
......@@ -2,6 +2,11 @@ template: page_html.html
title: FAQ
sort: 100
blog:
- date: 2021-11-18
title: FAQ auf Parker aktualisiert
body: Die FAQ wurde inhaltlich auf die Gegebenheiten des neuen (Parker-) Netzes angepasst.
<div class="container">
<div class="page-header">
......@@ -78,23 +83,6 @@ sort: 100
</div>
</div>
</div>
<hr>
<div class="panel panel-success">
<a class="anchor" id="mitmachenunternehmen"></a>
<div class="panel-heading">Mitmachen als Unternehmen</div>
<div class="panel-body">
<div class="list-group">
<span class="list-group-item">
<h4 class="list-group-item-heading">Ich bin ein Unternehmen und möchte einen Knoten betreiben. Was muss ich tun?</h4>
<p class="list-group-item-text">Die einfachste Möglichkeit ist, einen Knoten bei uns abzuholen. Wir helfen dann auch bei der Konfiguration und geben Tipps bei der Aufstellung. Alternativ kannst Du uns über unsere <a href="mailto:kontakt@freifunk-bs.de">Kontakt-E-Mailadresse</a> erreichen. </p>
</span>
<span class="list-group-item">
<h4 class="list-group-item-heading">Ich brauche aber eine Quittung!</h4>
<p class="list-group-item-text">Wir können zur Zeit keine Quittungen für bei uns erworbene Hardware ausstellen. Du kannst die Hardware aber auch selber beschaffen und wir helfen anschließend bei der Einrichtung. </p>
</span>
</div>
</div>
</div>
<hr>
<div class="panel panel-warning">
<a class="anchor" id="knoten"></a>
......@@ -115,7 +103,7 @@ sort: 100
</span>
<span class="list-group-item">
<h4 class="list-group-item-heading">Wie schnell ist der Zugang?</h4>
<p class="list-group-item-text">Aktuell erreichen die kleinsten Knoten ca. 6 Mbit/s. Da zwischen einem Knoten und den zentralen Gateways eine verschlüsselte VPN-Verbindung aufgebaut wird, ist hier der Prozessor der kleinen Knoten der limitierende Faktor. Bei leistungsfähigeren (und teureren) Geräten ist die Performance besser.</p>
<p class="list-group-item-text">Aktuell erreichen die kleinsten Knoten ca. 11 Mbit/s. Da zwischen einem Knoten und den zentralen Gateways eine verschlüsselte VPN-Verbindung aufgebaut wird, ist hier der Prozessor der kleinen Knoten der limitierende Faktor. Bei leistungsfähigeren (und teureren) Geräten ist die Performance besser.</p>
</span>
<span class="list-group-item">
<h4 class="list-group-item-heading">Wie viele Personen nutzen das Netz?</h4>
......@@ -123,11 +111,7 @@ sort: 100
</span>
<span class="list-group-item">
<h4 class="list-group-item-heading">Welche Geräte werden unterstützt?</h4>
<p class="list-group-item-text">Aktuell unterstützen wir viele Geräte von TP-Link und Ubiquiti. Schau am besten auf der <a href="https://firmware.freifunk-bs.de/#stable">Firmware-Seite</a> vorbei und überprüfe, ob Dein Modell auch dabei ist. Prinzipiell werden (fast) alle Geräte, auf denen OpenWRT als Firmware installiert werden kann, unterstützt. Wenn Du Dir unsicher bist, kannst Du Dich gerne bei uns <a href="/kontakt.html">melden.</a></p>
</span>
<span class="list-group-item">
<h4 class="list-group-item-heading">Ich habe doch gerade den VPN-Schlüssel auf eurer Seite eingetragen. Warum funktioniert mein Router noch nicht?</h4>
<p class="list-group-item-text">VPN-Schlüssel, die auf unserer Webseite eingetragen werden, müssen manuell freigegeben werden. Dies kann einige Minuten dauern. Lass deinen Router einfach mit dem Internet verbunden - sobald der Schlüssel freigegeben wurde, verbindet sich dein Router mit dem Freifunk-Netzwerk. In der Zwischenzeit kannst Du uns auf <a href="https://twitter.com/freifunk_bs">Twitter</a> folgen, oder unsere <a href="http://lists.freifunk.net/mailman/listinfo/braunschweig-freifunk.net">Mailingliste</a> abonnieren.</p>
<p class="list-group-item-text">Aktuell unterstützen wir viele Geräte von TP-Link und Ubiquiti. Schau am besten auf der <a href="https://freifunk-bs.de/parker/firmware.html">Firmware-Seite</a> vorbei und überprüfe, ob Dein Modell auch dabei ist. Prinzipiell werden (fast) alle Geräte, auf denen OpenWRT als Firmware installiert werden kann, unterstützt. Wenn Du Dir unsicher bist, kannst Du Dich gerne bei uns <a href="/kontakt.html">melden.</a></p>
</span>
</div>
</div>
......@@ -152,7 +136,7 @@ sort: 100
Natürlich sind solche Regeln keine Garantie für ein vorbildliches Verhalten aller Anwender, aber es gibt ein paar Punkte, die gegen eine illegale Nutzung sprechen:
Das Freifunknetz ermöglicht unter anderem Zugang zum Internet. Dieser Zugang ist nicht dafür gedacht, um große Datenmengen (z.B. Downloads von Filmen) zu ermöglichen, sondern dient hauptsächlich der Informationsbeschaffung. Dementsprechend ist der Anschluss nicht so schnell wie ein heimischer DSL-Anschluss.
Unser Dienstleister für die Anonymisierung kostet knapp 10 € pro Monat und ist wesentlich schneller.
Ein Dienstleister für die Anonymisierung kostet knapp 10 € pro Monat und ist wesentlich schneller.
Grundsätzlich sollten wir damit aufhören, eine Technologie an dem größtmöglichen Schaden zu messen. Freifunk bietet uns viele tolle Möglichkeiten, die wir nutzen sollten. </p>
</span>
......
sort: 300
title: Flashen der Fritz!Box 7412
Informationen zum Flashen einer Fritz!Box 7412
==============================================
Vorbereitung
------------
Folgende Files werden benötigt (Versionen zum Zeitpunkt des schreibens
des Artikel):
* `eva_ramboot.py <https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=scripts/flashing/eva_ramboot.py>`__
* `openwrt-initramfs-image für Fritz!Box 7412 <https://downloads.openwrt.org/releases/19.07.7/targets/lantiq/xrx200/openwrt-19.07.7-lantiq-xrx200-avm_fritz7412-initramfs-kernel.bin>`__
* `freifunk sysupgrade image <https://www.freifunk-bs.de/firmware/?q=AVM%E2%81%A3%20FRITZ!Box%C2%A07412%E2%81%A3%20alle%E2%81%A3%20Upgrade>`__
**Nach** dem Download der Dateien wird das Netzwerk vorbereitet:
* WLAN ausschalten (gemeint sind Verbindungen zu Netzwerken die IPs in
den Netzwerken 192.168.178.0/14 und 192.168.1.0/24 haben)
* Ethernet-interface auf 192.168.178.10/24 und 192.168.1.10/24
konfigurieren (/24 meint Netmask 255.255.255.0)
* Ethernet Kabel mit der LAN-Steckdose der Fritz!Box verbinden
3 Terminals öffnen:
+------------+----------------------------+
| Terminal 1 | zum ausführen von Skripten |
+------------+----------------------------+
| Terminal 2 | *ping 192.168.178.1* |
+------------+----------------------------+
| Terminal 3 | *ping 192.168.1.1* |
+------------+----------------------------+
Erster Flash: OpenWRT-Firmware
------------------------------
Zum ersten Flash wie folgt vorgehen:
1. Die Fritz!Box einschalten
2. nach einigen Sekunden -- wenn in *Terminal 2* der Ping erfolgreich
ist -- folgenden Befehl im *Terminal 1* ausführen
.. code-block:: none
./scripts_flashing_eva_ramboot.py 192.168.178.1 openwrt-19.07.7-lantiq-xrx200-avm_fritz7412-initramfs-kernel.bin
Es dauert ca. 1 Minute, bis die Fritz!Box durchgestartet ist und im
*Terminal 3* der Ping erfolgreich ist. (Durch den Reboot pingt es noch
kurz in Terminal 2, nicht erschrecken.)
Hat das nicht geklappt, dann den Vorgang noch einmal durchführen:
Ausschalten -> Einschalten -> script ausführen, wie oben beschrieben
Test ob erfolgreich
-------------------
Im *Terminal 1* mit der Fritz!Box verbinden
.. code-block:: none
ssh root@192.168.1.1
Der Login sollte ohne Passwort funktionieren, anschließend wieder
ausloggen (*<STRG>-<D>* oder *exit*).
Zweiter Flash: Freifunk-Firmware installieren
---------------------------------------------
Die Freifunk-Firmware auf den Router installieren und dazu in *Terminal
1* folgendes eingeben:
.. code-block:: none
scp gluon-ffbs-next-v2020.2.2.2-ffbs-next-202103281243-parker_beta-avm-fritz-box-7412-sysupgrade.bin 192.168.1.1:/tmp
ssh root@192.168.1.1
sysinstall /tmp/gluon-ffbs-next-v2020.2.2.2-ffbs-next-202103281243-parker_beta-avm-fritz-box-7412-sysupgrade.bin
Freifunk konfigurieren
----------------------
Nun kann wie gehabt über http://192.168.1.1 die Konfiguration erfolgen.
Troubleshooting: Wenn es einfach nicht klappt
---------------------------------------------
Es kann vorkommen, dass nach dem reboot wieder die Orginal-Firmware zu
sehen ist. Dann kann folgendes helfen:
* Fritz!Box einschalten
* in *Terminal 1* mit *ftp 192.168.1.1* mit der Fritz!Box verbinden,
sobald in *Terminal 2* der Ping funktioniert
* Benutzer: adam2
* Passwort: adam2
* Eingabe von *quote SETENV linux_fs_start 0*
* Fritz!Box neu starten und mit dem Flashen (s.o.) beginnen
Dadurch wird die richtige Boot-Partition ausgewählt.
Tips und Tricks
---------------
Auto-Vervollständigung über die TAB-Taste
.........................................
Wer Linux noch nicht genutzt hat, kennt es vielleicht nicht. Aber es
macht das Leben unwahrscheinlich einfach, die TAB-Taste in der Shell.
Beispiel: der *sysinstall*-Befehl. Es ist ziemlich mühsam, das ganze
*gluon-ffbs-next-v2020.2.2.2-ffbs-next-202103281243-parker_beta-avm-fritz-box-7412-sysupgrade.bin*
einzutippen. Das geht dann viel einfacher über:
*sysinstall /tmp/gl* und nun einmal die TAB-Taste drücken. Da es keine
weitere Datei in dem Verzeichnis */tmp/* gibt, wird der Rest einfach
ersetzt.
Ausschalten der nervigen key-Fehler
...................................
Wenn man öfters Router flashed, dann kommt bei der Verbindung via SSH
ein *Host-Key-Exchange-Error* und man muss den Host-Identifier manuell
löschen. Das nervt mit der Zeit.
Hier hilft das Anlegen einer *~/.ssh/config* Datei mit folgendem Inhalt:
.. code-block:: none
Host neu
User root
Hostname 192.168.1.1
IdentityFile .ssh/id_rsa_ff_router
StrictHostKeyChecking no
LogLevel ERROR
UserKnownHostsFile /dev/null
Daduch vereinfachen sich die Befehle von oben ein wenig. aus
*192.168.1.1* wird *neu*. Ein Paar Beispiele:
.. code-block:: none
## vorher
ssh root@192.168.1.1
## nachher
ssh neu
## vorher
scp <FIRMWAREFILE> 192.168.1.1:/tmp
## nachher
scp <FIRMWAREFILE> neu:/tmp
......@@ -44,8 +44,8 @@ folgenden IPs erreichbar:
.. code-block:: none
10.38.0.127
2001:bf7:380::7f
172.16.127.1
2001:bf7:382::1
IP über die Karte herausfinden
******************************
......
......@@ -42,8 +42,8 @@ nur erreicht werden, wenn die Verbindung zum
Freifunk Netz (bzw. den Gateways) funktioniert.
Funktioniert diese Verbindung nicht kann die Statusseite über
`http://[2001:bf7:380::7f]/ <http://[2001:bf7:380::7f]/>`__
`http://[2001:bf7:382::1]/ <http://[2001:bf7:382::1]/>`__
erreicht werden.
Alternativ ist die Statusseite per IPv4 auch unter
`http://10.38.0.127 <http://10.38.0.127>`__ erreichbar.
`http://172.16.127.1 <http://172.17.127.1>`__ erreichbar.
branches:
- name: v2018.2.2-ffbs-201907171911-stable
channel: stable
date: 2019-07-24
site: "https://gitli.stratum0.org/ffbs/ffbs-site/commit/b37e28d2135c9023ff4dd6c3ebfb0cebc41f2d06"
gluon: "https://gitli.stratum0.org/ffbs/ffbs-gluon/tree/v2018.2.2-ffbs"
rtd: "https://gluon.readthedocs.io/en/v2018.2.x/releases/v2018.2.2.html"
v2018.2.2-ffbs
==============
* Gluon ist nun auf v2018.2.2:
* Dieses Release repariert mehrere kritische Lücken im Linux-Kernel.
* Die Art kabelgebundene Clients zu zählen wurde überarbeitet.
Die Zahl der gemeldeten Benutzer kann sich mit diesem Release also
ändern.
* Dieses Release behebt einen Fehler im Mesh-Protokoll, durch den es
zu erhöhtem Management-Traffic gekommen sein kann.
* Es wird keine neue Hardware unterstützt.
* Mesh über IBSS wurde mit diesem Release in unserem Netz deaktiviert.
Damit setzt Freifunk Braunschweig nun auch auf das moderne 801.11s-mesh.
In den meisten Fällen sollte der Wechsel unbemerkt von statten gehen.
Wir erwarten nur bei einigen wenigen Routern Probleme bei oder nach
dem Update.
Mit der zusätzlichen Unterstützung von 802.11s stehen uns nun auch die Geräte
zur Verfügung, die kein IBSS unterstützen. z.B. der 841 v13.
Bitte beachte: Durch die Änderung der WLAN-Mesh-Technologie können Geräte, die
eine nicht aktuelle Firmware verwenden nicht mehr mit Geräten meshen, die eine
alte Firmware verwenden!
branches:
- name: v2018.2.3-ffbs-201909191459-stable
channel: stable
date: 2019-09-24
- name: v2018.2.3-ffbs-201909161954-beta
channel: beta
site: "https://gitli.stratum0.org/ffbs/ffbs-site/commit/b37e28d2135c9023ff4dd6c3ebfb0cebc41f2d06"
gluon: "https://gitli.stratum0.org/ffbs/ffbs-gluon/tree/v2018.2.3-ffbs"
rtd: "https://gluon.readthedocs.io/en/v2018.2.x/releases/v2018.2.3.html"
v2018.2.3-ffbs
==============
* Gluon ist nun auf v2018.2.3:
* Diese neue Version enthält Unterstützung für ein paar neue
Geräte. Die Liste findest du hinter dem Link oben.
* Traffic-Shaping sollte mit diesem Release nun wieder funktionieren.
Danke an Thorsten für das Melden des Fehlers und die Unterstützung
bei der Fehlersuche.
* Die Firmware sollte nun auch im stabilen Zweig auf der Fritzbox 4040
funktionieren.
* Weitere Änderungen sind in den Release-Notes nachzulesen.
* Es gibt keine kleine Änderung auf der SSH-Konfigurationsseite:
Wir weisen nun explizit darauf hin, dass wir nur RSA-Keys unterstützen
(können).
branches:
- name: v2019.1-ffbs-201909272234-stable
channel: stable
date: 2019-09-28
- name: v2019.1-ffbs-201909262250-beta
channel: beta
site: "https://gitli.stratum0.org/ffbs/ffbs-site/commit/82210db53b97480c8d763bf869da55ac17598f62"
gluon: "https://gitli.stratum0.org/ffbs/ffbs-gluon/tree/v2019.1-ffbs"
rtd: "https://gluon.readthedocs.io/en/v2019.1.x/releases/v2019.1.html"
v2019.1-ffbs
============
* Gluon ist nun auf v2019.1
* Diese neue Version enthält Unterstützung für ein paar neue
Geräte. Die Liste findest du hinter dem Link oben.
* Neu ist darüber hinaus der Outdoor-Mode:
Bei typischen Outdoor-Geräten hast du nun die Option diesen
Modus zu aktivieren.
Durch aktivieren dieses Modus verwendet dein Accesspoint nur
noch Kanäle, die in Deutschland auf 5GHz für den Betrieb
ausserhalb von Räumen zugelassen sind und aktiviert DFS.
Darüber hinaus wird auf 5GHz das Mesh deaktiviert.
(Da bei DFS der Kanal nicht fix sein darf ergibt Mesh dann
keinen Sinn mehr.)
* Neu ist auch die "Deprecation":
Im Gluon selbst sind nun 4MB-Flash Geräte als "veraltet"
markiert. Für uns Braunschweig ändert das aber vorerst nichts.
Wir werden zunächst weiterhin auch für diese Geräte Firmware
zur Verfügung stellen.
* Zusätzlich gab es eine ganze Reihe interne Änderungen.
Diese sind der Grund warum ich die Firmware langsam
ausrollen werde. Sollte es zu Problemen kommen gebt mir
daher bitte zeitnah Bescheid.
* Weitere Änderungen sind in den Release-Notes nachzulesen.
* In der Braunschweiger-Variante sind weiterhin die 8MB und 16MB
841er Geräte enthalten.
Diese Firmware kann für selbst umgebaute Geräte verwendet werden.
Hier würde ich mich weiterhin über Feedback freuen, falls jemand
so ein Gerät hat. Bis zum Feedback seht diese Firmware bitte
als experimentell an.