usbip: move to github (closes #1259)
authorNuno Goncalves <nunojpg@gmail.com>
Wed, 20 May 2015 22:24:12 +0000 (23:24 +0100)
committerNuno Goncalves <nunojpg@gmail.com>
Wed, 20 May 2015 22:41:36 +0000 (23:41 +0100)
Signed-off-by: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
[nunojpg@gmail.com: Added PKG License and changed commit message]
Signed-off-by: Nuno Goncalves <nunojpg@gmail.com>
44 files changed:
lang/lua-cjson/Makefile
lang/luarocks/Makefile
lang/lzmq/Makefile
lang/php5-pecl-dio/Makefile [new file with mode: 0644]
lang/php5-pecl-dio/patches/010-additional-baudrates.patch [new file with mode: 0644]
lang/php5-pecl-libevent/Makefile [new file with mode: 0644]
lang/php5-pecl-propro/Makefile [new file with mode: 0644]
lang/php5-pecl-raphf/Makefile [new file with mode: 0644]
lang/php5/Makefile
lang/php5/files/php.ini
lang/php5/patches/102-debian_patches_use_embedded_timezonedb.patch
lang/php5/patches/200-ext-opcache-fix-detection-of-shm-mmap.patch [new file with mode: 0644]
lang/php5/patches/950-Fix-dl-cross-compiling-issue.patch
lang/php5/pecl.mk
libs/libdaq/Makefile
libs/libseccomp/Makefile
libs/qrencode/Makefile [new file with mode: 0644]
libs/qrencode/patches/001-disable-png.patch [new file with mode: 0644]
libs/zmq/Makefile
multimedia/ffmpeg/Makefile
net/clamav/Makefile [new file with mode: 0644]
net/clamav/files/bytecode.cvd [new file with mode: 0644]
net/clamav/files/clamav.config [new file with mode: 0644]
net/clamav/files/clamav.init [new file with mode: 0644]
net/clamav/files/freshclam.config [new file with mode: 0644]
net/clamav/files/freshclam.init [new file with mode: 0644]
net/clamav/patches/001-compile.patch [new file with mode: 0644]
net/e2guardian/Makefile
net/e2guardian/files/e2guardian.config
net/e2guardian/files/e2guardian.init
net/e2guardian/files/e2guardianf1.conf
net/knxd/Makefile
net/luci-app-clamav/Makefile [new file with mode: 0644]
net/luci-app-clamav/files/controller/clamav-controller.lua [new file with mode: 0644]
net/luci-app-clamav/files/model/cbi/clamav-cbi.lua [new file with mode: 0644]
net/luci-app-e2guardian/Makefile [new file with mode: 0644]
net/luci-app-e2guardian/files/e2guardian-cbi.lua [new file with mode: 0644]
net/luci-app-e2guardian/files/e2guardian-controller.lua [new file with mode: 0644]
net/snort/Makefile
net/tcpproxy/Makefile
net/tcpproxy/patches/001-ragel_generated.patch
net/usbip/Makefile
utils/lvm2/Makefile
utils/lvm2/patches/002-const-stdio.patch

index fd489f2b4318d69b3d240b2970e2875881ffa83a..fbdcf17d1f0be7afeb512705137e438f47687850 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lua-cjson
 PKG_VERSION:=2.1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
@@ -29,7 +29,7 @@ define Package/lua-cjson
   CATEGORY:=Languages
   TITLE:=Lua CJSON parser
   URL:=https://github.com/mpx/lua-cjson
-  DEPENDS:= +lua +libzmq
+  DEPENDS:= +lua
 endef
 
 define Package/lua-cjson/description
index 3aae8e9e9b62d15deac3fcfb530f2e3d3bfff383..e0a0f57114ca87ab4240aa756160fa6a82b8d307 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=luarocks
-PKG_VERSION:=2.2.0-rc1
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.2
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_PROTO:=git
index bc1587ee9eb3ca8cf52df3ac0d6cc7e4e16687fe..a62d7e0759263ddaaa8575b12a5504528dcc3719 100644 (file)
@@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lzmq
 PKG_VERSION:=0.4.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
 PKG_LICENSE:=MIT
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
-PKG_SOURCE_URL:=https://codeload.github.com/zeromq/lzmq/zip/v0.4.2?
-PKG_MD5SUM:=6789895c925e7eb9036e526181ec1a33
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/zeromq/lzmq/tar.gz/v0.4.2?
+PKG_MD5SUM:=ec9e15bd1495f4c87959fe22a368523d
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/cmake.mk
diff --git a/lang/php5-pecl-dio/Makefile b/lang/php5-pecl-dio/Makefile
new file mode 100644 (file)
index 0000000..9f7367b
--- /dev/null
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2012-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PECL_NAME:=dio
+PECL_LONGNAME:=Direct I/O functions
+
+PKG_VERSION:=0.0.7
+PKG_RELEASE:=1
+PKG_MD5SUM:=a1a4df428a17dbe1ab4277b492dfa052
+
+PKG_NAME:=php5-pecl-$(PECL_NAME)
+PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://pecl.php.net/get/
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PECL_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+
+PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
+
+PKG_LICENSE:=PHPv3.01
+PKG_LICENSE_FILES:=
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+include ../php5/pecl.mk
+
+$(eval $(call PECLPackage,$(PECL_NAME),$(PECL_LONGNAME)))
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/lang/php5-pecl-dio/patches/010-additional-baudrates.patch b/lang/php5-pecl-dio/patches/010-additional-baudrates.patch
new file mode 100644 (file)
index 0000000..5032e6e
--- /dev/null
@@ -0,0 +1,29 @@
+--- a/dio.c
++++ b/dio.c
+@@ -442,6 +442,26 @@ PHP_FUNCTION(dio_tcsetattr)
+       /* assign to correct values... */
+       switch (Baud_Rate)  {
++#ifdef B460800
++              case 460800:
++                      BAUD = B460800;
++                      break;
++#endif
++#ifdef B230400
++              case 230400:
++                      BAUD = B230400;
++                      break;
++#endif
++#ifdef B115200
++              case 115200:
++                      BAUD = B115200;
++                      break;
++#endif
++#ifdef B57600
++              case 57600:
++                      BAUD = B57600;
++                      break;
++#endif
+               case 38400:
+                       BAUD = B38400;
+                       break;
diff --git a/lang/php5-pecl-libevent/Makefile b/lang/php5-pecl-libevent/Makefile
new file mode 100644 (file)
index 0000000..6beee26
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Copyright (C) 2012-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PECL_NAME:=libevent
+PECL_LONGNAME:=Libevent - event notification
+
+PKG_VERSION:=0.1.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=e091371a9e714098a4c04a6e3daeb56a
+
+PKG_NAME:=php5-pecl-$(PECL_NAME)
+PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://pecl.php.net/get/
+
+PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
+
+PKG_LICENSE:=PHPv3.01
+PKG_LICENSE_FILES:=
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PECL_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+include ../php5/pecl.mk
+
+CONFIGURE_ARGS+= --with-libevent=shared,"$(STAGING_DIR)/usr"
+
+$(eval $(call PECLPackage,$(PECL_NAME),$(PECL_LONGNAME),+libevent2))
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/lang/php5-pecl-propro/Makefile b/lang/php5-pecl-propro/Makefile
new file mode 100644 (file)
index 0000000..14f39fd
--- /dev/null
@@ -0,0 +1,39 @@
+#
+# 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
+
+PECL_NAME:=propro
+PECL_LONGNAME:=Property proxy
+
+PKG_VERSION:=1.0.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=9c775035fd17c65f0162b7eb1b4f8564
+
+PKG_NAME:=php5-pecl-propro
+PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://pecl.php.net/get/
+
+PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PECL_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+include ../php5/pecl.mk
+
+CONFIGURE_ARGS+= \
+       --enable-propro
+
+$(eval $(call PECLPackage,$(PECL_NAME),$(PECL_LONGNAME)))
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/lang/php5-pecl-raphf/Makefile b/lang/php5-pecl-raphf/Makefile
new file mode 100644 (file)
index 0000000..fdd2387
--- /dev/null
@@ -0,0 +1,39 @@
+#
+# 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
+
+PECL_NAME:=raphf
+PECL_LONGNAME:=Resource and persistent handles factory
+
+PKG_VERSION:=1.0.4
+PKG_RELEASE:=1
+PKG_MD5SUM:=e5e7e5c3954a5fd31c034c347f22c4a5
+
+PKG_NAME:=php5-pecl-raphf
+PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://pecl.php.net/get/
+
+PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PECL_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+include ../php5/pecl.mk
+
+CONFIGURE_ARGS+= \
+       --enable-raphf
+
+$(eval $(call PECLPackage,$(PECL_NAME),$(PECL_LONGNAME)))
+$(eval $(call BuildPackage,$(PKG_NAME)))
index dac3c738e5f7503a6df9cd903cacef700ba2dabf..e5a1aa24d5353aadbac64be155a464da59064212 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=php
-PKG_VERSION:=5.6.8
+PKG_VERSION:=5.6.9
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
@@ -18,7 +18,7 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_MD5SUM:=a5a6df33aade0cb5425e4374e3832f0b
+PKG_MD5SUM:=561f37377833772ace776143c5687884
 
 PKG_FIXUP:=libtool autoreconf
 PKG_BUILD_PARALLEL:=1
@@ -36,7 +36,7 @@ PHP5_MODULES = \
        json \
        ldap \
        mbstring mcrypt mysql mysqli \
-       openssl \
+       opcache openssl \
        pcntl pdo pdo-mysql pdo-pgsql pdo-sqlite pgsql \
        session shmop simplexml soap sockets sqlite3 sysvmsg sysvsem sysvshm \
        tokenizer \
@@ -276,6 +276,12 @@ else
   CONFIGURE_ARGS+= --without-mysqli
 endif
 
+ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-opcache),)
+  CONFIGURE_ARGS+= --enable-opcache=shared
+else
+  CONFIGURE_ARGS+= --disable-opcache
+endif
+
 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-openssl),)
   CONFIGURE_ARGS+= \
        --with-openssl=shared,"$(STAGING_DIR)/usr" \
@@ -508,7 +514,11 @@ define BuildModule
        $(INSTALL_DIR) $$(1)/usr/lib/php
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/modules/$(subst -,_,$(1)).so $$(1)/usr/lib/php/
        $(INSTALL_DIR) $$(1)/etc/php5
+      ifeq ($(4),zend)
+       echo "zend_extension=/usr/lib/php/$(subst -,_,$(1)).so" > $$(1)/etc/php5/$(subst -,_,$(1)).ini
+      else
        echo "extension=$(subst -,_,$(1)).so" > $$(1)/etc/php5/$(subst -,_,$(1)).ini
+    endif
   endef
 
   $$(eval $$(call BuildPackage,php5-mod-$(1)))
@@ -540,6 +550,7 @@ $(eval $(call BuildModule,mbstring,MBString))
 $(eval $(call BuildModule,mcrypt,Mcrypt,+PACKAGE_php5-mod-mcrypt:libmcrypt +PACKAGE_php5-mod-mcrypt:libltdl))
 $(eval $(call BuildModule,mysql,MySQL,+PACKAGE_php5-mod-mysql:libmysqlclient))
 $(eval $(call BuildModule,mysqli,MySQL Improved Extension,+PACKAGE_php5-mod-mysqli:libmysqlclient))
+$(eval $(call BuildModule,opcache,OPcache,,zend))
 $(eval $(call BuildModule,openssl,OpenSSL,+PACKAGE_php5-mod-openssl:libopenssl))
 $(eval $(call BuildModule,pcntl,PCNTL))
 $(eval $(call BuildModule,pdo,PHP Data Objects))
index 6fe2a310899e50f31012cb4a346c2334a56c49e6..23a8bb988f9375a800676098ef9a4ab0c1c9bf76 100644 (file)
@@ -309,3 +309,13 @@ ldap.max_links = -1
 [mcrypt]
 ;mcrypt.algorithms_dir=
 ;mcrypt.modes_dir=
+
+[opcache]
+;opcache.memory_consumption=8          ; 8M is the allowed minimum
+;opcache.interned_strings_buffer=1
+opcache.max_accelerated_files=200      ; 200 is the allowed minimum
+;opcache.revalidate_freq=60
+;opcache.fast_shutdown=1
+opcache.enable_cli=1
+opcache.enable=1
+;opcache.log_verbosity_level=4
index 438274aa153b8d6644fdf597a0efc0df1f509b93..4b5ff5b6244798466e7f80ae04e0c927246d14d2 100644 (file)
@@ -1,12 +1,13 @@
-
 Add support for use of the system timezone database, rather
 than embedding a copy.  Discussed upstream but was not desired.
 
 History:
-r9: fix another compile error without --with-system-tzdata configured
+r11: adopted to php 5.6.9
+r10: make timezone case insensitive
+r9: fix another compile error without --with-system-tzdata configured (Michael Heimpold)
 r8: fix compile error without --with-system-tzdata configured
 r7: improve check for valid timezone id to exclude directories
-r6: fix fd leak in r5, fix country code/BC flag use in 
+r6: fix fd leak in r5, fix country code/BC flag use in.
     timezone_identifiers_list() using system db,
     fix use of PECL timezonedb to override system db,
 r5: reverts addition of "System/Localtime" fake tzname.
@@ -17,10 +18,17 @@ r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
 r2: add filesystem trawl to set up name alias index
 r1: initial revision
 
---- a/ext/date/lib/parse_tz.c
-+++ b/ext/date/lib/parse_tz.c
-@@ -20,6 +20,16 @@
+diff -Naur php-5.6.9.orig/ext/date/lib/parse_tz.c php-5.6.9/ext/date/lib/parse_tz.c
+--- php-5.6.9.orig/ext/date/lib/parse_tz.c     2015-05-14 01:13:33.000000000 +0200
++++ php-5.6.9/ext/date/lib/parse_tz.c  2015-05-18 22:40:55.000000000 +0200
+@@ -18,8 +18,22 @@
+ /* $Id$ */
  
++#ifndef PATH_MAX
++#define PATH_MAX 4096
++#endif
++
  #include "timelib.h"
  
 +#ifdef HAVE_SYSTEM_TZDATA
@@ -36,7 +44,7 @@ r1: initial revision
  #include <stdio.h>
  
  #ifdef HAVE_LOCALE_H
-@@ -31,7 +41,12 @@
+@@ -31,7 +45,12 @@
  #else
  #include <strings.h>
  #endif
@@ -49,25 +57,19 @@ r1: initial revision
  
  #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
  # if defined(__LITTLE_ENDIAN__)
-@@ -51,9 +66,14 @@
- static void read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
+@@ -53,6 +72,11 @@
  {
--      /* skip ID */
--      *tzf += 4;
--      
-+        if (memcmp(tzf, "TZif", 4) == 0) {
-+                *tzf += 20;
-+                return;
-+        }
-+        
-+        /* skip ID */
-+        *tzf += 4;
-+                
-       /* read BC flag */
-       tz->bc = (**tzf == '\1');
-       *tzf += 1;
-@@ -256,7 +276,397 @@ void timelib_dump_tzinfo(timelib_tzinfo
+       uint32_t version;
++      if (memcmp(tzf, "TZif", 4) == 0) {
++              *tzf += 20;
++              return -1;
++      }
++
+       /* read ID */
+       version = (*tzf)[3] - '0';
+       *tzf += 4;
+@@ -296,7 +320,406 @@
        }
  }
  
@@ -81,7 +83,7 @@ r1: initial revision
 +#endif
 +
 +/* System timezone database pointer. */
-+static const timelib_tzdb *timezonedb_system = NULL;
++static const timelib_tzdb *timezonedb_system;
 +
 +/* Hash table entry for the cache of the zone.tab mapping table. */
 +struct location_info {
@@ -99,13 +101,14 @@ r1: initial revision
 + * prevent too many collisions. */
 +#define LOCINFO_HASH_SIZE (1021)
 +
++/* Compute a case insensitive hash of str */
 +static uint32_t tz_hash(const char *str)
 +{
 +    const unsigned char *p = (const unsigned char *)str;
 +    uint32_t hash = 5381;
 +    int c;
 +    
-+    while ((c = *p++) != '\0') {
++    while ((c = tolower(*p++)) != '\0') {
 +        hash = (hash << 5) ^ hash ^ c;
 +    }
 +    
@@ -201,10 +204,10 @@ r1: initial revision
 +
 +        if (*p == '#' || *p == '\0' || *p == '\n')
 +            continue;
-+        
++
 +        if (!isalpha(p[0]) || !isalpha(p[1]) || p[2] != '\t')
 +            continue;
-+        
++
 +        /* code => AA */
 +        code = p;
 +        p[2] = 0;
@@ -238,7 +241,7 @@ r1: initial revision
 +
 +        if (*p == '\n' || *p == '\t')
 +            *p = '\0';
-+        
++
 +        hash = tz_hash(name);
 +        i = malloc(sizeof *i);
 +        memcpy(i->code, code, 2);
@@ -274,7 +277,7 @@ r1: initial revision
 +    }
 +
 +    return NULL;
-+}    
++}
 +
 +/* Filter out some non-tzdata files and the posix/right databases, if
 + * present. */
@@ -443,6 +446,14 @@ r1: initial revision
 +              return NULL;
 +      }
 +
++      if (system_location_table) {
++              const struct location_info *li;
++              if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
++                      /* Use the stored name to avoid case issue */
++                      timezone = li->name;
++              }
++      }
++
 +      snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
 +      
 +      fd = open(fname, O_RDONLY);
@@ -466,11 +477,11 @@ r1: initial revision
  {
        int left = 0, right = tzdb->index_size - 1;
  #ifdef HAVE_SETLOCALE
-@@ -295,36 +705,128 @@ static int seek_to_tz_position(const uns
+@@ -335,21 +758,90 @@
        return 0;
  }
  
-+static int seek_to_tz_position(const unsigned char **tzf, char *timezone, 
++static int seek_to_tz_position(const unsigned char **tzf, char *timezone,
 +                             char **map, size_t *maplen,
 +                             const timelib_tzdb *tzdb)
 +{
@@ -483,14 +494,14 @@ r1: initial revision
 +                      return 0;
 +              }
 +              
-+              (*tzf) = (unsigned char *)orig ;
++              (*tzf) = (unsigned char *)orig;
 +              *map = orig;
-+                
-+                return 1;
++
++              return 1;
 +      }
-+      else
++       else
 +#endif
-+      {
++       {
 +              return inmem_seek_to_tz_position(tzf, timezone, tzdb);
 +      }
 +}
@@ -505,7 +516,7 @@ r1: initial revision
 +              tmp->data = NULL;
 +              create_zone_index(tmp);
 +              system_location_table = create_location_table();
-+                fake_data_segment(tmp, system_location_table);
++              fake_data_segment(tmp, system_location_table);
 +              timezonedb_system = tmp;
 +      }
 +
@@ -533,38 +544,49 @@ r1: initial revision
 -      return (seek_to_tz_position(&tzf, timezone, tzdb));
 +
 +#ifdef HAVE_SYSTEM_TZDATA
-+        if (tzdb == timezonedb_system) {
-+            char fname[PATH_MAX];
-+            struct stat st;
-+
-+            if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
-+              return 0;
-+            }
-+            
-+            snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
-+            
-+            return stat(fname, &st) == 0 && is_valid_tzfile(&st);
-+        }
++      if (tzdb == timezonedb_system) {
++              char fname[PATH_MAX];
++              struct stat st;
++
++              if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
++                      return 0;
++              }
++
++              if (system_location_table) {
++                      if (find_zone_info(system_location_table, timezone) != NULL) {
++                              /* found in cache */
++                              return 1;
++                      }
++              }
++
++              snprintf(fname, sizeof fname, ZONEINFO_PREFIX "/%s", timezone);
++
++              return stat(fname, &st) == 0 && is_valid_tzfile(&st);
++      }
 +#endif
 +
 +      return (inmem_seek_to_tz_position(&tzf, timezone, tzdb));
  }
  
+ static void skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
+@@ -374,10 +866,12 @@
  timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb)
  {
        const unsigned char *tzf;
 +      char *memmap = NULL;
 +      size_t maplen;
        timelib_tzinfo *tmp;
+       int version;
  
 -      if (seek_to_tz_position(&tzf, timezone, tzdb)) {
 +      if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
                tmp = timelib_tzinfo_ctor(timezone);
  
-               read_preamble(&tzf, tmp);
-               read_header(&tzf, tmp);
-               read_transistions(&tzf, tmp);
-               read_types(&tzf, tmp);
+               version = read_preamble(&tzf, tmp);
+@@ -391,7 +885,34 @@
+                       skip_64bit_types(&tzf, tmp);
+                       skip_posix_string(&tzf, tmp);
+               }
 -              read_location(&tzf, tmp);
 +
 +#ifdef HAVE_SYSTEM_TZDATA
@@ -576,12 +598,11 @@ r1: initial revision
 +
 +                      if ((li = find_zone_info(system_location_table, timezone)) != NULL) {
 +                              tmp->location.comments = strdup(li->comment);
-+                                strncpy(tmp->location.country_code, li->code, 2);
++                              strncpy(tmp->location.country_code, li->code, 2);
 +                              tmp->location.longitude = li->longitude;
 +                              tmp->location.latitude = li->latitude;
 +                              tmp->bc = 1;
-+                      }
-+                      else {
++                      } else {
 +                              strcpy(tmp->location.country_code, "??");
 +                              tmp->bc = 0;
 +                              tmp->location.comments = strdup("");
@@ -598,9 +619,10 @@ r1: initial revision
        } else {
                tmp = NULL;
        }
---- a/ext/date/lib/timelib.m4
-+++ b/ext/date/lib/timelib.m4
-@@ -78,3 +78,17 @@ stdlib.h
+diff -Naur php-5.6.9.orig/ext/date/lib/timelib.m4 php-5.6.9/ext/date/lib/timelib.m4
+--- php-5.6.9.orig/ext/date/lib/timelib.m4     2015-05-14 01:13:33.000000000 +0200
++++ php-5.6.9/ext/date/lib/timelib.m4  2015-05-18 22:31:36.000000000 +0200
+@@ -78,3 +78,17 @@
  
  dnl Check for strtoll, atoll
  AC_CHECK_FUNCS(strtoll atoll strftime)
diff --git a/lang/php5/patches/200-ext-opcache-fix-detection-of-shm-mmap.patch b/lang/php5/patches/200-ext-opcache-fix-detection-of-shm-mmap.patch
new file mode 100644 (file)
index 0000000..d2a1e91
--- /dev/null
@@ -0,0 +1,159 @@
+From dc8bb6a53bfdfe42d9ae81d4e78c6155ad4bfd6e Mon Sep 17 00:00:00 2001
+From: Michael Heimpold <mhei@heimpold.de>
+Date: Sun, 17 May 2015 16:50:50 +0200
+Subject: [PATCH] ext/opcache: fix detection of shm/mmap
+
+The detection of sysvipc and mmap doesn't work well when cross-compiling,
+so I decided to only check for the availability of the functions involved.
+This is not a clean solution, but works for now(tm) :-)
+
+It should be discussed with upstream to find a better solution.
+
+This solves the issue reported at
+https://github.com/openwrt/packages/issues/1010
+and makes opcache usable on OpenWrt.
+
+Signed-off-by: Michael Heimpold <mhei@heimpold.de>
+---
+ ext/opcache/config.m4 |  122 ++-----------------------------------------------
+ 1 file changed, 4 insertions(+), 118 deletions(-)
+
+diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
+index b7e4835..7b6c0aa 100644
+--- a/ext/opcache/config.m4
++++ b/ext/opcache/config.m4
+@@ -11,127 +11,13 @@ if test "$PHP_OPCACHE" != "no"; then
+     AC_DEFINE(HAVE_MPROTECT, 1, [Define if you have mprotect() function])
+   ])
+-  AC_MSG_CHECKING(for sysvipc shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/ipc.h>
+-#include <sys/shm.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  int ipc_id;
+-  char *shm;
+-  struct shmid_ds shmbuf;
+-
+-  ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
+-  if (ipc_id == -1) {
+-    return 1;
+-  }
+-
+-  shm = shmat(ipc_id, NULL, 0);
+-  if (shm == (void *)-1) {
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 2;
+-  }
+-
+-  if (shmctl(ipc_id, IPC_STAT, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 3;
+-  }
+-
+-  shmbuf.shm_perm.uid = getuid();
+-  shmbuf.shm_perm.gid = getgid();
+-  shmbuf.shm_perm.mode = 0600;
+-
+-  if (shmctl(ipc_id, IPC_SET, &shmbuf) != 0) {
+-    shmdt(shm);
+-    shmctl(ipc_id, IPC_RMID, NULL);
+-    return 4;
+-  }
+-
+-  shmctl(ipc_id, IPC_RMID, NULL);
+-
+-  strcpy(shm, "hello");
+-
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
++  AC_CHECK_FUNC(shmget,[
+     AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
+-
+-  AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
+-  AC_TRY_RUN([
+-#include <sys/types.h>
+-#include <sys/wait.h>
+-#include <sys/mman.h>
+-#include <unistd.h>
+-#include <string.h>
+-
+-#ifndef MAP_ANON
+-# ifdef MAP_ANONYMOUS
+-#  define MAP_ANON MAP_ANONYMOUS
+-# endif
+-#endif
+-#ifndef MAP_FAILED
+-# define MAP_FAILED ((void*)-1)
+-#endif
+-
+-int main() {
+-  pid_t pid;
+-  int status;
+-  char *shm;
+-
+-  shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
+-  if (shm == MAP_FAILED) {
+-    return 1;
+-  }
+-
+-  strcpy(shm, "hello");
++  ])
+-  pid = fork();
+-  if (pid < 0) {
+-    return 5;
+-  } else if (pid == 0) {
+-    strcpy(shm, "bye");
+-    return 6;
+-  }
+-  if (wait(&status) != pid) {
+-    return 7;
+-  }
+-  if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
+-    return 8;
+-  }
+-  if (strcmp(shm, "bye") != 0) {
+-    return 9;
+-  }
+-  return 0;
+-}
+-],dnl
++  AC_CHECK_FUNC(mmap,[
+     AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+-    msg=yes,msg=no,msg=no)
+-  AC_MSG_RESULT([$msg])
++  ])
+   AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
+   AC_TRY_RUN([
+-- 
+1.7.10.4
+
index 02b1f644c11d287cffa2f57dd78b433ae12862aa..22122ec824506bc41277c426774c6af6157016c4 100644 (file)
@@ -1,7 +1,6 @@
-diff -u --recursive php-5.6.6-vanilla/configure.in php-5.6.6/configure.in
---- php-5.6.6-vanilla/configure.in     2015-02-26 22:10:51.865487530 -0500
-+++ php-5.6.6/configure.in     2015-02-26 22:29:59.043102135 -0500
-@@ -453,7 +453,10 @@
+--- a/configure.in
++++ b/configure.in
+@@ -453,7 +453,10 @@ PHP_CHECK_FUNC(gethostname, nsl)
  PHP_CHECK_FUNC(gethostbyaddr, nsl)
  PHP_CHECK_FUNC(yp_get_default_domain, nsl)
  
@@ -13,10 +12,9 @@ diff -u --recursive php-5.6.6-vanilla/configure.in php-5.6.6/configure.in
  if test "$ac_cv_func_dlopen" = "yes"; then
    AC_DEFINE(HAVE_LIBDL, 1, [ ])
  fi
-diff -u --recursive php-5.6.6-vanilla/ext/fileinfo/config.m4 php-5.6.6/ext/fileinfo/config.m4
---- php-5.6.6-vanilla/ext/fileinfo/config.m4   2015-02-26 22:10:51.639487135 -0500
-+++ php-5.6.6/ext/fileinfo/config.m4   2015-02-26 22:22:47.645609128 -0500
-@@ -46,6 +46,10 @@
+--- a/ext/fileinfo/config.m4
++++ b/ext/fileinfo/config.m4
+@@ -46,6 +46,10 @@ int main(void)
      AC_MSG_RESULT(no)
      AC_MSG_NOTICE(using libmagic strcasestr implementation)
      libmagic_sources="$libmagic_sources libmagic/strcasestr.c"
@@ -27,10 +25,9 @@ diff -u --recursive php-5.6.6-vanilla/ext/fileinfo/config.m4 php-5.6.6/ext/filei
    ])
  
    PHP_NEW_EXTENSION(fileinfo, fileinfo.c $libmagic_sources, $ext_shared,,-I@ext_srcdir@/libmagic)
-diff -u --recursive php-5.6.6-vanilla/ext/opcache/config.m4 php-5.6.6/ext/opcache/config.m4
---- php-5.6.6-vanilla/ext/opcache/config.m4    2015-02-26 22:10:51.790487399 -0500
-+++ php-5.6.6/ext/opcache/config.m4    2015-02-26 22:34:19.240414394 -0500
-@@ -341,7 +341,14 @@
+--- a/ext/opcache/config.m4
++++ b/ext/opcache/config.m4
+@@ -227,7 +227,14 @@ AC_TRY_RUN([
        flock_type=linux
      AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
      AC_MSG_RESULT("yes")
@@ -46,7 +43,7 @@ diff -u --recursive php-5.6.6-vanilla/ext/opcache/config.m4 php-5.6.6/ext/opcach
  
  AC_MSG_CHECKING("whether flock struct is BSD ordered")
  AC_TRY_RUN([
-@@ -357,7 +364,12 @@
+@@ -243,7 +250,12 @@ AC_TRY_RUN([
        flock_type=bsd
      AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type]) 
      AC_MSG_RESULT("yes")
index e1b98196377f3d59234b213203b6d864442da776..ee2a5ce771a20d74ff857c2ca1f1b2eff111b4d9 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2011-2014 OpenWrt.org
+# Copyright (C) 2011-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -10,13 +10,12 @@ define Package/php5-pecl/Default
   SECTION:=lang
   CATEGORY:=Languages
   URL:=http://pecl.php.net/
-  MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
   DEPENDS:=php5
 endef
 
-define Build/Configure
+define Build/Prepare
+       $(Build/Prepare/Default)
        ( cd $(PKG_BUILD_DIR); $(STAGING_DIR_HOST)/usr/bin/phpize )
-       $(Build/Configure/Default)
 endef
 
 CONFIGURE_ARGS+= \
index fb3585bd78d85941f1dc72776ee5bf5cb416a832..9c634df7bad2d8a2ff1cdbc15736d39addecb780 100644 (file)
@@ -11,7 +11,8 @@ PKG_NAME:=libdaq
 PKG_VERSION:=2.0.4
 PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/
+PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/ \
+       @SF/snort
 PKG_SOURCE:=daq-$(PKG_VERSION).tar.gz
 PKG_MD5SUM:=65e51d72e9d5d8b397e192e4e5857eff
 PKG_BUILD_DIR:=$(BUILD_DIR)/daq-$(PKG_VERSION)
index 8c40fdcb74d20280103673d1848346246ae96503..1ad5d2bff93cbb833a072fd2ba584cb8dd06184d 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2005-2010 OpenWrt.org
+# Copyright (C) 2014-2015 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:=libseccomp
-PKG_VERSION:=2.2.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.1
+PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/seccomp/libseccomp/releases/download/v$(PKG_VERSION)/
-PKG_MD5SUM:=e9509301a1fc024cd10127ac1f31792a
+PKG_MD5SUM:=068af8e1bc36fcd4b326ee83875ab4fd
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
 
 PKG_INSTALL:=1
diff --git a/libs/qrencode/Makefile b/libs/qrencode/Makefile
new file mode 100644 (file)
index 0000000..db2d697
--- /dev/null
@@ -0,0 +1,90 @@
+#
+# Copyright (C) 2006-2012 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:=qrencode
+PKG_VERSION:=3.4.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://fukuchi.org/works/qrencode/
+PKG_MD5SUM:=be545f3ce36ea8fbb58612d72c4222de
+PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
+PKG_LICENSE:=LGPL-2.1+
+PKG_INSTALL:=1
+PKG:FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libqrencode
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=Library for encoding data in a QR Code symbol
+  URL:=http://fukuchi.org/works/qrencode/
+endef
+
+define Package/libqrencode/description
+Libqrencode is a C library for encoding data in a QR Code symbol,
+a kind of 2D symbology that can be scanned by handy terminals such
+as a mobile phone with CCD. The capacity of QR Code is up to 7000
+digits or 4000 characters, and is highly robust.
+endef
+
+define Package/qrencode
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=qrencode binary for producing qr codes
+  URL:=http://fukuchi.org/works/qrencode/
+  DEPENDS:=+libqrencode
+endef
+
+define Package/qrencode/description
+Qrencode is a C program for encoding data in a QR Code symbol,
+a kind of 2D symbology that can be scanned by handy terminals such
+as a mobile phone with CCD. The capacity of QR Code is up to 7000
+digits or 4000 characters, and is highly robust.
+endef
+
+
+CONFIGURE_ARGS+= \
+       --enable-shared \
+       --enable-static \
+       --disable-rpath \
+       --disable-sdltest \
+       --without-tests 
+
+TARGET_LDFLAGS+= -s
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               $(TARGET_CONFIGURE_OPTS) \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               LDFLAGS="$(TARGET_LDFLAGS)" \
+               DESTDIR="$(PKG_INSTALL_DIR)" \
+               all install
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/qrencode.h $(1)/usr/include/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libqrencode.{a,so*} $(1)/usr/lib/
+       $(CP) $(PKG_BUILD_DIR)/libqrencode.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libqrencode/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libqrencode.so* $(1)/usr/lib/
+endef
+
+define Package/qrencode/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/qrencode $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,libqrencode))
+$(eval $(call BuildPackage,qrencode))
diff --git a/libs/qrencode/patches/001-disable-png.patch b/libs/qrencode/patches/001-disable-png.patch
new file mode 100644 (file)
index 0000000..2549ee6
--- /dev/null
@@ -0,0 +1,293 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -58,9 +58,6 @@
+  [build_tools=$withval], [build_tools=yes])
+ AM_CONDITIONAL(BUILD_TOOLS, [test "x$build_tools" = "xyes" ])
+-if test x$build_tools = xyes ; then
+-      PKG_CHECK_MODULES(png, "libpng")
+-fi
+ dnl --with-tests
+ AC_ARG_WITH([tests], [AS_HELP_STRING([--with-tests], [build tests [default=no]])],
+--- a/qrenc.c
++++ b/qrenc.c
+@@ -25,7 +25,6 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <png.h>
+ #include <getopt.h>
+ #include "qrencode.h"
+@@ -49,7 +48,6 @@
+ static int verbose = 0;
+ enum imageType {
+-      PNG_TYPE,
+       EPS_TYPE,
+       SVG_TYPE,
+       ANSI_TYPE,
+@@ -60,7 +58,7 @@
+       ANSIUTF8_TYPE
+ };
+-static enum imageType image_type = PNG_TYPE;
++static enum imageType image_type = SVG_TYPE;
+ static const struct option options[] = {
+       {"help"         , no_argument      , NULL, 'h'},
+@@ -96,13 +94,13 @@
+               if(longopt) {
+                       fprintf(stderr,
+ "Usage: qrencode [OPTION]... [STRING]\n"
+-"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
++"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
+ "  -h, --help   display the help message. -h displays only the help of short\n"
+ "               options.\n\n"
+ "  -o FILENAME, --output=FILENAME\n"
+ "               write image to FILENAME. If '-' is specified, the result\n"
+ "               will be output to standard output. If -S is given, structured\n"
+-"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
++"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
+ "               (suffix is removed from FILENAME, if specified)\n"
+ "  -s NUMBER, --size=NUMBER\n"
+ "               specify module size in dots (pixels). (default=3)\n\n"
+@@ -116,9 +114,9 @@
+ "               specify the width of the margins. (default=4 (2 for Micro QR)))\n\n"
+ "  -d NUMBER, --dpi=NUMBER\n"
+ "               specify the DPI of the generated PNG. (default=72)\n\n"
+-"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={PNG,EPS,\n"
++"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={EPS,\n"
+ "               SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
+-"               specify the type of the generated image. (default=PNG)\n\n"
++"               specify the type of the generated image. (default=SVG)\n\n"
+ "  -S, --structured\n"
+ "               make structured symbols. Version must be specified.\n\n"
+ "  -k, --kanji  assume that the input text contains kanji (shift-jis).\n\n"
+@@ -133,7 +131,7 @@
+ "      --background=RRGGBB[AA]\n"
+ "               specify foreground/background color in hexadecimal notation.\n"
+ "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
+-"               Color output support available only in PNG and SVG.\n"
++"               Color output support available only in SVG.\n"
+ "  -V, --version\n"
+ "               display the version number and copyrights of the qrencode.\n\n"
+ "      --verbose\n"
+@@ -153,12 +151,12 @@
+               } else {
+                       fprintf(stderr,
+ "Usage: qrencode [OPTION]... [STRING]\n"
+-"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
++"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
+ "  -h           display this message.\n"
+ "  --help       display the usage of long options.\n"
+ "  -o FILENAME  write image to FILENAME. If '-' is specified, the result\n"
+ "               will be output to standard output. If -S is given, structured\n"
+-"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
++"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
+ "               (suffix is removed from FILENAME, if specified)\n"
+ "  -s NUMBER    specify module size in dots (pixels). (default=3)\n"
+ "  -l {LMQH}    specify error correction level from L (lowest) to H (highest).\n"
+@@ -166,8 +164,8 @@
+ "  -v NUMBER    specify the version of the symbol. (default=auto)\n"
+ "  -m NUMBER    specify the width of the margins. (default=4 (2 for Micro))\n"
+ "  -d NUMBER    specify the DPI of the generated PNG. (default=72)\n"
+-"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
+-"               specify the type of the generated image. (default=PNG)\n"
++"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
++"               specify the type of the generated image. (default=SVG)\n"
+ "  -S           make structured symbols. Version must be specified.\n"
+ "  -k           assume that the input text contains kanji (shift-jis).\n"
+ "  -c           encode lower-case alphabet characters in 8-bit mode. (default)\n"
+@@ -178,7 +176,7 @@
+ "  --background=RRGGBB[AA]\n"
+ "               specify foreground/background color in hexadecimal notation.\n"
+ "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
+-"               Color output support available only in PNG and SVG.\n"
++"               Color output support available only in SVG.\n"
+ "  -V           display the version number and copyrights of the qrencode.\n"
+ "  [STRING]     input data. If it is not specified, data will be taken from\n"
+ "               standard input.\n"
+@@ -253,128 +251,6 @@
+       return fp;
+ }
+-static int writePNG(QRcode *qrcode, const char *outfile)
+-{
+-      static FILE *fp; // avoid clobbering by setjmp.
+-      png_structp png_ptr;
+-      png_infop info_ptr;
+-      png_colorp palette;
+-      png_byte alpha_values[2];
+-      unsigned char *row, *p, *q;
+-      int x, y, xx, yy, bit;
+-      int realwidth;
+-
+-      realwidth = (qrcode->width + margin * 2) * size;
+-      row = (unsigned char *)malloc((realwidth + 7) / 8);
+-      if(row == NULL) {
+-              fprintf(stderr, "Failed to allocate memory.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-
+-      if(outfile[0] == '-' && outfile[1] == '\0') {
+-              fp = stdout;
+-      } else {
+-              fp = fopen(outfile, "wb");
+-              if(fp == NULL) {
+-                      fprintf(stderr, "Failed to create file: %s\n", outfile);
+-                      perror(NULL);
+-                      exit(EXIT_FAILURE);
+-              }
+-      }
+-
+-      png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+-      if(png_ptr == NULL) {
+-              fprintf(stderr, "Failed to initialize PNG writer.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-
+-      info_ptr = png_create_info_struct(png_ptr);
+-      if(info_ptr == NULL) {
+-              fprintf(stderr, "Failed to initialize PNG write.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-
+-      if(setjmp(png_jmpbuf(png_ptr))) {
+-              png_destroy_write_struct(&png_ptr, &info_ptr);
+-              fprintf(stderr, "Failed to write PNG image.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-
+-      palette = (png_colorp) malloc(sizeof(png_color) * 2);
+-      if(palette == NULL) {
+-              fprintf(stderr, "Failed to allocate memory.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-      palette[0].red   = fg_color[0];
+-      palette[0].green = fg_color[1];
+-      palette[0].blue  = fg_color[2];
+-      palette[1].red   = bg_color[0];
+-      palette[1].green = bg_color[1];
+-      palette[1].blue  = bg_color[2];
+-      alpha_values[0] = fg_color[3];
+-      alpha_values[1] = bg_color[3];
+-      png_set_PLTE(png_ptr, info_ptr, palette, 2);
+-      png_set_tRNS(png_ptr, info_ptr, alpha_values, 2, NULL);
+-
+-      png_init_io(png_ptr, fp);
+-      png_set_IHDR(png_ptr, info_ptr,
+-                      realwidth, realwidth,
+-                      1,
+-                      PNG_COLOR_TYPE_PALETTE,
+-                      PNG_INTERLACE_NONE,
+-                      PNG_COMPRESSION_TYPE_DEFAULT,
+-                      PNG_FILTER_TYPE_DEFAULT);
+-      png_set_pHYs(png_ptr, info_ptr,
+-                      dpi * INCHES_PER_METER,
+-                      dpi * INCHES_PER_METER,
+-                      PNG_RESOLUTION_METER);
+-      png_write_info(png_ptr, info_ptr);
+-
+-      /* top margin */
+-      memset(row, 0xff, (realwidth + 7) / 8);
+-      for(y=0; y<margin * size; y++) {
+-              png_write_row(png_ptr, row);
+-      }
+-
+-      /* data */
+-      p = qrcode->data;
+-      for(y=0; y<qrcode->width; y++) {
+-              bit = 7;
+-              memset(row, 0xff, (realwidth + 7) / 8);
+-              q = row;
+-              q += margin * size / 8;
+-              bit = 7 - (margin * size % 8);
+-              for(x=0; x<qrcode->width; x++) {
+-                      for(xx=0; xx<size; xx++) {
+-                              *q ^= (*p & 1) << bit;
+-                              bit--;
+-                              if(bit < 0) {
+-                                      q++;
+-                                      bit = 7;
+-                              }
+-                      }
+-                      p++;
+-              }
+-              for(yy=0; yy<size; yy++) {
+-                      png_write_row(png_ptr, row);
+-              }
+-      }
+-      /* bottom margin */
+-      memset(row, 0xff, (realwidth + 7) / 8);
+-      for(y=0; y<margin * size; y++) {
+-              png_write_row(png_ptr, row);
+-      }
+-
+-      png_write_end(png_ptr, info_ptr);
+-      png_destroy_write_struct(&png_ptr, &info_ptr);
+-
+-      fclose(fp);
+-      free(row);
+-      free(palette);
+-
+-      return 0;
+-}
+-
+ static int writeEPS(QRcode *qrcode, const char *outfile)
+ {
+       FILE *fp;
+@@ -831,9 +707,6 @@
+       }
+       switch(image_type) {
+-              case PNG_TYPE:
+-                      writePNG(qrcode, outfile);
+-                      break;
+               case EPS_TYPE:
+                       writeEPS(qrcode, outfile);
+                       break;
+@@ -887,9 +760,6 @@
+       size_t suffix_size;
+       switch(image_type) {
+-              case PNG_TYPE:
+-                      type_suffix = ".png";
+-                      break;
+               case EPS_TYPE:
+                       type_suffix = ".eps";
+                       break;
+@@ -948,9 +818,6 @@
+               }
+               switch(image_type) {
+-                      case PNG_TYPE: 
+-                              writePNG(p->code, filename);
+-                              break;
+                       case EPS_TYPE: 
+                               writeEPS(p->code, filename);
+                               break;
+@@ -1062,9 +929,7 @@
+                               }
+                               break;
+                       case 't':
+-                              if(strcasecmp(optarg, "png") == 0) {
+-                                      image_type = PNG_TYPE;
+-                              } else if(strcasecmp(optarg, "eps") == 0) {
++                              if(strcasecmp(optarg, "eps") == 0) {
+                                       image_type = EPS_TYPE;
+                               } else if(strcasecmp(optarg, "svg") == 0) {
+                                       image_type = SVG_TYPE;
+@@ -1133,11 +998,6 @@
+               exit(EXIT_SUCCESS);
+       }
+-      if(outfile == NULL && image_type == PNG_TYPE) {
+-              fprintf(stderr, "No output filename is given.\n");
+-              exit(EXIT_FAILURE);
+-      }
+-
+       if(optind < argc) {
+               intext = (unsigned char *)argv[optind];
+               length = strlen((char *)intext);
index b94db193938b247a7d263e033d48238b10237660..515d6faced003e3cb373f9a6d5417f6a5addbcc1 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zeromq
 PKG_VERSION:=4.0.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=LICENCE.txt
@@ -31,28 +31,26 @@ PKG_INSTALL:=1
 include $(INCLUDE_DIR)/uclibc++.mk
 include $(INCLUDE_DIR)/package.mk
 
-define Package/libzmq/Default
-  TITLE:=ZeroMQ - Code Connected 
-  URL:=http://www.zeromq.org/
-endef
-
-define Package/libzmq/Default/description
-  A replacment for raw socket developing library 
-endef
-
 define Package/libzmq
-  $(call Package/libzmq/Default)
+  TITLE:=ZeroMQ - Message Queue engine
+  URL:=http://www.zeromq.org/
   SECTION:=libs
   CATEGORY:=Libraries
-  DEPENDS:=+libuuid +libpthread +librt +libsodium $(CXX_DEPENDS)
-  TITLE+= (library)
-  URL:=
+  DEPENDS:=+libuuid +libpthread +librt +PACKAGE_libsodium:libsodium $(CXX_DEPENDS)
+  MENU:=1
+endef
+
+define Package/libzmq/config
+ config LIBZMQ_CURVEZMQ
+       bool "Include support for CurveZMQ security"
+       depends on PACKAGE_libzmq
+       default y
+       select PACKAGE_libsodium
 endef
 
 define Package/libzmq/description
-  $(call Package/libzmq/Default/description)
- This package contains the ZeroMQ shared library, used by other
- programs.
+ This package contains the ZeroMQ messaging engine shared library.
+ CurveZMQ security protocols are optional using libsodium.
 endef
 
 # add extra configure flags here
index dddb6efbd6f8f816a649941d4054142f0ac286d7..5b100cf4ddd201ecb41bc155767092280213f8f3 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffmpeg
-PKG_VERSION:=2.6.2
+PKG_VERSION:=2.6.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://ffmpeg.org/releases/
-PKG_MD5SUM:=e75d598921285d6775f20164a91936ac
+PKG_MD5SUM:=e2cc3c209f91393d35ab58598e41cf22
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
@@ -125,7 +125,7 @@ FFMPEG_MINI_DECODERS:= \
        wmav1 \
        wmav2 \
 
-FFMPEG_MINI_DEMUXERS := \
+FFMPEG_MINI_DEMUXERS:= \
        aac \
        ac3 \
        avi \
@@ -144,7 +144,7 @@ FFMPEG_MINI_PARSERS:= \
        mpeg4video \
        mpegaudio \
 
-FFMPEG_MINI_PROTOCOLS := \
+FFMPEG_MINI_PROTOCOLS:= \
        file \
 
 FFMPEG_AUDIO_DECODERS:= \
diff --git a/net/clamav/Makefile b/net/clamav/Makefile
new file mode 100644 (file)
index 0000000..a401e74
--- /dev/null
@@ -0,0 +1,120 @@
+#
+# 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:=clamav
+PKG_VERSION:=0.98.6
+PKG_RELEASE:=1
+
+PKG_LICENSE:=GPL-2.0
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://downloads.sourceforge.net/project/clamav/clamav/$(PKG_VERSION)/
+PKG_MD5SUM:=7f4f7e82a09e42c4ebf153d6d452d9d8
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/uclibc++.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/clamav/Default
+  SECTION:=net
+  DEPENDS:=+libpthread +uclibcxx +zlib +libcurl +libopenssl
+  CATEGORY:=Network
+  SUBMENU:=Web Servers/Proxies
+  TITLE:=ClamAV
+  URL:=http://www.clamav.net/
+endef
+
+define Package/clamav
+    $(call Package/clamav/Default)
+endef
+
+define Package/freshclam
+    $(call Package/clamav/Default)
+    DEPENDS+= +clamav
+    TITLE+=database updater
+endef
+
+define Package/clamav/description
+ ClamAV is an open source antivirus engine for detecting trojans,
+ viruses, malware & other malicious threats.
+endef
+
+define Package/freshclam/description
+ Database updater for ClamAV
+endef
+
+define Package/clamav/conffiles
+endef
+
+CONFIGURE_VARS += \
+       INCLUDES="" \
+       CXXFLAGS="$$$$CXXFLAGS -fno-rtti" \
+       LIBS="-lpthread" \
+
+define Build/Configure
+       $(call Build/Configure/Default, \
+               --sysconfdir=/etc/clamav/ \
+               --prefix=/usr/ \
+               --exec-prefix=/usr/ \
+               --disable-xml \
+               --disable-bzip2 \
+               --enable-ltdl-install \
+               --with-user nobody \
+               --with-group nogroup \
+       )
+endef
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               DESTDIR="$(PKG_INSTALL_DIR)" \
+               all install
+endef
+
+define Package/clamav/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/clamd $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamav-config $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clambc $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamconf $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamdscan $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/clamscan $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sigtool $(1)/usr/sbin/
+
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/clamav.h $(1)/usr/include/
+
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib*/* $(1)/usr/lib/
+
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/clamav.config $(1)/etc/config/clamav
+
+       $(INSTALL_DIR) $(1)/etc/init.d/
+       $(INSTALL_BIN) ./files/clamav.init $(1)/etc/init.d/clamav
+
+       $(INSTALL_DIR) $(1)/usr/share/clamav
+       $(CP) ./files/bytecode.cvd $(1)/usr/share/clamav/
+endef
+
+define Package/freshclam/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/freshclam $(1)/usr/sbin/
+
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/freshclam.config $(1)/etc/config/freshclam
+
+       $(INSTALL_DIR) $(1)/etc/init.d/
+       $(INSTALL_BIN) ./files/freshclam.init $(1)/etc/init.d/freshclam
+endef
+
+$(eval $(call BuildPackage,clamav))
+$(eval $(call BuildPackage,freshclam))
diff --git a/net/clamav/files/bytecode.cvd b/net/clamav/files/bytecode.cvd
new file mode 100644 (file)
index 0000000..07ff8ab
Binary files /dev/null and b/net/clamav/files/bytecode.cvd differ
diff --git a/net/clamav/files/clamav.config b/net/clamav/files/clamav.config
new file mode 100644 (file)
index 0000000..1543caa
--- /dev/null
@@ -0,0 +1,34 @@
+config clamav 'clamav'
+       option clamd_config_file '/etc/clamav/clamd.conf'
+       option LogFile '/tmp/clamd.log'
+       option LogFileMaxSize '1M'
+       option LogTime 'no'
+       option LogVerbose 'no'
+       option ExtendedDetectionInfo 'no'
+       option OfficialDatabaseOnly 'no'
+       option StreamMinPort '1024'
+       option StreamMaxPort '2048'
+       option MaxThreads '10'
+       option ReadTimeout '30'
+       option CommandReadTimeout '5'
+       option MaxDirectoryRecursion '15'
+       option FollowDirectorySymlinks 'no'
+       option FollowFileSymlinks 'no'
+       option SelfCheck '600'
+       option DetectPUA 'yes'
+       option ScanPE 'yes'
+       option DisableCertCheck 'no'
+       option ScanELF 'yes'
+       option DetectBrokenExecutables 'no'
+       option ScanOLE2 'yes'
+       option ScanPDF 'yes'
+       option ScanSWF 'yes'
+       option ScanMail 'yes'
+       option ScanPartialMessages 'no'
+       option ScanArchive 'yes'
+       option ArchiveBlockEncrypted 'yes'
+       option MaxFileSize '10M'
+       option TemporaryDirectory '/tmp'
+       option LocalSocket '/var/run/clamav/clamd.sock'
+       option User 'nobody'
+       option ExitOnOOM 'yes'
diff --git a/net/clamav/files/clamav.init b/net/clamav/files/clamav.init
new file mode 100644 (file)
index 0000000..b2a8950
--- /dev/null
@@ -0,0 +1,116 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2015 OpenWrt.org
+
+START=90
+STOP=10
+
+USE_PROCD=1
+PROG=/usr/sbin/clamd
+CLAMD_CONFIGFILE="/tmp/clamav/clamd.conf"
+
+validate_clamav_section() {
+       uci_validate_section clamav clamav "${1}" \
+               'clamd_config_file:string' \
+               'LogFile:string' \
+               'LogFileMaxSize:string' \
+               'LogVerbose:string' \
+               'ExtendedDetectionInfo:string' \
+               'LogTime:string' \
+               'OfficialDatabaseOnly:string' \
+               'StreamMinPort:uinteger' \
+               'StreamMaxPort:uinteger' \
+               'MaxThreads:uinteger' \
+               'ReadTimeout:uinteger' \
+               'CommandReadTimeout:uinteger' \
+               'MaxDirectoryRecursion:uinteger' \
+               'FollowDirectorySymlinks:string' \
+               'FollowFileSymlinks:string' \
+               'SelfCheck:uinteger' \
+               'DetectPUA:string' \
+               'ScanPE:string' \
+               'DisableCertCheck:string' \
+               'ScanELF:string' \
+               'DetectBrokenExecutables:string' \
+               'ScanOLE2:string' \
+               'ScanPDF:string' \
+               'ScanSWF:string' \
+               'ScanMail:string' \
+               'ScanPartialMessages:string' \
+               'ScanArchive:string' \
+               'TemporaryDirectory:string' \
+               'ArchiveBlockEncrypted:string' \
+               'MaxFileSize:string' \
+               'LocalSocket:string' \
+               'User:string' \
+               'ExitOnOOM:string'
+}
+
+start_service() {
+       local clamd_config_file LogFile LogTime StreamMinPort \
+               StreamMaxPort MaxThreads ReadTimeout CommandReadTimeout MaxDirectoryRecursion \
+               FollowFileSymlinks FollowDirectorySymlinks SelfCheck DetectPUA ScanPE DisableCertCheck \
+               ScanELF DetectBrokenExecutables ScanOLE2 ScanPDF ScanSWF ScanMail ScanPartialMessages \
+               ScanArchive TemporaryDirectory ArchiveBlockEncrypted MaxFileSize LocalSocket User
+
+       validate_clamav_section clamav || {
+               echo "validation failed"
+               return 1
+       }
+
+       mkdir -p /usr/share/clamav
+       mkdir -p /etc/clamav/
+       mkdir -p /var/run/clamav/
+       chmod a+rw /var/run/clamav
+
+       mkdir -p $(dirname $CLAMD_CONFIGFILE)
+       ln -sf $clamd_config_file $CLAMD_CONFIGFILE
+
+       echo "LogFile " $LogFile > $CLAMD_CONFIGFILE
+       echo "LogFileMaxSize " $LogFileMaxSize >> $CLAMD_CONFIGFILE
+       echo "LogVerbose " $LogVerbose >> $CLAMD_CONFIGFILE
+       echo "ExtendedDetectionInfo " $ExtendedDetectionInfo >> $CLAMD_CONFIGFILE
+       echo "LogTime " $LogTime >> $CLAMD_CONFIGFILE
+       echo "OfficialDatabaseOnly " $OfficialDatabaseOnly >> $CLAMD_CONFIGFILE
+       echo "StreamMinPort " $StreamMinPort >> $CLAMD_CONFIGFILE
+       echo "StreamMaxPort " $StreamMaxPort >> $CLAMD_CONFIGFILE
+       echo "MaxThreads " $MaxThreads >> $CLAMD_CONFIGFILE
+       echo "ReadTimeout " $ReadTimeout >> $CLAMD_CONFIGFILE
+       echo "CommandReadTimeout " $CommandReadTimeout >> $CLAMD_CONFIGFILE
+       echo "MaxDirectoryRecursion " $MaxDirectoryRecursion >> $CLAMD_CONFIGFILE
+       echo "FollowDirectorySymlinks " $FollowDirectorySymlinks >> $CLAMD_CONFIGFILE
+       echo "FollowFileSymlinks " $FollowFileSymlinks >> $CLAMD_CONFIGFILE
+       echo "SelfCheck " $SelfCheck >> $CLAMD_CONFIGFILE
+       echo "DetectPUA " $DetectPUA >> $CLAMD_CONFIGFILE
+       echo "ScanPE " $ScanPE >> $CLAMD_CONFIGFILE
+       echo "DisableCertCheck " $DisableCertCheck >> $CLAMD_CONFIGFILE
+       echo "ScanELF " $ScanELF >> $CLAMD_CONFIGFILE
+       echo "DetectBrokenExecutables " $DetectBrokenExecutables >> $CLAMD_CONFIGFILE
+       echo "ScanOLE2 " $ScanOLE2 >> $CLAMD_CONFIGFILE
+       echo "ScanPDF " $ScanPDF >> $CLAMD_CONFIGFILE
+       echo "ScanSWF " $ScanSWF >> $CLAMD_CONFIGFILE
+       echo "ScanMail " $ScanMail >> $CLAMD_CONFIGFILE
+       echo "ScanPartialMessages " $ScanPartialMessages >> $CLAMD_CONFIGFILE
+       echo "ScanArchive " $ScanArchive >> $CLAMD_CONFIGFILE
+       echo "TemporaryDirectory " $TemporaryDirectory >> $CLAMD_CONFIGFILE
+       echo "ArchiveBlockEncrypted " $ArchiveBlockEncrypted >> $CLAMD_CONFIGFILE
+       echo "MaxFileSize " $MaxFileSize >> $CLAMD_CONFIGFILE
+       echo "LocalSocket " $LocalSocket >> $CLAMD_CONFIGFILE
+       echo "User " $User >> $CLAMD_CONFIGFILE
+       echo "ExitOnOOM " $ExitOnOOM >> $CLAMD_CONFIGFILE
+
+       procd_open_instance
+       procd_set_param command $PROG -c $CLAMD_CONFIGFILE
+       procd_set_param file $CLAMD_CONFIGFILE
+       procd_close_instance
+}
+
+stop_service()
+{
+       service_stop ${PROG}
+}
+
+service_triggers()
+{
+       procd_add_reload_trigger "clamav"
+       procd_add_validation validate_clamav_section
+}
diff --git a/net/clamav/files/freshclam.config b/net/clamav/files/freshclam.config
new file mode 100644 (file)
index 0000000..827e8dd
--- /dev/null
@@ -0,0 +1,7 @@
+config freshclam 'freshclam'
+       option freshclam_config_file '/etc/clamav/freshclam.conf'
+       option UpdateLogFile '/tmp/freshclam.log'
+       option DatabaseMirror 'database.clamav.net'
+       option NotifyClamd '/etc/clamav/clamd.conf'
+       option DatabaseOwner 'root'
+       option CompressLocalDatabase 'yes'
diff --git a/net/clamav/files/freshclam.init b/net/clamav/files/freshclam.init
new file mode 100644 (file)
index 0000000..37b2767
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2015 OpenWrt.org
+
+START=90
+STOP=10
+
+USE_PROCD=1
+PROG=/usr/sbin/freshclam
+FRESHCLAM_CONFIGFILE="/tmp/clamav/freshclam.conf"
+
+validate_freshclam_section() {
+       uci_validate_section freshclam freshclam "${1}" \
+               'freshclam_config_file:string' \
+               'UpdateLogFile:string' \
+               'DatabaseMirror:string' \
+               'NotifyClamd:string' \
+               'DatabaseOwner:string' \
+               'CompressLocalDatabase:string:'
+}
+
+start_service() {
+       local freshclam_config_file UpdateLogFile DatabaseOwner NotifyClamd DatabaseMirror
+
+       validate_freshclam_section freshclam || {
+               echo "validation failed"
+               return 1
+       }
+
+       [ -f /tmp/freshclam.pid ] && echo "already running" && return 0
+
+       mkdir -p /usr/share/clamav
+       mkdir -p /etc/clamav
+       touch /tmp/freshclam.log
+       touch /tmp/freshclam.pid
+
+       mkdir -p $(dirname $FRESHCLAM_CONFIGFILE)
+       ln -sf $freshclam_config_file $FRESHCLAM_CONFIGFILE
+
+       echo "UpdateLogFile " $UpdateLogFile > $FRESHCLAM_CONFIGFILE
+       echo "DatabaseMirror " $DatabaseMirror >> $FRESHCLAM_CONFIGFILE
+       echo "NotifyClamd " $NotifyClamd >> $FRESHCLAM_CONFIGFILE
+       echo "DatabaseOwner " $DatabaseOwner >> $FRESHCLAM_CONFIGFILE
+       echo "CompressLocalDatabase " $CompressLocalDatabase >> $FRESHCLAM_CONFIGFILE
+
+       procd_open_instance
+       procd_set_param command $PROG -d --config-file=$FRESHCLAM_CONFIGFILE -p /tmp/freshclam.pid --no-warnings
+       procd_set_param file $FRESHCLAM_CONFIGFILE
+       procd_close_instance
+}
+
+stop_service()
+{
+       [ ! -f /tmp/freshclam.pid ] && echo "not running" && return 0
+       PID=`cat /tmp/freshclam.pid`
+       kill $PID
+       rm -f /tmp/freshclam.pid
+}
+
+service_triggers()
+{
+       procd_add_reload_trigger "freshclam"
+       procd_add_validation validate_freshclam_section
+}
diff --git a/net/clamav/patches/001-compile.patch b/net/clamav/patches/001-compile.patch
new file mode 100644 (file)
index 0000000..3992257
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/clamdscan/proto.c
++++ b/clamdscan/proto.c
+@@ -55,6 +55,7 @@
+ #include "shared/misc.h"
+ #include "shared/clamdcom.h"
++#include <sys/un.h>
+ #include "proto.h"
+ #include "client.h"
index 114453da3320257385271450db7aeedd639f5898..10a41b91e942638b8d400132c447fd96e7a42677 100644 (file)
@@ -8,18 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=e2guardian
-PKG_VERSION:=3.0.4
+PKG_VERSION:=3.1.2
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/e2guardian/e2guardian.git
-PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-
+PKG_SOURCE:=v$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/e2guardian/e2guardian/archive/
+PKG_MD5SUM:=85cfa16074737dbc3935f93dfcded285
+PKG_FIXUP:=autoreconf
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
@@ -47,9 +45,12 @@ CONFIGURE_VARS += \
 
 CONFIGURE_ARGS += \
                --with-sysconfsubdir=e2guardian \
-               --with-proxyuser=root \
-               --with-proxygroup=root \
-               --enable-pcre=yes
+               --with-proxyuser=nobody \
+               --with-proxygroup=nogroup \
+               --enable-pcre=yes \
+               --with-piddir=/tmp/e2guardian/ \
+               --enable-sslextralists=no \
+               --enable-sslmitm=no
 
 define Build/Configure
        $(call Build/Configure/Default,$CONFIGURE_ARGS)
index 2b46f2035e782f478476c9cd13f64be95b4854b5..a876151384dece67faf1a536f372479c30bfa0ce 100644 (file)
@@ -1,13 +1,11 @@
 config e2guardian 'e2guardian'
-       option config_file '/etc/e2guardian/e2guardianf1.conf'
        option languagedir '/usr/share/e2guardian/languages'
        option language 'ukenglish'
        option loglevel '2'
        option logexceptionhits '2'
        option logfileformat '1'
-       option loglocation '/dev/null'
+       option loglocation '/var/log/e2guardian/access.log'
        option maxuploadsize '-1'
-       option filterip ''
        option filterports '8080'
        option proxyip '127.0.0.1'
        option proxyport '3128'
@@ -45,6 +43,7 @@ config e2guardian 'e2guardian'
        option deletedownloadedtempfiles 'on'
        option initialtrickledelay '20'
        option trickledelay '10'
+       option downloadmanager '/etc/e2guardian/downloadmanagers/fancy.conf'
        option downloadmanager '/etc/e2guardian/downloadmanagers/default.conf'
        option contentscannertimeout '60'
        option contentscanexceptions 'off'
index 132b61f83b30165d35ae02b9c15b2ed541010e8b..96c2802c148027382631dcaaf5be52ca05b63322 100644 (file)
@@ -7,13 +7,15 @@ STOP=10
 USE_PROCD=1
 PROG=/usr/sbin/e2guardian
 CONFIGFILE="/tmp/e2guardian/e2guardian.conf"
+LOGFILE="/tmp/e2guardian/access.log"
+GROUPCONFIG="/tmp/e2guardian/e2guardianf1.conf"
 
 validate_e2guardian_section() {
        uci_validate_section e2guardian e2guardian "${1}" \
-               'config_file:string' \
                'accessdeniedaddress:string' \
                'bannediplist:string' \
                'contentscanexceptions:string' \
+               'contentscanner:string'
                'contentscannertimeout:uinteger' \
                'createlistcachefiles:string' \
                'custombannedflashfile:string' \
@@ -83,7 +85,7 @@ validate_e2guardian_section() {
 
 start_service() {
 
-       local config_file accessdeniedaddress bannediplist contentscanexceptions contentscannertimeout \
+       local accessdeniedaddress bannediplist contentscanexceptions contentscanner contentscannertimeout \
                createlistcachefiles custombannedflashfile custombannedimagefile deletedownloadedtempfiles \
                downloadmanager exceptioniplist filecachedir loglocation \
                filtergroups filtergroupslist filterip filterports forcequicksearch forwardedfor hexdecodecontent \
@@ -102,10 +104,26 @@ start_service() {
        }
 
        mkdir -p $(dirname $CONFIGFILE)
-       ln -sf $config_file $(dirname $CONFIGFILE)
+       chown -R nobody:nogroup $(dirname $CONFIGFILE)
+
+       mkdir -p $(dirname $loglocation)
+       chown -R nobody:nogroup $(dirname $loglocation)
+
+       touch $loglocation
+       chown nobody:nogroup $loglocation
+
+       ln -sf $loglocation $(dirname $LOGFILE)
+       ln -sf /etc/e2guardian/e2guardian.conf $CONFIGFILE
+       ln -sf /etc/e2guardian/e2guardianf1.conf $GROUPCONFIG
 
        echo "accessdeniedaddress = " $accessdeniedaddress > $CONFIGFILE
        echo "bannediplist = " $bannediplist >> $CONFIGFILE
+
+       if [  "$contentscanner" != ""  ]
+       then
+               echo "contentscanner = " $contentscanner >> $CONFIGFILE
+       fi
+
        echo "contentscanexceptions = " $contentscanexceptions >> $CONFIGFILE
        echo "contentscannertimeout = " $contentscannertimeout >> $CONFIGFILE
        echo "createlistcachefiles = " $createlistcachefiles >> $CONFIGFILE
@@ -174,15 +192,17 @@ start_service() {
        echo "weightedphrasemode = " $weightedphrasemode >> $CONFIGFILE
 
        procd_open_instance
-       procd_set_param command $PROG -N -c "$CONFIGFILE"
+       procd_set_param command $PROG -c $CONFIGFILE
        procd_set_param file $CONFIGFILE
-       procd_set_param respawn
        procd_close_instance
+
 }
 
 stop_service()
 {
-       e2guardian -s | awk -F':' '{ print $2}' | xargs kill -9
+       PID=`cat /tmp/e2guardian/e2guardian.pid`
+       kill $PID
+       rm -f /tmp/e2guardian/e2guardian.pid
 }
 
 service_triggers()
index 21a145a49d70c4d2299b684f3c1e363c0b7d22ef..c4b821fc37f2a3d923fb41eeb889da30a6cea66f 100644 (file)
@@ -1,4 +1,4 @@
-# e2guardian filter group config file for version 3.0.4
+# e2guardian filter group config file for version 3.1.2
 
 
 # Filter group mode
@@ -25,41 +25,41 @@ groupmode = 1
 groupname = ''
 
 # Content filtering files location
-bannedphraselist = 'etc/e2guardian/lists/bannedphraselist'
-weightedphraselist = 'etc/e2guardian/lists/weightedphraselist'
-exceptionphraselist = 'etc/e2guardian/lists/exceptionphraselist'
-bannedsitelist = 'etc/e2guardian/lists/bannedsitelist'
-greysitelist = 'etc/e2guardian/lists/greysitelist'
-bannedsslsitelist = 'etc/e2guardian/lists/bannedsslsitelist'
-greysslsitelist = 'etc/e2guardian/lists/greysslsitelist'
-exceptionsitelist = 'etc/e2guardian/lists/exceptionsitelist'
-bannedurllist = 'etc/e2guardian/lists/bannedurllist'
-greyurllist = 'etc/e2guardian/lists/greyurllist'
-exceptionurllist = 'etc/e2guardian/lists/exceptionurllist'
-exceptionregexpurllist = 'etc/e2guardian/lists/exceptionregexpurllist'
-bannedregexpurllist = 'etc/e2guardian/lists/bannedregexpurllist'
-picsfile = 'etc/e2guardian/lists/pics'
-contentregexplist = 'etc/e2guardian/lists/contentregexplist'
-urlregexplist = 'etc/e2guardian/lists/urlregexplist'
-refererexceptionsitelist = 'etc/e2guardian/lists/refererexceptionsitelist'
-refererexceptionurllist = 'etc/e2guardian/lists/refererexceptionurllist'
-embededreferersitelist = 'etc/e2guardian/lists/embededreferersitelist'
-embededrefererurllist = 'etc/e2guardian/lists/embededrefererurllist'
-urlredirectregexplist = 'etc/e2guardian/lists/urlredirectregexplist'
+bannedphraselist = '/etc/e2guardian/lists/bannedphraselist'
+weightedphraselist = '/etc/e2guardian/lists/weightedphraselist'
+exceptionphraselist = '/etc/e2guardian/lists/exceptionphraselist'
+bannedsitelist = '/etc/e2guardian/lists/bannedsitelist'
+greysitelist = '/etc/e2guardian/lists/greysitelist'
+bannedsslsitelist = '/etc/e2guardian/lists/bannedsslsitelist'
+greysslsitelist = '/etc/e2guardian/lists/greysslsitelist'
+exceptionsitelist = '/etc/e2guardian/lists/exceptionsitelist'
+bannedurllist = '/etc/e2guardian/lists/bannedurllist'
+greyurllist = '/etc/e2guardian/lists/greyurllist'
+exceptionurllist = '/etc/e2guardian/lists/exceptionurllist'
+exceptionregexpurllist = '/etc/e2guardian/lists/exceptionregexpurllist'
+bannedregexpurllist = '/etc/e2guardian/lists/bannedregexpurllist'
+picsfile = '/etc/e2guardian/lists/pics'
+contentregexplist = '/etc/e2guardian/lists/contentregexplist'
+urlregexplist = '/etc/e2guardian/lists/urlregexplist'
+refererexceptionsitelist = '/etc/e2guardian/lists/refererexceptionsitelist'
+refererexceptionurllist = '/etc/e2guardian/lists/refererexceptionurllist'
+embededreferersitelist = '/etc/e2guardian/lists/embededreferersitelist'
+embededrefererurllist = '/etc/e2guardian/lists/embededrefererurllist'
+urlredirectregexplist = '/etc/e2guardian/lists/urlredirectregexplist'
 
 # local versions of lists (where LOCAL_LISTS enabled)
-#localbannedsitelist = 'etc/e2guardian/lists/localbannedsitelist'
-#localgreysitelist = 'etc/e2guardian/lists/localgreysitelist'
-#localexceptionsitelist = 'etc/e2guardian/lists/localexceptionsitelist'
-#localbannedurllist = 'etc/e2guardian/lists/localbannedurllist'
-#localgreyurllist = 'etc/e2guardian/lists/localgreyurllist'
-#localexceptionurllist = 'etc/e2guardian/lists/localexceptionurllist'
-#localbannedsslsitelist = 'etc/e2guardian/lists/localbannedsslsitelist'
-#localgreysslsitelist = 'etc/e2guardian/lists/localgreysslsitelist'
-#localbannedsearchlist = 'etc/e2guardian/lists/localbannedsearchlist'
-
-!! Not compiled !! authexceptionsitelist = 'etc/e2guardian/lists/authexceptionsitelist'
-!! Not compiled !! authexceptionurllist = 'etc/e2guardian/lists/authexceptionurllist'
+#localbannedsitelist = '/etc/e2guardian/lists/localbannedsitelist'
+#localgreysitelist = '/etc/e2guardian/lists/localgreysitelist'
+#localexceptionsitelist = '/etc/e2guardian/lists/localexceptionsitelist'
+#localbannedurllist = '/etc/e2guardian/lists/localbannedurllist'
+#localgreyurllist = '/etc/e2guardian/lists/localgreyurllist'
+#localexceptionurllist = '/etc/e2guardian/lists/localexceptionurllist'
+#localbannedsslsitelist = '/etc/e2guardian/lists/localbannedsslsitelist'
+#localgreysslsitelist = '/etc/e2guardian/lists/localgreysslsitelist'
+#localbannedsearchlist = '/etc/e2guardian/lists/localbannedsearchlist'
+
+!! Not compiled !! authexceptionsitelist = '/etc/e2guardian/lists/authexceptionsitelist'
+!! Not compiled !! authexceptionurllist = '/etc/e2guardian/lists/authexceptionurllist'
 
 # Filetype filtering
 #
@@ -78,20 +78,20 @@ urlredirectregexplist = 'etc/e2guardian/lists/urlredirectregexplist'
 # (on | off)
 #
 blockdownloads = off
-exceptionextensionlist = 'etc/e2guardian/lists/exceptionextensionlist'
-exceptionmimetypelist = 'etc/e2guardian/lists/exceptionmimetypelist'
+exceptionextensionlist = '/etc/e2guardian/lists/exceptionextensionlist'
+exceptionmimetypelist = '/etc/e2guardian/lists/exceptionmimetypelist'
 #
 # Use the following lists to block specific kinds of file downloads.
 # The two exception lists above can be used to override these.
 #
-bannedextensionlist = 'etc/e2guardian/lists/bannedextensionlist'
-bannedmimetypelist = 'etc/e2guardian/lists/bannedmimetypelist'
+bannedextensionlist = '/etc/e2guardian/lists/bannedextensionlist'
+bannedmimetypelist = '/etc/e2guardian/lists/bannedmimetypelist'
 #
 # In either file filtering mode, the following list can be used to override
 # MIME type & extension blocks for particular domains & URLs (trusted download sites).
 #
-exceptionfilesitelist = 'etc/e2guardian/lists/exceptionfilesitelist'
-exceptionfileurllist = 'etc/e2guardian/lists/exceptionfileurllist'
+exceptionfilesitelist = '/etc/e2guardian/lists/exceptionfilesitelist'
+exceptionfileurllist = '/etc/e2guardian/lists/exceptionfileurllist'
 
 # POST protection (web upload and forms)
 # does not block forms without any file upload, i.e. this is just for
@@ -108,9 +108,9 @@ maxuploadsize = -1
 # Supply categorised lists here and the category string shall be logged against
 # matching requests, but matching these lists does not perform any filtering
 # action.
-#logsitelist = 'etc/e2guardian/lists/logsitelist'
-#logurllist = 'etc/e2guardian/lists/logurllist'
-#logregexpurllist = 'etc/e2guardian/lists/logregexpurllist'
+#logsitelist = '/etc/e2guardian/lists/logsitelist'
+#logurllist = '/etc/e2guardian/lists/logurllist'
+#logregexpurllist = '/etc/e2guardian/lists/logregexpurllist'
 
 # Outgoing HTTP header rules:
 # Optional lists for blocking based on, and modification of, outgoing HTTP
@@ -121,9 +121,9 @@ maxuploadsize = -1
 # Headers are matched/replaced on a line-by-line basis, not as a contiguous
 # block.
 # Use for example, to remove cookies or prevent certain user-agents.
-headerregexplist = 'etc/e2guardian/lists/headerregexplist'
-bannedregexpheaderlist = 'etc/e2guardian/lists/bannedregexpheaderlist'
-addheaderregexplist = 'etc/e2guardian/lists/addheaderregexplist'
+headerregexplist = '/etc/e2guardian/lists/headerregexplist'
+bannedregexpheaderlist = '/etc/e2guardian/lists/bannedregexpheaderlist'
+addheaderregexplist = '/etc/e2guardian/lists/addheaderregexplist'
 
 # Weighted phrase mode
 # Optional; overrides the weightedphrasemode option in e2guardian.conf
@@ -166,11 +166,11 @@ naughtynesslimit = 50
 # List of regular expressions for matching search engine URLs.  It is assumed
 # that the search terms themselves will be contained in the
 # of output of each expression.
-#searchregexplist = 'etc/e2guardian/lists/searchregexplist'
+#searchregexplist = '/etc/e2guardian/lists/searchregexplist'
 #
 # Banned Search Term list(s) for option 1
-#bannedsearchlist = 'etc/e2guardian/lists/bannedsearchlist'
-#bannedsearchoveridelist = 'etc/e2guardian/lists/bannedsearchoveridelist'
+#bannedsearchlist = '/etc/e2guardian/lists/bannedsearchlist'
+#bannedsearchoveridelist = '/etc/e2guardian/lists/bannedsearchoveridelist'
 
 
 # Search term limit (for Option 2)
@@ -192,9 +192,9 @@ naughtynesslimit = 50
 # of text.
 # Please note that all or none of the below should be uncommented, not a
 # mixture.
-#bannedsearchtermlist = 'etc/e2guardian/lists/bannedsearchtermlist'
-#weightedsearchtermlist = 'etc/e2guardian/lists/weightedsearchtermlist'
-#exceptionsearchtermlist = 'etc/e2guardian/lists/exceptionsearchtermlist'
+#bannedsearchtermlist = '/etc/e2guardian/lists/bannedsearchtermlist'
+#weightedsearchtermlist = '/etc/e2guardian/lists/weightedsearchtermlist'
+#exceptionsearchtermlist = '/etc/e2guardian/lists/exceptionsearchtermlist'
 
 # Category display threshold
 # This option only applies to pages blocked by weighted phrase filtering.
@@ -330,12 +330,12 @@ reportinglevel = 3
 # only used in reporting level 3.
 #
 # The default template file path is <languagedir>/<language>/template.h
-# e.g. share/e2guardian/languages/ukenglish/template.html when using 'ukenglish'
+# e.g. /share/e2guardian/languages/ukenglish/template.html when using 'ukenglish'
 # language.
 #
 # This option generates a file path of the form:
 # <languagedir>/<language>/<htmltemplate>
-# e.g. share/e2guardian/languages/ukenglish/custom.html
+# e.g. /share/e2guardian/languages/ukenglish/custom.html
 #
 #htmltemplate = 'custom.html'
 
@@ -420,7 +420,11 @@ reportinglevel = 3
 sslcertcheck = off
 
 #SSL man in the middle
-# Forge ssl certificates for all sites, decrypt the data then re encrypt it
+# Forge ssl certificates for all non-exception sites, decrypt the data then re encrypt it
 # using a different private key. Used to filter ssl sites
 sslmitm = off
 
+#Limit SSL MITM to sites in greysslsitelist(s)
+# ignored if  sslmitm is off
+# SSL sites not matching greysslsitelist will be treat as if sslmitm is off.
+onlymitmsslgrey = off
index b9ce06d8b8ea0dcb314deb2adeb126f86c64ff31..152edd75f994c0447c8ef51b0b393bb4fd7a03c5 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=knxd
-PKG_VERSION=2015-03-31-$(PKG_SOURCE_VERSION)
+PKG_VERSION=2015-05-20-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/knxd/knxd.git
-PKG_SOURCE_VERSION:=2c6c6732a684dffb87b391ea92cccdf07c8385b8
+PKG_SOURCE_VERSION:=30d490e15dfc3cedffc891c62eaa03c918f8efed
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
 
diff --git a/net/luci-app-clamav/Makefile b/net/luci-app-clamav/Makefile
new file mode 100644 (file)
index 0000000..fed8e63
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# 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
new file mode 100644 (file)
index 0000000..02f3bfc
--- /dev/null
@@ -0,0 +1,22 @@
+--[[
+
+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
new file mode 100644 (file)
index 0000000..ff98139
--- /dev/null
@@ -0,0 +1,178 @@
+--[[
+
+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
new file mode 100644 (file)
index 0000000..880f373
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# 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
new file mode 100644 (file)
index 0000000..a943115
--- /dev/null
@@ -0,0 +1,399 @@
+--[[
+
+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 dont 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("dont 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
new file mode 100644 (file)
index 0000000..dd545f5
--- /dev/null
@@ -0,0 +1,22 @@
+--[[
+
+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
index 9b8fea7e764a0f90d3a3c9f91ebaf9cbf62b2233..33f8b6d5e9f17d2f51c255697b3e623c0c94c948 100644 (file)
@@ -12,7 +12,8 @@ PKG_VERSION:=2.9.7.2
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/
+PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/ \
+       @SF/$(PKG_NAME)
 PKG_MD5SUM:=b01e9964827394c39194a0147bc15705
 
 PKG_BUILD_DEPENDS:=librpc
index 2f7cb4d0f2bf791e0c6f10c98211025eb8e304f0..77ef8259d09e1353c47e64c5db0a80b1b70b3949 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tcpproxy
-PKG_VERSION:=1.1
+PKG_VERSION:=1.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.spreadspace.org/tcpproxy/releases/
-PKG_MD5SUM:=55126473bcde635f9ee019c6caf19bb7
+PKG_MD5SUM:=14f734a61350c52556909e2ed5bff361
 PKG_MAINTAINER:=Christian Pointner <equinox@spreadspace.org>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=LICENSE
@@ -56,6 +56,7 @@ define Build/Configure
     echo '#define TARGET "linux"' >> config.h; \
     echo '#define PREFIX "/usr"' >> config.h; \
     echo '#define BINDIR "/usr/bin"' >> config.h; \
+    echo '#define SYSTEMDDIR "/tmp"' >> config.h; \
     echo '#define ETCDIR "/etc"' >> config.h; \
     echo '#define CONFFILE "/etc/tcpproxy.conf"' >> config.h; \
     echo '' >> config.h; \
index 38d6bc77e9c8c4de43039a007658d927df50808d..600e602c21a7fdf4cd411b1eb987bc376c88dfe9 100644 (file)
@@ -1,6 +1,6 @@
-diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
---- tcpproxy-1.1.orig/src/cfg_parser.c 1970-01-01 01:00:00.000000000 +0100
-+++ tcpproxy-1.1/src/cfg_parser.c      2014-02-24 04:05:11.087171984 +0100
+diff -Nur tcpproxy-1.2.orig/src/cfg_parser.c tcpproxy-1.2/src/cfg_parser.c
+--- tcpproxy-1.2.orig/src/cfg_parser.c 1970-01-01 01:00:00.000000000 +0100
++++ tcpproxy-1.2/src/cfg_parser.c      2015-05-17 18:10:54.933307372 +0200
 @@ -0,0 +1,1374 @@
 +
 +#line 1 "cfg_parser.rl"
@@ -13,7 +13,7 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 + *  endpoints and vice versa.
 + *
 + *
-+ *  Copyright (C) 2010-2013 Christian Pointner <equinox@spreadspace.org>
++ *  Copyright (C) 2010-2015 Christian Pointner <equinox@spreadspace.org>
 + *
 + *  This file is part of tcpproxy.
 + *
@@ -113,7 +113,7 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 +{
 +  int cs, ret = 0, cur_line = 1;
 +
-+
++  
 +#line 114 "cfg_parser.c"
 +static const int cfg_parser_start = 67;
 +static const int cfg_parser_first_final = 67;
@@ -123,11 +123,11 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 +
 +
 +#line 170 "cfg_parser.rl"
-+
++  
 +#line 124 "cfg_parser.c"
-+  {
-+  cs = cfg_parser_start;
-+  }
++      {
++      cs = cfg_parser_start;
++      }
 +
 +#line 171 "cfg_parser.rl"
 +
@@ -136,119 +136,119 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 +  init_listener_struct(&lst);
 +
 +  char* eof = pe;
-+
++  
 +#line 137 "cfg_parser.c"
-+  {
-+  if ( p == pe )
-+    goto _test_eof;
-+  goto _resume;
++      {
++      if ( p == pe )
++              goto _test_eof;
++      goto _resume;
 +
 +_again:
-+  switch ( cs ) {
-+    case 67: goto st67;
-+    case 0: goto st0;
-+    case 1: goto st1;
-+    case 2: goto st2;
-+    case 3: goto st3;
-+    case 4: goto st4;
-+    case 5: goto st5;
-+    case 6: goto st6;
-+    case 7: goto st7;
-+    case 8: goto st8;
-+    case 9: goto st9;
-+    case 10: goto st10;
-+    case 11: goto st11;
-+    case 12: goto st12;
-+    case 13: goto st13;
-+    case 14: goto st14;
-+    case 15: goto st15;
-+    case 16: goto st16;
-+    case 17: goto st17;
-+    case 18: goto st18;
-+    case 19: goto st19;
-+    case 20: goto st20;
-+    case 21: goto st21;
-+    case 22: goto st22;
-+    case 23: goto st23;
-+    case 24: goto st24;
-+    case 25: goto st25;
-+    case 26: goto st26;
-+    case 27: goto st27;
-+    case 28: goto st28;
-+    case 29: goto st29;
-+    case 30: goto st30;
-+    case 31: goto st31;
-+    case 32: goto st32;
-+    case 33: goto st33;
-+    case 34: goto st34;
-+    case 35: goto st35;
-+    case 36: goto st36;
-+    case 37: goto st37;
-+    case 38: goto st38;
-+    case 39: goto st39;
-+    case 40: goto st40;
-+    case 41: goto st41;
-+    case 42: goto st42;
-+    case 43: goto st43;
-+    case 44: goto st44;
-+    case 45: goto st45;
-+    case 46: goto st46;
-+    case 47: goto st47;
-+    case 48: goto st48;
-+    case 49: goto st49;
-+    case 50: goto st50;
-+    case 51: goto st51;
-+    case 52: goto st52;
-+    case 53: goto st53;
-+    case 54: goto st54;
-+    case 55: goto st55;
-+    case 56: goto st56;
-+    case 57: goto st57;
-+    case 58: goto st58;
-+    case 59: goto st59;
-+    case 60: goto st60;
-+    case 61: goto st61;
-+    case 62: goto st62;
-+    case 63: goto st63;
-+    case 64: goto st64;
-+    case 65: goto st65;
-+    case 66: goto st66;
-+  default: break;
-+  }
++      switch ( cs ) {
++              case 67: goto st67;
++              case 0: goto st0;
++              case 1: goto st1;
++              case 2: goto st2;
++              case 3: goto st3;
++              case 4: goto st4;
++              case 5: goto st5;
++              case 6: goto st6;
++              case 7: goto st7;
++              case 8: goto st8;
++              case 9: goto st9;
++              case 10: goto st10;
++              case 11: goto st11;
++              case 12: goto st12;
++              case 13: goto st13;
++              case 14: goto st14;
++              case 15: goto st15;
++              case 16: goto st16;
++              case 17: goto st17;
++              case 18: goto st18;
++              case 19: goto st19;
++              case 20: goto st20;
++              case 21: goto st21;
++              case 22: goto st22;
++              case 23: goto st23;
++              case 24: goto st24;
++              case 25: goto st25;
++              case 26: goto st26;
++              case 27: goto st27;
++              case 28: goto st28;
++              case 29: goto st29;
++              case 30: goto st30;
++              case 31: goto st31;
++              case 32: goto st32;
++              case 33: goto st33;
++              case 34: goto st34;
++              case 35: goto st35;
++              case 36: goto st36;
++              case 37: goto st37;
++              case 38: goto st38;
++              case 39: goto st39;
++              case 40: goto st40;
++              case 41: goto st41;
++              case 42: goto st42;
++              case 43: goto st43;
++              case 44: goto st44;
++              case 45: goto st45;
++              case 46: goto st46;
++              case 47: goto st47;
++              case 48: goto st48;
++              case 49: goto st49;
++              case 50: goto st50;
++              case 51: goto st51;
++              case 52: goto st52;
++              case 53: goto st53;
++              case 54: goto st54;
++              case 55: goto st55;
++              case 56: goto st56;
++              case 57: goto st57;
++              case 58: goto st58;
++              case 59: goto st59;
++              case 60: goto st60;
++              case 61: goto st61;
++              case 62: goto st62;
++              case 63: goto st63;
++              case 64: goto st64;
++              case 65: goto st65;
++              case 66: goto st66;
++      default: break;
++      }
 +
-+  if ( ++p == pe )
-+    goto _test_eof;
++      if ( ++p == pe )
++              goto _test_eof;
 +_resume:
-+  switch ( cs )
-+  {
++      switch ( cs )
++      {
 +tr1:
 +#line 127 "cfg_parser.rl"
-+  {cur_line++;}
-+  goto st67;
++      {cur_line++;}
++      goto st67;
 +tr90:
 +#line 114 "cfg_parser.rl"
-+  {
++      {
 +    ret = listeners_add(listener, lst.la_, lst.lrt_, lst.lp_, lst.ra_, lst.rrt_, lst.rp_, lst.sa_);
 +    clear_listener_struct(&lst);
 +  }
-+  goto st67;
++      goto st67;
 +st67:
-+  if ( ++p == pe )
-+    goto _test_eof67;
++      if ( ++p == pe )
++              goto _test_eof67;
 +case 67:
 +#line 236 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 10: goto tr1;
-+    case 32: goto st67;
-+    case 35: goto st1;
-+    case 108: goto st2;
-+  }
-+  if ( 9 <= (*p) && (*p) <= 13 )
-+    goto st67;
-+  goto tr2;
++      switch( (*p) ) {
++              case 10: goto tr1;
++              case 32: goto st67;
++              case 35: goto st1;
++              case 108: goto st2;
++      }
++      if ( 9 <= (*p) && (*p) <= 13 )
++              goto st67;
++      goto tr2;
 +tr2:
 +#line 118 "cfg_parser.rl"
-+  {
++      {
 +    if(p == eof)
 +      log_printf(ERROR, "config file syntax error: unexpected end of file");
 +    else
@@ -256,1051 +256,1051 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 +
 +    {cs = (cfg_parser_error); goto _again;}
 +  }
-+  goto st0;
++      goto st0;
 +#line 257 "cfg_parser.c"
 +st0:
 +cs = 0;
-+  goto _out;
++      goto _out;
 +st1:
-+  if ( ++p == pe )
-+    goto _test_eof1;
++      if ( ++p == pe )
++              goto _test_eof1;
 +case 1:
-+  if ( (*p) == 10 )
-+    goto tr1;
-+  goto st1;
++      if ( (*p) == 10 )
++              goto tr1;
++      goto st1;
 +st2:
-+  if ( ++p == pe )
-+    goto _test_eof2;
++      if ( ++p == pe )
++              goto _test_eof2;
 +case 2:
-+  if ( (*p) == 105 )
-+    goto st3;
-+  goto tr2;
++      if ( (*p) == 105 )
++              goto st3;
++      goto tr2;
 +st3:
-+  if ( ++p == pe )
-+    goto _test_eof3;
++      if ( ++p == pe )
++              goto _test_eof3;
 +case 3:
-+  if ( (*p) == 115 )
-+    goto st4;
-+  goto tr2;
++      if ( (*p) == 115 )
++              goto st4;
++      goto tr2;
 +st4:
-+  if ( ++p == pe )
-+    goto _test_eof4;
++      if ( ++p == pe )
++              goto _test_eof4;
 +case 4:
-+  if ( (*p) == 116 )
-+    goto st5;
-+  goto tr2;
++      if ( (*p) == 116 )
++              goto st5;
++      goto tr2;
 +st5:
-+  if ( ++p == pe )
-+    goto _test_eof5;
++      if ( ++p == pe )
++              goto _test_eof5;
 +case 5:
-+  if ( (*p) == 101 )
-+    goto st6;
-+  goto tr2;
++      if ( (*p) == 101 )
++              goto st6;
++      goto tr2;
 +st6:
-+  if ( ++p == pe )
-+    goto _test_eof6;
++      if ( ++p == pe )
++              goto _test_eof6;
 +case 6:
-+  if ( (*p) == 110 )
-+    goto st7;
-+  goto tr2;
++      if ( (*p) == 110 )
++              goto st7;
++      goto tr2;
 +st7:
-+  if ( ++p == pe )
-+    goto _test_eof7;
++      if ( ++p == pe )
++              goto _test_eof7;
 +case 7:
-+  switch( (*p) ) {
-+    case 9: goto st8;
-+    case 32: goto st8;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st8;
++              case 32: goto st8;
++      }
++      goto tr2;
 +st8:
-+  if ( ++p == pe )
-+    goto _test_eof8;
++      if ( ++p == pe )
++              goto _test_eof8;
 +case 8:
-+  switch( (*p) ) {
-+    case 9: goto st8;
-+    case 32: goto st8;
-+    case 42: goto st9;
-+    case 58: goto tr12;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto tr11;
-+    } else if ( (*p) >= 45 )
-+      goto tr10;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto tr10;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto tr10;
-+    } else
-+      goto tr11;
-+  } else
-+    goto tr11;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st8;
++              case 32: goto st8;
++              case 42: goto st9;
++              case 58: goto tr12;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto tr11;
++              } else if ( (*p) >= 45 )
++                      goto tr10;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto tr10;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto tr10;
++              } else
++                      goto tr11;
++      } else
++              goto tr11;
++      goto tr2;
 +st9:
-+  if ( ++p == pe )
-+    goto _test_eof9;
++      if ( ++p == pe )
++              goto _test_eof9;
 +case 9:
-+  switch( (*p) ) {
-+    case 9: goto st10;
-+    case 32: goto st10;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st10;
++              case 32: goto st10;
++      }
++      goto tr2;
 +tr91:
 +#line 105 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.la_), cpy_start, p); cpy_start = NULL; }
-+  goto st10;
++      { ret = owrt_string(&(lst.la_), cpy_start, p); cpy_start = NULL; }
++      goto st10;
 +st10:
-+  if ( ++p == pe )
-+    goto _test_eof10;
++      if ( ++p == pe )
++              goto _test_eof10;
 +case 10:
 +#line 357 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto st10;
-+    case 32: goto st10;
-+    case 45: goto tr14;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 57 )
-+      goto tr14;
-+  } else if ( (*p) > 90 ) {
-+    if ( 97 <= (*p) && (*p) <= 122 )
-+      goto tr14;
-+  } else
-+    goto tr14;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st10;
++              case 32: goto st10;
++              case 45: goto tr14;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 57 )
++                      goto tr14;
++      } else if ( (*p) > 90 ) {
++              if ( 97 <= (*p) && (*p) <= 122 )
++                      goto tr14;
++      } else
++              goto tr14;
++      goto tr2;
 +tr14:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st11;
++      { cpy_start = p; }
++      goto st11;
 +st11:
-+  if ( ++p == pe )
-+    goto _test_eof11;
++      if ( ++p == pe )
++              goto _test_eof11;
 +case 11:
 +#line 380 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 10: goto tr16;
-+    case 32: goto tr15;
-+    case 35: goto tr17;
-+    case 45: goto st11;
-+    case 123: goto tr19;
-+  }
-+  if ( (*p) < 48 ) {
-+    if ( 9 <= (*p) && (*p) <= 13 )
-+      goto tr15;
-+  } else if ( (*p) > 57 ) {
-+    if ( (*p) > 90 ) {
-+      if ( 97 <= (*p) && (*p) <= 122 )
-+        goto st11;
-+    } else if ( (*p) >= 65 )
-+      goto st11;
-+  } else
-+    goto st11;
-+  goto tr2;
++      switch( (*p) ) {
++              case 10: goto tr16;
++              case 32: goto tr15;
++              case 35: goto tr17;
++              case 45: goto st11;
++              case 123: goto tr19;
++      }
++      if ( (*p) < 48 ) {
++              if ( 9 <= (*p) && (*p) <= 13 )
++                      goto tr15;
++      } else if ( (*p) > 57 ) {
++              if ( (*p) > 90 ) {
++                      if ( 97 <= (*p) && (*p) <= 122 )
++                              goto st11;
++              } else if ( (*p) >= 65 )
++                      goto st11;
++      } else
++              goto st11;
++      goto tr2;
 +tr21:
 +#line 127 "cfg_parser.rl"
-+  {cur_line++;}
-+  goto st12;
++      {cur_line++;}
++      goto st12;
 +tr15:
 +#line 106 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
-+  goto st12;
++      { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
++      goto st12;
 +tr16:
 +#line 106 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
++      { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
 +#line 127 "cfg_parser.rl"
-+  {cur_line++;}
-+  goto st12;
++      {cur_line++;}
++      goto st12;
 +st12:
-+  if ( ++p == pe )
-+    goto _test_eof12;
++      if ( ++p == pe )
++              goto _test_eof12;
 +case 12:
 +#line 418 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 10: goto tr21;
-+    case 32: goto st12;
-+    case 35: goto st13;
-+    case 123: goto st14;
-+  }
-+  if ( 9 <= (*p) && (*p) <= 13 )
-+    goto st12;
-+  goto tr2;
++      switch( (*p) ) {
++              case 10: goto tr21;
++              case 32: goto st12;
++              case 35: goto st13;
++              case 123: goto st14;
++      }
++      if ( 9 <= (*p) && (*p) <= 13 )
++              goto st12;
++      goto tr2;
 +tr17:
 +#line 106 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
-+  goto st13;
++      { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
++      goto st13;
 +st13:
-+  if ( ++p == pe )
-+    goto _test_eof13;
++      if ( ++p == pe )
++              goto _test_eof13;
 +case 13:
 +#line 436 "cfg_parser.c"
-+  if ( (*p) == 10 )
-+    goto tr21;
-+  goto st13;
++      if ( (*p) == 10 )
++              goto tr21;
++      goto st13;
 +tr24:
 +#line 127 "cfg_parser.rl"
-+  {cur_line++;}
-+  goto st14;
++      {cur_line++;}
++      goto st14;
 +tr19:
 +#line 106 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
-+  goto st14;
++      { ret = owrt_string(&(lst.lp_), cpy_start, p); cpy_start = NULL; }
++      goto st14;
 +tr48:
 +#line 110 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.rp_), cpy_start, p); cpy_start = NULL; }
-+  goto st14;
++      { ret = owrt_string(&(lst.rp_), cpy_start, p); cpy_start = NULL; }
++      goto st14;
 +tr87:
 +#line 113 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.sa_), cpy_start, p); cpy_start = NULL; }
-+  goto st14;
++      { ret = owrt_string(&(lst.sa_), cpy_start, p); cpy_start = NULL; }
++      goto st14;
 +st14:
-+  if ( ++p == pe )
-+    goto _test_eof14;
++      if ( ++p == pe )
++              goto _test_eof14;
 +case 14:
 +#line 460 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 10: goto tr24;
-+    case 32: goto st14;
-+    case 35: goto st15;
-+    case 114: goto st16;
-+    case 115: goto st52;
-+    case 125: goto st63;
-+  }
-+  if ( 9 <= (*p) && (*p) <= 13 )
-+    goto st14;
-+  goto tr2;
++      switch( (*p) ) {
++              case 10: goto tr24;
++              case 32: goto st14;
++              case 35: goto st15;
++              case 114: goto st16;
++              case 115: goto st52;
++              case 125: goto st63;
++      }
++      if ( 9 <= (*p) && (*p) <= 13 )
++              goto st14;
++      goto tr2;
 +st15:
-+  if ( ++p == pe )
-+    goto _test_eof15;
++      if ( ++p == pe )
++              goto _test_eof15;
 +case 15:
-+  if ( (*p) == 10 )
-+    goto tr24;
-+  goto st15;
++      if ( (*p) == 10 )
++              goto tr24;
++      goto st15;
 +st16:
-+  if ( ++p == pe )
-+    goto _test_eof16;
++      if ( ++p == pe )
++              goto _test_eof16;
 +case 16:
-+  if ( (*p) == 101 )
-+    goto st17;
-+  goto tr2;
++      if ( (*p) == 101 )
++              goto st17;
++      goto tr2;
 +st17:
-+  if ( ++p == pe )
-+    goto _test_eof17;
++      if ( ++p == pe )
++              goto _test_eof17;
 +case 17:
-+  switch( (*p) ) {
-+    case 109: goto st18;
-+    case 115: goto st43;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 109: goto st18;
++              case 115: goto st43;
++      }
++      goto tr2;
 +st18:
-+  if ( ++p == pe )
-+    goto _test_eof18;
++      if ( ++p == pe )
++              goto _test_eof18;
 +case 18:
-+  if ( (*p) == 111 )
-+    goto st19;
-+  goto tr2;
++      if ( (*p) == 111 )
++              goto st19;
++      goto tr2;
 +st19:
-+  if ( ++p == pe )
-+    goto _test_eof19;
++      if ( ++p == pe )
++              goto _test_eof19;
 +case 19:
-+  if ( (*p) == 116 )
-+    goto st20;
-+  goto tr2;
++      if ( (*p) == 116 )
++              goto st20;
++      goto tr2;
 +st20:
-+  if ( ++p == pe )
-+    goto _test_eof20;
++      if ( ++p == pe )
++              goto _test_eof20;
 +case 20:
-+  if ( (*p) == 101 )
-+    goto st21;
-+  goto tr2;
++      if ( (*p) == 101 )
++              goto st21;
++      goto tr2;
 +st21:
-+  if ( ++p == pe )
-+    goto _test_eof21;
++      if ( ++p == pe )
++              goto _test_eof21;
 +case 21:
-+  switch( (*p) ) {
-+    case 9: goto st22;
-+    case 32: goto st22;
-+    case 45: goto st31;
-+    case 58: goto st23;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st22;
++              case 32: goto st22;
++              case 45: goto st31;
++              case 58: goto st23;
++      }
++      goto tr2;
 +st22:
-+  if ( ++p == pe )
-+    goto _test_eof22;
++      if ( ++p == pe )
++              goto _test_eof22;
 +case 22:
-+  switch( (*p) ) {
-+    case 9: goto st22;
-+    case 32: goto st22;
-+    case 58: goto st23;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st22;
++              case 32: goto st22;
++              case 58: goto st23;
++      }
++      goto tr2;
 +st23:
-+  if ( ++p == pe )
-+    goto _test_eof23;
++      if ( ++p == pe )
++              goto _test_eof23;
 +case 23:
-+  switch( (*p) ) {
-+    case 9: goto st24;
-+    case 32: goto st24;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st24;
++              case 32: goto st24;
++      }
++      goto tr2;
 +st24:
-+  if ( ++p == pe )
-+    goto _test_eof24;
++      if ( ++p == pe )
++              goto _test_eof24;
 +case 24:
-+  switch( (*p) ) {
-+    case 9: goto st24;
-+    case 32: goto st24;
-+    case 58: goto tr41;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto tr40;
-+    } else if ( (*p) >= 45 )
-+      goto tr39;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto tr39;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto tr39;
-+    } else
-+      goto tr40;
-+  } else
-+    goto tr40;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st24;
++              case 32: goto st24;
++              case 58: goto tr41;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto tr40;
++              } else if ( (*p) >= 45 )
++                      goto tr39;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto tr39;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto tr39;
++              } else
++                      goto tr40;
++      } else
++              goto tr40;
++      goto tr2;
 +tr39:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st25;
++      { cpy_start = p; }
++      goto st25;
 +st25:
-+  if ( ++p == pe )
-+    goto _test_eof25;
++      if ( ++p == pe )
++              goto _test_eof25;
 +case 25:
 +#line 581 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr42;
-+    case 32: goto tr42;
-+  }
-+  if ( (*p) < 48 ) {
-+    if ( 45 <= (*p) && (*p) <= 46 )
-+      goto st25;
-+  } else if ( (*p) > 57 ) {
-+    if ( (*p) > 90 ) {
-+      if ( 97 <= (*p) && (*p) <= 122 )
-+        goto st25;
-+    } else if ( (*p) >= 65 )
-+      goto st25;
-+  } else
-+    goto st25;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr42;
++              case 32: goto tr42;
++      }
++      if ( (*p) < 48 ) {
++              if ( 45 <= (*p) && (*p) <= 46 )
++                      goto st25;
++      } else if ( (*p) > 57 ) {
++              if ( (*p) > 90 ) {
++                      if ( 97 <= (*p) && (*p) <= 122 )
++                              goto st25;
++              } else if ( (*p) >= 65 )
++                      goto st25;
++      } else
++              goto st25;
++      goto tr2;
 +tr42:
 +#line 109 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.ra_), cpy_start, p); cpy_start = NULL; }
-+  goto st26;
++      { ret = owrt_string(&(lst.ra_), cpy_start, p); cpy_start = NULL; }
++      goto st26;
 +st26:
-+  if ( ++p == pe )
-+    goto _test_eof26;
++      if ( ++p == pe )
++              goto _test_eof26;
 +case 26:
 +#line 606 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto st26;
-+    case 32: goto st26;
-+    case 45: goto tr45;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 57 )
-+      goto tr45;
-+  } else if ( (*p) > 90 ) {
-+    if ( 97 <= (*p) && (*p) <= 122 )
-+      goto tr45;
-+  } else
-+    goto tr45;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st26;
++              case 32: goto st26;
++              case 45: goto tr45;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 57 )
++                      goto tr45;
++      } else if ( (*p) > 90 ) {
++              if ( 97 <= (*p) && (*p) <= 122 )
++                      goto tr45;
++      } else
++              goto tr45;
++      goto tr2;
 +tr45:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st27;
++      { cpy_start = p; }
++      goto st27;
 +st27:
-+  if ( ++p == pe )
-+    goto _test_eof27;
++      if ( ++p == pe )
++              goto _test_eof27;
 +case 27:
 +#line 629 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr46;
-+    case 32: goto tr46;
-+    case 45: goto st27;
-+    case 59: goto tr48;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 57 )
-+      goto st27;
-+  } else if ( (*p) > 90 ) {
-+    if ( 97 <= (*p) && (*p) <= 122 )
-+      goto st27;
-+  } else
-+    goto st27;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr46;
++              case 32: goto tr46;
++              case 45: goto st27;
++              case 59: goto tr48;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 57 )
++                      goto st27;
++      } else if ( (*p) > 90 ) {
++              if ( 97 <= (*p) && (*p) <= 122 )
++                      goto st27;
++      } else
++              goto st27;
++      goto tr2;
 +tr46:
 +#line 110 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.rp_), cpy_start, p); cpy_start = NULL; }
-+  goto st28;
++      { ret = owrt_string(&(lst.rp_), cpy_start, p); cpy_start = NULL; }
++      goto st28;
 +tr63:
 +#line 111 "cfg_parser.rl"
-+  { lst.rrt_ = IPV4_ONLY; }
-+  goto st28;
++      { lst.rrt_ = IPV4_ONLY; }
++      goto st28;
 +tr64:
 +#line 112 "cfg_parser.rl"
-+  { lst.rrt_ = IPV6_ONLY; }
-+  goto st28;
++      { lst.rrt_ = IPV6_ONLY; }
++      goto st28;
 +tr73:
 +#line 107 "cfg_parser.rl"
-+  { lst.lrt_ = IPV4_ONLY; }
-+  goto st28;
++      { lst.lrt_ = IPV4_ONLY; }
++      goto st28;
 +tr74:
 +#line 108 "cfg_parser.rl"
-+  { lst.lrt_ = IPV6_ONLY; }
-+  goto st28;
++      { lst.lrt_ = IPV6_ONLY; }
++      goto st28;
 +tr85:
 +#line 113 "cfg_parser.rl"
-+  { ret = owrt_string(&(lst.sa_), cpy_start, p); cpy_start = NULL; }
-+  goto st28;
++      { ret = owrt_string(&(lst.sa_), cpy_start, p); cpy_start = NULL; }
++      goto st28;
 +st28:
-+  if ( ++p == pe )
-+    goto _test_eof28;
++      if ( ++p == pe )
++              goto _test_eof28;
 +case 28:
 +#line 673 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto st28;
-+    case 32: goto st28;
-+    case 59: goto st14;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st28;
++              case 32: goto st28;
++              case 59: goto st14;
++      }
++      goto tr2;
 +tr40:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st29;
++      { cpy_start = p; }
++      goto st29;
 +st29:
-+  if ( ++p == pe )
-+    goto _test_eof29;
++      if ( ++p == pe )
++              goto _test_eof29;
 +case 29:
 +#line 688 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr42;
-+    case 32: goto tr42;
-+    case 58: goto st30;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto st29;
-+    } else if ( (*p) >= 45 )
-+      goto st25;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto st25;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto st25;
-+    } else
-+      goto st29;
-+  } else
-+    goto st29;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr42;
++              case 32: goto tr42;
++              case 58: goto st30;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto st29;
++              } else if ( (*p) >= 45 )
++                      goto st25;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto st25;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto st25;
++              } else
++                      goto st29;
++      } else
++              goto st29;
++      goto tr2;
 +tr41:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st30;
++      { cpy_start = p; }
++      goto st30;
 +st30:
-+  if ( ++p == pe )
-+    goto _test_eof30;
++      if ( ++p == pe )
++              goto _test_eof30;
 +case 30:
 +#line 720 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr42;
-+    case 32: goto tr42;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 58 )
-+      goto st30;
-+  } else if ( (*p) > 70 ) {
-+    if ( 97 <= (*p) && (*p) <= 102 )
-+      goto st30;
-+  } else
-+    goto st30;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr42;
++              case 32: goto tr42;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 58 )
++                      goto st30;
++      } else if ( (*p) > 70 ) {
++              if ( 97 <= (*p) && (*p) <= 102 )
++                      goto st30;
++      } else
++              goto st30;
++      goto tr2;
 +st31:
-+  if ( ++p == pe )
-+    goto _test_eof31;
++      if ( ++p == pe )
++              goto _test_eof31;
 +case 31:
-+  if ( (*p) == 114 )
-+    goto st32;
-+  goto tr2;
++      if ( (*p) == 114 )
++              goto st32;
++      goto tr2;
 +st32:
-+  if ( ++p == pe )
-+    goto _test_eof32;
++      if ( ++p == pe )
++              goto _test_eof32;
 +case 32:
-+  if ( (*p) == 101 )
-+    goto st33;
-+  goto tr2;
++      if ( (*p) == 101 )
++              goto st33;
++      goto tr2;
 +st33:
-+  if ( ++p == pe )
-+    goto _test_eof33;
++      if ( ++p == pe )
++              goto _test_eof33;
 +case 33:
-+  if ( (*p) == 115 )
-+    goto st34;
-+  goto tr2;
++      if ( (*p) == 115 )
++              goto st34;
++      goto tr2;
 +st34:
-+  if ( ++p == pe )
-+    goto _test_eof34;
++      if ( ++p == pe )
++              goto _test_eof34;
 +case 34:
-+  if ( (*p) == 111 )
-+    goto st35;
-+  goto tr2;
++      if ( (*p) == 111 )
++              goto st35;
++      goto tr2;
 +st35:
-+  if ( ++p == pe )
-+    goto _test_eof35;
++      if ( ++p == pe )
++              goto _test_eof35;
 +case 35:
-+  if ( (*p) == 108 )
-+    goto st36;
-+  goto tr2;
++      if ( (*p) == 108 )
++              goto st36;
++      goto tr2;
 +st36:
-+  if ( ++p == pe )
-+    goto _test_eof36;
++      if ( ++p == pe )
++              goto _test_eof36;
 +case 36:
-+  if ( (*p) == 118 )
-+    goto st37;
-+  goto tr2;
++      if ( (*p) == 118 )
++              goto st37;
++      goto tr2;
 +st37:
-+  if ( ++p == pe )
-+    goto _test_eof37;
++      if ( ++p == pe )
++              goto _test_eof37;
 +case 37:
-+  switch( (*p) ) {
-+    case 9: goto st37;
-+    case 32: goto st37;
-+    case 58: goto st38;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st37;
++              case 32: goto st37;
++              case 58: goto st38;
++      }
++      goto tr2;
 +st38:
-+  if ( ++p == pe )
-+    goto _test_eof38;
++      if ( ++p == pe )
++              goto _test_eof38;
 +case 38:
-+  switch( (*p) ) {
-+    case 9: goto st39;
-+    case 32: goto st39;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st39;
++              case 32: goto st39;
++      }
++      goto tr2;
 +st39:
-+  if ( ++p == pe )
-+    goto _test_eof39;
++      if ( ++p == pe )
++              goto _test_eof39;
 +case 39:
-+  switch( (*p) ) {
-+    case 9: goto st39;
-+    case 32: goto st39;
-+    case 73: goto st40;
-+    case 105: goto st40;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st39;
++              case 32: goto st39;
++              case 73: goto st40;
++              case 105: goto st40;
++      }
++      goto tr2;
 +st40:
-+  if ( ++p == pe )
-+    goto _test_eof40;
++      if ( ++p == pe )
++              goto _test_eof40;
 +case 40:
-+  switch( (*p) ) {
-+    case 80: goto st41;
-+    case 112: goto st41;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 80: goto st41;
++              case 112: goto st41;
++      }
++      goto tr2;
 +st41:
-+  if ( ++p == pe )
-+    goto _test_eof41;
++      if ( ++p == pe )
++              goto _test_eof41;
 +case 41:
-+  switch( (*p) ) {
-+    case 86: goto st42;
-+    case 118: goto st42;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 86: goto st42;
++              case 118: goto st42;
++      }
++      goto tr2;
 +st42:
-+  if ( ++p == pe )
-+    goto _test_eof42;
++      if ( ++p == pe )
++              goto _test_eof42;
 +case 42:
-+  switch( (*p) ) {
-+    case 52: goto tr63;
-+    case 54: goto tr64;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 52: goto tr63;
++              case 54: goto tr64;
++      }
++      goto tr2;
 +st43:
-+  if ( ++p == pe )
-+    goto _test_eof43;
++      if ( ++p == pe )
++              goto _test_eof43;
 +case 43:
-+  if ( (*p) == 111 )
-+    goto st44;
-+  goto tr2;
++      if ( (*p) == 111 )
++              goto st44;
++      goto tr2;
 +st44:
-+  if ( ++p == pe )
-+    goto _test_eof44;
++      if ( ++p == pe )
++              goto _test_eof44;
 +case 44:
-+  if ( (*p) == 108 )
-+    goto st45;
-+  goto tr2;
++      if ( (*p) == 108 )
++              goto st45;
++      goto tr2;
 +st45:
-+  if ( ++p == pe )
-+    goto _test_eof45;
++      if ( ++p == pe )
++              goto _test_eof45;
 +case 45:
-+  if ( (*p) == 118 )
-+    goto st46;
-+  goto tr2;
++      if ( (*p) == 118 )
++              goto st46;
++      goto tr2;
 +st46:
-+  if ( ++p == pe )
-+    goto _test_eof46;
++      if ( ++p == pe )
++              goto _test_eof46;
 +case 46:
-+  switch( (*p) ) {
-+    case 9: goto st46;
-+    case 32: goto st46;
-+    case 58: goto st47;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st46;
++              case 32: goto st46;
++              case 58: goto st47;
++      }
++      goto tr2;
 +st47:
-+  if ( ++p == pe )
-+    goto _test_eof47;
++      if ( ++p == pe )
++              goto _test_eof47;
 +case 47:
-+  switch( (*p) ) {
-+    case 9: goto st48;
-+    case 32: goto st48;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st48;
++              case 32: goto st48;
++      }
++      goto tr2;
 +st48:
-+  if ( ++p == pe )
-+    goto _test_eof48;
++      if ( ++p == pe )
++              goto _test_eof48;
 +case 48:
-+  switch( (*p) ) {
-+    case 9: goto st48;
-+    case 32: goto st48;
-+    case 73: goto st49;
-+    case 105: goto st49;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st48;
++              case 32: goto st48;
++              case 73: goto st49;
++              case 105: goto st49;
++      }
++      goto tr2;
 +st49:
-+  if ( ++p == pe )
-+    goto _test_eof49;
++      if ( ++p == pe )
++              goto _test_eof49;
 +case 49:
-+  switch( (*p) ) {
-+    case 80: goto st50;
-+    case 112: goto st50;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 80: goto st50;
++              case 112: goto st50;
++      }
++      goto tr2;
 +st50:
-+  if ( ++p == pe )
-+    goto _test_eof50;
++      if ( ++p == pe )
++              goto _test_eof50;
 +case 50:
-+  switch( (*p) ) {
-+    case 86: goto st51;
-+    case 118: goto st51;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 86: goto st51;
++              case 118: goto st51;
++      }
++      goto tr2;
 +st51:
-+  if ( ++p == pe )
-+    goto _test_eof51;
++      if ( ++p == pe )
++              goto _test_eof51;
 +case 51:
-+  switch( (*p) ) {
-+    case 52: goto tr73;
-+    case 54: goto tr74;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 52: goto tr73;
++              case 54: goto tr74;
++      }
++      goto tr2;
 +st52:
-+  if ( ++p == pe )
-+    goto _test_eof52;
++      if ( ++p == pe )
++              goto _test_eof52;
 +case 52:
-+  if ( (*p) == 111 )
-+    goto st53;
-+  goto tr2;
++      if ( (*p) == 111 )
++              goto st53;
++      goto tr2;
 +st53:
-+  if ( ++p == pe )
-+    goto _test_eof53;
++      if ( ++p == pe )
++              goto _test_eof53;
 +case 53:
-+  if ( (*p) == 117 )
-+    goto st54;
-+  goto tr2;
++      if ( (*p) == 117 )
++              goto st54;
++      goto tr2;
 +st54:
-+  if ( ++p == pe )
-+    goto _test_eof54;
++      if ( ++p == pe )
++              goto _test_eof54;
 +case 54:
-+  if ( (*p) == 114 )
-+    goto st55;
-+  goto tr2;
++      if ( (*p) == 114 )
++              goto st55;
++      goto tr2;
 +st55:
-+  if ( ++p == pe )
-+    goto _test_eof55;
++      if ( ++p == pe )
++              goto _test_eof55;
 +case 55:
-+  if ( (*p) == 99 )
-+    goto st56;
-+  goto tr2;
++      if ( (*p) == 99 )
++              goto st56;
++      goto tr2;
 +st56:
-+  if ( ++p == pe )
-+    goto _test_eof56;
++      if ( ++p == pe )
++              goto _test_eof56;
 +case 56:
-+  if ( (*p) == 101 )
-+    goto st57;
-+  goto tr2;
++      if ( (*p) == 101 )
++              goto st57;
++      goto tr2;
 +st57:
-+  if ( ++p == pe )
-+    goto _test_eof57;
++      if ( ++p == pe )
++              goto _test_eof57;
 +case 57:
-+  switch( (*p) ) {
-+    case 9: goto st57;
-+    case 32: goto st57;
-+    case 58: goto st58;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st57;
++              case 32: goto st57;
++              case 58: goto st58;
++      }
++      goto tr2;
 +st58:
-+  if ( ++p == pe )
-+    goto _test_eof58;
++      if ( ++p == pe )
++              goto _test_eof58;
 +case 58:
-+  switch( (*p) ) {
-+    case 9: goto st59;
-+    case 32: goto st59;
-+  }
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st59;
++              case 32: goto st59;
++      }
++      goto tr2;
 +st59:
-+  if ( ++p == pe )
-+    goto _test_eof59;
++      if ( ++p == pe )
++              goto _test_eof59;
 +case 59:
-+  switch( (*p) ) {
-+    case 9: goto st59;
-+    case 32: goto st59;
-+    case 58: goto tr84;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto tr83;
-+    } else if ( (*p) >= 45 )
-+      goto tr82;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto tr82;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto tr82;
-+    } else
-+      goto tr83;
-+  } else
-+    goto tr83;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto st59;
++              case 32: goto st59;
++              case 58: goto tr84;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto tr83;
++              } else if ( (*p) >= 45 )
++                      goto tr82;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto tr82;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto tr82;
++              } else
++                      goto tr83;
++      } else
++              goto tr83;
++      goto tr2;
 +tr82:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st60;
++      { cpy_start = p; }
++      goto st60;
 +st60:
-+  if ( ++p == pe )
-+    goto _test_eof60;
++      if ( ++p == pe )
++              goto _test_eof60;
 +case 60:
 +#line 1000 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr85;
-+    case 32: goto tr85;
-+    case 59: goto tr87;
-+  }
-+  if ( (*p) < 48 ) {
-+    if ( 45 <= (*p) && (*p) <= 46 )
-+      goto st60;
-+  } else if ( (*p) > 57 ) {
-+    if ( (*p) > 90 ) {
-+      if ( 97 <= (*p) && (*p) <= 122 )
-+        goto st60;
-+    } else if ( (*p) >= 65 )
-+      goto st60;
-+  } else
-+    goto st60;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr85;
++              case 32: goto tr85;
++              case 59: goto tr87;
++      }
++      if ( (*p) < 48 ) {
++              if ( 45 <= (*p) && (*p) <= 46 )
++                      goto st60;
++      } else if ( (*p) > 57 ) {
++              if ( (*p) > 90 ) {
++                      if ( 97 <= (*p) && (*p) <= 122 )
++                              goto st60;
++              } else if ( (*p) >= 65 )
++                      goto st60;
++      } else
++              goto st60;
++      goto tr2;
 +tr83:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st61;
++      { cpy_start = p; }
++      goto st61;
 +st61:
-+  if ( ++p == pe )
-+    goto _test_eof61;
++      if ( ++p == pe )
++              goto _test_eof61;
 +case 61:
 +#line 1026 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr85;
-+    case 32: goto tr85;
-+    case 58: goto st62;
-+    case 59: goto tr87;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto st61;
-+    } else if ( (*p) >= 45 )
-+      goto st60;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto st60;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto st60;
-+    } else
-+      goto st61;
-+  } else
-+    goto st61;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr85;
++              case 32: goto tr85;
++              case 58: goto st62;
++              case 59: goto tr87;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto st61;
++              } else if ( (*p) >= 45 )
++                      goto st60;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto st60;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto st60;
++              } else
++                      goto st61;
++      } else
++              goto st61;
++      goto tr2;
 +tr84:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st62;
++      { cpy_start = p; }
++      goto st62;
 +st62:
-+  if ( ++p == pe )
-+    goto _test_eof62;
++      if ( ++p == pe )
++              goto _test_eof62;
 +case 62:
 +#line 1059 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr85;
-+    case 32: goto tr85;
-+    case 59: goto tr87;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 58 )
-+      goto st62;
-+  } else if ( (*p) > 70 ) {
-+    if ( 97 <= (*p) && (*p) <= 102 )
-+      goto st62;
-+  } else
-+    goto st62;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr85;
++              case 32: goto tr85;
++              case 59: goto tr87;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 58 )
++                      goto st62;
++      } else if ( (*p) > 70 ) {
++              if ( 97 <= (*p) && (*p) <= 102 )
++                      goto st62;
++      } else
++              goto st62;
++      goto tr2;
 +st63:
-+  if ( ++p == pe )
-+    goto _test_eof63;
++      if ( ++p == pe )
++              goto _test_eof63;
 +case 63:
-+  if ( (*p) == 59 )
-+    goto tr90;
-+  goto tr2;
++      if ( (*p) == 59 )
++              goto tr90;
++      goto tr2;
 +tr10:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st64;
++      { cpy_start = p; }
++      goto st64;
 +st64:
-+  if ( ++p == pe )
-+    goto _test_eof64;
++      if ( ++p == pe )
++              goto _test_eof64;
 +case 64:
 +#line 1089 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr91;
-+    case 32: goto tr91;
-+  }
-+  if ( (*p) < 48 ) {
-+    if ( 45 <= (*p) && (*p) <= 46 )
-+      goto st64;
-+  } else if ( (*p) > 57 ) {
-+    if ( (*p) > 90 ) {
-+      if ( 97 <= (*p) && (*p) <= 122 )
-+        goto st64;
-+    } else if ( (*p) >= 65 )
-+      goto st64;
-+  } else
-+    goto st64;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr91;
++              case 32: goto tr91;
++      }
++      if ( (*p) < 48 ) {
++              if ( 45 <= (*p) && (*p) <= 46 )
++                      goto st64;
++      } else if ( (*p) > 57 ) {
++              if ( (*p) > 90 ) {
++                      if ( 97 <= (*p) && (*p) <= 122 )
++                              goto st64;
++              } else if ( (*p) >= 65 )
++                      goto st64;
++      } else
++              goto st64;
++      goto tr2;
 +tr11:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st65;
++      { cpy_start = p; }
++      goto st65;
 +st65:
-+  if ( ++p == pe )
-+    goto _test_eof65;
++      if ( ++p == pe )
++              goto _test_eof65;
 +case 65:
 +#line 1114 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr91;
-+    case 32: goto tr91;
-+    case 58: goto st66;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( (*p) > 46 ) {
-+      if ( 48 <= (*p) && (*p) <= 57 )
-+        goto st65;
-+    } else if ( (*p) >= 45 )
-+      goto st64;
-+  } else if ( (*p) > 70 ) {
-+    if ( (*p) < 97 ) {
-+      if ( 71 <= (*p) && (*p) <= 90 )
-+        goto st64;
-+    } else if ( (*p) > 102 ) {
-+      if ( 103 <= (*p) && (*p) <= 122 )
-+        goto st64;
-+    } else
-+      goto st65;
-+  } else
-+    goto st65;
-+  goto tr2;
++      switch( (*p) ) {
++              case 9: goto tr91;
++              case 32: goto tr91;
++              case 58: goto st66;
++      }
++      if ( (*p) < 65 ) {
++              if ( (*p) > 46 ) {
++                      if ( 48 <= (*p) && (*p) <= 57 )
++                              goto st65;
++              } else if ( (*p) >= 45 )
++                      goto st64;
++      } else if ( (*p) > 70 ) {
++              if ( (*p) < 97 ) {
++                      if ( 71 <= (*p) && (*p) <= 90 )
++                              goto st64;
++              } else if ( (*p) > 102 ) {
++                      if ( 103 <= (*p) && (*p) <= 122 )
++                              goto st64;
++              } else
++                      goto st65;
++      } else
++              goto st65;
++      goto tr2;
 +tr12:
 +#line 104 "cfg_parser.rl"
-+  { cpy_start = p; }
-+  goto st66;
++      { cpy_start = p; }
++      goto st66;
 +st66:
-+  if ( ++p == pe )
-+    goto _test_eof66;
++      if ( ++p == pe )
++              goto _test_eof66;
 +case 66:
 +#line 1146 "cfg_parser.c"
-+  switch( (*p) ) {
-+    case 9: goto tr91;
-+    case 32: goto tr91;
-+  }
-+  if ( (*p) < 65 ) {
-+    if ( 48 <= (*p) && (*p) <= 58 )
-+      goto st66;
-+  } else if ( (*p) > 70 ) {
-+    if ( 97 <= (*p) && (*p) <= 102 )
-+      goto st66;
-+  } else
-+    goto st66;
-+  goto tr2;
-+  }
-+  _test_eof67: cs = 67; goto _test_eof;
-+  _test_eof1: cs = 1; goto _test_eof;
-+  _test_eof2: cs = 2; goto _test_eof;
-+  _test_eof3: cs = 3; goto _test_eof;
-+  _test_eof4: cs = 4; goto _test_eof;
-+  _test_eof5: cs = 5; goto _test_eof;
-+  _test_eof6: cs = 6; goto _test_eof;
-+  _test_eof7: cs = 7; goto _test_eof;
-+  _test_eof8: cs = 8; goto _test_eof;
-+  _test_eof9: cs = 9; goto _test_eof;
-+  _test_eof10: cs = 10; goto _test_eof;
-+  _test_eof11: cs = 11; goto _test_eof;
-+  _test_eof12: cs = 12; goto _test_eof;
-+  _test_eof13: cs = 13; goto _test_eof;
-+  _test_eof14: cs = 14; goto _test_eof;
-+  _test_eof15: cs = 15; goto _test_eof;
-+  _test_eof16: cs = 16; goto _test_eof;
-+  _test_eof17: cs = 17; goto _test_eof;
-+  _test_eof18: cs = 18; goto _test_eof;
-+  _test_eof19: cs = 19; goto _test_eof;
-+  _test_eof20: cs = 20; goto _test_eof;
-+  _test_eof21: cs = 21; goto _test_eof;
-+  _test_eof22: cs = 22; goto _test_eof;
-+  _test_eof23: cs = 23; goto _test_eof;
-+  _test_eof24: cs = 24; goto _test_eof;
-+  _test_eof25: cs = 25; goto _test_eof;
-+  _test_eof26: cs = 26; goto _test_eof;
-+  _test_eof27: cs = 27; goto _test_eof;
-+  _test_eof28: cs = 28; goto _test_eof;
-+  _test_eof29: cs = 29; goto _test_eof;
-+  _test_eof30: cs = 30; goto _test_eof;
-+  _test_eof31: cs = 31; goto _test_eof;
-+  _test_eof32: cs = 32; goto _test_eof;
-+  _test_eof33: cs = 33; goto _test_eof;
-+  _test_eof34: cs = 34; goto _test_eof;
-+  _test_eof35: cs = 35; goto _test_eof;
-+  _test_eof36: cs = 36; goto _test_eof;
-+  _test_eof37: cs = 37; goto _test_eof;
-+  _test_eof38: cs = 38; goto _test_eof;
-+  _test_eof39: cs = 39; goto _test_eof;
-+  _test_eof40: cs = 40; goto _test_eof;
-+  _test_eof41: cs = 41; goto _test_eof;
-+  _test_eof42: cs = 42; goto _test_eof;
-+  _test_eof43: cs = 43; goto _test_eof;
-+  _test_eof44: cs = 44; goto _test_eof;
-+  _test_eof45: cs = 45; goto _test_eof;
-+  _test_eof46: cs = 46; goto _test_eof;
-+  _test_eof47: cs = 47; goto _test_eof;
-+  _test_eof48: cs = 48; goto _test_eof;
-+  _test_eof49: cs = 49; goto _test_eof;
-+  _test_eof50: cs = 50; goto _test_eof;
-+  _test_eof51: cs = 51; goto _test_eof;
-+  _test_eof52: cs = 52; goto _test_eof;
-+  _test_eof53: cs = 53; goto _test_eof;
-+  _test_eof54: cs = 54; goto _test_eof;
-+  _test_eof55: cs = 55; goto _test_eof;
-+  _test_eof56: cs = 56; goto _test_eof;
-+  _test_eof57: cs = 57; goto _test_eof;
-+  _test_eof58: cs = 58; goto _test_eof;
-+  _test_eof59: cs = 59; goto _test_eof;
-+  _test_eof60: cs = 60; goto _test_eof;
-+  _test_eof61: cs = 61; goto _test_eof;
-+  _test_eof62: cs = 62; goto _test_eof;
-+  _test_eof63: cs = 63; goto _test_eof;
-+  _test_eof64: cs = 64; goto _test_eof;
-+  _test_eof65: cs = 65; goto _test_eof;
-+  _test_eof66: cs = 66; goto _test_eof;
++      switch( (*p) ) {
++              case 9: goto tr91;
++              case 32: goto tr91;
++      }
++      if ( (*p) < 65 ) {
++              if ( 48 <= (*p) && (*p) <= 58 )
++                      goto st66;
++      } else if ( (*p) > 70 ) {
++              if ( 97 <= (*p) && (*p) <= 102 )
++                      goto st66;
++      } else
++              goto st66;
++      goto tr2;
++      }
++      _test_eof67: cs = 67; goto _test_eof; 
++      _test_eof1: cs = 1; goto _test_eof; 
++      _test_eof2: cs = 2; goto _test_eof; 
++      _test_eof3: cs = 3; goto _test_eof; 
++      _test_eof4: cs = 4; goto _test_eof; 
++      _test_eof5: cs = 5; goto _test_eof; 
++      _test_eof6: cs = 6; goto _test_eof; 
++      _test_eof7: cs = 7; goto _test_eof; 
++      _test_eof8: cs = 8; goto _test_eof; 
++      _test_eof9: cs = 9; goto _test_eof; 
++      _test_eof10: cs = 10; goto _test_eof; 
++      _test_eof11: cs = 11; goto _test_eof; 
++      _test_eof12: cs = 12; goto _test_eof; 
++      _test_eof13: cs = 13; goto _test_eof; 
++      _test_eof14: cs = 14; goto _test_eof; 
++      _test_eof15: cs = 15; goto _test_eof; 
++      _test_eof16: cs = 16; goto _test_eof; 
++      _test_eof17: cs = 17; goto _test_eof; 
++      _test_eof18: cs = 18; goto _test_eof; 
++      _test_eof19: cs = 19; goto _test_eof; 
++      _test_eof20: cs = 20; goto _test_eof; 
++      _test_eof21: cs = 21; goto _test_eof; 
++      _test_eof22: cs = 22; goto _test_eof; 
++      _test_eof23: cs = 23; goto _test_eof; 
++      _test_eof24: cs = 24; goto _test_eof; 
++      _test_eof25: cs = 25; goto _test_eof; 
++      _test_eof26: cs = 26; goto _test_eof; 
++      _test_eof27: cs = 27; goto _test_eof; 
++      _test_eof28: cs = 28; goto _test_eof; 
++      _test_eof29: cs = 29; goto _test_eof; 
++      _test_eof30: cs = 30; goto _test_eof; 
++      _test_eof31: cs = 31; goto _test_eof; 
++      _test_eof32: cs = 32; goto _test_eof; 
++      _test_eof33: cs = 33; goto _test_eof; 
++      _test_eof34: cs = 34; goto _test_eof; 
++      _test_eof35: cs = 35; goto _test_eof; 
++      _test_eof36: cs = 36; goto _test_eof; 
++      _test_eof37: cs = 37; goto _test_eof; 
++      _test_eof38: cs = 38; goto _test_eof; 
++      _test_eof39: cs = 39; goto _test_eof; 
++      _test_eof40: cs = 40; goto _test_eof; 
++      _test_eof41: cs = 41; goto _test_eof; 
++      _test_eof42: cs = 42; goto _test_eof; 
++      _test_eof43: cs = 43; goto _test_eof; 
++      _test_eof44: cs = 44; goto _test_eof; 
++      _test_eof45: cs = 45; goto _test_eof; 
++      _test_eof46: cs = 46; goto _test_eof; 
++      _test_eof47: cs = 47; goto _test_eof; 
++      _test_eof48: cs = 48; goto _test_eof; 
++      _test_eof49: cs = 49; goto _test_eof; 
++      _test_eof50: cs = 50; goto _test_eof; 
++      _test_eof51: cs = 51; goto _test_eof; 
++      _test_eof52: cs = 52; goto _test_eof; 
++      _test_eof53: cs = 53; goto _test_eof; 
++      _test_eof54: cs = 54; goto _test_eof; 
++      _test_eof55: cs = 55; goto _test_eof; 
++      _test_eof56: cs = 56; goto _test_eof; 
++      _test_eof57: cs = 57; goto _test_eof; 
++      _test_eof58: cs = 58; goto _test_eof; 
++      _test_eof59: cs = 59; goto _test_eof; 
++      _test_eof60: cs = 60; goto _test_eof; 
++      _test_eof61: cs = 61; goto _test_eof; 
++      _test_eof62: cs = 62; goto _test_eof; 
++      _test_eof63: cs = 63; goto _test_eof; 
++      _test_eof64: cs = 64; goto _test_eof; 
++      _test_eof65: cs = 65; goto _test_eof; 
++      _test_eof66: cs = 66; goto _test_eof; 
 +
-+  _test_eof: {}
-+  if ( p == eof )
-+  {
-+  switch ( cs ) {
-+  case 1:
-+  case 2:
-+  case 3:
-+  case 4:
-+  case 5:
-+  case 6:
-+  case 7:
-+  case 8:
-+  case 9:
-+  case 10:
-+  case 11:
-+  case 12:
-+  case 13:
-+  case 14:
-+  case 15:
-+  case 16:
-+  case 17:
-+  case 18:
-+  case 19:
-+  case 20:
-+  case 21:
-+  case 22:
-+  case 23:
-+  case 24:
-+  case 25:
-+  case 26:
-+  case 27:
-+  case 28:
-+  case 29:
-+  case 30:
-+  case 31:
-+  case 32:
-+  case 33:
-+  case 34:
-+  case 35:
-+  case 36:
-+  case 37:
-+  case 38:
-+  case 39:
-+  case 40:
-+  case 41:
-+  case 42:
-+  case 43:
-+  case 44:
-+  case 45:
-+  case 46:
-+  case 47:
-+  case 48:
-+  case 49:
-+  case 50:
-+  case 51:
-+  case 52:
-+  case 53:
-+  case 54:
-+  case 55:
-+  case 56:
-+  case 57:
-+  case 58:
-+  case 59:
-+  case 60:
-+  case 61:
-+  case 62:
-+  case 63:
-+  case 64:
-+  case 65:
-+  case 66:
++      _test_eof: {}
++      if ( p == eof )
++      {
++      switch ( cs ) {
++      case 1: 
++      case 2: 
++      case 3: 
++      case 4: 
++      case 5: 
++      case 6: 
++      case 7: 
++      case 8: 
++      case 9: 
++      case 10: 
++      case 11: 
++      case 12: 
++      case 13: 
++      case 14: 
++      case 15: 
++      case 16: 
++      case 17: 
++      case 18: 
++      case 19: 
++      case 20: 
++      case 21: 
++      case 22: 
++      case 23: 
++      case 24: 
++      case 25: 
++      case 26: 
++      case 27: 
++      case 28: 
++      case 29: 
++      case 30: 
++      case 31: 
++      case 32: 
++      case 33: 
++      case 34: 
++      case 35: 
++      case 36: 
++      case 37: 
++      case 38: 
++      case 39: 
++      case 40: 
++      case 41: 
++      case 42: 
++      case 43: 
++      case 44: 
++      case 45: 
++      case 46: 
++      case 47: 
++      case 48: 
++      case 49: 
++      case 50: 
++      case 51: 
++      case 52: 
++      case 53: 
++      case 54: 
++      case 55: 
++      case 56: 
++      case 57: 
++      case 58: 
++      case 59: 
++      case 60: 
++      case 61: 
++      case 62: 
++      case 63: 
++      case 64: 
++      case 65: 
++      case 66: 
 +#line 118 "cfg_parser.rl"
-+  {
++      {
 +    if(p == eof)
 +      log_printf(ERROR, "config file syntax error: unexpected end of file");
 +    else
@@ -1308,13 +1308,13 @@ diff -Nur tcpproxy-1.1.orig/src/cfg_parser.c tcpproxy-1.1/src/cfg_parser.c
 +
 +    {cs = (cfg_parser_error); goto _again;}
 +  }
-+  break;
++      break;
 +#line 1309 "cfg_parser.c"
-+  }
-+  }
++      }
++      }
 +
-+  _out: {}
-+  }
++      _out: {}
++      }
 +
 +#line 178 "cfg_parser.rl"
 +
index ee8ebc91e5de157c3c7c2fe991b927d90a999016..8aa0df0eb78262bfd3514db8d1058c866a081e53 100644 (file)
@@ -10,6 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=usbip
 PKG_RELEASE:=4
+PKG_LICENSE:=GPL-2.0
 
 # Since kernel 2.6.39.1 userspace tools are inside the kernel tree
 # Package Automatic match version in kernel
index 4aee2bd9e2ced77ed640533a3880626c29c7e522..7a2e39e38c420fd77919d62b41beceba49bd4f87 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=LVM2
-PKG_VERSION:=2.02.119
-PKG_RELEASE:=2
+PKG_VERSION:=2.02.120
+PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2
-PKG_MD5SUM:=93d15d76ab78fbcec4721c4b44284bbb
+PKG_MD5SUM:=326df8542d3a2376da907e98a0888ccf
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
 
index 15c2e86505ddce61cd9ca6ab74f6cd1b25d28dbb..5605f0dd14207f8c35a163b9d3f54b1612b7249a 100644 (file)
@@ -1,8 +1,8 @@
-Index: LVM2.2.02.118/lib/commands/toolcontext.c
+Index: LVM2.2.02.120/lib/commands/toolcontext.c
 ===================================================================
---- LVM2.2.02.118.orig/lib/commands/toolcontext.c
-+++ LVM2.2.02.118/lib/commands/toolcontext.c
-@@ -1625,8 +1625,10 @@ struct cmd_context *create_toolcontext(u
+--- LVM2.2.02.120.orig/lib/commands/toolcontext.c
++++ LVM2.2.02.120/lib/commands/toolcontext.c
+@@ -1637,8 +1637,10 @@ struct cmd_context *create_toolcontext(u
                                       unsigned threaded)
  {
        struct cmd_context *cmd;
@@ -13,7 +13,7 @@ Index: LVM2.2.02.118/lib/commands/toolcontext.c
  
  #ifdef M_MMAP_MAX
        mallopt(M_MMAP_MAX, 0);
-@@ -1662,7 +1664,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1674,7 +1676,7 @@ struct cmd_context *create_toolcontext(u
        /* FIXME Make this configurable? */
        reset_lvm_errno(1);
  
@@ -22,7 +22,7 @@ Index: LVM2.2.02.118/lib/commands/toolcontext.c
        /* Set in/out stream buffering before glibc */
        if (set_buffering) {
                /* Allocate 2 buffers */
-@@ -2035,7 +2037,7 @@ void destroy_toolcontext(struct cmd_cont
+@@ -2047,7 +2049,7 @@ void destroy_toolcontext(struct cmd_cont
        if (cmd->libmem)
                dm_pool_destroy(cmd->libmem);
  
@@ -31,11 +31,11 @@ Index: LVM2.2.02.118/lib/commands/toolcontext.c
        if (cmd->linebuffer) {
                /* Reset stream buffering to defaults */
                if (is_valid_fd(STDIN_FILENO) &&
-Index: LVM2.2.02.118/tools/lvmcmdline.c
+Index: LVM2.2.02.120/tools/lvmcmdline.c
 ===================================================================
---- LVM2.2.02.118.orig/tools/lvmcmdline.c
-+++ LVM2.2.02.118/tools/lvmcmdline.c
-@@ -1602,6 +1602,7 @@ int lvm_split(char *str, int *argc, char
+--- LVM2.2.02.120.orig/tools/lvmcmdline.c
++++ LVM2.2.02.120/tools/lvmcmdline.c
+@@ -1606,6 +1606,7 @@ int lvm_split(char *str, int *argc, char
  /* Make sure we have always valid filedescriptors 0,1,2 */
  static int _check_standard_fds(void)
  {
@@ -43,7 +43,7 @@ Index: LVM2.2.02.118/tools/lvmcmdline.c
        int err = is_valid_fd(STDERR_FILENO);
  
        if (!is_valid_fd(STDIN_FILENO) &&
-@@ -1628,6 +1629,12 @@ static int _check_standard_fds(void)
+@@ -1632,6 +1633,12 @@ static int _check_standard_fds(void)
                       strerror(errno));
                return 0;
        }