summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--INSTALL2
-rw-r--r--Makefile22
-rw-r--r--README50
-rw-r--r--applications/community-leipzig/Makefile2
-rw-r--r--applications/community-leipzig/root/etc/uci-defaults/ffluci-community-leipzig15
-rw-r--r--applications/luci-fw/Makefile2
-rw-r--r--applications/luci-fw/root/etc/config/luci_fw (renamed from module/admin-core/contrib/uci/luci_fw)0
-rw-r--r--applications/luci-fw/root/etc/init.d/luci_fw (renamed from module/admin-core/contrib/init.d/luci_fw)0
-rw-r--r--applications/luci-fw/src/model/cbi/admin_network/firewall.lua (renamed from module/admin-core/src/model/cbi/admin_network/firewall.lua)0
-rw-r--r--applications/luci-fw/src/model/cbi/admin_network/portfw.lua (renamed from module/admin-core/src/model/cbi/admin_network/portfw.lua)0
-rw-r--r--applications/luci-fw/src/model/menu/50luci-fw.lua3
-rw-r--r--applications/luci-splash/Makefile2
-rw-r--r--applications/luci-splash/root/etc/config/luci_splash (renamed from contrib/package/ffluci-splash/src/luci_splash.uci)0
-rw-r--r--applications/luci-splash/root/etc/cron.minutely/luci_splash (renamed from contrib/package/ffluci-splash/src/luci_splash.cron)0
-rw-r--r--applications/luci-splash/root/etc/init.d/luci_splash (renamed from contrib/package/ffluci-splash/src/luci_splash.init)0
-rw-r--r--applications/luci-splash/root/etc/luci_splash_httpd.conf (renamed from contrib/package/ffluci-splash/src/luci_splash_httpd.conf)0
-rw-r--r--applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi (renamed from contrib/package/ffluci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi)0
-rw-r--r--applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html (renamed from contrib/package/ffluci-splash/src/luci-splash/htdocs/index.html)0
-rw-r--r--applications/luci-splash/root/www/cgi-bin/luci_splash.cgi (renamed from module/admin-core/contrib/luci-splash)0
-rw-r--r--applications/luci-splash/src/controller/controller.lua (renamed from module/admin-core/src/controller/splash/splash.lua)0
-rw-r--r--applications/luci-splash/src/model/cbi/admin_services/splash.lua (renamed from module/admin-core/src/model/cbi/admin_services/splash.lua)0
-rw-r--r--applications/luci-splash/src/model/menu/50luci-splash.lua2
-rw-r--r--applications/luci-splash/src/model/view/splash/splash.htm (renamed from module/admin-core/src/view/splash/splash.htm)0
-rw-r--r--applications/luci-splash/src/model/view/splash_splash/index.htm (renamed from module/admin-core/src/view/splash_splash/index.htm)0
-rw-r--r--applications/luci-splash/src/model/view/splash_splash/splash.htm (renamed from module/admin-core/src/view/splash_splash/splash.htm)0
-rw-r--r--applications/sgi-haserl/Makefile2
-rwxr-xr-xapplications/sgi-haserl/root/www/cgi-bin/ffluci (renamed from core/contrib/ffluci)0
-rwxr-xr-xapplications/sgi-haserl/root/www/cgi-bin/ffluci-upload (renamed from core/contrib/ffluci-upload)0
-rwxr-xr-xapplications/sgi-haserl/root/www/cgi-bin/index.cgi (renamed from core/contrib/index.cgi)0
-rw-r--r--applications/sgi-haserl/root/www/index.html (renamed from core/contrib/index.html)0
-rw-r--r--applications/sgi-haserl/src/sgi/haserl.lua (renamed from core/src/ffluci/sgi/haserl.lua)2
-rw-r--r--applications/sgi-webuci/Makefile2
-rw-r--r--applications/sgi-webuci/root/lib/webuci/main.lua (renamed from core/contrib/webuci_bootstrap.lua)0
-rw-r--r--applications/sgi-webuci/src/sgi/webuci.lua (renamed from core/src/ffluci/sgi/webuci.lua)2
-rw-r--r--build/config.mk3
-rw-r--r--build/module.mk15
-rw-r--r--contrib/package/ffluci-splash/Makefile43
-rw-r--r--contrib/package/ffluci-splash/ipkg/conffiles1
-rw-r--r--contrib/package/ffluci-splash/src/luci-splash.lua176
-rw-r--r--contrib/package/ffluci-system-addons/Makefile32
-rw-r--r--contrib/package/ffluci/Makefile232
-rw-r--r--contrib/package/ffluci/ipkg/conffiles2
-rwxr-xr-xcontrib/package/ffluci/ipkg/ffluci-community-leipzig.postinst4
-rwxr-xr-xcontrib/package/ffluci/ipkg/ffluci-sgi-haserl.postinst (renamed from contrib/package/ffluci/ipkg/ffluci.postinst)0
-rw-r--r--contrib/package/luci-addons/Makefile37
-rw-r--r--contrib/package/luci-addons/dist/etc/crontabs/root (renamed from contrib/package/ffluci-system-addons/src/root.crontab)0
-rw-r--r--contrib/package/luci-addons/dist/etc/hotplug.d/iface/20-aliases (renamed from contrib/package/ffluci-system-addons/src/hotplug.d-20-aliases)0
-rw-r--r--contrib/package/luci-addons/dist/sbin/ffluci-flash (renamed from module/admin-core/contrib/ffluci-flash)0
-rw-r--r--contrib/package/luci-addons/dist/usr/bin/run-parts (renamed from contrib/package/ffluci-system-addons/src/run-parts)0
-rw-r--r--core/Makefile41
-rw-r--r--core/contrib/uci/freifunk26
-rw-r--r--core/root/etc/config/luci (renamed from core/contrib/uci/luci)0
-rw-r--r--core/src/bits.lua (renamed from core/src/ffluci/bits.lua)0
-rw-r--r--core/src/cbi.lua (renamed from core/src/ffluci/cbi.lua)0
-rw-r--r--core/src/config.lua (renamed from core/src/ffluci/config.lua)0
-rw-r--r--core/src/debug.lua (renamed from core/src/ffluci/debug.lua)0
-rw-r--r--core/src/dispatcher.lua (renamed from core/src/ffluci/dispatcher.lua)0
-rw-r--r--core/src/fs.lua (renamed from core/src/ffluci/fs.lua)0
-rw-r--r--core/src/http.lua (renamed from core/src/ffluci/http.lua)0
-rw-r--r--core/src/i18n.lua (renamed from core/src/ffluci/i18n.lua)0
-rw-r--r--core/src/i18n/cbi.en (renamed from core/src/ffluci/i18n/cbi.en)0
-rw-r--r--core/src/i18n/default.en (renamed from core/src/ffluci/i18n/default.en)0
-rw-r--r--core/src/init.lua (renamed from core/src/ffluci/init.lua)0
-rw-r--r--core/src/menu.lua (renamed from core/src/ffluci/menu.lua)0
-rw-r--r--core/src/model/ipkg.lua (renamed from core/src/ffluci/model/ipkg.lua)0
-rw-r--r--core/src/model/uci.lua (renamed from core/src/ffluci/model/uci.lua)0
-rw-r--r--core/src/model/uci/libuci.lua (renamed from core/src/ffluci/model/uci/libuci.lua)0
-rw-r--r--core/src/model/uci/wrapper.lua (renamed from core/src/ffluci/model/uci/wrapper.lua)0
-rw-r--r--core/src/sys.lua (renamed from core/src/ffluci/sys.lua)0
-rw-r--r--core/src/template.lua (renamed from core/src/ffluci/template.lua)0
-rw-r--r--core/src/util.lua (renamed from core/src/ffluci/util.lua)0
-rw-r--r--core/src/view/cbi/dvalue.htm (renamed from core/src/ffluci/view/cbi/dvalue.htm)0
-rw-r--r--core/src/view/cbi/footer.htm (renamed from core/src/ffluci/view/cbi/footer.htm)0
-rw-r--r--core/src/view/cbi/fvalue.htm (renamed from core/src/ffluci/view/cbi/fvalue.htm)0
-rw-r--r--core/src/view/cbi/header.htm (renamed from core/src/ffluci/view/cbi/header.htm)0
-rw-r--r--core/src/view/cbi/lvalue.htm (renamed from core/src/ffluci/view/cbi/lvalue.htm)0
-rw-r--r--core/src/view/cbi/map.htm (renamed from core/src/ffluci/view/cbi/map.htm)0
-rw-r--r--core/src/view/cbi/mvalue.htm (renamed from core/src/ffluci/view/cbi/mvalue.htm)0
-rw-r--r--core/src/view/cbi/nsection.htm (renamed from core/src/ffluci/view/cbi/nsection.htm)0
-rw-r--r--core/src/view/cbi/tsection.htm (renamed from core/src/ffluci/view/cbi/tsection.htm)0
-rw-r--r--core/src/view/cbi/ucisection.htm (renamed from core/src/ffluci/view/cbi/ucisection.htm)0
-rw-r--r--core/src/view/cbi/value.htm (renamed from core/src/ffluci/view/cbi/value.htm)0
-rw-r--r--core/src/view/cbi/valuefooter.htm (renamed from core/src/ffluci/view/cbi/valuefooter.htm)0
-rw-r--r--core/src/view/cbi/valueheader.htm (renamed from core/src/ffluci/view/cbi/valueheader.htm)0
-rw-r--r--core/src/view/error404.htm (renamed from core/src/ffluci/view/error404.htm)0
-rw-r--r--core/src/view/error500.htm (renamed from core/src/ffluci/view/error500.htm)0
-rw-r--r--core/src/view/footer.htm (renamed from core/src/ffluci/view/footer.htm)0
-rw-r--r--core/src/view/header.htm (renamed from core/src/ffluci/view/header.htm)0
-rw-r--r--module/admin-core/Makefile34
-rw-r--r--module/admin-core/contrib/init.d/luci_freifunk91
-rw-r--r--module/admin-core/src/controller/admin/index.lua171
-rw-r--r--module/admin-core/src/model/cbi/admin_index/contact.lua18
-rw-r--r--module/admin-core/src/model/cbi/admin_index/freifunk.lua23
-rw-r--r--module/public-core/Makefile35
-rw-r--r--module/public-core/src/controller/public/index.lua1
-rw-r--r--module/public-core/src/controller/public/olsr.lua137
-rw-r--r--module/public-core/src/controller/public/status.lua21
-rw-r--r--module/public-core/src/controller/sudo/status.lua1
-rw-r--r--module/public-core/src/model/menu/00public.lua12
-rw-r--r--module/public-core/src/view/public_index/contact.htm13
-rw-r--r--module/public-core/src/view/public_index/index.htm11
-rw-r--r--module/public-core/src/view/public_olsr/error_olsr.htm6
-rw-r--r--module/public-core/src/view/public_olsr/hna.htm17
-rw-r--r--module/public-core/src/view/public_olsr/index.htm43
-rw-r--r--module/public-core/src/view/public_olsr/mid.htm17
-rw-r--r--module/public-core/src/view/public_olsr/routes.htm36
-rw-r--r--module/public-core/src/view/public_olsr/topology.htm23
-rw-r--r--module/public-core/src/view/public_status/index.htm59
-rw-r--r--module/public-core/src/view/public_status/iwscan.htm21
-rw-r--r--module/public-core/src/view/public_status/routes.htm28
-rw-r--r--module/public-core/src/view/sudo_status/iwconfig.htm21
-rw-r--r--module/public-core/src/view/sudo_status/iwscan.htm22
-rw-r--r--module/rpc-core/Makefile35
-rw-r--r--module/rpc-core/src/controller/rpc/luciinfo.lua41
-rw-r--r--modules/admin-core/Makefile2
-rw-r--r--modules/admin-core/src/controller/admin/index.lua1
-rw-r--r--modules/admin-core/src/controller/admin/network.lua (renamed from module/admin-core/src/controller/admin/network.lua)0
-rw-r--r--modules/admin-core/src/controller/admin/services.lua (renamed from module/admin-core/src/controller/admin/services.lua)0
-rw-r--r--modules/admin-core/src/controller/admin/system.lua (renamed from module/admin-core/src/controller/admin/system.lua)0
-rw-r--r--modules/admin-core/src/controller/admin/uci.lua (renamed from module/admin-core/src/controller/admin/uci.lua)0
-rw-r--r--modules/admin-core/src/controller/admin/wifi.lua (renamed from module/admin-core/src/controller/admin/wifi.lua)0
-rw-r--r--modules/admin-core/src/i18n/admin_index.en (renamed from module/admin-core/src/i18n/admin_index.en)13
-rw-r--r--modules/admin-core/src/i18n/admin_uci.en (renamed from module/admin-core/src/i18n/admin_uci.en)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_index/luci.lua (renamed from module/admin-core/src/model/cbi/admin_index/luci.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/dhcp.lua (renamed from module/admin-core/src/model/cbi/admin_network/dhcp.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/ifaces.lua (renamed from module/admin-core/src/model/cbi/admin_network/ifaces.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/ptp.lua (renamed from module/admin-core/src/model/cbi/admin_network/ptp.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/qos.lua (renamed from module/admin-core/src/model/cbi/admin_network/qos.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/routes.lua (renamed from module/admin-core/src/model/cbi/admin_network/routes.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_network/vlan.lua (renamed from module/admin-core/src/model/cbi/admin_network/vlan.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua (renamed from module/admin-core/src/model/cbi/admin_services/dnsmasq.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_services/dropbear.lua (renamed from module/admin-core/src/model/cbi/admin_services/dropbear.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_services/httpd.lua (renamed from module/admin-core/src/model/cbi/admin_services/httpd.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_services/olsrd.lua (renamed from module/admin-core/src/model/cbi/admin_services/olsrd.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_system/fstab.lua (renamed from module/admin-core/src/model/cbi/admin_system/fstab.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_system/hostname.lua (renamed from module/admin-core/src/model/cbi/admin_system/hostname.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_wifi/devices.lua (renamed from module/admin-core/src/model/cbi/admin_wifi/devices.lua)0
-rw-r--r--modules/admin-core/src/model/cbi/admin_wifi/networks.lua (renamed from module/admin-core/src/model/cbi/admin_wifi/networks.lua)0
-rw-r--r--modules/admin-core/src/model/menu/00admin.lua (renamed from module/admin-core/src/model/menu/00admin.lua)8
-rw-r--r--modules/admin-core/src/view/admin_index/index.htm (renamed from module/admin-core/src/view/admin_index/index.htm)0
-rw-r--r--modules/admin-core/src/view/admin_index/wizard.htm (renamed from module/admin-core/src/view/admin_index/wizard.htm)0
-rw-r--r--modules/admin-core/src/view/admin_network/index.htm (renamed from module/admin-core/src/view/admin_network/index.htm)0
-rw-r--r--modules/admin-core/src/view/admin_services/index.htm (renamed from module/admin-core/src/view/admin_services/index.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/editor.htm (renamed from module/admin-core/src/view/admin_system/editor.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/index.htm (renamed from module/admin-core/src/view/admin_system/index.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/ipkg.htm (renamed from module/admin-core/src/view/admin_system/ipkg.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/packages.htm (renamed from module/admin-core/src/view/admin_system/packages.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/passwd.htm (renamed from module/admin-core/src/view/admin_system/passwd.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/reboot.htm (renamed from module/admin-core/src/view/admin_system/reboot.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/sshkeys.htm (renamed from module/admin-core/src/view/admin_system/sshkeys.htm)0
-rw-r--r--modules/admin-core/src/view/admin_system/upgrade.htm (renamed from module/admin-core/src/view/admin_system/upgrade.htm)0
-rw-r--r--modules/admin-core/src/view/admin_uci/apply.htm (renamed from module/admin-core/src/view/admin_uci/apply.htm)0
-rw-r--r--modules/admin-core/src/view/admin_uci/changes.htm (renamed from module/admin-core/src/view/admin_uci/changes.htm)0
-rw-r--r--modules/admin-core/src/view/admin_uci/revert.htm (renamed from module/admin-core/src/view/admin_uci/revert.htm)0
-rw-r--r--modules/admin-core/src/view/admin_wifi/index.htm (renamed from module/admin-core/src/view/admin_wifi/index.htm)0
-rw-r--r--themes/fledermaus/Makefile2
-rw-r--r--themes/fledermaus/root/www/ffluci/media/cascade.css (renamed from themes/fledermaus/contrib/media/cascade.css)0
-rw-r--r--themes/fledermaus/root/www/ffluci/media/cbi.js (renamed from themes/fledermaus/contrib/media/cbi.js)0
-rw-r--r--themes/fledermaus/root/www/ffluci/media/logo.png (renamed from themes/fledermaus/contrib/media/logo.png)bin4002 -> 4002 bytes
159 files changed, 300 insertions, 1383 deletions
diff --git a/INSTALL b/INSTALL
index 8c3bbe8d7..062054411 100644
--- a/INSTALL
+++ b/INSTALL
@@ -13,7 +13,7 @@ TOC:
3. Run ./scripts/feeds update
- 4. Run ./scripts/feeds install ffluci
+ 4. Run ./scripts/feeds install ffluci-meta
5. Type make menuconfig and you will find ffluci in the menu "Administration"
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..a57acf497
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,22 @@
+include build/config.mk
+
+MODULES = applications/* core modules/* themes/*
+LUA_TARGET = source
+
+
+.PHONY: all build clean host hostclean
+
+all: build
+
+build:
+ for i in $(MODULES); do make -C$$i $(LUA_TARGET); done
+
+clean:
+ for i in $(MODULES); do make -C$$i clean; done
+
+host: build
+ mkdir -p host/ffluci
+ for i in $(MODULES); do cp $$i/dist$(LUCI_INSTALLDIR) host/ffluci -R; done
+
+hostclean:
+ rm host -rf \ No newline at end of file
diff --git a/README b/README
deleted file mode 100644
index 422eddf2f..000000000
--- a/README
+++ /dev/null
@@ -1,50 +0,0 @@
-FFLuCI - Freifunk Lua Configuration Interface
-
-This is a leightweight MVC-Webframework for small embedded devices.
-It uses the the Lua programming language and relies on Haserl.
-
-It consists of several parts:
-
-MVC Dispatcher
- Simple PATH_INFO based dispatching mechanism using Lua modules
-
-
-Template engine
- Support for plain and compiled templates, on-demand compiling support
- Short markups:
- <% Lua-Code %>
- <%= Lua-Code with return value %>
- <%:i18nkey default translation%>
- <%+template-to-be-included%>
- <%~uci.short.cut%>
-
- Predefined variables for controller dir and media dir
-
-
-Configuration Bind Interface (CBI)
- Generates and validates XHTML-Forms out of an UCI model description
- Makes it very easy to create webinterface pages that manipulate UCI files
-
-
-i18n Translation support
- Simple multi-language per-module internationalization support
-
-
-UCI wrapper support
- Lua UCI-Wrapper adapting the CLI of the uci binary
-
-
-Menu Building support
- Supports menu building for modules and exported actions
-
-
-HTTP-Abstraction and Formvalue validation support
- HTTP-Redirect, Statuscode, Content-Type abstraction
- Dynamic formvalue validation support including varaible type and
- value range validation
-
-
-Known issues:
- There is a bug in older versions of busybox-httpd (as those in Kamikaze 7.09)
- that do not handle Status-headers correctly making valid HTTP-Redirects impossible.
- Using a newer version of Kamikaze should fix this. \ No newline at end of file
diff --git a/applications/community-leipzig/Makefile b/applications/community-leipzig/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/applications/community-leipzig/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/applications/community-leipzig/root/etc/uci-defaults/ffluci-community-leipzig b/applications/community-leipzig/root/etc/uci-defaults/ffluci-community-leipzig
new file mode 100644
index 000000000..e73ff913c
--- /dev/null
+++ b/applications/community-leipzig/root/etc/uci-defaults/ffluci-community-leipzig
@@ -0,0 +1,15 @@
+#!/bin/sh
+uci batch <<-EOF
+ set freifunk.community.name='Freifunk Leipzig'
+ set freifunk.community.homepage=http://leipzig.freifunk.net
+ set freifunk.community.essid=leipzig.freifunk.net
+ set freifunk.community.bssid=02:CA:FF:EE:BA:BE
+ set freifunk.community.realm=db.leipzig.freifunk.net
+ set freifunk.community.channel=1
+ set freifunk.community.net=104.0.0.0
+ set freifunk.community.mask=255.0.0.0
+ set freifunk.community.dhcp=10.0.0.0
+ set freifunk.community.dhcpmask=255.255.255.0
+ set freifunk.community.dns='88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222'
+EOF
+ \ No newline at end of file
diff --git a/applications/luci-fw/Makefile b/applications/luci-fw/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/applications/luci-fw/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/module/admin-core/contrib/uci/luci_fw b/applications/luci-fw/root/etc/config/luci_fw
index c7dec7f2c..c7dec7f2c 100644
--- a/module/admin-core/contrib/uci/luci_fw
+++ b/applications/luci-fw/root/etc/config/luci_fw
diff --git a/module/admin-core/contrib/init.d/luci_fw b/applications/luci-fw/root/etc/init.d/luci_fw
index e98b3f729..e98b3f729 100644
--- a/module/admin-core/contrib/init.d/luci_fw
+++ b/applications/luci-fw/root/etc/init.d/luci_fw
diff --git a/module/admin-core/src/model/cbi/admin_network/firewall.lua b/applications/luci-fw/src/model/cbi/admin_network/firewall.lua
index 4ff15db53..4ff15db53 100644
--- a/module/admin-core/src/model/cbi/admin_network/firewall.lua
+++ b/applications/luci-fw/src/model/cbi/admin_network/firewall.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/portfw.lua b/applications/luci-fw/src/model/cbi/admin_network/portfw.lua
index 96822b53a..96822b53a 100644
--- a/module/admin-core/src/model/cbi/admin_network/portfw.lua
+++ b/applications/luci-fw/src/model/cbi/admin_network/portfw.lua
diff --git a/applications/luci-fw/src/model/menu/50luci-fw.lua b/applications/luci-fw/src/model/menu/50luci-fw.lua
new file mode 100644
index 000000000..93aba2fab
--- /dev/null
+++ b/applications/luci-fw/src/model/menu/50luci-fw.lua
@@ -0,0 +1,3 @@
+sel("admin", "network")
+act("portfw", "Portweiterleitung")
+act("firewall", "Firewall") \ No newline at end of file
diff --git a/applications/luci-splash/Makefile b/applications/luci-splash/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/applications/luci-splash/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/contrib/package/ffluci-splash/src/luci_splash.uci b/applications/luci-splash/root/etc/config/luci_splash
index c4cfef5dd..c4cfef5dd 100644
--- a/contrib/package/ffluci-splash/src/luci_splash.uci
+++ b/applications/luci-splash/root/etc/config/luci_splash
diff --git a/contrib/package/ffluci-splash/src/luci_splash.cron b/applications/luci-splash/root/etc/cron.minutely/luci_splash
index eae429474..eae429474 100644
--- a/contrib/package/ffluci-splash/src/luci_splash.cron
+++ b/applications/luci-splash/root/etc/cron.minutely/luci_splash
diff --git a/contrib/package/ffluci-splash/src/luci_splash.init b/applications/luci-splash/root/etc/init.d/luci_splash
index 20f7865fd..20f7865fd 100644
--- a/contrib/package/ffluci-splash/src/luci_splash.init
+++ b/applications/luci-splash/root/etc/init.d/luci_splash
diff --git a/contrib/package/ffluci-splash/src/luci_splash_httpd.conf b/applications/luci-splash/root/etc/luci_splash_httpd.conf
index 6007e80db..6007e80db 100644
--- a/contrib/package/ffluci-splash/src/luci_splash_httpd.conf
+++ b/applications/luci-splash/root/etc/luci_splash_httpd.conf
diff --git a/contrib/package/ffluci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi b/applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi
index 3bff85ee5..3bff85ee5 100644
--- a/contrib/package/ffluci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi
+++ b/applications/luci-splash/root/usr/lib/luci-splash/htdocs/cgi-bin/index.cgi
diff --git a/contrib/package/ffluci-splash/src/luci-splash/htdocs/index.html b/applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html
index 58387a5fe..58387a5fe 100644
--- a/contrib/package/ffluci-splash/src/luci-splash/htdocs/index.html
+++ b/applications/luci-splash/root/usr/lib/luci-splash/htdocs/index.html
diff --git a/module/admin-core/contrib/luci-splash b/applications/luci-splash/root/www/cgi-bin/luci_splash.cgi
index 188ad7aa0..188ad7aa0 100644
--- a/module/admin-core/contrib/luci-splash
+++ b/applications/luci-splash/root/www/cgi-bin/luci_splash.cgi
diff --git a/module/admin-core/src/controller/splash/splash.lua b/applications/luci-splash/src/controller/controller.lua
index 62088be52..62088be52 100644
--- a/module/admin-core/src/controller/splash/splash.lua
+++ b/applications/luci-splash/src/controller/controller.lua
diff --git a/module/admin-core/src/model/cbi/admin_services/splash.lua b/applications/luci-splash/src/model/cbi/admin_services/splash.lua
index fe4d2c3ee..fe4d2c3ee 100644
--- a/module/admin-core/src/model/cbi/admin_services/splash.lua
+++ b/applications/luci-splash/src/model/cbi/admin_services/splash.lua
diff --git a/applications/luci-splash/src/model/menu/50luci-splash.lua b/applications/luci-splash/src/model/menu/50luci-splash.lua
new file mode 100644
index 000000000..99f7caa52
--- /dev/null
+++ b/applications/luci-splash/src/model/menu/50luci-splash.lua
@@ -0,0 +1,2 @@
+sel("admin", "services")
+act("splash", "Client-Splash") \ No newline at end of file
diff --git a/module/admin-core/src/view/splash/splash.htm b/applications/luci-splash/src/model/view/splash/splash.htm
index db4bd0f78..db4bd0f78 100644
--- a/module/admin-core/src/view/splash/splash.htm
+++ b/applications/luci-splash/src/model/view/splash/splash.htm
diff --git a/module/admin-core/src/view/splash_splash/index.htm b/applications/luci-splash/src/model/view/splash_splash/index.htm
index 75aa02658..75aa02658 100644
--- a/module/admin-core/src/view/splash_splash/index.htm
+++ b/applications/luci-splash/src/model/view/splash_splash/index.htm
diff --git a/module/admin-core/src/view/splash_splash/splash.htm b/applications/luci-splash/src/model/view/splash_splash/splash.htm
index 9c165802f..9c165802f 100644
--- a/module/admin-core/src/view/splash_splash/splash.htm
+++ b/applications/luci-splash/src/model/view/splash_splash/splash.htm
diff --git a/applications/sgi-haserl/Makefile b/applications/sgi-haserl/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/applications/sgi-haserl/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/core/contrib/ffluci b/applications/sgi-haserl/root/www/cgi-bin/ffluci
index 183a6ad41..183a6ad41 100755
--- a/core/contrib/ffluci
+++ b/applications/sgi-haserl/root/www/cgi-bin/ffluci
diff --git a/core/contrib/ffluci-upload b/applications/sgi-haserl/root/www/cgi-bin/ffluci-upload
index 0128c2dd7..0128c2dd7 100755
--- a/core/contrib/ffluci-upload
+++ b/applications/sgi-haserl/root/www/cgi-bin/ffluci-upload
diff --git a/core/contrib/index.cgi b/applications/sgi-haserl/root/www/cgi-bin/index.cgi
index 31705ccf2..31705ccf2 100755
--- a/core/contrib/index.cgi
+++ b/applications/sgi-haserl/root/www/cgi-bin/index.cgi
diff --git a/core/contrib/index.html b/applications/sgi-haserl/root/www/index.html
index 58387a5fe..58387a5fe 100644
--- a/core/contrib/index.html
+++ b/applications/sgi-haserl/root/www/index.html
diff --git a/core/src/ffluci/sgi/haserl.lua b/applications/sgi-haserl/src/sgi/haserl.lua
index 7e9854d7d..027697e2e 100644
--- a/core/src/ffluci/sgi/haserl.lua
+++ b/applications/sgi-haserl/src/sgi/haserl.lua
@@ -5,7 +5,7 @@ Description:
Server Gateway Interface for Haserl
FileId:
-$Id$
+$Id: haserl.lua 2027 2008-05-07 21:16:35Z Cyrus $
License:
Copyright 2008 Steven Barth <steven@midlink.org>
diff --git a/applications/sgi-webuci/Makefile b/applications/sgi-webuci/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/applications/sgi-webuci/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/core/contrib/webuci_bootstrap.lua b/applications/sgi-webuci/root/lib/webuci/main.lua
index 50ac8184b..50ac8184b 100644
--- a/core/contrib/webuci_bootstrap.lua
+++ b/applications/sgi-webuci/root/lib/webuci/main.lua
diff --git a/core/src/ffluci/sgi/webuci.lua b/applications/sgi-webuci/src/sgi/webuci.lua
index 5e17ab793..bc1c7be7a 100644
--- a/core/src/ffluci/sgi/webuci.lua
+++ b/applications/sgi-webuci/src/sgi/webuci.lua
@@ -5,7 +5,7 @@ Description:
Server Gateway Interface for Haserl
FileId:
-$Id$
+$Id: webuci.lua 2027 2008-05-07 21:16:35Z Cyrus $
License:
Copyright 2008 Steven Barth <steven@midlink.org>
diff --git a/build/config.mk b/build/config.mk
new file mode 100644
index 000000000..af0b443d5
--- /dev/null
+++ b/build/config.mk
@@ -0,0 +1,3 @@
+LUAC = luac
+LUAC_OPTIONS = -s
+LUCI_INSTALLDIR = /usr/lib/lua/ffluci \ No newline at end of file
diff --git a/build/module.mk b/build/module.mk
new file mode 100644
index 000000000..286927436
--- /dev/null
+++ b/build/module.mk
@@ -0,0 +1,15 @@
+.PHONY: all compile source clean
+
+all: compile
+
+source:
+ mkdir -p dist$(LUCI_INSTALLDIR)
+ cp root dist -R
+ cp src dist$(LUCI_INSTALLDIR) -R
+ for i in $$(find dist -name .svn); do rm $$i -rf; done
+
+compile: source
+ for i in $$(find dist -name *.lua); do $(LUAC) $(LUAC_OPTIONS) -o $$i $$i; done
+
+clean:
+ rm dist -rf \ No newline at end of file
diff --git a/contrib/package/ffluci-splash/Makefile b/contrib/package/ffluci-splash/Makefile
deleted file mode 100644
index 3ea123ffd..000000000
--- a/contrib/package/ffluci-splash/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ffluci-splash
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-PKG_BUILD_DEPENDS:=lua-luci
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/ffluci-splash
- SECTION:=admin
- CATEGORY:=Administration
- SUBMENU:=FFLuCI
- DEPENDS:=+ffluci +iptables-mod-nat +lua-luci
- TITLE:=FFLuCI DHCP-Splash
-endef
-
-define Build/Compile
-endef
-
-define Package/ffluci-splash/install
- $(INSTALL_DIR) $(1)/usr/lib/luci-splash/htdocs/cgi-bin
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_DIR) $(1)/etc/cron.minutely
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_DIR) $(1)/usr/sbin
-
- $(CP) -a ./src/luci-splash/* $(1)/usr/lib/luci-splash/ -R
- $(INSTALL_BIN) ./src/luci-splash/htdocs/cgi-bin/index.cgi $(1)/usr/lib/luci-splash/htdocs/cgi-bin
- $(INSTALL_BIN) ./src/luci_splash.init $(1)/etc/init.d/luci_splash
- $(INSTALL_BIN) ./src/luci-splash.lua $(1)/usr/sbin/luci-splash
-
- $(INSTALL_BIN) ./src/luci_splash.cron $(1)/etc/cron.minutely/luci-splash
- $(CP) -a ./src/luci_splash.uci $(1)/etc/config/luci_splash
- $(CP) -a ./src/luci_splash_httpd.conf $(1)/etc/
-
- $(CP) -a ./ipkg/conffiles $(1)/CONTROL/conffiles
-endef
-
-$(eval $(call BuildPackage,ffluci-splash))
diff --git a/contrib/package/ffluci-splash/ipkg/conffiles b/contrib/package/ffluci-splash/ipkg/conffiles
deleted file mode 100644
index dcbe1ad37..000000000
--- a/contrib/package/ffluci-splash/ipkg/conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/config/luci_splash \ No newline at end of file
diff --git a/contrib/package/ffluci-splash/src/luci-splash.lua b/contrib/package/ffluci-splash/src/luci-splash.lua
deleted file mode 100644
index 2fa6bdd4a..000000000
--- a/contrib/package/ffluci-splash/src/luci-splash.lua
+++ /dev/null
@@ -1,176 +0,0 @@
-#!/usr/bin/lua
-package.path = "/usr/lib/lua/?.lua;/usr/lib/lua/?/init.lua;" .. package.path
-package.cpath = "/usr/lib/lua/?.so;" .. package.cpath
-
-require("ffluci.http")
-require("ffluci.sys")
-require("ffluci.model.uci")
-
--- Init state session
-uci = ffluci.model.uci.StateSession()
-
-
-function main(argv)
- local cmd = argv[1]
- local arg = argv[2]
-
- if cmd == "status" then
- if not arg then
- os.exit(1)
- end
-
- if iswhitelisted(arg) then
- print("whitelisted")
- os.exit(0)
- end
-
- if haslease(arg) then
- print("lease")
- os.exit(0)
- end
-
- print("unknown")
- os.exit(0)
- elseif cmd == "add" then
- if not arg then
- os.exit(1)
- end
-
- if not haslease(arg) then
- add_lease(arg)
- else
- print("already leased!")
- os.exit(2)
- end
- os.exit(0)
- elseif cmd == "remove" then
- if not arg then
- os.exit(1)
- end
-
- remove_lease(arg)
- os.exit(0)
- elseif cmd == "sync" then
- sync()
- os.exit(0)
- else
- print("Usage: " .. argv[0] .. " <status|add|remove|sync> [MAC]")
- os.exit(1)
- end
-end
-
--- Add a lease to state and invoke add_rule
-function add_lease(mac)
- local key = uci:add("luci_splash", "lease")
- uci:set("luci_splash", key, "mac", mac)
- uci:set("luci_splash", key, "start", os.time())
- add_rule(mac)
-end
-
-
--- Remove a lease from state and invoke remove_rule
-function remove_lease(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:sections("luci_splash")) do
- if v[".type"] == "lease" and v.mac:lower() == mac then
- remove_rule(mac)
- uci:del("luci_splash", k)
- end
- end
-end
-
-
--- Add an iptables rule
-function add_rule(mac)
- return os.execute("iptables -t nat -I luci_splash_leases -m mac --mac-source '"..mac.."' -j RETURN")
-end
-
-
--- Remove an iptables rule
-function remove_rule(mac)
- return os.execute("iptables -t nat -D luci_splash_leases -m mac --mac-source '"..mac.."' -j RETURN")
-end
-
-
--- Check whether a MAC-Address is listed in the lease state list
-function haslease(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:sections("luci_splash")) do
- if v[".type"] == "lease" and v.mac and v.mac:lower() == mac then
- return true
- end
- end
-
- return false
-end
-
-
--- Check whether a MAC-Address is whitelisted
-function iswhitelisted(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:sections("luci_splash")) do
- if v[".type"] == "whitelist" and v.mac and v.mac:lower() == mac then
- return true
- end
- end
-
- return false
-end
-
-
--- Returns a list of MAC-Addresses for which a rule is existing
-function listrules()
- local cmd = "iptables -t nat -L luci_splash_leases | grep RETURN |"
- cmd = cmd .. "egrep -io [0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+"
- return ffluci.util.split(ffluci.sys.exec(cmd))
-end
-
-
--- Synchronise leases, remove abandoned rules
-function sync()
- local written = {}
- local time = os.time()
-
- uci:t_load("luci_splash")
-
- -- Current leases in state files
- local leases = uci:t_sections("luci_splash")
-
- -- Convert leasetime to seconds
- local leasetime = tonumber(uci:t_get("luci_splash", "general", "leasetime")) * 3600
-
- -- Clean state file
- uci:t_revert("luci_splash")
-
-
- -- For all leases
- for k, v in pairs(leases) do
- if v[".type"] == "lease" then
- if os.difftime(time, tonumber(v.start)) > leasetime then
- -- Remove expired
- remove_rule(v.mac)
- else
- -- Rewrite state
- local n = uci:t_add("luci_splash", "lease")
- uci:t_set("luci_splash", n, "mac", v.mac)
- uci:t_set("luci_splash", n, "start", v.start)
- written[v.mac:lower()] = 1
- end
- end
- end
-
-
- -- Delete rules without state
- for i, r in ipairs(listrules()) do
- if #r > 0 and not written[r:lower()] then
- remove_rule(r)
- end
- end
-
- uci:t_save("luci_splash")
-end
-
-main(arg) \ No newline at end of file
diff --git a/contrib/package/ffluci-system-addons/Makefile b/contrib/package/ffluci-system-addons/Makefile
deleted file mode 100644
index 622871fca..000000000
--- a/contrib/package/ffluci-system-addons/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ffluci-system-addons
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/ffluci-system-addons
- SECTION:=admin
- CATEGORY:=Administration
- SUBMENU:=FFLuCI
- TITLE:=FFLuCI System Addons for Kamikaze
-endef
-
-define Build/Compile
-endef
-
-define Package/ffluci-system-addons/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_DIR) $(1)/etc/crontabs
- $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
-
- $(INSTALL_BIN) ./src/run-parts $(1)/usr/bin
- $(CP) ./src/root.crontab $(1)/etc/crontabs/root
- $(CP) ./src/hotplug.d-20-aliases $(1)/etc/hotplug.d/iface/20-aliases
-endef
-
-$(eval $(call BuildPackage,ffluci-system-addons))
diff --git a/contrib/package/ffluci/Makefile b/contrib/package/ffluci/Makefile
index 1b0f80e6b..32d82b500 100644
--- a/contrib/package/ffluci/Makefile
+++ b/contrib/package/ffluci/Makefile
@@ -1,79 +1,205 @@
include $(TOPDIR)/rules.mk
+PKG_BRANCH:=trunk
+PKG_SOURCE_URL:=https://dev.leipzig.freifunk.net/svn/ff-luci/$(PKG_BRANCH)
+PKG_REV:=$(shell LC_ALL=C svn info ${PKG_SOURCE_URL} | sed -ne's/^Last Changed Rev: //p')
+
PKG_NAME:=ffluci
-PKG_REV:=HEAD
-PKG_VERSION:=0.3+svn$(PKG_REV)
+PKG_VERSION:=0.4+svn$(PKG_REV)
PKG_RELEASE:=1
-PKG_BRANCH:=trunk
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
PKG_SOURCE_PROTO:=svn
PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE_URL:=https://dev.leipzig.freifunk.net/svn/ff-luci/$(PKG_BRANCH)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+
+PKG_BUILD_DEPENDS:=lua-luci
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
-PKG_BUILD_DEPENDS:=lua-luci
+# LUA_TARGET:=compile LUAC=$(BUILD_DIR_HOST)/lua-luci/luac
+LUA_TARGET:=source
-# MAKE_ACTION:=compile LUAC=$(BUILD_DIR_HOST)/lua-luci/luac
-MAKE_ACTION:=source
include $(INCLUDE_DIR)/package.mk
-define Package/ffluci
+define Build/Configure
+endef
+
+define Build/Compile
+ $(MAKE) -C$(PKG_BUILD_DIR) build LUA_TARGET=$(LUA_TARGET)
+endef
+
+
+define Package/ffluci/template
SECTION:=admin
CATEGORY:=Administration
- TITLE:=FFLuCI
- SUBMENU:=FFLuCI
- DEPENDS:=+luaposix +haserl-lua +ffluci-system-addons
+ TITLE:=FFLuCI - Freifunk Lua Configuration Interface
+ URL:=http://luci.freifunk-halle.net/
MAINTAINER:=Steven Barth <steven-at-midlink-dot-org>
endef
-define Build/Configure
+define Package/ffluci/install/template
+ $(CP) $(PKG_BUILD_DIR)/$(2)/dist/* $(1)/ -R
+
+ for i in $(PKG_BUILD_DIR)/$(2)/dist/usr/bin/*; do $(INSTALL_BIN) $$i $(1)/usr/bin/; done
+ for i in $(PKG_BUILD_DIR)/$(2)/dist/usr/sbin/*; do $(INSTALL_BIN) $$i $(1)/usr/sbin/; done
+ for i in $(PKG_BUILD_DIR)/$(2)/dist/bin/*; do $(INSTALL_BIN) $$i $(1)/bin/; done
+ for i in $(PKG_BUILD_DIR)/$(2)/dist/sbin/*; do $(INSTALL_BIN) $$i $(1)/sbin/; done
endef
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR)/core $(MAKE_ACTION)
- $(MAKE) -C $(PKG_BUILD_DIR)/module/admin-core $(MAKE_ACTION)
- $(MAKE) -C $(PKG_BUILD_DIR)/module/public-core $(MAKE_ACTION)
- $(MAKE) -C $(PKG_BUILD_DIR)/module/rpc-core $(MAKE_ACTION)
+
+define Package/ffluci
+ $(call Package/ffluci/template)
+ MENU:=1
+ DEPENDS:=+lua-luci +luaposix +luci-addons
+endef
+
+define Package/ffluci/conffiles
+/etc/config/luci
endef
define Package/ffluci/install
- $(INSTALL_DIR) $(1)/usr/lib/lua/ffluci
- $(INSTALL_DIR) $(1)/www/cgi-bin
- $(INSTALL_DIR) $(1)/www/ffluci
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_DIR) $(1)/sbin
- $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
-
- $(CP) $(PKG_BUILD_DIR)/core/dist/* $(1)/usr/lib/lua/ -R
- $(CP) $(PKG_BUILD_DIR)/core/contrib/uci/* $(1)/etc/config/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/core/contrib/ffluci $(1)/www/cgi-bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/core/contrib/ffluci-upload $(1)/www/cgi-bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/core/contrib/index.cgi $(1)/www/cgi-bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/core/contrib/index.html $(1)/www
-
- $(CP) $(PKG_BUILD_DIR)/themes/fledermaus/contrib/media $(1)/www/ffluci/ -R
-
- $(CP) $(PKG_BUILD_DIR)/module/admin-core/dist/* $(1)/usr/lib/lua/ffluci/ -R
- $(CP) $(PKG_BUILD_DIR)/module/admin-core/contrib/uci/luci_fw $(1)/etc/config/luci_fw
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/module/admin-core/contrib/init.d/luci_fw $(1)/etc/init.d/luci_fw
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/module/admin-core/contrib/init.d/luci_freifunk $(1)/etc/init.d/luci_freifunk
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/module/admin-core/contrib/ffluci-flash $(1)/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/module/admin-core/contrib/luci-splash $(1)/www/cgi-bin
-
- $(CP) $(PKG_BUILD_DIR)/module/public-core/dist/* $(1)/usr/lib/lua/ffluci/ -R
- $(CP) $(PKG_BUILD_DIR)/module/public-core/contrib/media $(1)/www/ffluci/ -R
-
- $(CP) $(PKG_BUILD_DIR)/module/rpc-core/dist/* $(1)/usr/lib/lua/ffluci/ -R
-
- $(CP) -a ./ipkg/ffluci.postinst $(1)/CONTROL/postinst
- $(CP) -a ./ipkg/conffiles $(1)/CONTROL/conffiles
- rm $(DL_DIR)/$(PKG_SOURCE)
-endef
-
-$(eval $(call BuildPackage,ffluci)) \ No newline at end of file
+ $(call Package/ffluci/install/template,$(1),core)
+ $(call Package/ffluci/install/template,$(1),themes/fledermaus)
+endef
+
+
+
+### Meta Packages ###
+
+define Package/ffluci-freifunk-meta
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci +ffluci-sgi-haserl +ffluci-freifunk +ffluci-firewall +ffluci-splash
+ TITLE:=Freifunk Meta-Package
+endef
+
+define Package/ffluci-meta/install
+endef
+
+
+define Package/ffluci-freifunk-halle
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci-freifunk-meta +kmod-tun
+ TITLE:=Community Meta-Package Halle
+endef
+
+define Package/ffluci-freifunk-halle/install
+endef
+
+
+define Package/ffluci-freifunk-leipzig
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci-freifunk-meta +kmod-tun
+ TITLE:=Community Meta-Package Leipzig
+endef
+
+define Package/ffluci-freifunk-leipzig/install
+ $(call Package/ffluci/install/template,$(1),applications/community-leipzig)
+endef
+
+
+
+### Modules ###
+
+define Package/ffluci-module-admin-core
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci
+ TITLE:=Core Administrative pages for FFLuCI
+endef
+
+define Package/ffluci-module-admin-core/install
+ $(call Package/ffluci/install/template,$(1),modules/admin-core)
+endef
+
+
+define Package/ffluci-module-freifunk
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci +ffluci-module-admin-core
+ TITLE:=Freifunk public and configuration pages
+endef
+
+define Package/ffluci-module-freifunk/conffiles
+/etc/config/freifunk
+endef
+
+define Package/ffluci-module-freifunk/install
+ $(call Package/ffluci/install/template,$(1),modules/freifunk)
+endef
+
+
+
+### Applications ###
+
+define Package/ffluci-firewall
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci +ffluci-module-admin-core
+ TITLE:=Firewall and Portforwarding module
+endef
+
+define Package/ffluci-firewall/conffiles
+/etc/config/luci_fw
+endef
+
+define Package/ffluci-firewall/install
+ $(call Package/ffluci/install/template,$(1),applications/luci-fw)
+endef
+
+
+define Package/ffluci-splash
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci +ffluci-freifunk +ffluci-sgi-haserl +iptables-mod-nat
+ TITLE:=Freifunk DHCP-Splash
+endef
+
+define Package/ffluci-splash/conffiles
+/etc/config/luci_splash
+endef
+
+define Package/ffluci-splash/install
+ $(call Package/ffluci/install/template,$(1),applications/luci-splash)
+endef
+
+
+
+### Server Gateway Interfaces ###
+
+define Package/ffluci-sgi-haserl
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci +haserl-lua
+ TITLE:=SGI for Haserl on top of Busybox httpd
+endef
+
+define Package/ffluci-sgi-haserl/install
+ $(call Package/ffluci/install/template,$(1),applications/sgi-haserl)
+endef
+
+
+define Package/ffluci-sgi-webuci
+ $(call Package/ffluci/template)
+ DEPENDS:=+ffluci
+ TITLE:=SGI for Webuci
+endef
+
+define Package/ffluci-sgi-webuci/install
+ $(call Package/ffluci/install/template,$(1),applications/sgi-webuci)
+endef
+
+
+
+
+$(eval $(call BuildPackage,ffluci))
+
+$(eval $(call BuildPackage,ffluci-freifunk-meta))
+$(eval $(call BuildPackage,ffluci-freifunk-halle))
+$(eval $(call BuildPackage,ffluci-freifunk-leipzig))
+
+$(eval $(call BuildPackage,ffluci-module-admin-core))
+$(eval $(call BuildPackage,ffluci-module-freifunk))
+
+$(eval $(call BuildPackage,ffluci-firewall))
+$(eval $(call BuildPackage,ffluci-splash))
+
+$(eval $(call BuildPackage,ffluci-sgi-haserl))
+$(eval $(call BuildPackage,ffluci-sgi-webuci)) \ No newline at end of file
diff --git a/contrib/package/ffluci/ipkg/conffiles b/contrib/package/ffluci/ipkg/conffiles
deleted file mode 100644
index 098dbf904..000000000
--- a/contrib/package/ffluci/ipkg/conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/config/luci
-/etc/config/luci_fw \ No newline at end of file
diff --git a/contrib/package/ffluci/ipkg/ffluci-community-leipzig.postinst b/contrib/package/ffluci/ipkg/ffluci-community-leipzig.postinst
new file mode 100755
index 000000000..26eace97d
--- /dev/null
+++ b/contrib/package/ffluci/ipkg/ffluci-community-leipzig.postinst
@@ -0,0 +1,4 @@
+#!/bin/sh
+[ -n "${IPKG_INSTROOT}" ] || {
+ ( . /etc/uci-defaults/ffluci-community-leipzig ) && rm -f /etc/uci-defaults/ffluci-community-leipzig
+}
diff --git a/contrib/package/ffluci/ipkg/ffluci.postinst b/contrib/package/ffluci/ipkg/ffluci-sgi-haserl.postinst
index b6703dc06..b6703dc06 100755
--- a/contrib/package/ffluci/ipkg/ffluci.postinst
+++ b/contrib/package/ffluci/ipkg/ffluci-sgi-haserl.postinst
diff --git a/contrib/package/luci-addons/Makefile b/contrib/package/luci-addons/Makefile
new file mode 100644
index 000000000..04562257c
--- /dev/null
+++ b/contrib/package/luci-addons/Makefile
@@ -0,0 +1,37 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=luci-addons
+PKG_VERSION:=0.2
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+
+define Build/Compile
+endef
+
+
+define Package/luci-addons
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=FFLuCI System Addons for Kamikaze
+ URL:=http://luci.freifunk-halle.net
+endef
+
+define Package/luci-addons/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/sbin
+ $(INSTALL_DIR) $(1)/etc/crontabs
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+
+ $(INSTALL_BIN) ./dist/usr/bin/run-parts $(1)/usr/bin
+ $(INSTALL_BIN) ./dist/sbin/ffluci-flash $(1)/sbin
+
+ $(CP) ./dist/etc/crontabs/root $(1)/etc/crontabs/root
+ $(CP) ./dist/etc/hotplug.d/iface/20-aliases $(1)/etc/hotplug.d/iface/20-aliases
+endef
+
+$(eval $(call BuildPackage,luci-addons)) \ No newline at end of file
diff --git a/contrib/package/ffluci-system-addons/src/root.crontab b/contrib/package/luci-addons/dist/etc/crontabs/root
index 6e2e417dc..6e2e417dc 100644
--- a/contrib/package/ffluci-system-addons/src/root.crontab
+++ b/contrib/package/luci-addons/dist/etc/crontabs/root
diff --git a/contrib/package/ffluci-system-addons/src/hotplug.d-20-aliases b/contrib/package/luci-addons/dist/etc/hotplug.d/iface/20-aliases
index b9986e3aa..b9986e3aa 100644
--- a/contrib/package/ffluci-system-addons/src/hotplug.d-20-aliases
+++ b/contrib/package/luci-addons/dist/etc/hotplug.d/iface/20-aliases
diff --git a/module/admin-core/contrib/ffluci-flash b/contrib/package/luci-addons/dist/sbin/ffluci-flash
index 3ff478f0f..3ff478f0f 100644
--- a/module/admin-core/contrib/ffluci-flash
+++ b/contrib/package/luci-addons/dist/sbin/ffluci-flash
diff --git a/contrib/package/ffluci-system-addons/src/run-parts b/contrib/package/luci-addons/dist/usr/bin/run-parts
index 0f0cbbdf5..0f0cbbdf5 100644
--- a/contrib/package/ffluci-system-addons/src/run-parts
+++ b/contrib/package/luci-addons/dist/usr/bin/run-parts
diff --git a/core/Makefile b/core/Makefile
index dbebb52d9..5e64bcd1f 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1,39 +1,2 @@
-LUAC = luac
-LUAC_OPTIONS = -s
-
-FILES = ffluci/debug.lua ffluci/view/*.htm ffluci/view/cbi/*.htm ffluci/i18n/*
-
-CFILES = ffluci/bits.lua ffluci/util.lua \
-ffluci/sgi/haserl.lua ffluci/sgi/webuci.lua \
-ffluci/http.lua ffluci/fs.lua ffluci/sys.lua \
-ffluci/model/uci/wrapper.lua ffluci/model/uci/libuci.lua ffluci/model/uci.lua \
-ffluci/model/ipkg.lua ffluci/config.lua ffluci/i18n.lua ffluci/template.lua \
-ffluci/cbi.lua ffluci/dispatcher.lua ffluci/menu.lua ffluci/init.lua
-
-DIRECTORIES = ffluci/model/cbi ffluci/model/menu ffluci/controller ffluci/i18n ffluci/view/cbi ffluci/model/uci ffluci/sgi
-
-OUTDIRS = $(DIRECTORIES:%=dist/%)
-INFILES = $(CFILES:%=src/%)
-OUTFILE = ffluci/init.lua
-CPFILES = $(FILES:%=src/%)
-
-.PHONY: all compile source depends clean
-
-all: compile
-
-depends:
- mkdir -p $(OUTDIRS)
- for i in $(CPFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-compile: depends
- $(LUAC) $(LUAC_OPTIONS) -o dist/$(OUTFILE) $(INFILES)
- for i in $(CFILES); do [ -f dist/$$i ] || ln -s `dirname $$i | cut -s -d / -f 2- | sed -e 's/[^/]*\/*/..\//g'``basename $(OUTFILE)` dist/$$i; done
-
-
-source: depends
- for i in $(CFILES); do cp src/$$i dist/$$i; done
-
-
-clean:
- rm dist -rf
+include ../build/config.mk
+include ../build/module.mk \ No newline at end of file
diff --git a/core/contrib/uci/freifunk b/core/contrib/uci/freifunk
deleted file mode 100644
index aba12e636..000000000
--- a/core/contrib/uci/freifunk
+++ /dev/null
@@ -1,26 +0,0 @@
-config public contact
- option nickname
- option name
- option mail
- option phone
- option location
- option geo
- option note
-
-config public community
- option name "Freifunk Halle"
- option homepage http://halle.freifunk.net
- option essid halle.freifunk.net
- option bssid 02:CA:FF:EE:BA:BE
- option realm netz.freifunk-halle.net
- option channel 1
- option net 104.0.0.0
- option mask 255.0.0.0
- option dhcp 10.0.0.0
- option dhcpmask 255.255.255.0
- option dns "88.198.178.18 141.54.1.1 212.204.49.83 208.67.220.220 208.67.222.222"
-
-config settings routing
- option internal 0
- option internet 0
- \ No newline at end of file
diff --git a/core/contrib/uci/luci b/core/root/etc/config/luci
index a2b61f483..a2b61f483 100644
--- a/core/contrib/uci/luci
+++ b/core/root/etc/config/luci
diff --git a/core/src/ffluci/bits.lua b/core/src/bits.lua
index f8434c335..f8434c335 100644
--- a/core/src/ffluci/bits.lua
+++ b/core/src/bits.lua
diff --git a/core/src/ffluci/cbi.lua b/core/src/cbi.lua
index 3384e5c38..3384e5c38 100644
--- a/core/src/ffluci/cbi.lua
+++ b/core/src/cbi.lua
diff --git a/core/src/ffluci/config.lua b/core/src/config.lua
index 0db45ac89..0db45ac89 100644
--- a/core/src/ffluci/config.lua
+++ b/core/src/config.lua
diff --git a/core/src/ffluci/debug.lua b/core/src/debug.lua
index 1be40348e..1be40348e 100644
--- a/core/src/ffluci/debug.lua
+++ b/core/src/debug.lua
diff --git a/core/src/ffluci/dispatcher.lua b/core/src/dispatcher.lua
index c60e5dcd1..c60e5dcd1 100644
--- a/core/src/ffluci/dispatcher.lua
+++ b/core/src/dispatcher.lua
diff --git a/core/src/ffluci/fs.lua b/core/src/fs.lua
index 0ca191be9..0ca191be9 100644
--- a/core/src/ffluci/fs.lua
+++ b/core/src/fs.lua
diff --git a/core/src/ffluci/http.lua b/core/src/http.lua
index f4ba57094..f4ba57094 100644
--- a/core/src/ffluci/http.lua
+++ b/core/src/http.lua
diff --git a/core/src/ffluci/i18n.lua b/core/src/i18n.lua
index 88381dde7..88381dde7 100644
--- a/core/src/ffluci/i18n.lua
+++ b/core/src/i18n.lua
diff --git a/core/src/ffluci/i18n/cbi.en b/core/src/i18n/cbi.en
index 6069cec45..6069cec45 100644
--- a/core/src/ffluci/i18n/cbi.en
+++ b/core/src/i18n/cbi.en
diff --git a/core/src/ffluci/i18n/default.en b/core/src/i18n/default.en
index 726095ae7..726095ae7 100644
--- a/core/src/ffluci/i18n/default.en
+++ b/core/src/i18n/default.en
diff --git a/core/src/ffluci/init.lua b/core/src/init.lua
index 8d4cea2e9..8d4cea2e9 100644
--- a/core/src/ffluci/init.lua
+++ b/core/src/init.lua
diff --git a/core/src/ffluci/menu.lua b/core/src/menu.lua
index 5724b2cb9..5724b2cb9 100644
--- a/core/src/ffluci/menu.lua
+++ b/core/src/menu.lua
diff --git a/core/src/ffluci/model/ipkg.lua b/core/src/model/ipkg.lua
index 3b149fb16..3b149fb16 100644
--- a/core/src/ffluci/model/ipkg.lua
+++ b/core/src/model/ipkg.lua
diff --git a/core/src/ffluci/model/uci.lua b/core/src/model/uci.lua
index ca5b232eb..ca5b232eb 100644
--- a/core/src/ffluci/model/uci.lua
+++ b/core/src/model/uci.lua
diff --git a/core/src/ffluci/model/uci/libuci.lua b/core/src/model/uci/libuci.lua
index b160dc10a..b160dc10a 100644
--- a/core/src/ffluci/model/uci/libuci.lua
+++ b/core/src/model/uci/libuci.lua
diff --git a/core/src/ffluci/model/uci/wrapper.lua b/core/src/model/uci/wrapper.lua
index 3aa3b5fd1..3aa3b5fd1 100644
--- a/core/src/ffluci/model/uci/wrapper.lua
+++ b/core/src/model/uci/wrapper.lua
diff --git a/core/src/ffluci/sys.lua b/core/src/sys.lua
index 376654893..376654893 100644
--- a/core/src/ffluci/sys.lua
+++ b/core/src/sys.lua
diff --git a/core/src/ffluci/template.lua b/core/src/template.lua
index 7ac47cbbe..7ac47cbbe 100644
--- a/core/src/ffluci/template.lua
+++ b/core/src/template.lua
diff --git a/core/src/ffluci/util.lua b/core/src/util.lua
index 9e3c7f25e..9e3c7f25e 100644
--- a/core/src/ffluci/util.lua
+++ b/core/src/util.lua
diff --git a/core/src/ffluci/view/cbi/dvalue.htm b/core/src/view/cbi/dvalue.htm
index f54667def..f54667def 100644
--- a/core/src/ffluci/view/cbi/dvalue.htm
+++ b/core/src/view/cbi/dvalue.htm
diff --git a/core/src/ffluci/view/cbi/footer.htm b/core/src/view/cbi/footer.htm
index 2acf710cd..2acf710cd 100644
--- a/core/src/ffluci/view/cbi/footer.htm
+++ b/core/src/view/cbi/footer.htm
diff --git a/core/src/ffluci/view/cbi/fvalue.htm b/core/src/view/cbi/fvalue.htm
index b609f1d4f..b609f1d4f 100644
--- a/core/src/ffluci/view/cbi/fvalue.htm
+++ b/core/src/view/cbi/fvalue.htm
diff --git a/core/src/ffluci/view/cbi/header.htm b/core/src/view/cbi/header.htm
index 3b615d729..3b615d729 100644
--- a/core/src/ffluci/view/cbi/header.htm
+++ b/core/src/view/cbi/header.htm
diff --git a/core/src/ffluci/view/cbi/lvalue.htm b/core/src/view/cbi/lvalue.htm
index f1ae5a093..f1ae5a093 100644
--- a/core/src/ffluci/view/cbi/lvalue.htm
+++ b/core/src/view/cbi/lvalue.htm
diff --git a/core/src/ffluci/view/cbi/map.htm b/core/src/view/cbi/map.htm
index 835393c1c..835393c1c 100644
--- a/core/src/ffluci/view/cbi/map.htm
+++ b/core/src/view/cbi/map.htm
diff --git a/core/src/ffluci/view/cbi/mvalue.htm b/core/src/view/cbi/mvalue.htm
index 97a1c4295..97a1c4295 100644
--- a/core/src/ffluci/view/cbi/mvalue.htm
+++ b/core/src/view/cbi/mvalue.htm
diff --git a/core/src/ffluci/view/cbi/nsection.htm b/core/src/view/cbi/nsection.htm
index bbc87f185..bbc87f185 100644
--- a/core/src/ffluci/view/cbi/nsection.htm
+++ b/core/src/view/cbi/nsection.htm
diff --git a/core/src/ffluci/view/cbi/tsection.htm b/core/src/view/cbi/tsection.htm
index 666c14b2e..666c14b2e 100644
--- a/core/src/ffluci/view/cbi/tsection.htm
+++ b/core/src/view/cbi/tsection.htm
diff --git a/core/src/ffluci/view/cbi/ucisection.htm b/core/src/view/cbi/ucisection.htm
index a1fb39cf4..a1fb39cf4 100644
--- a/core/src/ffluci/view/cbi/ucisection.htm
+++ b/core/src/view/cbi/ucisection.htm
diff --git a/core/src/ffluci/view/cbi/value.htm b/core/src/view/cbi/value.htm
index 31bf38f77..31bf38f77 100644
--- a/core/src/ffluci/view/cbi/value.htm
+++ b/core/src/view/cbi/value.htm
diff --git a/core/src/ffluci/view/cbi/valuefooter.htm b/core/src/view/cbi/valuefooter.htm
index 6151a3a66..6151a3a66 100644
--- a/core/src/ffluci/view/cbi/valuefooter.htm
+++ b/core/src/view/cbi/valuefooter.htm
diff --git a/core/src/ffluci/view/cbi/valueheader.htm b/core/src/view/cbi/valueheader.htm
index 062efa2dd..062efa2dd 100644
--- a/core/src/ffluci/view/cbi/valueheader.htm
+++ b/core/src/view/cbi/valueheader.htm
diff --git a/core/src/ffluci/view/error404.htm b/core/src/view/error404.htm
index 51ea176d6..51ea176d6 100644
--- a/core/src/ffluci/view/error404.htm
+++ b/core/src/view/error404.htm
diff --git a/core/src/ffluci/view/error500.htm b/core/src/view/error500.htm
index 8af22e8f2..8af22e8f2 100644
--- a/core/src/ffluci/view/error500.htm
+++ b/core/src/view/error500.htm
diff --git a/core/src/ffluci/view/footer.htm b/core/src/view/footer.htm
index 67856771b..67856771b 100644
--- a/core/src/ffluci/view/footer.htm
+++ b/core/src/view/footer.htm
diff --git a/core/src/ffluci/view/header.htm b/core/src/view/header.htm
index bc65e3e89..bc65e3e89 100644
--- a/core/src/ffluci/view/header.htm
+++ b/core/src/view/header.htm
diff --git a/module/admin-core/Makefile b/module/admin-core/Makefile
deleted file mode 100644
index 708c1c239..000000000
--- a/module/admin-core/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-LUAC = luac
-LUAC_OPTIONS = -s
-
-FILES = i18n/* view/*/*.htm
-
-CFILES = controller/*/*.lua model/cbi/*/*.lua model/menu/*.lua
-
-DIRECTORIES = model/cbi model/menu controller i18n view
-
-
-INFILES = $(CFILES:%=src/%)
-OUTDIRS = $(DIRECTORIES:%=dist/%)
-CPFILES = $(FILES:%=src/%)
-
-.PHONY: all compile source clean depends
-
-all: compile
-
-depends:
- mkdir -p $(OUTDIRS)
- for i in $(CPFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-compile: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); $(LUAC) $(LUAC_OPTIONS) -o dist/$$i src/$$i; fi; done
-
-source: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-
-clean:
- rm dist -rf
diff --git a/module/admin-core/contrib/init.d/luci_freifunk b/module/admin-core/contrib/init.d/luci_freifunk
deleted file mode 100644
index 38779cb8b..000000000
--- a/module/admin-core/contrib/init.d/luci_freifunk
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh /etc/rc.common
-START=70
-
-start() {
- include /lib/network
- scan_interfaces
-
-
- ### Read interface names
- config_get wanif wan ifname
- config_get lanif lan ifname
- config_get ffif ff ifname
- config_get ffdif ffdhcp ifname
-
- config_get lanip lan ipaddr
- config_get lanmask lan netmask
-
- config_get ffip ff ipaddr
- config_get ffmask ff netmask
-
- config_get ffdip ffdhcp ipaddr
- config_get ffdmask ffdhcp netmask
-
- [ -n "$ffif" ] || return 0
-
-
- ### Creating chains
- iptables -N luci_freifunk_forwarding
- iptables -t nat -N luci_freifunk_postrouting
-
-
- ### Read from config
- config_load freifunk
-
- config_get_bool internal routing internal
- [ -n "$wanif" ] && config_get_bool internet routing internet
-
-
- ### Freifunk to Freifunk
- [ "$internal" -gt 0 ] && {
- iptables -A luci_freifunk_forwarding -i "$ffif" -o "$ffif" -j ACCEPT
- }
-
- ### Freifunk DHCP to Freifunk
- [ "$internal" -gt 0 -a -n "$ffdif" ] && {
- eval "$(ipcalc.sh $ffdip $ffdmask)"
-
- iptables -t nat -A luci_freifunk_postrouting -s "$NETWORK/$PREFIX" -o "$ffif" -j MASQUERADE
- }
-
- ### Lan to Freifunk
- [ -n "$lanif" ] && {
- eval "$(ipcalc.sh $lanip $lanmask)"
-
- iptables -A luci_freifunk_forwarding -i "$lanif" -o "$ffif" -j ACCEPT
- iptables -t nat -A luci_freifunk_postrouting -s "$NETWORK/$PREFIX" -o "$ffif" -j MASQUERADE
- }
-
- ### Freifunk to Wan
- [ "$internet" -gt 0 ] && {
- eval "$(ipcalc.sh $ffip $ffmask)"
-
- iptables -A luci_freifunk_forwarding -i "$ffif" -o "$wanif" -j ACCEPT
- iptables -t nat -A luci_freifunk_postrouting -s "$NETWORK/$PREFIX" -o "$wanif" -j MASQUERADE
- }
-
- ### Freifunk DHCP to Wan
- [ "$internet" -gt 0 -a -n "$ffdif" ] && {
- eval "$(ipcalc.sh $ffdip $ffdmask)"
-
- iptables -t nat -A luci_freifunk_postrouting -s "$NETWORK/$PREFIX" -o "$wanif" -j MASQUERADE
- }
-
- ### Hook in the chains
- iptables -A forwarding_rule -j luci_freifunk_forwarding
- iptables -t nat -A postrouting_rule -j luci_freifunk_postrouting
-}
-
-stop() {
- ### Hook out the chains
- iptables -D forwarding_rule -j luci_freifunk_forwarding
- iptables -t nat -D postrouting_rule -j luci_freifunk_postrouting
-
- ### Clear the chains
- iptables -F luci_freifunk_forwarding
- iptables -t nat -F luci_freifunk_postrouting
-
- ### Delete chains
- iptables -X luci_freifunk_forwarding
- iptables -t nat -X luci_freifunk_postrouting
-}
diff --git a/module/admin-core/src/controller/admin/index.lua b/module/admin-core/src/controller/admin/index.lua
deleted file mode 100644
index edca5721e..000000000
--- a/module/admin-core/src/controller/admin/index.lua
+++ /dev/null
@@ -1,171 +0,0 @@
-module("ffluci.controller.admin.index", package.seeall)
-
-function action_wizard()
- if ffluci.http.formvalue("ip") then
- return configure_freifunk()
- end
-
- local ifaces = {}
- local wldevs = ffluci.model.uci.sections("wireless")
-
- if wldevs then
- for k, v in pairs(wldevs) do
- if v[".type"] == "wifi-device" then
- table.insert(ifaces, k)
- end
- end
- end
-
- ffluci.template.render("admin_index/wizard", {ifaces=ifaces})
-end
-
-function configure_freifunk()
- local ip = ffluci.http.formvalue("ip")
- local uci = ffluci.model.uci.Session()
-
- -- Load UCI
- uci:t_load("network")
- uci:t_load("dhcp")
- uci:t_load("freifunk")
- uci:t_load("luci_splash")
- uci:t_load("olsr")
- uci:t_load("wireless")
-
-
- -- Configure FF-Interface
- uci:t_del("network", "ff")
- uci:t_del("network", "ffdhcp")
-
- uci:t_set("network", "ff", nil, "interface")
- uci:t_set("network", "ff", "type", "bridge")
- uci:t_set("network", "ff", "proto", "static")
- uci:t_set("network", "ff", "ipaddr", ip)
- uci:t_set("network", "ff", "netmask", uci:t_get("freifunk", "community", "mask"))
- uci:t_set("network", "ff", "dns", uci:t_get("freifunk", "community", "dns"))
-
- -- Enable internal routing
- uci:t_set("freifunk", "routing", "internal", "1")
-
- -- Enable internet routing
- if ffluci.http.formvalue("shareinet") then
- uci:t_set("freifunk", "routing", "internet", "1")
- else
- uci:t_set("freifunk", "routing", "internet", "0")
- end
-
- -- Configure DHCP
- if ffluci.http.formvalue("dhcp") then
- local dhcpnet = uci:t_get("freifunk", "community", "dhcp"):match("^([0-9]+)")
- local dhcpip = ip:gsub("^[0-9]+", dhcpnet)
-
- uci:t_set("network", "ffdhcp", nil, "interface")
- uci:t_set("network", "ffdhcp", "proto", "static")
- uci:t_set("network", "ffdhcp", "ifname", "br-ff:dhcp")
- uci:t_set("network", "ffdhcp", "ipaddr", dhcpip)
- uci:t_set("network", "ffdhcp", "netmask", uci:t_get("freifunk", "community", "dhcpmask"))
-
- local dhcp = uci:t_sections("dhcp")
- if dhcp then
- for k, v in pairs(dhcp) do
- if v[".type"] == "dhcp" and v.interface == "ffdhcp" then
- uci:t_del("dhcp", k)
- end
- end
-
- local dhcpbeg = 48 + tonumber(ip:match("[0-9]+$")) * 4
-
- local sk = uci:t_add("dhcp", "dhcp")
- uci:t_set("dhcp", sk, "interface", "ffdhcp")
- uci:t_set("dhcp", sk, "start", dhcpbeg)
- uci:t_set("dhcp", sk, "limit", (dhcpbeg < 252) and 3 or 2)
- uci:t_set("dhcp", sk, "leasetime", "30m")
- end
-
- local splash = uci:t_sections("luci_splash")
- if splash then
- for k, v in pairs(splash) do
- if v[".type"] == "iface" then
- uci:t_del("luci_splash", k)
- end
- end
-
- local sk = uci:t_add("luci_splash", "iface")
- uci:t_set("luci_splash", sk, "network", "ffdhcp")
- end
- end
-
- -- Configure OLSR
- if ffluci.http.formvalue("olsr") and uci:t_sections("olsr") then
- for k, v in pairs(uci:t_sections("olsr")) do
- if v[".type"] == "Interface" or v[".type"] == "LoadPlugin" then
- uci:t_del("olsr", k)
- end
- end
-
- if ffluci.http.formvalue("shareinet") then
- uci:t_set("olsr", "dyn_gw", nil, "LoadPlugin")
- uci:t_set("olsr", "dyn_gw", "Library", "olsrd_dyn_gw.so.0.4")
- end
-
- uci:t_set("olsr", "nameservice", nil, "LoadPlugin")
- uci:t_set("olsr", "nameservice", "Library", "olsrd_nameservice.so.0.3")
- uci:t_set("olsr", "nameservice", "name", ip:gsub("%.", "-"))
- uci:t_set("olsr", "nameservice", "hosts_file", "/var/etc/hosts")
- uci:t_set("olsr", "nameservice", "suffix", ".olsr")
- uci:t_set("olsr", "nameservice", "latlon_infile", "/tmp/latlon.txt")
-
- uci:t_set("olsr", "txtinfo", nil, "LoadPlugin")
- uci:t_set("olsr", "txtinfo", "Library", "olsrd_txtinfo.so.0.1")
- uci:t_set("olsr", "txtinfo", "Accept", "127.0.0.1")
-
- local oif = uci:t_add("olsr", "Interface")
- uci:t_set("olsr", oif, "Interface", "ff")
- uci:t_set("olsr", oif, "HelloInterval", "6.0")
- uci:t_set("olsr", oif, "HelloValidityTime", "108.0")
- uci:t_set("olsr", oif, "TcInterval", "4.0")
- uci:t_set("olsr", oif, "TcValidityTime", "324.0")
- uci:t_set("olsr", oif, "MidInterval", "18.0")
- uci:t_set("olsr", oif, "MidValidityTime", "324.0")
- uci:t_set("olsr", oif, "HnaInterval", "18.0")
- uci:t_set("olsr", oif, "HnaValidityTime", "108.0")
- end
-
- -- Configure Wifi
- local wcfg = uci:t_sections("wireless")
- if wcfg then
- for iface, v in pairs(wcfg) do
- if v[".type"] == "wifi-device" and ffluci.http.formvalue("wifi."..iface) then
- -- Cleanup
- for k, j in pairs(wcfg) do
- if j[".type"] == "wifi-iface" and j.device == iface then
- uci:t_del("wireless", k)
- end
- end
-
- uci:t_set("wireless", iface, "disabled", "0")
- uci:t_set("wireless", iface, "mode", "11g")
- uci:t_set("wireless", iface, "txantenna", 1)
- uci:t_set("wireless", iface, "rxantenna", 1)
- uci:t_set("wireless", iface, "channel", uci:t_get("freifunk", "community", "channel"))
-
- local wif = uci:t_add("wireless", "wifi-iface")
- uci:t_set("wireless", wif, "device", iface)
- uci:t_set("wireless", wif, "network", "ff")
- uci:t_set("wireless", wif, "mode", "adhoc")
- uci:t_set("wireless", wif, "ssid", uci:t_get("freifunk", "community", "essid"))
- uci:t_set("wireless", wif, "bssid", uci:t_get("freifunk", "community", "bssid"))
- uci:t_set("wireless", wif, "txpower", 13)
- end
- end
- end
-
- -- Save UCI
- uci:t_save("network")
- uci:t_save("dhcp")
- uci:t_save("freifunk")
- uci:t_save("luci_splash")
- uci:t_save("olsr")
- uci:t_save("wireless")
-
- ffluci.http.redirect(ffluci.dispatcher.build_url("admin", "uci", "changes"))
-end \ No newline at end of file
diff --git a/module/admin-core/src/model/cbi/admin_index/contact.lua b/module/admin-core/src/model/cbi/admin_index/contact.lua
deleted file mode 100644
index 66a1ec4bd..000000000
--- a/module/admin-core/src/model/cbi/admin_index/contact.lua
+++ /dev/null
@@ -1,18 +0,0 @@
--- Todo: Translate
-m = Map("freifunk", translate("contact", "Kontakt"), translate("contact1", [[Diese Daten sind
-auf der öffentlichen Kontaktseite sichtbar. Bitte gib an, wie man dich am besten kontaktieren kann.
-Diese Informationen sollten nach der Picopeering Vereinbarung mindestens deine E-Mail-Adresse enthalten.
-Damit dein Knoten durch Topographieprogramme erfasst werden kann, gib bitte deine Geokoordinaten oder
-zumindest deine Straße und Hausnummer unter Standort an.]]))
-
-c = m:section(NamedSection, "contact", "public")
-
-c:option(Value, "nickname", translate("nickname", "Pseudonym"))
-c:option(Value, "name", translate("name", "Name"))
-c:option(Value, "mail", translate("mail", "E-Mail"), translate("mail1", "Bitte unbedingt angeben!"))
-c:option(Value, "phone", translate("phone", "Telefon"))
-c:option(Value, "location", translate("location", "Standort"))
-c:option(Value, "geo", translate("coord", "Koordinaten"), translate("coord1", "Bitte als Breite;Länge (z.B: 51.5;12.9) angeben"))
-c:option(Value, "note", translate("note", "Notiz"))
-
-return m \ No newline at end of file
diff --git a/module/admin-core/src/model/cbi/admin_index/freifunk.lua b/module/admin-core/src/model/cbi/admin_index/freifunk.lua
deleted file mode 100644
index ec4d100b8..000000000
--- a/module/admin-core/src/model/cbi/admin_index/freifunk.lua
+++ /dev/null
@@ -1,23 +0,0 @@
--- Todo: Translate
-m = Map("freifunk", "Freifunk")
-
-s = m:section(NamedSection, "routing", "settings", "Netzverkehr")
-s:option(Flag, "internal", "Freifunk zulassen", "immer aktivieren!")
-s:option(Flag, "internet", "Internet zulassen")
-
-c = m:section(NamedSection, "community", "public", "Gemeinschaft", [[Dies sind die Grundeinstellungen
-für die lokale Freifunkgemeinschaft. Diese Werte wirken sich NICHT auf die Konfiguration
-des Routers aus, sondern definieren nur die Vorgaben für den Freifunkassistenten.]])
-c:option(Value, "name", "Gemeinschaft")
-c:option(Value, "homepage", "Webseite")
-c:option(Value, "essid", "ESSID")
-c:option(Value, "bssid", "BSSID")
-c:option(Value, "channel", "Funkkanal")
-c:option(Value, "realm", "Realm")
-c:option(Value, "net", "Adressbereich")
-c:option(Value, "mask", "Netzmaske")
-c:option(Value, "dns", "DNS-Server")
-c:option(Value, "dhcp", "DHCP-Bereich")
-c:option(Value, "dhcpmask", "DHCP-Maske")
-
-return m \ No newline at end of file
diff --git a/module/public-core/Makefile b/module/public-core/Makefile
deleted file mode 100644
index 113799af6..000000000
--- a/module/public-core/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-LUAC = luac
-LUAC_OPTIONS = -s
-
-FILES = i18n/* view/*/*.htm
-
-CFILES = controller/*/*.lua model/cbi/*/*.lua model/menu/*.lua
-
-DIRECTORIES = model/cbi model/menu controller i18n view
-
-
-INFILES = $(CFILES:%=src/%)
-OUTDIRS = $(DIRECTORIES:%=dist/%)
-CPFILES = $(FILES:%=src/%)
-
-.PHONY: all compile source clean depends
-
-all: compile
-
-
-depends:
- mkdir -p $(OUTDIRS)
- for i in $(CPFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-compile: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); $(LUAC) $(LUAC_OPTIONS) -o dist/$$i src/$$i; fi; done
-
-source: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-
-clean:
- rm dist -rf
diff --git a/module/public-core/src/controller/public/index.lua b/module/public-core/src/controller/public/index.lua
deleted file mode 100644
index f65478c05..000000000
--- a/module/public-core/src/controller/public/index.lua
+++ /dev/null
@@ -1 +0,0 @@
-module("ffluci.controller.public.index", package.seeall) \ No newline at end of file
diff --git a/module/public-core/src/controller/public/olsr.lua b/module/public-core/src/controller/public/olsr.lua
deleted file mode 100644
index d41f5ed41..000000000
--- a/module/public-core/src/controller/public/olsr.lua
+++ /dev/null
@@ -1,137 +0,0 @@
-module("ffluci.controller.public.olsr", package.seeall)
-require("ffluci.sys")
-
-function action_index()
- local data = fetch_txtinfo("links")
-
- if not data or not data.Links then
- ffluci.template.render("public_olsr/error_olsr")
- return nil
- end
-
- local function compare(a, b)
- if tonumber(a.ETX) == 0 then
- return false
- end
-
- if tonumber(b.ETX) == 0 then
- return true
- end
-
- return tonumber(a.ETX) < tonumber(b.ETX)
- end
-
- table.sort(data.Links, compare)
-
- ffluci.template.render("public_olsr/index", {links=data.Links})
-end
-
-function action_routes()
- local data = fetch_txtinfo("routes")
-
- if not data or not data.Routes then
- ffluci.template.render("public_olsr/error_olsr")
- return nil
- end
-
- local function compare(a, b)
- if tonumber(a.ETX) == 0 then
- return false
- end
-
- if tonumber(b.ETX) == 0 then
- return true
- end
-
- return tonumber(a.ETX) < tonumber(b.ETX)
- end
-
- table.sort(data.Routes, compare)
-
- ffluci.template.render("public_olsr/routes", {routes=data.Routes})
-end
-
-function action_topology()
- local data = fetch_txtinfo("topology")
-
- if not data or not data.Topology then
- ffluci.template.render("public_olsr/error_olsr")
- return nil
- end
-
- local function compare(a, b)
- return a["Destination IP"] < b["Destination IP"]
- end
-
- table.sort(data.Topology, compare)
-
- ffluci.template.render("public_olsr/topology", {routes=data.Topology})
-end
-
-function action_hna()
- local data = fetch_txtinfo("hna")
-
- if not data or not data.HNA then
- ffluci.template.render("public_olsr/error_olsr")
- return nil
- end
-
- local function compare(a, b)
- return a.Network < b.Network
- end
-
- table.sort(data.HNA, compare)
-
- ffluci.template.render("public_olsr/hna", {routes=data.HNA})
-end
-
-function action_mid()
- local data = fetch_txtinfo("mid")
-
- if not data or not data.MID then
- ffluci.template.render("public_olsr/error_olsr")
- return nil
- end
-
- local function compare(a, b)
- return a.IP < b.IP
- end
-
- table.sort(data.MID, compare)
-
- ffluci.template.render("public_olsr/mid", {mids=data.MID})
-end
-
-
--- Internal
-function fetch_txtinfo(otable)
- otable = otable or ""
- local rawdata = ffluci.sys.httpget("http://127.0.0.1:2006/"..otable)
-
- if #rawdata == 0 then
- return nil
- end
-
- local data = {}
-
- local tables = ffluci.util.split(ffluci.util.trim(rawdata), "\n\n")
-
-
- for i, tbl in ipairs(tables) do
- local lines = ffluci.util.split(tbl, "\n")
- local name = table.remove(lines, 1):sub(8)
- local keys = ffluci.util.split(table.remove(lines, 1), "\t")
-
- data[name] = {}
-
- for j, line in ipairs(lines) do
- local fields = ffluci.util.split(line, "\t")
- data[name][j] = {}
- for k, key in pairs(keys) do
- data[name][j][key] = fields[k]
- end
- end
- end
-
- return data
-end \ No newline at end of file
diff --git a/module/public-core/src/controller/public/status.lua b/module/public-core/src/controller/public/status.lua
deleted file mode 100644
index 8d2f7a303..000000000
--- a/module/public-core/src/controller/public/status.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-module("ffluci.controller.public.status", package.seeall)
-
-function action_index()
- local data = {}
-
- data.s, data.m, data.r = ffluci.sys.sysinfo()
-
- data.wifi = ffluci.sys.wifi.getiwconfig()
-
- data.routes = {}
- for i, r in pairs(ffluci.sys.net.routes()) do
- if r.Destination == "00000000" then
- table.insert(data.routes, r)
- end
- end
-
-
- ffluci.template.render("public_status/index", data)
-end
-
-
diff --git a/module/public-core/src/controller/sudo/status.lua b/module/public-core/src/controller/sudo/status.lua
deleted file mode 100644
index fd5127d2c..000000000
--- a/module/public-core/src/controller/sudo/status.lua
+++ /dev/null
@@ -1 +0,0 @@
-module("ffluci.controller.sudo.status", package.seeall) \ No newline at end of file
diff --git a/module/public-core/src/model/menu/00public.lua b/module/public-core/src/model/menu/00public.lua
deleted file mode 100644
index 644aa44f7..000000000
--- a/module/public-core/src/model/menu/00public.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-add("public", "index", "Übersicht", 10)
-act("contact", "Kontakt")
-
-add("public", "status", "Status", 20)
-act("routes", "Routingtabelle")
-act("iwscan", "WLAN-Scan")
-
-add("public", "olsr", "OLSR", 30)
-act("routes", "Routen")
-act("topology", "Topologie")
-act("hna", "HNA")
-act("mid", "MID")
diff --git a/module/public-core/src/view/public_index/contact.htm b/module/public-core/src/view/public_index/contact.htm
deleted file mode 100644
index 221dc89cc..000000000
--- a/module/public-core/src/view/public_index/contact.htm
+++ /dev/null
@@ -1,13 +0,0 @@
-<%+header%>
-<% local contact = ffluci.model.uci.sections("freifunk").contact %>
-<h1><%:contact Kontakt%></h1>
-<table cellspacing="0" cellpadding="6">
- <tr><th><%:nickname Pseudonym%>:</th><td><%=contact.nickname%></td></tr>
- <tr><th><%:name Name%>:</th><td><%=contact.name%></td></tr>
- <tr><th><%:mail E-Mail%>:</th><td><%=contact.mail%></td></tr>
- <tr><th><%:phone Telefon%>:</th><td><%=contact.phone%></td></tr>
- <tr><th><%:location Standort%>:</th><td><%=contact.location%></td></tr>
- <tr><th><%:geocoord Geokoordinaten%>:</th><td><%=contact.geo%></td></tr>
- <tr><th><%:note Notiz%>:</th><td><%=contact.note%></td></tr>
-</table>
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_index/index.htm b/module/public-core/src/view/public_index/index.htm
deleted file mode 100644
index 6c7fe8588..000000000
--- a/module/public-core/src/view/public_index/index.htm
+++ /dev/null
@@ -1,11 +0,0 @@
-<%+header%>
-<% local ff = ffluci.model.uci.sections("freifunk") %>
-<h1><%:hellonet Hallo und willkommen im Netz von%> <%=ff.community.name%>!</h1>
-<p><%:public1 Wir sind eine Initiative zur Schaffung eines freien, offenen und unabhängigen Funknetzwerks auf WLAN-Basis.%><br />
-<%:public2 Dies ist der Zugangspunkt %><%=ffluci.sys.hostname()%>. <%:public3 Er wird betrieben von %>
-<a href="<%=controller%>/public/index/contact"><%=ff.contact.nickname%></a>.</p>
-<p><%:public4 Weitere Informationen zur globalen Freifunkinitiative findest du unter%> <a href="http://freifunk.net">Freifunk.net</a>.<br />
-<%:public5 Hast du Interesse an diesem Projekt, dann wende dich an deine lokale Gemeinschaft%> <a href="<%=ff.community.homepage%>"><%=ff.community.name%></a>.</p>
-<p><strong><%:note Hinweis%></strong>: <%:public6 Der Internetzugang über das experimentelle Freifunknetz ist an technische und organisatorische Bedingungen geknüpft und deshalb möglicherweise
-nicht (immer) gewährleistet.%></p>
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/error_olsr.htm b/module/public-core/src/view/public_olsr/error_olsr.htm
deleted file mode 100644
index 25426f50d..000000000
--- a/module/public-core/src/view/public_olsr/error_olsr.htm
+++ /dev/null
@@ -1,6 +0,0 @@
-<%+header%>
-<h1><%:olsr OLSR%></h1>
-<p class="error"><%:olsrerror1 Es konnte keine Verbindung zum OLSR-Daemon hergestellt werden!%></p>
-<p><%:olsrerror2 Um die Statusinformationen abfragen zu können muss der OLSR-Daemon gestartet
-und das Plugin "txtinfo" geladen sein.%></p>
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/hna.htm b/module/public-core/src/view/public_olsr/hna.htm
deleted file mode 100644
index c13369f42..000000000
--- a/module/public-core/src/view/public_olsr/hna.htm
+++ /dev/null
@@ -1,17 +0,0 @@
-<%+header%>
-<h1><%:olsrhna OLSR-HNA%></h1>
-<br />
-<table cellspacing="0" cellpadding="6">
-<tr>
-<th><%:destination Ziel%></th>
-<th><%:gateway Gateway%></th>
-</tr>
-<% for k, route in ipairs(routes) do %>
-<tr>
-<td><%=route.Network%>/<%=route.Netmask%></td>
-<td><a href="http://<%=route.Gateway%>"><%=route.Gateway%></a></td>
-</tr>
-<% end %>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/index.htm b/module/public-core/src/view/public_olsr/index.htm
deleted file mode 100644
index 0633d1f45..000000000
--- a/module/public-core/src/view/public_olsr/index.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<%+header%>
-<h1><%:olsrlinks OLSR-Verbindungen%></h1>
-<p><%:olsrlinks1 Übersicht über aktuell bestehende OLSR-Verbindungen%></p>
-<br />
-<table cellspacing="0" cellpadding="6">
-<tr>
-<th><%:destination Ziel%></th>
-<th><%:local Lokal%></th>
-<th>LQ</th>
-<th>NLQ</th>
-<th>ETX</th>
-</tr>
-<% for k, link in ipairs(links) do
- local color = "#bb3333"
-
- link.ETX = tonumber(link.ETX)
- if link.ETX == 0 then
- color = "#bb3333"
- elseif link.ETX < 4 then
- color = "#00cc00"
- elseif link.ETX < 10 then
- color = "#ffcb05"
- elseif link.ETX < 100 then
- color = "#ff6600"
- end
-%>
-<tr>
-<td><a href="http://<%=link["remote IP"]%>"><%=link["remote IP"]%></a></td>
-<td><%=link["Local IP"]%></td>
-<td><%=link.LinkQuality%></td>
-<td><%=link.NLQ%></td>
-<td style="background-color:<%=color%>"><%=link.ETX%></td>
-</tr>
-<% end %>
-</table>
-<br />
-<h3><%:legend Legende%>:</h3>
-<ul>
-<li><strong>LQ: </strong><%:lq1 Erfolgsquote gesendeter Pakete%></li>
-<li><strong>NLQ: </strong><%:nlq1 Erfolgsquote empfangener Pakete%></li>
-<li><strong>ETX: </strong><%:etx1 Zu erwartende Sendeversuche pro Paket%></li>
-</ul>
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/mid.htm b/module/public-core/src/view/public_olsr/mid.htm
deleted file mode 100644
index 6553237ea..000000000
--- a/module/public-core/src/view/public_olsr/mid.htm
+++ /dev/null
@@ -1,17 +0,0 @@
-<%+header%>
-<h1><%:olsrmid OLSR-MID%></h1>
-<br />
-<table cellspacing="0" cellpadding="6">
-<tr>
-<th><%:node Knoten%></th>
-<th><%:aliases Aliasse%></th>
-</tr>
-<% for k, mid in ipairs(mids) do %>
-<tr>
-<td><a href="http://<%=mid.IP%>"><%=mid.IP%></a></td>
-<td><%=mid.Aliases%></td>
-</tr>
-<% end %>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/routes.htm b/module/public-core/src/view/public_olsr/routes.htm
deleted file mode 100644
index f3a0fd336..000000000
--- a/module/public-core/src/view/public_olsr/routes.htm
+++ /dev/null
@@ -1,36 +0,0 @@
-<%+header%>
-<h1><%:olsrlinks OLSR-Routen%></h1>
-<br />
-<table cellspacing="0" cellpadding="6">
-<tr>
-<th><%:destination Ziel%></th>
-<th><%:gateway Gateway%></th>
-<th><%:interface Schnittstelle%></th>
-<th><%:metric Metrik%></th>
-<th>ETX</th>
-</tr>
-<% for k, route in ipairs(routes) do
- local color = "#bb3333"
-
- route.ETX = tonumber(route.ETX)
- if route.ETX == 0 then
- color = "#bb3333"
- elseif route.ETX < 4 then
- color = "#00cc00"
- elseif route.ETX < 10 then
- color = "#ffcb05"
- elseif route.ETX < 100 then
- color = "#ff6600"
- end
-%>
-<tr>
-<td><%=route.Destination%></td>
-<td><%=route.Gateway%></td>
-<td><%=route.Interface%></td>
-<td><%=route.Metric%></td>
-<td style="background-color:<%=color%>"><%=route.ETX%></td>
-</tr>
-<% end %>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_olsr/topology.htm b/module/public-core/src/view/public_olsr/topology.htm
deleted file mode 100644
index c622026d4..000000000
--- a/module/public-core/src/view/public_olsr/topology.htm
+++ /dev/null
@@ -1,23 +0,0 @@
-<%+header%>
-<h1><%:olsrtopo OLSR-Topologie%></h1>
-<br />
-<table cellspacing="0" cellpadding="6">
-<tr>
-<th><%:destination Ziel%></th>
-<th><%:lasthop Letzter Router%></th>
-<th>LQ</th>
-<th>ILQ</th>
-<th>ETX</th>
-</tr>
-<% for k, route in ipairs(routes) do %>
-<tr>
-<td><a href="http://<%=route["Destination IP"]%>"><%=route["Destination IP"]%></a></td>
-<td><a href="http://<%=route["Last hop IP"]%>"><%=route["Last hop IP"]%></a></td>
-<td><%=route.LQ%></td>
-<td><%=route.ILQ%></td>
-<td><%=route.ETX%></td>
-</tr>
-<% end %>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_status/index.htm b/module/public-core/src/view/public_status/index.htm
deleted file mode 100644
index be0b96888..000000000
--- a/module/public-core/src/view/public_status/index.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<%+header%>
-<h1><%:status Status%></h1>
-<h2><%:system System%></h2>
-
-<br />
-<table cellspacing="0" cellpadding="6" class="smalltext">
-<tr>
-<th><%:system_type Systemtyp%>:</th>
-<td><%=s%></td>
-</tr>
-<tr>
-<th><%:cpu Prozessor%>:</th>
-<td><%=m%></td>
-</tr>
-<tr>
-<th><%:ram Hauptspeicher%>:</th>
-<td><%=r%></td>
-</tr>
-</table>
-<br /><br />
-
-<h2><%:wifi Drahtlos%></h2>
-<br />
-<table cellspacing="0" cellpadding="6" class="smalltext">
-<tr>
-<th><%:name Name%></th>
-<th><%:protocol Protokoll%></th>
-<th><%:frequency Frequenz%></th>
-<th><%:power Leistung%></th>
-<th><%:bitrate Bitrate%></th>
-<th><%:rts RTS%></th>
-<th><%:frag Frag.%></th>
-<th><%:link Verb.%></th>
-<th><%:signal Signal%></th>
-<th><%:noise Rausch%></th>
-</tr>
-<%=ffluci.sys.httpget("http://127.0.0.1" .. controller .. "/sudo/status/iwconfig")%>
-</table>
-<br />
-<br />
-<h2><%:defroutes Standardrouten%></h2>
-<br />
-<table cellspacing="0" cellpadding="6" class="smalltext">
-<tr>
-<th><%:gateway Gateway%></th>
-<th><%:metric Metrik%></th>
-<th><%:iface Schnittstelle%></th>
-</tr>
-<%
-for i, rt in pairs(routes) do
-%>
-<tr>
-<td><%=ffluci.sys.net.hexip4(rt.Gateway)%></th>
-<td><%=rt.Metric%></th>
-<td><%=rt.Iface%></th>
-</tr>
-<% end %>
-</table>
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_status/iwscan.htm b/module/public-core/src/view/public_status/iwscan.htm
deleted file mode 100644
index a8924c892..000000000
--- a/module/public-core/src/view/public_status/iwscan.htm
+++ /dev/null
@@ -1,21 +0,0 @@
-<%+header%>
-<h1><%:iwscan WLAN-Scan%></h1>
-<p><%:iwscan1 Drahtlosnetzwerke in der lokalen Umgebung des Routers:%></p>
-
-<br />
-<table cellspacing="0" cellpadding="6" class="smalltext">
-<tr>
-<th><%:interface Schnittstelle%></th>
-<th><%:essid ESSID%></th>
-<th><%:bssid BSSID%></th>
-<th><%:mode Modus%></th>
-<th><%:channel Kanal%></th>
-<th><%:encr Vers.%></th>
-<th><%:link Verb.%></th>
-<th><%:signal Signal%></th>
-<th><%:noise Rausch%></th>
-</tr>
-<%=ffluci.sys.httpget("http://127.0.0.1" .. controller .. "/sudo/status/iwscan")%>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/public_status/routes.htm b/module/public-core/src/view/public_status/routes.htm
deleted file mode 100644
index 85b02212d..000000000
--- a/module/public-core/src/view/public_status/routes.htm
+++ /dev/null
@@ -1,28 +0,0 @@
-<%+header%>
-<h1><%:routes Routen%></h1>
-
-<br />
-<table cellspacing="0" cellpadding="6" class="smalltext">
-<tr>
-<th><%:target Ziel%></th>
-<th><%:netmask Netzmaske%></th>
-<th><%:gateway Gateway%></th>
-<th><%:metric Metrik%></th>
-<th><%:iface Schnittstelle%></th>
-</tr>
-<%
-local routes = ffluci.sys.net.routes()
-
-for i, r in pairs(routes) do
-%>
-<tr>
-<td><%=ffluci.sys.net.hexip4(r.Destination)%></td>
-<td><%=ffluci.sys.net.hexip4(r.Mask)%></td>
-<td><%=ffluci.sys.net.hexip4(r.Gateway)%></td>
-<td><%=r.Metric%></td>
-<td><%=r.Iface%></td>
-</tr>
-<% end %>
-</table>
-<br />
-<%+footer%> \ No newline at end of file
diff --git a/module/public-core/src/view/sudo_status/iwconfig.htm b/module/public-core/src/view/sudo_status/iwconfig.htm
deleted file mode 100644
index 6f5dede70..000000000
--- a/module/public-core/src/view/sudo_status/iwconfig.htm
+++ /dev/null
@@ -1,21 +0,0 @@
-<%
-ffluci.http.prepare_content("text/plain")
-for k, v in pairs(ffluci.sys.wifi.getiwconfig()) do
-%>
-<tr>
-<td rowspan="2"><%=k%></td>
-<td><%=v[1]%></td>
-<td><%=v.Frequency%></td>
-<td><%=v["Tx-Power"]%></td>
-<td><%=v["Bit Rate"]%></td>
-<td><%=v["RTS thr"]%></td>
-<td><%=v["Fragment thr"]%></td>
-<td><%=v["Link Quality"]%></td>
-<td><%=v["Signal level"]%></td>
-<td><%=v["Noise level"]%></td>
-</tr>
-<tr>
-<td colspan="4"><strong>ESSID: </strong><%=v.ESSID%></td>
-<td colspan="5"><strong>BSSID: </strong><%=(v.Cell or v["Access Point"])%></td>
-</tr>
-<%end%>
diff --git a/module/public-core/src/view/sudo_status/iwscan.htm b/module/public-core/src/view/sudo_status/iwscan.htm
deleted file mode 100644
index 6f321ae9e..000000000
--- a/module/public-core/src/view/sudo_status/iwscan.htm
+++ /dev/null
@@ -1,22 +0,0 @@
-<%
-ffluci.http.prepare_content("text/plain")
-for iface, cells in pairs(ffluci.sys.wifi.iwscan()) do
- for i, cell in ipairs(cells) do
-%>
-<tr>
-<td><%=iface%></td>
-<td><%=cell.ESSID%></td>
-<td><%=cell.Address%></td>
-<td><%=cell.Mode%></td>
-<td><%=(cell.Channel or cell.Frequency or "")%></td>
-<td><%=cell["Encryption key"]%></td>
-<td><%=cell.Quality%></td>
-<td><%=cell["Signal level"]%></td>
-<td><%=cell["Noise level"]%></td>
-</tr>
-<%
- end
-end
-%>
-
-
diff --git a/module/rpc-core/Makefile b/module/rpc-core/Makefile
deleted file mode 100644
index 113799af6..000000000
--- a/module/rpc-core/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-LUAC = luac
-LUAC_OPTIONS = -s
-
-FILES = i18n/* view/*/*.htm
-
-CFILES = controller/*/*.lua model/cbi/*/*.lua model/menu/*.lua
-
-DIRECTORIES = model/cbi model/menu controller i18n view
-
-
-INFILES = $(CFILES:%=src/%)
-OUTDIRS = $(DIRECTORIES:%=dist/%)
-CPFILES = $(FILES:%=src/%)
-
-.PHONY: all compile source clean depends
-
-all: compile
-
-
-depends:
- mkdir -p $(OUTDIRS)
- for i in $(CPFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-compile: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); $(LUAC) $(LUAC_OPTIONS) -o dist/$$i src/$$i; fi; done
-
-source: depends
- for i in $(INFILES); do if [ -f "$$i" ]; then i=$$(echo $$i | cut -d/ -f2-); \
- mkdir -p dist/$$(dirname $$i); cp src/$$i dist/$$i; fi; done
-
-
-clean:
- rm dist -rf
diff --git a/module/rpc-core/src/controller/rpc/luciinfo.lua b/module/rpc-core/src/controller/rpc/luciinfo.lua
deleted file mode 100644
index 611423fbb..000000000
--- a/module/rpc-core/src/controller/rpc/luciinfo.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-module("ffluci.controller.rpc.luciinfo", package.seeall)
-
-function action_index()
- local uci = ffluci.model.uci.StateSession()
-
- ffluci.http.prepare_content("text/plain")
-
- -- General
- print("luciinfo.api=1")
- print("luciinfo.version=" .. tostring(ffluci.__version__))
-
- -- Sysinfo
- local s, m, r = ffluci.sys.sysinfo()
- local dr = ffluci.sys.net.defaultroute()
- dr = dr and ffluci.sys.net.hexip4(dr.Gateway) or ""
- local l1, l5, l15 = ffluci.sys.loadavg()
-
- print("sysinfo.system=" .. sanitize(s))
- print("sysinfo.cpu=" .. sanitize(m))
- print("sysinfo.ram=" .. sanitize(r))
- print("sysinfo.hostname=" .. sanitize(ffluci.sys.hostname()))
- print("sysinfo.load1=" .. tostring(l1))
- print("sysinfo.load5=" .. tostring(l5))
- print("sysinfo.load15=" .. tostring(l15))
- print("sysinfo.defaultgw=" .. dr)
-
-
- -- Freifunk
- local ff = uci:sections("freifunk") or {}
- for k, v in pairs(ff) do
- if k:sub(1, 1) ~= "." then
- for i, j in pairs(v) do
- print("freifunk." .. k .. "." .. i .. "=" .. j)
- end
- end
- end
-end
-
-function sanitize(val)
- return val:gsub("\n", "\t")
-end \ No newline at end of file
diff --git a/modules/admin-core/Makefile b/modules/admin-core/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/modules/admin-core/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/modules/admin-core/src/controller/admin/index.lua b/modules/admin-core/src/controller/admin/index.lua
new file mode 100644
index 000000000..b4a7720f8
--- /dev/null
+++ b/modules/admin-core/src/controller/admin/index.lua
@@ -0,0 +1 @@
+module("ffluci.controller.admin.index", package.seeall) \ No newline at end of file
diff --git a/module/admin-core/src/controller/admin/network.lua b/modules/admin-core/src/controller/admin/network.lua
index 0e3165f08..0e3165f08 100644
--- a/module/admin-core/src/controller/admin/network.lua
+++ b/modules/admin-core/src/controller/admin/network.lua
diff --git a/module/admin-core/src/controller/admin/services.lua b/modules/admin-core/src/controller/admin/services.lua
index 42181212b..42181212b 100644
--- a/module/admin-core/src/controller/admin/services.lua
+++ b/modules/admin-core/src/controller/admin/services.lua
diff --git a/module/admin-core/src/controller/admin/system.lua b/modules/admin-core/src/controller/admin/system.lua
index 7a927d604..7a927d604 100644
--- a/module/admin-core/src/controller/admin/system.lua
+++ b/modules/admin-core/src/controller/admin/system.lua
diff --git a/module/admin-core/src/controller/admin/uci.lua b/modules/admin-core/src/controller/admin/uci.lua
index cb4a95ba5..cb4a95ba5 100644
--- a/module/admin-core/src/controller/admin/uci.lua
+++ b/modules/admin-core/src/controller/admin/uci.lua
diff --git a/module/admin-core/src/controller/admin/wifi.lua b/modules/admin-core/src/controller/admin/wifi.lua
index bc1040c71..bc1040c71 100644
--- a/module/admin-core/src/controller/admin/wifi.lua
+++ b/modules/admin-core/src/controller/admin/wifi.lua
diff --git a/module/admin-core/src/i18n/admin_index.en b/modules/admin-core/src/i18n/admin_index.en
index 652627ab0..6a4877523 100644
--- a/module/admin-core/src/i18n/admin_index.en
+++ b/modules/admin-core/src/i18n/admin_index.en
@@ -1,4 +1,3 @@
-contact = "Contact"
luci = "User Interface"
hello = "Hello!"
@@ -11,18 +10,6 @@ to your feedback and suggestions.]]
admin6 = "And now have fun with your router!"
team = "The FFLuCI Team"
-contact1 = [[This information will be available on the public contact page.
-As stated in the Picopeering Agreement you should at least enter your e-mail address.
-To display your router on any topography map, please enter your geographical coordinates or at least
-your street and house number in the location field.]]
-nickname = "Nickname"
-mail1 = "This field is essential!"
-phone = "Phone"
-location = "Location"
-coord = "Coordinates"
-coord1 = "Latitude;Longitude (e.g. 51.5;12.9)"
-note = "Note"
-
luci1 = "Here you can customize the settings and the functionality of FFLuCI."
language = "Language"
general = "General"
diff --git a/module/admin-core/src/i18n/admin_uci.en b/modules/admin-core/src/i18n/admin_uci.en
index 00ac5f5ff..00ac5f5ff 100644
--- a/module/admin-core/src/i18n/admin_uci.en
+++ b/modules/admin-core/src/i18n/admin_uci.en
diff --git a/module/admin-core/src/model/cbi/admin_index/luci.lua b/modules/admin-core/src/model/cbi/admin_index/luci.lua
index 4f6910eee..4f6910eee 100644
--- a/module/admin-core/src/model/cbi/admin_index/luci.lua
+++ b/modules/admin-core/src/model/cbi/admin_index/luci.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/dhcp.lua b/modules/admin-core/src/model/cbi/admin_network/dhcp.lua
index caac277c4..caac277c4 100644
--- a/module/admin-core/src/model/cbi/admin_network/dhcp.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/dhcp.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/ifaces.lua b/modules/admin-core/src/model/cbi/admin_network/ifaces.lua
index 2dd190957..2dd190957 100644
--- a/module/admin-core/src/model/cbi/admin_network/ifaces.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/ifaces.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/ptp.lua b/modules/admin-core/src/model/cbi/admin_network/ptp.lua
index 6a627f268..6a627f268 100644
--- a/module/admin-core/src/model/cbi/admin_network/ptp.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/ptp.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/qos.lua b/modules/admin-core/src/model/cbi/admin_network/qos.lua
index d58130f10..d58130f10 100644
--- a/module/admin-core/src/model/cbi/admin_network/qos.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/qos.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/routes.lua b/modules/admin-core/src/model/cbi/admin_network/routes.lua
index 49e432180..49e432180 100644
--- a/module/admin-core/src/model/cbi/admin_network/routes.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/routes.lua
diff --git a/module/admin-core/src/model/cbi/admin_network/vlan.lua b/modules/admin-core/src/model/cbi/admin_network/vlan.lua
index 7b493643b..7b493643b 100644
--- a/module/admin-core/src/model/cbi/admin_network/vlan.lua
+++ b/modules/admin-core/src/model/cbi/admin_network/vlan.lua
diff --git a/module/admin-core/src/model/cbi/admin_services/dnsmasq.lua b/modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua
index 86716ff9f..86716ff9f 100644
--- a/module/admin-core/src/model/cbi/admin_services/dnsmasq.lua
+++ b/modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua
diff --git a/module/admin-core/src/model/cbi/admin_services/dropbear.lua b/modules/admin-core/src/model/cbi/admin_services/dropbear.lua
index 3ecf95335..3ecf95335 100644
--- a/module/admin-core/src/model/cbi/admin_services/dropbear.lua
+++ b/modules/admin-core/src/model/cbi/admin_services/dropbear.lua
diff --git a/module/admin-core/src/model/cbi/admin_services/httpd.lua b/modules/admin-core/src/model/cbi/admin_services/httpd.lua
index 3bd49a2d7..3bd49a2d7 100644
--- a/module/admin-core/src/model/cbi/admin_services/httpd.lua
+++ b/modules/admin-core/src/model/cbi/admin_services/httpd.lua
diff --git a/module/admin-core/src/model/cbi/admin_services/olsrd.lua b/modules/admin-core/src/model/cbi/admin_services/olsrd.lua
index 8431a8104..8431a8104 100644
--- a/module/admin-core/src/model/cbi/admin_services/olsrd.lua
+++ b/modules/admin-core/src/model/cbi/admin_services/olsrd.lua
diff --git a/module/admin-core/src/model/cbi/admin_system/fstab.lua b/modules/admin-core/src/model/cbi/admin_system/fstab.lua
index d705743a0..d705743a0 100644
--- a/module/admin-core/src/model/cbi/admin_system/fstab.lua
+++ b/modules/admin-core/src/model/cbi/admin_system/fstab.lua
diff --git a/module/admin-core/src/model/cbi/admin_system/hostname.lua b/modules/admin-core/src/model/cbi/admin_system/hostname.lua
index c9e159d05..c9e159d05 100644
--- a/module/admin-core/src/model/cbi/admin_system/hostname.lua
+++ b/modules/admin-core/src/model/cbi/admin_system/hostname.lua
diff --git a/module/admin-core/src/model/cbi/admin_wifi/devices.lua b/modules/admin-core/src/model/cbi/admin_wifi/devices.lua
index b612dd676..b612dd676 100644
--- a/module/admin-core/src/model/cbi/admin_wifi/devices.lua
+++ b/modules/admin-core/src/model/cbi/admin_wifi/devices.lua
diff --git a/module/admin-core/src/model/cbi/admin_wifi/networks.lua b/modules/admin-core/src/model/cbi/admin_wifi/networks.lua
index 4a7ad12f6..4a7ad12f6 100644
--- a/module/admin-core/src/model/cbi/admin_wifi/networks.lua
+++ b/modules/admin-core/src/model/cbi/admin_wifi/networks.lua
diff --git a/module/admin-core/src/model/menu/00admin.lua b/modules/admin-core/src/model/menu/00admin.lua
index 8f87792ca..c48db19bd 100644
--- a/module/admin-core/src/model/menu/00admin.lua
+++ b/modules/admin-core/src/model/menu/00admin.lua
@@ -1,8 +1,5 @@
add("admin", "index", "Übersicht", 10)
-act("wizard", "Freifunkassistent")
-act("contact", "Kontakt")
act("luci", "Oberfläche")
-act("freifunk", "Freifunk")
add("admin", "system", "System", 30)
act("packages", "Paketverwaltung")
@@ -20,9 +17,6 @@ end
act("httpd", "HTTP-Server")
act("dropbear", "SSH-Server")
act("dnsmasq", "Dnsmasq")
-if isfile("/etc/config/luci_splash") then
- act("splash", "Client-Splash")
-end
add("admin", "network", "Netzwerk", 50)
act("vlan", "Switch")
@@ -30,8 +24,6 @@ act("ifaces", "Schnittstellen")
act("dhcp", "DHCP-Server")
act("ptp", "PPPoE / PPTP")
act("routes", "Statische Routen")
-act("portfw", "Portweiterleitung")
-act("firewall", "Firewall")
if isfile("/etc/config/qos") then
act("qos", "Quality of Service")
end
diff --git a/module/admin-core/src/view/admin_index/index.htm b/modules/admin-core/src/view/admin_index/index.htm
index 27cdade52..27cdade52 100644
--- a/module/admin-core/src/view/admin_index/index.htm
+++ b/modules/admin-core/src/view/admin_index/index.htm
diff --git a/module/admin-core/src/view/admin_index/wizard.htm b/modules/admin-core/src/view/admin_index/wizard.htm
index 8c1a0952b..8c1a0952b 100644
--- a/module/admin-core/src/view/admin_index/wizard.htm
+++ b/modules/admin-core/src/view/admin_index/wizard.htm
diff --git a/module/admin-core/src/view/admin_network/index.htm b/modules/admin-core/src/view/admin_network/index.htm
index 7fa4f5565..7fa4f5565 100644
--- a/module/admin-core/src/view/admin_network/index.htm
+++ b/modules/admin-core/src/view/admin_network/index.htm
diff --git a/module/admin-core/src/view/admin_services/index.htm b/modules/admin-core/src/view/admin_services/index.htm
index a06fe1056..a06fe1056 100644
--- a/module/admin-core/src/view/admin_services/index.htm
+++ b/modules/admin-core/src/view/admin_services/index.htm
diff --git a/module/admin-core/src/view/admin_system/editor.htm b/modules/admin-core/src/view/admin_system/editor.htm
index ef3e0d8ab..ef3e0d8ab 100644
--- a/module/admin-core/src/view/admin_system/editor.htm
+++ b/modules/admin-core/src/view/admin_system/editor.htm
diff --git a/module/admin-core/src/view/admin_system/index.htm b/modules/admin-core/src/view/admin_system/index.htm
index 3e9a28221..3e9a28221 100644
--- a/module/admin-core/src/view/admin_system/index.htm
+++ b/modules/admin-core/src/view/admin_system/index.htm
diff --git a/module/admin-core/src/view/admin_system/ipkg.htm b/modules/admin-core/src/view/admin_system/ipkg.htm
index 9a88ee57b..9a88ee57b 100644
--- a/module/admin-core/src/view/admin_system/ipkg.htm
+++ b/modules/admin-core/src/view/admin_system/ipkg.htm
diff --git a/module/admin-core/src/view/admin_system/packages.htm b/modules/admin-core/src/view/admin_system/packages.htm
index 52da37040..52da37040 100644
--- a/module/admin-core/src/view/admin_system/packages.htm
+++ b/modules/admin-core/src/view/admin_system/packages.htm
diff --git a/module/admin-core/src/view/admin_system/passwd.htm b/modules/admin-core/src/view/admin_system/passwd.htm
index 87b253368..87b253368 100644
--- a/module/admin-core/src/view/admin_system/passwd.htm
+++ b/modules/admin-core/src/view/admin_system/passwd.htm
diff --git a/module/admin-core/src/view/admin_system/reboot.htm b/modules/admin-core/src/view/admin_system/reboot.htm
index e81be408c..e81be408c 100644
--- a/module/admin-core/src/view/admin_system/reboot.htm
+++ b/modules/admin-core/src/view/admin_system/reboot.htm
diff --git a/module/admin-core/src/view/admin_system/sshkeys.htm b/modules/admin-core/src/view/admin_system/sshkeys.htm
index 3765e1eea..3765e1eea 100644
--- a/module/admin-core/src/view/admin_system/sshkeys.htm
+++ b/modules/admin-core/src/view/admin_system/sshkeys.htm
diff --git a/module/admin-core/src/view/admin_system/upgrade.htm b/modules/admin-core/src/view/admin_system/upgrade.htm
index 598002890..598002890 100644
--- a/module/admin-core/src/view/admin_system/upgrade.htm
+++ b/modules/admin-core/src/view/admin_system/upgrade.htm
diff --git a/module/admin-core/src/view/admin_uci/apply.htm b/modules/admin-core/src/view/admin_uci/apply.htm
index 090967a2d..090967a2d 100644
--- a/module/admin-core/src/view/admin_uci/apply.htm
+++ b/modules/admin-core/src/view/admin_uci/apply.htm
diff --git a/module/admin-core/src/view/admin_uci/changes.htm b/modules/admin-core/src/view/admin_uci/changes.htm
index 3bbcd0e5f..3bbcd0e5f 100644
--- a/module/admin-core/src/view/admin_uci/changes.htm
+++ b/modules/admin-core/src/view/admin_uci/changes.htm
diff --git a/module/admin-core/src/view/admin_uci/revert.htm b/modules/admin-core/src/view/admin_uci/revert.htm
index 39aaabcd8..39aaabcd8 100644
--- a/module/admin-core/src/view/admin_uci/revert.htm
+++ b/modules/admin-core/src/view/admin_uci/revert.htm
diff --git a/module/admin-core/src/view/admin_wifi/index.htm b/modules/admin-core/src/view/admin_wifi/index.htm
index 6a6059835..6a6059835 100644
--- a/module/admin-core/src/view/admin_wifi/index.htm
+++ b/modules/admin-core/src/view/admin_wifi/index.htm
diff --git a/themes/fledermaus/Makefile b/themes/fledermaus/Makefile
new file mode 100644
index 000000000..81a96f6a8
--- /dev/null
+++ b/themes/fledermaus/Makefile
@@ -0,0 +1,2 @@
+include ../../build/config.mk
+include ../../build/module.mk \ No newline at end of file
diff --git a/themes/fledermaus/contrib/media/cascade.css b/themes/fledermaus/root/www/ffluci/media/cascade.css
index a7245ae60..a7245ae60 100644
--- a/themes/fledermaus/contrib/media/cascade.css
+++ b/themes/fledermaus/root/www/ffluci/media/cascade.css
diff --git a/themes/fledermaus/contrib/media/cbi.js b/themes/fledermaus/root/www/ffluci/media/cbi.js
index a3a47aa45..a3a47aa45 100644
--- a/themes/fledermaus/contrib/media/cbi.js
+++ b/themes/fledermaus/root/www/ffluci/media/cbi.js
diff --git a/themes/fledermaus/contrib/media/logo.png b/themes/fledermaus/root/www/ffluci/media/logo.png
index d4c5dd9a3..d4c5dd9a3 100644
--- a/themes/fledermaus/contrib/media/logo.png
+++ b/themes/fledermaus/root/www/ffluci/media/logo.png
Binary files differ