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 (62)
Showing
with 121 additions and 475 deletions
......@@ -10,12 +10,13 @@ build:
artifacts:
paths:
- flamingo/output
- contact
expire_in: 1 week
deployment:
stage: deploy
tags:
- ffbs-deploy
- ffbs-deploy-frido
only:
refs:
- master
......@@ -23,10 +24,7 @@ deployment:
variables:
- $CI_PROJECT_PATH == "ffbs/ffbs-website"
script:
- rm -r /var/www/$CI_COMMIT_REF_SLUG/htdocs
- cp -r flamingo/output /var/www/$CI_COMMIT_REF_SLUG/htdocs
- chmod go+r -R /var/www/$CI_COMMIT_REF_SLUG/htdocs/*
- 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/*
- 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.6.1
beautifulsoup4==4.5.3
flamingo[full]
beautifulsoup4
Pillow
ipython==6
coloredlogs
flamingo[full]==1.6.1
beautifulsoup4==4.5.3
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>
......@@ -63,16 +63,14 @@ Den Router konfigurieren
- 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 wird 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.
......
......@@ -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>
......
......@@ -13,7 +13,7 @@ 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://w.freifunk-bs.de/raw/parker_beta/sysupgrade/gluon-ffbs-next-v2020.2.2.2-ffbs-next-202103281243-parker_beta-avm-fritz-box-7412-sysupgrade.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:
......@@ -82,7 +82,7 @@ Die Freifunk-Firmware auf den Router installieren und dazu in *Terminal
Freifunk konfigurieren
----------------------
Nun kann wie gehabt über [[http://192.168.1.1]] die Konfiguration erfolgen.
Nun kann wie gehabt über http://192.168.1.1 die Konfiguration erfolgen.
Troubleshooting: Wenn es einfach nicht klappt
---------------------------------------------
......@@ -92,7 +92,7 @@ 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
sobald in *Terminal 2* der Ping funktioniert
* Benutzer: adam2
* Passwort: adam2
* Eingabe von *quote SETENV linux_fs_start 0*
......
......@@ -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
date: 2019-09-16
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
date: 2019-09-26
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.