Merge pull request #4056 from dibdot/adblock
authorTed Hess <thess@kitschensync.net>
Fri, 24 Feb 2017 13:15:52 +0000 (08:15 -0500)
committerGitHub <noreply@github.com>
Fri, 24 Feb 2017 13:15:52 +0000 (08:15 -0500)
adblock: update 2.3.2

188 files changed:
admin/netdata/Makefile
admin/netdata/files/netdata.conf
admin/netdata/patches/001-disable_external_plugins_by_default.patch
admin/syslog-ng/Makefile
admin/syslog-ng/files/custom-logs.conf [new file with mode: 0644]
admin/syslog-ng/files/syslog-ng.conf
fonts/dejavu-fonts-ttf/Makefile [new file with mode: 0644]
lang/django-compressor/Makefile
lang/django-constance/Makefile
lang/django-restframework/Makefile
lang/django-statici18n/Makefile
lang/django/Makefile
lang/luv/Config.in [new file with mode: 0644]
lang/luv/Makefile [new file with mode: 0644]
lang/micropython-lib/Makefile
lang/openpyxl/Makefile
lang/python-cffi/Makefile
lang/python-dateutil/Makefile
lang/python-ldap/Makefile
lang/python-pcapy/Makefile
lang/python-ply/Makefile
lang/python-psycopg2/Makefile
lang/python-pycparser/Makefile
lang/python-urllib3/Makefile
lang/python/files/python-package-pip.mk
lang/python/files/python-package-setuptools.mk
lang/python/files/python-version.mk
lang/python/patches/011-remove-setupterm-definition.patch [new file with mode: 0644]
lang/python3-bottle/Makefile
lang/python3/files/python3-package-pip.mk
lang/python3/files/python3-package-setuptools.mk
lang/python3/files/python3-version.mk
lang/python3/patches/011-fix-ncursesw-definition-colisions.patch [new file with mode: 0644]
libs/boost/Makefile
libs/boost/patches/02_fix_libc_regression_execution_monitor.patch [new file with mode: 0644]
libs/check/Makefile
libs/confuse/Makefile
libs/fftw3/Makefile
libs/gnutls/Makefile
libs/icu/Makefile
libs/libidn/Makefile
libs/libidn/patches/002-disable-po-docs-examples.patch
libs/libidn/patches/010-fix-idn-error-usage.patch
libs/libsearpc/Makefile
libs/loudmouth/Makefile
libs/loudmouth/patches/900-disable-docs-examples-tests.patch [new file with mode: 0644]
libs/opus/Makefile
libs/pcre2/Makefile [new file with mode: 0644]
libs/protobuf/Makefile
libs/protobuf/patches/001-mipseb-compile.patch [deleted file]
libs/protobuf/patches/003-mips2andHigher-compile.patch [deleted file]
mail/postfix/Makefile
multimedia/ffmpeg/Config.in
multimedia/ffmpeg/Makefile
multimedia/minidlna/Makefile
multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch [new file with mode: 0644]
multimedia/minidlna/patches/002-dont-build-po-files.patch [new file with mode: 0644]
multimedia/minidlna/patches/010-libav-fix.patch [deleted file]
multimedia/youtube-dl/Makefile
net/aria2/Config.in
net/aria2/Makefile
net/chrony/Makefile
net/chrony/files/chrony.conf
net/ddns-scripts/Makefile
net/ddns-scripts/files/dynamic_dns_functions.sh
net/ddns-scripts/files/public_suffix_list.dat
net/ddns-scripts/files/services
net/ddns-scripts/files/services_ipv6
net/git/Makefile
net/inadyn/Makefile [new file with mode: 0644]
net/lighttpd/Makefile
net/lighttpd/patches/0001-mod_cgi-fix-CGI-local-redir-w-url.rewrite-once-fixes.patch [new file with mode: 0644]
net/luci-app-bcp38/Makefile [deleted file]
net/luci-app-bcp38/files/bcp38-cbi.lua [deleted file]
net/luci-app-bcp38/files/bcp38-controller.lua [deleted file]
net/luci-app-bcp38/files/uci-defaults-bcp38 [deleted file]
net/luci-app-clamav/Makefile [deleted file]
net/luci-app-clamav/files/controller/clamav-controller.lua [deleted file]
net/luci-app-clamav/files/model/cbi/clamav-cbi.lua [deleted file]
net/luci-app-e2guardian/Makefile [deleted file]
net/luci-app-e2guardian/files/e2guardian-cbi.lua [deleted file]
net/luci-app-e2guardian/files/e2guardian-controller.lua [deleted file]
net/luci-app-squid/Makefile [deleted file]
net/luci-app-squid/files/squid-cbi.lua [deleted file]
net/luci-app-squid/files/squid-controller.lua [deleted file]
net/net-snmp/Makefile
net/net-snmp/files/snmpd.conf
net/net-snmp/files/snmpd.init
net/nginx/Config.in
net/nginx/Makefile
net/ngircd/Makefile
net/nut/Config.in
net/nut/Makefile
net/nut/files/add_nut_httpd_conf [new file with mode: 0644]
net/nut/files/nut-cgi.init [new file with mode: 0755]
net/nut/files/nut-monitor.init
net/nut/files/nut-sched.default [new file with mode: 0644]
net/nut/files/nut-sendmail-notify [new file with mode: 0755]
net/nut/files/nut-sendmail-notify.default [new file with mode: 0644]
net/nut/files/nut-server.init
net/nut/files/nut_cgi [new file with mode: 0644]
net/nut/files/nut_monitor [new file with mode: 0644]
net/nut/files/nut_server [new file with mode: 0644]
net/ocserv/Makefile
net/ocserv/patches/001-makefile-fix.patch [deleted file]
net/pptpd/files/pptpd.init
net/seafile-ccnet/Makefile
net/seafile-seahub/Makefile
net/seafile-server/Makefile
net/ser2net/Makefile
net/sqm-scripts/Makefile
net/strongswan/Makefile
net/subversion/Makefile
net/tinc/Makefile
net/tor/Makefile
net/travelmate/Makefile
net/travelmate/files/README.md
net/travelmate/files/travelmate.init
net/travelmate/files/travelmate.sh
net/unbound/Makefile
net/unbound/files/README.md
net/unbound/files/odhcpd.awk
net/unbound/files/odhcpd.sh
net/unbound/files/unbound.sh
net/vallumd/Makefile
net/vnstat/Makefile
net/vnstat/patches/001-conf.patch [new file with mode: 0644]
net/vnstat/patches/002-no_install_strip.patch [new file with mode: 0644]
net/vnstat/patches/003-no_install_uname.patch [new file with mode: 0644]
net/vnstat/patches/100-musl-compat.patch [new file with mode: 0644]
net/vnstat/patches/990-adjust-configuration-defaults.patch [deleted file]
net/vnstat/patches/991-no-invocation.patch [deleted file]
net/vpnbypass/Makefile
net/vpnbypass/files/README.md
net/vpnbypass/files/vpnbypass.conf
net/vpnbypass/files/vpnbypass.init
net/webui-aria2/Makefile
net/webui-aria2/patches/001-simplify-flag-icon-css.patch [new file with mode: 0644]
net/wireguard/Makefile
net/wshaper/Makefile [deleted file]
net/wshaper/files/wshaper.config [deleted file]
net/wshaper/files/wshaper.htb [deleted file]
net/wshaper/files/wshaper.iface [deleted file]
net/wshaper/files/wshaper.init [deleted file]
net/xl2tpd/Makefile
net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch [new file with mode: 0644]
net/znc/Makefile
net/znc/patches/100-move_rootcheck_after_config.patch
net/znc/patches/103-Csocket-Add-some-ifdef-feature-checks.patch [deleted file]
net/znc/patches/104-disable-empty-modules-check.patch
utils/collectd/Makefile
utils/collectd/patches/003-remove-werror.patch [deleted file]
utils/collectd/patches/100-rrdtool-add-rrasingle-option.patch
utils/collectd/patches/140-fix-fqdnlookup.patch
utils/collectd/patches/200-fix-git-describe-error.patch [deleted file]
utils/collectd/patches/300-delay-first-read-cycle.patch
utils/collectd/patches/400-fix-olsrd-get-all.patch
utils/collectd/patches/600-fix-libmodbus-detection.patch
utils/collectd/patches/700-disable-sys-capability-check.patch [new file with mode: 0644]
utils/collectd/patches/900-add-iwinfo-plugin.patch
utils/collectd/patches/920-fix-ping-droprate.patch
utils/cryptodev-linux/Makefile
utils/hfsprogs/patches/0001-Create-short-Makefiles-for-Debian.patch
utils/irqbalance/Makefile [new file with mode: 0644]
utils/irqbalance/patches/100-disable-ui-compilation.patch [new file with mode: 0644]
utils/irqbalance/patches/200-avoid-glib.patch [new file with mode: 0644]
utils/joe/Makefile
utils/luci-app-lxc/Makefile [deleted file]
utils/luci-app-lxc/files/controller/lxc.lua [deleted file]
utils/luci-app-lxc/files/lxc.config [deleted file]
utils/luci-app-lxc/files/model/cbi/lxc.lua [deleted file]
utils/luci-app-lxc/files/view/lxc.htm [deleted file]
utils/luci-app-lxc/files/www/luci-static/resources/cbi/green.gif [deleted file]
utils/luci-app-lxc/files/www/luci-static/resources/cbi/purple.gif [deleted file]
utils/luci-app-lxc/files/www/luci-static/resources/cbi/red.gif [deleted file]
utils/openocd/Makefile
utils/pcmciautils/Makefile [new file with mode: 0644]
utils/pcmciautils/files/etc/hotplug.d/pcmcia/pcmcia.agent [new file with mode: 0644]
utils/pcmciautils/files/etc/hotplug.d/pcmcia_socket/pcmcia_socket.agent [new file with mode: 0644]
utils/pcmciautils/files/etc/init.d/pcmcia [new file with mode: 0755]
utils/pcmciautils/files/etc/init.d/pcmcia_socket [new file with mode: 0755]
utils/pcmciautils/patches/001-switch_unsigned.patch [new file with mode: 0644]
utils/pcmciautils/patches/002-disable_yywrap.patch [new file with mode: 0644]
utils/rng-tools/files/rngd.init
utils/tree/Makefile [new file with mode: 0644]
utils/ttyd/Makefile
utils/vim/Makefile
utils/vim/patches/001-compile.patch [deleted file]

index 022ef8b9ac9ec14e5ec8787c52f1b30c8446b103..7659080c1f8f3240d89196b21404e3880d99b4b9 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netdata
-PKG_VERSION:=1.4.0
-PKG_RELEASE:=3
+PKG_VERSION:=1.5.0
+PKG_RELEASE:=1
 PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://firehol.org/download/netdata/releases/v$(PKG_VERSION)
-PKG_SOURCE_VERSION:=3028b87ee19e8550df6b9decc49733d595e0bd6e
+PKG_SOURCE_URL:=https://github.com/firehol/netdata/releases/download/v$(PKG_VERSION)
+PKG_SOURCE_VERSION:=c5f8cecf83a7ed8880003b66614c71f7b2bff5b594f412262ec85143ca44adae
 
 PKG_INSTALL:=1
 PKG_FIXUP:=autoreconf
@@ -47,6 +47,8 @@ define Package/netdata/install
        mkdir -p $(1)/usr/share/netdata
        $(CP) $(PKG_INSTALL_DIR)/usr/share/netdata $(1)/usr/share
        rm $(1)/usr/share/netdata/web/images/animated.gif
+       rm -rf $(1)/usr/share/netdata/web/images/seo-*.png
+       rm -rf $(1)/usr/share/netdata/web/images/post.png
        rm -rf $(1)/usr/share/netdata/web/old
        rm $(1)/usr/share/netdata/web/demo*html
        rm $(1)/usr/share/netdata/web/fonts/*.svg
index 8c5c56b8a226607cf6bd87ff43b0db8686e57333..331396eb9ded4436171fba62a1f825dd491a99bf 100644 (file)
-### NetData Configuration
-
-### Notes about plugins
-###
-### charts.d    - REQUIRES Bash, enable here and edit charts.d.conf
-### apps        - none atm
-### node.d      - REQUIRES node.js
-### tc          - QoS stats (if wanted)
-### cgcroups    - No support in OpenWRT/LEDE by default
-### health      - Disabled by default
-### KSM         - No support in OpenWRT/LEDE by default
-### python.d    - REQUIRES python and PyYAML, edit python.d.conf to enable
+# netdata configuration
+#
+# You can download the latest version of this file, using:
+#
+#  wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
+# or
+#  curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
+#
+# You can uncomment and change any of the options below.
+# The value shown in the commented settings, is the default value.
+#
+# Notes about plugins
+#
+# tc          - QoS stats (if wanted)
+# cgcroups    - No support in OpenWRT/LEDE by default
+# charts.d    - REQUIRES bash, enable here and edit charts.d.conf
+# node.d      - REQUIRES node.js
+# python.d    - REQUIRES python and PyYAML, edit python.d.conf to enable
+# apps        - none atm
+# health      - Disabled by default
+# KSM         - No support in OpenWRT/LEDE by default
+
+# global netdata configuration
 
 [global]
-       run as user = nobody
-       web files owner = root
-       web files group = root
-       update every = 2
-       history = 1800
-       access log = none
+       # glibc malloc arena max for plugins = 1
+       # glibc malloc arena max for netdata = 1
+       # config directory = /etc/netdata
+       # plugins directory = /usr/libexec/netdata/plugins.d
+       # web files directory = /usr/share/netdata/web
+       # cache directory = /var/cache/netdata
+       # lib directory = /var/lib/netdata
+       # log directory = /var/log/netdata
+       # host access prefix = 
+       # home directory = /var/cache/netdata
+       # debug flags = 0x00000000
+       memory deduplication (ksm) = no
        debug log = syslog
        error log = syslog
+       access log = none
+       # errors flood protection period = 1200
+       # errors to trigger flood protection = 200
        memory mode = ram
+       # hostname = LEDE
+       # history = 3600
+       # update every = 1
+       update every = 2
+       # pthread stack size = 8388608
+       run as user = nobody
+       web files owner = root
+       web files group = root
+       # http port listen backlog = 100
+       # default port = 19999
+       # bind to = *
+       # multi threaded web server = yes
+       # disconnect idle web clients after seconds = 60
+       # respect web browser do not track policy = no
+       enable web responses gzip compression = no
+       # web compression strategy = default
+       # web compression level = 3
 
 [plugins]
-       charts.d = no
-       apps = no
-       node.d = no
+       # PATH environment variable = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
        tc = no
+       # idlejitter = yes
+       # proc = yes
+       # diskspace = yes
        cgroups = no
+       # checks = no
+       # plugins directory = /usr/libexec/netdata/plugins.d
+       enable running new plugins = no
+       # check for new plugins every = 60
+       charts.d = no
+       # plugins directory = /usr/libexec/netdata/plugins.d
+       node.d = no
+       python.d = no
+       apps = no
+       fping = no
+
+[registry]
+       # enabled = no
+       # registry db directory = /var/lib/netdata/registry
+       # netdata unique id file = /var/lib/netdata/registry/netdata.public.unique.id
+       # registry db file = /var/lib/netdata/registry/registry.db
+       # registry log file = /var/lib/netdata/registry/registry-log.db
+       # registry save db every new entries = 1000000
+       # registry expire idle persons days = 365
+       # registry domain = 
+       # registry to announce = https://registry.my-netdata.io
+       # registry hostname = LEDE
+       # verify browser cookies support = yes
+       # max URL length = 1024
+       # max URL name length = 50
 
 [health]
        enabled = no
+       # health db directory = /var/lib/netdata/health
+       # health db file = /var/lib/netdata/health/health-log.db
+       # health configuration directory = /etc/netdata/health.d
+       # script to execute on alarm = /usr/libexec/netdata/plugins.d/alarm-notify.sh
+       # in memory max health log entries = 1000
+       # run at least every seconds = 10
+       # rotate log every lines = 2000
+
+[backend]
+       # enabled = no
+       # data source = average
+       # type = graphite
+       # destination = localhost
+       # prefix = netdata
+       # hostname = LEDE
+       # update every = 10
+       # buffer on failures = 10
+       # timeout ms = 20000
+
+# per plugin configuration
+
+[plugin:fping]
+       # update every = 1
+       # command options = 
 
 [plugin:proc]
-       /proc/net/softnet_stat = no
-       /proc/net/snmp = no
+       # netdata server resources = yes
+       # /proc/stat = yes
+       # /proc/uptime = yes
+       # /proc/loadavg = yes
+       # /proc/sys/kernel/random/entropy_avail = yes
+       # /proc/interrupts = yes
+       # /proc/softirqs = yes
+       # /proc/vmstat = yes
+       # /proc/meminfo = yes
        /sys/kernel/mm/ksm = no
+       /sys/devices/system/edac/mc = no
+       /sys/devices/system/node = no
+       # /proc/net/dev = yes
        /proc/net/netstat = no
-       /proc/net/ip_vs_stats = no
+       /proc/net/snmp = no
+       /proc/net/snmp6 = no
+       /proc/net/softnet_stat = no
+       /proc/net/ip_vs/stats = no
+       # /proc/net/stat/conntrack = yes
        /proc/net/stat/synproxy = no
+       # /proc/diskstats = yes
        /proc/net/rpc/nfsd = no
        /proc/net/rpc/nfs = no
+       # ipc = yes
+
+[plugin:proc:/proc/stat]
+       # cpu utilization = yes
+       # per cpu core utilization = yes
+       # cpu interrupts = yes
+       # context switches = yes
+       # processes started = yes
+       # processes running = yes
+       # filename to monitor = /proc/stat
+
+[plugin:proc:/proc/interrupts]
+       # interrupts per core = yes
+       # filename to monitor = /proc/interrupts
+
+[plugin:proc:/proc/softirqs]
+       # interrupts per core = yes
+       # filename to monitor = /proc/softirqs
+
+[plugin:proc:/proc/net/dev]
+       # enable new interfaces detected at runtime = auto
+       # bandwidth for all interfaces = auto
+       # packets for all interfaces = auto
+       # errors for all interfaces = auto
+       # drops for all interfaces = auto
+       # fifo for all interfaces = auto
+       # compressed packets for all interfaces = auto
+       # frames, collisions, carrier counters for all interfaces = auto
+       # disable by default interfaces matching = lo fireqos* *-ifb
+       # filename to monitor = /proc/net/dev 
+
+[plugin:proc:/proc/net/dev:eth0]
+       # enabled = yes
+       # bandwidth = auto
+       # packets = auto
+       # errors = auto
+       # drops = auto
+       # fifo = auto
+       # compressed = auto
+       # events = auto
+
+[plugin:proc:/proc/diskstats]
+       # enable new disks detected at runtime = yes
+       # performance metrics for physical disks = auto
+       # performance metrics for virtual disks = auto
+       # performance metrics for partitions = no
+       # bandwidth for all disks = auto
+       # operations for all disks = auto
+       # merged operations for all disks = auto
+       # i/o time for all disks = auto
+       # queued operations for all disks = auto
+       # utilization percentage for all disks = auto
+       # backlog for all disks = auto
+       # filename to monitor = /proc/diskstats
+       # path to get block device infos = /sys/dev/block/%lu:%lu/%s
+       # path to get h/w sector size = /sys/block/%s/queue/hw_sector_size
+       # path to get h/w sector size for partitions = /sys/dev/block/%lu:%lu/subsystem/%s/../queue/hw_sector_size
+       # performance metrics for disks with major 8 = yes
+
+[plugin:proc:/proc/diskstats:sda]
+       # enable = yes
+       # enable performance metrics = yes
+       # bandwidth = auto
+       # operations = auto
+       # merged operations = auto
+       # i/o time = auto
+       # queued operations = auto
+       # utilization percentage = auto
+       # backlog = auto
+
+[plugin:proc:/proc/net/rpc/nfsd]
+       # filename to monitor = /proc/net/rpc/nfsd
+       # read cache = yes
+       # file handles = yes
+       # I/O = yes
+       # threads = yes
+       # read ahead = yes
+       # network = yes
+       # rpc = yes
+       # NFS v2 procedures = yes
+       # NFS v3 procedures = yes
+       # NFS v4 procedures = yes
+       # NFS v4 operations = yes
+
+[plugin:proc:/proc/net/rpc/nfs]
+       # filename to monitor = /proc/net/rpc/nfs
+       # network = yes
+       # rpc = yes
+       # NFS v2 procedures = yes
+       # NFS v3 procedures = yes
+       # NFS v4 procedures = yes
index cf9dc83ec5b40d61b1b60b36a0c995996d76fa66..629789247e9ee87062368f8cfa0c2a060a8e0122 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/conf.d/charts.d.conf b/conf.d/charts.d.conf
-index acb2a6f..8111859 100644
 --- a/conf.d/charts.d.conf
 +++ b/conf.d/charts.d.conf
 @@ -30,7 +30,7 @@
@@ -11,8 +9,6 @@ index acb2a6f..8111859 100644
  
  # BY DEFAULT ENABLED MODULES
  # ap=yes
-diff --git a/conf.d/python.d.conf b/conf.d/python.d.conf
-index 940bd91..78e2f0a 100644
 --- a/conf.d/python.d.conf
 +++ b/conf.d/python.d.conf
 @@ -7,7 +7,7 @@
index 0486164ef34a189b8659c986f716a89eb2db424b..2264079a7aeb593734e13fa46c335367d77a3934 100644 (file)
@@ -1,14 +1,15 @@
 include  $(TOPDIR)/rules.mk
 
 PKG_NAME:=syslog-ng
-PKG_VERSION:=3.8.1
-PKG_RELEASE:=3
+PKG_VERSION:=3.9.1
+PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/balabit/syslog-ng/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
-PKG_MD5SUM:=acf14563cf5ce435db8db35486ce66af
+PKG_MD5SUM:=1b48da9ef620cf06e55e481b5abb677a
+PKG_HASH:=5678856a550ae790618fabde9d1447f932ce7a9080d55dca8fc5df1202c70a17
 
 PKG_INSTALL:=1
 
@@ -41,7 +42,7 @@ endef
 CONFIGURE_ARGS += \
   $(call autoconf_bool,CONFIG_IPV6,ipv6) \
          --disable-dependency-tracking \
-         --disable-ampq \
+         --disable-amqp \
          --disable-tcp-wrapper \
          --disable-glibtest \
          --disable-mongodb \
diff --git a/admin/syslog-ng/files/custom-logs.conf b/admin/syslog-ng/files/custom-logs.conf
new file mode 100644 (file)
index 0000000..9c8f441
--- /dev/null
@@ -0,0 +1,2 @@
+# place to put customization of logging
+
index 6786bc3269406497f68493001045a89fad114c55..9e09a79e2e943fd8141a57786d1027212eae5049 100644 (file)
@@ -1,4 +1,4 @@
-@version:3.8
+@version:3.9
 
 options {
        chain_hostnames(no);
@@ -14,7 +14,7 @@ options {
 
 source src {
        internal();
-       unix-stream("/dev/log");
+       unix-dgram("/dev/log");
 };
 
 source net {
@@ -35,3 +35,6 @@ log {
         source(kernel);
        destination(messages);
 };
+
+@include "/etc/custom-logs.conf"
+
diff --git a/fonts/dejavu-fonts-ttf/Makefile b/fonts/dejavu-fonts-ttf/Makefile
new file mode 100644 (file)
index 0000000..76bb48c
--- /dev/null
@@ -0,0 +1,84 @@
+#
+# Copyright (C) 2008-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=dejavu-fonts-ttf
+PKG_VERSION:=2.37
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@SF/dejavu
+PKG_HASH:=fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7
+PKG_LICENSE:=Bitstream-Vera-Fonts-Copyright Arev-Fonts-Copyright Public-Domain 
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Mirko Vogt <mirko-dev@nanl.de>
+
+include $(INCLUDE_DIR)/package.mk
+
+FILES:= \
+       DejaVuSerif-Italic \
+       DejaVuSerifCondensed-Italic \
+       DejaVuSerifCondensed-BoldItalic \
+       DejaVuSerifCondensed-Bold \
+       DejaVuSerifCondensed \
+       DejaVuSerif-BoldItalic \
+       DejaVuSerif-Bold \
+       DejaVuSerif \
+       DejaVuSans-Oblique \
+       DejaVuSansMono-Oblique \
+       DejaVuSansMono-BoldOblique \
+       DejaVuSansMono-Bold \
+       DejaVuSansMono \
+       DejaVuSans-ExtraLight \
+       DejaVuSansCondensed-Oblique \
+       DejaVuSansCondensed-BoldOblique \
+       DejaVuSansCondensed-Bold \
+       DejaVuSansCondensed \
+       DejaVuSans-BoldOblique \
+       DejaVuSans-Bold \
+       DejaVuSans \
+       DejaVuMathTeXGyre
+
+define PartGen
+define Package/dejavu-fonts-ttf-$(1)
+$(call Package/dejavu-fonts-ttf/Default)
+  TITLE:=$(1)
+endef
+endef
+
+define Package/dejavu-fonts-ttf/Default
+  TITLE:=dejavu-fonts-ttf
+  SECTION:=fonts
+  CATEGORY:=Fonts
+  SUBMENU:=DejaVu
+  URL:=http://dejavu.sourceforge.net/
+endef
+
+$(foreach file,$(FILES),$(eval $(call PartGen,$(file))))
+
+define Build/Compile
+       true
+endef
+
+define Build/Configure
+       true
+endef
+
+define PartInstall
+define Package/dejavu-fonts-ttf-$(1)/install
+       $(INSTALL_DIR) \
+               $$(1)/usr/share/fonts/ttf-dejavu
+
+       $(INSTALL_DATA) \
+               $(PKG_BUILD_DIR)/ttf/$(1).ttf \
+               $$(1)/usr/share/fonts/ttf-dejavu/
+endef
+endef
+
+$(foreach file,$(FILES),$(eval $(call PartInstall,$(file))))
+
+$(foreach file,$(FILES),$(eval $(call BuildPackage,dejavu-fonts-ttf-$(file))))
index 414e342214078cda55f9d82e26d231a680b9acc7..9cbceaf6a2b7fff6e846bd49816abb9d5f9d6b94 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-compressor
-PKG_VERSION:=2.1
+PKG_VERSION:=2.1.1
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=django_compressor-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/23/46/2c7d582255969ad5259937f5f9e14aec1f3349d0fc0651129330918d1c6d/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/38/58/03098a826062b856956c7169a8f778ec2b8e2767ddc63da0629062df5621/
 PKG_BUILD_DIR:=$(BUILD_DIR)/django_compressor-$(PKG_VERSION)/
-PKG_MD5SUM:=21ecfe4e8615eae64f7068a5599df9af
+PKG_MD5SUM:=5e74141076b70272149ed07e6ce0ea56
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 11dd2e2156a93153f76aebc3cf645cf52b96c8f5..623cd4cf637ff183beac6cedc6094b2309bfffd3 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-constance
-PKG_VERSION:=1.2
+PKG_VERSION:=1.3.4
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/0a/ff/1c1caae2b7be9c26f2aee0703236998e22cf5557fa56726347b5afa149d1/
-PKG_MD5SUM:=f9f8e527df50b0a1533149d9be0b814b
+PKG_SOURCE_URL:=https://pypi.python.org/packages/0c/19/74c6bbf29a7882bab377db7a4ca30b43e09173dc1e6cabe163dc8d6a3931/
+PKG_MD5SUM:=2e197701ed93082e5fa41df0f4742294
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 5ae6956700945a1ac20227047da99409b42c3b4b..bdf2ebe2c1ff44082e0a3d9ee4de0b74edd939f0 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-restframework
-PKG_VERSION:=3.3.3
+PKG_VERSION:=3.5.4
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=djangorestframework-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/d/djangorestframework/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/e9/24/86dfe19fb82a40a3d7a4c50371a8bd85b9277d3506698bf332a6d41d08f6/
 PKG_BUILD_DIR:=$(BUILD_DIR)/djangorestframework-$(PKG_VERSION)
-PKG_MD5SUM:=6f5ee9646e7fa87dad4385d3c7e7678d
+PKG_MD5SUM:=979808c387dad8d0ebb6025c39dc7b94
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 5d94774c2149d22aef2e7105fc38acb89eba4f27..da519be7ac01e3eb17e3c8644354ddd0ccdfff05 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-statici18n
-PKG_VERSION:=1.2.1
+PKG_VERSION:=1.3.0
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/72/76/6ee13019e1691bff6b759136068ee77fcc2982b700135caa134030937b28/
-PKG_MD5SUM:=67cac19909dd3272ae1fc73ad8d1dca3
+PKG_SOURCE_URL:=https://pypi.python.org/packages/86/6b/2c2e86a7e144ba7b064119eaafb2c8c67665c2a0e722f0819daa9657e551/
+PKG_MD5SUM:=61e22a6f2399f9f829308e4d91b36ee0
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index c932cc1c4c99e281434d275cac4ba1c7fc0a0c71..d208e18ae5bc39becca81b4b508ba5ccef57338d 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django
-PKG_VERSION:=1.8.12
+PKG_VERSION:=1.8.17
 PKG_RELEASE=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/django/django.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=c168aeba175dbb92c615460a360cb1ea978de5d3
+PKG_SOURCE_VERSION:=d3d12fc11da56e4ea8af37a22a9a0aa6579ab2d5
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_BUILD_DEPENDS:=python python-setuptools
 
diff --git a/lang/luv/Config.in b/lang/luv/Config.in
new file mode 100644 (file)
index 0000000..076473f
--- /dev/null
@@ -0,0 +1,11 @@
+menu "Configuration"
+       depends on PACKAGE_luv
+
+config LUV_USE_LUAJIT_ENGINE
+       bool "Use luajit engine"
+       select PACKAGE_luajit
+       help
+               If selected, luv will be compiled against luajit. If not selected, luv will use Lua as engine.
+       default n
+
+endmenu
diff --git a/lang/luv/Makefile b/lang/luv/Makefile
new file mode 100644 (file)
index 0000000..a0057f1
--- /dev/null
@@ -0,0 +1,61 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=luv
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/luvit/luv.git
+PKG_SOURCE_VERSION:=1.9.1-1
+PKG_SOURCE_DATE:=2016-12-16
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_USE_MIPS16:=0
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/luv
+  SUBMENU:=Lua
+  SECTION:=lang
+  CATEGORY:=Languages
+  TITLE:=Luv
+  URL:=https://github.com/luvit/luv
+  MAINTAINER:=Morteza Milani <milani@pichak.co>
+  DEPENDS:=+libuv +!LUV_USE_LUAJIT_ENGINE:lua
+endef
+
+define Package/luv/description
+  Bare libuv bindings for lua
+endef
+
+define Package/luv/config
+       source "$(SOURCE)/Config.in"
+endef
+
+CMAKE_OPTIONS += -DLUA_BUILD_TYPE=System
+CMAKE_OPTIONS += -DWITH_SHARED_LIBUV=ON
+CMAKE_OPTIONS += -DBUILD_MODULE=OFF
+CMAKE_OPTIONS += -DBUILD_SHARED_LIBS=ON
+
+ifeq ($(CONFIG_LUV_USE_LUAJIT_ENGINE),y)
+       CMAKE_OPTIONS += -DWITH_LUA_ENGINE=Luajit
+else
+       CMAKE_OPTIONS += -DWITH_LUA_ENGINE=Lua
+endif
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include/luv
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/luv/*.h $(1)/usr/include/luv
+       $(INSTALL_DIR) $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
+endef
+
+define Package/luv/install
+       $(INSTALL_DIR) $(1)/usr/lib/lua
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libluv.so.1.9.1 $(1)/usr/lib/lua/luv.so
+endef
+
+
+$(eval $(call BuildPackage,luv))
index 2f3fc61808ff9f0042cff57b57d9e7ab3f39b97f..989506ae9293a9b343b7e2b5c719cd5d9f1ed32f 100644 (file)
@@ -42,13 +42,12 @@ define Package/micropython-lib/description
 endef
 
 MAKE_FLAGS:=\
-       -C $(PKG_BUILD_DIR) \
-       PREFIX=$(PKG_BUILD_DIR)/_install_tmp \
+       PREFIX=$(PKG_BUILD_DIR)/_install_tmp/dist \
        install
 
 define Package/micropython-lib/install
        $(INSTALL_DIR) $(1)/usr/lib/micropython
-       $(CP) $(PKG_BUILD_DIR)/_install_tmp/* $(1)/usr/lib/micropython
+       $(CP) $(PKG_BUILD_DIR)/_install_tmp/dist/* $(1)/usr/lib/micropython
 endef
 
 $(eval $(call BuildPackage,micropython-lib))
index 6656d56e560ad1983b181ce91fb2538cc43b0888..ccfcae5072a868e3544fd7a85f10711f1d46c2f7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openpyxl
-PKG_VERSION:=2.4.0
+PKG_VERSION:=2.4.2
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/7e/75/9bb309f80e4f75d139ecc55e9edf65c5844336b5a84966a609267255f961/
-PKG_MD5SUM:=e3376d1fce0681fd0b4047ab89218af4
+PKG_SOURCE_URL:=https://pypi.python.org/packages/56/c6/a2a7c36196e4732acceca093ce5961db907f5a855b557d6a727a7f59b8b4/
+PKG_MD5SUM:=28b6b5f74f01e6249e8c7f526c57a2e7
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index b6d15fd6a9fa1213925e122ef79b371507559894..aa16f500c7f7e2b34069afb5e870cdb558385635 100644 (file)
@@ -9,14 +9,22 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cffi
 PKG_VERSION:=1.8.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/0a/f3/686af8873b70028fccf67b15c78fd4e4667a3da995007afc71e786d61b0a
-PKG_MD5SUM:=c8e877fe0426a99d0cf5872cf2f95b27
+PKG_HASH:=c321bd46faa7847261b89c0469569530cad5a41976bb6dba8202c0159f476568
 
-PKG_BUILD_DEPENDS:=python python-setuptools
-HOST_BUILD_DEPENDS:=libffi/host python/host python-setuptools/host python-pycparser/host
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=libffi/host python-pycparser/host
+ifdef CONFIG_PACKAGE_python-cffi
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-cffi
+HOST_BUILD_DEPENDS+=python3/host
+endif
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
@@ -25,28 +33,56 @@ PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
-$(call include_mk, python-host.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-cffi/Default
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=Python
+  URL:=http://cffi.readthedocs.org/
+  DEPENDS:=+libffi
+endef
 
 define Package/python-cffi
-       SECTION:=lang
-       CATEGORY:=Languages
-       SUBMENU:=Python
-       TITLE:=python-cffi
-       URL:=http://cffi.readthedocs.org/
-       DEPENDS:=+libffi +python-light +python-pycparser
+$(call Package/python-cffi/Default)
+  TITLE:=python-cffi
+  DEPENDS+=+python-light +python-pycparser
+  VARIANT:=python
+endef
+
+define Package/python3-cffi
+$(call Package/python-cffi/Default)
+  TITLE:=python3-cffi
+  DEPENDS+=+python3-light +python3-pycparser
+  VARIANT:=python3
 endef
 
 define Package/python-cffi/description
 Foreign Function Interface for Python calling C code.
 endef
 
-define Build/Compile
-       $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+define Package/python3-cffi/description
+$(call Package/python-cffi/description)
+.
+(Variant for Python3)
 endef
 
-define Host/Compile
+ifdef CONFIG_PACKAGE_python-cffi
+define Host/Compile/python-cffi
        $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
 endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-cffi
+define Host/Compile/python3-cffi
+       $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-cffi)
+$(call Host/Compile/python3-cffi)
+endef
 
 define Host/Install
 endef
@@ -55,3 +91,6 @@ $(eval $(call HostBuild))
 
 $(eval $(call PyPackage,python-cffi))
 $(eval $(call BuildPackage,python-cffi))
+
+$(eval $(call Py3Package,python3-cffi))
+$(eval $(call BuildPackage,python3-cffi))
index c0d25b8cf4a39dccc4a30a14160cc1439a691084..2e859914a32c46a784d7ecb851b71eb2c4d404a2 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-dateutil
-PKG_VERSION:=2.5.2
-PKG_RELEASE:=2
+PKG_VERSION:=2.6.0
+PKG_RELEASE:=1
 PKG_LICENSE:=BSD-2-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/p/python-dateutil/
-PKG_MD5SUM:=eafe168e8f404bf384514f5116eedbb6
+PKG_SOURCE_URL:=https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6/
+PKG_MD5SUM:=6e38f91e8c94c15a79ce22768dfeca87
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 8def134a741e8a8fc2e3875c2b106ee05e799ac2..dae5316326cbf7ac1320eb7be4c6931022453afe 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2016 OpenWrt.org
+# Copyright (C) 2016-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-ldap
-PKG_VERSION:=2.4.25
+PKG_VERSION:=2.4.32
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
 PKG_LICENSE:=Python-style
 PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/$(PKG_NAME)
-PKG_MD5SUM:=21523bf21dbe566e0259030f66f7a487
+PKG_SOURCE_URL:=https://pypi.python.org/packages/67/d9/fa0ea70d1792875745116ad62ac8d4bcb07550b15cded591bb57df6a6d9a
+PKG_MD5SUM:=7c46c8a04acc227a778c7900c87cdfc7
 
 PKG_BUILD_DEPENDS:=python libopenldap
 
index 4164ba891d8e75879f4cb8e9678d6464da94d264..c89500df93f366ca3e2920235b346610b3bf4e96 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-pcapy
-PKG_VERSION:=0.10.10
+PKG_VERSION:=0.11.1
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Andrew McConachie <andrew@depht.com>
 PKG_LICENSE:=Apache-1.1
@@ -16,7 +16,7 @@ PKG_LICENSE:=Apache-1.1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/CoreSecurity/pcapy.git
-PKG_SOURCE_VERSION:=37179f5b6187ec58d3ba11ef7b24e3c341cbabbb
+PKG_SOURCE_VERSION:=b91a418374d1636408c435f11799ef725ef70097
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 
 PKG_BUILD_DEPENDS:=python python-setuptools
index 0b0e5537f35b1fd7b50e316716453c364faf6a90..61b34a312640f0f00a3e9c1f0033e24b706fbbc5 100644 (file)
@@ -9,14 +9,22 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ply
 PKG_VERSION:=3.9
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.dabeaz.com/ply
-PKG_MD5SUM:=c5c5767376eff902617fd9874f0c76b7
+PKG_HASH:=0d7e2940b9c57151392fceaa62b0865c45e06ce1e36687fd8d03f011a907f43e
 
-PKG_BUILD_DEPENDS:=python python-setuptools
-HOST_BUILD_DEPENDS:=python/host python-setuptools/host
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=
+ifdef CONFIG_PACKAGE_python-ply
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-ply
+HOST_BUILD_DEPENDS+=python3/host
+endif
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=README.md
@@ -25,15 +33,27 @@ PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
-$(call include_mk, python-host.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-ply/Default
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=Python
+  URL:=http://www.dabeaz.com/ply/
+endef
 
 define Package/python-ply
-       SECTION:=lang
-       CATEGORY:=Languages
-       SUBMENU:=Python
-       TITLE:=python-ply
-       URL:=http://www.dabeaz.com/ply/
-       DEPENDS:=+python-light
+$(call Package/python-ply/Default)
+  TITLE:=python-ply
+  DEPENDS:=+python-light
+  VARIANT:=python
+endef
+
+define Package/python3-ply
+$(call Package/python-ply/Default)
+  TITLE:=python3-ply
+  DEPENDS:=+python3-light
+  VARIANT:=python3
 endef
 
 define Package/python-ply/description
@@ -41,13 +61,28 @@ PLY is a 100% Python implementation of the common parsing tools lex
 and yacc.
 endef
 
-define Build/Compile
-       $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+define Package/python3-ply/description
+$(call Package/python-ply/description)
+.
+(Variant for Python3)
 endef
 
-define Host/Compile
+ifdef CONFIG_PACKAGE_python-ply
+define Host/Compile/python-ply
        $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
 endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-ply
+define Host/Compile/python3-ply
+       $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-ply)
+$(call Host/Compile/python3-ply)
+endef
 
 define Host/Install
 endef
@@ -56,3 +91,6 @@ $(eval $(call HostBuild))
 
 $(eval $(call PyPackage,python-ply))
 $(eval $(call BuildPackage,python-ply))
+
+$(eval $(call Py3Package,python3-ply))
+$(eval $(call BuildPackage,python3-ply))
index cf7ada88d05746ad5e770020d89acb7ccc82196b..96817a4a3b4bf19e956d285b1834a4fe4ac738eb 100644 (file)
@@ -19,7 +19,7 @@ PKG_SOURCE_URL:=http://initd.org/psycopg/tarballs/PSYCOPG-2-6/
 PKG_MD5SUM:=4a392949ba31a378a18ed3e775a4693f
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/psycopg2-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python libpq python-setuptools
+PKG_BUILD_DEPENDS:=python libpq python/host
 
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
index 37e6c8403883d5385dc5ea4f2560e7aea0b61310..d151eb1cc2c416d882cbf97723b197c242d72bb0 100644 (file)
@@ -9,14 +9,22 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pycparser
 PKG_VERSION:=2.14
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
-PKG_MD5SUM:=a2bc8d28c923b4fe2b2c3b4b51a4f935
+PKG_HASH:=7959b4a74abdc27b312fed1c21e6caf9309ce0b29ea86b591fd2e99ecdf27f73
 
-PKG_BUILD_DEPENDS:=python python-setuptools
-HOST_BUILD_DEPENDS:=python/host python-setuptools/host python-ply/host
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=python-ply/host
+ifdef CONFIG_PACKAGE_python-pycparser
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-pycparser
+HOST_BUILD_DEPENDS+=python3/host
+endif
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
@@ -25,15 +33,27 @@ PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
-$(call include_mk, python-host.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-pycparser/Default
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=Python
+  URL:=https://github.com/eliben/pycparser
+endef
 
 define Package/python-pycparser
-       SECTION:=lang
-       CATEGORY:=Languages
-       SUBMENU:=Python
-       TITLE:=python-pycparser
-       URL:=https://github.com/eliben/pycparser
-       DEPENDS:=+python-light +python-ply
+$(call Package/python-pycparser/Default)
+  TITLE:=python-pycparser
+  DEPENDS:=+python-light +python-ply
+  VARIANT:=python
+endef
+
+define Package/python3-pycparser
+$(call Package/python-pycparser/Default)
+  TITLE:=python3-pycparser
+  DEPENDS:=+python3-light +python3-ply
+  VARIANT:=python3
 endef
 
 define Package/python-pycparser/description
@@ -42,13 +62,28 @@ module designed to be easily integrated into applications that need to parse
 C source code.
 endef
 
-define Build/Compile
-       $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+define Package/python3-pycparser/description
+$(call Package/python-pycparser/description)
+.
+(Variant for Python3)
 endef
 
-define Host/Compile
+ifdef CONFIG_PACKAGE_python-pycparser
+define Host/Compile/python-pycparser
        $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
 endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-pycparser
+define Host/Compile/python3-pycparser
+       $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-pycparser)
+$(call Host/Compile/python3-pycparser)
+endef
 
 define Host/Install
 endef
@@ -57,3 +92,6 @@ $(eval $(call HostBuild))
 
 $(eval $(call PyPackage,python-pycparser))
 $(eval $(call BuildPackage,python-pycparser))
+
+$(eval $(call Py3Package,python3-pycparser))
+$(eval $(call BuildPackage,python3-pycparser))
index 5af33c632918e4a5f2d308b2111e7447ef7b9e67..e55c7ed3d4d999e620b171eb1cd3bc60914f26f5 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-urllib3
-PKG_VERSION:=1.19
+PKG_VERSION:=1.20
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=urllib3-$(PKG_VERSION).tar.gz
 PKG_BUILD_DIR:=$(BUILD_DIR)/urllib3-$(PKG_VERSION)/
-PKG_SOURCE_URL:=https://pypi.python.org/packages/08/37/48b443a36af9eda6274f673b70a9140c13e2409edb2ef20b2d8a620efef5/
-PKG_MD5SUM:=4aa7c6c310cd938683e9b1831e110bac
+PKG_SOURCE_URL:=https://pypi.python.org/packages/20/56/a6aa403b0998f857b474a538343ee483f5c02491bd1aebf61d42a3f60f77/
+PKG_MD5SUM:=34691d4e7e20a8e9cdb452ea24fc38e7
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index dbbffbcc09baece931905e02939b5d3f20691d97..8dd0d6c79a261956cb9344f434de7c6ebf79d819 100644 (file)
@@ -8,6 +8,7 @@
 define Package/python-pip
 $(call Package/python/Default)
   TITLE:=Python $(PYTHON_VERSION) pip module
+  VERSION:=$(PYTHON_PIP_VERSION)
   DEPENDS:=+python +python-setuptools +python-pip-conf
 endef
 
index 7025ebbc0b824f225164dc091218dacb45ceccf5..48823731e3ac271193a0da0678f08abc91ab62f0 100644 (file)
@@ -8,6 +8,7 @@
 define Package/python-setuptools
 $(call Package/python/Default)
   TITLE:=Python $(PYTHON_VERSION) setuptools module
+  VERSION:=$(PYTHON_SETUPTOOLS_VERSION)
   DEPENDS:=+python
 endef
 
index 847eaf5c729269c61de360f46b93586b96c4d836..b31a1d5a873bb6fbd5b169fac1c5da866f361fa4 100644 (file)
@@ -8,3 +8,6 @@
 PYTHON_VERSION:=2.7
 PYTHON_VERSION_MICRO:=13
 
+PYTHON_SETUPTOOLS_VERSION:=28.8.0
+PYTHON_PIP_VERSION:=9.0.1
+
diff --git a/lang/python/patches/011-remove-setupterm-definition.patch b/lang/python/patches/011-remove-setupterm-definition.patch
new file mode 100644 (file)
index 0000000..e55d708
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
+index e478a57..eb297b4 100644
+--- a/Modules/_cursesmodule.c
++++ b/Modules/_cursesmodule.c
+@@ -117,7 +117,6 @@ char *PyCursesVersion = "2.2";
+     #defines many common symbols (such as "lines") which breaks the
+     curses module in other ways.  So the code will just specify
+     explicit prototypes here. */
+-extern int setupterm(char *,int,int *);
+ #ifdef __sgi
+ #include <term.h>
+ #endif
index b69d851749c1b86eaaff18481b0eaae193d81ed1..93e959e41b66efba36121f46b4ff6412753db9ea 100644 (file)
@@ -8,16 +8,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python3-bottle
-PKG_VERSION:=0.12.8
+PKG_VERSION:=0.12.12
 PKG_RELEASE:=1
 
 PKG_LICENSE:=MIT
 PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
 
-PKG_SOURCE:=$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/bottlepy/bottle/archive
-PKG_MD5SUM:=50a6ebada59391e8d01b2bd2ec52f05b
+PKG_SOURCE:=bottle-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/f7/dd/8ceaa148eeed5371a83fa1fb5a54b01dfc95000799c649924ece23f9f0e1/
+PKG_MD5SUM:=3d4b6b0e22f67b421c273105b30d9a21fd147eaf0c1576172378ee034fbf5313
 PKG_BUILD_DIR:=$(BUILD_DIR)/bottle-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
 
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python3-package.mk)
index a42c27c9d66e6bf298cf35960ed9bb3a8580d324..0bd54aac8133bdaf5a9e36fb765552642133731d 100644 (file)
@@ -8,6 +8,7 @@
 define Package/python3-pip
 $(call Package/python3/Default)
   TITLE:=Python $(PYTHON3_VERSION) pip module
+  VERSION:=$(PYTHON3_PIP_VERSION)
   DEPENDS:=+python3 +python3-setuptools +python-pip-conf
 endef
 
index 063acb80e448896c5730ba8da9915308351ca596..52d56e9ed6ae60e520e053527863a22379363008 100644 (file)
@@ -8,6 +8,7 @@
 define Package/python3-setuptools
 $(call Package/python3/Default)
   TITLE:=Python $(PYTHON3_VERSION) setuptools module
+  VERSION:=$(PYTHON3_SETUPTOOLS_VERSION)
   DEPENDS:=+python3
 endef
 
index 08a130f12aa478077c993f25ef345339bb3ca3bd..3715c57a258df71bdef71dec523b982fde3ac52c 100644 (file)
@@ -11,3 +11,6 @@ PYTHON3_VERSION_MICRO:=0
 
 PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
 
+PYTHON3_SETUPTOOLS_VERSION:=28.8.0
+PYTHON3_PIP_VERSION:=9.0.1
+
diff --git a/lang/python3/patches/011-fix-ncursesw-definition-colisions.patch b/lang/python3/patches/011-fix-ncursesw-definition-colisions.patch
new file mode 100644 (file)
index 0000000..0df72c7
--- /dev/null
@@ -0,0 +1,24 @@
+diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
+index 3bf2ca7..c156964 100644
+--- a/Modules/_cursesmodule.c
++++ b/Modules/_cursesmodule.c
+@@ -116,7 +116,6 @@ char *PyCursesVersion = "2.2";
+     #defines many common symbols (such as "lines") which breaks the
+     curses module in other ways.  So the code will just specify
+     explicit prototypes here. */
+-extern int setupterm(char *,int,int *);
+ #ifdef __sgi
+ #include <term.h>
+ #endif
+diff --git a/setup.py b/setup.py
+index af9a414..ee19ecd 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1349,7 +1349,6 @@ class PyBuildExt(build_ext):
+         panel_library = 'panel'
+         if curses_library == 'ncursesw':
+             curses_defines.append(('HAVE_NCURSESW', '1'))
+-            curses_includes.append('/usr/include/ncursesw')
+             # Bug 1464056: If _curses.so links with ncursesw,
+             # _curses_panel.so must link with panelw.
+             panel_library = 'panelw'
index 45e9c6282bb6db898051f461b0078784d92f64bb..54c281ddd36273d0318f08b998ccc903b337946d 100644 (file)
@@ -18,7 +18,7 @@ include $(INCLUDE_DIR)/target.mk
 PKG_NAME:=boost
 PKG_VERSION:=1.63.0
 PKG_SOURCE_VERSION:=1_63_0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://sourceforge.net/projects/boost/files/boost/$(PKG_VERSION)
diff --git a/libs/boost/patches/02_fix_libc_regression_execution_monitor.patch b/libs/boost/patches/02_fix_libc_regression_execution_monitor.patch
new file mode 100644 (file)
index 0000000..2c7533c
--- /dev/null
@@ -0,0 +1,22 @@
+Index: boost_1_63_0/boost/test/impl/execution_monitor.ipp
+===================================================================
+--- boost_1_63_0.orig/boost/test/impl/execution_monitor.ipp
++++ boost_1_63_0/boost/test/impl/execution_monitor.ipp
+@@ -1375,7 +1375,7 @@ enable( unsigned mask )
+ #endif
+     return ~old_cw & BOOST_FPE_ALL;
+-#elif defined(__GLIBC__) && defined(__USE_GNU)
++#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
+     if (BOOST_FPE_ALL == BOOST_FPE_OFF)
+         /* Not Implemented */
+         return BOOST_FPE_OFF;
+@@ -1415,7 +1415,7 @@ disable( unsigned mask )
+ #endif
+     return ~old_cw & BOOST_FPE_ALL;
+-#elif defined(__GLIBC__) && defined(__USE_GNU)
++#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H)
+     if (BOOST_FPE_ALL == BOOST_FPE_OFF)
+         /* Not Implemented */
+         return BOOST_FPE_INV;
index eb735ee6df62cba27b8ce0ce2bb17e57722c74fe..79341e9b60f6a86fb3154ebd582a0e13b213d66a 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=check
-PKG_VERSION:=0.9.14
-PKG_RELEASE:=2
+PKG_VERSION:=0.11.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/check
-PKG_MD5SUM:=38263d115d784c17aa3b959ce94be8b8
+PKG_SOURCE_URL:=https://github.com/libcheck/check/releases/download/$(PKG_VERSION)
+PKG_HASH:=24f7a48aae6b74755bcbe964ce8bc7240f6ced2141f8d9cf480bc3b3de0d5616
 
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING.LESSER
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
+PKG_MAINTAINER:=Eduardo Abinader <eduardoabinader@gmail.com>
 
 PKG_INSTALL:=1
 
@@ -27,7 +27,7 @@ define Package/check
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=Unit testing framework for C
-  URL:=http://check.sourceforge.net/
+  URL:=https://libcheck.github.io/check/
   DEPENDS:= +libpthread +librt
 endef
 
index b33bdf601e36ae14f3e21d01898ae69749be84b6..1ea27d35d7da109da7befc5bde6534b04bb23ede 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=confuse
-PKG_VERSION:=2.7
+PKG_VERSION:=3.0
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SAVANNAH/confuse
-PKG_MD5SUM:=45932fdeeccbb9ef4228f1c1a25e9c8f
-PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/martinh/libconfuse/releases/download/v$(PKG_VERSION)
+PKG_HASH:=bb75174e02aa8b44fa1a872a47beeea1f5fe715ab669694c97803eb6127cc861
+PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
 PKG_LICENSE:=ISC
 
 PKG_FIXUP:=autoreconf
@@ -25,7 +25,7 @@ define Package/confuse
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=libConfuse is a configuration file parser library
-  URL:=http://www.nongnu.org/confuse/
+  URL:=https://github.com/martinh/libconfuse
 endef
 
 define Package/confuse/description
@@ -51,6 +51,7 @@ CONFIGURE_ARGS += \
        --disable-rpath \
        --without-libiconv-prefix \
        --without-libintl-prefix \
+       --disable-examples
 
 MAKE_FLAGS += \
        -C $(PKG_BUILD_DIR)/src \
index e6634da7fb923014556190291dda2b5642bb2b75..e46e024f5c42e39054ec1df15a4c0b6017d6f5e7 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fftw3
-PKG_VERSION:=3.3.6
+PKG_VERSION:=3.3.6-pl1
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0+
 
 PKG_SOURCE:=fftw-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.fftw.org
-PKG_MD5SUM:=ccd91b5b12bd0a441e100070ff09a310
+PKG_MD5SUM:=682a0e78d6966ca37c7446d4ab4cc2a1
 
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/fftw-$(PKG_VERSION)
 PKG_FIXUP:=autoreconf
index 0123e10fef0af515012a13f4b068a842163ec60c..640c192589fd4bdb87384c21d6ecfd7a62c1f2ec 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnutls
-PKG_VERSION:=3.5.8
+PKG_VERSION:=3.5.9
 PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5
-PKG_MD5SUM:=113e892e51acdb11b81804cd355adfee
+PKG_MD5SUM:=0ab25eb6a1509345dd085bc21a387951
 #PKG_FIXUP:=autoreconf gettext-version
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
 PKG_LICENSE:=LGPLv2.1+
@@ -113,6 +113,7 @@ CONFIGURE_ARGS+= \
        --with-included-unistring \
        --disable-guile \
        --disable-nls \
+       --without-idn \
        --without-zlib \
        --enable-local-libopts \
        --disable-doc \
index d820ff0505141fc888675e74b1cf585d9ad60b6a..58234d415c5491b63c013d46056a78d62180568b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=icu4c
 PKG_VERSION:=58.2
-PKG_RELEASE:=1
+PKG_RELEASE:=5
 
 PKG_SOURCE:=$(PKG_NAME)-58_2-src.tgz
 PKG_SOURCE_URL:=http://download.icu-project.org/files/$(PKG_NAME)/$(PKG_VERSION)
@@ -41,9 +41,13 @@ define Package/icu
 endef
 
 CONFIGURE_CMD:= ./runConfigureICU
-CONFIGURE_VARS:=
 CONFIGURE_ARGS:= \
        Linux/gcc \
+       CC="$(TARGET_CC)" \
+       CXX="$(TARGET_CXX)" \
+       --target=$(GNU_TARGET_NAME) \
+       --host=$(GNU_TARGET_NAME) \
+       --build=$(GNU_HOST_NAME) \
        --disable-debug \
        --enable-release \
        --enable-shared \
@@ -56,7 +60,7 @@ CONFIGURE_ARGS:= \
        --disable-tools \
        --disable-tests \
        --disable-samples \
-       --with-cross-build="$(HOST_BUILD_DIR)" \
+       --with-cross-build="$(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)" \
        --prefix=/usr
 
 HOST_CONFIGURE_CMD:= ./runConfigureICU
@@ -72,34 +76,33 @@ HOST_CONFIGURE_ARGS:= \
        --disable-tracing \
        --disable-extras \
        --enable-dyload \
-       --prefix=$(HOST_BUILD_PREFIX)
+       --prefix=$(STAGING_DIR_HOSTPKG)
 
 define Build/InstallDev
-       $(INSTALL_DIR) \
-               $(1)/usr/include
-
-       $(CP) \
-               $(PKG_INSTALL_DIR)/usr/include/* \
-               $(1)/usr/include/
-
-       $(INSTALL_DIR) \
-               $(1)/usr/lib
-
-       $(CP) \
-               $(PKG_INSTALL_DIR)/usr/lib/* \
-               $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/include
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_DIR) $(2)/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/icu-config $(1)/usr/bin/
+       $(SED) 's,^\(prefix\|execprefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/icu-config
+       $(LN) $(STAGING_DIR)/usr/bin/icu-config $(2)/bin/
 endef
 
-define Host/install
+define Host/Install
+       $(INSTALL_DIR)  $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/config
+       $(INSTALL_DIR)  $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/bin
+       $(INSTALL_DIR)  $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/lib
+       $(INSTALL_DATA) $(HOST_BUILD_DIR)/config/icucross.* $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/config/
+       $(INSTALL_BIN)  $(HOST_BUILD_DIR)/bin/icupkg $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/bin/
+       $(INSTALL_BIN)  $(HOST_BUILD_DIR)/bin/pkgdata $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/bin/
+       $(CP)           $(HOST_BUILD_DIR)/lib/*.so* $(STAGING_DIR_HOSTPKG)/share/icu/$(PKG_VERSION)/lib/
 endef
 
 define Package/icu/install
-       $(INSTALL_DIR) \
-               $(1)/usr/lib
-
-       $(CP) \
-               $(PKG_INSTALL_DIR)/usr/lib/*.so.* \
-               $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
 endef
 
 $(eval $(call BuildPackage,icu))
index d7f52472b803fa0c3e0a0c5465425302a07c66cc..2d20216269886c0f3ba8728ccae0b1f68d396ec5 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libidn
 PKG_VERSION:=1.33
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/libidn
@@ -28,7 +28,7 @@ define Package/idn/Default
   SECTION:=net
   CATEGORY:=Network
   URL:=http://www.gnu.org/software/libidn/
-  MAINTAINER:=Marcel Denia <naoir@gmx.net>
+  MAINTAINER:=Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
 endef
 
 define Package/idn/Default/description
@@ -79,6 +79,8 @@ define Build/InstallDev
        $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libidn.{a,so*} $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libidn.pc $(1)/usr/lib/pkgconfig/
 endef
 
 define Package/idn/install
index e99f2a11f1f5a410e17fe42b3624aac79d894a3e..dcac7c450deaa97caa6cd25ab16eb4242879c5cd 100644 (file)
@@ -11,7 +11,7 @@
  EXTRA_DIST = cfg.mk maint.mk .clcopying
 --- a/configure.ac
 +++ b/configure.ac
-@@ -48,8 +48,6 @@ AC_PROG_LIBTOOL
+@@ -47,8 +47,6 @@ LT_INIT([win32-dll])
  # Checks for programs.
  AM_MISSING_PROG(PERL, perl, $missing_dir)
  AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir)
index 9b7ab2cca3b71cc86e81716e7e9bb036e86dc044..e9201c42b876b2bbcd578af7c0c776f8634d5d18 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/idn.c
 +++ b/src/idn.c
-@@ -169,7 +169,7 @@ main (int argc, char *argv[])
+@@ -170,7 +170,7 @@ main (int argc, char *argv[])
        (args_info.idna_to_unicode_given ? 1 : 0) +
        (args_info.nfkc_given ? 1 : 0) != 1)
      {
@@ -9,7 +9,7 @@
        usage (EXIT_FAILURE);
      }
  
-@@ -184,7 +184,7 @@ main (int argc, char *argv[])
+@@ -185,7 +185,7 @@ main (int argc, char *argv[])
    if (!args_info.quiet_given
        && args_info.inputs_num == 0
        && isatty (fileno (stdin)))
@@ -18,7 +18,7 @@
                       "terminated by a newline character.\n"));
  
    do
-@@ -199,7 +199,7 @@ main (int argc, char *argv[])
+@@ -197,7 +197,7 @@ main (int argc, char *argv[])
          if (feof (stdin))
            break;
  
@@ -26,8 +26,8 @@
 +        error (EXIT_FAILURE, errno, "%s", _("input error"));
        }
  
-       if (readbuf[strlen (readbuf) - 1] == '\n')
-@@ -216,7 +216,7 @@ main (int argc, char *argv[])
+       if (strlen (line) > 0)
+@@ -215,7 +215,7 @@ main (int argc, char *argv[])
          if (!q)
            {
              free (p);
@@ -36,7 +36,7 @@
                     _("could not convert from UTF-8 to UCS-4"));
            }
  
-@@ -241,7 +241,7 @@ main (int argc, char *argv[])
+@@ -240,7 +240,7 @@ main (int argc, char *argv[])
          if (!q)
            {
              free (r);
index caf489e480b3f4d4b32ba58e8e62f451db69b7bd..0fa57a17b8251f6662fe8d1a66800814916c1702 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libsearpc
-PKG_VERSION:=5.1.4
+PKG_VERSION:=6.0.7
 PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=GPL-3.0
 
index 1f062093d27cf39eae4c7ca61b3627e59343ef93..f8ad4df6c88ef31f8505ee259c51b5f234de8e5a 100644 (file)
@@ -43,11 +43,6 @@ endef
 CONFIGURE_ARGS += \
        --with-ssl=openssl
 
-define Build/Configure
-       ( cd $(PKG_BUILD_DIR); ./autogen.sh )
-       $(call Build/Configure/Default)
-endef
-
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include/
        $(CP) \
diff --git a/libs/loudmouth/patches/900-disable-docs-examples-tests.patch b/libs/loudmouth/patches/900-disable-docs-examples-tests.patch
new file mode 100644 (file)
index 0000000..e2c91e6
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ include $(top_srcdir)/build/Makefile.am.lm
+-SUBDIRS = loudmouth docs examples $(TEST_DIRS)
+-DIST_SUBDIRS = loudmouth docs examples tests
++SUBDIRS = loudmouth
++DIST_SUBDIRS = loudmouth
+ ACLOCAL_AMFLAGS = -I m4
+--- a/configure.ac
++++ b/configure.ac
+@@ -307,12 +307,7 @@ AC_SUBST(LOUDMOUTH_LIBS)
+ AC_OUTPUT([
+ Makefile
+-docs/Makefile
+-docs/reference/Makefile
+ loudmouth/Makefile
+-examples/Makefile
+-tests/Makefile
+-tests/parser-tests/Makefile
+ loudmouth-1.0.pc])
+ dnl ==========================================================================
index d23e9bbcab6f6e40f59bf0ec664a1bff70a2ad4e..4a6a452d9a150fcdb9f072682e862b907ae86448 100644 (file)
@@ -8,16 +8,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=opus
-PKG_VERSION:=1.1.3
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.4
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://downloads.xiph.org/releases/opus/
-PKG_MD5SUM:=32bbb6b557fe1b6066adc0ae1f08b629
+PKG_MD5SUM:=a2c09d995d0885665ff83b5df2505a5f
+PKG_HASH:=9122b6b380081dd2665189f97bfd777f04f92dc3ab6698eea1dbb27ad59d8692
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
+PKG_MAINTAINER:=Ted Hess <thess@kitchensync.net> Ian Leonard <antonlacon@gmail.com>
 
 PKG_INSTALL:=1
 
diff --git a/libs/pcre2/Makefile b/libs/pcre2/Makefile
new file mode 100644 (file)
index 0000000..fd20b95
--- /dev/null
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2017 Shane Peelar
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pcre2
+PKG_VERSION:=10.23
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
+PKG_MD5SUM:=b2cd00ca7e24049040099b0a46bb3649
+PKG_HASH:=dfc79b918771f02d33968bd34a749ad7487fa1014aeb787fad29dd392b78c56e
+PKG_MAINTAINER:=Shane Peelar <lookatyouhacker@gmail.com>
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENCE
+
+PKG_FIXUP:=autoreconf
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libpcre2/default
+  SECTION:=libs
+  CATEGORY:=Libraries
+  URL:=http://www.pcre.org/
+endef
+
+define Package/libpcre2
+  $(call Package/libpcre2/default)
+  TITLE:=A Perl Compatible Regular Expression library
+endef
+
+define Package/libpcre2-16
+  $(call Package/libpcre2/default)
+  TITLE:=A Perl Compatible Regular Expression library (16bit support)
+endef
+
+
+define Package/libpcre2-32
+  $(call Package/libpcre2/default)
+  TITLE:=A Perl Compatible Regular Expression library (32bit support)
+endef
+
+TARGET_CFLAGS += $(FPIC)
+
+CONFIGURE_ARGS += \
+       --enable-pcre2-16 \
+       --enable-pcre2-32 
+
+MAKE_FLAGS += \
+       CFLAGS="$(TARGET_CFLAGS)"
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pcre2-config $(1)/usr/bin/
+
+       $(INSTALL_DIR) $(2)/bin
+       $(LN) $(STAGING_DIR)/usr/bin/pcre2-config $(2)/bin
+
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/pcre*.h $(1)/usr/include/
+
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre*.{a,so*} $(1)/usr/lib/
+
+       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpcre*.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libpcre2/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-{8,posix}.so* $(1)/usr/lib/
+endef
+
+define Package/libpcre2-16/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-16.so* $(1)/usr/lib/
+endef
+
+define Package/libpcre2-32/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-32.so* $(1)/usr/lib/
+endef
+
+
+
+$(eval $(call BuildPackage,libpcre2))
+$(eval $(call BuildPackage,libpcre2-16))
+$(eval $(call BuildPackage,libpcre2-32))
index 93d538a0a1ab23434def51f4553b4906ddac5db4..90aec7e87a13760c264e84b2061da2d91167e9b2 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=protobuf
-PKG_VERSION:=2.6.1
+PKG_VERSION:=3.1.0
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE:=$(PKG_NAME)-cpp-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/google/protobuf/releases/download/v$(PKG_VERSION)
-PKG_MD5SUM:=11aaac2d704eef8efd1867a807865d85
+PKG_MD5SUM:=bd5e3eed635a8d32e2b99658633815ef
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
@@ -30,9 +30,9 @@ define Package/protobuf
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=A structured data encoding library
-  URL:=http://code.google.com/p/protobuf/
+  URL:=https://github.com/google/protobuf
   DEPENDS:=+zlib +libpthread +libstdcpp
-  MAINTAINER:=Jacob Siverskog <jacob@teenageengineering.com>
+  MAINTAINER:=Per Sandström <per.j.sandstrom@gmail.com>
 endef
 
 define Package/protobuf/description
diff --git a/libs/protobuf/patches/001-mipseb-compile.patch b/libs/protobuf/patches/001-mipseb-compile.patch
deleted file mode 100644 (file)
index f576833..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- -  2015-05-19 16:27:29.770936016 +0200
-+++ protobuf-2.6.1/src/google/protobuf/stubs/platform_macros.h 2015-05-19 13:49:52.115444643 +0200
-@@ -55,7 +55,7 @@
- #elif defined(__aarch64__)
- #define GOOGLE_PROTOBUF_ARCH_AARCH64 1
- #define GOOGLE_PROTOBUF_ARCH_64_BIT 1
--#elif defined(__MIPSEL__)
-+#elif defined(__MIPSEL__) || defined(__MIPSEB__)
- #if defined(__LP64__)
- #define GOOGLE_PROTOBUF_ARCH_MIPS64 1
- #define GOOGLE_PROTOBUF_ARCH_64_BIT 1
diff --git a/libs/protobuf/patches/003-mips2andHigher-compile.patch b/libs/protobuf/patches/003-mips2andHigher-compile.patch
deleted file mode 100644 (file)
index df97928..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- -  2015-05-19 16:29:09.614344473 +0200
-+++ protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h    2015-05-19 13:49:52.127442746 +0200
-@@ -150,7 +150,7 @@
- }
- inline void MemoryBarrier() {
--  __asm__ __volatile__("sync" : : : "memory");
-+  __asm__ __volatile__(".set mips2; sync; .set mips0" : : : "memory");
- }
- inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
index 29ce3304f07fefa5ad84f086e3e2065bad2e2f58..8801948dce3f002e0bf8b2c95c33cd94e8f5d5f2 100644 (file)
@@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=postfix
 PKG_RELEASE:=1
 PKG_SOURCE_URL:=ftp://ftp.porcupine.org/mirrors/postfix-release/official/
-PKG_VERSION:=3.1.3
-PKG_MD5SUM:=28a1dedbbbedfcf5fc09fd88bac116b6
+PKG_VERSION:=3.1.4
+PKG_MD5SUM:=878a059d92ee3b093d7d3e97248c915d
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
 PKG_LICENSE:=IPL-1.0
index d2ab7d1f0d5b5bf9be2a90667b8c9c4b3a31b2eb..cd0d5f8857530d191c6390fef954cffcfdc0f4b3 100644 (file)
@@ -1,9 +1,37 @@
 if PACKAGE_libffmpeg-custom
 
+comment "Build Licensing"
+
+config FFMPEG_CUSTOM_GPL
+       bool "Allow use of GPL code"
+       help
+               By default, FFMpeg is licensed under the LGPL. This builds a GPL licensed version.
+               Some software requires this, such as libx264.
+       default y
+
+config FFMPEG_CUSTOM_GPLV3
+       bool "Use (L)GPL v3"
+       help
+               Uses the LPGL v3 if GPL isn't selected, or GPL v3 if it is.
+
+config FFMPEG_CUSTOM_NONFREE
+       bool "Use code with complex licensing requirements; see help"
+       help
+               This sets --enable-nonfree, which in almost all cases, will prohibit redistribution of the resulting package.
+               Use this with care.
+       default n
+
 config FFMPEG_CUSTOM_PATENTED
        bool "Include patented codecs and technologies"
        default BUILD_PATENTED
 
+comment "Build Properties"
+
+config FFMPEG_CUSTOM_LARGE
+       bool "Build libffmpeg for performance instead of minimizing size on disk"
+       default y if ( x86_64 )
+       default n
+
 comment "Profiles"
 
 config FFMPEG_CUSTOM_FFSERVER_SUPPORT
@@ -105,8 +133,14 @@ config FFMPEG_CUSTOM_AUDIO_DEC_SUPPORT
 
 comment "External Libraries"
 
-config FFMPEG_CUSTOM_SELECT_mp3lame
-       bool "MP3 LAME"
+config FFMPEG_CUSTOM_SELECT_libfdk-aac
+       bool "Fraunhofer FDK AAC encoding library (libfdk-aac)"
+       depends on FFMPEG_CUSTOM_NONFREE
+       depends on FFMPEG_CUSTOM_PATENTED
+       depends on PACKAGE_fdk-aac
+
+config FFMPEG_CUSTOM_SELECT_libmp3lame
+       bool "Libmp3lame"
        depends on FFMPEG_CUSTOM_PATENTED
        depends on PACKAGE_lame-lib
        select FFMPEG_CUSTOM_DECODER_mp3
@@ -114,11 +148,15 @@ config FFMPEG_CUSTOM_SELECT_mp3lame
        select FFMPEG_CUSTOM_DEMUXER_mp3
 
 config FFMPEG_CUSTOM_SELECT_libopus
-       bool "Opus"
+       bool "Libopus"
+
+config FFMPEG_CUSTOM_SELECT_libshine
+       bool "Libshine"
 
-config FFMPEG_CUSTOM_SELECT_x264
-       bool "x264"
+config FFMPEG_CUSTOM_SELECT_libx264
+       bool "Libx264"
        depends on FFMPEG_CUSTOM_PATENTED
+       depends on FFMPEG_CUSTOM_GPL
        depends on PACKAGE_libx264
        select FFMPEG_CUSTOM_DECODER_h264
        select FFMPEG_CUSTOM_MUXER_h264
index f87401444dc7ecbc4ff1bd51abf8093803253303..75933bb3ac70adc5fdffb3eefdd58d796df2514e 100644 (file)
@@ -1,5 +1,6 @@
 #
 # Copyright (C) 2006-2017 OpenWrt.org
+# Copyright (C) 2017 Ian Leonard <antonlacon@gmail.com>
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +9,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffmpeg
-PKG_VERSION:=3.2.2
+PKG_VERSION:=3.2.4
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_MD5SUM:=e34d1b92c5d844f2a3611c741a6dba18
-PKG_HASH:=3f01bd1fe1a17a277f8c84869e5d9192b4b978cb660872aa2b54c3cc8a2fedfc
-PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
+PKG_MD5SUM:=39fd71024ac76ba35f04397021af5606
+PKG_HASH:=6e38ff14f080c98b58cf5967573501b8cb586e3a173b591f3807d8f0660daf7a
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
+               Ian Leonard <antonlacon@gmail.com>
 
 PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
 PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
@@ -224,7 +226,8 @@ include $(INCLUDE_DIR)/package.mk
 
 define Package/ffmpeg/Default
  TITLE:=FFmpeg
- URL:=http://ffmpeg.mplayerhq.hu/
+ URL:=https://ffmpeg.org/
+ DEPENDS+= +libpthread
 endef
 
 define Package/ffmpeg/Default/description
@@ -238,7 +241,7 @@ $(call Package/ffmpeg/Default)
  SECTION:=multimedia
  CATEGORY:=Multimedia
  TITLE+= program
- DEPENDS+= +libpthread +libffmpeg-full
+ DEPENDS+= +libffmpeg-full
  VARIANT:=full
 endef
 
@@ -270,7 +273,7 @@ $(call Package/ffserver/Default)
  SECTION:=multimedia
  CATEGORY:=Multimedia
  TITLE+= streaming server
- DEPENDS+= +libpthread +libffmpeg-full
+ DEPENDS+= +libffmpeg-full
  VARIANT:=full
 endef
 
@@ -285,7 +288,7 @@ $(call Package/ffmpeg/Default)
  SECTION:=libs
  CATEGORY:=Libraries
  TITLE+= libraries
- DEPENDS+= @BUILD_PATENTED +libpthread +zlib +libbz2
+ DEPENDS+= +libpthread +zlib +libbz2
  PROVIDES:= libffmpeg
 endef
 
@@ -294,8 +297,9 @@ define Package/libffmpeg-custom
 $(call Package/libffmpeg/Default)
  TITLE+= (custom)
  DEPENDS+= +FFMPEG_CUSTOM_SELECT_libopus:libopus \
-           +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib
-
+           +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib \
+           +FFMPEG_CUSTOM_SELECT_libshine:shine \
+           +PACKAGE_fdk-aac:fdk-aac
  VARIANT:=custom
  MENU:=1
 endef
@@ -314,6 +318,7 @@ endef
 define Package/libffmpeg-audio-dec
 $(call Package/libffmpeg/Default)
  TITLE+= (audio)
+ DEPENDS+= @BUILD_PATENTED
  VARIANT:=audio-dec
 endef
 
@@ -327,10 +332,16 @@ endef
 define Package/libffmpeg-full
 $(call Package/libffmpeg/Default)
  TITLE+= (full)
- DEPENDS+= +alsa-lib +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib +libopus
+ DEPENDS+= @BUILD_PATENTED +alsa-lib +PACKAGE_libopus:libopus
+ ifeq ($(CONFIG_SOFT_FLOAT),y)
+       DEPENDS+= +PACKAGE_shine:shine
+ else
+       DEPENDS+= +PACKAGE_lame-lib:lame-lib +PACKAGE_libx264:libx264
+ endif
  VARIANT:=full
 endef
 
+
 define Package/libffmpeg-full/description
 $(call Package/ffmpeg/Default/description)
  .
@@ -341,6 +352,7 @@ endef
 define Package/libffmpeg-mini
 $(call Package/libffmpeg/Default)
  TITLE+= (mini)
+ DEPENDS+= @BUILD_PATENTED
  VARIANT:=mini
 endef
 
@@ -363,15 +375,11 @@ FFMPEG_CONFIGURE:= \
        --pkg-config="pkg-config" \
        --enable-shared \
        --enable-static \
-       --enable-small \
        --enable-pthreads \
        --enable-zlib \
        --disable-doc \
        --disable-debug \
        \
-       --enable-gpl \
-       --enable-version3 \
-       \
        --disable-dxva2 \
        --disable-lzma \
        --disable-vaapi \
@@ -415,18 +423,13 @@ FFMPEG_CONFIGURE += \
 else ifneq ($(findstring arm,$(CONFIG_ARCH)),)
 FFMPEG_CONFIGURE += \
        --disable-runtime-cpudetect
+# XXX: GitHub issue 3320 ppc cpu with fpu but no altivec (WNDR4700)
 else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
 FFMPEG_CONFIGURE += \
        --disable-altivec
 endif
 
-ifneq ($(CONFIG_YASM),y)
-FFMPEG_CONFIGURE += \
-       --disable-yasm
-
-endif
-
-#selectibly disable optimizations according to arch/cpu type
+# selectively disable optimizations according to arch/cpu type
 ifneq ($(findstring arm,$(CONFIG_ARCH)),)
        ifeq (,$(findstring vfp,$(CONFIG_TARGET_OPTIMIZATION)))
                FFMPEG_CONFIGURE+= \
@@ -439,11 +442,28 @@ ifneq ($(findstring arm,$(CONFIG_ARCH)),)
 
 endif
 
+ifneq ($(CONFIG_YASM),y)
+FFMPEG_CONFIGURE += \
+       --disable-yasm
+
+endif
+
 ifeq ($(BUILD_VARIANT),full)
        FFMPEG_CONFIGURE+= \
-               --enable-libopus --enable-decoder=libopus \
-               $(if $(CONFIG_PACKAGE_libx264),--enable-libx264) \
-               $(if $(CONFIG_PACKAGE_lame-lib),--enable-libmp3lame)
+               $(if $(CONFIG_PACKAGE_libopus),--enable-libopus)
+  ifeq ($(CONFIG_SOFT_FLOAT),y)
+       FFMPEG_CONFIGURE+= \
+               --enable-small \
+               \
+               $(if $(CONFIG_PACKAGE_shine),--enable-libshine)
+  else
+       FFMPEG_CONFIGURE+= \
+               --enable-small \
+               --enable-gpl \
+               \
+               $(if $(CONFIG_PACKAGE_lame-lib),--enable-libmp3lame) \
+               $(if $(CONFIG_PACKAGE_libx264),--enable-libx264)
+  endif
 endif
 
 ifeq ($(BUILD_VARIANT),custom)
@@ -453,6 +473,26 @@ ifeq ($(BUILD_VARIANT),custom)
                $(if $($(3)_$(c)),--enable-$(1)="$(c)") \
        )
 
+  ifeq ($(CONFIG_FFMPEG_CUSTOM_LARGE),y)
+       FFMPEG_CONFIGURE+= \
+               --enable-hardcoded-tables
+  else
+       FFMPEG_CONFIGURE+= \
+               --enable-small
+  endif
+
+  ifeq ($(CONFIG_FFMPEG_CUSTOM_GPL),y)
+       FFMPEG_CONFIGURE+= --enable-gpl
+  endif
+
+  ifeq ($(CONFIG_FFMPEG_CUSTOM_GPLV3),y)
+       FFMPEG_CONFIGURE+= --enable-version3
+  endif
+
+  ifeq ($(CONFIG_FFMPEG_CUSTOM_NONFREE),y)
+       FFMPEG_CONFIGURE+= --enable-nonfree
+  endif
+
   FFMPEG_CONFIGURE+= \
        --disable-programs \
        --disable-avfilter \
@@ -471,23 +511,32 @@ ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_adpcm),y)
   FFMPEG_CONFIGURE+= \
        --enable-decoder=adpcm_ima_wav \
        --enable-decoder=adpcm_ima_qt \
-       --enable-decoder=adpcm_ms \
+       --enable-decoder=adpcm_ms
+endif
+
+ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libfdk-aac),y)
+  FFMPEG_CONFIGURE+= \
+       --enable-libfdk-aac --enable-encoder=libfdk_aac
+endif
 
+ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libmp3lame),y)
+  FFMPEG_CONFIGURE+= \
+       --enable-libmp3lame --enable-encoder=libmp3lame
 endif
 
 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libopus),y)
   FFMPEG_CONFIGURE+= \
-       --enable-libopus --enable-decoder=libopus
+       --enable-libopus --enable-decoder=libopus --enable-encoder=libopus
 endif
 
-ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_x264),y)
+ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libshine),y)
   FFMPEG_CONFIGURE+= \
-       --enable-libx264
+       --enable-libshine --enable-encoder=libshine
 endif
 
-ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_mp3lame),y)
+ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
   FFMPEG_CONFIGURE+= \
-       --enable-libmp3lame
+       --enable-libx264 --enable-encoder=libx264
 endif
 
 endif
@@ -500,6 +549,9 @@ ifeq ($(BUILD_VARIANT),audio-dec)
        )
 
   FFMPEG_CONFIGURE+= \
+       --enable-small \
+       --enable-gpl \
+       \
        --disable-programs \
        --disable-avfilter \
        --disable-postproc \
@@ -522,6 +574,8 @@ ifeq ($(BUILD_VARIANT),mini)
        )
 
   FFMPEG_CONFIGURE+= \
+       --enable-small \
+       \
        --disable-programs \
        --disable-avdevice \
        --disable-avfilter \
@@ -531,8 +585,7 @@ ifeq ($(BUILD_VARIANT),mini)
        --disable-everything \
        $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
        $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
-       $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
-
+       $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS))
 endif
 
 ifneq ($(CONFIG_TARGET_x86),)
@@ -558,13 +611,19 @@ define Build/InstallDev/custom
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
 endef
 
+# Soft float is LGPL (no libpostproc); Hard float is GPL (yes libpostproc)
 define Build/InstallDev/full
        $(INSTALL_DIR) $(1)/usr/include
-       $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale} $(1)/usr/include/
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.{a,so*} $(1)/usr/lib/
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale} $(1)/usr/include/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.{a,so*} $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
+ifneq ($(CONFIG_SOFT_FLOAT),y)
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/libpostproc $(1)/usr/include/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.{a,so*} $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpostproc.pc $(1)/usr/lib/pkgconfig/
+endif
 endef
 
 define Build/InstallDev/mini
@@ -622,9 +681,13 @@ define Package/libffmpeg-custom/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
 endef
 
+# Soft float is LGPL (no libpostproc); Hard float is GPL (yes libpostproc)
 define Package/libffmpeg-full/install
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swresample,swscale}.so.* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.so.* $(1)/usr/lib/
+ifneq ($(CONFIG_SOFT_FLOAT),y)
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.so.* $(1)/usr/lib/
+endif
 endef
 
 define Package/libffmpeg-mini/install
index 144da201fa345d103185d0d25c03e0ad0ea2f8ac..2eef5e50bd05f981d66d427f9394b5816773edf0 100644 (file)
@@ -8,17 +8,23 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=minidlna
-PKG_VERSION:=1.1.5
+PKG_VERSION:=1.1.6+git-8a996b
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/minidlna
-PKG_MD5SUM:=1970e553a1eb8a3e7e302e2ce292cbc4
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL=http://git.code.sf.net/p/minidlna/git
+PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=8a996b4b624ef45538a5de10730b8e94c55e7768
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_MIRROR_HASH:=fddbb7c96b40e335a251b919ff5c674519f266a59b8a43011761ba952c0df1b6
+
 PKG_LICENSE:=GPL-2.0 BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING LICENCE.miniupnpd
 
 PKG_MAINTAINER:=Knyazkov Dmitry <medavedik@gmail.com>
 
+PKG_FIXUP:=autoreconf
+
 PKG_BUILD_PARALLEL:=0
 PKG_BUILD_DEPENDS:=util-linux
 
@@ -45,11 +51,6 @@ define Package/minidlna/conffiles
 endef
 
 TARGET_CPPFLAGS += \
-       -I$(STAGING_DIR)/usr/include \
-       -I$(STAGING_DIR)/usr/include/FLAC \
-       -I$(STAGING_DIR)/usr/include/libexif \
-       -I$(STAGING_DIR)/usr/include/uuid \
-       -I$(STAGING_DIR)/usr/include/vorbis \
        -I$(ICONV_PREFIX)/include \
        -I$(INTL_PREFIX)/include \
        -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \
diff --git a/multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch b/multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch
new file mode 100644 (file)
index 0000000..5380d8a
--- /dev/null
@@ -0,0 +1,92 @@
+From c8245740c3a8699cfe7d7e5aa0d427b931018ad5 Mon Sep 17 00:00:00 2001
+From: Yusuke Yanbe <y.yanbe@gmail.com>
+Date: Mon, 4 Jul 2016 08:20:46 +0900
+Subject: [PATCH] Add support for grouping videos by directory for Panasonic
+ TVs
+
+---
+ upnpsoap.c | 24 +++++++++++++++++++-----
+ upnpsoap.h |  5 ++++-
+ 2 files changed, 23 insertions(+), 6 deletions(-)
+
+--- a/upnpsoap.c
++++ b/upnpsoap.c
+@@ -1052,6 +1052,15 @@ callback(void *args, int argc, char **ar
+                                               add_res(size, duration, bitrate, sampleFrequency, nrAudioChannels,
+                                                       resolution, dlna_buf, mime, detailID, ext, passed_args);
+                                       }
++
++                                      DPRINTF(E_DEBUG, L_HTTP, "Title: %s -  %d Returned / %d childCount\n",
++                                                              title, passed_args->returned, passed_args->childCount);
++
++                                      ret = strcatf(str, "&lt;pxn:groupTopFlag&gt;%d&lt;/pxn:groupTopFlag&gt;"
++                                                         "&lt;pxn:groupID&gt;%s&lt;/pxn:groupID&gt;"
++                                                         "&lt;pxn:groupTitle&gt;%s&lt;/pxn:groupTitle&gt;"
++                                                         "&lt;pxn:groupMemberNum&gt;%d&lt;/pxn:groupMemberNum&gt;",
++                                                         passed_args->returned == passed_args->childCount, parent, passed_args->parentTitle, passed_args->childCount);
+                                       break;
+                               case ESamsungSeriesCDE:
+                               case ELGDevice:
+@@ -1314,8 +1323,11 @@ BrowseContentDirectory(struct upnphttp *
+               if (!where[0])
+                       sqlite3_snprintf(sizeof(where), where, "PARENT_ID = '%q'", ObjectID);
+-              if (!totalMatches)
++              if (!totalMatches) {
+                       totalMatches = get_child_count(ObjectID, magic);
++                      args.childCount = totalMatches;
++                      args.parentTitle = sql_get_text_field(db, "SELECT d.TITLE FROM OBJECTS o LEFT JOIN DETAILS d ON (d.ID = o.DETAIL_ID) WHERE OBJECT_ID='%q'", ObjectID);
++              }
+               ret = 0;
+               if (SortCriteria && !orderBy)
+               {
+@@ -1354,14 +1366,16 @@ BrowseContentDirectory(struct upnphttp *
+                       SoapError(h, 709, "Unsupported or invalid sort criteria");
+                       goto browse_error;
+               }
+-
+               sql = sqlite3_mprintf("SELECT %s, %s, %s, " COLUMNS
+                                     "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
+-                                    " where %s %s limit %d, %d;",
++                                    " where %s order by d.date limit %d, %d;",
+                                     objectid_sql, parentid_sql, refid_sql,
+-                                    where, THISORNUL(orderBy), StartingIndex, RequestedCount);
++                                    where, StartingIndex, RequestedCount);
+               DPRINTF(E_DEBUG, L_HTTP, "Browse SQL: %s\n", sql);
+               ret = sqlite3_exec(db, sql, callback, (void *) &args, &zErrMsg);
++              if (args.parentTitle) {
++                      sqlite3_free(args.parentTitle);
++              }
+       }
+       if( (ret != SQLITE_OK) && (zErrMsg != NULL) )
+       {
+@@ -1795,7 +1809,7 @@ SearchContentDirectory(struct upnphttp *
+                             (*ContainerID == '*') ? NULL :
+                             sqlite3_mprintf("UNION ALL " SELECT_COLUMNS
+                                             "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
+-                                            " where OBJECT_ID = '%q' and (%s) ", ContainerID, where),
++                                            " where OBJECT_ID = '%q' and (%s) ORDER BY d.date", ContainerID, where),
+                             orderBy, StartingIndex, RequestedCount);
+       DPRINTF(E_DEBUG, L_HTTP, "Search SQL: %s\n", sql);
+       ret = sqlite3_exec(db, sql, callback, (void *) &args, &zErrMsg);
+--- a/upnpsoap.h
++++ b/upnpsoap.h
+@@ -27,7 +27,8 @@
+ #define CONTENT_DIRECTORY_SCHEMAS \
+       " xmlns:dc=\"http://purl.org/dc/elements/1.1/\"" \
+       " xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\"" \
+-      " xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\""
++      " xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"" \
++      " xmlns:pxn=\"urn:schemas-panasonic-com:pxn\""
+ #define DLNA_NAMESPACE \
+       " xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0/\""
+ #define PV_NAMESPACE \
+@@ -39,6 +40,8 @@ struct Response
+       int start;
+       int returned;
+       int requested;
++      int childCount;
++      char *parentTitle;
+       int iface;
+       uint32_t filter;
+       uint32_t flags;
diff --git a/multimedia/minidlna/patches/002-dont-build-po-files.patch b/multimedia/minidlna/patches/002-dont-build-po-files.patch
new file mode 100644 (file)
index 0000000..c0c0235
--- /dev/null
@@ -0,0 +1,26 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,7 +17,7 @@
+ AM_CFLAGS = -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 @STATIC_CFLAGS@
+-SUBDIRS=po
++SUBDIRS=
+ sbin_PROGRAMS = minidlnad
+ check_PROGRAMS = testupnpdescgen
+--- a/configure.ac
++++ b/configure.ac
+@@ -633,6 +633,8 @@ case "$target_os" in
+ esac
+-AC_OUTPUT([ po/Makefile.in
+-Makefile
+-])
++# AC_OUTPUT([ po/Makefile.in
++# Makefile
++# ])
++AC_CONFIG_FILES([Makefile])
++AC_OUTPUT
diff --git a/multimedia/minidlna/patches/010-libav-fix.patch b/multimedia/minidlna/patches/010-libav-fix.patch
deleted file mode 100644 (file)
index 5924599..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/libav.h
-+++ b/libav.h
-@@ -167,7 +167,7 @@
- static inline int
- lav_is_thumbnail_stream(AVStream *s, uint8_t **data, int *size)
- {
--#if LIBAVFORMAT_VERSION_INT >= ((54<<16)+(6<<8))
-+/*if LIBAVFORMAT_VERSION_INT >= ((54<<16)+(6<<8))
-       if (s->disposition & AV_DISPOSITION_ATTACHED_PIC &&
-           s->codec->codec_id == AV_CODEC_ID_MJPEG)
-       {
-@@ -177,6 +177,6 @@
-                       *size = s->attached_pic.size;
-               return 1;
-       }
--#endif
-+endif*/
-       return 0;
- }
index a510a7e44f74d5f7e77cc2ae4a9f2961e7597422..6433079f947236931b8da310dbf7e3bad4f9ece8 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=youtube-dl
-PKG_VERSION:=2016.11.27
+PKG_VERSION:=2017.02.17
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://yt-dl.org/downloads/$(PKG_VERSION)/
-PKG_MD5SUM:=2bb2c4ebf5335d69e03e32a0309abfba
+PKG_MD5SUM:=d38dbe099af22eb9af35b0e8b274dc4e
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
 PKG_LICENSE:=Unlicense
index b0d7309d33c00320aeda1d65ff94a688426282e6..2f0443993f052ada1cba15b49ffb2b7c419876e2 100644 (file)
@@ -1,8 +1,8 @@
-menu "Aria2 configuration"
+menu "Aria2 Configuration"
        depends on PACKAGE_aria2
 
 choice
-       prompt "SSL library"
+       prompt "SSL Library"
        default ARIA2_OPENSSL
 
 config ARIA2_OPENSSL
@@ -12,34 +12,42 @@ config ARIA2_GNUTLS
        bool "GNUTLS"
 
 config ARIA2_NOSSL
-       bool "No SSL support"
+       bool "No SSL Support"
 
 endchoice
 
 config ARIA2_BITTORRENT
-       bool "Enable bittorrent support"
+       bool "Enable Bittorrent Support"
        depends on ARIA2_OPENSSL
        default n
 
-config ARIA2_METALINK
-       bool "Enable metalink support"
-       default n
-
 config ARIA2_SFTP
-        bool "Enable sftp support"
+        bool "Enable SFTP Support"
         default n
 
+config ARIA2_ASYNC_DNS
+       bool "Enable Async DNS Support"
+       default n
+
+config ARIA2_COOKIE
+       bool "Enable Firefox3/Chromium Cookie Support"
+       default n
+
+config ARIA2_METALINK
+       bool "Enable Metalink Support"
+       default n
+
 choice
-       prompt "XML library"
-       default ARIA2_EXPAT
+       prompt "XML Library"
+       default ARIA2_LIBXML2
        depends on ARIA2_METALINK
 
+config ARIA2_LIBXML2
+        bool "LIBXML2"
+
 config ARIA2_EXPAT
        bool "EXPAT"
 
-config ARIA2_LIBXML2
-       bool "LIBXML2"
-
 endchoice
 
 endmenu
index a96d4b86c42884b7e4035b1b571bf40441c8095c..1ad16fa9d15be9159f2f02926dfafbadeabd92a6 100644 (file)
@@ -7,12 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=aria2
-PKG_VERSION:=1.30.0
+PKG_VERSION:=1.31.0
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/aria2/aria2/releases/download/release-$(PKG_VERSION)/
-PKG_MD5SUM:=8c22f569d3fb9e42c5fd9a95173b9b5f
+PKG_HASH:=7b85619048b23406f241e38a5b1b8b0bc2cae9e80fd117810c2a71ecca813f8c
 PKG_INSTALL:=1
 
 PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>, Hsing-Wang Liao <kuoruan@gmail.com>
@@ -24,8 +24,10 @@ PKG_CONFIG_DEPENDS := \
   ARIA2_OPENSSL \
   ARIA2_GNUTLS \
   ARIA2_BITTORRENT \
-  ARIA2_METALINK \
   ARIA2_SFTP \
+  ARIA2_ASYNC_DNS \
+  ARIA2_COOKIE \
+  ARIA2_METALINK \
   ARIA2_EXPAT \
   ARIA2_LIBXML2
 
@@ -41,7 +43,7 @@ define Package/aria2
   SUBMENU:=File Transfer
   TITLE:=lightweight download utility
   URL:=https://aria2.github.io/
-  DEPENDS:=+zlib +ARIA2_SFTP:libssh2 +ARIA2_LIBXML2:libxml2 +ARIA2_EXPAT:libexpat +libstdcpp +ARIA2_OPENSSL:libopenssl +ARIA2_GNUTLS:libgnutls
+  DEPENDS:=+zlib +libstdcpp +ARIA2_SFTP:libssh2 +ARIA2_ASYNC_DNS:libcares +ARIA2_COOKIE:libsqlite3 +ARIA2_LIBXML2:libxml2 +ARIA2_EXPAT:libexpat +ARIA2_OPENSSL:libopenssl +ARIA2_GNUTLS:libgnutls
 endef
 
 define Package/aria2/description
@@ -52,19 +54,19 @@ endef
 CONFIGURE_ARGS += \
        --disable-nls \
        $(if $(CONFIG_ARIA2_NOSSL),--disable,--enable)-ssl \
-       $(if $(CONFIG_ARIA2_OPENSSL),--with,--without)-openssl \
-       $(if $(CONFIG_ARIA2_GNUTLS),--with,--without)-gnutls \
        $(if $(CONFIG_ARIA2_BITTORRENT),--enable,--disable)-bittorrent \
        $(if $(CONFIG_ARIA2_METALINK),--enable,--disable)-metalink \
+       $(if $(CONFIG_ARIA2_OPENSSL),--with,--without)-openssl \
+       $(if $(CONFIG_ARIA2_GNUTLS),--with,--without)-gnutls \
        $(if $(CONFIG_ARIA2_SFTP),--with,--without)-libssh2 \
+       $(if $(CONFIG_ARIA2_ASYNC_DNS),--with,--without)-libcares \
+       $(if $(CONFIG_ARIA2_COOKIE),--with,--without)-sqlite3 \
        $(if $(CONFIG_ARIA2_LIBXML2),--with,--without)-libxml2 \
        $(if $(CONFIG_ARIA2_EXPAT),--with,--without)-libexpat \
        --without-libnettle \
        --without-libgmp \
        --without-libgcrypt \
-       --without-libcares \
        --without-libuv \
-       --without-sqlite3 \
        --with-libz
 
 define Package/aria2/install
index 4e1cb12a4af9bba58c459315157841d62915b568..0d367c6fb48cb9b183da1a282e36570f3a5541c4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=chrony
-PKG_VERSION:=2.4.1
+PKG_VERSION:=3.1
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://download.tuxfamily.org/chrony/
-PKG_MD5SUM:=d08dd5a7d79a89891d119adcccb4397d
+PKG_HASH:=9d9107dcdb7768a03dc129d33b2a7a25f1eea2f5620bc85eb00cfea07c1b6075
 
 PKG_MAINTAINER:=Miroslav Lichvar <mlichvar0@gmail.com>
 PKG_LICENSE:=GPL-2.0
@@ -50,7 +50,7 @@ CONFIGURE_ARGS+= \
        --host-system=Linux \
        --sysconfdir=/etc/chrony \
        --prefix=/usr \
-       --chronysockdir=/var/run/chrony \
+       --chronyrundir=/var/run/chrony \
        --disable-readline \
        --disable-rtc \
        --with-user=chrony
index b207c945e2d168d856a04248370ce7e71d5ccd35..410e63b948a187288a0fb0324a03294636d05567 100644 (file)
@@ -5,3 +5,6 @@ logchange 0.5
 
 # Don't log client accesses
 noclientlog
+
+# set the system clock else the kernel will always stay in UNSYNC state
+rtcsync
index 7c2b388faa757a62f596f40b988955fb96f86959..7be49477f7036f631a75b41e4404cd33d5f9bb1c 100755 (executable)
@@ -12,7 +12,7 @@ PKG_NAME:=ddns-scripts
 PKG_VERSION:=2.7.6
 # Release == build
 # increase on changes of services files or tld_names.dat
-PKG_RELEASE:=12
+PKG_RELEASE:=13
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
index 209409b35312f40de8f1b5b45ef7224c7ce87d80..c8b3962aae0da75ea2f6a94625f42711cc4a3e07 100755 (executable)
@@ -21,7 +21,7 @@
 . /lib/functions/network.sh
 
 # GLOBAL VARIABLES #
-VERSION="2.7.6"
+VERSION="2.7.6-13"
 SECTION_ID=""          # hold config's section name
 VERBOSE=0              # default mode is log to console, but easily changed with parameter
 MYPROG=$(basename $0)  # my program call name
@@ -886,7 +886,7 @@ send_update() {
 get_local_ip () {
        # $1    Name of Variable to store local IP (LOCAL_IP)
        local __CNT=0   # error counter
-       local __RUNPROG __DATA __URL __ERR __TMP
+       local __RUNPROG __DATA __URL __ERR
 
        [ $# -ne 1 ] && write_log 12 "Error calling 'get_local_ip()' - wrong number of parameters"
        write_log 7 "Detect local IP on '$ip_source'"
@@ -920,7 +920,7 @@ get_local_ip () {
                                        #    remove      remove     remove      replace     replace
                                        #     link     inet6 fxxx    sec      forever=>-1   / => ' ' to separate subnet from ip
                                        sed "/link/d; /inet6 f/d; s/sec//g; s/forever/-1/g; s/\// /g" $DATFILE | \
-                                               awk '{ print $3" "$4" "$NF }' > ${DATFILE}_tmp
+                                               awk '{ print $3" "$4" "$NF }' > $ERRFILE        # temp reuse ERRFILE
                                        # we only need    inet?   IP  prefered time
 
                                        local __TIME4=0;  local __TIME6=0
@@ -936,8 +936,7 @@ get_local_ip () {
                                                        __DATA4="$__ADR"
                                                        __TIME4="$__TIME"
                                                }
-                                       done < ${DATFILE}_tmp
-                                       rm ${DATFILE}_tmp
+                                       done < $ERRFILE
                                else
                                        write_log 3 "ip Error: '$__ERR'"
                                        write_log 7 "$(cat $ERRFILE)"           # report error
index a2ccee3d0f8545a04a655162c4b999e03ab48cb8..998973b260e4d4743dea2cd12724011c6ba195b2 100644 (file)
@@ -5527,6 +5527,9 @@ net.om
 org.om
 pro.om
 
+// onion : https://tools.ietf.org/html/rfc7686
+onion
+
 // org : https://en.wikipedia.org/wiki/.org
 org
 
@@ -6108,38 +6111,6 @@ store.st
 
 // su : https://en.wikipedia.org/wiki/.su
 su
-adygeya.su
-arkhangelsk.su
-balashov.su
-bashkiria.su
-bryansk.su
-dagestan.su
-grozny.su
-ivanovo.su
-kalmykia.su
-kaluga.su
-karelia.su
-khakassia.su
-krasnodar.su
-kurgan.su
-lenug.su
-mordovia.su
-msk.su
-murmansk.su
-nalchik.su
-nov.su
-obninsk.su
-penza.su
-pokrovsk.su
-sochi.su
-spb.su
-togliatti.su
-troitsk.su
-tula.su
-tuva.su
-vladikavkaz.su
-vladimir.su
-vologda.su
 
 // sv : http://www.svnet.org.sv/niveldos.pdf
 sv
@@ -10957,7 +10928,7 @@ elasticbeanstalk.cn-north-1.amazonaws.com.cn
 
 // Amazon S3 : https://aws.amazon.com/s3/
 // Submitted by Luke Wells <psl-maintainers@amazon.com>
-*.s3.amazonaws.com
+s3.amazonaws.com
 s3-ap-northeast-1.amazonaws.com
 s3-ap-northeast-2.amazonaws.com
 s3-ap-south-1.amazonaws.com
@@ -10966,6 +10937,7 @@ s3-ap-southeast-2.amazonaws.com
 s3-ca-central-1.amazonaws.com
 s3-eu-central-1.amazonaws.com
 s3-eu-west-1.amazonaws.com
+s3-eu-west-2.amazonaws.com
 s3-external-1.amazonaws.com
 s3-fips-us-gov-west-1.amazonaws.com
 s3-sa-east-1.amazonaws.com
@@ -10978,6 +10950,7 @@ s3.ap-south-1.amazonaws.com
 s3.cn-north-1.amazonaws.com.cn
 s3.ca-central-1.amazonaws.com
 s3.eu-central-1.amazonaws.com
+s3.eu-west-2.amazonaws.com
 s3.us-east-2.amazonaws.com
 s3.dualstack.ap-northeast-1.amazonaws.com
 s3.dualstack.ap-northeast-2.amazonaws.com
@@ -10987,6 +10960,7 @@ s3.dualstack.ap-southeast-2.amazonaws.com
 s3.dualstack.ca-central-1.amazonaws.com
 s3.dualstack.eu-central-1.amazonaws.com
 s3.dualstack.eu-west-1.amazonaws.com
+s3.dualstack.eu-west-2.amazonaws.com
 s3.dualstack.sa-east-1.amazonaws.com
 s3.dualstack.us-east-1.amazonaws.com
 s3.dualstack.us-east-2.amazonaws.com
@@ -11002,6 +10976,7 @@ s3-website.ap-northeast-2.amazonaws.com
 s3-website.ap-south-1.amazonaws.com
 s3-website.ca-central-1.amazonaws.com
 s3-website.eu-central-1.amazonaws.com
+s3-website.eu-west-2.amazonaws.com
 s3-website.us-east-2.amazonaws.com
 
 // Amune : https://amune.org/
@@ -11611,13 +11586,92 @@ us-2.evennode.com
 // Submitted by Peter Ruibal <public-suffix@fb.com>
 apps.fbsbx.com
 
-// Fastly Inc. http://www.fastly.com/
-// Submitted by Vladimir Vuksan <vladimir@fastly.com>
+// FAITID : https://faitid.org/
+// Submitted by Maxim Alzoba <tech.contact@faitid.org>
+// https://www.flexireg.net/stat_info
+ru.net
+adygeya.ru
+bashkiria.ru
+bir.ru
+cbg.ru
+com.ru
+dagestan.ru
+grozny.ru
+kalmykia.ru
+kustanai.ru
+marine.ru
+mordovia.ru
+msk.ru
+mytis.ru
+nalchik.ru
+nov.ru
+pyatigorsk.ru
+spb.ru
+vladikavkaz.ru
+vladimir.ru
+abkhazia.su
+adygeya.su
+aktyubinsk.su
+arkhangelsk.su
+armenia.su
+ashgabad.su
+azerbaijan.su
+balashov.su
+bashkiria.su
+bryansk.su
+bukhara.su
+chimkent.su
+dagestan.su
+east-kazakhstan.su
+exnet.su
+georgia.su
+grozny.su
+ivanovo.su
+jambyl.su
+kalmykia.su
+kaluga.su
+karacol.su
+karaganda.su
+karelia.su
+khakassia.su
+krasnodar.su
+kurgan.su
+kustanai.su
+lenug.su
+mangyshlak.su
+mordovia.su
+msk.su
+murmansk.su
+nalchik.su
+navoi.su
+north-kazakhstan.su
+nov.su
+obninsk.su
+penza.su
+pokrovsk.su
+sochi.su
+spb.su
+tashkent.su
+termez.su
+togliatti.su
+troitsk.su
+tselinograd.su
+tula.su
+tuva.su
+vladikavkaz.su
+vladimir.su
+vologda.su
+
+// Fastly Inc. : http://www.fastly.com/
+// Submitted by Fastly Security <security@fastly.com>
+map.fastly.net
+a.prod.fastly.net
+global.prod.fastly.net
 a.ssl.fastly.net
 b.ssl.fastly.net
 global.ssl.fastly.net
-a.prod.fastly.net
-global.prod.fastly.net
+fastlylb.net
+map.fastlylb.net
 
 // Featherhead : https://featherhead.xyz/
 // Submitted by Simon Menke <simon@featherhead.xyz>
index fd70b071bf41a42e961efefe75165e99b972d216..78b345675ad2ddf7db834d4f8d9d1df3b0932ddf 100644 (file)
@@ -42,7 +42,7 @@
 
 "able.or.kr"           "http://able.or.kr/ddns/src/update.php?hostname=[DOMAIN]&myip=[IP]&ddnsuser=[USERNAME]&pwd=[PASSWORD]"
 
-"afraid.org-basicauth" "http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]
+"afraid.org-basicauth" "http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
 "afraid.org-keyauth"   "http://freedns.afraid.org/dynamic/update.php?[PASSWORD]&address=[IP]"
 
 "all-inkl.com"         "http://[USERNAME]:[PASSWORD]@dyndns.kasserver.com/?myip=[IP]"
@@ -84,7 +84,7 @@
 
 "duckdns.org"          "http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]"     "OK"
 
-"duiadns.net"          "http://[USERNAME]:[PASSWORD]@ipv4.duia.ro/dynamic.duia?host=[DOMAIN]&ip4=[IP]"
+"duiadns.net"          "http://ip.duiadns.net/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip4=[IP]"
 
 "dy.fi"                        "http://[USERNAME]:[PASSWORD]@www.dy.fi/nic/update?hostname=[DOMAIN]"   "good|nochg"
 
index f2409d6ff566d4a4fc7611772fa203801e68fece..5b2cc23ad225c45d74a56bf00ecadd9f4e94e486 100644 (file)
@@ -38,7 +38,7 @@
 #.godaddy.com-v1       !!! Please install additional package "ddns-scripts_godaddy.com-v1"
 #.no-ip.com / noip.com !!! Please install additional package "ddns-scripts_no-ip_com"
 
-"afraid.org-basicauth" "http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]
+"afraid.org-basicauth" "http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
 "afraid.org-keyauth"   "http://freedns.afraid.org/dynamic/update.php?[PASSWORD]&address=[IP]"
 
 "all-inkl.com"         "http://[USERNAME]:[PASSWORD]@dyndns.kasserver.com/?myip=[IP]"
@@ -58,7 +58,7 @@
 
 "duckdns.org"          "http://www.duckdns.org/update?domains=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]"     "OK"
 
-"duiadns.net"          "http://[USERNAME]:[PASSWORD]@ipv6.duia.ro/dynamic.duia?host=[DOMAIN]&ip6=[IP]"
+"duiadns.net"          "http://ip.duiadns.net/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip6=[IP]"
 
 "dyn.com"              "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"        "good|nochg"
 "dyndns.org"           "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"        "good|nochg"
index 387701262e07bf7029a6e81a92cfff45a57811fb..ac271ab98a87886156f9597365719dd5173689c4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=git
-PKG_VERSION:=2.11.0
+PKG_VERSION:=2.11.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_MD5SUM:=dd4e3360e28aec5bb902fb34dd7fce3b
+PKG_HASH:=c0a779cae325d48a1d5ba08b6ee1febcc31d0657a6da01fd1dec1c6e10976415
 
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
diff --git a/net/inadyn/Makefile b/net/inadyn/Makefile
new file mode 100644 (file)
index 0000000..792bb83
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# Copyright (C) 2017 Daniel Engberg <daniel.engberg.lists@pyret.net>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=inadyn
+PKG_VERSION=2017-02-02
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL=https://github.com/troglobit/inadyn
+PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=3b9ae1c22f96194232cc86ded33af9e0a1602af2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_MIRROR_HASH:=9db6cd8d2b421d8bc61d4ae60c8215a86d73657746a1b06d79f4fbfd79734f6e
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/inadyn
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+confuse +libopenssl +ca-certificates
+  TITLE:=A Dynamic DNS client with SSL/TLS support
+  URL:=https://github.com/troglobit/inadyn
+  SUBMENU:=IP Addresses and Names
+endef
+
+define Package/inadyn/description
+  Suitable for embedded systems, written in C.
+endef
+
+define Package/inadyn/conffiles
+/etc/inadyn.conf
+endef
+
+CONFIGURE_ARGS += --enable-shared --disable-static --enable-openssl
+
+define Package/inadyn/install
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/examples/dyndns.conf $(1)/etc/inadyn.conf
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/inadyn $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,inadyn))
index 1c17cefbe5742e175251797ed2e256c125c427bc..870fe80c8532e5701f14dbb7cd079be26b7ee396 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lighttpd
-PKG_VERSION:=1.4.42
+PKG_VERSION:=1.4.45
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://download.lighttpd.net/lighttpd/releases-1.4.x
-PKG_MD5SUM:=53c55d7e1dac7adec161cd5490491f6d
+PKG_MD5SUM:=a128e1eda76899ce3fd115efae5fe631
 
 PKG_LICENSE:=BSD-3c
 PKG_LICENSE_FILES:=COPYING
diff --git a/net/lighttpd/patches/0001-mod_cgi-fix-CGI-local-redir-w-url.rewrite-once-fixes.patch b/net/lighttpd/patches/0001-mod_cgi-fix-CGI-local-redir-w-url.rewrite-once-fixes.patch
new file mode 100644 (file)
index 0000000..a6bbcbe
--- /dev/null
@@ -0,0 +1,32 @@
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Subject: [PATCH] [mod_cgi] fix CGI local-redir w/ url.rewrite-once (fixes
+ #2793)
+
+x-ref:
+  "1.4.40 regression: broken redirect (using Location) between url.rewrite-once URLs"
+  https://redmine.lighttpd.net/issues/2793
+---
+ src/mod_cgi.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/src/mod_cgi.c
++++ b/src/mod_cgi.c
+@@ -560,8 +560,7 @@ static int cgi_demux_response(server *sr
+                                                       }
+                                                       connection_response_reset(srv, con); /*(includes con->http_status = 0)*/
+-
+-                                                      con->mode = DIRECT;
++                                                      plugins_call_connection_reset(srv, con);
+                                                       return FDEVENT_HANDLED_COMEBACK;
+                                               }
+                                       }
+@@ -780,7 +779,7 @@ static int cgi_recv_response(server *srv
+                       /* if we get a IN|HUP and have read everything don't exec the close twice */
+                       return HANDLER_FINISHED;
+               case FDEVENT_HANDLED_COMEBACK:
+-                      cgi_connection_close(srv, hctx);
++                      /*cgi_connection_close(srv, hctx);*//*(already cleaned up and hctx is now invalid)*/
+                       return HANDLER_COMEBACK;
+               case FDEVENT_HANDLED_ERROR:
+                       log_error_write(srv, __FILE__, __LINE__, "s", "demuxer failed: ");
diff --git a/net/luci-app-bcp38/Makefile b/net/luci-app-bcp38/Makefile
deleted file mode 100644 (file)
index ecf84fd..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-bcp38
-PKG_VERSION:=2
-PKG_RELEASE:=2
-PKG_LICENSE:=Apache-2.0
-LUCI_DIR:=/usr/lib/lua/luci
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-bcp38
-  SECTION:=luci
-  CATEGORY:=LuCI
-  TITLE:=BCP38 LuCI interface
-  MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
-  PKGARCH:=all
-  DEPENDS:= lua luci-base +bcp38
-  SUBMENU:=3. Applications
-endef
-
-define Package/luci-app-bcp38/description
-       Control BCP38 subnet blocking
-endef
-
-define Build/Compile
-endef
-
-define Build/Configure
-endef
-
-define Package/luci-app-bcp38/install
-       $(INSTALL_DIR) $(1)$(LUCI_DIR)/controller $(1)$(LUCI_DIR)/model/cbi
-       $(INSTALL_DATA) ./files/bcp38-controller.lua $(1)$(LUCI_DIR)/controller/bcp38.lua
-       $(INSTALL_DATA) ./files/bcp38-cbi.lua $(1)$(LUCI_DIR)/model/cbi/bcp38.lua
-       $(INSTALL_DIR) $(1)/etc/uci-defaults
-       $(INSTALL_BIN) ./files/uci-defaults-bcp38 $(1)/etc/uci-defaults/luci-bcp38
-endef
-
-define Package/luci-app-bcp38/postinst
-#!/bin/sh
-[ -x /etc/uci-defaults/luci-bcp38 ] && /etc/uci-defaults/luci-bcp38 || exit 0
-endef
-
-define Package/luci-app-bcp38/postrm
-#!/bin/sh
-uci delete ucitrack.@bcp38[0]
-uci commit
-endef
-
-$(eval $(call BuildPackage,luci-app-bcp38))
diff --git a/net/luci-app-bcp38/files/bcp38-cbi.lua b/net/luci-app-bcp38/files/bcp38-cbi.lua
deleted file mode 100644 (file)
index 632074a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
---[[
-LuCI - Lua Configuration Interface
-
-Copyright 2014 Toke Høiland-Jørgensen <toke@toke.dk>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-$Id$
-]]--
-
-local wa = require "luci.tools.webadmin"
-local net = require "luci.model.network".init()
-local ifaces = net:get_interfaces()
-
-m = Map("bcp38", translate("BCP38"),
-       translate("This function blocks packets with private address destinations " ..
-               "from going out onto the internet as per " ..
-               "<a href=\"http://tools.ietf.org/html/bcp38\">BCP 38</a>. " ..
-               "For IPv6, only source specific default routes are installed, so " ..
-               "no BCP38 firewall routes are needed."))
-
-s = m:section(TypedSection, "bcp38", translate("BCP38 config"))
-s.anonymous = true
--- BASIC
-e = s:option(Flag, "enabled", translate("Enable"))
-e.rmempty = false
-
-a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"),
-                               translate("Attempt to automatically detect if the upstream IP " ..
-                                       "will be blocked by the configuration, and add an exception if it will. " ..
-                                       "If this does not work correctly, you can add exceptions manually below."))
-a.rmempty = false
-
-n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " ..
-                                                       "(should be the upstream WAN interface)."))
-for _, iface in ipairs(ifaces) do
-     if iface:is_up() then
-       n:value(iface:name())
-     end
-end
-n.rmempty = false
-
-ma = s:option(DynamicList, "match",
-       translate("Blocked IP ranges"))
-
-ma.datatype = "ip4addr"
-
-nm = s:option(DynamicList, "nomatch",
-       translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. "..
-                                                 "Use to whitelist your upstream network if you're behind a double NAT " ..
-                                                 "and the auto-detection doesn't work."))
-
-nm.datatype = "ip4addr"
-
-
-return m
diff --git a/net/luci-app-bcp38/files/bcp38-controller.lua b/net/luci-app-bcp38/files/bcp38-controller.lua
deleted file mode 100644 (file)
index 7ea2283..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module("luci.controller.bcp38", package.seeall)
-
-function index()
-       entry({"admin", "network", "firewall", "bcp38"},
-               cbi("bcp38"),
-               _("BCP38"), 50).dependent = false
-end
diff --git a/net/luci-app-bcp38/files/uci-defaults-bcp38 b/net/luci-app-bcp38/files/uci-defaults-bcp38
deleted file mode 100755 (executable)
index c204236..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
-       delete ucitrack.@bcp38[-1]
-       add ucitrack bcp38
-        add_list ucitrack.@bcp38[0].affects=firewall
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/net/luci-app-clamav/Makefile b/net/luci-app-clamav/Makefile
deleted file mode 100644 (file)
index fed8e63..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-clamav
-PKG_RELEASE:=20150520
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-PKG_LICENSE:=Apache-2.0
-PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-clamav
-  SECTION:=luci
-  CATEGORY:=LuCI
-  SUBMENU:=3. Applications
-  TITLE:=ClamAV Web UI
-  DEPENDS:=+luci-mod-admin-full +clamav
-endef
-
-define Package/luci-app-clamav/description
- This package will install ClamAV Web UI.
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/luci-app-clamav/install
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller/
-       $(INSTALL_BIN) \
-               ./files/controller/clamav-controller.lua \
-               $(1)/usr/lib/lua/luci/controller/clamav.lua
-
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/
-       $(INSTALL_BIN) \
-               ./files/model/cbi/clamav-cbi.lua \
-               $(1)/usr/lib/lua/luci/model/cbi/clamav.lua
-endef
-
-$(eval $(call BuildPackage,luci-app-clamav))
diff --git a/net/luci-app-clamav/files/controller/clamav-controller.lua b/net/luci-app-clamav/files/controller/clamav-controller.lua
deleted file mode 100644 (file)
index 02f3bfc..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---[[
-
-LuCI ClamAV module
-
-Copyright (C) 2015, Itus Networks, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-       Luka Perkov <luka.perkov@sartura.hr>
-
-]]--
-
-module("luci.controller.clamav", package.seeall)
-
-function index()
-       entry({"admin", "services", "clamav"}, cbi("clamav"), _("ClamAV"))
-end
diff --git a/net/luci-app-clamav/files/model/cbi/clamav-cbi.lua b/net/luci-app-clamav/files/model/cbi/clamav-cbi.lua
deleted file mode 100644 (file)
index ff98139..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
---[[
-
-LuCI ClamAV module
-
-Copyright (C) 2015, Itus Networks, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-       Luka Perkov <luka.perkov@sartura.hr>
-
-]]--
-
-local fs = require "nixio.fs"
-local sys = require "luci.sys"
-require "ubus"
-
-m = Map("clamav", translate("ClamAV"))
-m.on_after_commit = function() luci.sys.call("/etc/init.d/clamav restart") end
-
-s = m:section(TypedSection, "clamav")
-s.anonymous = true
-s.addremove = false
-
-s:tab("tab_advanced", translate("Settings"))
-s:tab("tab_logs", translate("Log"))
-
---------------- Settings --------------
-
-LogFileMaxSize = s:taboption("tab_advanced", Value, "LogFileMaxSize", translate("Max size of log file"))
-LogFileMaxSize:value("512K",  translate("512K"))
-LogFileMaxSize:value("1M",  translate("1M"))
-LogFileMaxSize:value("2M",  translate("2M"))
-LogFileMaxSize.default = "1M"
-
-LogTime = s:taboption("tab_advanced", ListValue, "LogTime", translate("Log time with each message"))
-LogTime:value("no",  translate("No"))
-LogTime:value("yes",  translate("Yes"))
-LogTime.default = "no"
-
-LogVerbose = s:taboption("tab_advanced", ListValue, "LogVerbose", translate("Enable verbose logging"))
-LogVerbose:value("no",  translate("No"))
-LogVerbose:value("yes",  translate("Yes"))
-LogVerbose.default = "no"
-
-ExtendedDetectionInfo = s:taboption("tab_advanced", ListValue, "ExtendedDetectionInfo", translate("Log additional infection info"))
-ExtendedDetectionInfo:value("no",  translate("No"))
-ExtendedDetectionInfo:value("yes",  translate("Yes"))
-ExtendedDetectionInfo.default = "no"
-
-dummy3 = s:taboption("tab_advanced", DummyValue, "")
-dummy4 = s:taboption("tab_advanced", DummyValue, "")
-
-MaxDirectoryRecursion = s:taboption("tab_advanced", Value, "MaxDirectoryRecursion", translate("Max directory scan depth"))
-MaxDirectoryRecursion:value("15",  translate("15"))
-MaxDirectoryRecursion:value("20",  translate("20"))
-MaxDirectoryRecursion.default = "15"
-
-FollowDirectorySymlink = s:taboption("tab_advanced", ListValue, "FollowDirectorySymlink", translate("Follow directory symlinks"))
-FollowDirectorySymlink:value("no",  translate("No"))
-FollowDirectorySymlink:value("yes",  translate("Yes"))
-FollowDirectorySymlink.default = "no"
-
-FollowFileSymlinks = s:taboption("tab_advanced", ListValue, "FollowFileSymlinks", translate("Follow file symlinks"))
-FollowFileSymlinks:value("no",  translate("No"))
-FollowFileSymlinks:value("yes",  translate("Yes"))
-FollowFileSymlinks.default = "no"
-
-DetectPUA = s:taboption("tab_advanced", ListValue, "DetectPUA", translate("Detect possibly unwanted apps"))
-DetectPUA:value("no",  translate("No"))
-DetectPUA:value("yes",  translate("Yes"))
-DetectPUA.default = "no"
-
-ScanPE = s:taboption("tab_advanced", ListValue, "ScanPE", translate("Scan portable executables"))
-ScanPE:value("no",  translate("No"))
-ScanPE:value("yes",  translate("Yes"))
-ScanPE.default = "yes"
-
-ScanELF = s:taboption("tab_advanced", ListValue, "ScanELF", translate("Scan ELF files"))
-ScanELF:value("no",  translate("No"))
-ScanELF:value("yes",  translate("Yes"))
-ScanELF.default = "yes"
-
-DetectBrokenExecutables = s:taboption("tab_advanced", ListValue, "DetectBrokenExecutables", translate("Detect broken executables"))
-DetectBrokenExecutables:value("no",  translate("No"))
-DetectBrokenExecutables:value("yes",  translate("Yes"))
-DetectBrokenExecutables.default = "no"
-
-ScanOLE2 = s:taboption("tab_advanced", ListValue, "ScanOLE2", translate("Scan MS Office and .msi files"))
-ScanOLE2:value("no",  translate("No"))
-ScanOLE2:value("yes",  translate("Yes"))
-ScanOLE2.default = "yes"
-
-ScanPDF = s:taboption("tab_advanced", ListValue, "ScanPDF", translate("Scan pdf files"))
-ScanPDF:value("no",  translate("No"))
-ScanPDF:value("yes",  translate("Yes"))
-ScanPDF.default = "yes"
-
-ScanSWF = s:taboption("tab_advanced", ListValue, "ScanSWF", translate("Scan swf files"))
-ScanSWF:value("no",  translate("No"))
-ScanSWF:value("yes",  translate("Yes"))
-ScanSWF.default = "yes"
-
-ScanMail = s:taboption("tab_advanced", ListValue, "ScanMail", translate("Scan emails"))
-ScanMail:value("no",  translate("No"))
-ScanMail:value("yes",  translate("Yes"))
-ScanMail.default = "yes"
-
-ScanPartialMessages = s:taboption("tab_advanced", ListValue, "ScanPartialMessages", translate("Scan RFC1341 messages split over many emails"))
-ScanPartialMessages:value("no",  translate("No"))
-ScanPartialMessages:value("yes",  translate("Yes"))
-ScanPartialMessages.default = "no"
-
-ScanArchive = s:taboption("tab_advanced", ListValue, "ScanArchive", translate("Scan archives"))
-ScanArchive:value("no",  translate("No"))
-ScanArchive:value("yes",  translate("Yes"))
-ScanArchive.default = "yes"
-
-ArchiveBlockEncrypted = s:taboption("tab_advanced", ListValue, "ArchiveBlockEncrypted", translate("Block encrypted archives"))
-ArchiveBlockEncrypted:value("no",  translate("No"))
-ArchiveBlockEncrypted:value("yes",  translate("Yes"))
-ArchiveBlockEncrypted.default = "no"
-
-dummy5 = s:taboption("tab_advanced", DummyValue, "")
-dummy6 = s:taboption("tab_advanced", DummyValue, "")
-
-StreamMinPort = s:taboption("tab_advanced", Value, "StreamMinPort", translate("Port range, lowest port"))
-StreamMinPort.datatype = "portrange"
-StreamMinPort:value("1024",translate("1024"))
-StreamMinPort.default = "1024"
-
-StreamMaxPort = s:taboption("tab_advanced", Value, "StreamMaxPort", translate("Port range, highest port"))
-StreamMaxPort.datatype = "portrange"
-StreamMaxPort:value("2048",translate("2048"))
-StreamMaxPort.default = "2048"
-
-MaxThreads = s:taboption("tab_advanced", Value, "MaxThreads", translate("Max number of threads"))
-MaxThreads.datatype = "and(uinteger,min(1))"
-MaxThreads:value("10",translate("10"))
-MaxThreads:value("20",translate("20"))
-MaxThreads.default = "10"
-
-SelfCheck = s:taboption("tab_advanced", Value, "SelfCheck", translate("Database check every N sec"))
-SelfCheck.datatype = "and(uinteger,min(1))"
-SelfCheck:value("600",translate("600"))
-SelfCheck.default = "600"
-
-MaxFileSize = s:taboption("tab_advanced", Value, "MaxFileSize", translate("Max size of scanned file"))
-MaxFileSize.datatype = "string"
-MaxFileSize:value("150M",translate("150M"))
-MaxFileSize:value("50M",translate("50M"))
-MaxFileSize.default = "150M"
-
------------------- Log --------------------
-
-clamav_logfile = s:taboption("tab_logs", TextValue, "lines", "")
-clamav_logfile.wrap = "off"
-clamav_logfile.rows = 25
-clamav_logfile.rmempty = true
-
-function clamav_logfile.cfgvalue()
-       local uci = require "luci.model.uci".cursor_state()
-       local file = "/tmp/clamd.log"
-       if file then
-               return fs.readfile(file) or ""
-       else
-               return ""
-       end
-end
-
-function clamav_logfile.write()
-end
-
-return m
diff --git a/net/luci-app-e2guardian/Makefile b/net/luci-app-e2guardian/Makefile
deleted file mode 100644 (file)
index 880f373..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-e2guardian
-PKG_RELEASE:=20150520
-
-PKG_LICENSE:=Apache-2.0
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-e2guardian
-  SECTION:=luci
-  CATEGORY:=LuCI
-  SUBMENU:=3. Applications
-  TITLE:=E2Guardian Web UI
-  DEPENDS:=+luci-mod-admin-full +e2guardian
-  MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
-endef
-
-define Package/luci-app-e2guardian/description
- This package will install E2Guardian Web UI.
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/luci-app-e2guardian/install
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller/
-       $(INSTALL_BIN) \
-               ./files/e2guardian-controller.lua \
-               $(1)/usr/lib/lua/luci/controller/e2guardian.lua
-
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/
-       $(INSTALL_BIN) \
-               ./files//e2guardian-cbi.lua \
-               $(1)/usr/lib/lua/luci/model/cbi/e2guardian.lua
-endef
-
-$(eval $(call BuildPackage,luci-app-e2guardian))
diff --git a/net/luci-app-e2guardian/files/e2guardian-cbi.lua b/net/luci-app-e2guardian/files/e2guardian-cbi.lua
deleted file mode 100644 (file)
index b621321..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
---[[
-
-LuCI E2Guardian module
-
-Copyright (C) 2015, Itus Networks, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-       Luka Perkov <luka.perkov@sartura.hr>
-
-]]--
-
-local fs = require "nixio.fs"
-local sys = require "luci.sys"
-
-m = Map("e2guardian", translate("E2Guardian"))
-m.on_after_commit = function() luci.sys.call("/etc/init.d/e2guardian restart") end
-
-s = m:section(TypedSection, "e2guardian")
-s.anonymous = true
-s.addremove = false
-
-s:tab("tab_general", translate("General Settings"))
-s:tab("tab_additional", translate("Additional Settings"))
-s:tab("tab_logs", translate("Logs"))
-
-
------------------ General Settings Tab -----------------------
-
-filterip = s:taboption("tab_general", Value, "filterip", translate("IP that E2Guardian listens"))
-filterip.datatype = "ip4addr"
-
-filterports = s:taboption("tab_general", Value, "filterports", translate("Port that E2Guardian listens"))
-filterports.datatype = "portrange"
-filterports.placeholder = "0-65535"
-
-proxyip = s:taboption("tab_general", Value, "proxyip", translate("IP address of the proxy"))
-proxyip.datatype = "ip4addr"
-proxyip.default = "127.0.0.1"
-
-proxyport = s:taboption("tab_general", Value, "proxyport", translate("Port of the proxy"))
-proxyport.datatype = "portrange"
-proxyport.placeholder = "0-65535"
-
-languagedir = s:taboption("tab_general", Value, "languagedir", translate("Language dir"))
-languagedir.datatype = "string"
-languagedir.default = "/usr/share/e2guardian/languages"
-
-language = s:taboption("tab_general", Value, "language", translate("Language to use"))
-language.datatype = "string"
-language.default = "ukenglish"
-
-loglevel = s:taboption("tab_general", ListValue, "loglevel", translate("Logging Settings"))
-loglevel:value("0",  translate("none"))
-loglevel:value("1",  translate("just denied"))
-loglevel:value("2",  translate("all text based"))
-loglevel:value("3",  translate("all requests"))
-loglevel.default = "2"
-
-logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits"))
-logexceptionhits:value("0",  translate("never"))
-logexceptionhits:value("1",  translate("log, but don't mark as exceptions"))
-logexceptionhits:value("2",  translate("log and mark"))
-logexceptionhits.default = "2"
-
-logfileformat = s:taboption("tab_general", ListValue, "logfileformat", translate("Log File Format"))
-logfileformat:value("1",  translate("DansgGuardian format, space delimited"))
-logfileformat:value("2",  translate("CSV-style format"))
-logfileformat:value("3",  translate("Squid Log File Format"))
-logfileformat:value("4",  translate("Tab delimited"))
-logfileformat:value("5",  translate("Protex format"))
-logfileformat:value("6",  translate("Protex format with server field blanked"))
-logfileformat.default = "1"
-
-accessdeniedaddress = s:taboption("tab_general", Value, "accessdeniedaddress", translate("Access denied address"),
-translate("Server to which the cgi e2guardian reporting script was copied. Reporting levels 1 and 2 only"))
-accessdeniedaddress.datatype = "string"
-accessdeniedaddress.default = "http://YOURSERVER.YOURDOMAIN/cgi-bin/e2guardian.pl"
-
-usecustombannedimage = s:taboption("tab_general", ListValue, "usecustombannedimage", translate("Banned image replacement"))
-usecustombannedimage:value("on",  translate("Yes"))
-usecustombannedimage:value("off",  translate("No"))
-usecustombannedimage.default = "on"
-
-custombannedimagefile = s:taboption("tab_general", Value, "custombannedimagefile", translate("Custom banned image file"))
-custombannedimagefile.datatype = "string"
-custombannedimagefile.default = "/usr/share/e2guardian/transparent1x1.gif"
-
-usecustombannedflash = s:taboption("tab_general", ListValue, "usecustombannedflash", translate("Banned flash replacement"))
-usecustombannedflash:value("on",  translate("Yes"))
-usecustombannedflash:value("off",  translate("No"))
-usecustombannedflash.default = "on"
-
-custombannedflashfile = s:taboption("tab_general", Value, "custombannedflashfile", translate("Custom banned flash file"))
-custombannedflashfile.datatype = "string"
-custombannedflashfile.default = "/usr/share/e2guardian/blockedflash.swf"
-
-filtergroups = s:taboption("tab_general", Value, "filtergroups", translate("Number of filter groups"))
-filtergroups.datatype = "and(uinteger,min(1))"
-filtergroups.default = "1"
-
-filtergroupslist = s:taboption("tab_general", Value, "filtergroupslist", translate("List of filter groups"))
-filtergroupslist.datatype = "string"
-filtergroupslist.default = "/etc/e2guardian/lists/filtergroupslist"
-
-bannediplist = s:taboption("tab_general", Value, "bannediplist", translate("List of banned IPs"))
-bannediplist.datatype = "string"
-bannediplist.default = "/etc/e2guardian/lists/bannediplist"
-
-exceptioniplist = s:taboption("tab_general", Value, "exceptioniplist", translate("List of IP exceptions"))
-exceptioniplist.datatype = "string"
-exceptioniplist.default = "/etc/e2guardian/lists/exceptioniplist"
-
-perroomblockingdirectory = s:taboption("tab_general", Value, "perroomblockingdirectory", translate("Per-Room blocking definition directory"))
-perroomblockingdirectory.datatype = "string"
-perroomblockingdirectory.default = "/etc/e2guardian/lists/bannedrooms/"
-
-showweightedfound = s:taboption("tab_general", ListValue, "showweightedfound", translate("Show weighted phrases found"))
-showweightedfound:value("on",  translate("Yes"))
-showweightedfound:value("off",  translate("No"))
-showweightedfound.default = "on"
-
-weightedphrasemode = s:taboption("tab_general", ListValue, "weightedphrasemode", translate("Weighted phrase mode"))
-weightedphrasemode:value("0",  translate("off"))
-weightedphrasemode:value("1",  translate("on, normal operation"))
-weightedphrasemode:value("2",  translate("on, phrase found only counts once on a page"))
-weightedphrasemode.default = "2"
-
-urlcachenumber = s:taboption("tab_general", Value, "urlcachenumber", translate("Clean result caching for URLs"))
-urlcachenumber.datatype = "and(uinteger,min(0))"
-urlcachenumber.default = "1000"
-
-urlcacheage = s:taboption("tab_general", Value, "urlcacheage", translate("Age before they should be ignored in seconds"))
-urlcacheage.datatype = "and(uinteger,min(0))"
-urlcacheage.default = "900"
-
-scancleancache = s:taboption("tab_general", ListValue, "scancleancache", translate("Cache for content (AV) scans as 'clean'"))
-scancleancache:value("on",  translate("Yes"))
-scancleancache:value("off",  translate("No"))
-scancleancache.default = "on"
-
-phrasefiltermode = s:taboption("tab_general", ListValue, "phrasefiltermode", translate("Filtering options"))
-phrasefiltermode:value("0",  translate("raw"))
-phrasefiltermode:value("1",  translate("smart"))
-phrasefiltermode:value("2",  translate("both raw and smart"))
-phrasefiltermode:value("3",  translate("meta/title"))
-phrasefiltermode.default = "2"
-
-preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options"))
-preservecase:value("0",  translate("force lower case"))
-preservecase:value("1",  translate("don't change"))
-preservecase:value("2",  translate("scan fist in lower, then in original"))
-preservecase.default = "0"
-
-hexdecodecontent = s:taboption("tab_general", ListValue, "hexdecodecontent", translate("Hex decoding options"))
-hexdecodecontent:value("on",  translate("Yes"))
-hexdecodecontent:value("off",  translate("No"))
-hexdecodecontent.default = "off"
-
-forcequicksearch = s:taboption("tab_general", ListValue, "forcequicksearch", translate("Quick search"))
-forcequicksearch:value("on",  translate("Yes"))
-forcequicksearch:value("off",  translate("No"))
-forcequicksearch.default = "off"
-
-reverseaddresslookups= s:taboption("tab_general", ListValue, "reverseaddresslookups", translate("Reverse lookups for banned site and URLs"))
-reverseaddresslookups:value("on",  translate("Yes"))
-reverseaddresslookups:value("off",  translate("No"))
-reverseaddresslookups.default = "off"
-
-reverseclientiplookups = s:taboption("tab_general", ListValue, "reverseclientiplookups", translate("Reverse lookups for banned and exception IP lists"))
-reverseclientiplookups:value("on",  translate("Yes"))
-reverseclientiplookups:value("off",  translate("No"))
-reverseclientiplookups.default = "off"
-
-logclienthostnames = s:taboption("tab_general", ListValue, "logclienthostnames", translate("Perform reverse lookups on client IPs for successful requests"))
-logclienthostnames:value("on",  translate("Yes"))
-logclienthostnames:value("off",  translate("No"))
-logclienthostnames.default = "off"
-
-createlistcachefiles = s:taboption("tab_general", ListValue, "createlistcachefiles", translate("Build bannedsitelist and bannedurllist cache files"))
-createlistcachefiles:value("on",translate("Yes"))
-createlistcachefiles:value("off",translate("No"))
-createlistcachefiles.default = "on"
-
-prefercachedlists = s:taboption("tab_general", ListValue, "prefercachedlists", translate("Prefer cached list files"))
-prefercachedlists:value("on",  translate("Yes"))
-prefercachedlists:value("off",  translate("No"))
-prefercachedlists.default = "off"
-
-maxuploadsize = s:taboption("tab_general", Value, "maxuploadsize", translate("Max upload size (in Kbytes)"))
-maxuploadsize:value("-1",  translate("no blocking"))
-maxuploadsize:value("0",  translate("complete block"))
-maxuploadsize.default = "-1"
-
-maxcontentfiltersize = s:taboption("tab_general", Value, "maxcontentfiltersize", translate("Max content filter size"),
-translate("The value must not be higher than max content ram cache scan size or 0 to match it"))
-maxcontentfiltersize.datatype = "and(uinteger,min(0))"
-maxcontentfiltersize.default = "256"
-
-maxcontentramcachescansize = s:taboption("tab_general", Value, "maxcontentramcachescansize", translate("Max content ram cache scan size"),
-translate("This is the max size of file that DG will download and cache in RAM"))
-maxcontentramcachescansize.datatype = "and(uinteger,min(0))"
-maxcontentramcachescansize.default = "2000"
-
-maxcontentfilecachescansize = s:taboption("tab_general", Value, "maxcontentfilecachescansize", translate("Max content file cache scan size"))
-maxcontentfilecachescansize.datatype = "and(uinteger,min(0))"
-maxcontentfilecachescansize.default = "20000"
-
-proxytimeout = s:taboption("tab_general", Value, "proxytimeout", translate("Proxy timeout (5-100)"))
-proxytimeout.datatype = "range(5,100)"
-proxytimeout.default = "20"
-
-proxyexchange = s:taboption("tab_general", Value, "proxyexchange", translate("Proxy header excahnge (20-300)"))
-proxyexchange.datatype = "range(20,300)"
-proxyexchange.default = "20"
-
-pcontimeout = s:taboption("tab_general", Value, "pcontimeout", translate("Pconn timeout"),
-translate("How long a persistent connection will wait for other requests"))
-pcontimeout.datatype = "range(5,300)"
-pcontimeout.default = "55"
-
-filecachedir = s:taboption("tab_general", Value, "filecachedir", translate("File cache directory"))
-filecachedir.datatype = "string"
-filecachedir.default = "/tmp"
-
-deletedownloadedtempfiles = s:taboption("tab_general", ListValue, "deletedownloadedtempfiles", translate("Delete file cache after user completes download"))
-deletedownloadedtempfiles:value("on",  translate("Yes"))
-deletedownloadedtempfiles:value("off", translate("No"))
-deletedownloadedtempfiles.default = "on"
-
-initialtrickledelay = s:taboption("tab_general", Value, "initialtrickledelay", translate("Initial Trickle delay"),
-translate("Number of seconds a browser connection is left waiting before first being sent *something* to keep it alive"))
-initialtrickledelay.datatype = "and(uinteger,min(0))"
-initialtrickledelay.default = "20"
-
-trickledelay = s:taboption("tab_general", Value, "trickledelay", translate("Trickle delay"),
-translate("Number of seconds a browser connection is left waiting before being sent more *something* to keep it alive"))
-trickledelay.datatype = "and(uinteger,min(0))"
-trickledelay.default = "10"
-
-downloadmanager = s:taboption("tab_general", Value, "downloadmanager", translate("Download manager"))
-downloadmanager.datatype = "string"
-downloadmanager.default = "/etc/e2guardian/downloadmanagers/default.conf"
-
-contentscannertimeout = s:taboption("tab_general", Value, "contentscannertimeout", translate("Content scanner timeout"))
-contentscannertimeout.datatype = "and(uinteger,min(0))"
-contentscannertimeout.default = "60"
-
-contentscanexceptions = s:taboption("tab_general", ListValue, "contentscanexceptions", translate("Content scan exceptions"))
-contentscanexceptions:value("on",  translate("Yes"))
-contentscanexceptions:value("off", translate("No"))
-contentscanexceptions.default = "off"
-
-recheckreplacedurls = s:taboption("tab_general", ListValue, "recheckreplacedurls", translate("e-check replaced URLs"))
-recheckreplacedurls:value("on",  translate("Yes"))
-recheckreplacedurls:value("off", translate("No"))
-recheckreplacedurls.default = "off"
-
-forwardedfor = s:taboption("tab_general", ListValue, "forwardedfor", translate("Misc setting: forwardedfor"),
-translate("If on, it may help solve some problem sites that need to know the source ip."))
-forwardedfor:value("on",  translate("Yes"))
-forwardedfor:value("off", translate("No"))
-forwardedfor.default = "off"
-
-usexforwardedfor = s:taboption("tab_general", ListValue, "usexforwardedfor", translate("Misc setting: usexforwardedfor"),
-translate("This is for when you have squid between the clients and E2Guardian"))
-usexforwardedfor:value("on",  translate("Yes"))
-usexforwardedfor:value("off", translate("No"))
-usexforwardedfor.default = "off"
-
-logconnectionhandlingerrors = s:taboption("tab_general", ListValue, "logconnectionhandlingerrors", translate("Log debug info about log()ing and accept()ing"))
-logconnectionhandlingerrors:value("on",  translate("Yes"))
-logconnectionhandlingerrors:value("off", translate("No"))
-logconnectionhandlingerrors.default = "on"
-
-logchildprocesshandling = s:taboption("tab_general", ListValue, "logchildprocesshandling", translate("Log child process handling"))
-logchildprocesshandling:value("on",  translate("Yes"))
-logchildprocesshandling:value("off", translate("No"))
-logchildprocesshandling.default = "off"
-
-maxchildren = s:taboption("tab_general", Value, "maxchildren", translate("Max number of processes to spawn"))
-maxchildren.datatype = "and(uinteger,min(0))"
-maxchildren.default = "180"
-
-minchildren = s:taboption("tab_general", Value, "minchildren", translate("Min number of processes to spawn"))
-minchildren.datatype = "and(uinteger,min(0))"
-minchildren.default = "20"
-
-minsparechildren = s:taboption("tab_general", Value, "minsparechildren", translate("Min number of processes to keep ready"))
-minsparechildren.datatype = "and(uinteger,min(0))"
-minsparechildren.default = "16"
-
-preforkchildren = s:taboption("tab_general", Value, "preforkchildren", translate("Sets minimum nuber of processes when it runs out"))
-preforkchildren.datatype = "and(uinteger,min(0))"
-preforkchildren.default = "10"
-
-maxsparechildren = s:taboption("tab_general", Value, "maxsparechildren", translate("Sets the maximum number of processes to have doing nothing"))
-maxsparechildren.datatype = "and(uinteger,min(0))"
-maxsparechildren.default = "32"
-
-maxagechildren = s:taboption("tab_general", Value, "maxagechildren", translate("Max age of child process"))
-maxagechildren.datatype = "and(uinteger,min(0))"
-maxagechildren.default = "500"
-
-maxips = s:taboption("tab_general", Value, "maxips", translate("Max number of clinets allowed to connect"))
-maxips:value("0",  translate("no limit"))
-maxips.default = "0"
-
-ipipcfilename = s:taboption("tab_general", Value, "ipipcfilename", translate("IP list IPC server directory and filename"))
-ipipcfilename.datatype = "string"
-ipipcfilename.default = "/tmp/.dguardianipc"
-
-urlipcfilename = s:taboption("tab_general", Value, "urlipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
-urlipcfilename.datatype = "string"
-urlipcfilename.default = "/tmp/.dguardianurlipc"
-
-ipcfilename = s:taboption("tab_general", Value, "ipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
-ipcfilename.datatype = "string"
-ipcfilename.default = "/tmp/.dguardianipipc"
-
-nodeamon = s:taboption("tab_general", ListValue, "nodeamon", translate("Disable deamoning"))
-nodeamon:value("on",  translate("Yes"))
-nodeamon:value("off", translate("No"))
-nodeamon.default = "off"
-
-nologger = s:taboption("tab_general", ListValue, "nologger", translate("Disable logger"))
-nologger:value("on",  translate("Yes"))
-nologger:value("off", translate("No"))
-nologger.default = "off"
-
-logadblock = s:taboption("tab_general", ListValue, "logadblock", translate("Enable logging of ADs"))
-logadblock:value("on",  translate("Yes"))
-logadblock:value("off", translate("No"))
-logadblock.default = "off"
-
-loguseragent = s:taboption("tab_general", ListValue, "loguseragent", translate("Enable logging of client user agent"))
-loguseragent:value("on",  translate("Yes"))
-loguseragent:value("off", translate("No"))
-loguseragent.default = "off"
-
-softrestart = s:taboption("tab_general", ListValue, "softrestart", translate("Enable soft restart"))
-softrestart:value("on",  translate("Yes"))
-softrestart:value("off", translate("No"))
-softrestart.default = "off"
-
-
------------------------- Additional Settings Tab ----------------------------
-
-e2guardian_config_file = s:taboption("tab_additional", TextValue, "_data", "")
-e2guardian_config_file.wrap = "off"
-e2guardian_config_file.rows = 25
-e2guardian_config_file.rmempty = false
-
-function e2guardian_config_file.cfgvalue()
-       local uci = require "luci.model.uci".cursor_state()
-       file = "/etc/e2guardian/e2guardianf1.conf"
-       if file then
-               return fs.readfile(file) or ""
-       else
-               return ""
-       end
-end
-
-function e2guardian_config_file.write(self, section, value)
-       if value then
-               local uci = require "luci.model.uci".cursor_state()
-               file = "/etc/e2guardian/e2guardianf1.conf"
-               fs.writefile(file, value:gsub("\r\n", "\n"))
-       end
-end
-
-
----------------------------- Logs Tab -----------------------------
-
-e2guardian_logfile = s:taboption("tab_logs", TextValue, "lines", "")
-e2guardian_logfile.wrap = "off"
-e2guardian_logfile.rows = 25
-e2guardian_logfile.rmempty = true
-
-function e2guardian_logfile.cfgvalue()
-       local uci = require "luci.model.uci".cursor_state()
-       file = "/tmp/e2guardian/access.log"
-       if file then
-               return fs.readfile(file) or ""
-       else
-               return "Can't read log file"
-       end
-end
-
-function e2guardian_logfile.write()
-        return ""
-end
-
-return m
diff --git a/net/luci-app-e2guardian/files/e2guardian-controller.lua b/net/luci-app-e2guardian/files/e2guardian-controller.lua
deleted file mode 100644 (file)
index dd545f5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---[[
-
-LuCI E2Guardian module
-
-Copyright (C) 2015, Itus Networks, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-       Luka Perkov <luka.perkov@sartura.hr>
-
-]]--
-
-module("luci.controller.e2guardian", package.seeall)
-
-function index()
-       entry({"admin", "services", "e2guardian"}, cbi("e2guardian"), _("E2Guardian"))
-end
diff --git a/net/luci-app-squid/Makefile b/net/luci-app-squid/Makefile
deleted file mode 100644 (file)
index 91ce724..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-squid
-PKG_RELEASE:=20150608
-
-PKG_LICENSE:=Apache-2.0
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-squid
-  SECTION:=luci
-  CATEGORY:=LuCI
-  SUBMENU:=3. Applications
-  TITLE:=Squid Web UI
-  DEPENDS:=+luci-mod-admin-full +squid
-  MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
-endef
-
-define Package/luci-app-squid/description
- This package will install Squid Web UI.
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/luci-app-squid/install
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller/
-       $(INSTALL_BIN) \
-               ./files/squid-controller.lua \
-               $(1)/usr/lib/lua/luci/controller/squid.lua
-
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/
-       $(INSTALL_BIN) \
-               ./files//squid-cbi.lua \
-               $(1)/usr/lib/lua/luci/model/cbi/squid.lua
-endef
-
-$(eval $(call BuildPackage,luci-app-squid))
diff --git a/net/luci-app-squid/files/squid-cbi.lua b/net/luci-app-squid/files/squid-cbi.lua
deleted file mode 100644 (file)
index 0ac554a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---[[
-
-LuCI Squid module
-
-Copyright (C) 2015, OpenWrt.org
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-
-]]--
-
-local fs = require "nixio.fs"
-local sys = require "luci.sys"
-require "ubus"
-
-m = Map("squid", translate("Squid"))
-m.on_after_commit = function() luci.sys.call("/etc/init.d/squid restart") end
-
-s = m:section(TypedSection, "squid")
-s.anonymous = true
-s.addremove = false
-
-s:tab("general", translate("General Settings"))
-
-http_port = s:taboption("general", Value, "http_port", translate("Port"))
-http_port.datatype = "portrange"
-http_port.placeholder = "0-65535"
-
-visible_hostname = s:taboption("general", Value, "visible_hostname", translate("Visible Hostname"))
-visible_hostname.datatype="string"
-visible_hostname.placeholder = "OpenWrt"
-
-coredump_dir = s:taboption("general", Value, "coredump_dir", translate("Coredump files directory"))
-coredump_dir.datatype="string"
-coredump_dir.placeholder = "/tmp/squid"
-
-s:tab("advanced", translate("Advanced Settings"))
-
-squid_config_file = s:taboption("advanced", TextValue, "_data", "")
-squid_config_file.wrap = "off"
-squid_config_file.rows = 25
-squid_config_file.rmempty = false
-
-function squid_config_file.cfgvalue()
-       local uci = require "luci.model.uci".cursor_state()
-       local file = uci:get("squid", "squid", "config_file")
-       if file then
-               return fs.readfile(file) or ""
-       else
-               return ""
-       end
-end
-
-function squid_config_file.write(self, section, value)
-    if value then
-               local uci = require "luci.model.uci".cursor_state()
-               local file = uci:get("squid", "squid", "config_file")
-       fs.writefile(file, value:gsub("\r\n", "\n"))
-    end
-end
-
-return m
diff --git a/net/luci-app-squid/files/squid-controller.lua b/net/luci-app-squid/files/squid-controller.lua
deleted file mode 100644 (file)
index 09946a1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
---[[
-
-LuCI Squid module
-
-Copyright (C) 2015, OpenWrt.org
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
-
-]]--
-
-module("luci.controller.squid", package.seeall)
-
-function index()
-       entry({"admin", "services", "squid"}, cbi("squid"), _("Squid"))
-end
index 08e36e85b583660e8ee3e76ebf152ad798a78c39..3446d151426291a5c2dc4929a6d15099ace0f072 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=net-snmp
 PKG_VERSION:=5.7.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/net-snmp
index e21dc5771dc9bd1bdf6bde450810e392215ee8aa..ac152d83eb91d920e46e90309ae7d72620203343 100644 (file)
@@ -83,3 +83,7 @@ config exec
        option args     /proc/sys/fs/file-nr
 #      option miboid   1.2.3.4
 
+config engineid
+#      option engineid 'LEDE'
+       option engineidtype '3'
+       option engineidnic 'eth0'
index 11dc381b27239af7018ec47074fe3476295d3145..7df67de28ea9c8c89a3323ea74068880d9617e73 100644 (file)
@@ -198,6 +198,18 @@ snmpd_disk_add() {
         echo "$disk $partition $size" >> $CONFIGFILE
 }
 
+snmpd_engineid_add() {
+       local cfg="$1"
+
+       config_get engineid "$cfg" engineid
+       [ -n "$engineid" ] && echo "engineID $engineid" >> $CONFIGFILE
+       config_get engineidtype "$cfg" engineidtype
+       [ "$engineidtype" -ge 1 -a "$engineidtype" -le 3 ] && \
+               echo "engineIDType $engineidtype" >> $CONFIGFILE
+       config_get engineidnic "$cfg" engineidnic
+       [ -n "$engineidnic" ] && echo "engineIDNic $engineidnic" >> $CONFIGFILE
+}
+
 start_service() {
        [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
 
@@ -221,6 +233,7 @@ start_service() {
        config_foreach snmpd_pass_add pass
        config_foreach snmpd_exec_add exec
        config_foreach snmpd_disk_add disk
+       config_foreach snmpd_engineid_add engineid
        
        procd_set_param command $PROG -Lf /dev/null -f
        procd_set_param file $CONFIGFILE
index bf6b834c2989a0fa48e38250eb7923bc70aeebf6..4cec04026e21e756937e16b40e5f41068acc01e0 100644 (file)
@@ -66,6 +66,11 @@ config NGINX_HTTP_AUTH_BASIC
        prompt "Enable HTTP auth basic"
        default y
 
+config NGINX_HTTP_AUTH_REQUEST
+       bool
+       prompt "Enable HTTP auth request module"
+       default n
+
 config NGINX_HTTP_AUTOINDEX
        bool
        prompt "Enable HTTP autoindex module"
@@ -167,6 +172,11 @@ config NGINX_HTTP_CACHE
        prompt "Enable HTTP cache"
        default y
 
+config NGINX_HTTP_V2
+       bool
+       prompt "Enable HTTP_V2 module"
+       default n
+
 config NGINX_PCRE
        bool
        prompt "Enable PCRE library usage"
@@ -182,4 +192,14 @@ config NGINX_LUA
        prompt "Enable Lua module"
        default n
 
+config NGINX_HTTP_REAL_IP
+       bool
+       prompt "Enable HTTP real ip module"
+       default n
+
+config NGINX_HTTP_SECURE_LINK
+       bool
+       prompt "Enable HTTP secure link module"
+       default n
+
 endmenu
index 5ebdaa51d5cd761fcb60814c8bee5cb04af6a067..42f831ba0bb0af08757286196b1b9e7120c2b2dc 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nginx
-PKG_VERSION:=1.10.2
+PKG_VERSION:=1.10.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://nginx.org/download/
-PKG_MD5SUM:=e8f5f4beed041e63eb97f9f4f55f3085
+PKG_MD5SUM:=204a20cb4f0b0c9db746c630d89ff4ea
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=2-clause BSD-like license
 
@@ -33,6 +33,7 @@ PKG_CONFIG_DEPENDS := \
        CONFIG_NGINX_HTTP_USERID \
        CONFIG_NGINX_HTTP_ACCESS \
        CONFIG_NGINX_HTTP_AUTH_BASIC \
+       CONFIG_NGINX_HTTP_AUTH_REQUEST \
        CONFIG_NGINX_HTTP_AUTOINDEX \
        CONFIG_NGINX_HTTP_GEO \
        CONFIG_NGINX_HTTP_MAP \
@@ -54,9 +55,12 @@ PKG_CONFIG_DEPENDS := \
        CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE \
        CONFIG_NGINX_HTTP_UPSTREAM_ZONE \
        CONFIG_NGINX_HTTP_CACHE \
+       CONFIG_NGINX_HTTP_V2 \
        CONFIG_NGINX_PCRE \
        CONFIG_NGINX_NAXSI \
-       CONFIG_NGINX_LUA
+       CONFIG_NGINX_LUA \
+       CONFIG_NGINX_HTTP_REAL_IP \
+       CONFIG_NGINX_HTTP_SECURE_LINK
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -133,6 +137,9 @@ endif
 ifneq ($(CONFIG_NGINX_HTTP_AUTH_BASIC),y)
   ADDITIONAL_MODULES += --without-http_auth_basic_module
 endif
+ifeq ($(CONFIG_NGINX_HTTP_AUTH_REQUEST),y)
+  ADDITIONAL_MODULES += --with-http_auth_request_module
+endif
 ifneq ($(CONFIG_NGINX_HTTP_AUTOINDEX),y)
   ADDITIONAL_MODULES += --without-http_autoindex_module
 endif
@@ -192,6 +199,15 @@ endif
 ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE),y)
   ADDITIONAL_MODULES += --without-http_upstream_keepalive_module
 endif
+ifeq ($(CONFIG_NGINX_HTTP_V2),y)
+  ADDITIONAL_MODULES += --with-http_v2_module
+endif
+ifeq ($(CONFIG_NGINX_HTTP_REAL_IP),y)
+  ADDITIONAL_MODULES += --with-http_realip_module
+endif
+ifeq ($(CONFIG_NGINX_HTTP_SECURE_LINK),y)
+  ADDITIONAL_MODULES += --with-http_secure_link_module
+endif
 
 TARGET_CFLAGS += -fvisibility=hidden -ffunction-sections -fdata-sections -DNGX_LUA_NO_BY_LUA_BLOCK
 TARGET_LDFLAGS += -Wl,--gc-sections
index 3778609caf7ac5b1983df7ccbddf5757dd3aa206..829e18eb13586936e8d91e397612797e27ac1a8d 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ngircd
-PKG_VERSION:=23
+PKG_VERSION:=24
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Claudio Leite <leitec@staticky.com>
 PKG_LICENSE:=GPL-2.0
@@ -18,7 +18,7 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= \
         http://ngircd.barton.de/pub/ngircd/ \
         ftp://ftp.berlios.de/pub/ngircd/
-PKG_MD5SUM:=a58e0075fea60176fa7df092ca7e2c6a
+PKG_MD5SUM:=59b2d56f6eb55b85225e91ebfbfc848b
 
 PKG_INSTALL:=1
 
index b48102f34f131568bfada501da6b75d46b0f8b62..b7f403b782012f7a422ed6dc4b8e56c257e51029 100644 (file)
@@ -1,77 +1,3 @@
-       config NUT_SERVER
-               depends on PACKAGE_nut
-               bool "Include server components (upsd)"
-               help
-                       upsd is responsible for serving the data from the drivers to the
-                       clients. It connects to each driver and maintains a local cache of the
-                       current state. Queries from the clients are served from this cache, so
-                       delays are minimal. This program is essential, and must be running at
-                       all times to actually make any use out of the drivers and clients.
-               default y
-               
-       config NUT_CLIENTS_UPSC
-               depends on PACKAGE_nut
-               bool "Include command line client (upsc)"
-               help
-                       upsc is provided as a quick way to poll the status of a UPS server. It
-                       can be used inside shell scripts and other programs that need UPS data
-                       but don't want to include the full interface.
-               default y
-               
-       config NUT_CLIENTS_UPSLOG
-               depends on PACKAGE_nut
-               bool "Include logging client (upslog)"
-               help
-                       upslog is a daemon that will poll a UPS at periodic intervals, fetch the
-                       variables that interest you, format them, and write them to a file.
-               default n
-               
-       config NUT_CLIENTS_UPSCMD
-               depends on PACKAGE_nut
-               bool "Include UPS controller (upscmd)"
-               help
-                       upscmd allows you to invoke "instant commands" in your UPS hardware. Not
-                       all hardware supports this, so check the list with -l to see if anything
-                       will work on your equipment. On hardware that supports it, you can use
-                       this program to start and stop battery tests, invoke a front panel test
-                       (beep!), turn the load on or off, and more.
-               default n
-               
-       config NUT_CLIENTS_UPSRW
-               depends on PACKAGE_nut
-               bool "Include UPS variable editor (upsrw)"
-               help
-                       upsrw allows you to view and change the read/write variables inside your
-                       UPS. It sends commands via the upsd to your driver, which configures the
-                       hardware for you. The list of variables that allow you to change their
-                       values is based on the capabilities of your UPS equipment. Not all
-                       models support this feature. Typically, cheaper hardware does not
-                       support any of them.
-               default n
-               
-       config NUT_CLIENTS_UPSMON
-               depends on PACKAGE_nut
-               bool "Include monitor and shutdown controller (upsmon)"
-               help
-                       upsmon is the client process that is responsible for the most important
-                       part of UPS monitoring--shutting down the system when the power goes
-                       out. It can call out to other helper programs for notification purposes
-                       during power events. upsmon can monitor multiple systems using a single
-                       process. Every UPS that is defined in the upsmon.conf configuration file
-                       is assigned a power value and a type (slave or master).
-               default y
-               
-       config NUT_CLIENTS_UPSSCHED
-               depends on NUT_CLIENTS_UPSMON
-               bool "Include helper for triggering events from upsmon (upssched)"
-               help
-                       upssched was created to allow users to execute programs at times relative
-                       to events being monitored by upsmon. The original purpose was to allow
-                       for a shutdown to occur after some fixed period on battery, but there are
-                       other uses that are possible.
-                       You can alternatively write your own script and save some space.
-               default n
-       
        config NUT_SSL
                depends on PACKAGE_nut
                bool "Build with support for OpenSSL"
                help
                        If you have a UPS you can connect to via SNMP, select this.
                default n
-               
+
+       config NUT_DRIVER_SERIAL
+               depends on PACKAGE_nut
+               bool "Build with suport for serial drivers"
+               help
+                       If you have a UPS connected via serial cable, select this.
+               default n
index a6ed1c647066b7c03ff6ced67cd9a0fcd814f78e..714a59879b00c386494f35f282def982d2fc7458 100644 (file)
@@ -1,5 +1,5 @@
-#
-# Copyright (C) 2006-2015 OpenWrt.org
+
+# Copyright (C) 2006-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,28 +9,22 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nut
 PKG_VERSION:=2.7.4
-PKG_RELEASE:=2
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
 PKG_MD5SUM:=3ba53656933d7471f95140b32a5b8d5c
-PKG_MAINTAINER:=Martin Rowe <martin.p.rowe@gmail.com>
+PKG_MAINTAINER:=Daniel Dickinson <lede@cshore.thecshore.com>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=LICENSE-GPL2
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/nut-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_INSTALL:=1
 
 PKG_CONFIG_DEPENDS:= \
-       CONFIG_NUT_CLIENTS_UPSC \
-       CONFIG_NUT_CLIENTS_UPSCMD \
-       CONFIG_NUT_CLIENTS_UPSLOG \
-       CONFIG_NUT_CLIENTS_UPSMON \
-       CONFIG_NUT_CLIENTS_UPSRW \
-       CONFIG_NUT_CLIENTS_UPSSCHED \
        CONFIG_NUT_DRIVER_SNMP \
        CONFIG_NUT_DRIVER_USB \
-       CONFIG_NUT_SERVER \
+       CONFIG_NUT_DRIVER_SERIAL \
        CONFIG_NUT_SSL
 
 include $(INCLUDE_DIR)/package.mk
@@ -39,10 +33,10 @@ define Package/nut/Default
        SECTION:=net
        CATEGORY:=Network
        URL:=http://www.networkupstools.org/
-       DEPENDS:=nut
+       TITLE:=Network UPS Tools (NUT)
 endef
 
-define Package/nut/description
+define Package/nut/description/Default
 Network UPS Tools (NUT) is a client/server monitoring system that
 allows computers to share uninterruptible power supply (UPS) and
 power distribution unit (PDU) hardware. Clients access the hardware
@@ -52,68 +46,241 @@ endef
 
 define Package/nut
        $(call Package/nut/Default)
-       TITLE:=Network UPS Tools
-       DEPENDS:= \
-               +libpthread \
-               +NUT_DRIVER_SNMP:libnetsnmp \
-               +NUT_DRIVER_USB:libusb-compat \
-               +NUT_SSL:libopenssl
        MENU:=1
 endef
 
+define Package/nut/description
+$(call Package/nut/description/Default)
+endef
+
 define Package/nut/config
        source "$(SOURCE)/Config.in"
 endef
 
-define Package/nut/conffiles
-/etc/nut/nut.conf
-$(if $(CONFIG_NUT_CLIENTS_UPSMON),/etc/nut/upsmon.conf)
-$(if $(CONFIG_NUT_CLIENTS_UPSSCHED),/etc/nut/upssched.conf)
-$(if $(CONFIG_NUT_SERVER),/etc/nut/ups.conf)
-$(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.conf)
-$(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.users)
+define Package/nut/install
+       true
 endef
 
-define Package/nut/install
+define Package/nut-server/install
+       $(INSTALL_DIR) $(1)/etc/nut
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_DIR) $(1)/usr/share/nut
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/nut-server.init $(1)/etc/init.d/nut-server
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/upsd $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/upsdrvctl $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/nut/cmdvartab $(1)/usr/share/nut/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/nut/driver.list $(1)/usr/share/nut/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/nut_server $(1)/etc/config/nut_server
+       ln -sf /var/etc/nut/nut.conf $(1)/etc/nut/nut.conf
+       ln -sf /var/etc/nut/ups.conf $(1)/etc/nut/ups.conf
+       ln -sf /var/etc/nut/upsd.users  $(1)/etc/nut/upsd.users
+       ln -sf /var/etc/nut/upsd.conf $(1)/etc/nut/upsd.conf
+endef
+
+define Package/nut-common
+       $(call Package/nut/Default)
+       TITLE+= (common)
+       DEPENDS:= nut \
+               +NUT_DRIVER_SNMP:libnetsnmp \
+               +NUT_DRIVER_USB:libusb-compat \
+               +NUT_SSL:libopenssl \
+               +PACKAGE_libwrap:libwrap
+endef
+
+define Package/nut-common/description
+$(call Package/nut/description/Default)
+This package contains the common files.
+endef
+
+define Package/nut-common/install
        $(INSTALL_DIR) $(1)/etc/nut
-       $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libupsclient.so* $(1)/usr/lib/
+       ln -sf /var/etc/nut/nut.conf $(1)/etc/nut/nut.conf
+endef
+
+define Package/nut-server
+       $(call Package/nut/Default)
+       TITLE+= (server)
+       DEPENDS:=nut +nut-common
+endef
+
+define Package/nut-server/description
+$(call Package/nut/description/Default)
+upsd is responsible for serving the data from the drivers to the
+clients. It connects to each driver and maintains a local cache of the
+current state. Queries from the clients are served from this cache, so
+delays are minimal. This program is essential, and must be running at
+all times to actually make any use out of the drivers and clients.
+endef
+
+define Package/nut-server/conffiles
+/etc/config/nut_server
+endef
+
+define Package/nut-upsmon
+  $(call Package/nut/Default)
+       TITLE+= (monitor)
+       DEPENDS:=nut +nut-common
+       USERID:=nut=113:nut=113
+endef
+
+define Package/nut-upsmon/description
+$(call Package/nut/description/Default)
+upsmon is the client process that is responsible for the most important
+part of UPS monitoring--shutting down the system when the power goes
+out. It can call out to other helper programs for notification purposes
+during power events. upsmon can monitor multiple systems using a single
+process. Every UPS that is defined in the upsmon.conf configuration file
+is assigned a power value and a type (slave or master).
+endef
+
+define Package/nut-upsmon/conffiles
+/etc/config/nut_monitor
+endef
+
+define Package/nut-upsmon/install
+       $(INSTALL_DIR) $(1)/etc/nut
        $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/nut.conf.sample $(1)/etc/nut/nut.conf
-       $(if $(or $(CONFIG_NUT_CLIENTS_UPSC),\
-               $(CONFIG_NUT_CLIENTS_UPSCMD),\
-               $(CONFIG_NUT_CLIENTS_LOG),\
-               $(CONFIG_NUT_CLIENTS_UPSRW),\
-               $(CONFIG_NUT_CLIENTS_UPSMON),\
-               $(CONFIG_NUT_CLIENTS_UPSSCHED)),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libupsclient.so* $(1)/usr/lib/)
-       $(if $(or $(CONFIG_NUT_SERVER),\
-               $(CONFIG_NUT_CLIENTS_UPSMON)),$(INSTALL_DIR) $(1)/etc/init.d)
-       $(if $(CONFIG_NUT_SERVER),$(INSTALL_DIR) $(1)/lib/nut)
-       $(if $(CONFIG_NUT_SERVER),$(INSTALL_DIR) $(1)/usr/share/nut)
-       $(if $(CONFIG_NUT_SERVER),$(CP) ./files/nut-server.init $(1)/etc/init.d/)
-       $(if $(CONFIG_NUT_SERVER),$(CP) $(PKG_INSTALL_DIR)/usr/sbin/upsd $(1)/usr/sbin)
-       $(if $(CONFIG_NUT_SERVER),$(CP) $(PKG_INSTALL_DIR)/usr/sbin/upsdrvctl $(1)/usr/sbin)
-       $(if $(CONFIG_NUT_SERVER),$(CP) $(PKG_INSTALL_DIR)/usr/share/nut/cmdvartab $(1)/usr/share/nut/)
-       $(if $(CONFIG_NUT_SERVER),$(CP) $(PKG_INSTALL_DIR)/usr/share/nut/driver.list $(1)/usr/share/nut/)
-       $(if $(CONFIG_NUT_SERVER),$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/ups.conf.sample $(1)/etc/nut/ups.conf)
-       $(if $(CONFIG_NUT_SERVER),$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsd.conf.sample $(1)/etc/nut/upsd.conf)
-       $(if $(CONFIG_NUT_SERVER),$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsd.users.sample $(1)/etc/nut/upsd.users)
-       $(if $(CONFIG_NUT_CLIENTS_UPSC),$(CP) $(PKG_INSTALL_DIR)/usr/bin/upsc $(1)/usr/bin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSCMD),$(CP) $(PKG_INSTALL_DIR)/usr/bin/upscmd $(1)/usr/bin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSLOG),$(CP) $(PKG_INSTALL_DIR)/usr/bin/upslog $(1)/usr/bin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSRW),$(CP) $(PKG_INSTALL_DIR)/usr/bin/upsrw $(1)/usr/bin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSMON),$(CP) ./files/nut-monitor.init $(1)/etc/init.d/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSMON),$(CP) $(PKG_INSTALL_DIR)/usr/sbin/upsmon $(1)/usr/sbin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSMON),$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsmon.conf.sample $(1)/etc/nut/upsmon.conf)
-       $(if $(CONFIG_NUT_CLIENTS_UPSSCHED),$(CP) $(PKG_INSTALL_DIR)/usr/bin/upssched-cmd $(1)/usr/bin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSSCHED),$(CP) $(PKG_INSTALL_DIR)/usr/sbin/upssched $(1)/usr/sbin/)
-       $(if $(CONFIG_NUT_CLIENTS_UPSSCHED),$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upssched.conf.sample $(1)/etc/nut/upssched.conf)
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/nut-monitor.init $(1)/etc/init.d/nut-monitor
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/upsmon $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/nut_monitor $(1)/etc/config/nut_monitor
+       ln -sf /var/etc/nut/upsmon.conf $(1)/etc/nut/upsmon.conf
+endef
+
+define Package/nut-upsmon-sendmail-notify
+       $(call Package/nut/Default)
+       TITLE+= (upsmon with notifications via sendmail)
+       DEPENDS:=nut +nut-upsmon
+       CONFLICTS:=nut-upssched
+endef
+
+define Package/nut-upsmon-sendmail-notify/description
+$(call Package/nut/description/Default)
+upsmon with default notification via sendmail
+endef
+
+define Package/nut-upsmon-sendmail-notify/install
+       $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/uci-defaults
+       $(INSTALL_BIN) ./files/nut-sendmail-notify $(1)/usr/bin/
+       $(INSTALL_DATA) ./files/nut-sendmail-notify.default $(1)/etc/uci-defaults/nut-sendmail-notify
+endef
+
+define Package/nut-upsc
+       $(call Package/nut/Default)
+       TITLE+= (upsc command)
+       DEPENDS:=nut +nut-common
+endef
+
+define Package/nut-upsc/description
+$(call Package/nut/description/Default)
+upsc is provided as a quick way to poll the status of a UPS server. It
+can be used inside shell scripts and other programs that need UPS data
+but don not want to include the full interface.
+endef
+
+define Package/nut-upsc/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/upsc $(1)/usr/bin
+endef
+
+define Package/nut-upslog
+       $(call Package/nut/Default)
+       TITLE+= (logging client)
+       DEPENDS:=nut +nut-common
+endef
+
+define Package/nut-upslog/description
+$(call Package/nut/description/Default)
+upslog is a daemon that will poll a UPS at periodic intervals, fetch the
+variables that interest you, format them, and write them to a file.
+endef
+
+define Package/nut-upslog/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/upslog $(1)/usr/bin/
+endef
+
+define Package/nut-upscmd
+       $(call Package/nut/Default)
+       TITLE+= (controller)
+       DEPENDS:=nut +nut-common
+endef
+
+define Package/nut-upscmd/description
+$(call Package/nut/description/Default)
+upscmd allows you to invoke "instant commands" in your UPS hardware. Not
+all hardware supports this, so check the list with -l to see if anything
+will work on your equipment. On hardware that supports it, you can use
+this program to start and stop battery tests, invoke a front panel test
+(beep!), turn the load on or off, and more.
+endef
+
+define Package/nut-upscmd/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/upscmd $(1)/usr/bin/
+endef
+
+define Package/nut-upsrw
+       $(call Package/nut/Default)
+       TITLE+= (variable editor)
+       DEPENDS:=nut +nut-common
+endef
+
+define Package/nut-upsrw/description
+$(call Package/nut/description/Default)
+upsrw allows you to view and change the read/write variables inside your
+UPS. It sends commands via the upsd to your driver, which configures the
+hardware for you. The list of variables that allow you to change their
+values is based on the capabilities of your UPS equipment. Not all
+models support this feature. Typically, cheaper hardware does not
+support any of them.
+endef
+
+define Package/nut-upsrw/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/upsrw $(1)/usr/bin/
+endef
+
+define Package/nut-upssched
+       $(call Package/nut/Default)
+       TITLE+= (helper for triggering events from upsmon)
+       DEPENDS:=nut +nut-common +nut-upsmon
+endef
+
+define Package/nut-upssched/description
+$(call Package/nut/description/Default)
+upssched was created to allow users to execute programs at times relative
+to events being monitored by upsmon. The original purpose was to allow
+for a shutdown to occur after some fixed period on battery, but there are
+other uses that are possible.
+You can alternatively write your own script and save some space.
+endef
+
+define Package/nut-upssched/conffiles
+/etc/nut/upssched.conf
+endef
+
+define Package/nut-upssched/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/etc/nut
+       $(INSTALL_DIR) $(1)/etc/uci-defaults
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/upssched-cmd $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/upssched $(1)/usr/sbin/
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upssched.conf.sample $(1)/etc/nut/upssched.conf
+       $(INSTALL_DATA) ./files/nut-sched.default $(1)/etc/uci-defaults/nut-upssched
 endef
 
 define Package/nut-web-cgi
        $(call Package/nut/Default)
        TITLE+= Web CGI interface
-       DEPENDS+=+libgd
+       DEPENDS:=nut +nut-common +libgd
 endef
 
 define Package/nut-web-cgi/description
@@ -127,23 +294,31 @@ define Package/nut-web-cgi/conffiles
 /etc/nut/upsset.conf
 /etc/nut/upsstats.html
 /etc/nut/upsstats-single.html
+/etc/config/nut_cgi
+/etc/httpd.conf
 endef
 
 define Package/nut-web-cgi/install
+       $(INSTALL_DIR) $(1)/www/cgi-bin/nut $(1)/www/nut
        $(INSTALL_DIR) $(1)/etc/nut
-       $(INSTALL_DIR) $(1)/usr/share/www/cgi-bin
-       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/hosts.conf.sample $(1)/etc/nut/hosts.conf
-       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsset.conf.sample $(1)/etc/nut/upsset.conf
+       $(CP) $(PKG_INSTALL_DIR)/usr/html/* $(1)/www/nut/
+       $(INSTALL_DIR) $(1)/etc/uci-defaults
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/cgi-bin/* $(1)/www/cgi-bin/nut
+       $(INSTALL_CONF) ./files/add_nut_httpd_conf $(1)/etc/uci-defaults/add_nut_httpd_conf
        $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsstats.html.sample $(1)/etc/nut/upsstats.html
        $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsstats-single.html.sample $(1)/etc/nut/upsstats-single.html
-       $(CP) $(PKG_INSTALL_DIR)/usr/share/www/nut $(1)/usr/share/www/
-       $(CP) $(PKG_INSTALL_DIR)/usr/share/www/cgi-bin/nut $(1)/usr/share/www/cgi-bin/
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/nut/upsset.conf.sample $(1)/etc/nut/upsset.conf
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/nut_cgi $(1)/etc/config/nut_cgi
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/nut-cgi.init $(1)/etc/init.d/nut-cgi
+       ln -sf /var/etc/nut/hosts.conf $(1)/etc/nut/hosts.conf
 endef
 
 define Package/nut-avahi-service
        $(call Package/nut/Default)
        TITLE+= (Avahi service)
-       DEPENDS+=+avahi-daemon
+       DEPENDS:=nut +avahi-daemon
 endef
 
 define Package/nut-avahi-service/description
@@ -166,8 +341,10 @@ define DriverPackage
         define Package/nut-driver-$(2)
                $(call Package/nut/Default)
                TITLE:=$(2) (NUT $(1) driver)
+               DEPENDS:=nut +nut-common
                $(if $(filter $(1),snmp),DEPENDS+= @NUT_DRIVER_SNMP)
                $(if $(filter $(1),usb),DEPENDS+= @NUT_DRIVER_USB)
+               $(if $(filter $(1),serial),DEPENDS+= @NUT_DRIVER_SERIAL)
         endef
        # Deliberately empty description in order to trigger a build failure.
        # It should be overridden by the list below, and when updating to a
@@ -323,17 +500,17 @@ CONFIGURE_ARGS += \
        --$(if $(CONFIG_NUT_DRIVER_USB),with,without)-usb \
        --without-avahi \
        --$(if $(CONFIG_NUT_DRIVER_SNMP),with,without)-snmp \
+       --$(if $(CONFIG_NUT_DRIVER_SERAL),with,without)-serial \
        --without-neon \
        --without-powerman \
+       --without-wrap \
+       --with-cgi \
        --without-ipmi \
        --without-freeipmi \
        --$(if $(CONFIG_NUT_SSL),with,without)-ssl $(if $(CONFIG_NUT_SSL),--with-openssl) \
        --without-libltdl \
-       --$(if $(CONFIG_PACKAGE_nut-web-cgi),with,without)-cgi \
-       --with-statepath=/var/run \
+       --with-statepath=/var/run/nut \
        --with-drvpath=/lib/nut \
-       --with-cgipath=/usr/share/www/cgi-bin/nut \
-       --with-htmlpath=/usr/share/www/nut \
        --with-user=root \
        --with-group=root
 
@@ -345,6 +522,15 @@ define Build/InstallDev
 endef
 
 $(eval $(call BuildPackage,nut))
+$(eval $(call BuildPackage,nut-common))
+$(eval $(call BuildPackage,nut-server))
+$(eval $(call BuildPackage,nut-upsmon))
+$(eval $(call BuildPackage,nut-upsmon-sendmail-notify))
+$(eval $(call BuildPackage,nut-upsc))
+$(eval $(call BuildPackage,nut-upscmd))
+$(eval $(call BuildPackage,nut-upslog))
+$(eval $(call BuildPackage,nut-upsrw))
+$(eval $(call BuildPackage,nut-upssched))
 $(eval $(call BuildPackage,nut-web-cgi))
 $(eval $(call BuildPackage,nut-avahi-service))
 $(foreach d,$(filter-out $(SERIAL_DRIVERLIST_IGNORE),$(SERIAL_DRIVERLIST)),$(eval $(call BuildPackage,nut-driver-$(d))))
diff --git a/net/nut/files/add_nut_httpd_conf b/net/nut/files/add_nut_httpd_conf
new file mode 100644 (file)
index 0000000..b8fa847
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+grep -q '/cgi-bin/nut' /etc/httpd.conf 2>/dev/null || {
+       echo '/cgi-bin/nut:root:$p$root' >>/etc/httpd.conf
+       /etc/init.d/uhttpd restart
+}
diff --git a/net/nut/files/nut-cgi.init b/net/nut/files/nut-cgi.init
new file mode 100755 (executable)
index 0000000..d63d98b
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh /etc/rc.common
+# Copyright Â© 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+START=51
+
+DEFAULT=/etc/default/nut
+UPSCGI_C=/var/etc/nut/hosts.conf
+
+nut_upscgi_add() {
+       local cfg="$1"
+       local upsname
+       local hostname
+       local port
+       local displayname
+
+       config_get upsname "$cfg" upsname
+       config_get hostname "$cfg" hostname localhost
+       config_get port "$cfg" port
+       config_get pass "$cfg" password
+       system="$upsname@$hostname"
+       if [ -n "$port" ]; then
+           system="$system:$port";
+       fi
+       config_get displayname "$cfg" displayname
+       echo "MONITOR $system \"$displayname\"" >> $UPSCGI_C
+}
+
+start() {
+       rm -f $UPSCGI_C
+
+       config_load nut_cgi
+
+       config_foreach nut_upscgi_add host
+
+       chmod 640 /var/etc/nut/hosts.conf
+}
+
+stop() {
+       rm -f $UPSCGI_C
+}
+
index e9fdb336d79d274b6dc4f51ec9fbbf4b364a168e..388c376ee9e5d048942470db900926a253b80ca6 100755 (executable)
 
 START=60
 USE_PROCD=1
+UPSMON_C=/var/etc/nut/upsmon.conf
 
-restart() {
-       stop_service
-       start_service
+nut_upsmon_conf() {
+       local cfg="$1"
+
+       echo "# Config file automatically generated from UCI config" > $UPSMON_C
+
+       config_get runas "$cfg" runas "nut"
+       [ -n "$runas" ] && echo "RUN_AS_USER $runas" >> $UPSMON_C
+
+       config_get val "$cfg" minsupplies 1
+       echo "MINSUPPLIES $val" >> $UPSMON_C
+
+       config_get val "$cfg" shutdowncmd "/sbin/halt"
+       echo "SHUTDOWNCMD \"$val\"" >> $UPSMON_C
+
+       config_get val "$cfg" notifycmd
+       [ -n "$val" ] && echo "NOTIFYCMD \"$val\"" >> $UPSMON_C
+
+       config_get val "$cfg" pollfreq 5
+       echo "POLLFREQ $val" >> $UPSMON_C
+
+       config_get val "$cfg" pollfreqalert 5
+       echo "POLLFREQALERT $val" >> $UPSMON_C
+
+       config_get val "$cfg" hostsync 15
+       echo "HOSTSYNC $val" >> $UPSMON_C
+
+       config_get val "$cfg" deadtime 15
+       echo "DEADTIME $val" >> $UPSMON_C
+
+       config_get val "$cfg" powerdownflag /var/run/killpower
+       echo "POWERDOWNFLAG $val" >> $UPSMON_C
+
+       config_get val "$cfg" onlinemsg
+       [ -n "$val" ] && echo "NOTIFYMSG ONLINE \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" onbattmsg
+       [ -n "$val" ] && echo "NOTIFYMSG ONBATT \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" lowbattmsg
+       [ -n "$val" ] && echo "NOTIFYMSG LOWBATT \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" fsdmsg
+       [ -n "$val" ] && echo "NOTIFYMSG FSD \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" commokmsg
+       [ -n "$val" ] && echo "NOTIFYMSG COMMOK \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" commbadmsg
+       [ -n "$val" ] && echo "NOTIFYMSG COMMBAD \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" shutdownmsg
+       [ -n "$val" ] && echo "NOTIFYMSG SHUTDOWN \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" replbattmsg
+       [ -n "$val" ] && echo "NOTIFYMSG REPLBATT \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" nocommmsg
+       [ -n "$val" ] && echo "NOTIFYMSG NOCOMM \"$val\"" >> $UPSMON_C
+       config_get val "$cfg" noparentmsg
+       [ -n "$val" ] && echo "NOTIFYMSG NOPARENT \"$val\"" >> $UPSMON_C
+
+       notifylist() {
+               local value="$1"
+               append optval "$value" "+"
+       }
+
+       setnotify() {
+               local cfg="$1"
+               local optname="$2"
+               local optval
+               config_list_foreach "$cfg" "$optname" notifylist
+               if [ -z "$optval" ]; then
+                       # If no list fallback to trying option, fallback to default
+                       config_get optval "$cfg" "$optname" "$default"
+                       if [ -n "$optval" ]; then
+                               echo "$optval"
+                       else
+                               # No default, so do the NUT default
+                               echo "SYSLOG"
+                       fi
+               else
+                       echo "$optval"
+               fi
+        }
+
+       local default optval
+       val=""
+       config_list_foreach "$cfg" defaultnotify notifylist
+       default="$optval"
+       echo "NOTIFYFLAG ONLINE $(setnotify "$cfg" onlinenotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG ONBATT $(setnotify "$cfg" onbattnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG LOWBATT $(setnotify "$cfg" lowbatnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG FSD $(setnotify "$cfg" fsdnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG COMMOK $(setnotify "$cfg" commoknotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG COMMBAD $(setnotify "$cfg" commbadnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG SHUTDOWN $(setnotify "$cfg" shutdownnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG REPLBATT $(setnotify "$cfg" repolbattnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG NOCOMM $(setnotify "$cfg" nocommnotify)" >> $UPSMON_C
+       echo "NOTIFYFLAG NOPARENT $(setnotify "$cfg" noparentnotify)" >> $UPSMON_C
+
+       config_get val "$cfg" rbwarntime 43200
+       echo "RBWARNTIME $val" >> $UPSMON_C
+
+       config_get val "$cfg" nocommwarntime 300
+       echo "NOCOMMWARNTIME $val" >> $UPSMON_C
+
+       config_get val "$cfg" finaldelay 5
+       echo "FINALDELAY $val" >> $UPSMON_C
+
+       config_get val "$cfg" certpath
+       if [ -n "$val" ]; then echo "CERTPATH $val" >> $UPSMON_C; fi
+
+       config_get_bool val "$cfg" certverify 0
+       if [ -n "$val" ]; then echo "CERTVERIFY $val" >> $UPSMON_C; fi
+
+       config_get_bool val "$cfg" forcessl 0
+       if [ -n "$val" ]; then echo "FORCESSL $val" >> $UPSMON_C; fi
+}
+
+nut_upsmon_add() {
+       local cfg="$1"
+       local type="$2"
+       local upsname
+       local hostname
+       local port
+       local powervalue
+       local username
+       local password
+       local system
+
+       # If no core config, use defaults
+       [ -r $UPSMON_C ] || nut_upsmon_conf ""
+
+       config_get upsname "$cfg" upsname
+       config_get hostname "$cfg" hostname localhost
+       config_get port "$cfg" port
+       config_get powervalue "$cfg" powervalue 1
+       config_get username "$cfg" username
+       config_get password "$cfg" password
+       system="$upsname@$hostname"
+       if [ -n "$port" ]; then
+           system="$system:$port";
+       fi
+       echo "MONITOR $system $powervalue $username $password $type" >> $UPSMON_C
 }
 
 start_service() {
-       upsmon -p
+       rm -f $UPSMON_C
+
+       config_load nut_monitor
+
+       config_foreach nut_upsmon_conf upsmon
+       config_foreach nut_upsmon_add master master
+       config_foreach nut_upsmon_add slave slave
+
+       [ -z "$(cat /var/etc/nut/nut.conf)" ] && echo "MODE=netclient" >>/var/etc/nut/nut.conf
+
+       chmod 640 $UPSMON_C
+       chmod 640 /var/etc/nut/nut.conf
+
+       [ -d /var/run/nut ] || {
+               mkdir -m 0750 -p /var/run/nut
+               chown ${runas:-root}:$(id -gn ${runas:-root}) /var/run/nut
+       }
+
+       chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
+       $DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
 }
 
 stop_service() {
-       upsmon -c stop
+       [ -r $PID_F ] && /usr/sbin/upsmon -c stop
+       rm -f $UPSMON_C
 }
 
 reload_service() {
diff --git a/net/nut/files/nut-sched.default b/net/nut/files/nut-sched.default
new file mode 100644 (file)
index 0000000..d8b13f0
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+uci batch <<EOF
+set nut_monitor.@upsmon[-1]=upsmon
+set nut_monitor.@upsmon[-1].notifycmd=/usr/bin/upssched-cmd
+set nut_monitor.@upsmon[-1].defaultnotify="SYSLOG EXEC"
+commit nut_monitor
+EOF
+
+
diff --git a/net/nut/files/nut-sendmail-notify b/net/nut/files/nut-sendmail-notify
new file mode 100755 (executable)
index 0000000..749aa9b
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+/usr/sbin/sendmail root <<EOF
+From: root
+To: root
+Subject: UPS $NOTIFYTYPE Notification
+
+$1
+.
+EOF
diff --git a/net/nut/files/nut-sendmail-notify.default b/net/nut/files/nut-sendmail-notify.default
new file mode 100644 (file)
index 0000000..54ea909
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+REMOVEDEFAULTNOTIFY=0
+SKIPADDSYSLOG=0
+SKIPADDEXEC=0
+
+upsmon() {
+       local cfg="$1"
+       local val
+
+       config_get val "$cfg" defaultnotify
+       if [ -n "$val" ]; then
+               if echo "$val" |grep -q "IGNORE"; then
+                       REMOVEDEFAULTNOTIFY=1
+               else
+                       SKIPADDSYSLOG=1
+                       if echo "$val" |grep -q "EXEC"; then
+                               SKIPADDEXEC=1
+                       fi
+               fi
+       fi
+}
+
+config_load nut_monitor
+config_foreach upsmon upsmon
+
+uci set nut_monitor.@upsmon[-1]=upsmon
+uci set nut_monitor.@upsmon[-1].notifycmd=/usr/bin/nut-sendmail-notify
+
+if [ "$REMOVEDEFAULTNOTIFY" = "1" ]; then
+       uci delete nut_monitor.@upsmon[-1].defaultnotify || true
+fi
+
+if [ "$SKIPADDEXEC" != "1" ]; then
+       uci add_list nut_monitor.@upsmon[-1].defaultnotify="EXEC"
+fi
+
+if [ "$SKIPADDSYSLOG" != "1" ]; then
+       uci add_list nut_monitor.@upsmon[-1].defaultnotify="SYSLOG"
+fi
+
+uci commit nut_monitor
index f9971be444379020855b47acab1dd80db5c37a34..e064dd721358bb31681fca75f8ccb4146e31e9a6 100755 (executable)
 #!/bin/sh /etc/rc.common
-
+# Copyright Â© 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
 START=50
+
+RUN_D=/var/run
+PID_F=$RUN_D/upsd.pid
+UPS_C=/var/etc/nut/ups.conf
+USERS_C=/var/etc/nut/upsd.users
+UPSD_C=/var/etc/nut/upsd.conf
+
 USE_PROCD=1
 
-restart() {
-       stop_service
-       start_service
+listen_address() {
+    local cfg="$1"
+
+    config_get address "$cfg" address "::1"
+    config_get port "$cfg" port
+    echo "LISTEN $address $port" >>$UPSD_C
+}
+
+upsd_statepath() {
+    local cfg="$1"
+    config_get statepath "$cfg" statepath
+}
+
+upsd_config() {
+    local cfg="$1"
+    local maxage maxconn certfile
+
+    # Note runas support requires you make sure USB device file is readable by
+    # the runas user
+    config_get runas "$cfg" runas
+
+    config_get maxage "$cfg" maxage
+    [ -n "$maxage" ] && echo "MAXAGE $maxage" >>$UPSD_C
+
+    config_get statepath "$cfg" statepath
+    [ -n "$statepath" ] && echo "STATEPATH $statepath" >>$UPSD_C
+
+    config_get maxconn "$cfg" maxconn
+    [ -n "$maxconn" ] && echo "MAXCONN $maxconn" >>$UPSD_C
+
+    #NOTE: certs only apply to SSL-enabled version
+    config_get certfile "$cfg" certfile
+    [ -n "$certfile" ] && echo "CERTFILE $certfile" >>$UPSD_C
+}
+
+nut_user_add() {
+       local cfg="$1"
+       local a
+       local val
+
+       config_get val "$cfg" username "$1"
+       echo "[$val]" >> $USERS_C
+
+       config_get val "$cfg" password
+       echo "  password = $val" >> $USERS_C
+
+       config_get val "$cfg" actions
+       for a in $val; do
+           echo "  actions = $a" >> $USERS_C
+       done
+
+       instcmd() {
+               local val="$1"
+               echo "  instcmds = $val" >> $USERS_C
+       }
+
+       config_list_foreach "$cfg" instcmd instcmd
+
+       config_get val "$cfg" upsmon
+       if [ -n "$val" ]; then
+           echo "  upsmon $val" >> $USERS_C
+       fi
 }
 
 start_service() {
-       upsdrvctl start
-       upsd
+       local runas statepath
+
+        mkdir -p /var/etc/nut
+       chmod -R 750 /var/etc/nut
+
+       rm -f $UPSD_C
+       rm -f $USERS_C
+       rm -f $UPSD_C
+       rm -f /var/etc/nut/nut.conf
+
+       echo "# Config file automatically generated from UCI config" > $UPS_C
+       echo "# Config file automatically generated from UCI config" > $USERS_C
+       echo "# Config file automatically generated from UCI config" > $UPSD_C
+
+        local in_driver have_drivers
+       config_cb() {
+           if [ "$1" != "driver" ]; then
+               in_driver=
+           else
+               echo "[$2]" >> $UPS_C
+               in_driver=true
+               have_drivers=true
+           fi
+       }
+       option_cb() {
+           if [ "$in_driver" = "true" ]; then
+               echo " $1 = $2" >> $UPS_C
+           fi
+       }
+
+       config_load nut_server
+
+       config_foreach nut_user_add user
+       config_foreach upsd_config upsd
+       config_foreach listen_address listen_address
+
+       echo "MODE=netserver" >>/var/etc/nut/nut.conf
+
+       chmod 0640 $USERS_C
+       chmod 0640 $UPS_C
+       chmod 0640 $UPSD_C
+       chmod 0640 /var/etc/nut/nut.conf
+       [ -d "${statepath:-/var/run/nut}" ] || {
+               mkdir -m 0750 -p "${statepath:-/var/run/nut}"
+               chown $runas:$(id -gn $runas) "${statepath:-/var/run/nut}"
+       }
+
+       if [ -n "$runas" ]; then
+               chown -R $runas:$(id -gn $runas) /var/etc/nut
+       fi
+
+       if [ "$have_drivers" = "true" ]; then
+           $DEBUG /usr/sbin/upsd ${runas:+-u $runas} $OPTIONS
+           $DEBUG /usr/sbin/upsdrvctl ${runas:+-u $runas} start
+       fi
+}
+
+
+nut_driver_stop() {
+       local cfg="$1"
+       local driver
+
+       config_get driver "$cfg" driver
+
+       [ -r ${statepath:-/var/run/nut}/$driver-$cfg ] && /usr/sbin/upsdrvctl stop $cfg
 }
 
 stop_service() {
-       upsd -c stop
-       upsdrvctl stop
+       [ -r $PID_F ] && /usr/sbin/upsd -c stop
+       config_load ups
+       config_foreach upsd_statepath upsd
+       config_foreach nut_driver_stop driver
 }
 
 reload_service() {
diff --git a/net/nut/files/nut_cgi b/net/nut/files/nut_cgi
new file mode 100644 (file)
index 0000000..9f0bed6
--- /dev/null
@@ -0,0 +1,6 @@
+#config host
+#      option upsname upsname
+#      option hostname localhost
+#      option port # optional port number
+#      option displayname "Display Name"
+
diff --git a/net/nut/files/nut_monitor b/net/nut/files/nut_monitor
new file mode 100644 (file)
index 0000000..0b71e95
--- /dev/null
@@ -0,0 +1,54 @@
+#config upsmon 'upsmon'
+#      option runas run-as-user
+#      option minsupplies 1
+#      option shutdowncmd /sbin/halt
+#      option notifycmd /path/to/cmd
+#      list defaultnotify SYSLOG
+#      option pollfreq 5
+#      option pollfreqalert 5
+#      option hostsync 15
+#      option deadtime 15
+#      option powerdownflags /var/run/killpower
+#      option onlinemsg "online message"
+#      option onbattmsg "on battery message"
+#      option lowbattmsg "low battery message"
+#      option fsdmsg "forced shutdown message"
+#      option comokmsg "communications restored message"
+#      option combadmsg "communications bad message"
+#      option shutdowmsg "shutdown message"
+#      option replbattmsg "replace battery message"
+#      option nocommmsg "no communications message"
+#      option noparentmsg "no parent message"
+#      option onlinenotify "online notify flag 1|0"
+#      option onbattnotify "on battery notify flag 1|0"
+#      option lowbattnotify "low battery notify flag 1|0"
+#      option fsdnotify "forced shutdown notify flag 1|0"
+#      option comoknotify "communications restored notify flag 1|0"
+#      option combadnotify "communications bad notify flag 1|0"
+#      option shutdownotify "shutdown notify flag 1|0"
+#      option replbattnotify "replace battery notify flag 1|0"
+#      option nocommnotify "no communications notify flag 1|0"
+#      option noparentnotify "no parent notify flag 1|0"
+#      option rbwarntime 4200 # replace battery warn time
+#      option nocommwarntime 300 # no communications warn time
+#      option finaldelay 5 # final delay
+#      option certpath /path/to/ca/dir
+#      option certverify 0
+#      option forcessl 0
+
+#config master
+#      option upsname upsname
+#      option hostname localhost
+#      option port # optional port number
+#      option powervalue 1
+#      option username upsuser
+#      option password upspassword
+
+#config slave
+#      option upsname upsname
+#      option hostname localhost
+#      option port # optional port number
+#      option powervalue 1
+#      option username upsuser
+#      option password upspassword
+
diff --git a/net/nut/files/nut_server b/net/nut/files/nut_server
new file mode 100644 (file)
index 0000000..bebd169
--- /dev/null
@@ -0,0 +1,23 @@
+#config driver 'upsname'
+#      option driver usbhid-ups
+#      option port auto
+#      option other other-value
+#      option runas root
+
+#config user
+#      option username upsuser
+#      option password upspassword
+#      option actions optional-action
+#      list instcmd optional-instant-command
+#      option upsmon slave|master
+
+#config listen_address
+#      option address ::1
+#      option port 3493
+
+#config upsd 'upsd'
+#      option maxage 15
+#      option statepath /var/run/nut
+#      option maxconn 1024
+# NB: certificates only apply to SSL-enabled version
+#       option certfile /usr/local/etc/upsd.pem
index 8fe057653da7ddf5078de0d7dc48d6c545ff2c83..c997757322864641679929f2f237c47ea662162c 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ocserv
-PKG_VERSION:=0.11.6
-PKG_RELEASE:=2
+PKG_VERSION:=0.11.7
+PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/ocserv/
-PKG_MD5SUM:=0e4f82d267d27f2f9d3fcba58ac6cf5a
+PKG_MD5SUM:=4c47b039bfaf1cecea6a2206dfe0ccd6
 
 PKG_LICENSE:=GPLv2+
 PKG_LICENSE_FILES:=COPYING
diff --git a/net/ocserv/patches/001-makefile-fix.patch b/net/ocserv/patches/001-makefile-fix.patch
deleted file mode 100644 (file)
index 0d48282..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 5943a50..4b2c77c 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -23,18 +23,7 @@ noinst_LIBRARIES = libcmd-ocserv.a libipc.a
- libcmd_ocserv_a_SOURCES = ocserv-args.def ocserv-args.c ocserv-args.h
- ocserv-args.c: $(srcdir)/ocserv-args.def $(builddir)/version.inc
--      if test "$(AUTOGEN)" = ":";then \
--              rm -f $(builddir)/ocserv-args.c; \
--              rm -f $(builddir)/ocserv-args.h; \
--              cp $(srcdir)/autogen/ocserv-args.c $(builddir)/; \
--              cp $(srcdir)/autogen/ocserv-args.h $(builddir)/; \
--      else \
--              $(AUTOGEN) $<; \
--              if test -d $(srcdir)/autogen;then \
--                      cp $(builddir)/ocserv-args.c $(srcdir)/autogen; \
--                      cp $(builddir)/ocserv-args.h $(srcdir)/autogen; \
--              fi; \
--      fi
-+      $(AUTOGEN) $<
- ocserv-args.h: ocserv-args.c
- # Authentication module sources
-diff --git a/src/ocpasswd/Makefile.am b/src/ocpasswd/Makefile.am
-index 97e2491..6304607 100644
---- a/src/ocpasswd/Makefile.am
-+++ b/src/ocpasswd/Makefile.am
-@@ -21,17 +21,6 @@ ocpasswd_LDADD += $(LIBGNUTLS_LIBS) $(LIBCRYPT) $(CODE_COVERAGE_LDFLAGS) \
-       $(LIBNETTLE_LIBS)
- args.c: $(srcdir)/args.def $(builddir)/../version.inc
--      if test "$(AUTOGEN)" = ":";then \
--              rm -f $(builddir)/args.c; \
--              rm -f $(builddir)/args.h; \
--              cp $(srcdir)/../autogen/ocpasswd-args.c $(builddir)/args.c; \
--              cp $(srcdir)/../autogen/ocpasswd-args.h $(builddir)/args.h; \
--      else \
--              $(AUTOGEN) $<; \
--              if test -d $(srcdir)/autogen;then \
--                      cp $(builddir)/args.c $(srcdir)/../autogen/ocpasswd-args.c; \
--                      cp $(builddir)/args.h $(srcdir)/../autogen/ocpasswd-args.h; \
--              fi; \
--      fi
-+      $(AUTOGEN) $<
- args.h: args.c
index 0d18aa1276f3c74fa64934ab283769891c549947..294b00f4d7e542355ffae072b3b87a68415691ca 100644 (file)
@@ -67,6 +67,6 @@ start_service() {
        ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
 
        procd_open_instance
-       procd_set_param command $BIN -c $CONFIG -o $OPTIONS_PPTP
+       procd_set_param command $BIN -c $CONFIG --fg -o $OPTIONS_PPTP
        procd_close_instance
 }
index 384fe460be1bdf761083dd56f38909380db64693..d725911f00406b8664b87a346ce7e1afd75d2868 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-ccnet
-PKG_VERSION:=5.1.4
+PKG_VERSION:=6.0.7
 PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/haiwen/ccnet.git
+PKG_SOURCE_URL:=https://github.com/haiwen/ccnet-server.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=44f74fdc5160c1bf16a92e71d79b856763ddbc15
+PKG_SOURCE_VERSION:=a0de32b9cfeca98ab93d84cacbe9d315d7ecca35
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -33,7 +33,7 @@ define Package/seafile-ccnet
     DEPENDS:=+libsearpc +libevent2 +libopenssl \
                +glib2 +python +libzdb +libuuid \
                +libpthread +libsqlite3 +jansson $(ICONV_DEPENDS)
-    EXTRA_DEPENDS:=libsearpc (=5.1.4-8998e7b2c5587f0b94c48db24e2952d08def5add-1)
+    EXTRA_DEPENDS:=libsearpc (=6.0.7-8998e7b2c5587f0b94c48db24e2952d08def5add-1)
 endef
 
 define Package/seafile-ccnet/description
index 09458b6ca3b8f74c2d6c18e38c98dc7aaf8c911a..731b9ba9402b45401fdfd861a7ed918a134ca7f7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-seahub
-PKG_VERSION:=5.1.4
-PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
+PKG_VERSION:=6.0.7
+PKG_RELEASE=$(PKG_SOURCE_VERSION)-2
 PKG_LICENSE:=Apache-2.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/haiwen/seahub.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=1e1c02aa4f2a0256ffa29a28224aad2d678f43a0
+PKG_SOURCE_VERSION:=2cf75b17a372216a88842172f769d61f621416fd
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 
 include $(INCLUDE_DIR)/package.mk
index 3855221706508f660c88df3fa261863c8db8b136..b6aac8aa52230b87ecd6fab4802fbde1cb7474eb 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-server
-PKG_VERSION:=5.1.4
-PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
+PKG_VERSION:=6.0.7
+PKG_RELEASE=$(PKG_SOURCE_VERSION)-3
 PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/haiwen/seafile.git
+PKG_SOURCE_URL:=https://github.com/haiwen/seafile-server.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=b9dc96ee845bb0148d9075aec597e6e07652cbdc
+PKG_SOURCE_VERSION:=715f072c1bbc78eedddcaf7748e28c83c3f4dbc6
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -33,7 +33,7 @@ define Package/seafile-server
     DEPENDS:=+libarchive +libopenssl +glib2 +libsearpc +seafile-ccnet +seafile-seahub +sqlite3-cli +python-mysql +python-urllib3 \
                +jansson +libevent2 +libevent2-openssl +zlib +libzdb +libsqlite3 +libmysqlclient \
                +libpthread +libuuid +bash +procps-ng +procps-ng-pkill +SEAFILE_FUSE_SUPPORT:libfuse $(ICONV_DEPENDS)
-    EXTRA_DEPENDS:=seafile-ccnet (=5.1.4-44f74fdc5160c1bf16a92e71d79b856763ddbc15-1), seafile-seahub (=5.1.4-1e1c02aa4f2a0256ffa29a28224aad2d678f43a0-1)
+    EXTRA_DEPENDS:=seafile-ccnet (=6.0.7-a0de32b9cfeca98ab93d84cacbe9d315d7ecca35-1), seafile-seahub (=6.0.7-2cf75b17a372216a88842172f769d61f621416fd-2)
     MENU:=1
 endef
 
index 61def0e0725e6de6171bd330b57e17da547d1553..793ff13f3ba672a3782d0dc7049bc85288d4c6c0 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ser2net
-PKG_VERSION:=3.3
+PKG_VERSION:=3.4
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/ser2net
-PKG_MD5SUM:=8daf1cfd70d2b220b184c412c64faf2c
-PKG_HASH:=3d1cef5f48df8291e57d4d7d4eac2fc809ae644a5524ffca4aebef0f4e4153dc
+PKG_MD5SUM:=562274d783534276a9feac913b7d8c4e
+PKG_HASH:=d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
index ef61a7f303e791bb13f3dc2ba5dbdec7eebc11d0..3aa81b18fefede22c748250fb6fa2ba7de5a7abf 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sqm-scripts
-PKG_SOURCE_VERSION:=c1d5dd07029ad7a25e82940dff7b8b1b778cb82a
-PKG_VERSION:=1.1.2
+PKG_SOURCE_VERSION:=8217081f7e52af342c362b29480461575c496387
+PKG_VERSION:=1.1.3
 PKG_RELEASE:=1
 PKG_LICENSE:=GPLv2
 
index 029b8bff760a9fb70a88c34e4b82b30631105b05..5289d3f9740d062735d76ce2aa9aa56b2f487385 100644 (file)
@@ -374,6 +374,7 @@ CONFIGURE_ARGS+= \
        --disable-scripts \
        --disable-static \
        --disable-fast \
+       --enable-mediation \
        --with-systemdsystemunitdir=no \
        $(if $(CONFIG_PACKAGE_strongswan-utils),--enable-pki --enable-scepclient,--disable-pki --disable-scepclient) \
        --with-random-device=/dev/random \
index 4fd168cebd3e795140bba105d6edaaf11285d91b..561322a7491e8d31d2f7ab8c80861031d2855926 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=subversion
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_VERSION:=1.9.5
 PKG_SOURCE_URL:=@APACHE/subversion
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
@@ -29,7 +29,7 @@ define Package/subversion/Default
   CATEGORY:=Network
   SUBMENU:=Version Control Systems
   TITLE:=A compelling replacement for CVS
-  DEPENDS:=+zlib +libsqlite3 +libapr +libaprutil +libmagic \
+  DEPENDS:=+zlib +libsqlite3 +PACKAGE_unixodbc:unixodbc +libapr +libaprutil +libmagic \
        $(ICONV_DEPENDS) $(INTL_DEPENDS)
   URL:=http://subversion.apache.org/
 endef
@@ -80,6 +80,7 @@ endef
 
 TARGET_CFLAGS += $(FPIC)
 TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
+APU_LIBS=$(shell $(STAGING_DIR)/usr/bin/apu-1-config --link-libtool --libs)
 
 CONFIGURE_ARGS += \
        --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
@@ -101,7 +102,7 @@ else
 endif
 
 CONFIGURE_VARS += \
-       LDFLAGS="$(TARGET_LDFLAGS) -lcrypt -lm \
+       LDFLAGS="$(TARGET_LDFLAGS) $(APU_LIBS) -lcrypt -lm \
                -lz -lpthread $(if $(INTL_FULL),-lintl)"
        CPPFLAGS="$(TARGET_CPPFLAGS)"
 
index d8f4c0026577c0fdb648ef1eb195d8e93c0af96b..2b860d9c9689b6aad82137e31d870d8aab559b1b 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tinc
-PKG_VERSION:=1.0.30
+PKG_VERSION:=1.0.31
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.tinc-vpn.org/packages
-PKG_MD5SUM:=f3ca1fc1154ed1f2cac408ea06a1c1ca
+PKG_MD5SUM:=7a96f7eb12dfd43b21852b4207d860f2
 
 PKG_INSTALL:=1
 
index b00698033da74a726a6465cbc9dc8cf1b0ff9aec..b6ab886c2a6453f96ec3553ebc2306327695178b 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tor
-PKG_VERSION:=0.2.9.8
+PKG_VERSION:=0.2.9.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://dist.torproject.org/ \
        https://archive.torproject.org/tor-package-archive
-PKG_MD5SUM:=fbdd33d3384574297b88744622382008d1e0f9ddd300d330746c464b7a7d746a
+PKG_MD5SUM:=33325d2b250fd047ba2ddc5d11c2190c4e2951f4b03ec48ebd8bf0666e990d43
 PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
 PKG_LICENSE_FILES:=LICENSE
 
index 6f2d2a0d2cec69562ccd373e3805bdccd0e6e5cb..ca31adb0f7aa9183796b52c42ed4f77e4320164e 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=travelmate
-PKG_VERSION:=0.3.2
+PKG_VERSION:=0.3.5
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 4cd39d60d285fdbff831b6a9baac6d3fdb414fea..0570558d9a2ebb40ca080c97f5b35e7e0b7a1b55 100644 (file)
@@ -9,6 +9,7 @@ To avoid these kind of deadlocks, travelmate set all station interfaces in an "a
 * STA interfaces operating in an "always off" mode, to make sure that the AP is always accessible
 * easy setup within normal OpenWrt/LEDE environment
 * fast uplink connections
+* support multiple radios
 * procd init system support
 * procd based hotplug support, the travelmate start will be triggered by interface triggers
 * status & debug logging to syslog
@@ -20,7 +21,7 @@ To avoid these kind of deadlocks, travelmate set all station interfaces in an "a
 ## OpenWrt / LEDE trunk Installation & Usage
 * download the package [here](https://downloads.lede-project.org/snapshots/packages/x86_64/packages)
 * install 'travelmate' (_opkg install travelmate_)
-* configure your network to support (multiple) wlan uplinks and set travelmate config options (details see below)
+* configure your network to support (multiple) wlan uplinks and set travelmate config options (see below)
 * set 'trm\_enabled' option in travelmate config to '1'
 * travelmate starts automatically during boot and will be triggered by procd interface triggers
 
@@ -43,6 +44,7 @@ To avoid these kind of deadlocks, travelmate set all station interfaces in an "a
     * trm\_maxwait => how long (in seconds) should travelmate wait for wlan interface reload action (default: '20')
     * trm\_maxretry => how many times should travelmate try to find an uplink after a trigger event (default: '3')
     * trm\_iw => set this option to '0' to use iwinfo for wlan scanning (default: '1', use iw)
+    * trm\_radio => limit travelmate to a dedicated radio, e.g. 'radio0' (default: not set, use all radios)
     * trm\_iface => restrict the procd interface trigger to a (list of) certain wan interface(s) or disable it at all (default: not set, disabled)
 
 ## Setup
@@ -59,11 +61,6 @@ config interface 'wwan'
 [...]
 config zone
         option name 'wan'
-        option input 'REJECT'
-        option output 'ACCEPT'
-        option forward 'REJECT'
-        option masq '1'
-        option mtu_fix '1'
         option network 'wan wan6 wwan'
 [...]
 </code></pre>
@@ -74,7 +71,6 @@ config zone
 config wifi-iface
         option device 'radio0'
         option network 'lan'
-        option ifname 'wlan0'
         option mode 'ap'
         option ssid 'example_ap'
         option encryption 'psk2+ccmp'
@@ -86,7 +82,6 @@ config wifi-iface
         option network 'wwan'
         option mode 'sta'
         option ssid 'example_01'
-        option ifname 'wwan01'
         option encryption 'psk2+ccmp'
         option key 'abc'
         option disabled '1'
@@ -95,7 +90,6 @@ config wifi-iface
         option network 'wwan'
         option mode 'sta'
         option ssid 'example_02'
-        option ifname 'wwan02'
         option encryption 'psk2+ccmp'
         option key 'xyz'
         option disabled '1'
@@ -104,7 +98,6 @@ config wifi-iface
         option network 'wwan'
         option mode 'sta'
         option ssid 'example_03'
-        option ifname 'wwan03'
         option encryption 'none'
         option disabled '1'
 [...]
index 255a641879611dc136843b21aef8a37f345cb80b..c6f81255ab5da44b997d2936f34c883244168cc5 100755 (executable)
@@ -5,26 +5,26 @@ USE_PROCD=1
 
 trm_script="/usr/bin/travelmate.sh"
 
-boot()
-{
-    ubus -t 30 wait_for network.interface
-    rc_procd start_service
-}
-
 start_service()
 {
-    procd_open_instance "travelmate"
-    procd_set_param env trm_procd="true"
-    procd_set_param command "${trm_script}" "${@}"
-    procd_set_param stdout 1
-    procd_set_param stderr 1
-    procd_close_instance
+    if [ $(/etc/init.d/travelmate enabled; printf ${?}) -eq 0 ]
+    then
+        ubus -t 30 wait_for network.interface
+        procd_open_instance "travelmate"
+        procd_set_param env trm_procd="true"
+        procd_set_param command "${trm_script}" "${@}"
+        procd_set_param stdout 1
+        procd_set_param stderr 1
+        procd_close_instance
+    fi
 }
 
 service_triggers()
 {
     local iface="$(uci -q get travelmate.global.trm_iface)"
 
+    procd_open_trigger
+    procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
     if [ -z "${iface}" ]
     then
         procd_add_raw_trigger "interface.*.down" 1000 /etc/init.d/travelmate start
@@ -34,6 +34,5 @@ service_triggers()
             procd_add_interface_trigger "interface.*.down" "${name}" /etc/init.d/travelmate start
         done
     fi
-
-    procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
+    procd_close_trigger
 }
index f626f390c01a85ee343e78427439916904dd5372..734b0167ca2b89f7f8b9620db9cf53cc0cf1ddd4 100755 (executable)
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="0.3.2"
+trm_ver="0.3.5"
 trm_enabled=1
 trm_debug=0
 trm_maxwait=20
 trm_maxretry=3
+trm_radio="*"
 trm_iw=1
 
 f_envload()
@@ -25,7 +26,7 @@ f_envload()
     then
         . "/lib/functions.sh"
     else
-        f_log "error" "status  ::: required system library not found"
+        f_log "error" "required system library not found"
     fi
 
     # load uci config and check 'enabled' option
@@ -40,7 +41,7 @@ f_envload()
 
     if [ ${trm_enabled} -ne 1 ]
     then
-        f_log "info " "status  ::: travelmate is currently disabled, please set 'trm_enabled' to '1' to use this service"
+        f_log "info " "travelmate is currently disabled, please set 'trm_enabled' to '1' to use this service"
         exit 0
     fi
 
@@ -54,7 +55,7 @@ f_envload()
     fi
     if [ -z "${trm_scanner}" ]
     then
-        f_log "error" "status  ::: no wireless tool for wlan scanning found, please install 'iw' or 'iwinfo'"
+        f_log "error" "no wireless tool for wlan scanning found, please install 'iw' or 'iwinfo'"
     fi
 }
 
@@ -73,7 +74,7 @@ f_prepare()
         if [ -z "${disabled}" ] || [ "${disabled}" = "0" ]
         then
             uci -q set wireless."${config}".disabled=1
-            f_log "debug" "prepare ::: config: ${config}, interface: ${network}"
+            f_log "debug" "config: ${config}, interface: ${network}"
         fi
     fi
 }
@@ -87,7 +88,11 @@ f_check()
     do
         if [ "${mode}" = "ap" ]
         then
-            trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.up')"
+            ifname="$(ubus -S call network.wireless status | jsonfilter -l1 -e "@.${trm_radio}.interfaces[@.config.mode=\"ap\"].ifname")"
+            if [ -n "${ifname}" ]
+            then
+                trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -l1 -e "@.${trm_radio}.up")"
+            fi
         else
             ifname="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.interfaces[@.config.mode="sta"].ifname')"
             if [ -n "${ifname}" ]
@@ -102,7 +107,7 @@ f_check()
         cnt=$((cnt+1))
         sleep 1
     done
-    f_log "debug" "check   ::: mode: ${mode}, name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}, max-wait: ${trm_maxwait}"
+    f_log "debug" "mode: ${mode}, radio: ${trm_radio}, name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}, max-wait: ${trm_maxwait}"
 }
 
 # function to write to syslog
@@ -117,6 +122,7 @@ f_log()
         logger -t "travelmate-[${trm_ver}] ${class}" "${log_msg}"
         if [ "${class}" = "error" ]
         then
+            logger -t "travelmate-[${trm_ver}] ${class}" "Please check the online documentation 'https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md'"
             exit 255
         fi
     fi
@@ -127,6 +133,7 @@ f_main()
     local ap_list ssid_list config network ssid cnt=1
     local sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
 
+    f_log "info " "start travelmate scanning ..."
     f_check "initial"
     if [ "${trm_ifstatus}" != "true" ]
     then
@@ -138,14 +145,15 @@ f_main()
             ubus call network reload
         fi
         f_check "ap"
-        ap_list="$(ubus -S call network.wireless status | jsonfilter -e '@.*.interfaces[@.config.mode="ap"].ifname')"
-        f_log "debug" "main    ::: ap-list: ${ap_list}, sta-list: ${trm_stalist}"
+        ap_list="$(ubus -S call network.wireless status | jsonfilter -e "@.${trm_radio}.interfaces[@.config.mode=\"ap\"].ifname" | awk '{ORS=" "; print $0}')"
+        f_log "debug" "ap-list: ${ap_list}, sta-list: ${trm_stalist}"
         if [ -z "${ap_list}" ] || [ -z "${trm_stalist}" ]
         then
-            f_log "error" "status  ::: no usable AP/STA configuration found"
+            f_log "error" "no usable AP/STA configuration found"
         fi
         for ap in ${ap_list}
         do
+            cnt=1
             while [ ${cnt} -le ${trm_maxretry} ]
             do
                 if [ ${trm_iw} -eq 1 ]
@@ -156,7 +164,7 @@ f_main()
                     ssid_list="$(${trm_scanner} "${ap}" scan | \
                         awk '/ESSID: ".*"/{ORS=" ";if (!seen[$0]++) for(i=2; i<=NF; i++) print $i}')"
                 fi
-                f_log "debug" "main    ::: scan-tool: ${trm_scanner}, ssidlist: ${ssid_list}"
+                f_log "debug" "scanner: ${trm_scanner}, ap: ${ap}, ssids: ${ssid_list}"
                 if [ -n "${ssid_list}" ]
                 then
                     for sta in ${trm_stalist}
@@ -172,27 +180,27 @@ f_main()
                             f_check "sta"
                             if [ "${trm_ifstatus}" = "true" ]
                             then
-                                f_log "info " "status  ::: wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
+                                f_log "info " "wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
                                 sleep 5
                                 return 0
                             else
                                 uci -q set wireless."${config}".disabled=1
                                 uci -q commit wireless
                                 ubus call network reload
-                                f_log "info " "status  ::: wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
+                                f_log "info " "wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
                             fi
                         fi
                     done
                 else
-                    f_log "info " "status  ::: empty uplink list (${cnt}/${trm_maxretry}, ${sysver})"
+                    f_log "info " "empty uplink list (${cnt}/${trm_maxretry}, ${sysver})"
                 fi
                 cnt=$((cnt+1))
                 sleep 5
             done
         done
-        f_log "info " "status  ::: no wwan uplink found (${sysver})"
+        f_log "info " "no wwan uplink found (${sysver})"
     else
-        f_log "info " "status  ::: wwan uplink still connected (${sysver})"
+        f_log "info " "wwan uplink still connected (${sysver})"
     fi
 }
 
@@ -201,4 +209,4 @@ then
     f_envload
     f_main
 fi
-exit 0
\ No newline at end of file
+exit 0
index 07ab6fe33c212648b5853a8488d1a3812fe1fe4e..498700a3da84ce3542b9766437915ce3c76bd1a4 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=unbound
 PKG_VERSION:=1.6.0
-PKG_RELEASE:=3
+PKG_RELEASE:=5
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
@@ -27,7 +27,7 @@ PKG_INSTALL:=1
 include $(INCLUDE_DIR)/package.mk
 
 define Package/unbound/Default
-  TITLE:=Unbound is a validating, recursive, and caching DNS resolver.
+  TITLE:=Validating Recursive DNS Server
   URL:=http://www.unbound.net/
   DEPENDS:=+libopenssl
 endef
@@ -51,7 +51,7 @@ define Package/unbound-anchor
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=IP Addresses and Names
-  TITLE+= (anchor utility)
+  TITLE+= (DSKEY utility)
   DEPENDS+= +unbound +libexpat
 endef
 
@@ -77,7 +77,7 @@ define Package/unbound-control-setup
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=IP Addresses and Names
-  TITLE+= (control setup utility)
+  TITLE+= (control setup)
   DEPENDS+= +unbound-control +openssl-util
 endef
 
@@ -90,7 +90,7 @@ define Package/unbound-host
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=IP Addresses and Names
-  TITLE+= (DNS lookup utility)
+  TITLE+= (lookup utility)
   DEPENDS+= +libunbound
 endef
 
index d048abbd80c4144db5207118280510ca015d4fea..53f8a14129d31ad597f637ccdcd33b69515c56f8 100644 (file)
@@ -8,6 +8,9 @@ Unbound may be useful on consumer grade embedded hardware. It is *intended* to b
 
 This package builds on Unbounds capabilities with OpenWrt UCI. Not every Unbound option is in UCI, but rather, UCI simplifies the combination of related options. Unbounds native options are bundled and balanced within a smaller set of choices. Options include resources, DNSSEC, access control, and some TTL tweaking. The UCI also provides an escape option and work at the raw "unbound.conf" level.
 
+## Adblocking
+The UCI scripts will work with OpenWrt/pacakages/net/adblock (2.3.0 and above) if it is installed and enabled. Its all detected and integrated automatically. In brief, the adblock scripts create distinct local-zone files that are simply included in the unbound conf file during UCI generation. If you don't want this, then disable adblock or reconfigure adblock to not send these files to Unbound.
+
 ## HOW TO Integrate with DHCP
 Some UCI options and scripts help Unbound to work with DHCP servers to load the local DNS. The examples provided here are serial dnsmasq-unbound, parallel dnsmasq-unbound, and unbound scripted with odhcpd.
 
@@ -29,7 +32,8 @@ In this case, dnsmasq is not changed *much* with respect to the default OpenWRT/
 **/etc/config/dhcp**:
 
        config dnsmasq
-               option noresolv '0'
+               option domain 'yourdomain'
+               option noresolv '1'
                option resolvfile '/tmp/resolv.conf.auto'
                option port '53'
                list server '127.0.0.1#1053'
@@ -56,13 +60,12 @@ In this case, Unbound serves your local network directly for all purposes. It wi
                ...
 
        config dhcp 'lan'
+               # dnsmasq may not issue DNS option if not std. configuration 
                list dhcp_option 'option:dns-server,0.0.0.0'
                ...
 
 ### Only odhcpd
-Why use dnsmasq you might ask? Well test, try, and review. You can have Unbound and odhcpd only. When odhcpd configures as DHCP lease, it will call a script. The script provided with Unbound will read the lease file and enter DHCP-DNS records as much as dnsmasq once did.
-
-*note: You must install unbound-control. The lease file loads are done without starting, stopping, or re-writing conf files.*
+Why use dnsmasq you might ask? Well test, try, and review. You can have Unbound and odhcpd only. When odhcpd configures each DHCP lease, it will call a script. The script provided with Unbound will read the lease file and enter DHCP-DNS records as much as dnsmasq once did. You **must install** `unbound-control`, because the lease records are added and removed without starting, stopping, flushing cache, or re-writing conf files.
 
 *note: if you run the default LEDE/OpenWrt setup with dnsmasq and odhcpd, then use the link to dnsmasq. Unbound will pole dnsmasq. dnsmasq merges its lease file and odhcpd lease file.*
 
index 6ef02dfbfa23adb10b220e3644166c5a0bacf476..34e6710d88b3e9b9975805a211adf74aed21c6f7 100644 (file)
@@ -22,6 +22,7 @@
 #   "domain" = text domain suffix
 #   "bslaac" = boolean, use DHCPv4 MAC to find GA and ULA IPV6 SLAAC
 #   "bisolt" = boolean, format <host>.<network>.<domain>. so you can isolate
+#   "bconf"  = boolean, write conf file format rather than pipe records
 #
 ##############################################################################
 
       # only for provided hostnames and full /32 assignments
       ptr = adr ; qpr = "" ; split( ptr, ptr, "." ) ;
       slaac = slaac_eui64( id ) ;
-      for( i=1; i<=4; i++ ) { qpr = ( ptr[i] "." qpr) ; }
 
-      # DHCP A and PTR records with FQDN
-      x = ( fqdn ". 120 IN A " adr ) ;
-      y = ( qpr "in-addr.arpa. 120 IN PTR " fqdn ) ;
-      print ( x "\n" y ) > hostfile ;
 
+      if ( bconf == 1 ) {
+        x = ( "local-data: \"" fqdn ". 120 IN A " adr "\"" ) ;
+        y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+        print ( x "\n" y ) > hostfile ;
+      }
+
+      else {
+        for( i=1; i<=4; i++ ) { qpr = ( ptr[i] "." qpr) ; }
+        x = ( fqdn ". 120 IN A " adr ) ;
+        y = ( qpr "in-addr.arpa. 120 IN PTR " fqdn ) ;
+        print ( x "\n" y ) > hostfile ;
+      }
 
-      if ((bslaac == 1) && (slaac != 0)) {
+
+      if (( bslaac == 1 ) && ( slaac != 0 )) {
         # UCI option to discover IPV6 routed SLAAC addresses
         # NOT TODO - ping probe take too long when added in awk-rule loop
         cmd = ( "ip -6 --oneline route show dev " net ) ;
 
 
         while ( ( cmd | getline adr ) > 0 ) {
-          if ( substr( adr, 1, 5 ) <= "fd00:" ) {
+          if (( substr( adr, 1, 5 ) <= "fd00:" ) \
+          && ( index( adr, "via" ) == 0 )) {
             # GA or ULA routed addresses only (not LL or MC)
             sub( /\/.*/, "", adr ) ;
             adr = ( adr slaac ) ;
-            if ( split( adr, tmp0, ":" ) >= 8 ) { sub( "::", ":", adr ) ; }
-            qpr = ipv6_ptr( adr ) ;
-            x = ( fqdn ". 120 IN AAAA " adr ) ;
-            y = ( qpr " 120 IN PTR " fqdn ) ;
-            print ( x "\n" y ) > hostfile ;
+            
+            
+            if ( split( adr, tmp0, ":" ) >= 8 ) { 
+              sub( "::", ":", adr ) ; 
+            }
+
+
+            if ( bconf == 1 ) {
+              x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
+              y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+              print ( x "\n" y ) > hostfile ;
+            }
+
+            else {
+              qpr = ipv6_ptr( adr ) ;
+              x = ( fqdn ". 120 IN AAAA " adr ) ;
+              y = ( qpr ". 120 IN PTR " fqdn ) ;
+              print ( x "\n" y ) > hostfile ;
+            }
           }
         }
 
 
   else {
     if (( cdr == 128 ) && ( hst != "-" )) {
-      # only for provided hostnames and full /128 assignments
-      qpr = ipv6_ptr( adr ) ;
-      x = ( fqdn ". 120 IN AAAA " adr ) ;
-      y = ( qpr " 120 IN PTR " fqdn ) ;
-      print ( x "\n" y ) > hostfile ;
+      if ( bconf == 1 ) {
+        x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
+        y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+        print ( x "\n" y ) > hostfile ;
+      }
+
+      else {
+        # only for provided hostnames and full /128 assignments
+        qpr = ipv6_ptr( adr ) ;
+        x = ( fqdn ". 120 IN AAAA " adr ) ;
+        y = ( qpr ". 120 IN PTR " fqdn ) ;
+        print ( x "\n" y ) > hostfile ;
+      }
     }
   }
 }
@@ -132,7 +164,7 @@ function ipv6_ptr( ipv6,    arpa, ary, end, i, j, new6, sz, start ) {
 
 ##############################################################################
 
-function slaac_eui64( mac,    ary, glbit, eui64 ) {  
+function slaac_eui64( mac,    ary, glbit, eui64 ) {
   if ( length(mac) >= 12 ) {
     # RFC2373 and use DHCPv4 registered MAC to find SLAAC addresses
     split( mac , ary , "" ) ;
@@ -143,12 +175,12 @@ function slaac_eui64( mac,    ary, glbit, eui64 ) {
     eui64 = ( ary[1] ary[2] ary[3] ary[4] ":" ary[5] ary[6] "ff:fe" ) ;
     eui64 = ( eui64 ary[7] ary[8] ":" ary[9] ary[10]  ary[11] ary[12] ) ;
   }
-  
+
   else {
     eui64 = 0 ;
   }
-  
-  
+
+
   return eui64 ;
 }
 
index 68c822af9a656b0f669686fe1af86acddef79a90..2fc64ab4055950985a06f6ab890a8e85bb7e2bb3 100644 (file)
@@ -45,42 +45,48 @@ odhcpd_zonedata() {
   local dhcp_ls_add=$UNBOUND_VARDIR/dhcp_lease.add
   local dhcp_ls_del=$UNBOUND_VARDIR/dhcp_lease.del
   local dhcp_origin=$( uci get dhcp.@odhcpd[0].leasefile )
-  
+
   config_load unbound
   config_foreach odhcpd_settings unbound
 
 
   if [ "$UNBOUND_D_DHCP_LINK" = "odhcpd" -a -f "$dhcp_origin" ] ; then
-    # Capture the lease file which could be changing often,
-    # and unbound-control only for changes in hosts (or else...)
+    # Capture the lease file which could be changing often
     cat $dhcp_origin | sort > $dhcp_ls_new
     touch $dhcp_ls_old
     sort $dhcp_ls_new $dhcp_ls_old $dhcp_ls_old | uniq -u > $dhcp_ls_add
     sort $dhcp_ls_old $dhcp_ls_new $dhcp_ls_new | uniq -u > $dhcp_ls_del
 
-    # Go through the messy business of coding up A, AAAA, and PTR records.
+    # Go through the messy business of coding up A, AAAA, and PTR records
+    # This static conf will be available if Unbound restarts asynchronously
+    awk -v hostfile=$UNBOUND_DHCP_CONF -v domain=$UNBOUND_TXT_DOMAIN \
+        -v bslaac=$UNBOUND_B_SLAAC6_MAC -v bisolt=0 -v bconf=1 \
+        -f /usr/lib/unbound/odhcpd.awk $dhcp_ls_new
+
+    # Deleting and adding all records into Unbound can be a burden in a
+    # high density environment. Use unbound-control incrementally.
     awk -v hostfile=$dns_ls_del -v domain=$UNBOUND_TXT_DOMAIN \
-        -v bslaac=$UNBOUND_B_SLAAC6_MAC -v bisolt=0 \
+        -v bslaac=$UNBOUND_B_SLAAC6_MAC -v bisolt=0 -v bconf=0 \
         -f /usr/lib/unbound/odhcpd.awk $dhcp_ls_del
 
     awk -v hostfile=$dns_ls_add -v domain=$UNBOUND_TXT_DOMAIN \
-        -v bslaac=$UNBOUND_B_SLAAC6_MAC -v bisolt=0 \
+        -v bslaac=$UNBOUND_B_SLAAC6_MAC -v bisolt=0 -v bconf=0 \
         -f /usr/lib/unbound/odhcpd.awk $dhcp_ls_add
 
 
     if [ -f "$dns_ls_del" ] ; then
       cat $dns_ls_del | $UNBOUND_CONTROL_CFG local_datas_remove
     fi
-    
+
 
     if [ -f "$dns_ls_add" ] ; then
       cat $dns_ls_add | $UNBOUND_CONTROL_CFG local_datas
     fi
-    
-    
+
+
     # prepare next round
     mv $dhcp_ls_new $dhcp_ls_old
-    rm -f $dns_ls_del $dns_ls_add
+    rm -f $dns_ls_del $dns_ls_add $dhcp_ls_del $dhcp_ls_add
   fi
 }
 
index 9cd6a5eb8ba4934fb9496c6f0f849a4f336a5ecc..44eeb6fccd07de8df4637e1de6faeb01540685b5 100644 (file)
@@ -64,6 +64,7 @@ UNBOUND_PIDFILE=/var/run/unbound.pid
 
 UNBOUND_SRV_CONF=$UNBOUND_VARDIR/unbound_srv.conf
 UNBOUND_EXT_CONF=$UNBOUND_VARDIR/unbound_ext.conf
+UNBOUND_DHCP_CONF=$UNBOUND_VARDIR/unbound_dhcp.conf
 UNBOUND_CONFFILE=$UNBOUND_VARDIR/unbound.conf
 
 UNBOUND_KEYFILE=$UNBOUND_VARDIR/root.key
@@ -136,10 +137,10 @@ create_interface_dns() {
     {
       for address in $addresses ; do
         case $address in
-        fe80:*|169.254.*) 
+        fe80:*|169.254.*)
           echo "  # note link address $address"
           ;;
-          
+
         [1-9a-f]*:*[0-9a-f])
           # GA and ULA IP6 for HOST IN AAA records (ip command is robust)
           for name in $names ; do
@@ -164,10 +165,10 @@ create_interface_dns() {
     {
       for address in $addresses ; do
         case $address in
-        fe80:*|169.254.*) 
+        fe80:*|169.254.*)
           echo "  # note link address $address"
           ;;
-          
+
         "${ulaprefix%%:/*}"*)
           # Only this networks ULA and only hostname
           echo "  local-data: \"$UNBOUND_TXT_HOSTNAME. 120 IN AAAA $address\""
@@ -308,7 +309,7 @@ unbound_control() {
 
 
   {
-    # Amend your own extended clauses here like forward zones or disable 
+    # Amend your own extended clauses here like forward zones or disable
     # above (local, no encryption) and amend your own remote encrypted control
     echo
     echo "include: $UNBOUND_EXT_CONF" >> $UNBOUND_CONFFILE
@@ -645,14 +646,37 @@ unbound_access() {
 
   {
     # Amend your own "server:" stuff here
-    echo
-    echo "include: $UNBOUND_SRV_CONF"
+    echo "  include: $UNBOUND_SRV_CONF"
     echo
   } >> $UNBOUND_CONFFILE
 }
 
 ##############################################################################
 
+unbound_adblock() {
+  # TODO: Unbound 1.6.0 added "tags" and "views"; lets work with adblock team
+  local adb_enabled adb_file
+
+  if [ ! -x /usr/bin/adblock.sh -o ! -x /etc/init.d/adblock ] ; then
+    adb_enabled=0
+  else
+    /etc/init.d/adblock enabled && adb_enabled=1 || adb_enabled=0
+  fi
+
+
+  if [ "$adb_enabled" -gt 0 ] ; then
+    {
+      # Pull in your selected openwrt/pacakges/net/adblock generated lists
+      for adb_file in $UNBOUND_VARDIR/adb_list.* ; do
+        echo "  include: $adb_file"
+      done
+      echo
+    } >> $UNBOUND_CONFFILE
+  fi
+}
+
+##############################################################################
+
 unbound_hostname() {
   if [ -n "$UNBOUND_TXT_DOMAIN" ] ; then
     {
@@ -686,6 +710,16 @@ unbound_hostname() {
       config_load dhcp
       config_foreach create_interface_dns dhcp
     fi
+
+
+    if [ -f "$UNBOUND_DHCP_CONF" ] ; then
+      {
+        # Seed DHCP records because dhcp scripts trigger externally
+        # Incremental Unbound restarts may drop unbound-control add records
+        echo "  include: $UNBOUND_DHCP_CONF"
+        echo
+      } >> $UNBOUND_CONFFILE
+    fi
   fi
 }
 
@@ -799,6 +833,7 @@ unbound_start() {
   if [ "$UNBOUND_B_MAN_CONF" -eq 0 ] ; then
     unbound_conf
     unbound_access
+    unbound_adblock
 
     if [ "$UNBOUND_D_DHCP_LINK" = "dnsmasq" ] ; then
       dnsmasq_link
index d81d7b8e9828f7372e9e5c7a06741aa1cdf5bfcc..37e34ee6e14bf342077b4c239c07fa52d362297c 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vallumd
-PKG_VERSION:=0.1.2
+PKG_VERSION:=0.1.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/stintel/vallumd/archive/$(PKG_VERSION)/
-PKG_MD5SUM:=d48df2ca8043d4eec4787bec2bba5dbb87d7a8325ac3b136c05dcd1a48d81ae4
+PKG_MD5SUM:=b40bede34ea321daf799276111e0e804007dc7c10eb031a0a654982957dcfb25
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
index 9d9d3ba524fab77fdb231f520e0fc67d7582d356..921597dcf1512277e44c74b6f745d16c0fc3ca00 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vnstat
-PKG_VERSION:=1.16
+PKG_VERSION:=1.12
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://humdi.net/vnstat
-PKG_HASH:=420fec6c89229a100697f3189e824a1b81f7148dd651558f2ff03cc298308e8b
+PKG_MD5SUM:=a154b2196771e06a8accd1c24374009c
 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
 
 PKG_INSTALL:=1
@@ -86,7 +86,7 @@ define Package/vnstat/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(CP) $(PKG_INSTALL_DIR)/usr/sbin/vnstatd $(1)/usr/sbin/
        $(INSTALL_DIR) $(1)/etc
-       $(INSTALL_CONF) $(PKG_BUILD_DIR)/cfg/vnstat.conf $(1)/etc/
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/vnstat.conf $(1)/etc/
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) ./files/vnstat.config $(1)/etc/config/vnstat
        $(INSTALL_DIR) $(1)/etc/init.d
diff --git a/net/vnstat/patches/001-conf.patch b/net/vnstat/patches/001-conf.patch
new file mode 100644 (file)
index 0000000..5fb24c3
--- /dev/null
@@ -0,0 +1,19 @@
+--- a/cfg/vnstat.conf
++++ b/cfg/vnstat.conf
+@@ -78,13 +78,13 @@ DaemonUser ""
+ DaemonGroup ""
+ # how often (in seconds) interface data is updated
+-UpdateInterval 30
++UpdateInterval 60
+ # how often (in seconds) interface status changes are checked
+-PollInterval 5
++PollInterval 30
+ # how often (in minutes) data is saved to file
+-SaveInterval 5
++SaveInterval 30
+ # how often (in minutes) data is saved when all interface are offline
+ OfflineSaveInterval 30
diff --git a/net/vnstat/patches/002-no_install_strip.patch b/net/vnstat/patches/002-no_install_strip.patch
new file mode 100644 (file)
index 0000000..8f11de6
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/Makefile
++++ b/Makefile
+@@ -66,11 +66,11 @@ install:
+ # install everything else
+       install -d -m 755 $(BIN) $(SBIN) $(MAN)/man1 $(MAN)/man5
+-      install -s -m 755 src/vnstat $(BIN)
+-      install -s -m 755 src/vnstatd $(SBIN)
++      install -m 755 src/vnstat $(BIN)
++      install -m 755 src/vnstatd $(SBIN)
+       @if [ -f "src/vnstati" ]; \
+-      then echo install -s -m 755 src/vnstati $(BIN); \
+-      install -s -m 755 src/vnstati $(BIN); \
++      then echo install -m 755 src/vnstati $(BIN); \
++      install -m 755 src/vnstati $(BIN); \
+       fi
+ # update man pages, gzip it if previous version was done so   
+@@ -139,12 +139,12 @@ bsdinstall:
+ # install binaries
+       install -d -m 755 $(DESTDIR)/var/db/vnstat
+-      install -s -m 755 src/vnstat $(BIN_BSD)
+-      install -s -m 755 src/vnstatd $(SBIN_BSD)
++      install -m 755 src/vnstat $(BIN_BSD)
++      install -m 755 src/vnstatd $(SBIN_BSD)
+       @if [ -f "src/vnstati" ]; \
+-      then echo install -s -m 755 src/vnstati $(BIN_BSD); \
+-      install -s -m 755 src/vnstati $(BIN_BSD); \
++      then echo install -m 755 src/vnstati $(BIN_BSD); \
++      install -m 755 src/vnstati $(BIN_BSD); \
+       fi
+ # install default config if such doesn't exist
diff --git a/net/vnstat/patches/003-no_install_uname.patch b/net/vnstat/patches/003-no_install_uname.patch
new file mode 100644 (file)
index 0000000..14c17d5
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/Makefile
++++ b/Makefile
+@@ -33,12 +33,6 @@ debug:
+ install:
+       @echo "Installing vnStat..."
+-# check that system is really Linux
+-      @if [ `uname` != "Linux" ]; \
+-      then echo "This isn't a Linux system. Maybe 'make bsdinstall' is what you need?"; \
+-      false; \
+-      fi
+-
+ # check that there's something to install
+       @if [ ! -f "src/vnstat" ] || [ ! -f "src/vnstatd" ]; \
+       then echo "Nothing to install, run make first."; \
diff --git a/net/vnstat/patches/100-musl-compat.patch b/net/vnstat/patches/100-musl-compat.patch
new file mode 100644 (file)
index 0000000..0512389
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/src/common.h
++++ b/src/common.h
+@@ -22,6 +22,7 @@
+ #include <pwd.h>
+ #include <grp.h>
+ #include <libgen.h>
++#include <fcntl.h>
+ #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
+ #include <sys/param.h>
diff --git a/net/vnstat/patches/990-adjust-configuration-defaults.patch b/net/vnstat/patches/990-adjust-configuration-defaults.patch
deleted file mode 100644 (file)
index 1627b4d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-From: Jo-Philipp Wich <jo@mein.io>
-Date: Thu, 26 Jan 2017 15:30:00 +0100
-Subject: [PATCH] config: adjust default values
-
-Adjust the default interval settings to be better suited for slower embedded
-devices.
-
-Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-
---- a/cfg/vnstat.conf
-+++ b/cfg/vnstat.conf
-@@ -87,13 +87,13 @@ DaemonUser ""
- DaemonGroup ""
- # how often (in seconds) interface data is updated
--UpdateInterval 30
-+UpdateInterval 60
- # how often (in seconds) interface status changes are checked
--PollInterval 5
-+PollInterval 30
- # how often (in minutes) data is saved to file
--SaveInterval 5
-+SaveInterval 30
- # how often (in minutes) data is saved when all interface are offline
- OfflineSaveInterval 30
diff --git a/net/vnstat/patches/991-no-invocation.patch b/net/vnstat/patches/991-no-invocation.patch
deleted file mode 100644 (file)
index b56950b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Jo-Philipp Wich <jo@mein.io>
-Date: Thu, 26 Jan 2017 15:31:00 +0100
-Subject: [PATCH] make: do not invoke vnstat --showconfig
-
-In a cross-compile setting we cannot invoke the complied target executable,
-therfore commit out the --showconfig call in order to prevent make from
-exiting with an error.
-
-Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -104,9 +104,9 @@ release: distcheck
-       ls -l $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz
- install-data-hook:
--      $(DESTDIR)$(bindir)/vnstat$(EXEEXT) --showconfig >vnstat.conf && \
--        $(MKDIR_P) $(DESTDIR)$(sysconfdir) && \
--        mv -f vnstat.conf $(DESTDIR)$(sysconfdir)/vnstat.conf
-+      #$(DESTDIR)$(bindir)/vnstat$(EXEEXT) --showconfig >vnstat.conf && \
-+      #  $(MKDIR_P) $(DESTDIR)$(sysconfdir) && \
-+      #  mv -f vnstat.conf $(DESTDIR)$(sysconfdir)/vnstat.conf
-       @echo
-       @echo "============================================================================"
-       @echo "  Note: No service file has been installed for starting the daemon"
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -2051,9 +2051,9 @@ release: distcheck
-       ls -l $(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz
- install-data-hook:
--      $(DESTDIR)$(bindir)/vnstat$(EXEEXT) --showconfig >vnstat.conf && \
--        $(MKDIR_P) $(DESTDIR)$(sysconfdir) && \
--        mv -f vnstat.conf $(DESTDIR)$(sysconfdir)/vnstat.conf
-+      #$(DESTDIR)$(bindir)/vnstat$(EXEEXT) --showconfig >vnstat.conf && \
-+      #  $(MKDIR_P) $(DESTDIR)$(sysconfdir) && \
-+      #  mv -f vnstat.conf $(DESTDIR)$(sysconfdir)/vnstat.conf
-       @echo
-       @echo "============================================================================"
-       @echo "  Note: No service file has been installed for starting the daemon"
index a65e1a3192d5b62b46724689206480c7ff6ebeef..a7c8cc81c9563ae0863ce01eeeaec95db7db2247 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vpnbypass
-PKG_VERSION:=1.0.0
+PKG_VERSION:=1.1.1
 PKG_RELEASE:=4
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
@@ -22,10 +22,9 @@ endef
 
 define Package/$(PKG_NAME)/description
 This service can be used to enable simple VPN split tunnelling.
-Supports accessing domains, IP ranges outside of your VPN tunnel. 
+Supports accessing domains, IP ranges outside of your VPN tunnel.
 Also supports dedicating local ports/IP ranges for direct internet access (outside of your VPN tunnel).
 Please see the README for further information.
-
 endef
 
 define Package/$(PKG_NAME)/conffiles
@@ -33,6 +32,9 @@ define Package/$(PKG_NAME)/conffiles
 endef
 
 define Build/Prepare
+       mkdir -p $(PKG_BUILD_DIR)/files/
+       $(CP) ./files/vpnbypass.init $(PKG_BUILD_DIR)/files/vpnbypass.init
+       sed -i "s|^\(PKG_VERSION\).*|\1='$(PKG_VERSION)-$(PKG_RELEASE)'|" $(PKG_BUILD_DIR)/files/vpnbypass.init
 endef
 
 define Build/Configure
@@ -43,11 +45,11 @@ endef
 
 define Package/$(PKG_NAME)/install
        $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/vpnbypass.init $(1)/etc/init.d/vpnbypass
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/vpnbypass.init $(1)/etc/init.d/vpnbypass
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) ./files/vpnbypass.conf $(1)/etc/config/vpnbypass
        $(INSTALL_DIR) $(1)/etc/hotplug.d/firewall
-       $(INSTALL_DATA) ./files/vpnbypass.hotplug $(1)/etc/hotplug.d/firewall/90-vpnbypass
+       $(INSTALL_DATA) ./files/vpnbypass.hotplug $(1)/etc/hotplug.d/firewall/94-vpnbypass
 endef
 
-$(eval $(call BuildPackage,$(PKG_NAME)))
\ No newline at end of file
+$(eval $(call BuildPackage,$(PKG_NAME)))
index 9dd2cc2496ba5b273b14f7548e2b4299656ed91a..7867ba76d514ad44876d277f18c45443861a0326 100644 (file)
@@ -1,30 +1,47 @@
-# OpenWrt Simple VPNBypass
-A simple PROCD-based vpnbypass init script for OpenWrt/LEDE Project. Useful if your router accesses internet thru VPN client/tunnel, but you want specific traffic (ports, IP ranges, domains or local IP ranges) to be routed outside of this tunnel.
+# VPN Bypass
+A simple PROCD-based vpnbypass service for OpenWrt/LEDE Project. Useful if your router accesses internet thru VPN client/tunnel, but you want specific traffic (ports, IP ranges, domains or local IP ranges) to be routed outside of this tunnel.
 
-# Features
-- Routes Plex Media Server traffic outside of the VPN tunnel.
-- Allows you to define IPs/ranges in local network so that their traffic is routed outside of the VPN tunnel.
-- Allows you to define list of domain names which are accessed outside of the VPN tunnel (useful for Netflix, Hulu, etc).
+## Features
+- Allows to define local ports so that traffic to them is routed outside of the VPN tunnel (by default routes Plex Media Server traffic (port 32400) outside of the VPN tunnel).
+- Allows to define IPs/subnets in local network so that their traffic is routed outside of the VPN tunnel (by default routes traffic from 192.168.1.81-192.168.1.87 outside of the VPN tunnel).
+- Allows to define remote IPs/ranges that they are accessed outside of the VPN tunnel (by default routes LogmeIn Hamachi traffic (25.0.0.0/8) outside of the VPN tunnel).
+- Allows to define list of domain names which are accessed outside of the VPN tunnel (useful for Netflix, Hulu, etc).
 - Doesn't stay in memory -- creates the iptables rules which are automatically updated on WAN up/down.
+- Has a companion package (luci-app-vpnbypass) so everything can be configured with Web UI.
+- Proudly made in Canada, using locally-sourced electrons.
 
-# Requirements
-This service requires following packages to be installed on your router: ip-full ipset iptables dnsmasq-full (dnsmasq-full requires you uninstall dnsmasq first). Run the following commands to satisfy the requirements:
+## Screenshot (luci-app-vpnbypass)
+![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/vpnbypass/screenshot01.png "screenshot")
+
+## Requirements
+This service requires following packages to be installed on your router: ```ip-full ipset iptables dnsmasq-full``` (```ip-full``` requires you uninstall ```ip``` first; ```dnsmasq-full``` requires you uninstall ```dnsmasq``` first). Run the following commands to satisfy the requirements:
 ```sh
 opkg update
-opkg remove dnsmasq ip; opkg install ip-full ipset iptables dnsmasq-full
+opkg remove dnsmasq ip
+opkg install ip-full ipset iptables dnsmasq-full
 ```
 
-# How to install
+## How to install
 ```sh
 opkg update
 opkg install vpnbypass luci-app-vpnbypass
 ```
-Default install routes Plex Media Server traffic (port 32400) outside of the VPN tunnel, routes LogmeIn Hamachi traffic (25.0.0.0/8) outside of the VPN tunnel and also routes internet traffic from local IPs 192.168.1.80-192.168.1.88 outside of the VPN tunnel.
+Default install routes Plex Media Server traffic (port 32400) outside of the VPN tunnel, routes LogmeIn Hamachi traffic (25.0.0.0/8) outside of the VPN tunnel and also routes internet traffic from local IPs 192.168.1.81-192.168.1.87 outside of the VPN tunnel. You can safely delete these example rules if they do not apply to you.
+
+## Documentation / Discussion
+Please head to [LEDE Project Forum](https://forum.lede-project.org/t/vpn-bypass-split-tunneling-service-luci-ui/1106) for discussions of this service.
+
+### Bypass Domains Format/Syntax
+Domain lists should be in following format/syntax: ```/domain1.com/domain2.com/vpnbypass```. Please don't forget the leading ```/``` and trailing ```/vpnbypass```. There's no validation if you enter something incorrectly -- it just won't work. Please see [Notes/Known Issues](#notesknown-issues) if you want to edit this setting manually, without Web UI.
 
-# Documentation / Discussion
-Please head to OpenWrt/LEDE Project Forums for discussion of this script.
+## What's New
+1.1.1
+- More reliable way of obtaining WAN gateway on boot (thanks @dibdot for the hint!).
+
+1.1.0:
+- Detects individual IP addresses in the config and converts them to subnet automatically.
+- Proper implementation of reload on vpnbypass config change.
 
-# What's New
 1.0.0:
 - Hotplug script created during install.
 
@@ -37,11 +54,11 @@ Please head to OpenWrt/LEDE Project Forums for discussion of this script.
 0.0.1:
 - Initial release.
 
-# Known Issues
-Until user-defined domains are supported within vpnbypass config, you can set domains to be accessed outside of VPN tunnel like so:
+## Notes/Known Issues
+Domains to be accessed outside of VPN tunnel are not defined in ```/etc/config/vpnpass```, but rather in ```/etc/config/dhcp```. To add/delete/edit domains you can use VPN Bypass Web UI or you can edit ```/etc/config/dhcp``` manually or run following commands:
 ```sh
 uci add_list dhcp.@dnsmasq[-1].ipset='/github.com/plex.tv/google.com/vpnbypass'
 uci add_list dhcp.@dnsmasq[-1].ipset='/hulu.com/netflix.com/nhl.com/vpnbypass'
 uci commit dhcp
 /etc/init.d/dnsmasq restart
-```
\ No newline at end of file
+```
index 8c200e934363a39129d74b131b62d9e22ca57ab6..b48d45e72fd1115b660b2c8004bec1815fe11af9 100644 (file)
@@ -1,5 +1,5 @@
 config vpnbypass 'config'
        option enabled '1'
        list localport '32400'
+       list localsubnet '192.168.1.81/29'
        list remotesubnet '25.0.0.0/8'
-       list localsubnet '192.168.1.80/28'
index 2bf5aa60e77bf750d0f3e601957ba5448ac0199b..c64b83c000f1f1f5d9c312ad59b2f272ce55e77e 100644 (file)
@@ -1,76 +1,84 @@
 #!/bin/sh /etc/rc.common
+PKG_VERSION=
 
-START=90
+START=94
 USE_PROCD=1
 
-TID="200"; FW_MARK="0x010000"; IPSET="vpnbypass"; 
+readonly TID="200" FW_MARK="0x010000" IPSET="vpnbypass"
 
 output() {
-       [ -z "$verbosity" ] && config_get verbosity  'config' 'verbosity' '2'
-       [ -n "$2" -a $((verbosity)) -ne $(($2)) ] && return 0;
+       [ -n "$2" ] && [ ! $(($verbosity & $2)) -gt 0 ] && return 0;
        [ -t 1 ] && echo -e -n "$1"
-       [ $(echo -e -n "$1" | wc -l) -gt 0 ] && logger -t "vpnbypass[$$]" "$(echo -e -n ${logmsg}${1})" && logmsg='' || logmsg=${logmsg}${1}
+       [ $(echo -e -n "$1" | wc -l) -gt 0 ] && logger -t "${PKG_NAME:-service} [$$]" "$(echo -e -n ${logmsg}${1})" && logmsg='' || logmsg=${logmsg}${1}
 }
 
 vpnbypass_enabled() {
-    config_get_bool enabled 'config' 'enabled' 0
-    [ $((enabled)) -gt 0 ] && return 0 || { output "VPNBypass is not enabled in the config file!\nTo enable, run 'uci set vpnbypass.config.enabled=1; uci commit vpnbypass'\n"; return 1; }
+       config_load vpnbypass
+       config_get_bool enabled 'config' 'enabled' 0
+       config_get verbosity    'config' 'verbosity' '2'
+       PKG_NAME="${PKG_NAME:-vpnbypass}"
+       [ -n "$PKG_VERSION" ] && p_name="$PKG_NAME $PKG_VERSION" || p_name="$PKG_NAME"
+       [ -t 1 ] || p_name='service'
+       source /lib/functions/network.sh
+       [ "$enabled" -ne "0" ] && return 0
+       output "$p_name is not enabled in the config file!\n"
+       output "To enable, run 'uci set $PKG_NAME.config.enabled=1; uci commit $PKG_NAME'\n"
+       return 1
 }
 
-boot() { ubus -t 30 wait_for network.interface && rc_procd start_service || output 'ERROR: Failed to settle network interface!\n'; }
+iptables_reset(){ [ -z "$PKG_NAME" ] && return 1; iptables-save | grep -Fv -- "$PKG_NAME" | iptables-restore; lsmod | grep -q ip6table_nat && ip6tables-save | grep -Fv -- "$PKG_NAME" | ip6tables-restore; }
+
+boot() { ubus -t 30 wait_for network.interface.wan && { rc_procd start_service; rc_procd service_triggers; } || output "ERROR: $p_name failed to settle network interface!\n"; }
 
 start_service() {
-       local ll
-    config_load vpnbypass
-    vpnbypass_enabled || return 1
-       [ -d /etc/openvpn ] || return 1
-    config_get lports   'config' 'localport'
-    config_get rports   'config' 'remoteport'
-    config_get routes   'config' 'remotesubnet'
-    config_get ranges   'config' 'localsubnet'
-    config_get domains  'config' 'domain'
+       local ll c=1
+  config_load vpnbypass
+  vpnbypass_enabled || return 1
+  config_get lports   'config' 'localport'
+  config_get rports   'config' 'remoteport'
+  config_get routes   'config' 'remotesubnet'
+  config_get ranges   'config' 'localsubnet'
+  config_get domains  'config' 'domain'
 
        procd_open_instance
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_close_instance
 
-       . /lib/functions/network.sh; network_get_ipaddr wanip wan; network_get_gateway gwip wan; network_get_ipaddr lanip lan
-       [ ! "$wanip" ] && output 'ERROR: Could not get wan ip\n' && exit 0
-       [ ! "$gwip" ] && output 'ERROR: Could not get wan gateway\n' && exit 0
-       for ll in ${routes}; do (ip route del $ll; ip route add $ll via $gwip) >/dev/null 2>&1; done
-       (ip rule del fwmark $FW_MARK table $TID; iptables -t mangle -F; ipset -F $IPSET; ipset -X $IPSET) >/dev/null 2>&1
-       (ip route flush table $TID; ip route flush cache) >/dev/null 2>&1
-       (ip route add default via $gwip table $TID; ip route flush cache) >/dev/null 2>&1
-       (modprobe xt_set || modprobe ip_set; insmod ip_set_hash_ip) >/dev/null 2>&1
-       (ipset -N $IPSET iphash -q; ipset -F $IPSET) >/dev/null 2>&1
-       for ll in ${lports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --sport $ll -j MARK --set-mark $FW_MARK/$FW_MARK -m comment --comment "vpnbypass"; done
-       for ll in ${rports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --dport $ll -j MARK --set-mark $FW_MARK/$FW_MARK -m comment --comment "vpnbypass"; done
-       for ll in ${ranges}; do iptables -t mangle -I PREROUTING -s $ll -j MARK --set-mark $FW_MARK/$FW_MARK -m comment --comment "vpnbypass"; done
-       iptables -t mangle -A PREROUTING -m set --match-set $IPSET dst -j MARK --set-mark $FW_MARK/$FW_MARK -m comment --comment "vpnbypass"
-       ip rule add fwmark $FW_MARK table $TID
-       output "vpnbypass started with TID: $TID FW_MARK: $FW_MARK\n"
+       while : ; do network_get_ipaddr wanip wan; network_get_gateway gwip wan; [ $c -ge 15 ] && break || let "c+=1"; [ -n "$wanip" -a -n "$gwip" ] && break || output "$p_name waiting for wan gateway...\n"; sleep 2; network_flush_cache; done
+       [ -z "$wanip" -o -z "$gwip" ] && output "ERROR: $p_name could not get wan interface IP: $wanip or gateway: $gwip!\n" && exit 0
+
+       for ll in ${routes}; do ip route del $ll; ip route add $ll via $gwip; done
+       ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; iptables_reset; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
+       ip route flush table "$TID"; ip route flush cache;
+       ip route add default via "$gwip" table "$TID"; ip route flush cache;
+       { modprobe xt_set; modprobe ip_set; modprobe ip_set_hash_ip; } >/dev/null 2>&1
+       ipset -q -exist create "$IPSET" hash:ip; ipset -q flush "$IPSET"
+       for ll in ${lports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --sport "${ll//-/:}" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
+       for ll in ${rports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --dport "${ll//-/:}" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
+       for ll in ${ranges}; do iptables -t mangle -I PREROUTING -s "$ll" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
+       iptables -t mangle -A PREROUTING -m set --match-set "$IPSET" dst -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"
+       ip rule add fwmark "$FW_MARK" table "$TID"
+       output "$p_name started with TID: $TID; FW_MARK: $FW_MARK\n"
 }
 
 stop_service() {
        local ll
-    config_load vpnbypass
-    vpnbypass_enabled || return 1
-    config_get routes   'config' 'remotesubnet'
+  vpnbypass_enabled || return 1
+  config_get routes   'config' 'remotesubnet'
 
-       [ -d /etc/openvpn ] || return 1
-       rm -f /etc/hotplug.d/firewall/${START}-${IPSET}
-       . /lib/functions/network.sh; network_get_ipaddr wanip wan; network_get_gateway gwip wan; network_get_ipaddr lanip lan
-       [ ! "$wanip" ] && output 'ERROR: Could not get wan ip\n' && exit 0
-       [ ! "$gwip" ] && output 'ERROR: Could not get wan gateway\n' && exit 0
-       for ll in ${routes}; do ip route del $ll >/dev/null 2>&1; done
-#      iptables-save | grep -Fv -- "vpnbypass" | iptables-restore
-       (ip rule del fwmark $FW_MARK table $TID; iptables -t mangle -F; ipset -F $IPSET; ipset -X $IPSET) >/dev/null 2>&1
-       (ip route flush table $TID; ip route flush cache) >/dev/null 2>&1
-       output "vpnbypass stopped\n"
+       for ll in ${routes}; do ip route del "$ll"; done
+       ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; iptables_reset; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
+       ip route flush table "$TID"; ip route flush cache;
+       output "$p_name stopped\n"
 }
 
+reload_service() { start_service; }
+
 service_triggers() {
-    procd_add_reload_trigger 'vpnbypass'
-    procd_add_reload_interface_trigger 'wan'
+               procd_add_reload_trigger 'vpnbypass'
+               procd_open_trigger
+               procd_add_config_trigger "config.change" "vpnbypass" /etc/init.d/vpnbypass reload
+               procd_add_interface_trigger "interface.*" "wan" /etc/init.d/vpnbypass reload
+               procd_close_trigger
 }
index 514ad1832131f1d40223363734b5865f9797c1bd..ed4be9f2b2da5813f1e71537a430d97b0582d46b 100644 (file)
@@ -8,14 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=webui-aria2
-PKG_VERSION:=2016-10-11
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/ziahamza/webui-aria2.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=6a29c1b1d0224e1daa88906e88bc2e177ca2ad76
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_DATE:=2017-02-12
+PKG_SOURCE_VERSION:=68c8ad4f86b87a8b713e13f70b4a3a3c7b86c83e
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
@@ -41,16 +39,18 @@ define Build/Compile
 endef
 
 define Package/webui-aria2/install
-       $(INSTALL_DIR) $(1)/www/webui-aria2
-
-       $(CP) $(PKG_BUILD_DIR)/fonts $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/flags $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/js $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/img $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/css $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/index.html $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/favicon.ico $(1)/www/webui-aria2
-       $(CP) $(PKG_BUILD_DIR)/configuration.js $(1)/www/webui-aria2
+       $(INSTALL_DIR) \
+               $(1)/www/webui-aria2 \
+               $(1)/www/webui-aria2/flags/4x3
+
+       $(CP) \
+               $(PKG_BUILD_DIR)/{css,fonts,js} \
+               $(PKG_BUILD_DIR)/{LICENSE,configuration.js,favicon.ico,index.html} \
+               $(1)/www/webui-aria2
+
+       $(CP) \
+               $(PKG_BUILD_DIR)/flags/4x3/{cn,de,es,fr,it,nl,pl,ru,th,tr,tw,us}.svg \
+               $(1)/www/webui-aria2/flags/4x3
 endef
 
 $(eval $(call BuildPackage,webui-aria2))
diff --git a/net/webui-aria2/patches/001-simplify-flag-icon-css.patch b/net/webui-aria2/patches/001-simplify-flag-icon-css.patch
new file mode 100644 (file)
index 0000000..c8145c4
--- /dev/null
@@ -0,0 +1,9 @@
+diff --git a/css/flag-icon.min.css b/css/flag-icon.min.css
+index 9480741..00ee213 100644
+--- a/css/flag-icon.min.css
++++ b/css/flag-icon.min.css
+@@ -1 +1 @@
+-.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}
+\ No newline at end of file
++.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}
+\ No newline at end of file
index 8dacfebc0974a6b7c18870e283724159dbe3418a..bee9ea5d136a864685fb882086e7ee952a4c9a8d 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2016 Jason A. Donenfeld <Jason@zx2c4.com>
+# Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
 # Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
 # Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
 #
@@ -11,12 +11,12 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=wireguard
 
-PKG_VERSION:=0.0.20170115
+PKG_VERSION:=0.0.20170223
 PKG_RELEASE:=1
 
 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_MD5SUM:=7e5f9f4699a2d4ace90d0df5d81bf0f67205ee08c45b95e0acc379bedef5ffe8
+PKG_HASH:=6d2c8cd29c4f9fb404546a4749ec050739a26b4a49b5864f1dec531377c3c50d
 
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
@@ -33,9 +33,11 @@ include $(INCLUDE_DIR)/package.mk
 define Package/wireguard/Default
   SECTION:=net
   CATEGORY:=Network
+  SUBMENU:=VPN
   URL:=https://www.wireguard.io
   MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
-              Dan Luedtke <mail@danrl.com>
+              Dan Luedtke <mail@danrl.com>, \
+              Jason A. Donenfeld <Jason@zx2c4.com>
 endef
 
 define Package/wireguard/Default/description
@@ -65,6 +67,10 @@ define Build/Compile
        $(call Build/Compile/Default)
 endef
 
+define Package/wireguard/install
+  true
+endef
+
 define Package/wireguard/description
   $(call Package/wireguard/Default/description)
 endef
diff --git a/net/wshaper/Makefile b/net/wshaper/Makefile
deleted file mode 100644 (file)
index d897464..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Copyright (C) 2007-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=wshaper
-PKG_VERSION:=1.1a
-PKG_RELEASE:=1
-
-PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/wshaper
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+kmod-sched +tc
-  TITLE:=wshaper
-  URL:=http://lartc.org/wondershaper/
-  PKGARCH:=all
-endef
-
-define Package/wshaper/description
- A script to do traffing shaping with the HTB algorithm.
- Wshaper attempts to:
- * Maintain low latency for interfactive traffic at all times
- * Allow 'surfing' at reasonable speeds while up or downloading
- * Make sure uploads don't harm downloads, and the other way around
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/wshaper/install
-       $(INSTALL_DIR) $(1)/usr/sbin/ $(1)/etc/init.d $(1)/etc/config $(1)/etc/hotplug.d/iface
-       $(INSTALL_BIN) ./files/wshaper.htb $(1)/usr/sbin/
-       $(INSTALL_BIN) ./files/wshaper.init $(1)/etc/init.d/wshaper
-       $(INSTALL_BIN) ./files/wshaper.iface $(1)/etc/hotplug.d/iface/10-wshaper
-       $(INSTALL_DATA) ./files/wshaper.config $(1)/etc/config/wshaper
-endef
-
-define Package/wshaper/conffiles
-/etc/config/wshaper
-endef
-
-$(eval $(call BuildPackage,wshaper))
diff --git a/net/wshaper/files/wshaper.config b/net/wshaper/files/wshaper.config
deleted file mode 100644 (file)
index ed857c5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-config 'wshaper' 'settings'
-       option 'network' 'wan'
-       option 'downlink' '2000'
-       option 'uplink' '240'
diff --git a/net/wshaper/files/wshaper.htb b/net/wshaper/files/wshaper.htb
deleted file mode 100755 (executable)
index 4b63eee..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/bin/sh
-# Wonder Shaper
-# please read the README before filling out these values 
-#
-# Set the following values to somewhat less than your actual download
-# and uplink speed. In kilobits. Also set the device that is to be shaped.
-
-# All config needs to be done in /etc/config/wshaper
-
-. /lib/functions.sh
-. /lib/functions/network.sh
-
-config_load wshaper
-for s in downlink uplink network nopriohostdst nopriohostsrc noprioportdst noprioportsrc; do
-       config_get $s settings $s
-done
-
-if ! network_get_device device "$network"; then
-       logger -t wondershaper "Error: Could not find the device for network $network, aborting."
-       exit 1
-fi
-
-[ -z "$downlink" ] && logger -t wondershaper "Error: Downlink speed not set, aborting." && exit 1
-[ -z "$uplink" ] && logger -t wondershaper "Error: Uplink speed not set, aborting." && exit 1
-
-MODULES='sch_ingress sch_sfq sch_htb cls_u32 act_police'
-DOWNLINK="$downlink"
-UPLINK="$uplink"
-DEV="$device"
-
-# low priority OUTGOING traffic - you can leave this blank if you want
-# low priority source netmasks
-NOPRIOHOSTSRC="$nopriohostsrc"
-
-# low priority destination netmasks
-NOPRIOHOSTDST="$nopriohostdst"
-
-# low priority source ports
-NOPRIOPORTSRC="$noprioportsrc"
-
-# low priority destination ports
-NOPRIOPORTDST="$noprioportdst"
-
-if [ "$1" = "status" ]
-then
-       tc -s qdisc ls dev $DEV
-       tc -s class ls dev $DEV
-       exit
-fi
-
-
-# clean existing down- and uplink qdiscs, hide errors
-tc qdisc del dev $DEV root    2> /dev/null > /dev/null
-tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
-
-if [ "$1" = "stop" ] 
-then 
-       for i in $MODULES ; do
-               rmmod $i
-       done
-       exit
-fi
-
-for i in $MODULES ; do
-        insmod $i
-done
-
-###### uplink
-
-# install root HTB, point default traffic to 1:20:
-
-tc qdisc add dev $DEV root handle 1: htb default 20
-
-# shape everything at $UPLINK speed - this prevents huge queues in your
-# DSL modem which destroy latency:
-
-tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
-
-# high prio class 1:10:
-
-tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
-   burst 6k prio 1
-
-# bulk & default class 1:20 - gets slightly less traffic, 
-# and a lower priority:
-
-tc class add dev $DEV parent 1:1 classid 1:20 htb rate $((9*$UPLINK/10))kbit \
-   burst 6k prio 2
-
-tc class add dev $DEV parent 1:1 classid 1:30 htb rate $((8*$UPLINK/10))kbit \
-   burst 6k prio 2
-
-# all get Stochastic Fairness:
-tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
-tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
-tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
-
-# TOS Minimum Delay (ssh, NOT scp) in 1:10:
-
-tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
-      match ip tos 0x10 0xff  flowid 1:10
-
-# ICMP (ip protocol 1) in the interactive class 1:10 so we 
-# can do measurements & impress our friends:
-tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
-        match ip protocol 1 0xff flowid 1:10
-
-# To speed up downloads while an upload is going on, put ACK packets in
-# the interactive class:
-
-tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \
-   match ip protocol 6 0xff \
-   match u8 0x05 0x0f at 0 \
-   match u16 0x0000 0xffc0 at 2 \
-   match u8 0x10 0xff at 33 \
-   flowid 1:10
-
-# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
-
-# some traffic however suffers a worse fate
-for a in $NOPRIOPORTDST
-do
-       tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \
-          match ip dport $a 0xffff flowid 1:30
-done
-
-for a in $NOPRIOPORTSRC
-do
-       tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \
-          match ip sport $a 0xffff flowid 1:30
-done
-
-for a in $NOPRIOHOSTSRC
-do
-       tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
-          match ip src $a flowid 1:30
-done
-
-for a in $NOPRIOHOSTDST
-do
-       tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \
-          match ip dst $a flowid 1:30
-done
-
-# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
-
-tc filter add dev $DEV parent 1: protocol ip prio 18 u32 \
-   match ip dst 0.0.0.0/0 flowid 1:20
-
-
-########## downlink #############
-# slow downloads down to somewhat less than the real speed  to prevent 
-# queuing at our ISP. Tune to see how high you can set it.
-# ISPs tend to have *huge* queues to make sure big downloads are fast
-#
-# attach ingress policer:
-
-tc qdisc add dev $DEV handle ffff: ingress
-
-# filter *everything* to it (0.0.0.0/0), drop everything that's
-# coming in too fast:
-
-tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
-   0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
-
-logger -t wondershaper "Wondershaper was started on device $device."
diff --git a/net/wshaper/files/wshaper.iface b/net/wshaper/files/wshaper.iface
deleted file mode 100644 (file)
index 2964005..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-[ "$ACTION" = ifup ] && /etc/init.d/wshaper enabled && /etc/init.d/wshaper start || exit 0
diff --git a/net/wshaper/files/wshaper.init b/net/wshaper/files/wshaper.init
deleted file mode 100644 (file)
index 638cef2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=45
-start() {
-       wshaper.htb
-}
-
-stop() {
-       wshaper.htb stop
-}
index ae5a41be029c2acac42dd7148b7878e1990076cd..50be12e87b23e04f3b82261cc5896c01525cf990 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xl2tpd
 PKG_VERSION:=devel-20151125
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=LICENSE
diff --git a/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch b/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch
new file mode 100644 (file)
index 0000000..8fa0fd3
--- /dev/null
@@ -0,0 +1,92 @@
+From 97adf987cf230e47a4800c2f0a0940a1d0d98109 Mon Sep 17 00:00:00 2001
+From: wendy2001011 <wendy2001011@163.com>
+Date: Thu, 9 Feb 2017 17:32:14 +0800
+Subject: [PATCH] xl2tpd-control: fix xl2tpd hanged up in "fopen"
+
+This is a fix for xl2tpd hanged up in "fopen" result fifo while working
+on xl2tpd with OpenWrt.
+
+Root cause is as followings,
+1. xl2tpd-control open result fifo    ##fifo readers=1
+2. xl2tpd-control read result fifo
+3. xl2tpd-control close result fifo     ##fifo readers=0
+4. xl2tpd fopen result fifo                 ##xl2tpd is hanged up here to wait readers
+5.  xl2tpd-control unlink result fifo
+
+The fix replaces the order of "unlink" and "close" when cleaning up to
+avoid hang up issue in fopen, and add the retry waiting when reading
+result fifo.
+
+[Yousong Zhou: 2s as the timeout and 10ms as the check interval]
+---
+ xl2tpd-control.c | 23 +++++++++++++++++++++--
+ 1 file changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/xl2tpd-control.c b/xl2tpd-control.c
+index 9fcab76..b8bf822 100644
+--- a/xl2tpd-control.c
++++ b/xl2tpd-control.c
+@@ -35,6 +35,7 @@
+ #define TUNNEL_REQUIRED 1
+ #define TUNNEL_NOT_REQUIRED 0
++#define TIMEOUT 2000000  //timeout is 2s
+ char result_filename[128];
+ int result_fd = -1;
+@@ -149,9 +150,9 @@ void help()
+ void cleanup(void)
+ {
+     /* cleaning up */
+-    if (result_fd >= 0)
+-          close (result_fd);
+     unlink (result_filename);
++    if (result_fd >= 0)
++        close (result_fd);
+ }
+ int main (int argc, char *argv[])
+@@ -340,6 +341,7 @@ void print_error (int level, const char *fmt, ...)
+     va_end (args);
+ }
++
+ int read_result(int result_fd, char* buf, ssize_t size)
+ {
+     /* read result from result_fd */
+@@ -348,6 +350,11 @@ int read_result(int result_fd, char* buf, ssize_t size)
+      */
+     ssize_t readed = 0;
+     ssize_t len;
++    int write_pipe = 0;
++    struct timeval tvs;
++    struct timeval tve;
++    unsigned long diff;
++    gettimeofday(&tvs, NULL);
+     do
+     {
+@@ -360,8 +367,20 @@ int read_result(int result_fd, char* buf, ssize_t size)
+                 "error: can't read command result: %s\n", strerror (errno));
+             break;
+         } else if (len == 0) {
++            if(!write_pipe) {
++                 gettimeofday(&tve, NULL);
++                 diff = (tve.tv_sec - tvs.tv_sec) * 1000000 + (tve.tv_usec - tvs.tv_usec);
++                 if (diff >= TIMEOUT) {
++                     print_error (DEBUG_LEVEL, "error: read timout\n");
++                     break;
++                 } else {
++                     usleep(10000);
++                     continue;
++                 }
++            }
+             break;
+         } else {
++            write_pipe = 1;
+             readed += len;
+             if ((size - readed) <= 0)
+                 break;
+-- 
+2.6.4
+
index 2d0c34d197e74a8df58667c4ba0d9e39753d2553..596f2a567465abf737ef2d78b741253e69df1562 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=znc
-PKG_VERSION:=1.6.3
-PKG_RELEASE:=5
+PKG_VERSION:=1.6.4
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://znc.in/releases \
                http://znc.in/releases/archive
-PKG_MD5SUM:=0dad0307e2faea26b9e304e308f7ec63
+PKG_MD5SUM:=431097eb17860bfc980f3e68fdd75f98af4bdeecd793c84835c6cb11c3320d1c
 
 PKG_MAINTAINER:=Jonas Gorski <jogo@openwrt.org>
 PKG_LICENSE:=Apache-2.0
index 6ef66303808dce9fa29ca9f8a90017cdb4cefa80..15ecdca4728ad0f87c03a4437594b06d2de295d8 100644 (file)
@@ -9,7 +9,7 @@ Subject: [PATCH] Move the root check to after config parsing
 
 --- a/src/main.cpp
 +++ b/src/main.cpp
-@@ -304,19 +304,6 @@ int main(int argc, char** argv) {
+@@ -312,19 +312,6 @@ int main(int argc, char** argv) {
                CUtils::PrintStatus(true, "");
        }
  
@@ -29,7 +29,7 @@ Subject: [PATCH] Move the root check to after config parsing
        if (bMakeConf) {
                if (!pZNC->WriteNewConfig(sConfig)) {
                        CZNC::DestroyInstance();
-@@ -338,6 +325,20 @@ int main(int argc, char** argv) {
+@@ -346,6 +333,20 @@ int main(int argc, char** argv) {
                return 1;
        }
  
diff --git a/net/znc/patches/103-Csocket-Add-some-ifdef-feature-checks.patch b/net/znc/patches/103-Csocket-Add-some-ifdef-feature-checks.patch
deleted file mode 100644 (file)
index a0dbe01..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-From d81a18d87d15bbf54ddbd675bfa829cf7dfdce9e Mon Sep 17 00:00:00 2001
-From: Edoardo Spadolini <kerio00@gmail.com>
-Date: Mon, 8 Feb 2016 14:01:51 +0100
-Subject: [PATCH] Add some #ifdef feature checks to fix compilation with
- BoringSSL
-
----
- Csocket.cc | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
---- a/src/Csocket.cpp
-+++ b/src/Csocket.cpp
-@@ -45,9 +45,12 @@
- #ifdef HAVE_LIBSSL
- #include <stdio.h>
-+#include <openssl/ssl.h>
- #include <openssl/conf.h>
- #include <openssl/engine.h>
-+#ifndef OPENSSL_NO_COMP
- #include <openssl/comp.h>
-+#endif
- #endif /* HAVE_LIBSSL */
- #ifdef HAVE_ICU
-@@ -531,8 +534,12 @@ void ShutdownCsocket()
- {
- #ifdef HAVE_LIBSSL
-       ERR_remove_state( 0 );
-+#ifndef OPENSSL_NO_ENGINE
-       ENGINE_cleanup();
-+#endif
-+#ifndef OPENSSL_IS_BORINGSSL
-       CONF_modules_unload( 1 );
-+#endif
-       ERR_free_strings();
-       EVP_cleanup();
-       CRYPTO_cleanup_all_ex_data();
-@@ -573,6 +580,7 @@ bool InitSSL( ECompType eCompressionType
-       }
- #endif /* _WIN32 */
-+#ifndef OPENSSL_NO_COMP
-       COMP_METHOD *cm = NULL;
-       if( CT_ZLIB & eCompressionType )
-@@ -588,6 +596,7 @@ bool InitSSL( ECompType eCompressionType
-               if( cm )
-                       SSL_COMP_add_compression_method( CT_RLE, cm );
-       }
-+#endif
-       // setting this up once in the begining
-       s_iCsockSSLIdx = SSL_get_ex_new_index( 0, NULL, NULL, NULL, NULL );
-@@ -1724,6 +1733,8 @@ SSL_CTX * Csock::SetupServerCTX()
- #ifndef OPENSSL_NO_ECDH
-       // Errors for the following block are non-fatal (ECDHE is nice to have
-       // but not a requirement)
-+#ifndef OPENSSL_IS_BORINGSSL
-+      // BoringSSL does this thing automatically
- #if defined( SSL_CTX_set_ecdh_auto )
-       // Auto-select sensible curve
-       if( !SSL_CTX_set_ecdh_auto( pCTX , 1 ) )
-@@ -1742,6 +1753,7 @@ SSL_CTX * Csock::SetupServerCTX()
-               ERR_clear_error();
-       }
- #endif /* SSL_CTX_set_tmp_ecdh */
-+#endif /* !OPENSSL_IS_BORINGSSL */
- #endif /* OPENSSL_NO_ECDH */
-       if( !ConfigureCTXOptions( pCTX ) )
index 22b5c38f71ad12052f80ce490a0bacb8fa09b810..d92deeea3437f1093983b8028e09b712a4f60010 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/main.cpp
 +++ b/src/main.cpp
-@@ -296,10 +296,12 @@ int main(int argc, char** argv) {
+@@ -304,10 +304,12 @@ int main(int argc, char** argv) {
                        CUtils::PrintStatus(false, "");
                        CUtils::PrintError("No modules found. Perhaps you didn't install ZNC properly?");
                        CUtils::PrintError("Read http://wiki.znc.in/Installation for instructions.");
index 70921245eab5624d29c067ae56fb19ad7616e430..224867670b6173261e7c6157abbcfa11e9cc9f9f 100644 (file)
@@ -8,16 +8,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=collectd
-PKG_VERSION:=5.5.3
-PKG_RELEASE:=1
+PKG_VERSION:=5.7.1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://collectd.org/files/
-PKG_MD5SUM:=6f10633d0f73f99ef61472a8e377d4a058de161e80f3353b4b17d394c68f2f44
+PKG_SOURCE_URL:=https://collectd.org/files/ \
+       https://github.com/collectd/collectd/releases/download/collectd-$(PKG_VERSION)
+PKG_HASH:=7edd3643c0842215553b2421d5456f4e9a8a58b07e216b40a7e8e91026d8e501
 
 PKG_FIXUP:=autoreconf
 PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
-PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>, Hannu Nyman <hannu.nyman@iki.fi>
 
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
@@ -31,20 +32,28 @@ COLLECTD_PLUGINS_DISABLED:= \
        battery \
        ceph \
        cgroups \
+       chrony \
+       cpusleep \
        curl_json \
        curl_xml \
        dbi \
+       dpdkstat \
        drbd \
        ethstat \
        fhcount \
        genericjmx \
        gmond \
+       gps \
+       grpc \
        hddtemp \
+       hugepages \
+       intel_rdt \
        ipc \
        ipmi \
        ipvs \
        java \
        log_logstash \
+       lua \
        lvm \
        lpar \
        mbmon \
@@ -53,11 +62,13 @@ COLLECTD_PLUGINS_DISABLED:= \
        memcached \
        mic \
        monitorus \
+       mqtt \
        multimeter \
        netapp \
        nfs \
        notify_desktop \
        notify_email \
+       notify_nagios \
        numa \
        openldap \
        openvz \
@@ -84,12 +95,15 @@ COLLECTD_PLUGINS_DISABLED:= \
        write_kafka \
        write_log \
        write_mongodb \
+       write_prometheus \
        write_redis \
        write_riemann \
        write_sensu \
        write_tsdb \
+       xencpu \
        xmms \
        zfs_arc \
+       zone \
        zookeeper
 
 COLLECTD_PLUGINS_SELECTED:= \
@@ -163,7 +177,7 @@ define Package/collectd/Default
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=Lightweight system statistics collection daemon
-  URL:=http://verplant.org/collectd/
+  URL:=https://collectd.org/
 endef
 
 define Package/collectd
@@ -177,34 +191,21 @@ define Package/collectd/description
  and provides mechanismns to store the values in a variety of ways.
 endef
 
-define Package/collectd/config
-       config PACKAGE_COLLECTD_ENCRYPTED_NETWORK
-       bool "Enable ability to use encrypted networking"
-       default n
-       depends on PACKAGE_collectd
-       select PACKAGE_collectd-mod-network
-endef
-
 ifneq ($(CONFIG_avr32),)
   TARGET_CFLAGS += -fsigned-char
 endif
 
 # common configure args
 CONFIGURE_ARGS+= \
+       --disable-werror \
        --disable-debug \
        --enable-daemon \
        --with-nan-emulation \
+       --with-libyajl=no \
+       --without-libgcrypt \
        --without-perl-bindings \
        --without-libudev
 
-ifneq ($(CONFIG_PACKAGE_COLLECTD_ENCRYPTED_NETWORK),)
-CONFIGURE_ARGS+= \
-       --with-libgcrypt=$(STAGING_DIR)/include
-else
-CONFIGURE_ARGS+= \
-       --without-libgcrypt
-endif
-
 CONFIGURE_VARS+= \
        CFLAGS="$$$$CFLAGS $(FPIC)" \
        LDFLAGS="$$$$LDFLAGS -lm -lz" \
@@ -335,10 +336,10 @@ $(eval $(call BuildPlugin,madwifi,MadWifi status input,madwifi,))
 $(eval $(call BuildPlugin,memory,physical memory usage input,memory,))
 $(eval $(call BuildPlugin,modbus,read variables through libmodbus,modbus,+PACKAGE_collectd-mod-modbus:libmodbus))
 $(eval $(call BuildPlugin,netlink,netlink input,netlink,+PACKAGE_collectd-mod-netlink:libmnl))
-$(eval $(call BuildPlugin,network,network input/output,network,+PACKAGE_COLLECTD_ENCRYPTED_NETWORK:libgcrypt))
+$(eval $(call BuildPlugin,network,network input/output,network,))
 $(eval $(call BuildPlugin,nginx,nginx status input,nginx,+PACKAGE_collectd-mod-nginx:libcurl))
 $(eval $(call BuildPlugin,ntpd,NTP daemon status input,ntpd,))
-$(eval $(call BuildPlugin,nut,UPS monitoring input,nut,+PACKAGE_collectd-mod-nut:nut))
+$(eval $(call BuildPlugin,nut,UPS monitoring input,nut,+PACKAGE_collectd-mod-nut:nut-common))
 $(eval $(call BuildPlugin,olsrd,OLSRd status input,olsrd,))
 $(eval $(call BuildPlugin,onewire,onewire sensor input,onewire,+PACKAGE_collectd-mod-onewire:libow-capi @BROKEN))
 $(eval $(call BuildPlugin,openvpn,OpenVPN traffic/compression input,openvpn,))
diff --git a/utils/collectd/patches/003-remove-werror.patch b/utils/collectd/patches/003-remove-werror.patch
deleted file mode 100644 (file)
index c81f209..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -7,7 +7,7 @@ SUBDIRS += daemon
- PLUGIN_LDFLAGS = -module -avoid-version -export-symbols-regex '\<module_register\>'
- if COMPILER_IS_GCC
--AM_CFLAGS = -Wall -Werror
-+AM_CFLAGS = -Wall
- endif
- AM_CPPFLAGS = -I$(srcdir)/daemon
---- a/src/libcollectdclient/Makefile.am
-+++ b/src/libcollectdclient/Makefile.am
-@@ -1,7 +1,7 @@
- AUTOMAKE_OPTIONS = foreign no-dependencies
- if COMPILER_IS_GCC
--AM_CFLAGS = -Wall -Werror
-+AM_CFLAGS = -Wall
- endif
- pkginclude_HEADERS = collectd/client.h collectd/network.h collectd/network_buffer.h collectd/lcc_features.h
index 704962f75b79fd639681309cc95c01d8324daf9f..d7cf23de15e51cab8018d38de6d8864e3fb311c7 100644 (file)
@@ -1,40 +1,38 @@
 --- a/src/rrdtool.c
 +++ b/src/rrdtool.c
-@@ -82,6 +82,7 @@ static const char *config_keys[] =
-       "HeartBeat",
-       "RRARows",
-       "RRATimespan",
-+      "RRASingle",
-       "XFF",
-       "WritesPerSecond",
-       "RandomTimeout"
-@@ -103,6 +104,8 @@ static rrdcreate_config_t rrdcreate_conf
-       /* timespans = */ NULL,
-       /* timespans_num = */ 0,
-+      /* rrasingle = */ 0,
+@@ -61,6 +61,7 @@ typedef struct rrd_queue_s rrd_queue_t;
+ static const char *config_keys[] = {
+     "CacheTimeout", "CacheFlush",      "CreateFilesAsync", "DataDir",
+     "StepSize",     "HeartBeat",       "RRARows",          "RRATimespan",
++    "RRASingle",
+     "XFF",          "WritesPerSecond", "RandomTimeout"};
+ static int config_keys_num = STATIC_ARRAY_SIZE(config_keys);
+@@ -78,6 +79,8 @@ static rrdcreate_config_t rrdcreate_conf
+     /* timespans = */ NULL,
+     /* timespans_num = */ 0,
++    /* rrasingle = */ 0,
 +
-       /* consolidation_functions = */ NULL,
-       /* consolidation_functions_num = */ 0,
+     /* consolidation_functions = */ NULL,
+     /* consolidation_functions_num = */ 0,
  
-@@ -1110,6 +1113,14 @@ static int rrd_config (const char *key,
+@@ -971,6 +974,12 @@ static int rrd_config(const char *key, c
+           /* compar = */ rrd_compare_numeric);
  
-               free (value_copy);
-       }
-+      else if (strcasecmp ("RRASingle", key) == 0)
-+      {
+     free(value_copy);
++  } else if (strcasecmp ("RRASingle", key) == 0) {
 +              if (IS_TRUE (value))
 +              {
 +                      rrdcreate_config.rrasingle = 1;
 +                      NOTICE ("rrdtool plugin: RRASingle = true: creating only AVERAGE RRAs");
 +              }
-+      }
-       else if (strcasecmp ("XFF", key) == 0)
-       {
-               double tmp = atof (value);
+   } else if (strcasecmp("XFF", key) == 0) {
+     double tmp = atof(value);
+     if ((tmp < 0.0) || (tmp >= 1.0)) {
 --- a/src/utils_rrdcreate.c
 +++ b/src/utils_rrdcreate.c
-@@ -213,6 +213,9 @@ static int rra_get (char ***ret, const v
+@@ -180,6 +180,9 @@ static int rra_get(char ***ret, const va
      rts_num = rra_timespans_num;
    }
  
 +    rra_types_num = 1;
 +
    rra_max = rts_num * rra_types_num;
-   assert (rra_max > 0);
+   assert(rra_max > 0);
  
 --- a/src/utils_rrdcreate.h
 +++ b/src/utils_rrdcreate.h
-@@ -41,6 +41,8 @@ struct rrdcreate_config_s
+@@ -40,6 +40,8 @@ struct rrdcreate_config_s {
    int *timespans;
    size_t timespans_num;
  
index 22990bd5be2bacd88482bbfb4057229f196b5c92..30c6f7f5fc4f59debf2e8b0ef99a8fa0a2fbe1f4 100644 (file)
@@ -1,11 +1,11 @@
 --- a/src/daemon/configfile.c
 +++ b/src/daemon/configfile.c
-@@ -111,7 +111,7 @@ static cf_global_option_t cf_global_opti
-       {"BaseDir",     NULL, PKGLOCALSTATEDIR},
-       {"PIDFile",     NULL, PIDFILE},
-       {"Hostname",    NULL, NULL},
--      {"FQDNLookup",  NULL, "true"},
-+      {"FQDNLookup",  NULL, "false"},
-       {"Interval",    NULL, NULL},
-       {"ReadThreads", NULL, "5"},
-       {"WriteThreads", NULL, "5"},
+@@ -104,7 +104,7 @@ static cf_global_option_t cf_global_opti
+     {"BaseDir", NULL, 0, PKGLOCALSTATEDIR},
+     {"PIDFile", NULL, 0, PIDFILE},
+     {"Hostname", NULL, 0, NULL},
+-    {"FQDNLookup", NULL, 0, "true"},
++    {"FQDNLookup", NULL, 0, "false"},
+     {"Interval", NULL, 0, NULL},
+     {"ReadThreads", NULL, 0, "5"},
+     {"WriteThreads", NULL, 0, "5"},
diff --git a/utils/collectd/patches/200-fix-git-describe-error.patch b/utils/collectd/patches/200-fix-git-describe-error.patch
deleted file mode 100644 (file)
index 71f2036..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/version-gen.sh
-+++ b/version-gen.sh
-@@ -2,7 +2,7 @@
- DEFAULT_VERSION="5.5.3.git"
--VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
-+#VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
- if test -z "$VERSION"; then
-       VERSION="$DEFAULT_VERSION"
index 495c80f3ae42a0be67b618bf663314ffc536c25e..347ede4868685a894c787f776afdae0bf3e6af7f 100644 (file)
@@ -1,11 +1,11 @@
 --- a/src/daemon/plugin.c
 +++ b/src/daemon/plugin.c
-@@ -1149,7 +1149,7 @@ static int plugin_insert_read (read_func
-       int status;
-       llentry_t *le;
+@@ -1108,7 +1108,7 @@ static int plugin_insert_read(read_func_
+   int status;
+   llentry_t *le;
  
--      rf->rf_next_read = cdtime ();
-+      rf->rf_next_read = cdtime () + (cdtime_t) 1073741824; //delay first read 1s
-       rf->rf_effective_interval = rf->rf_interval;
+-  rf->rf_next_read = cdtime();
++  rf->rf_next_read = cdtime() + (cdtime_t) 1073741824; //delay first read 1s
+   rf->rf_effective_interval = rf->rf_interval;
  
-       pthread_mutex_lock (&read_lock);
+   pthread_mutex_lock(&read_lock);
index 1dc6c5894022005ea06440daa7823402d64b15e4..18e8751cd2bff844ad2b4c1fc0a74b67c4789d46 100644 (file)
@@ -1,11 +1,11 @@
 --- a/src/olsrd.c
 +++ b/src/olsrd.c
-@@ -658,7 +658,7 @@ static int olsrd_read (void) /* {{{ */
+@@ -585,7 +585,7 @@ static int olsrd_read(void) /* {{{ */
    if (fh == NULL)
      return (-1);
  
--  fputs ("\r\n", fh);
-+  fputs ("/all \r\n", fh);
-   fflush (fh);
+-  fputs("\r\n", fh);
++  fputs("/all \r\n", fh);
+   fflush(fh);
  
-   while (fgets (buffer, sizeof (buffer), fh) != NULL)
+   while (fgets(buffer, sizeof(buffer), fh) != NULL) {
index aacf182fbff9370c5a634c0f471be80c66792e44..ac65ce79ea4cadf66ab8a67681b23fcd8449c87b 100644 (file)
@@ -18,7 +18,7 @@ Reversed patch to be applied:
 
 --- a/configure.ac
 +++ b/configure.ac
-@@ -2627,7 +2627,7 @@ then
+@@ -3186,7 +3186,7 @@ then
        SAVE_CPPFLAGS="$CPPFLAGS"
        CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
  
diff --git a/utils/collectd/patches/700-disable-sys-capability-check.patch b/utils/collectd/patches/700-disable-sys-capability-check.patch
new file mode 100644 (file)
index 0000000..2628d41
--- /dev/null
@@ -0,0 +1,14 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -833,10 +833,7 @@
+ have_cpuid_h="no"
+ AC_CHECK_HEADERS(cpuid.h, [have_cpuid_h="yes"])
+-have_capability="yes"
+-AC_CHECK_HEADERS(sys/capability.h,
+-                 [have_capability="yes"],
+-                 [have_capability="no (<sys/capability.h> not found)"])
++have_capability="no"
+ if test "x$have_capability" = "xyes"; then
+ AC_CHECK_LIB(cap, cap_get_bound,
+                  [have_capability="yes"],
index d23b09ea1fc3bf2cf67d5500d80a6595b54c734c..a869610716e90c56993aa83cde80a9a1fb75c751 100644 (file)
@@ -1,8 +1,8 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -705,6 +705,9 @@ AC_CHECK_HEADERS(net/pfvar.h,
- have_termios_h="no"
- AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
+@@ -804,6 +804,9 @@ AC_CACHE_CHECK([whether clock_boottime a
+                      [c_cv_have_clock_boottime_monotonic="no"]))
  
 +# For the iwinfo plugin
 +AC_CHECK_LIB(iwinfo, iwinfo_backend, [with_iwinfo="yes"], [with_iwinfo="no (libiwinfo not found)"], [])
@@ -10,7 +10,7 @@
  # For the turbostat plugin
  have_asm_msrindex_h="no"
  AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
-@@ -5310,6 +5313,7 @@ plugin_interface="no"
+@@ -5946,6 +5949,7 @@ plugin_interface="no"
  plugin_ipmi="no"
  plugin_ipvs="no"
  plugin_irq="no"
  plugin_load="no"
  plugin_log_logstash="no"
  plugin_memory="no"
-@@ -5713,6 +5717,7 @@ AC_PLUGIN([ipmi],        [$plugin_ipmi],
- AC_PLUGIN([iptables],    [$with_libiptc],      [IPTables rule counters])
- AC_PLUGIN([ipvs],        [$plugin_ipvs],       [IPVS connection statistics])
- AC_PLUGIN([irq],         [$plugin_irq],        [IRQ statistics])
-+AC_PLUGIN([iwinfo],      [$with_iwinfo],       [Common iwinfo wireless statistics])
- AC_PLUGIN([java],        [$with_java],         [Embed the Java Virtual Machine])
- AC_PLUGIN([load],        [$plugin_load],       [System load])
- AC_PLUGIN([logfile],     [yes],                [File logging plugin])
-@@ -6042,6 +6047,7 @@ Configuration:
-     oracle  . . . . . . . $with_oracle
-     protobuf-c  . . . . . $have_protoc_c
-     python  . . . . . . . $with_python
-+    iwinfo  . . . . . . . $with_iwinfo
-   Features:
-     daemon mode . . . . . $enable_daemon
-@@ -6091,6 +6097,7 @@ Configuration:
-     iptables  . . . . . . $enable_iptables
-     ipvs  . . . . . . . . $enable_ipvs
-     irq . . . . . . . . . $enable_irq
-+    iwinfo  . . . . . . . $enable_iwinfo
-     java  . . . . . . . . $enable_java
-     load  . . . . . . . . $enable_load
-     logfile . . . . . . . $enable_logfile
+@@ -6416,6 +6420,7 @@ AC_PLUGIN([ipmi],                [$plugi
+ AC_PLUGIN([iptables],            [$with_libiptc],           [IPTables rule counters])
+ AC_PLUGIN([ipvs],                [$plugin_ipvs],            [IPVS connection statistics])
+ AC_PLUGIN([irq],                 [$plugin_irq],             [IRQ statistics])
++AC_PLUGIN([iwinfo],              [$with_iwinfo],            [Common iwinfo wireless statistics])
+ AC_PLUGIN([java],                [$with_java],              [Embed the Java Virtual Machine])
+ AC_PLUGIN([load],                [$plugin_load],            [System load])
+ AC_PLUGIN([log_logstash],        [$plugin_log_logstash],    [Logstash json_event compatible logging])
+@@ -6797,6 +6802,7 @@ AC_MSG_RESULT([    libyajl . . . . . . .
+ AC_MSG_RESULT([    oracle  . . . . . . . $with_oracle])
+ AC_MSG_RESULT([    protobuf-c  . . . . . $have_protoc_c])
+ AC_MSG_RESULT([    protoc 3  . . . . . . $have_protoc3])
++AC_MSG_RESULT([    iwinfo  . . . . . . . $with_iwinfo])
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([  Features:])
+ AC_MSG_RESULT([    daemon mode . . . . . $enable_daemon])
+@@ -6853,6 +6859,7 @@ AC_MSG_RESULT([    ipmi  . . . . . . . .
+ AC_MSG_RESULT([    iptables  . . . . . . $enable_iptables])
+ AC_MSG_RESULT([    ipvs  . . . . . . . . $enable_ipvs])
+ AC_MSG_RESULT([    irq . . . . . . . . . $enable_irq])
++AC_MSG_RESULT([    iwinfo  . . . . . . . $enable_iwinfo])
+ AC_MSG_RESULT([    java  . . . . . . . . $enable_java])
+ AC_MSG_RESULT([    load  . . . . . . . . $enable_load])
+ AC_MSG_RESULT([    logfile . . . . . . . $enable_logfile])
 --- a/src/collectd.conf.in
 +++ b/src/collectd.conf.in
-@@ -128,6 +128,7 @@
+@@ -135,6 +135,7 @@
  #@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
  #@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
  #@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
@@ -52,7 +52,7 @@
  #@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
  @BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
  #@BUILD_PLUGIN_LPAR_TRUE@LoadPlugin lpar
-@@ -582,6 +583,12 @@
+@@ -649,6 +650,12 @@
  #     IgnoreSelected true
  #</Plugin>
  
@@ -67,7 +67,7 @@
  #     JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
 --- a/src/collectd.conf.pod
 +++ b/src/collectd.conf.pod
-@@ -2612,6 +2612,27 @@ and all other interrupts are collected.
+@@ -3127,6 +3127,27 @@ and all other interrupts are collected.
  
  =back
  
 +}
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -457,6 +457,13 @@ irq_la_SOURCES = irq.c
+@@ -568,6 +568,13 @@ irq_la_SOURCES = irq.c
  irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
  java_la_SOURCES = java.c
 --- a/src/types.db
 +++ b/src/types.db
-@@ -228,6 +228,7 @@ voltage                    value:GAUGE:U:U
- vs_memory             value:GAUGE:0:9223372036854775807
- vs_processes          value:GAUGE:0:65535
- vs_threads            value:GAUGE:0:65535
-+stations              value:GAUGE:0:256
+@@ -260,6 +260,7 @@ voltage_threshold       value:GAUGE:U:U,
+ vs_memory               value:GAUGE:0:9223372036854775807
+ vs_processes            value:GAUGE:0:65535
+ vs_threads              value:GAUGE:0:65535
++stations                value:GAUGE:0:256
  
  #
  # Legacy types
index 947dc546bab056b216f643298265e11e68c044b8..b39207e35d21620695fecd215e7e2de63e021e31 100644 (file)
@@ -1,11 +1,11 @@
 --- a/src/ping.c
 +++ b/src/ping.c
-@@ -655,7 +655,7 @@ static int ping_read (void) /* {{{ */
-           / ((double) (pkg_recv * (pkg_recv - 1))));
+@@ -635,7 +635,7 @@ static int ping_read(void) /* {{{ */
+                             ((double)(pkg_recv * (pkg_recv - 1))));
  
      /* Calculate drop rate. */
--    droprate = ((double) (pkg_sent - pkg_recv)) / ((double) pkg_sent);
-+    droprate = ((double) (pkg_sent - pkg_recv)) * 100 / ((double) pkg_sent);
+-    droprate = ((double)(pkg_sent - pkg_recv)) / ((double)pkg_sent);
++    droprate = ((double)(pkg_sent - pkg_recv)) * 100 / ((double)pkg_sent);
  
-     submit (hl->host, "ping", latency_average);
-     submit (hl->host, "ping_stddev", latency_stddev);
+     submit(hl->host, "ping", latency_average);
+     submit(hl->host, "ping_stddev", latency_stddev);
index 4f187c84c648a38f7ef46f8e02f2186759529d17..45839015cc6df01b939562cfd2ac8af8ee51aa00 100644 (file)
@@ -10,12 +10,15 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=cryptodev-linux
-PKG_VERSION:=1.8
-PKG_RELEASE:=2
+PKG_VERSION:=1.8.git-2017-02-09
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://download.gna.org/cryptodev-linux/
-PKG_MD5SUM:=02644cc4cd02301e0b503a332eb2f0b5
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_MIRROR_HASH:=627ce96e3ba66ca9c8e14f5d80193061fbe9d45cd8d4b69a1bf4dd5a2d50eed8
+PKG_SOURCE_URL:=https://github.com/cryptodev-linux/cryptodev-linux.git
+PKG_SOURCE_VERSION:=6818263667ca488f9b1c86e36ea624c4ea1c309f
 
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 
index a8c4193695a27e2a8db21983a730ab3727d3dfce..98a4ea87f479ed3887654d0386507d9c9fed026d 100644 (file)
@@ -69,7 +69,7 @@ index 0000000..8c07196
 +OFILES = $(CFILES:.c=.o)
 +
 +libdfa.a: $(OFILES)
-+      ar rc $@ $?
++      $(AR) rc $@ $?
 +
 +clean:
 +      $(RM) $(OFILES) libdfa.a
diff --git a/utils/irqbalance/Makefile b/utils/irqbalance/Makefile
new file mode 100644 (file)
index 0000000..fd2f851
--- /dev/null
@@ -0,0 +1,51 @@
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=irqbalance
+PKG_VERSION:=1.2.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/Irqbalance/irqbalance.git
+PKG_SOURCE_VERSION:=0e0dd4cfe5464de2f81eaef504eab7183f1fb030
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_LICENSE:=GPLv2
+
+PKG_MAINTAINER:=Hannu Nyman <hannu.nyman@iki.fi>
+
+PKG_FIXUP:=autoreconf
+PKG_REMOVE_FILES:=autogen.sh
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/irqbalance
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=IRQ usage balancing for multi-core systems
+  URL:=https://github.com/Irqbalance/irqbalance
+endef
+
+define Package/irqbalance/description
+ The purpose of irqbalance is to distribute hardware interrupts across
+ processors/cores on a multiprocessor/multicore system in order to
+ increase performance.
+endef
+
+CONFIGURE_ARGS+= \
+       --disable-numa \
+       --with-libcap_ng=no \
+       --with-systemd=no \
+       --without-glib2
+
+define Package/irqbalance/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/irqbalance $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,irqbalance))
diff --git a/utils/irqbalance/patches/100-disable-ui-compilation.patch b/utils/irqbalance/patches/100-disable-ui-compilation.patch
new file mode 100644 (file)
index 0000000..5793ec6
--- /dev/null
@@ -0,0 +1,47 @@
+Revert upstream commit bf9297132d219539e07506c125c6801dd77202f4
+to prevent building the UI component. Also disable manpage.
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -24,19 +24,14 @@ AUTOMAKE_OPTIONS = no-dependencies
+ ACLOCAL_AMFLAGS = -I m4
+ EXTRA_DIST = COPYING autogen.sh misc/irqbalance.service misc/irqbalance.env
+-UI_DIR = ui
+ AM_CFLAGS = $(LIBCAP_NG_CFLAGS) $(GLIB_CFLAGS)
+ AM_CPPFLAGS = -I${top_srcdir} -W -Wall -Wshadow -Wformat -Wundef -D_GNU_SOURCE
+ noinst_HEADERS = bitmap.h constants.h cpumask.h irqbalance.h non-atomic.h \
+-      types.h $(UI_DIR)/helpers.h $(UI_DIR)/irqbalance-ui.h $(UI_DIR)/ui.h
+-sbin_PROGRAMS = irqbalance irqbalance-ui
++      types.h
++sbin_PROGRAMS = irqbalance
+ irqbalance_SOURCES = activate.c bitmap.c classify.c cputree.c irqbalance.c \
+       irqlist.c numa.c placement.c procinterrupts.c
+ irqbalance_LDADD = $(LIBCAP_NG_LIBS) $(GLIB_LIBS)
+-irqbalance_ui_SOURCES = $(UI_DIR)/helpers.c $(UI_DIR)/irqbalance-ui.c \
+-      $(UI_DIR)/ui.c
+-irqbalance_ui_LDADD = $(GLIB_LIBS) $(CURSES_LIBS)
+-dist_man_MANS = irqbalance.1
+ CONFIG_CLEAN_FILES = debug*.list config/*
+ clean-generic:
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,7 +3,7 @@ AC_PREREQ(2.12)dnl
+ AM_CONFIG_HEADER(config.h)
+ AC_CONFIG_MACRO_DIR([m4])
+-AM_INIT_AUTOMAKE([foreign] [subdir-objects])
++AM_INIT_AUTOMAKE([foreign])
+ AM_PROG_LIBTOOL
+ AC_SUBST(LIBTOOL_DEPS)
+@@ -26,8 +26,6 @@ AC_CHECK_FUNCS(getopt_long)
+ AC_CHECK_LIB(numa, numa_available)
+ AC_CHECK_LIB(m, floor)
+-AC_CHECK_LIB(curses, mvprintw)
+-
+ AC_C_CONST
+ AC_C_INLINE
+ AM_PROG_CC_C_O
diff --git a/utils/irqbalance/patches/200-avoid-glib.patch b/utils/irqbalance/patches/200-avoid-glib.patch
new file mode 100644 (file)
index 0000000..3c20196
--- /dev/null
@@ -0,0 +1,421 @@
+Revert upstream commit d1993bcde2a524346a9508754671f096ec129ad1
+to avoid glib dependency. That commit polluted the main code
+with glib types.
+--- a/irqbalance.h
++++ b/irqbalance.h
+@@ -8,7 +8,6 @@
+ #include <stdint.h>
+ #include <glib.h>
+-#include <glib-unix.h>
+ #include <syslog.h>
+ #include <limits.h>
+@@ -63,7 +62,6 @@ extern GList *packages;
+ extern GList *cache_domains;
+ extern GList *cpus;
+ extern int numa_avail;
+-extern GList *cl_banned_irqs;
+ extern int debug_mode;
+ extern int journal_logging;
+@@ -171,7 +169,5 @@ extern unsigned int log_mask;
+ }while(0)
+ #endif /* HAVE_LIBSYSTEMD */
+-#define SOCKET_PATH "irqbalance"
+-
+ #endif /* __INCLUDE_GUARD_IRQBALANCE_H_ */
+--- a/irqbalance.c
++++ b/irqbalance.c
+@@ -31,8 +31,6 @@
+ #include <time.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#include <sys/socket.h>
+-#include <sys/un.h>
+ #include <fcntl.h>
+ #ifdef HAVE_GETOPT_LONG 
+ #include <getopt.h>
+@@ -44,7 +42,6 @@
+ #include "irqbalance.h"
+ volatile int keep_going = 1;
+-int socket_fd;
+ int one_shot_mode;
+ int debug_mode;
+ int foreground_mode;
+@@ -61,9 +58,6 @@ char *banscript = NULL;
+ char *polscript = NULL;
+ long HZ;
+ int sleep_interval = SLEEP_INTERVAL;
+-GMainLoop *main_loop;
+-
+-char *banned_cpumask_from_ui = NULL;
+ static void sleep_approx(int seconds)
+ {
+@@ -236,224 +230,22 @@ static void force_rebalance_irq(struct i
+       info->assigned_obj = NULL;
+ }
+-gboolean handler(gpointer data __attribute__((unused)))
++static void handler(int signum)
+ {
++      (void)signum;
+       keep_going = 0;
+-      g_main_loop_quit(main_loop);
+-      return TRUE;
+ }
+-gboolean force_rescan(gpointer data __attribute__((unused)))
++static void force_rescan(int signum)
+ {
++      (void)signum;
+       if (cycle_count)
+               need_rescan = 1;
+-      return TRUE;
+-}
+-
+-gboolean scan(gpointer data)
+-{
+-      log(TO_CONSOLE, LOG_INFO, "\n\n\n-----------------------------------------------------------------------------\n");
+-      clear_work_stats();
+-      parse_proc_interrupts();
+-      parse_proc_stat();
+-
+-
+-      /* cope with cpu hotplug -- detected during /proc/interrupts parsing */
+-      if (need_rescan) {
+-              need_rescan = 0;
+-              cycle_count = 0;
+-              log(TO_CONSOLE, LOG_INFO, "Rescanning cpu topology \n");
+-              clear_work_stats();
+-
+-              free_object_tree();
+-              build_object_tree();
+-              for_each_irq(NULL, force_rebalance_irq, NULL);
+-              parse_proc_interrupts();
+-              parse_proc_stat();
+-              sleep_approx(sleep_interval);
+-              clear_work_stats();
+-              parse_proc_interrupts();
+-              parse_proc_stat();
+-      } 
+-
+-      if (cycle_count)        
+-              update_migration_status();
+-
+-      calculate_placement();
+-      activate_mappings();
+-
+-      if (debug_mode)
+-              dump_tree();
+-      if (one_shot_mode)
+-              keep_going = 0;
+-      cycle_count++;
+-
+-      if (data != &sleep_interval) {
+-              data = &sleep_interval;
+-              g_timeout_add_seconds(sleep_interval, scan, data);
+-              return FALSE;
+-      }
+-
+-      if (keep_going)
+-              return TRUE;
+-      else
+-              return FALSE;
+-}
+-
+-void get_irq_data(struct irq_info *irq, void *data)
+-{
+-      sprintf(data + strlen(data),
+-                      "IRQ %d LOAD %lu DIFF %lu CLASS %d ", irq->irq, irq->load,
+-                      (irq->irq_count - irq->last_irq_count), irq->class);
+-}
+-
+-void get_object_stat(struct topo_obj *object, void *data)
+-{
+-      char irq_data[1024] = "\0";
+-
+-      if (g_list_length(object->interrupts) > 0) {
+-              for_each_irq(object->interrupts, get_irq_data, irq_data);
+-      }
+-      sprintf(data + strlen(data), "TYPE %d NUMBER %d LOAD %lu SAVE_MODE %d %s",
+-                      object->obj_type, object->number, object->load,
+-                      object->powersave_mode, irq_data);
+-      if (object->obj_type != OBJ_TYPE_CPU) {
+-              for_each_object(object->children, get_object_stat, data);
+-      }
+-}
+-
+-gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attribute__((unused)))
+-{
+-      char buff[500];
+-      int sock;
+-      int recv_size = 0;
+-      int valid_user = 0;
+-
+-      struct iovec iov = { buff, 500 };
+-      struct msghdr msg = { NULL, 0, &iov, 1, NULL, 0, 0 };
+-      msg.msg_control = malloc(CMSG_SPACE(sizeof(struct ucred)));
+-      msg.msg_controllen = CMSG_SPACE(sizeof(struct ucred));
+-
+-      struct cmsghdr *cmsg;
+-
+-      if (condition == G_IO_IN) {
+-              sock = accept(fd, NULL, NULL);
+-              if (sock < 0) {
+-                      log(TO_ALL, LOG_WARNING, "Connection couldn't be accepted.\n");
+-                      return TRUE;
+-              }
+-              if ((recv_size = recvmsg(sock, &msg, 0)) < 0) {
+-                      log(TO_ALL, LOG_WARNING, "Error while receiving data.\n");
+-                      return TRUE;
+-              }
+-              cmsg = CMSG_FIRSTHDR(&msg);
+-              if ((cmsg->cmsg_level == SOL_SOCKET) &&
+-                              (cmsg->cmsg_type == SCM_CREDENTIALS)) {
+-                      struct ucred *credentials = (struct ucred *) CMSG_DATA(cmsg);
+-                      if (!credentials->uid) {
+-                              valid_user = 1;
+-                      }
+-              }
+-              if (!valid_user) {
+-                      log(TO_ALL, LOG_INFO, "Permission denied for user to connect to socket.\n");
+-                      return TRUE;
+-              }
+-
+-              if (!strncmp(buff, "stats", strlen("stats"))) {
+-                      char stats[2048] = "\0";
+-                      for_each_object(numa_nodes, get_object_stat, stats);
+-                      send(sock, stats, strlen(stats), 0);
+-              }
+-              if (!strncmp(buff, "settings ", strlen("settings "))) {
+-                      if (!(strncmp(buff + strlen("settings "), "sleep ",
+-                                                      strlen("sleep ")))) {
+-                              char *sleep_string = malloc(
+-                                              sizeof(char) * (recv_size - strlen("settings sleep ")));
+-                              strncpy(sleep_string, buff + strlen("settings sleep "),
+-                                              recv_size - strlen("settings sleep "));
+-                              int new_iterval = strtoul(sleep_string, NULL, 10);
+-                              if (new_iterval >= 1) {
+-                                      sleep_interval = new_iterval;
+-                              }
+-                      } else if (!(strncmp(buff + strlen("settings "), "ban irqs ",
+-                                                      strlen("ban irqs ")))) {
+-                              char *end;
+-                              char *irq_string = malloc(
+-                                              sizeof(char) * (recv_size - strlen("settings ban irqs ")));
+-                              strncpy(irq_string, buff + strlen("settings ban irqs "),
+-                                              recv_size - strlen("settings ban irqs "));
+-                              g_list_free_full(cl_banned_irqs, free);
+-                              cl_banned_irqs = NULL;
+-                              need_rescan = 1;
+-                              if (!strncmp(irq_string, "NONE", strlen("NONE"))) {
+-                                      return TRUE;
+-                              }
+-                              int irq = strtoul(irq_string, &end, 10);
+-                              do {
+-                                      add_cl_banned_irq(irq);
+-                              } while((irq = strtoul(end, &end, 10)));
+-                      } else if (!(strncmp(buff + strlen("settings "), "cpus ",
+-                                                      strlen("cpus")))) {
+-                              char *cpu_ban_string = malloc(
+-                                              sizeof(char) * (recv_size - strlen("settings cpus ")));
+-                              strncpy(cpu_ban_string, buff + strlen("settings cpus "),
+-                                              recv_size - strlen("settings cpus "));
+-                              banned_cpumask_from_ui = strtok(cpu_ban_string, " ");
+-                              if (!strncmp(banned_cpumask_from_ui, "NULL", strlen("NULL"))) {
+-                                      banned_cpumask_from_ui = NULL;
+-                              }
+-                              need_rescan = 1;
+-                      }
+-              }
+-              if (!strncmp(buff, "setup", strlen("setup"))) {
+-                      char setup[2048] = "\0";
+-                      snprintf(setup, 2048, "SLEEP %d ", sleep_interval);
+-                      if(g_list_length(cl_banned_irqs) > 0) {
+-                              for_each_irq(cl_banned_irqs, get_irq_data, setup);
+-                      }
+-                      char banned[512];
+-                      cpumask_scnprintf(banned, 512, banned_cpus);
+-                      snprintf(setup + strlen(setup), 2048 - strlen(setup),
+-                                      "BANNED %s", banned);
+-                      send(sock, setup, strlen(setup), 0);
+-              }
+-
+-              close(sock);
+-      }
+-      return TRUE;
+-}
+-
+-int init_socket(char *socket_name)
+-{
+-      struct sockaddr_un addr;
+-      memset(&addr, 0, sizeof(struct sockaddr_un));
+-
+-      socket_fd = socket(AF_LOCAL, SOCK_STREAM, 0);
+-      if (socket_fd < 0) {
+-              log(TO_ALL, LOG_WARNING, "Socket couldn't be created.\n");
+-              return 1;
+-      }
+-
+-      addr.sun_family = AF_UNIX;
+-      addr.sun_path[0] = '\0';
+-      strncpy(addr.sun_path + 1, socket_name, strlen(socket_name));
+-      if (bind(socket_fd, (struct sockaddr *)&addr,
+-                              sizeof(sa_family_t) + strlen(socket_name) + 1) < 0) {
+-              log(TO_ALL, LOG_WARNING, "Daemon couldn't be bound to the socket.\n");
+-              return 1;
+-      }
+-      int optval = 1;
+-      if (setsockopt(socket_fd, SOL_SOCKET, SO_PASSCRED, &optval, sizeof(optval)) < 0) {
+-              log(TO_ALL, LOG_WARNING, "Unable to set socket options.\n");
+-              return 1;
+-      }
+-      listen(socket_fd, 1);
+-      g_unix_fd_add(socket_fd, G_IO_IN, sock_handle, NULL);
+-      return 0;
+ }
+ int main(int argc, char** argv)
+ {
++      struct sigaction action, hupaction;
+       sigset_t sigset, old_sigset;
+       sigemptyset(&sigset);
+@@ -553,11 +345,19 @@ int main(int argc, char** argv)
+               }
+       }
+-      g_unix_signal_add(SIGINT, handler, NULL);
+-      g_unix_signal_add(SIGTERM, handler, NULL);
+-      g_unix_signal_add(SIGUSR1, handler, NULL);
+-      g_unix_signal_add(SIGUSR2, handler, NULL);
+-      g_unix_signal_add(SIGHUP, force_rescan, NULL);
++      action.sa_handler = handler;
++      sigemptyset(&action.sa_mask);
++      action.sa_flags = 0;
++      sigaction(SIGINT, &action, NULL);
++      sigaction(SIGTERM, &action, NULL);
++      sigaction(SIGUSR1, &action, NULL);
++      sigaction(SIGUSR2, &action, NULL);
++
++      hupaction.sa_handler = force_rescan;
++      sigemptyset(&hupaction.sa_mask);
++      hupaction.sa_flags = 0;
++      sigaction(SIGHUP, &hupaction, NULL);
++
+       sigprocmask(SIG_SETMASK, &old_sigset, NULL);
+ #ifdef HAVE_LIBCAP_NG
+@@ -566,32 +366,58 @@ int main(int argc, char** argv)
+       capng_lock();
+       capng_apply(CAPNG_SELECT_BOTH);
+ #endif
++
+       for_each_irq(NULL, force_rebalance_irq, NULL);
+       parse_proc_interrupts();
+       parse_proc_stat();
+-      char socket_name[64];
+-      snprintf(socket_name, 64, "%s%d.sock", SOCKET_PATH, getpid());
++      while (keep_going) {
++              sleep_approx(sleep_interval);
++              log(TO_CONSOLE, LOG_INFO, "\n\n\n-----------------------------------------------------------------------------\n");
+-      if (init_socket(socket_name)) {
+-              return EXIT_FAILURE;
+-      }
+-      main_loop = g_main_loop_new(NULL, FALSE);
+-      int *last_interval = &sleep_interval;
+-      g_timeout_add_seconds(sleep_interval, scan, last_interval);
+-      g_main_loop_run(main_loop);
+-      g_main_loop_quit(main_loop);
++              clear_work_stats();
++              parse_proc_interrupts();
++              parse_proc_stat();
++
++              /* cope with cpu hotplug -- detected during /proc/interrupts parsing */
++              if (need_rescan) {
++                      need_rescan = 0;
++                      cycle_count = 0;
++                      log(TO_CONSOLE, LOG_INFO, "Rescanning cpu topology \n");
++                      clear_work_stats();
++
++                      free_object_tree();
++                      build_object_tree();
++                      for_each_irq(NULL, force_rebalance_irq, NULL);
++                      parse_proc_interrupts();
++                      parse_proc_stat();
++                      sleep_approx(sleep_interval);
++                      clear_work_stats();
++                      parse_proc_interrupts();
++                      parse_proc_stat();
++              } 
++
++              if (cycle_count)        
++                      update_migration_status();
++
++              calculate_placement();
++              activate_mappings();
+       
++              if (debug_mode)
++                      dump_tree();
++              if (one_shot_mode)
++                      keep_going = 0;
++              cycle_count++;
++
++      }
+       free_object_tree();
+       free_cl_opts();
+       /* Remove pidfile */
+       if (!foreground_mode && pidfile)
+               unlink(pidfile);
+-      /* Remove socket */
+-      close(socket_fd);
+       return EXIT_SUCCESS;
+ }
+--- a/cputree.c
++++ b/cputree.c
+@@ -38,7 +38,6 @@
+ #include "irqbalance.h"
+-extern char *banned_cpumask_from_ui;
+ GList *cpus;
+ GList *cache_domains;
+@@ -77,15 +76,11 @@ static void setup_banned_cpus(void)
+       cpus_clear(nohz_full);
+       /* A manually specified cpumask overrides auto-detection. */
+-      if (banned_cpumask_from_ui != NULL) {
+-              cpulist_parse(banned_cpumask_from_ui,
+-                      strlen(banned_cpumask_from_ui), banned_cpus);
+-              goto out;
+-      }
+       if (getenv("IRQBALANCE_BANNED_CPUS"))  {
+               cpumask_parse_user(getenv("IRQBALANCE_BANNED_CPUS"), strlen(getenv("IRQBALANCE_BANNED_CPUS")), banned_cpus);
+               goto out;
+       }
++
+       file = fopen("/sys/devices/system/cpu/isolated", "r");
+       if (file) {
+               if (getline(&line, &size, file) > 0) {
+@@ -117,8 +112,6 @@ out:
+       log(TO_CONSOLE, LOG_INFO, "Isolated CPUs: %s\n", buffer);
+       cpumask_scnprintf(buffer, 4096, nohz_full);
+       log(TO_CONSOLE, LOG_INFO, "Adaptive-ticks CPUs: %s\n", buffer);
+-      cpumask_scnprintf(buffer, 4096, banned_cpus);
+-      log(TO_CONSOLE, LOG_INFO, "Banned CPUs: %s\n", buffer);
+ }
+ static struct topo_obj* add_cache_domain_to_package(struct topo_obj *cache, 
index 3132104b4abe63573162a7406b3bc71218fd4315..644f2168e36180990de0b18fdf4ccf4d1853530e 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=joe
-PKG_VERSION:=4.3
+PKG_VERSION:=4.4
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=@SF/joe-editor
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=5a167f5e88e62c77bb42b0145d72c466
+PKG_MD5SUM:=59e63debe60b456a6ee5c0c27a756a47
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
 PKG_LICENCE:=GPL-2.0
diff --git a/utils/luci-app-lxc/Makefile b/utils/luci-app-lxc/Makefile
deleted file mode 100644 (file)
index 026f714..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# Copyright (C) 2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-lxc
-PKG_RELEASE:=20161030
-
-PKG_LICENSE:=Apache-2.0
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-lxc
-  SECTION:=luci
-  CATEGORY:=LuCI
-  SUBMENU:=3. Applications
-  TITLE:=LXC management Web UI
-  DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz
-  MAINTAINER:=Petar Koretic <petar.koretic@sartura.hr>
-endef
-
-define Package/luci-app-lxc/description
- This package will install LXC management Web UI.
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/luci-app-lxc/install
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller/
-       $(INSTALL_BIN) \
-               ./files/controller/lxc.lua \
-               $(1)/usr/lib/lua/luci/controller/
-
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/
-       $(INSTALL_DATA) \
-               ./files/view/lxc.htm \
-               $(1)/usr/lib/lua/luci/view/
-
-       $(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/
-       $(INSTALL_BIN) \
-               ./files/model/cbi/lxc.lua \
-               $(1)/usr/lib/lua/luci/model/cbi/
-
-       $(INSTALL_DIR) $(1)/etc/config/
-       $(INSTALL_DATA) \
-               ./files/lxc.config \
-               $(1)/etc/config/lxc
-
-       $(INSTALL_DIR) $(1)/www
-       $(CP) -R \
-               ./files/www/* \
-               $(1)/www
-endef
-
-$(eval $(call BuildPackage,luci-app-lxc))
diff --git a/utils/luci-app-lxc/files/controller/lxc.lua b/utils/luci-app-lxc/files/controller/lxc.lua
deleted file mode 100644 (file)
index ea7adba..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
---[[
-
-LuCI LXC module
-
-Copyright (C) 2014, Cisco Systems, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Petar Koretic <petar.koretic@sartura.hr>
-
-]]--
-
-module("luci.controller.lxc", package.seeall)
-
-require "ubus"
-local conn = ubus.connect()
-if not conn then
-    error("Failed to connect to ubus")
-end
-
-
-function fork_exec(command)
-       local pid = nixio.fork()
-       if pid > 0 then
-               return
-       elseif pid == 0 then
-               -- change to root dir
-               nixio.chdir("/")
-
-               -- patch stdin, out, err to /dev/null
-               local null = nixio.open("/dev/null", "w+")
-               if null then
-                       nixio.dup(null, nixio.stderr)
-                       nixio.dup(null, nixio.stdout)
-                       nixio.dup(null, nixio.stdin)
-                       if null:fileno() > 2 then
-                               null:close()
-                       end
-               end
-
-               -- replace with target command
-               nixio.exec("/bin/sh", "-c", command)
-       end
-end
-
-function index()
-       page = node("admin", "services", "lxc")
-       page.target = cbi("lxc")
-       page.title = _("LXC Containers")
-       page.order = 70
-
-       page = entry({"admin", "services", "lxc_create"}, call("lxc_create"), nil)
-       page.leaf = true
-
-       page = entry({"admin", "services", "lxc_action"}, call("lxc_action"), nil)
-       page.leaf = true
-
-       page = entry({"admin", "services", "lxc_get_downloadable"}, call("lxc_get_downloadable"), nil)
-       page.leaf = true
-
-       page = entry({"admin", "services", "lxc_configuration_get"}, call("lxc_configuration_get"), nil)
-       page.leaf = true
-
-       page = entry({"admin", "services", "lxc_configuration_set"}, call("lxc_configuration_set"), nil)
-       page.leaf = true
-
-end
-
-function lxc_get_downloadable()
-       luci.http.prepare_content("application/json")
-
-       local f = io.popen('uname -m', 'r')
-       local target = f:read('*a')
-       f:close()
-       target = target:gsub("^%s*(.-)%s*$", "%1")
-
-       local templates = {}
-
-       local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r')
-
-       for line in f:lines() do
-               local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$")
-               if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end
-       end
-
-       f:close()
-       luci.http.write_json(templates)
-end
-
-function lxc_create(lxc_name, lxc_template)
-       luci.http.prepare_content("text/plain")
-
-       local uci = require("uci").cursor()
-
-       local url = uci:get("lxc", "lxc", "url")
-
-       if not pcall(dofile, "/etc/openwrt_release") then
-               return luci.http.write("1")
-       end
-
-       local f = io.popen('uname -m', 'r')
-       local target = f:read('*a')
-       f:close()
-       target = target:gsub("^%s*(.-)%s*$", "%1")
-
-       local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1')
-       local lxc_release = lxc_template:gsub("(.*):(.*)", '%2')
-
-       local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url,  "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } )
-
-       luci.http.write(data)
-end
-
-function lxc_action(lxc_action, lxc_name)
-       luci.http.prepare_content("application/json")
-
-       local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} )
-
-       luci.http.write_json(ec and {} or data)
-end
-
-function lxc_get_config_path()
-       local f = io.open("/etc/lxc/lxc.conf", "r")
-       local content = f:read("*all")
-       f:close()
-       local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)')
-       if ret then
-               return ret .. "/"
-       else
-               return "/srv/lxc/"
-       end
-end
-
-function lxc_configuration_get(lxc_name)
-       luci.http.prepare_content("text/plain")
-
-       local f = io.open(lxc_get_config_path() .. lxc_name .. "/config", "r")
-       local content = f:read("*all")
-       f:close()
-
-       luci.http.write(content)
-end
-
-function lxc_configuration_set(lxc_name)
-       luci.http.prepare_content("text/plain")
-
-       local lxc_configuration = luci.http.formvalue("lxc_configuration")
-
-       if lxc_configuration == nil then
-               return luci.http.write("1")
-       end
-
-       local f, err = io.open(lxc_get_config_path() .. lxc_name .. "/config","w+")
-       if not f then
-               return luci.http.write("2")
-       end
-
-       f:write(lxc_configuration)
-       f:close()
-
-       luci.http.write("0")
-end
-
diff --git a/utils/luci-app-lxc/files/lxc.config b/utils/luci-app-lxc/files/lxc.config
deleted file mode 100644 (file)
index 5572c73..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# lxc uci configuration
-#
-
-config lxc 'lxc'
-       option url 'virtualwrt.org/containers/'
diff --git a/utils/luci-app-lxc/files/model/cbi/lxc.lua b/utils/luci-app-lxc/files/model/cbi/lxc.lua
deleted file mode 100644 (file)
index ac0fdff..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---[[
-
-LuCI LXC module
-
-Copyright (C) 2014, Cisco Systems, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Petar Koretic <petar.koretic@sartura.hr>
-
-]]--
-
-local fs = require "nixio.fs"
-
-m = Map("lxc", translate("LXC Containers"))
-
-if fs.access("/etc/config/lxc") then
-       m:section(SimpleSection).template = "lxc"
-
-       s = m:section(TypedSection, "lxc", translate("Options"))
-       s.anonymous = true
-       s.addremove = false
-
-       s:option(Value, "url", translate("Containers URL"))
-end
-
-return m
diff --git a/utils/luci-app-lxc/files/view/lxc.htm b/utils/luci-app-lxc/files/view/lxc.htm
deleted file mode 100644 (file)
index edfff8e..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-<%#
-
-LuCI LXC module
-
-Copyright (C) 2014, Cisco Systems, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-Author: Petar Koretic <petar.koretic@sartura.hr>
-
--%>
-
-<fieldset class="cbi-section">
-       <legend><%:Available Containers%></legend>
-       <div class="cbi-section-node">
-               <table id="t_lxc_list" class="cbi-section-table">
-                       <tr class="cbi-section-table-titles">
-                               <th class="cbi-section-table-cell"><%:Name%></th>
-                               <th class="cbi-section-table-cell"><%:Status%></th>
-                               <th class="cbi-section-table-cell"><%:Actions%></th>
-                       </tr>
-               </table>
-       </div>
-</fieldset>
-
-<fieldset class="cbi-section">
-       <span id="lxc-list-output"></span>
-</fieldset>
-
-<hr/>
-<fieldset class="cbi-section">
-       <legend><%:Create New Container%></legend>
-       <div class="cbi-section-node">
-               <table id="t_lxc_create" class="cbi-section-table">
-                       <tr class="cbi-section-table-titles">
-                               <th class="cbi-section-table-cell"><%:Name%></th>
-                               <th class="cbi-section-table-cell"><%:Template%></th>
-                               <th class="cbi-section-table-cell"><%:Actions%></th>
-                       </tr>
-                       <tr id="tr_holder">
-                               <td>
-                                       <input type="text" id="tx_name" placeholder="<%:Enter new name%>" value='' />
-                               </td>
-                               <td>
-                                       <select id="s_template" class="cbi-input-select cbi-button">
-                                       </select>
-                               </td>
-                               <td>
-                                       <input type="button" id="bt_create" value="<%:Create%>" onclick="lxc_create(tr_holder)" class="cbi-button cbi-button-add" />
-                                       <span id="lxc-add-loader" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
-                               </td>
-                       </tr>
-               </table>
-       </div>
-</fieldset>
-
-<fieldset class="cbi-section">
-       <span id="lxc-add-output"></span>
-</fieldset>
-
-<hr/>
-
-<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-
-       window.img = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" }
-       window.states = {  "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple"}
-
-       var t_lxc_list = document.getElementById('t_lxc_list');
-       var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
-       var timeout_msg = 0
-       var output_list = document.getElementById("lxc-list-output")
-       var output_add = document.getElementById("lxc-add-output")
-       var loader_add = document.getElementById("lxc-add-loader")
-
-       function lxc_create(tr)
-       {
-               var lxc_name = tr.querySelector("#tx_name").value.trim()
-               var lxc_template = tr.querySelector("#s_template").value
-               var bt_create = tr.querySelector("#bt_create")
-
-               if (t_lxc_list.querySelector("[data-id='" + lxc_name + "']") != null)
-                       return info_message(output_add, "Container with that name already exists!", 4000)
-
-               bt_create.disabled = true
-               output_add.innerHTML = ''
-
-               if (!lxc_name || !lxc_name.length)
-               {
-                       bt_create.disabled = false
-                       return info_message(output_add, "Name cannot be empty!", 4000)
-               }
-
-               loading(loader_add)
-
-               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_create/' + '%h/%h'.format(lxc_name, lxc_template) , null,
-               function(x)
-               {
-                       bt_create.disabled = false
-                       loading(loader_add, 0)
-
-                       if (!x)
-                               info_message(output_add, "Container creation failed!")
-               })
-       }
-
-       function lxc_create_template(lxc_name, lxc_state)
-       {
-               var info_row = t_lxc_list.querySelector("#empty")
-               if (info_row)
-                       t_lxc_list.deleteRow(1)
-
-               var actions = ''
-               actions += '<input type="button" onclick="action_handler(this)" data-action="start" value="<%:Start%>" class="cbi-button cbi-button-apply" />'
-               actions+= '<input type="button" onclick="action_handler(this)" data-action="stop" value="<%:Stop%>" class="cbi-button cbi-button-reset" />'
-               actions+= '<input type="button" onclick="action_handler(this)" data-action="destroy" value="<%:Delete%>" class="cbi-button cbi-button-remove" />'
-               actions+= ' <select class="cbi-input-select cbi-button" onchange="action_more_handler(this)">\
-                                               <option selected disabled>more</option>\
-                                               <option>configure</option>\
-                                               <option>freeze</option>\
-                                               <option>unfreeze</option>\
-                                               <option>reboot</option>\
-                                       </select>'
-               actions+= '<span data-loader style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>'
-
-               var row = t_lxc_list.insertRow(-1)
-               var cell = row.insertCell(-1)
-               cell.innerHTML = '%q%h%q'.format("<strong>", lxc_name, "</strong>")
-               cell.width = "30%"
-               cell.setAttribute("data-id", lxc_name)
-
-               cell = row.insertCell(-1)
-               cell.width = "20%"
-               cell.innerHTML = "<img src='"+window.img[lxc_state]+"'/>"
-
-               cell = row.insertCell(-1)
-               cell.width = "50%"
-               cell.innerHTML = actions
-       }
-
-       function action_handler(self)
-       {
-               var action = self.getAttribute("data-action");
-
-               var bt_action = self
-               var lxc_name = self.parentNode.parentNode.children[0].getAttribute('data-id')
-               var status_img = self.parentNode.parentNode.querySelector('img')
-               var loader = self.parentNode.querySelector('[data-loader]')
-
-               bt_action.disabled = true
-
-               if (action == "stop")
-               {
-                       loading(loader)
-
-                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
-                       function(x, ec)
-                       {
-                               loading(loader, 0)
-                               bt_action.disabled = false
-
-                               if (!x || ec)
-                                       return info_message(output_list,"Action failed!")
-
-                               set_status(status_img, "red")
-
-                       });
-               }
-
-               else if (action == "start")
-               {
-                       loading(loader)
-
-                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
-                       function(x, data)
-                       {
-                               loading(loader, 0)
-                               bt_action.disabled = false
-
-                               //FIXME: uncomment after fixing 'lxc-start'
-                               if (!x /*|| ec */)
-                                       return info_message(output_list,"Action failed!")
-
-                               //FIXME: uncomment after fixing 'lxc-start'
-                               //set_status(status_img, "green")
-                       });
-               }
-
-               else if (action == "destroy")
-               {
-                       if (!confirm("This will completely remove LXC container from the disk. Are you sure? (container will be stopped if running)"))
-                               return
-
-                       loading(loader)
-
-                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
-                       function(x, ec)
-                       {
-                               loading(loader, 0)
-                               bt_action.disabled = false
-
-                               if (!x || ec)
-                                       return info_message(output_list,"Action failed!")
-
-                               var row = self.parentNode.parentNode
-                               row.parentNode.removeChild(row)
-
-                       });
-               }
-       }
-
-       function lxc_configure_handler(self)
-       {
-               var td = self.parentNode
-               var textarea = td.querySelector('[data-id]')
-               var lxc_name = textarea.getAttribute('data-id')
-               var lxc_configuration = textarea.value
-
-               new XHR().post('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_set/' + lxc_name, "lxc_configuration=" + encodeURIComponent(lxc_configuration) ,
-               function(x)
-               {
-                       if (!x || x.responseText != "0")
-                               return info_message(output_list,"Action failed!")
-
-                       info_message(output_list,"LXC configuration updated")
-                       var row = td.parentNode
-                       row.parentNode.removeChild(row)
-               })
-       }
-
-       function lxc_rename_template(lxc_name)
-       {
-               var h = '\
-                       <input data-id="'+ lxc_name + '" type="text" placeholder="Enter new name" /> \
-                       <input data-id="bt_confirm" onclick="lxc_rename_handler(this)" type="button" class="cbi-button" value="Confirm" />'
-
-               return h
-       }
-
-       function lxc_configure_template(lxc_name, lxc_configuration)
-       {
-               var h = '\
-                       <textarea data-id="'+ lxc_name + '" rows="20" style="width:100%">'+ lxc_configuration +'</textarea> \
-                       <input data-id="bt_confirm" onclick="lxc_configure_handler(this)" type="button" class="cbi-button" value="Confirm" />'
-
-               return h
-       }
-
-       function action_more_handler(self)
-       {
-               var lxc_name = self.parentNode.parentNode.querySelector('[data-id]').getAttribute('data-id')
-               var loader = self.parentNode.parentNode.querySelector('[data-loader]')
-
-               var option = self.options[self.selectedIndex].text
-
-               self.value = "more"
-
-               switch (option)
-               {
-                       case "configure":
-                               var tr = document.createElement('tr')
-                               var row = self.parentNode.parentNode
-                               var next_row = row.nextSibling
-                               if (next_row && next_row.getAttribute('data-action') !== null)
-                                       row.parentNode.removeChild(next_row)
-
-                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_get/' + lxc_name, null,
-                               function(x)
-                               {
-                                       tr.innerHTML="<td colspan='" + row.cells.length + "'>" + lxc_configure_template(lxc_name, x.responseText) + "</td>"
-                                       tr.setAttribute('data-action','')
-                                       row.parentNode.insertBefore(tr, row.nextSibling)
-                               })
-
-                       break
-
-                       case "freeze":
-                               var tr = self.parentNode.parentNode
-                               var img = tr.querySelector('img')
-                               if(img.getAttribute('src') != window.img["green"])
-                                       return info_message(output_list,"Container is not running!")
-
-                               loading(loader)
-                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
-                               function(x, ec)
-                               {
-                                       loading(loader, 0)
-                                       if (!x || ec)
-                                               return info_message(output_list,"Action failed!")
-
-                                       set_status(img, "purple")
-                               })
-
-                       break
-
-                       case "unfreeze":
-                               var tr = self.parentNode.parentNode
-                               var img = tr.querySelector('img')
-
-                               if(img.getAttribute('src') != window.img["purple"])
-                                       return info_message(output_list,"Container is not frozen!")
-
-                               loading(loader)
-                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
-                               function(x, ec)
-                               {
-                                       loading(loader, 0)
-                                       if (!x || ec)
-                                               return info_message(output_list,"Action failed!")
-
-                                       set_status(img, "green")
-                               })
-
-                       break
-
-                       case "reboot":
-                               var tr = self.parentNode.parentNode
-                               var img = tr.querySelector('img')
-                               if(img.getAttribute('src') != window.img["green"])
-                                       return info_message(output_list,"Container is not running!")
-
-                               if (!confirm("Are you sure?"))
-                                       return
-
-                               loading(loader)
-                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
-                               function(x, ec)
-                               {
-                                       loading(loader, 0)
-                                       if (!x || ec)
-                                               return info_message(output_list,"Action failed!")
-
-                                       info_message(output_list,"LXC rebooted")
-                               })
-                       break
-               }
-
-       }
-
-       function set_empty(t_lxc_list)
-       {
-               if (document.getElementById('empty') !== null)
-                       return
-
-               var row_count = t_lxc_list.rows.length;
-               while(--row_count) t_lxc_list.deleteRow(row_count);
-
-               var row = t_lxc_list.insertRow(-1);
-               row.id = 'empty'
-               var cell = row.insertCell(0);
-               cell.colSpan = 4;
-               cell.innerHTML = '<em><br />There are no containers available yet.</em>';
-       }
-
-       function lxc_list_update()
-       {
-               XHR.poll(4, '<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/list', null,
-               function(x, data)
-               {
-                       if (!x) return;
-
-                       var lxc_count = Object.keys(data).length
-                       if (!data || !lxc_count)
-                               return set_empty(t_lxc_list)
-
-                       if (document.getElementById('empty') !== null)
-                               t_lxc_list.deleteRow(1);
-
-                       var lxcs = t_lxc_list.querySelectorAll('td[data-id]')
-                       var lxc_name_table = {}
-                       for (var i = 0, len = lxcs.length; i < len; i++)
-                       {
-                               var lxc_name = lxcs[i].getAttribute('data-id')
-                               if (!(lxc_name in data))
-                               {
-                                       var row = t_lxc_list.querySelector("[data-id='" + lxc_name + "']").parentNode
-                                       row.parentNode.removeChild(row)
-                                       continue
-                               }
-
-                               lxc_name_table[lxc_name] = lxcs[i].parentNode.querySelector('img')
-                       }
-
-                       for(var key in data)
-                       {
-                               var lxc_name = key
-                               var state = window.states[data[key]]
-
-                               if (!(lxc_name in lxc_name_table))
-                                       lxc_create_template(lxc_name, state)
-
-                               else if (state != get_status(lxc_name_table[lxc_name]))
-                                       set_status(lxc_name_table[lxc_name], state)
-                       }
-
-               })
-       }
-
-       function loading(elem, state)
-       {
-               state = (typeof state === 'undefined') ? 1 : state
-
-               if (state === 1)
-                       elem.innerHTML = loader_html
-               else
-                       setTimeout(function() { elem.innerHTML = ''}, 1000)
-       }
-
-       function set_status(elem, state)
-       {
-               state = (typeof state === 'undefined') ? 1 : state
-
-               setTimeout(function() { elem.setAttribute('src', window.img[state])}, 300)
-       }
-
-       function get_status(elem)
-       {
-               var src = elem.getAttribute('src')
-
-               for (var i in img)
-               {
-                       if (img[i] == src)
-                               return i
-               }
-       }
-
-       function info_message(output, msg, timeout)
-       {
-               timeout = timeout || 3000
-               output.innerHTML = msg
-               clearTimeout(timeout_msg)
-               timeout_msg = setTimeout(function(){ output.innerHTML=""}, timeout);
-       }
-
-       lxc_list_update()
-
-       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_get_downloadable', null,
-       function(x, data)
-       {
-               if (!x) return;
-
-               var lxc_count = Object.keys(data).length
-               if (!data || !lxc_count) return;
-               var select = document.getElementById("s_template");
-               for(var key in data)
-               {
-                       var option = document.createElement('option');
-                       option.value = data[key];
-                       option.text = data[key].replace(/[_:]/g, ' ');
-                       select.add(option, -1);
-               }
-       })
-
-//]]></script>
diff --git a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/green.gif b/utils/luci-app-lxc/files/www/luci-static/resources/cbi/green.gif
deleted file mode 100644 (file)
index d09febf..0000000
Binary files a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/green.gif and /dev/null differ
diff --git a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/purple.gif b/utils/luci-app-lxc/files/www/luci-static/resources/cbi/purple.gif
deleted file mode 100644 (file)
index f0d68cc..0000000
Binary files a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/purple.gif and /dev/null differ
diff --git a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/red.gif b/utils/luci-app-lxc/files/www/luci-static/resources/cbi/red.gif
deleted file mode 100644 (file)
index c1b39bb..0000000
Binary files a/utils/luci-app-lxc/files/www/luci-static/resources/cbi/red.gif and /dev/null differ
index e18e1aa19efe577466d701cdc397f61e08976cdb..45901c531eceac8c5f6ae9ca7dd89e2bfb0eff0f 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openocd
-PKG_VERSION:=v0.9.0
+PKG_VERSION:=v0.10.0
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
@@ -59,10 +59,7 @@ CONFIGURE_ARGS += \
        --disable-werror \
        MAKEINFO=true \
        --enable-dummy \
-       --enable-sysfsgpio \
-       --enable-usb_blaster_libftdi \
-        --enable-openjtag_ftdi \
-        --enable-presto_libftdi
+       --enable-sysfsgpio
 
 define Build/Compile
         +$(MAKE_VARS) \
diff --git a/utils/pcmciautils/Makefile b/utils/pcmciautils/Makefile
new file mode 100644 (file)
index 0000000..00adca6
--- /dev/null
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2008-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pcmciautils
+PKG_VERSION:=018
+PKG_RELEASE:=3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/pcmcia
+PKG_MD5SUM:=5d85669b3440baa4532363da6caaf1b4
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINATINER:=Tomasz Maciej Nowak <tomek_n@o2.pl>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pcmciautils
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=+libsysfs @PCMCIA_SUPPORT
+  TITLE:=PCMCIA Utilities
+  URL:=http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html
+endef
+
+define Build/Compile
+       $(call Build/Compile/Default, \
+               LD="$(TARGET_CC)" UDEV=false \
+               CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) \
+               -DPCMCIAUTILS_VERSION=\\\"$(PKG_VERSION)\\\"" \
+               prefix=/usr all \
+       )
+endef
+
+define Package/pcmciautils/install
+       $(INSTALL_DIR) $(1)/usr/sbin/
+       $(CP) $(PKG_BUILD_DIR)/pccardctl $(1)/usr/sbin/
+       $(CP) $(PKG_BUILD_DIR)/pcmcia-check-broken-cis $(1)/usr/sbin/
+       $(CP) $(PKG_BUILD_DIR)/pcmcia-socket-startup $(1)/usr/sbin/
+       rm -f $(1)/usr/sbin/lspcmcia
+       ln -s pccardctl $(1)/usr/sbin/lspcmcia
+       $(INSTALL_DIR) $(1)/etc/pcmcia/
+       $(CP) $(PKG_BUILD_DIR)/config/config.opts $(1)/etc/pcmcia/
+       $(CP) files/* $(1)/
+endef
+
+define Package/pcmciautils/conffiles
+/etc/pcmcia/config.opts
+endef
+
+$(eval $(call BuildPackage,pcmciautils))
diff --git a/utils/pcmciautils/files/etc/hotplug.d/pcmcia/pcmcia.agent b/utils/pcmciautils/files/etc/hotplug.d/pcmcia/pcmcia.agent
new file mode 100644 (file)
index 0000000..537c50a
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# Copyright (C) 2008 OpenWrt.org
+
+case "$ACTION" in
+       add)
+               SYSFS=/sys/bus/pcmcia/devices/
+               DEVPATH=$SOCKET_NO.$((0x$DEVICE_NO))
+
+               # check whether the CIS is completely broken
+               if [ ! -h $SYSFS$DEVPATH/driver ]; then
+                       CISFILE=$(/usr/sbin/pcmcia-check-broken-cis $SOCKET_NO)
+                       echo PCMCIA: $CISFILE;
+                       if [ ! -z $CISFILE ]; then
+                               if [ -f /lib/firmware/$CISFILE ]; then
+                                       cat /lib/firmware/$CISFILE > $SYSFS/class/pcmcia_socket/pcmcia_socket$(SOCKET_NO)/cis
+                               fi;
+                       fi;
+               fi;
+
+               # allow a match solely based on the "function ID" field
+               if [ ! -h $SYSFS$DEVPATH/driver ]; then
+                       if [ -w $SYSFS$DEVPATH/allow_func_id_match ]; then
+                               echo PCMCIA: allowing func_id based match for PCMCIA device $SOCKET_NO.$DEVICE_NO
+                               echo -n "42" > $SYSFS$DEVPATH/allow_func_id_match;
+                       fi;
+               fi;
+               ;;
+esac
diff --git a/utils/pcmciautils/files/etc/hotplug.d/pcmcia_socket/pcmcia_socket.agent b/utils/pcmciautils/files/etc/hotplug.d/pcmcia_socket/pcmcia_socket.agent
new file mode 100644 (file)
index 0000000..79b3524
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Copyright (C) 2008 OpenWrt.org
+
+case "$ACTION" in
+       add)
+               echo PCMCIA: socket number: $SOCKET_NO
+
+               sleep 1;
+               /usr/sbin/pcmcia-socket-startup $SOCKET_NO
+               DONE_FILE=/sys/class/pcmcia_socket/pcmcia_socket$SOCKET_NO/available_resources_setup_done
+               if [ -f  $DONE_FILE ]; then
+                       if [ -w $DONE_FILE ]; then
+                               echo -n "42" > $DONE_FILE
+                       fi;
+               fi;
+               ;;
+
+esac
diff --git a/utils/pcmciautils/files/etc/init.d/pcmcia b/utils/pcmciautils/files/etc/init.d/pcmcia
new file mode 100755 (executable)
index 0000000..16f2276
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2008 OpenWrt.org 
+
+START=42
+start() {
+       if [ -d /sys/bus/pcmcia/devices/ ]; then
+               # 2.6 kernels
+               cd /sys/bus/pcmcia/devices/
+               for PCMCIA_DEVICE in *; do
+                       if [ $PCMCIA_DEVICE == \* ]; then
+                               continue;
+                       fi;
+                       MODALIAS=$(cat $PCMCIA_DEVICE/modalias)
+                       echo PCMCIA: $MODALIAS $PCMCIA_DEVICE
+                       if [ -z $MODALIAS ]; then
+                               continue;
+                       fi;
+                       ACTION=add
+                       SOCKET_NO=$(echo $PCMCIA_DEVICE | cut -d. -f1)
+                       DEVICE_NO=$(echo $MODALIAS | sed 's/.*pfn\(..\).*/\1/')
+                       export MODALIAS ACTION SOCKET_NO DEVICE_NO
+                       /sbin/hotplug-call pcmcia
+               done;
+       fi;
+}
diff --git a/utils/pcmciautils/files/etc/init.d/pcmcia_socket b/utils/pcmciautils/files/etc/init.d/pcmcia_socket
new file mode 100755 (executable)
index 0000000..fdd0b8c
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2008 OpenWrt.org 
+
+START=41
+start() {
+       if [ -d /sys/class/pcmcia_socket/ ]; then
+               # 2.6 kernels
+               cd /sys/class/pcmcia_socket/
+               for PCMCIA_SOCKET in *; do
+                       if [ $PCMCIA_SOCKET == \* ]; then
+                               continue;
+                       fi;
+                       SOCKET_NO=$(echo $PCMCIA_SOCKET | cut -b14-)
+                       ACTION=add
+                       export SOCKET_NO ACTION
+                       /sbin/hotplug-call pcmcia_socket
+               done;
+       fi;
+}
diff --git a/utils/pcmciautils/patches/001-switch_unsigned.patch b/utils/pcmciautils/patches/001-switch_unsigned.patch
new file mode 100644 (file)
index 0000000..8a1559c
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/yacc_config.y
++++ b/src/yacc_config.y
+@@ -40,7 +40,7 @@
+ %union {
+     char *str;
+-    u_long num;
++    unsigned long num;
+     struct adjust_list_t *adjust;
+ }
diff --git a/utils/pcmciautils/patches/002-disable_yywrap.patch b/utils/pcmciautils/patches/002-disable_yywrap.patch
new file mode 100644 (file)
index 0000000..e30abb0
--- /dev/null
@@ -0,0 +1,27 @@
+--- pcmciautils-018/src/lex_config.l
++++ pcmciautils-018/src/lex_config.l
+@@ -1,8 +1,8 @@
+ /* Special state for handling include files */
+ %x src
+-%option noinput nounput
++%option noinput nounput noyywrap
+ %{
+ /*
+  * Startup tool for non statically mapped PCMCIA sockets
+  *
+@@ -75,14 +75,10 @@ module             /* skip */ ;
+ .             return yytext[0];
+ %%
+-#ifndef yywrap
+-int yywrap() { return 1; }
+-#endif
+-
+ /*======================================================================
+     Stuff to parse basic data types
+ ======================================================================*/
index c9cead3bc8fc730fc4e88b3c69e6f45ae4f2155b..bb560c8b19c8b0aabc4ac5412e5c73cd58c07425 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2011-2014 OpenWrt.org
 
-START=98
+START=25
 
 USE_PROCD=1
 PROG=/sbin/rngd
diff --git a/utils/tree/Makefile b/utils/tree/Makefile
new file mode 100644 (file)
index 0000000..b7ff3d4
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tree
+PKG_RELEASE:=1
+PKG_VERSION:=1.7.0
+PKG_SOURCE_URL:=ftp://mama.indstate.edu/linux/tree/
+PKG_HASH:=6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
+PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tree
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=List contents of directories in a tree-like format
+  DEPENDS:=+libc +libgcc
+endef
+
+define Package/tree/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/tree $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,tree))
index 3927cd04007e9bd5c83bd58d143d3c505ff75815..0c11506b71cd321f030e9d94ac380bd78db84ec0 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ttyd
-PKG_VERSION:=1.2.1
+PKG_VERSION:=1.3.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
index 2e9f96a8b62cdcaa852446d36316d6d5f203c193..4f78d777d6b960a26ed7f2757f3cf45dd3823236 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vim
-PKG_VERSION:=7.4
-PKG_RELEASE:=3
-VIMVER:=74
+PKG_VERSION:=8.0.069
+PKG_RELEASE:=4
+VIMVER:=80
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.vim.org/pub/vim/unix/
-PKG_MD5SUM:=607e135c559be642f210094ad023dc65
+PKG_MD5SUM:=457543a7754b0d3c1c0aa4d4c3bb4070
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(VIMVER)
@@ -41,6 +41,12 @@ define Package/vim-full
   TITLE+= (Normal)
 endef
 
+
+define Package/vim-fuller
+  $(call Package/vim/Default)
+  TITLE+= (Big)
+endef
+
 define Package/vim-runtime
   $(call Package/vim/Default)
   TITLE+= (runtime files)
@@ -78,6 +84,12 @@ define Package/vim-full/description
  (Normal build)
 endef
 
+
+define Package/vim-fuller/description
+ Vim is an almost compatible version of the UNIX editor Vi.
+ (Big build)
+endef
+
 define Package/vim-runtime/description
  Vim is an almost compatible version of the UNIX editor Vi.
  (Runtime files)
@@ -138,6 +150,20 @@ define Build/Compile/vim-full
 endef
 endif
 
+ifneq ($(CONFIG_PACKAGE_vim-fuller),)
+define Build/Compile/vim-fuller
+       $(call Build/Configure/Default, \
+               --with-features=big \
+               --enable-multibyte \
+       )
+       +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
+               DESTDIR="$(PKG_INSTALL_DIR)" all
+       $(CP) $(PKG_BUILD_DIR)/src/$(PKG_NAME) $(PKG_BUILD_DIR)/vim_big
+endef
+endif
+
+
+
 ifneq ($(CONFIG_PACKAGE_xxd),)
 define Build/Compile/xxd
        +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
@@ -155,6 +181,7 @@ endef
 define Build/Compile
 $(call Build/Compile/vim)
 $(call Build/Compile/vim-full)
+$(call Build/Compile/vim-fuller)
 $(call Build/Compile/vim-runtime)
 $(call Build/Compile/xxd)
 endef
@@ -173,6 +200,17 @@ define Package/vim-full/install
        $(INSTALL_CONF) ./files/vimrc.full $(1)/usr/share/vim/vimrc
 endef
 
+
+define Package/vim-fuller/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/vim_big $(1)/usr/bin/vim
+       $(INSTALL_DIR) $(1)/usr/share/vim
+       $(CP) -r $(PKG_INSTALL_DIR)/usr/share/vim/vim$(VIMVER) $(1)/usr/share/vim
+       $(INSTALL_CONF) ./files/vimrc.full $(1)/usr/share/vim/vimrc
+endef
+
+
+
 define Package/vim-runtime/install
        $(CP) $(PKG_INSTALL_DIR)/* $(1)
        rm -rf $(1)/usr/share/vim/vim$(VIMVER)/doc
@@ -189,6 +227,7 @@ endef
 
 $(eval $(call BuildPackage,vim))
 $(eval $(call BuildPackage,vim-full))
+$(eval $(call BuildPackage,vim-fuller))
 $(eval $(call BuildPackage,vim-runtime))
 $(eval $(call BuildPackage,vim-help))
 $(eval $(call BuildPackage,xxd))
diff --git a/utils/vim/patches/001-compile.patch b/utils/vim/patches/001-compile.patch
deleted file mode 100644 (file)
index 6740f1a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/src/auto/configure
-+++ b/src/auto/configure
-@@ -12294,37 +12294,8 @@ _ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
- $as_echo_n "checking uint32_t is 32 bits... " >&6; }
--if test "$cross_compiling" = yes; then :
--  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
--$as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
--else
--  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h.  */
--
--#ifdef HAVE_STDINT_H
--# include <stdint.h>
--#endif
--#ifdef HAVE_INTTYPES_H
--# include <inttypes.h>
--#endif
--main() {
--  uint32_t nr1 = (uint32_t)-1;
--  uint32_t nr2 = (uint32_t)0xffffffffUL;
--  if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
--  exit(0);
--}
--_ACEOF
--if ac_fn_c_try_run "$LINENO"; then :
--  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming ok" >&5
- $as_echo "ok" >&6; }
--else
--  as_fn_error "WRONG!  uint32_t not defined correctly." "$LINENO" 5
--fi
--rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
--  conftest.$ac_objext conftest.beam conftest.$ac_ext
--fi
--
--
- bcopy_test_prog='
- #include "confdefs.h"