include build/config.mk
-MODULES = applications/* libs/* modules/* themes/* i18n/* contrib/luaposix
-LUA_TARGET = source
+MODULES = applications/* libs/* modules/* themes/* i18n/* contrib/*
OS:=$(shell uname)
export OS
all: build
-build: luabuild gccbuild
+build: gccbuild luabuild
gccbuild:
for i in $(MODULES); do make -C$$i compile; done
hostcopy:
mkdir -p host
for i in $(MODULES); do cp -a $$i/dist/* host/ -R 2>/dev/null || true; done
+ for i in $(MODULES); do cp -a $$i/hostfiles/* host/ -R 2>/dev/null || true; done
rm -f host/luci
ln -s .$(LUCI_MODULEDIR) host/luci
-runboa: host
- export LUA_PATH="`pwd`/host$(LUCI_MODULEDIR);;"
- export LUA_CPATH="`pwd`/host$(LUCI_LIBRARYDIR);;"
- libs/sgi-webuci/host/buildconfig.sh `pwd`/host > host/etc/boa/boa.conf
- ./host/usr/bin/boa -c ./host/etc/boa -d
+hostenv: host ucidefaults
+
+ucidefaults:
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host)/bin/uci-defaults --exclude luci-community-*"
+
+runboa: hostenv
+ libs/sgi-webuci/host/buildconfig.sh $(realpath host) > host/etc/boa/boa.conf
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath host/usr/bin/boa) -c $(realpath host/etc/boa) -d"
+
+runhttpd: hostenv
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath libs/httpd/host/runluci) $(realpath host) $(HTDOCS)"
runluci: luahost
- export LUA_PATH="`pwd`/host$(LUCI_MODULEDIR);;"
- export LUA_CPATH="`pwd`/host$(LUCI_LIBRARYDIR);;"
- libs/httpd/host/runluci host$(HTDOCS)
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) "$(realpath libs/httpd/host/runluci) $(realpath host) $(HTDOCS)"
+
+runlua: hostenv
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) lua
+
+runshell: hostenv
+ build/hostenv.sh $(realpath host) $(LUA_MODULEDIR) $(LUA_LIBRARYDIR) $$SHELL
hostclean: clean
rm -rf host
run:
- # make run is deprecated #
- # Please use: #
- # #
- # make runluci to use LuCI HTTPD #
- # make runboa to use Boa / Webuci #
+ # make run is deprecated #
+ # Please use: #
+ # #
+ # To run LuCI WebUI using LuCI HTTPD #
+ # make runhttpd #
+ # #
+ # To run LuCI WebUI using Boa/Webuci #
+ # make runboa #
+ # #
+ # To start a shell in the LuCI environment #
+ # make runshell #
+ # #
+ # To run Lua CLI in the LuCI environment #
+ # make runlua #
LUAC = luac
LUAC_OPTIONS = -s
+LUA_TARGET = source
LUA_MODULEDIR = /usr/lib/lua
LUA_LIBRARYDIR = /usr/lib/lua
--- /dev/null
+#!/bin/sh
+export LD_LIBRARY_PATH="$1/usr/lib:$LD_LIBRARY_PATH"
+export PATH="$1/bin:$1/usr/bin:$PATH"
+export LUA_PATH="$1/$2/?.lua;$1/$2/?/init.lua;;"
+export LUA_CPATH="$1/$3/?.so;;"
+$4
--- /dev/null
+include ../../build/config.mk
+include ../../build/module.mk
\ No newline at end of file
all: compile
+include ../../build/module.mk
+
$(LUAPOSIX_FILE):
wget -O $@ $(LUAPOSIX_URL) || rm -f $@
--- /dev/null
+luasocket-*
--- /dev/null
+include ../../build/config.mk
+include ../../build/gccconfig.mk
+
+LUASOCKET_VERSION = 2.0.2
+LUASOCKET_SITE = http://luaforge.net/frs/download.php/2664/
+LUASOCKET_DIR = luasocket-$(LUASOCKET_VERSION)
+LUASOCKET_FILE = $(LUASOCKET_DIR).tar.gz
+LUASOCKET_URL = $(LUASOCKET_SITE)/$(LUASOCKET_FILE)
+INSTALL_MODULEDIR = dist$(LUA_MODULEDIR)
+INSTALL_LIBRARYDIR = dist$(LUA_LIBRARYDIR)
+
+all: compile
+
+include ../../build/module.mk
+
+$(LUASOCKET_FILE):
+ wget -O $@ $(LUASOCKET_URL) || rm -f $@
+
+$(LUASOCKET_DIR)/.prepared: $(LUASOCKET_FILE)
+ rm -rf $(LUASOCKET_DIR)
+ tar xvfz $(LUASOCKET_FILE)
+ touch $@
+
+compile: $(LUASOCKET_DIR)/.prepared
+ $(MAKE) -C $(LUASOCKET_DIR) CC=$(CC) CFLAGS="$(CFLAGS) $(LUA_CFLAGS) $(FPIC)" LDFLAGS="$(LDFLAGS) $(LUA_SHLIBS) $(SHLIB_FLAGS)" OS="$(OS)"
+ mkdir -p $(INSTALL_LIBRARYDIR) $(INSTALL_MODULEDIR)
+ $(MAKE) -C $(LUASOCKET_DIR) install INSTALL_TOP_SHARE=../../$(INSTALL_MODULEDIR) INSTALL_TOP_LIB=../../$(INSTALL_LIBRARYDIR)
+
+compile-all: compile
+
+clean:
+ rm -rf $(LUASOCKET_DIR) $(LUASOCKET_FILE)
--- /dev/null
+include ../../build/config.mk
+include ../../build/module.mk
--- /dev/null
+include ../../build/config.mk
+include ../../build/gccconfig.mk
+
+UCI_VERSION = 0.4.4
+UCI_SITE = http://mirror2.openwrt.org/sources
+UCI_DIR = uci-$(UCI_VERSION)
+UCI_FILE = $(UCI_DIR).tar.gz
+UCI_URL = $(UCI_SITE)/$(UCI_FILE)
+
+all: compile
+
+include ../../build/module.mk
+
+$(UCI_FILE):
+ wget -O $@ $(UCI_URL) || rm -f $@
+
+$(UCI_DIR)/.prepared: $(UCI_FILE)
+ rm -rf $(UCI_DIR)
+ tar xvfz $(UCI_FILE)
+ touch $@
+
+compile: $(UCI_DIR)/.prepared
+ $(MAKE) -C $(UCI_DIR) CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OS="$(OS)"
+ mkdir -p dist/usr/lib dist/usr/bin
+ $(MAKE) -C $(UCI_DIR) install DESTDIR=../dist prefix=/usr
+ $(MAKE) -C $(UCI_DIR)/lua CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OS="$(OS)"
+ $(MAKE) -C $(UCI_DIR)/lua install DESTDIR=../../dist luadir=$(LUA_LIBRARYDIR)
+
+
+compile-all: compile
+
+clean:
+ rm -rf $(UCI_DIR) $(UCI_FILE)
--- /dev/null
+#!/bin/sh
+$(dirname $0)/../usr/bin/uci -c $(dirname $0)/../etc/config "$@"
--- /dev/null
+#!/bin/sh
+for i in $(find $(dirname $0)/../etc/uci-defaults -type f -not -name "$2")
+do
+ [ -f $i ] && {
+ bash $i; rm $i
+ }
+done
--- /dev/null
+#################################################################
+# In order to enable dynamic dns you need at least one section,
+# and in that seciton the "enabled" option must be set to one
+#
+# Each section represents an update to a different service
+#
+# You specify your domain name, your username and your password
+# with the optins "domain", "username" and "password" respectively
+#
+# Next you need to specify the name of the service you are
+# connecting to "eg. dyndns.org". The format of the update
+# urls for several different dynamic dns services is specified
+# in the /usr/lib/ddns/services file. This list is hardly complete
+# as there are many, many different dynamic dns services. If your
+# service is on the list you can merely specify it with the
+# "service_name" option. Otherwise you will need to determine
+# the format of the url to update with. You can either add an
+# entry to the /usr/lib/ddns/services file or specify this with
+# the "update_url" option.
+#
+# We also need to specify the source of the ip address to associate with
+# your domain. The "ip_source" option can be "network", "interface"
+# or "web", with "network" as the default.
+#
+# If "ip_source" is "network" you specify a network section in your
+# /etc/network config file (e.g. "wan", which is the default) with
+# the "ip_network" option. If you specify "wan", you will update
+# with whatever the ip for your wan is.
+#
+# If "ip_source" is "interface" you specify a hardware interface
+# (e.g. "eth1") and whatever the current ip of this interface is
+# will be associated with the domain when an update is performed.
+#
+# The last possibility is that "ip_source" is "web", which means
+# that in order to obtain our ip address we will connect to a
+# website, and the first valid ip address listed on that page
+# will be assumed to be ours. If you are behind another firewall
+# this is the best option since none of the local networks or
+# interfaces will have the external ip. The website to connect
+# to is specified by the "ip_url" option. You may specify multiple
+# urls in the option, separated by whitespace.
+#
+# Finally we need to specify how often to check whether we need
+# to check whether the ip address has changed (and if so update
+# it) and how often we need to force an update ( many services
+# will expire your domain if you don't connect and do an update
+# every so often). Use the "check_interval" to specify how
+# often to check whether an update is necessary, and the
+# "force_interval" option to specify how often to force an
+# update. Specify the units for these values with the "check_unit"
+# and the "force_unit" options. Units can be "days", "hours",
+# "minutes" or "seconds". The default force_unit is hours and the
+# default check_unit is seconds. The default check_interval is
+# 600 seconds, or ten minutes. The default force_interval is
+# 72 hours or 3 days.
+#
+#
+#########################################################
+
+config service "myddns"
+ option enabled "0"
+
+ option service_name "dyndns.org"
+ option domain "mypersonaldomain.dyndns.org"
+ option username "myusername"
+ option password "mypassword"
+
+ option ip_source "network"
+ option ip_network "wan"
+
+
+ option force_interval "72"
+ option force_unit "hours"
+ option check_interval "10"
+ option check_unit "minutes"
+
+ #option ip_source "interface"
+ #option ip_interface "eth0.1"
+
+ #option ip_source "web"
+ #option ip_url "http://www.whatismyip.com/automation/n09230945.asp"
+
+ #option update_url "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
+
+
--- /dev/null
+config dnsmasq
+ option domainneeded 1
+ option boguspriv 1
+ option filterwin2k '0' #enable for dial on demand
+ option localise_queries 1
+ option local '/lan/'
+ option domain 'lan'
+ option expandhosts 1
+ option nonegcache 0
+ option authoritative 1
+ option readethers 1
+ option leasefile '/tmp/dhcp.leases'
+ option resolvfile '/tmp/resolv.conf.auto'
+
+config dhcp
+ option interface lan
+ option start 100
+ option limit 150
+ option leasetime 12h
+
+config dhcp
+ option interface wan
+ option ignore 1
--- /dev/null
+config dropbear
+ option PasswordAuth 'on'
+ option Port '22'
--- /dev/null
+config mount
+ option target /home
+ option device /dev/sda1
+ option fstype ext3
+ option options rw,sync
+ option enabled 0
+
+config swap
+ option device /dev/sda2
+ option enabled 0
--- /dev/null
+
+config 'httpd'
+ option 'port' '80'
+ option 'home' '/www'
+
--- /dev/null
+#### VLAN configuration
+config switch eth0
+ option vlan0 "0 1 2 3 5*"
+ option vlan1 "4 5"
+
+
+#### Loopback configuration
+config interface loopback
+ option ifname "lo"
+ option proto static
+ option ipaddr 127.0.0.1
+ option netmask 255.0.0.0
+
+
+#### LAN configuration
+config interface lan
+ option type bridge
+ option ifname "eth0.0"
+ option proto static
+ option ipaddr 192.168.1.1
+ option netmask 255.255.255.0
+
+
+#### WAN configuration
+config interface wan
+ option ifname "eth0.1"
+ option proto dhcp
--- /dev/null
+config ntpclient
+ option hostname '0.openwrt.pool.ntp.org'
+ option port '123'
+ option count '0'
+
+config ntpclient
+ option hostname '1.openwrt.pool.ntp.org'
+ option port '123'
+ option count '0'
+
+config ntpclient
+ option hostname '2.openwrt.pool.ntp.org'
+ option port '123'
+ option count '0'
+
+config ntpclient
+ option hostname '3.openwrt.pool.ntp.org'
+ option port '123'
+ option count '0'
+
+config ntpdrift
+ option freq '0'
--- /dev/null
+# QoS configuration for OpenWrt
+
+# INTERFACES:
+config interface wan
+ option classgroup "Default"
+ option enabled 1
+ option overhead 1
+ option upload 128
+ option download 1024
+
+# RULES:
+config classify
+ option target "Bulk"
+ option ipp2p "all"
+config classify
+ option target "Bulk"
+ option layer7 "edonkey"
+config classify
+ option target "Bulk"
+ option layer7 "bittorrent"
+config classify
+ option target "Priority"
+ option ports "22,53"
+config classify
+ option target "Normal"
+ option proto "tcp"
+ option ports "20,21,25,80,110,443,993,995"
+config classify
+ option target "Express"
+ option ports "5190"
+config default
+ option target "Express"
+ option proto "udp"
+ option pktsize "-500"
+config reclassify
+ option target "Priority"
+ option proto "icmp"
+config default
+ option target "Bulk"
+ option portrange "1024-65535"
+config reclassify
+ option target "Priority"
+ option proto "tcp"
+ option pktsize "-128"
+ option mark "!Bulk"
+ option tcpflags "SYN"
+config reclassify
+ option target "Priority"
+ option proto "tcp"
+ option pktsize "-128"
+ option mark "!Bulk"
+ option tcpflags "ACK"
+
+
+# Don't change the stuff below unless you
+# really know what it means :)
+
+config classgroup "Default"
+ option classes "Priority Express Normal Bulk"
+ option default "Normal"
+
+
+config class "Priority"
+ option packetsize 400
+ option maxsize 400
+ option avgrate 10
+ option priority 20
+config class "Priority_down"
+ option packetsize 1000
+ option avgrate 10
+
+
+config class "Express"
+ option packetsize 1000
+ option maxsize 800
+ option avgrate 50
+ option priority 10
+
+config class "Normal"
+ option packetsize 1500
+ option packetdelay 100
+ option avgrate 10
+ option priority 5
+config class "Normal_down"
+ option avgrate 20
+
+config class "Bulk"
+ option avgrate 1
+ option packetdelay 200
--- /dev/null
+config system
+ option hostname OpenWrt
+ option timezone UTC
--- /dev/null
+config upnpd config
+ option log_output 0
+ option download 1024
+ option upload 512
--- /dev/null
+config wifi-device wifi0
+ option type atheros
+ option channel auto
+
+ # REMOVE THIS LINE TO ENABLE WIFI:
+ option disabled 1
+
+config wifi-iface
+ option device wifi0
+ option network lan
+ option mode ap
+ option ssid OpenWrt
+ option encryption none
require("luci.httpd.handler.file")
require("luci.httpd.handler.luci")
-DOCROOT = arg[1]
+SYSROOT = arg[1]
+DOCROOT = SYSROOT .. arg[2]
PORT = 8080
collectgarbage("setpause", 150)
serversocket = luci.httpd.Socket("0.0.0.0", PORT)
-
server = luci.httpd.server.Server()
vhost = luci.httpd.server.VHost()
server:set_default_vhost(vhost)
+if pcall(require, "uci") and pcall(require, "luci.model.uci") then
+ luci.model.uci.confdir_default = SYSROOT .. luci.model.uci.confdir_default
+ luci.model.uci.savedir_state = SYSROOT .. luci.model.uci.savedir_state
+ luci.model.uci.set_confdir(luci.model.uci.confdir_default)
+end
+
filehandler = luci.httpd.handler.file.Simple(DOCROOT)
vhost:set_default_handler(filehandler)
require("luci.dispatcher")
require("luci.sgi.webuci")
- require("uci")
+ require("luci.model.uci")
if (root ~= '/') then
-- Entering dummy mode
- uci.set_savedir(root..'/tmp/.uci')
- uci.set_confdir(root..'/etc/config')
+ luci.model.uci.confdir_default = root .. '/etc/config'
+ luci.model.uci.savedir_state = root .. '/var/state'
+ uci.set_confdir(luci.model.uci.confdir_default)
luci.sys.hostname = function() return "" end
luci.sys.loadavg = function() return 0,0,0,0,0 end
luci.sys.net.arptable = function() return {} end
luci.sys.net.devices = function() return {} end
- luci.sys.net.routes = function() return {} end
+ luci.sys.net.routes = function() return {} end
luci.sys.wifi.getiwconfig = function() return {} end
luci.sys.wifi.iwscan = function() return {} end
luci.sys.user.checkpasswd = function() return true end
- luci.http.basic_auth = function() return true end
end
end