Age | Commit message (Collapse) | Author |
|
(cherry picked from commit 07a918444ddbd92092a09f53e3cb21e8beed567b)
|
|
(from ff49ff9614058a8940149a3cae0f3206e5c641a7)
|
|
(cherry picked from commit 655ced35fd98c15f3502cfdb972bd61034a604f3)
Signed-off-by: Jan Huwald <jh@sotun.de>
|
|
|
|
|
|
|
|
|
|
Replace the last bits of hardcoded FFJ IP range outside /etc/config -
residing in fsm inetable state transitions - with IP ranges calculated
from /etc/config/cloud.
|
|
Check if the interface is running before trying to ping. This reduces
the execution time of test_connectivity in common non-gateway
deployments.
|
|
- setup router is obsoleted by the autodiscovery of network status
implemented in the previous commits
- test_* is superseded by test_connectivity
|
|
|
|
- add cronjob for splash_sync (every minute for debugging; to be
increased)
- add redirection for unsplashed users in queen.enter, remove it in
queen.leave
- add /etc/splash.sh to centralize functionality used in
/sbin/splash_sync and /www/service/*splash*
- make splash_sync to use a transactional update approach: insert
iptable rules for all splashed MACs into a new chain, then replace
old and new chain; this avoids downtime even if splash_sync is slow
- remove allowed services for splashed users; this is intended to not
move old cruft over to new code; if any of the those services shall
be reenabled, it should happen in /etc/firewall.user
- make /sbin/splash_sync aware of the current state of FSM inetable
(read via /sbin/fsm with optional command line override); this
allows to unconditionally call splash_sync via cron
- add locks to all places where the splash state is touched
- remove multiple escaping/quoting/encoding problems in splash cgi
scripts
- reenable link to the page the user initially demanded in
/www/service/cgi-bin/splash_click
|
|
|
|
|
|
- Replace the URL encding escape character % with _. This allows
passing the encoded value forth and back between our (buggy) server
and (buggy) clients without escaping the escape character.
- add /sbin/urldecode to reverse the encoding
|
|
config
1. When in robinson state the router now resolves all domain names to
an IP in the robinson fake net (as defined in
/etc/config/cloud). All tcp traffic to this network (and the rest
of the internet) is redirected to a local webserver.
2. The ip addresses in robinson state are now generated in the ranges
given in /etc/config/cloud
|
|
|
|
This file is intended to centrally store all information specific to
the local mesh cloud (name of the local freifunk community, used
address ranges, ...) that is
- device independent (e.g. no device names)
- does not fit in another config file (e.g. freifunk community name)
or is subject to change during runtime (e.g. robinson network
address range)
Ultimately it shall be generated during image creation.
|
|
|
|
|
|
No full URL encoding is performed. Only the characters % &?<>"' are
encoded.
|
|
Locking the state file during `fsm get` operations is annoying. And
the returned state may be changed anytime after termination, so the
caller can not rely on it being up to date anyway.
|
|
The next patch will need this to build catch-all DNS for the
robinson state.
|
|
- update the redirection uhttpd config and www-root to redirect all
incoming request to a url specified by /tmp/redirection_target
- use this to implement robinson and splash redirection during
robinson and queen/ghost states, respectively
- change the service httpd to listen on the public IPv4 address
available on the mesh interface in those states.
Missing is the
- iptable based redirection
- already referenced /sbin/urlencode
|
|
Add function to enable/disable/change the uhttpd uci config state. Use
these functions to start the service httpd, listening on the
link-local IPv6 addresses of br-lan and br-mesh.
|
|
This patch splits the single uhttpd instance into two uhttpd instances
with www root /www/<servicename> for the following purposes:
- service :: self-service / debugging / status.xml
- redirection :: use for splash/robinson redirection
The uhttpd uci config is adapted: by default all instances declared
there are disabled; They shall be enabled by the FSM inetable. To this
end a listen_http directive will be added and the config type will be
changed from 'disabled' to 'uhttpd' by state transition scripts.
|
|
- add mesh_add/del_ipv4 to set/unset IPv4 addresses of mesh iface; the
address is set using ifconfig to avoid ifudown+ifup but also updated
in UCI to maintain a consistent state
- use this function in queen, ghost and robinson state transitions
- use `batctl gw off` in robinson state: this allows to deliever local
DHCP replies while dropping the idea of announcing fake gateways
- ghost.leave reuses queen.leave
|
|
|
|
|
|
- implemented according to documentation
- almost no tests so far
|
|
|
|
|
|
|
|
|
|
For debugging reasons both cronjobs are executed once per minute. This
rate should be reduced before deployment in larger networks.
|
|
Add a init script that - early during the first boot only - creates
/etc/nodeid and fills it with a unique identifer. This nodeid is
persistent across reboots and protected from sysupgrades.
|
|
The new script ./name_firmware is used to generates two files in
openwrt/$REPO/files/ during `make image/...`:
- /etc/firmware (see documentation on firmware id)
- /etc/banner (login banner; generated from the template in
/files/common/etc/banner)
|
|
FSM to handle firmware update process in a synchronized all-or-nothing
manner. See doc/overview.org for details.
|
|
|
|
lists an entire table (but without the version of each row)
|
|
`test_connectivity <internet|vpn>` returns true iff. one of several
probe hosts can be reached over the given interface.
|
|
- implements finite state machine given a definition in /etc/fsm/
- see upcoming doc/ commits for detail
|
|
|
|
The table broadcasted once per minute over br-mesh. To fill the table
with contents on all nodes, run:
p2ptbl update /tmp/p2ptbl/test somekey somevalue
on one node. If the command shall have immediate effect, run:
p2ptbl update /tmp/p2ptbl/test somekey somevalue br-mesh
|
|
- add `p2ptbl gossip` to distribute tables via udp bcast
- add interface option to `p2ptbl update` for immediate communication
of updates
- add p2ptbl-recv as HBBP-handler to receive table updates
p2ptbl-recv has to be symlinked from <HBBP-root>/p2ptbl/<table-name>.
It reads the table name from $0 and assumes that all tables are stored
in /tmp/p2ptbl/.
|
|
|
|
|
|
P2P tables allow to maintain distributed state using a MVCC key-value
store. This patch adds the executable for manipulating a table but not
the gossip protocol to synchronize it.
|
|
|
|
|