pps-tools: moved to github
pps-tools: moved to github

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>



git-svn-id: svn://svn.openwrt.org/openwrt/packages@42632 3c298f89-4303-0410-b956-a3cf2f4a3e73

#  
# Copyright (C) 2008-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:=diffutils  
PKG_VERSION:=3.0  
PKG_RELEASE:=3  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=@GNU/diffutils  
PKG_MD5SUM:=684aaba1baab743a2a90e52162ff07da  
 
PKG_INSTALL:=1  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/diffutils  
SECTION:=devel  
CATEGORY:=Development  
DEPENDS:=+USE_EGLIBC:librt  
TITLE:=diffutils  
URL:=http://www.gnu.org/software/diffutils/  
endef  
 
define Package/diffutils/description  
The Diffutils package contains programs that show the differences between  
files or directories.  
endef  
 
CONFIGURE_VARS += \  
ac_cv_func_mempcpy=n \  
 
define Package/diffutils/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{sdiff,diff3,diff,cmp} $(1)/usr/bin/  
endef  
 
define Package/diffutils/preinst  
#!/bin/sh  
for x in sdiff diff3 diff cmp; do  
[ -L "$${IPKG_INSTROOT}/usr/bin/$$x" ] && rm -f "$${IPKG_INSTROOT}/usr/bin/$$x"  
done  
exit 0  
endef  
 
define Package/diffutils/postrm  
#!/bin/sh  
for x in sdiff diff3 diff cmp; do  
/bin/busybox $$x -h 2>&1 | grep -q BusyBox && ln -sf ../../bin/busybox /usr/bin/$$x  
done  
exit 0  
endef  
 
$(eval $(call BuildPackage,diffutils))  
 
file:a/lang/luasql/Makefile (deleted)
#  
# Copyright (C) 2010 OpenWrt.org  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=luasql  
PKG_VERSION:=2.1.1  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=http://luaforge.net/frs/download.php/2686/  
PKG_MD5SUM:=63bdd57de4b9d1be336ba112d8cb69eb  
 
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/luasql/Default  
SUBMENU:=Lua  
SECTION:=lang  
CATEGORY:=Languages  
TITLE:=Lua SQL binding  
URL:=http://www.keplerproject.org/luasql/  
DEPENDS:= +lua  
endef  
 
define Package/luasql/Default/description  
LuaSQL is a simple interface from Lua to a DBMS.  
endef  
 
 
define Package/luasql-mysql  
$(call Package/luasql/Default)  
TITLE+= for MySQL  
DEPENDS+= +libmysqlclient  
VARIANT:=mysql  
endef  
 
define Package/luasql-mysql/description  
$(call Package/luasql/Default/description)  
.  
This package contains the MySQL binding.  
endef  
 
 
define Package/luasql-pgsql  
$(call Package/luasql/Default)  
TITLE+= for PostgreSQL  
DEPENDS+= +libpq  
VARIANT:=postgres  
endef  
 
define Package/luasql-pgsql/description  
$(call Package/luasql/Default/description)  
.  
This package contains the PostgreSQL binding.  
endef  
 
 
define Package/luasql-sqlite3  
$(call Package/luasql/Default)  
TITLE+= for SQLite 3  
DEPENDS+= +libsqlite3  
VARIANT:=sqlite3  
endef  
 
define Package/luasql-sqlite3/description  
$(call Package/luasql/Default/description)  
.  
This package contains the SQLite 3 binding.  
endef  
 
 
TARGET_CFLAGS += $(FPIC) -std=gnu99  
TARGET_CPPFLAGS += -DLUA_USE_LINUX  
 
ifeq ($(BUILD_VARIANT),mysql)  
TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/mysql  
TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib/mysql -lmysqlclient -lz  
endif  
 
ifeq ($(BUILD_VARIANT),postgres)  
TARGET_LDFLAGS += -lpq  
endif  
 
ifeq ($(BUILD_VARIANT),sqlite3)  
TARGET_LDFLAGS += -lsqlite3 -lpthread  
endif  
 
define Build/Compile  
$(MAKE) -C $(PKG_BUILD_DIR) \  
T="$(BUILD_VARIANT)" \  
PREFIX="$(STAGING_DIR)/usr" \  
LUA_LIBDIR="$(STAGING_DIR)/usr/lib/lua" \  
DRIVER_INCS="$(TARGET_CPPFLAGS)" \  
DRIVER_LIBS="$(TARGET_LDFLAGS)" \  
CC="$(TARGET_CROSS)gcc" \  
CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \  
lib  
$(MAKE) -C $(PKG_BUILD_DIR) \  
T="$(BUILD_VARIANT)" \  
LUA_LIBDIR="$(PKG_INSTALL_DIR)/usr/lib/lua" \  
install  
endef  
 
define Build/Install/Default  
$(INSTALL_DIR) $(1)/usr/lib/lua/luasql  
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lua/luasql/*.so $(1)/usr/lib/lua/luasql/  
endef  
 
Package/luasql-mysql/install = $(Build/Install/Default)  
Package/luasql-pgsql/install = $(Build/Install/Default)  
Package/luasql-sqlite3/install = $(Build/Install/Default)  
 
$(eval $(call BuildPackage,luasql-mysql))  
$(eval $(call BuildPackage,luasql-pgsql))  
$(eval $(call BuildPackage,luasql-sqlite3))  
 
file:a/libs/libnatpmp/Makefile (deleted)
#  
# Copyright (C) 2011-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:=libnatpmp  
PKG_VERSION:=20110808  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=http://miniupnp.free.fr/files  
PKG_MD5SUM:=22a1225b890471a7750a9bf26eb863f7  
 
PKG_INSTALL:=1  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/libnatpmp/Default  
TITLE:=NAT Port Mapping Protocol (NAT-PMP)  
URL:=http://miniupnp.free.fr/libnatpmp.html  
endef  
 
define Package/libnatpmp/Default/description  
libnatpmp is an attempt to make a portable and fully compliant implementation  
of the protocol for the client side. It is based on non blocking sockets and  
all calls of the API are asynchronous. It is therefore very easy to integrate  
the NAT-PMP code to any event driven code.  
endef  
 
define Package/libnatpmp  
$(call Package/libnatpmp/Default)  
SECTION:=libs  
CATEGORY:=Libraries  
TITLE+= library  
endef  
 
define Package/libnatpmp/description  
$(call Package/libnatpmp/Default/description)  
This package contains the shared library.  
endef  
 
define Package/natpmpc  
$(call Package/libnatpmp/Default)  
SECTION:=net  
CATEGORY:=Network  
SUBMENU:=Firewall  
TITLE+= client  
DEPENDS:=+libnatpmp  
endef  
 
define Package/natpmpc/description  
$(call Package/libnatpmp/Default/description)  
This package contains the natpmp client.  
endef  
 
MAKE_FLAGS += \  
COPTS="$(TARGET_CFLAGS)" \  
PREFIX="$(PKG_INSTALL_DIR)" \  
OS="Linux"  
 
define Build/InstallDev  
$(INSTALL_DIR) $(1)/usr/include  
$(CP) $(PKG_INSTALL_DIR)/usr/include/natpmp.h $(1)/usr/include/  
$(INSTALL_DIR) $(1)/usr/lib  
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp*.{so*,a} $(1)/usr/lib/  
endef  
 
define Package/libnatpmp/install  
$(INSTALL_DIR) $(1)/usr/lib  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp.so.* $(1)/usr/lib/  
endef  
 
define Package/natpmpc/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/natpmpc $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,libnatpmp))  
$(eval $(call BuildPackage,natpmpc))  
 
--- a/Makefile  
+++ b/Makefile  
@@ -11,7 +11,8 @@ INSTALL = install  
# APIVERSION is used in soname  
APIVERSION = 1  
#LDFLAGS = -Wl,--no-undefined  
-CFLAGS = -O -fPIC -Wall -DENABLE_STRNATPMPERR  
+COPTS = -O  
+CFLAGS = $(COPTS) -fPIC -Wall -DENABLE_STRNATPMPERR  
 
LIBOBJS = natpmp.o getgateway.o  
 
 
file:a/libs/neon/Makefile (deleted)
#  
# Copyright (C) 2007-2011 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:=neon  
PKG_VERSION:=0.29.6  
PKG_RELEASE:=2  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=http://www.webdav.org/neon  
PKG_MD5SUM:=591e0c82e6979e7e615211b386b8f6bc  
 
PKG_FIXUP:=autoreconf  
PKG_INSTALL:=1  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/libneon  
SECTION:=libs  
CATEGORY:=Libraries  
TITLE:=HTTP and WebDAV client library  
URL:=http://www.webdav.org/neon/  
DEPENDS:=+libopenssl +libexpat  
endef  
 
TARGET_CFLAGS += $(FPIC)  
TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  
 
CONFIGURE_ARGS += \  
--enable-shared \  
--enable-static \  
--with-expat \  
--with-ssl="openssl" \  
--without-egd \  
--without-libproxy \  
 
CONFIGURE_VARS += \  
LDFLAGS="$$$$LDFLAGS -lcrypto -lssl"  
 
define Build/InstallDev  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/neon-config $(1)/usr/bin/  
$(INSTALL_DIR) $(1)/usr/include  
$(CP) $(PKG_INSTALL_DIR)/usr/include/neon $(1)/usr/include/  
$(INSTALL_DIR) $(1)/usr/lib  
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libneon.{a,so*} $(1)/usr/lib/  
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig  
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/neon.pc $(1)/usr/lib/pkgconfig/  
$(SED) 's,-I$$$${includedir}/,-I$(STAGING_DIR)/usr/include/,g' $(1)/usr/bin/neon-config  
$(SED) 's,-L$$$${libdir},,g' $(1)/usr/bin/neon-config  
endef  
 
define Package/libneon/install  
$(INSTALL_DIR) $(1)/usr/lib  
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libneon.so.* $(1)/usr/lib/  
endef  
 
$(eval $(call BuildPackage,libneon))  
 
--- /dev/null  
+++ b/Makefile.am  
@@ -0,0 +1,2 @@  
+SUBDIRS = .  
+ACLOCAL_AMFLAGS = -I macros  
 
file:a/net/lftp/Makefile (deleted)
#  
# Copyright (C) 2008-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:=lftp  
PKG_VERSION:=4.3.6  
PKG_RELEASE:=2  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz  
PKG_SOURCE_URL:=http://lftp.cybermirror.org \  
http://lftp.cybermirror.org/old  
PKG_MD5SUM:=ffcdbaec5d1416cb6dd754efd43fa61a  
 
PKG_INSTALL:=1  
 
include $(INCLUDE_DIR)/uclibc++.mk  
include $(INCLUDE_DIR)/package.mk  
 
define Package/lftp  
SUBMENU:=File Transfer  
SECTION:=net  
CATEGORY:=Network  
DEPENDS:=+libncurses +libopenssl +libreadline $(CXX_DEPENDS) +libexpat  
TITLE:=Sophisticated file transfer program  
URL:=http://lftp.yar.ru/  
endef  
 
define Package/lftp/description  
lftp is sophisticated file transfer program with command line interface. It  
supports FTP, HTTP, FISH, SFTP and FILE (local FS) protocols. GNU Readline  
library is used for input. BitTorrent protocol is supported as built-in  
`torrent' command.  
endef  
 
CONFIGURE_ARGS += \  
--without-libiconv-prefix \  
--without-libintl-prefix \  
--without-gnutls \  
--without-libresolv \  
--with-openssl="$(STAGING_DIR)/usr" \  
--disable-static  
 
CONFIGURE_VARS += \  
LIBS="-lz -lutil -lcurses -ldl" \  
i_cv_posix_fallocate_works=no  
 
MAKE_VARS += \  
LD="$(TARGET_CXX)"  
 
define Package/lftp/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lftp $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,lftp))  
 
--- a/lib/gettext.h  
+++ b/lib/gettext.h  
@@ -22,7 +22,6 @@  
#if ENABLE_NLS  
 
/* Get declarations of GNU message catalog functions. */  
-# include <libintl.h>  
 
/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by  
the gettext() and ngettext() macros. This is an alternative to calling  
@@ -54,7 +53,6 @@  
#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)  
# include <cstdlib>  
# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H  
-# include <libintl.h>  
# endif  
#endif  
 
 
file:a/net/nmap/Makefile (deleted)
#  
# Copyright (C) 2006-2014 OpenWrt.org  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
 
#TODO  
#  
# * uClibcpp not supported, performance +100x slower. libstdcpp is being used. https://bugs.busybox.net/show_bug.cgi?id=2545  
# * liblua is still not recognized/blindly accepted. Impossible to compile with support  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=nmap  
PKG_VERSION:=6.46  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2  
PKG_SOURCE_URL:=http://nmap.org/dist/  
PKG_MD5SUM:=5a36ad3a63d5b7ea5514f745a397436a  
 
PKG_INSTALL:=1  
 
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)  
 
include $(INCLUDE_DIR)/package.mk  
 
NMAP_DEPENDS:=+libpcap +libstdcpp  
NCAT_DEPENDS:=+libpcap  
NPING_DEPENDS:=+libpcap +libpthread +libstdcpp  
NDIFF_DEPENDS:=+python  
 
define Package/nmap/default  
SUBMENU:=NMAP Suite  
SECTION:=net  
CATEGORY:=Network  
URL:=http://nmap.org/  
endef  
 
define Package/nmap  
$(call Package/nmap/default)  
DEPENDS:=$(NMAP_DEPENDS)  
VARIANT:=nossl  
TITLE:=Utility for network exploration or security auditing  
endef  
 
define Package/nmap-ssl  
$(call Package/nmap/default)  
DEPENDS:=$(NMAP_DEPENDS) +libopenssl  
VARIANT:=ssl  
TITLE:=Nmap (with OpenSSL support)  
endef  
 
define Package/ncat  
$(call Package/nmap/default)  
DEPENDS:=$(NCAT_DEPENDS)  
VARIANT:=nossl  
TITLE:=Much-improved reimplementation of Netcat  
endef  
 
define Package/ncat-ssl  
$(call Package/nmap/default)  
DEPENDS:=$(NCAT_DEPENDS) +libopenssl  
VARIANT:=ssl  
TITLE:=Ncat (with OpenSSL support)  
endef  
 
define Package/nping  
$(call Package/nmap/default)  
DEPENDS:=$(NPING_DEPENDS)  
VARIANT:=nossl  
TITLE:=Network packet generation tool / ping utility  
endef  
 
define Package/ndiff  
$(call Package/nmap/default)  
DEPENDS:=$(NDIFF_DEPENDS)  
VARIANT:=nossl  
TITLE:=Utility to compare the results of Nmap scans  
endef  
 
CONFIGURE_ARGS += \  
--with-libdnet=included \  
--with-libpcre=included \  
--with-libpcap="$(STAGING_DIR)/usr" \  
--without-liblua  
 
CONFIGURE_VARS += CXXFLAGS="$$$$CXXFLAGS -fno-builtin"  
 
ifeq ($(BUILD_VARIANT),ssl)  
CONFIGURE_ARGS += --with-openssl="$(STAGING_DIR)/usr"  
else  
CONFIGURE_ARGS += --without-openssl  
endif  
 
define Package/nmap/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nmap $(1)/usr/bin/  
$(INSTALL_DIR) $(1)/usr/share/nmap  
$(CP) $(PKG_INSTALL_DIR)/usr/share/nmap/* $(1)/usr/share/nmap/  
endef  
 
define Package/nmap-ssl/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nmap $(1)/usr/bin/  
$(INSTALL_DIR) $(1)/usr/share/nmap  
$(CP) $(PKG_INSTALL_DIR)/usr/share/nmap/* $(1)/usr/share/nmap/  
endef  
 
define Package/ncat/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ncat $(1)/usr/bin/  
endef  
 
define Package/ncat-ssl/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ncat $(1)/usr/bin/  
$(INSTALL_DIR) $(1)/usr/share/ncat  
$(CP) $(PKG_INSTALL_DIR)/usr/share/ncat/ca-bundle.crt $(1)/usr/share/ncat/  
endef  
 
define Package/ndiff/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ndiff $(1)/usr/bin/  
endef  
 
define Package/nping/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nping $(1)/usr/bin/  
endef  
 
 
$(eval $(call BuildPackage,nmap))  
$(eval $(call BuildPackage,nmap-ssl))  
$(eval $(call BuildPackage,ncat))  
$(eval $(call BuildPackage,ncat-ssl))  
$(eval $(call BuildPackage,nping))  
$(eval $(call BuildPackage,ndiff))  
 
#  
# Copyright (C) 2011 segal.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=ntripcaster  
PKG_VERSION:=0.1.5  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION).zip  
PKG_SOURCE_URL:=http://igs.bkg.bund.de/root_ftp/NTRIP/software/  
PKG_MD5SUM:=8c85a6c31d8c5cdf2638fe103207a1fd  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/ntripcaster  
SECTION:=net  
CATEGORY:=Network  
SUBMENU:=NTRIP  
TITLE:=Standard Ntrip Broadcaster  
URL:=http://igs.bkg.bund.de/ntrip/download  
DEPENDS:=+libpthread  
endef  
 
define Package/ntripcaster/description  
BKG Standard Ntrip Broadcaster  
endef  
 
define Build/Prepare  
mkdir -p $(PKG_BUILD_DIR)  
unzip $(DL_DIR)/$(PKG_SOURCE) -d $(PKG_BUILD_DIR)  
mv $(PKG_BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)/* $(PKG_BUILD_DIR)  
chmod +x $(PKG_BUILD_DIR)/configure  
endef  
 
define Package/ntripcaster/install  
$(INSTALL_DIR) $(1)/usr/local/ntripcaster/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ntripcaster $(1)/usr/local/ntripcaster/bin/  
$(INSTALL_DIR) $(1)/usr/local/ntripcaster/conf  
$(INSTALL_DATA) $(PKG_BUILD_DIR)/conf/ntripcaster.conf.dist $(1)/usr/local/ntripcaster/conf/  
$(INSTALL_DATA) $(PKG_BUILD_DIR)/conf/sourcetable.dat.dist $(1)/usr/local/ntripcaster/conf/  
endef  
 
$(eval $(call BuildPackage,ntripcaster))  
 
#  
# Copyright (C) 2011 segal.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=ntripclient  
PKG_VERSION:=1.5.0  
PKG_RELEASE:=2  
 
PKG_SOURCE:=$(PKG_NAME).zip  
PKG_SOURCE_URL:=http://igs.bkg.bund.de/root_ftp/NTRIP/software/  
PKG_MD5SUM:=4b357fa648d74e4e13c4b5a2a39f5624  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/ntripclient  
SECTION:=net  
CATEGORY:=Network  
SUBMENU:=NTRIP  
TITLE:=Ntrip Version 2.0 Command Line Client  
URL:=http://igs.bkg.bund.de/ntrip/download  
endef  
 
define Package/ntripclient/description  
Ntrip Version 2.0 Command Line Client, reading from Ntrip Version 1.0 or 2.0 Caster  
endef  
 
define Build/Prepare  
mkdir -p $(PKG_BUILD_DIR)  
unzip $(DL_DIR)/$(PKG_SOURCE) -d $(PKG_BUILD_DIR)  
endef  
 
MAKE_FLAGS += \  
OPTS="$(TARGET_CFLAGS)"  
 
define Package/ntripclient/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ntripclient $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,ntripclient))  
 
#  
# Copyright (C) 2011 segal.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=ntripserver  
PKG_VERSION:=1.5.1  
PKG_RELEASE:=2  
 
PKG_SOURCE:=$(PKG_NAME).zip  
PKG_SOURCE_URL:=http://igs.bkg.bund.de/root_ftp/NTRIP/software/  
PKG_MD5SUM:=cecff5da0173896df041bd889935fc12  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/ntripserver  
SECTION:=net  
CATEGORY:=Network  
SUBMENU:=NTRIP  
TITLE:=Ntrip Version 2.0 Command Line Server  
URL:=http://igs.bkg.bund.de/ntrip/download  
endef  
 
define Package/ntripserver/description  
Ntrip Version 2.0 Command Line Server, reading from SISNeT Server, TCP/UDP IP Port, Serial port, or NtripCaster to support an Ntrip Version 1.0 or 2.0 Caster  
endef  
 
MAKE_FLAGS += \  
OPTS="$(TARGET_CFLAGS)"  
 
define Build/Prepare  
mkdir -p $(PKG_BUILD_DIR)  
unzip $(DL_DIR)/$(PKG_SOURCE) -d $(PKG_BUILD_DIR)  
endef  
 
define Package/ntripserver/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ntripserver $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,ntripserver))  
 
file:a/net/remserial/Makefile (deleted)
#  
# Copyright (C) 2014 nunojpg@gmail.com  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=remserial  
PKG_VERSION:=1.4  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=http://lpccomp.bc.ca/remserial/  
PKG_MD5SUM:=b19b57fd118329c5ea3aaf9887f946a6  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/remserial  
SECTION:=net  
CATEGORY:=Network  
TITLE:=Bridge TCP/IP port with a device  
URL:=http://lpccomp.bc.ca/remserial/  
endef  
 
define Package/remserial/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/remserial $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,remserial))  
 
file:a/net/sshtunnel/Makefile (deleted)
#  
# Copyright (C) 2010-2011 OpenWrt.org  
# Copyright (C) 2010 segal.di.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=sshtunnel  
PKG_VERSION:=3  
PKG_RELEASE:=3  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/sshtunnel  
SECTION:=net  
CATEGORY:=Network  
SUBMENU:=SSH  
TITLE:=Manages Local and Remote openssh ssh(1) tunnels  
DEPENDS:=+openssh-client  
endef  
 
define Package/sshtunnel/description  
Creates openssh ssh(1) Local and Remote tunnels configured in UCI file. Can be used to allow remote connections, possibly over NATed connections or without public IP/DNS  
endef  
 
define Package/sshtunnel/conffiles  
/etc/config/sshtunnel  
endef  
 
define Build/Compile  
endef  
 
define Package/sshtunnel/install  
$(INSTALL_DIR) $(1)/etc/init.d  
$(INSTALL_BIN) ./files/sshtunnel.init $(1)/etc/init.d/sshtunnel  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) ./files/sshtunnel.sh $(1)/usr/bin/  
$(INSTALL_DIR) $(1)/etc/config  
$(INSTALL_DATA) ./files/uci_sshtunnel $(1)/etc/config/sshtunnel  
endef  
 
$(eval $(call BuildPackage,sshtunnel))  
 
#!/bin/sh /etc/rc.common  
 
START=99  
STOP=01  
 
PIDFILE="/tmp/run/sshtunnel"  
 
 
append_params() {  
local p; local v; local args;  
for p in $*; do  
eval "v=\$$p"  
[ -n "$v" ] && args="$args -o $p=$v"  
done  
 
ARGS_options="${args# *}"  
}  
 
append_string() {  
local varname="$1"; local add="$2"; local separator="${3:- }"; local actual  
eval "actual=\$$varname"  
 
new="${actual:+$actual$separator}$add"  
eval "$varname=\$new"  
}  
 
load_tunnelR() {  
config_get section_server $1 server  
[ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server  
let count++ # count nr of valid sections to make sure there are at least one  
 
config_get remoteaddress $1 remoteaddress "*"  
config_get remoteport $1 remoteport  
config_get localaddress $1 localaddress  
config_get localport $1 localport  
 
[ "$remoteport" -gt 0 ] || append_string "error" "[tunnelR: $1]remoteport must be a positive integer" "; "  
[ "$localport" -gt 0 ] || append_string "error" "[tunnelR: $1]localport must be a positive integer" "; "  
[ -n "$error" ] && return 1  
 
append_string "ARGS_tunnels" "-R $remoteaddress:$remoteport:$localaddress:$localport"  
}  
 
load_tunnelL() {  
config_get section_server $1 server  
[ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server  
let count++ # count nr of valid sections to make sure there are at least one  
 
config_get localaddress $1 localaddress "*"  
config_get localport $1 localport  
config_get remoteaddress $1 remoteaddress  
config_get remoteport $1 remoteport  
 
[ "$remoteport" -gt 0 ] || append_string "error" "[tunnelL: $1]remoteport must be a positive integer" "; "  
[ "$localport" -gt 0 ] || append_string "error" "[tunnelL: $1]localport must be a positive integer" "; "  
[ -n "$error" ] && return 1  
 
append_string "ARGS_tunnels" "-L $localaddress:$localport:$remoteaddress:$remoteport"  
}  
 
load_tunnelD() {  
config_get section_server $1 server  
[ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server  
let count++ # count nr of valid sections to make sure there are at least one  
 
config_get localaddress $1 localaddress "*"  
config_get localport $1 localport  
 
[ "$remoteport" -gt 0 ] || append_string "error" "[tunnelD: $1]remoteport must be a positive integer" "; "  
[ "$localport" -gt 0 ] || append_string "error" "[tunnelD: $1]localport must be a positive integer" "; "  
[ -n "$error" ] && return 1  
 
append_string "ARGS_tunnels" "-D $localaddress:$localport"  
}  
 
load_tunnelW() {  
config_get section_server $1 server  
[ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server  
let count++ # count nr of valid sections to make sure there are at least one  
 
config_get localdev $1 localdev "*"  
config_get remotedev $1 remotedev "*"  
config_get vpntype $1 vpntype "*"  
 
[ "$vpntype" == "ethernet" ] || [ "$vpntype" == "point-to-point" ] || append_string "error" "[tunnelW: $1] vpntype must be \"ethernet\" (tap) or \"pointopoint\" (tun)" "; "  
[ "$localdev" == "any" ] || [ "$localdev" -ge 0 ] || append_string "error" "[tunnelW: $1] localdev must be an integer or \"any\"" "; "  
[ "$remotedev" == "any" ] || [ "$remotedev" -ge 0 ] || append_string "error" "[tunnelW: $1] remotedev must be an integer or \"any\"" "; "  
[ "$user" == "root" ] || logger -p user.warn -t "sshtunnel" "warning: root is required unless the tunnel device has been created manually"  
[ -n "$error" ] && return 1  
 
append_string "ARGS_tunnels" "-w $localdev:$remotedev -o Tunnel=$vpntype"  
}  
 
load_server() {  
server="$1"  
 
config_get user $1 user  
config_get hostname $1 hostname  
config_get port $1 port "22"  
config_get retrydelay $1 retrydelay "60"  
config_get PKCS11Provider $1 PKCS11Provider  
config_get CheckHostIP $1 CheckHostIP  
config_get Compression $1 Compression  
config_get CompressionLevel $1 CompressionLevel  
config_get IdentityFile $1 IdentityFile  
config_get LogLevel $1 LogLevel  
config_get ServerAliveCountMax $1 ServerAliveCountMax  
config_get ServerAliveInterval $1 ServerAliveInterval  
config_get StrictHostKeyChecking $1 StrictHostKeyChecking  
config_get TCPKeepAlive $1 TCPKeepAlive  
config_get VerifyHostKeyDNS $1 VerifyHostKeyDNS  
 
error=""  
[ -n "$user" ] \  
|| append_string "error" "user is not set" "; "  
[ -n "$hostname" ] \  
|| append_string "error" "hostname is not set" "; "  
[ "$retrydelay" -ge 1 ] \  
|| append_string "error" "retrydelay must be a positive integer" "; "  
[ -z "$PKCS11Provider" -o -f "$PKCS11Provider" ] \  
|| append_string "error" "PKCS11Provider must be a pkcs11 shared library accessible" "; "  
[ -z "$CheckHostIP" -o "$CheckHostIP"="yes" -o "$CheckHostIP"="no" ] \  
|| append_string "error" "CheckHostIP must be 'yes' or 'no'" "; "  
[ -z "$Compression" -o "$Compression"="yes" -o "$Compression"="no" ] \  
|| append_string "error" "Compression must be 'yes' or 'no'" "; "  
[ -z "$CompressionLevel" ] || [ "$CompressionLevel" -ge 1 -a "$CompressionLevel" -le 9 ] \  
|| append_string "error" "CompressionLevel must be between 1 and 9" "; "  
[ -z "$IdentityFile" -o -f "$IdentityFile" ] \  
|| append_string "error" "IdentityFile $IdentityFile not accessible" "; "  
[ -z "$LogLevel" -o "$LogLevel" = "QUIET" -o "$LogLevel" = "FATAL" -o "$LogLevel" = "ERROR" -o \  
"$LogLevel" = "INFO" -o "$LogLevel" = "VERBOSE" -o "$LogLevel" = "DEBUG" -o \  
"$LogLevel" = "DEBUG1" -o "$LogLevel" = "DEBUG2" -o "$LogLevel" = "DEBUG3" ] \  
|| append_string "error" "LogLevel is invalid" "; "  
[ -z "$ServerAliveCountMax" ] || [ "$ServerAliveCountMax" -ge 1 ] \  
|| append_string "error" "ServerAliveCountMax must be greater or equal than 1" "; "  
[ -z "$ServerAliveInterval" ] || [ "$ServerAliveInterval" -ge 0 ] \  
|| append_string "error" "ServerAliveInterval must be greater or equal than 0" "; "  
[ -z "$StrictHostKeyChecking" -o "$StrictHostKeyChecking" = "yes" -o "$StrictHostKeyChecking" = "ask" -o "$StrictHostKeyChecking" = "no" ] \  
|| append_string "error" "StrictHostKeyChecking must be 'yes', 'ask' or 'no'" "; "  
[ -z "$TCPKeepAlive" -o "$TCPKeepAlive" = "yes" -o "$TCPKeepAlive" = "no" ] \  
|| append_string "error" "TCPKeepAlive must be 'yes' or 'no'" "; "  
[ -z "$VerifyHostKeyDNS" -o "$VerifyHostKeyDNS" = "yes" -o "$VerifyHostKeyDNS" = "no" ] \  
|| append_string "error" "VerifyHostKeyDNS must be 'yes' or 'no'" "; "  
 
[ -n "$error" ] && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - $error"; return; }  
 
 
ARGS=""  
ARGS_options=""  
ARGS_tunnels=""  
 
count=0  
config_foreach load_tunnelR tunnelR && config_foreach load_tunnelL tunnelL && config_foreach load_tunnelD tunnelD  
[ -n "$error" ] && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - $error"; return; }  
[ "$count" -eq 0 ] && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - no tunnels defined"; return; }  
 
append_params CheckHostIP Compression CompressionLevel IdentityFile LogLevel PKCS11Provider ServerAliveCountMax ServerAliveInterval StrictHostKeyChecking TCPKeepAlive VerifyHostKeyDNS  
ARGS="$ARGS_options -o ExitOnForwardFailure=yes -o BatchMode=yes -nN $ARGS_tunnels -p $port $user@$hostname"  
 
/usr/bin/sshtunnel.sh "$ARGS" "$retrydelay" "$server" &  
echo $! >> "${PIDFILE}.pids"  
logger -p user.info -t "sshtunnel" "started tunnels to $server (pid=$!;retrydelay=$retrydelay)"  
}  
 
stop() {  
if [ -f "$PIDFILE".pids ]  
then  
logger -p user.info -t "sshtunnel" "stopping all tunnels"  
 
while read pid  
do  
kill "$pid" # kill mother process first  
 
[ -f "${PIDFILE}_${pid}.pid" ] && { # if ssh was running, kill it also (mother process could be in retry wait)  
start-stop-daemon -K -p "${PIDFILE}_${pid}.pid"  
rm "${PIDFILE}_${pid}.pid"  
}  
 
logger -p daemon.info -t "sshtunnel[$pid]" "tunnel stopped"  
 
done < "${PIDFILE}.pids"  
 
rm "${PIDFILE}.pids"  
 
logger -p user.info -t "sshtunnel" "all tunnels stopped"  
else  
logger -p user.info -t "sshtunnel" "no tunnels running"  
fi  
}  
 
start() {  
[ -f "${PIDFILE}.pids" ] && stop  
 
config_load sshtunnel  
if [ -n "$(uci show sshtunnel.@server[0])" ] # at least one server section exists  
then  
logger -p user.info -t "sshtunnel" "starting all tunnels"  
config_foreach load_server server  
logger -p user.info -t "sshtunnel" "all tunnels started"  
else  
logger -p user.info -t "sshtunnel" "no servers defined"  
fi  
}  
 
#!/bin/sh  
 
PIDFILE="/tmp/run/sshtunnel"  
 
args="$1"  
retrydelay="$2"  
server="$3"  
 
while true  
do  
logger -p daemon.info -t "sshtunnel[$$][$server]" "connection started"  
 
start-stop-daemon -S -p "${PIDFILE}_${$}.pid" -mx ssh -- $args &>/tmp/log/sshtunnel_$$  
 
logger -p daemon.err -t "sshtunnel[$$][$server]" < /tmp/log/sshtunnel_$$  
rm /tmp/log/sshtunnel_$$  
logger -p daemon.info -t "sshtunnel[$$][$server]" "ssh exited with code $?, retrying in $retrydelay seconds"  
rm "${PIDFILE}_${$}.pid"  
 
sleep "$retrydelay" & wait  
done  
 
#  
# password authentication is not possible, public key authentication must be used.  
# set "option IdentityFile" to he file from which the identity (private key) for RSA or DSA authentication is read.  
# The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2.  
# ssh will also try to load certificate information from the filename obtained by appending -cert.pub to identity filenames.  
#  
 
#config server disney  
# option user mourinho  
# option hostname server.disney.com  
# option port 22  
# option retrydelay 1  
# option CheckHostIP yes  
# option Compression no  
# option CompressionLevel 6  
# option IdentityFile ~/.ssh/id_rsa  
# option LogLevel INFO  
# option PKCS11Provider /lib/pteidpkcs11.so  
# option ServerAliveCountMax 3  
# option ServerAliveInterval 0  
# option StrictHostKeyChecking ask  
# option TCPKeepAlive yes  
# option VerifyHostKeyDNS yes  
 
# tunnelR(emote) - when the connection will be initiated to the R(emote) endpoint at  
# remoteaddress:remoteport and then forwarded to localaddress:localport  
#  
#config tunnelR http  
# option server disney  
# option remoteaddress *  
# option remoteport 9009  
# option localaddress 192.168.1.13  
# option localport 80  
 
# tunnelL(ocal) - when the connection will be initiated to the L(ocal) endpoint at  
# localaddress:localport and then forwarded to remoteaddress:remoteport  
#  
#config tunnelL test  
# option server disney  
# option localaddress *  
# option localport 1022  
# option remoteaddress secretserver.disney.com  
# option remoteport 22  
 
# tunnelD(ynamic) - when the connection will be initiated with the SOCKS4 or SOCKS5 protocol  
# to the local endpoint at localaddress:localport and then forwarded over the remote host  
#  
#config tunnelD proxy  
# option server disney  
# option localaddress *  
# option localport 4055  
 
# tunnelW - creates TUN/TAP devices on client and server to establish a VPN tunnel between them  
# vpntypes:  
# point-to-point = TUN  
# ethernet = TAP  
#  
#config tunnelW proxy  
# option server disney  
# option vpntype point-to-point|ethernet  
# option localdev any|0|1|2|...  
# option remotedev any|0|1|2|...  
 
 
file:a/net/tor/Makefile (deleted)
#  
# Copyright (C) 2008-2014 OpenWrt.org  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=tor  
PKG_VERSION:=0.2.4.22  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=https://www.torproject.org/dist \  
https://archive.torproject.org/tor-package-archive  
PKG_MD5SUM:=5a7eee0d9df87233255d78b25c6f8270  
 
PKG_BUILD_DEPENDS:=libminiupnpc libnatpmp  
PKG_INSTALL:=1  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/tor/Default  
SECTION:=net  
CATEGORY:=Network  
URL:=https://www.torproject.org/  
endef  
 
define Package/tor/Default/description  
Tor is a toolset for a wide range of organizations and people that want to  
improve their safety and security on the Internet. Using Tor can help you  
anonymize web browsing and publishing, instant messaging, IRC, SSH, and  
more. Tor also provides a platform on which software developers can build  
new applications with built-in anonymity, safety, and privacy features.  
endef  
 
define Package/tor  
$(call Package/tor/Default)  
TITLE:=An anonymous Internet communication system  
DEPENDS:=+libevent2 +libopenssl +libpthread +librt +SSP_SUPPORT:libssp  
endef  
 
define Package/tor/description  
$(call Package/tor/Default/description)  
This package contains the tor daemon.  
endef  
 
define Package/tor-fw-helper  
$(call Package/tor/Default)  
TITLE:=Firewall helper for tor  
DEPENDS:=+tor +libminiupnpc +libnatpmp  
endef  
 
define Package/tor-fw-helper/description  
$(call Package/tor/Default/description)  
This package contains a helper for automatically configuring port forwarding.  
endef  
 
define Package/tor-geoip  
$(call Package/tor/Default)  
TITLE:=GeoIP db for tor  
DEPENDS:=+tor  
endef  
 
define Package/tor-geoip/description  
$(call Package/tor/Default/description)  
This package contains a GeoIP database mapping IP addresses to countries.  
endef  
 
define Package/tor/conffiles  
/etc/tor/torrc  
endef  
 
CONFIGURE_ARGS += \  
--with-libevent-dir="$(STAGING_DIR)/usr" \  
--with-ssl-dir="$(STAGING_DIR)/usr" \  
--enable-upnp \  
--with-libminiupnpc-dir="$(STAGING_DIR)/usr" \  
--enable-nat-pmp \  
--with-libnatpmp-dir="$(STAGING_DIR)/usr" \  
--disable-asciidoc  
 
ifneq ($(CONFIG_SSP_SUPPORT),y)  
CONFIGURE_ARGS += \  
--disable-gcc-hardening  
MAKE_FLAGS += \  
CFLAGS="$(TARGET_CFLAGS)"  
else  
MAKE_FLAGS += \  
CFLAGS="$(TARGET_CFLAGS) -fPIC"  
endif  
 
CONFIGURE_VARS += \  
CROSS_COMPILE="yes"  
 
define Package/tor/install  
$(INSTALL_DIR) $(1)/usr/sbin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tor $(1)/usr/sbin/  
$(INSTALL_DIR) $(1)/etc/init.d  
$(INSTALL_BIN) ./files/tor.init $(1)/etc/init.d/tor  
$(INSTALL_DIR) $(1)/etc/tor  
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/tor/torrc.sample $(1)/etc/tor/torrc  
endef  
 
define Package/tor-fw-helper/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tor-fw-helper $(1)/usr/bin/  
endef  
 
define Package/tor-geoip/install  
$(INSTALL_DIR) $(1)/usr/share/tor  
$(CP) $(PKG_INSTALL_DIR)/usr/share/tor/geoip $(1)/usr/share/tor/  
endef  
 
$(eval $(call BuildPackage,tor))  
$(eval $(call BuildPackage,tor-fw-helper))  
$(eval $(call BuildPackage,tor-geoip))  
 
file:a/net/tor/files/tor.init (deleted)
#!/bin/sh /etc/rc.common  
# Copyright (C) 2006-2011 OpenWrt.org  
 
START=50  
STOP=50  
 
USE_PROCD=1  
 
start_service() {  
user_exists tor 52 || user_add tor 52 52 /var/lib/tor  
group_exists tor 52 || group_add tor 52  
[ -f /var/run/tor.pid ] || {  
touch /var/run/tor.pid  
chown tor:tor /var/run/tor.pid  
}  
[ -d /var/lib/tor ] || {  
mkdir -m 0755 -p /var/lib/tor  
chmod 0700 /var/lib/tor  
chown tor:tor /var/lib/tor  
}  
[ -d /var/log/tor ] || {  
mkdir -m 0755 -p /var/log/tor  
chown tor:tor /var/log/tor  
}  
procd_open_instance  
procd_set_param command /usr/sbin/tor --runasdaemon 0  
procd_close_instance  
}  
 
--- a/src/config/torrc.sample.in  
+++ b/src/config/torrc.sample.in  
@@ -45,11 +45,11 @@  
## Uncomment this to start the process in the background... or use  
## --runasdaemon 1 on the command line. This is ignored on Windows;  
## see the FAQ entry if you want Tor to run as an NT service.  
-#RunAsDaemon 1  
+RunAsDaemon 1  
 
## The directory for keeping all the keys/etc. By default, we store  
## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.  
-#DataDirectory @LOCALSTATEDIR@/lib/tor  
+DataDirectory @LOCALSTATEDIR@/lib/tor  
 
## The port on which Tor will listen for local connections from Tor  
## controller applications, as documented in control-spec.txt.  
@@ -187,3 +187,4 @@  
## address manually to your friends, uncomment this line:  
#PublishServerDescriptor 0  
 
+User tor  
 
file:a/utils/open2300/Makefile (deleted)
#  
# Copyright (C) 2010 segal.ubi.pt  
# Copyright (C) 2014 nunojpg@gmail.com  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=open2300  
PKG_VERSION:=1.12  
PKG_RELEASE:=3  
 
PKG_SOURCE_PROTO:=svn  
PKG_SOURCE_URL:=http://www.lavrsen.dk/svn/open2300/trunk  
PKG_SOURCE_VERSION:=r12  
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz  
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/open2300  
SECTION:=utils  
CATEGORY:=Utilities  
TITLE:=WS23XX weather station utilities  
URL:=http://www.lavrsen.dk/foswiki/bin/view/Open2300  
endef  
 
define Package/open2300/description  
This is an utility suite used to communicate with and collect data from a WS23XX wheather station.  
endef  
 
MAKE_FLAGS += \  
CFLAGS="$(TARGET_CFLAGS) -DVERSION=\"$(PKG_VERSION)\""  
 
define Package/open2300/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cw2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dump2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/fetch2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/histlog2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/history2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/interval2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/light2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/log2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/minmax2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/open2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/wu2300 $(1)/usr/bin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/xml2300 $(1)/usr/bin/  
 
$(INSTALL_DIR) $(1)/etc  
$(INSTALL_DATA) ./files/open2300.conf $(1)/etc/  
 
$(INSTALL_DIR) $(1)/usr/lib  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/lib2300.so.1.11 $(1)/usr/lib/  
ln -sf /usr/lib/lib2300.so.1.11 $(1)/usr/lib/lib2300.so  
endef  
 
$(eval $(call BuildPackage,open2300))  
 
# open2300.conf  
#  
# Configuration files for open2300 weather station tools  
#  
# Default locations in which the programs will search for this file:  
# Programs search in this sequence:  
# 1. Path to config file including filename given as parameter (not supported by all tools)  
# 2. ./open2300.conf (current working directory)  
# 3. /jffs/etc/open2300.conf (typical DD-WRT location)  
# 4. /etc/open2300.conf (typical Linux location)  
#  
# All names are case sensitive!!!  
 
 
# Set to your serial port and time zone  
# For Windows use COM1, COM2, COM2 etc  
# For Linux use /dev/ttyS0, /dev/ttyS1 etc  
 
SERIAL_DEVICE /dev/tts/1 # /dev/ttyS0, /dev/ttyS1, COM1, COM2 etc  
TIMEZONE 1 # Hours Relative to UTC. East is positive, west is negative  
 
 
# Units of measure (set them to your preference)  
# The units of measure are ignored by wu2300 and cw2300 because both requires specific units  
 
WIND_SPEED m/s # select MPH (miles/hour), m/s, or km/h  
TEMPERATURE C # Select C or F  
RAIN mm # Select mm or IN  
PRESSURE hPa # Select hPa, mb or INHG  
 
 
#### Citizens Weather variables (used only by cw2300)  
# Format for latitude is  
# [2 digit degrees][2 digit minutes].[2 decimals minutes - NOT seconds][N for north or S for south]  
# Format for longitude is  
# [3 digit degrees][2 digit minutes].[2 decimals minutes - NOT seconds][E for east or W for west]  
# Use leading zeros to get the format ####.##N (lat) and #####.##E (long)  
 
CITIZEN_WEATHER_ID CW0000 # CW0000 should be replaced by HAM call or actual CW number  
CITIZEN_WEATHER_LATITUDE 5540.12N # DDMM.mmN or S - example 55 deg, 40.23 minutes north  
CITIZEN_WEATHER_LONGITUDE 01224.60E # DDDMM.mmE or W - example 12 deg, 24.60 minutes east  
 
APRS_SERVER rotate.aprs.net 14580 # These are the APRS servers and ports for  
APRS_SERVER first.aprs.net 14580 # Citizens Weather reporting.  
APRS_SERVER second.aprs.net 14580 # They they are tried in the entered order  
APRS_SERVER third.aprs.net 14580 # you may enter up to 5 alternate servers  
 
 
#### WEATHER UNDERGROUND variables (used only by wu2300)  
 
WEATHER_UNDERGROUND_ID WUID # ID received from Weather Underground  
WEATHER_UNDERGROUND_PASSWORD WUPASSWORD # Password for Weather Underground  
 
 
### MYSQL Settings (only used by mysql2300)  
 
#MYSQL_HOST localhost # Localhost or IP address/host name  
#MYSQL_USERNAME open2300 # Name of the MySQL user that has access to the database  
#MYSQL_PASSWORD mysql2300 # Password for the MySQL user  
#MYSQL_DATABASE open2300 # Named of your database  
#MYSQL_PORT 0 # TCP/IP Port number. Zero means default  
 
#PGSQL_CONNECT hostaddr='127.0.0.1'dbname='open2300'user='postgres'password='sql' # Connection string  
#PGSQL_TABLE weather # Table name  
#PGSQL_STATION open2300 # Unique station id  
 
--- a/Makefile  
+++ b/Makefile  
@@ -15,87 +15,82 @@  
prefix = /usr/local  
exec_prefix = ${prefix}  
bindir = ${exec_prefix}/bin  
+libdir = ${prefix}/lib  
 
#########################################  
 
CC = gcc  
-OBJ = open2300.o rw2300.o linux2300.o win2300.o  
-LOGOBJ = log2300.o rw2300.o linux2300.o win2300.o  
-FETCHOBJ = fetch2300.o rw2300.o linux2300.o win2300.o  
-WUOBJ = wu2300.o rw2300.o linux2300.o win2300.o  
-CWOBJ = cw2300.o rw2300.o linux2300.o win2300.o  
-DUMPOBJ = dump2300.o rw2300.o linux2300.o win2300.o  
-HISTOBJ = history2300.o rw2300.o linux2300.o win2300.o  
-HISTLOGOBJ = histlog2300.o rw2300.o linux2300.o win2300.o  
-DUMPBINOBJ = bin2300.o rw2300.o linux2300.o win2300.o  
-XMLOBJ = xml2300.o rw2300.o linux2300.o win2300.o  
-PGSQLOBJ = pgsql2300.o rw2300.o linux2300.o win2300.o  
-LIGHTOBJ = light2300.o rw2300.o linux2300.o win2300.o  
-INTERVALOBJ = interval2300.o rw2300.o linux2300.o win2300.o  
-MINMAXOBJ = minmax2300.o rw2300.o linux2300.o win2300.o  
-MYSQLHISTLOGOBJ = mysqlhistlog2300.o rw2300.o linux2300.o win2300.o  
+LIB = lib2300  
+LIB_C = rw2300.c linux2300.c  
+LIBOBJ = rw2300.o linux2300.o  
 
VERSION = 1.11  
 
CFLAGS = -Wall -O3 -DVERSION=\"$(VERSION)\"  
-CC_LDFLAGS = -lm  
-CC_WINFLAG =  
-# For Windows - comment the two line above and un-comment the two lines below.  
-#CC_LDFLAGS = -lm -lwsock32  
-#CC_WINFLAG = -mwindows  
+CC_LDFLAGS = -L. -lm -l2300  
+LFLAGS = -shared -Wl,-soname  
INSTALL = install  
+MAKE_EXEC = $(CC) $(CFLAGS) $@.c -o $@ $(CC_LDFLAGS)  
 
####### Build rules  
 
-all: open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 mysql2300 mysqlhistlog2300  
+all: open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 #mysql2300 mysqlhistlog2300  
 
-open2300 : $(OBJ)  
- $(CC) $(CFLAGS) -o $@ $(OBJ) $(CC_LDFLAGS)  
-  
-dump2300 : $(DUMPOBJ)  
- $(CC) $(CFLAGS) -o $@ $(DUMPOBJ) $(CC_LDFLAGS)  
+lib2300 :  
+ $(CC) -c -fPIC $(CFLAGS) $(LIB_C)  
+ $(CC) $(LFLAGS),$@.so -o $@.so.$(VERSION) $(LIBOBJ)  
+ ln -sf $@.so.$(VERSION) $@.so  
+  
+open2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-log2300 : $(LOGOBJ)  
- $(CC) $(CFLAGS) -o $@ $(LOGOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+dump2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-fetch2300 : $(FETCHOBJ)  
- $(CC) $(CFLAGS) -o $@ $(FETCHOBJ) $(CC_LDFLAGS)  
+log2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-wu2300 : $(WUOBJ)  
- $(CC) $(CFLAGS) -o $@ $(WUOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+fetch2300 : $(LIB)  
+ $(MAKE_EXEC)  
+  
+srv2300 : $(LIB)  
+ $(MAKE_EXEC)  
+  
+wu2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-cw2300 : $(CWOBJ)  
- $(CC) $(CFLAGS) -o $@ $(CWOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+cw2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-history2300 : $(HISTOBJ)  
- $(CC) $(CFLAGS) -o $@ $(HISTOBJ) $(CC_LDFLAGS)  
+history2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-histlog2300 : $(HISTLOGOBJ)  
- $(CC) $(CFLAGS) -o $@ $(HISTLOGOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+histlog2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-bin2300 : $(DUMPBINOBJ)  
- $(CC) $(CFLAGS) -o $@ $(DUMPBINOBJ) $(CC_LDFLAGS)  
+bin2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-xml2300 : $(XMLOBJ)  
- $(CC) $(CFLAGS) -o $@ $(XMLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+xml2300 : $(LIB)  
+ $(MAKE_EXEC)  
 
-mysql2300:  
- $(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient  
+mysql2300: $(LIB)  
+ $(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/mysql -L/usr/lib/mysql $(CC_LDFLAGS) -lmysqlclient  
 
-pgsql2300: $(PGSQLOBJ)  
- $(CC) $(CFLAGS) -o $@ $(PGSQLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/pgsql -L/usr/lib/pgsql -lpq  
+pgsql2300: $(LIB)  
+ $(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/pgsql -L/usr/lib/pgsql $(CC_LDFLAGS) -lpq  
 
-light2300: $(LIGHTOBJ)  
- $(CC) $(CFLAGS) -o $@ $(LIGHTOBJ) $(CC_LDFLAGS)  
+light2300: $(LIB)  
+ $(MAKE_EXEC)  
 
-interval2300: $(INTERVALOBJ)  
- $(CC) $(CFLAGS) -o $@ $(INTERVALOBJ) $(CC_LDFLAGS)  
+interval2300: $(LIB)  
+ $(MAKE_EXEC)  
 
-minmax2300: $(MINMAXOBJ)  
- $(CC) $(CFLAGS) -o $@ $(MINMAXOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)  
+minmax2300: $(LIB)  
+ $(MAKE_EXEC)  
 
-mysqlhistlog2300 :  
- $(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient  
+mysqlhistlog2300 : $(LIB)  
+ $(CC) $(CFLAGS) $@.c -o $@ -I/usr/include/mysql -L/usr/lib/mysql $(CC_LDFLAGS) -lmysqlclient  
 
 
install:  
 
#  
# Copyright (C) 2008 OpenWrt.org  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
 
include $(TOPDIR)/rules.mk  
include $(INCLUDE_DIR)/kernel.mk  
 
PKG_NAME:=pps-tools  
PKG_VERSION:=2.6.23  
PKG_RELEASE:=1  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/pps-tools  
SUBMENU:=Time Synchronization  
SECTION:=net  
CATEGORY:=Network  
DEPENDS:=@LINUX_2_6_23  
TITLE:=PPS (Pulse Per Second) Userland tools  
URL:=http://wiki.enneenne.com/index.php/LinuxPPS_support  
endef  
 
 
define Package/pps-tools/description  
Userland tools for GPS and DCF-77 Clock syncronization. PPS support in Kernel must be enabled.  
endef  
 
define Build/InstallDev  
$(INSTALL_DIR) $(1)/usr/include  
$(CP) $(PKG_BUILD_DIR)/timepps.h $(1)/usr/include/  
endef  
 
define Build/Compile  
$(MAKE) -C $(PKG_BUILD_DIR) \  
$(TARGET_CONFIGURE_OPTS) \  
CFLAGS="$(TARGET_CFLAGS) -DHAVE_ISC_READER=1 -I$(LINUX_DIR)/include -I ." \  
BINDIR="/usr/sbin" MANDIR="/usr/man"  
endef  
 
define Package/pps-tools/install  
$(INSTALL_DIR) $(1)/usr/sbin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ppstest $(1)/usr/sbin/  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ppsctl $(1)/usr/sbin/  
endef  
 
$(eval $(call BuildPackage,pps-tools))  
 
diff --git a/Makefile b/Makefile  
new file mode 100644  
index 0000000..a2660a2  
--- /dev/null  
+++ b/Makefile  
@@ -0,0 +1,27 @@  
+TARGETS = ppstest ppsctl  
+  
+CFLAGS += -Wall -O2 -D_GNU_SOURCE  
+CFLAGS += -I .  
+CFLAGS += -ggdb  
+  
+# -- Actions section ----------------------------------------------------------  
+  
+.PHONY : all depend dep  
+  
+all : .depend $(TARGETS)  
+  
+.depend depend dep :  
+ $(CC) $(CFLAGS) -M $(TARGETS:=.c) > .depend  
+  
+ifeq (.depend,$(wildcard .depend))  
+include .depend  
+endif  
+  
+  
+# -- Clean section ------------------------------------------------------------  
+  
+.PHONY : clean  
+  
+clean :  
+ rm -f *.o *~ core .depend  
+ rm -f ${TARGETS}  
diff --git a/ppsctl.c b/ppsctl.c  
new file mode 100644  
index 0000000..83fd08a  
--- /dev/null  
+++ b/ppsctl.c  
@@ -0,0 +1,62 @@  
+#include <stdio.h>  
+#include <unistd.h>  
+#include <stdlib.h>  
+#include <errno.h>  
+#include <sys/ioctl.h>  
+#include <sys/types.h>  
+#include <sys/stat.h>  
+#include <fcntl.h>  
+#include <string.h>  
+#include <linux/serial.h>  
+  
+void usage(char *name)  
+{  
+ fprintf(stderr, "usage: %s <ttyS> [enable|disable]\n", name);  
+  
+ exit(EXIT_FAILURE);  
+}  
+  
+int main(int argc, char *argv[])  
+{  
+ int fd;  
+ int ret;  
+ struct serial_struct ss;  
+  
+ if (argc < 2)  
+ usage(argv[0]);  
+  
+ fd = open(argv[1], O_RDWR);  
+ if (fd < 0) {  
+ perror("open");  
+ exit(EXIT_FAILURE);  
+ }  
+  
+ ret = ioctl(fd, TIOCGSERIAL, &ss);  
+ if (ret < 0) {  
+ perror("ioctl(TIOCGSERIAL)");  
+ exit(EXIT_FAILURE);  
+ }  
+  
+ if (argc < 3) { /* just read PPS status */  
+ printf("PPS is %sabled\n",  
+ ss.flags & ASYNC_HARDPPS_CD ? "en" : "dis");  
+ exit(EXIT_SUCCESS);  
+ }  
+  
+ if (argv[2][0] == 'e' || argv[2][0] == '1')  
+ ss.flags |= ASYNC_HARDPPS_CD;  
+ else if (argv[2][0] == 'd' || argv[2][0] == '0')  
+ ss.flags &= ~ASYNC_HARDPPS_CD;  
+ else {  
+ fprintf(stderr, "invalid state argument \"%s\"\n", argv[2]);  
+ exit(EXIT_FAILURE);  
+ }  
+  
+ ret = ioctl(fd, TIOCSSERIAL, &ss);  
+ if (ret < 0) {  
+ perror("ioctl(TIOCSSERIAL)");  
+ exit(EXIT_FAILURE);  
+ }  
+  
+ return 0;  
+}  
diff --git a/ppsfind b/ppsfind  
new file mode 100755  
index 0000000..93c0e17  
--- /dev/null  
+++ b/ppsfind  
@@ -0,0 +1,17 @@  
+#!/bin/sh  
+  
+SYS="/sys/class/pps/"  
+  
+if [ $# -lt 1 ] ; then  
+ echo "usage: ppsfind <name>" >&2  
+ exit 1  
+fi  
+  
+for d in $(ls $SYS) ; do  
+ if grep $1 $SYS/$d/name >& /dev/null || \  
+ grep $1 $SYS/$d/path >& /dev/null ; then  
+ echo "$d: name=$(cat $SYS/$d/name) path=$(cat $SYS/$d/path)"  
+ fi  
+done  
+  
+exit 0  
diff --git a/ppstest.c b/ppstest.c  
new file mode 100644  
index 0000000..d125ffa  
--- /dev/null  
+++ b/ppstest.c  
@@ -0,0 +1,151 @@  
+#include <stdio.h>  
+#include <stdlib.h>  
+#include <unistd.h>  
+#include <errno.h>  
+#include <string.h>  
+#include <sys/types.h>  
+#include <sys/stat.h>  
+#include <fcntl.h>  
+  
+#include <timepps.h>  
+  
+int find_source(char *path, pps_handle_t *handle, int *avail_mode)  
+{  
+ pps_params_t params;  
+ int ret;  
+  
+ printf("trying PPS source \"%s\"\n", path);  
+  
+ /* Try to find the source by using the supplied "path" name */  
+ ret = open(path, O_RDWR);  
+ if (ret < 0) {  
+ fprintf(stderr, "unable to open device \"%s\" (%m)\n", path);  
+ return ret;  
+ }  
+  
+ /* Open the PPS source (and check the file descriptor) */  
+ ret = time_pps_create(ret, handle);  
+ if (ret < 0) {  
+ fprintf(stderr, "cannot create a PPS source from device "  
+ "\"%s\" (%m)\n", path);  
+ return -1;  
+ }  
+ printf("found PPS source \"%s\"\n", path);  
+  
+ /* Find out what features are supported */  
+ ret = time_pps_getcap(*handle, avail_mode);  
+ if (ret < 0) {  
+ fprintf(stderr, "cannot get capabilities (%m)\n");  
+ return -1;  
+ }  
+ if ((*avail_mode & PPS_CAPTUREASSERT) == 0) {  
+ fprintf(stderr, "cannot CAPTUREASSERT\n");  
+ return -1;  
+ }  
+ if ((*avail_mode & PPS_OFFSETASSERT) == 0) {  
+ fprintf(stderr, "cannot OFFSETASSERT\n");  
+ return -1;  
+ }  
+  
+ /* Capture assert timestamps, and compensate for a 675 nsec  
+ * propagation delay */  
+ ret = time_pps_getparams(*handle, &params);  
+ if (ret < 0) {  
+ fprintf(stderr, "cannot get parameters (%m)\n");  
+ return -1;  
+ }  
+ params.assert_offset.tv_sec = 0;  
+ params.assert_offset.tv_nsec = 675;  
+ params.mode |= PPS_CAPTUREASSERT | PPS_OFFSETASSERT;  
+ ret = time_pps_setparams(*handle, &params);  
+ if (ret < 0) {  
+ fprintf(stderr, "cannot set parameters (%m)\n");  
+ return -1;  
+ }  
+  
+ return 0;  
+}  
+  
+int fetch_source(int i, pps_handle_t *handle, int *avail_mode)  
+{  
+ struct timespec timeout;  
+ pps_info_t infobuf;  
+ int ret;  
+  
+ /* create a zero-valued timeout */  
+ timeout.tv_sec = 3;  
+ timeout.tv_nsec = 0;  
+  
+retry:  
+ if (*avail_mode & PPS_CANWAIT) /* waits for the next event */  
+ ret = time_pps_fetch(*handle, PPS_TSFMT_TSPEC, &infobuf,  
+ &timeout);  
+ else {  
+ sleep(1);  
+ ret = time_pps_fetch(*handle, PPS_TSFMT_TSPEC, &infobuf,  
+ &timeout);  
+ }  
+ if (ret < 0) {  
+ if (ret == -EINTR) {  
+ fprintf(stderr, "time_pps_fetch() got a signal!\n");  
+ goto retry;  
+ }  
+  
+ fprintf(stderr, "time_pps_fetch() error %d (%m)\n", ret);  
+ return -1;  
+ }  
+  
+ printf("source %d - "  
+ "assert %ld.%09ld, sequence: %ld - "  
+ "clear %ld.%09ld, sequence: %ld\n",  
+ i,  
+ infobuf.assert_timestamp.tv_sec,  
+ infobuf.assert_timestamp.tv_nsec,  
+ infobuf.assert_sequence,  
+ infobuf.clear_timestamp.tv_sec,  
+ infobuf.clear_timestamp.tv_nsec, infobuf.clear_sequence);  
+  
+ return 0;  
+}  
+  
+void usage(char *name)  
+{  
+ fprintf(stderr, "usage: %s <ppsdev> [<ppsdev> ...]\n", name);  
+ exit(EXIT_FAILURE);  
+}  
+  
+int main(int argc, char *argv[])  
+{  
+ int num;  
+ pps_handle_t handle[4];  
+ int avail_mode[4];  
+ int i = 0;  
+ int ret;  
+  
+ /* Check the command line */  
+ if (argc < 2)  
+ usage(argv[0]);  
+  
+ for (i = 1; i < argc && i <= 4; i++) {  
+ ret = find_source(argv[i], &handle[i - 1], &avail_mode[i - 1]);  
+ if (ret < 0)  
+ exit(EXIT_FAILURE);  
+ }  
+  
+ num = i - 1;  
+ printf("ok, found %d source(s), now start fetching data...\n", num);  
+  
+ /* loop, printing the most recent timestamp every second or so */  
+ while (1) {  
+ for (i = 0; i < num; i++) {  
+ ret = fetch_source(i, &handle[i], &avail_mode[i]);  
+ if (ret < 0 && errno != ETIMEDOUT)  
+ exit(EXIT_FAILURE);  
+ }  
+ }  
+  
+ for (; i >= 0; i--)  
+ time_pps_destroy(handle[i]);  
+  
+ return 0;  
+}  
diff --git a/timepps.h b/timepps.h  
new file mode 100644  
index 0000000..28ebf4c  
--- /dev/null  
+++ b/timepps.h  
@@ -0,0 +1,193 @@  
+/*  
+ * timepps.h -- PPS API main header  
+ *  
+ * Copyright (C) 2005-2007 Rodolfo Giometti <giometti@linux.it>  
+ *  
+ * This program is free software; you can redistribute it and/or modify  
+ * it under the terms of the GNU General Public License as published by  
+ * the Free Software Foundation; either version 2 of the License, or  
+ * (at your option) any later version.  
+ *  
+ * This program is distributed in the hope that it will be useful,  
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of  
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
+ * GNU General Public License for more details.  
+ *  
+ * You should have received a copy of the GNU General Public License  
+ * along with this program; if not, write to the Free Software  
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
+ */  
+  
+#ifndef _SYS_TIMEPPS_H_  
+#define _SYS_TIMEPPS_H_  
+  
+#include <sys/syscall.h>  
+#include <unistd.h>  
+#include <errno.h>  
+#include <linux/pps.h>  
+  
+/*  
+ * New data structures  
+ */  
+  
+struct ntp_fp {  
+ unsigned int integral;  
+ unsigned int fractional;  
+};  
+  
+union pps_timeu {  
+ struct timespec tspec;  
+ struct ntp_fp ntpfp;  
+ unsigned long longpad[3];  
+};  
+  
+struct pps_info {  
+ unsigned long assert_sequence; /* seq. num. of assert event */  
+ unsigned long clear_sequence; /* seq. num. of clear event */  
+ union pps_timeu assert_tu; /* time of assert event */  
+ union pps_timeu clear_tu; /* time of clear event */  
+ int current_mode; /* current mode bits */  
+};  
+  
+struct pps_params {  
+ int api_version; /* API version # */  
+ int mode; /* mode bits */  
+ union pps_timeu assert_off_tu; /* offset compensation for assert */  
+ union pps_timeu clear_off_tu; /* offset compensation for clear */  
+};  
+  
+typedef int pps_handle_t; /* represents a PPS source */  
+typedef unsigned long pps_seq_t; /* sequence number */  
+typedef struct ntp_fp ntp_fp_t; /* NTP-compatible time stamp */  
+typedef union pps_timeu pps_timeu_t; /* generic data type for time stamps */  
+typedef struct pps_info pps_info_t;  
+typedef struct pps_params pps_params_t;  
+  
+#define assert_timestamp assert_tu.tspec  
+#define clear_timestamp clear_tu.tspec  
+  
+#define assert_timestamp_ntpfp assert_tu.ntpfp  
+#define clear_timestamp_ntpfp clear_tu.ntpfp  
+  
+#define assert_offset assert_off_tu.tspec  
+#define clear_offset clear_off_tu.tspec  
+  
+#define assert_offset_ntpfp assert_off_tu.ntpfp  
+#define clear_offset_ntpfp clear_off_tu.ntpfp  
+  
+/*  
+ * The PPS API  
+ */  
+  
+static __inline int time_pps_create(int source, pps_handle_t *handle)  
+{  
+ int ret;  
+  
+ if (!handle) {  
+ errno = EINVAL;  
+ return -1;  
+ }  
+  
+ /* First we check if current device is a PPS valid PPS one...  
+ */  
+ ret = ioctl(source, PPS_CHECK);  
+ if (ret) {  
+ errno = EOPNOTSUPP;  
+ return -1;  
+ }  
+  
+ /* ... then since in LinuxPPS there are no differences between a  
+ * "PPS source" and a "PPS handle", we simply return the same value.  
+ */  
+ *handle = source;  
+  
+ return 0;  
+}  
+  
+static __inline int time_pps_destroy(pps_handle_t handle)  
+{  
+ return close(handle);  
+}  
+  
+static __inline int time_pps_getparams(pps_handle_t handle,  
+ pps_params_t *ppsparams)  
+{  
+ int ret;  
+ struct pps_kparams __ppsparams;  
+  
+ ret = ioctl(handle, PPS_GETPARAMS, &__ppsparams);  
+  
+ ppsparams->api_version = __ppsparams.api_version;  
+ ppsparams->mode = __ppsparams.mode;  
+ ppsparams->assert_off_tu.tspec.tv_sec = __ppsparams.assert_off_tu.sec;  
+ ppsparams->assert_off_tu.tspec.tv_nsec = __ppsparams.assert_off_tu.nsec;  
+ ppsparams->clear_off_tu.tspec.tv_sec = __ppsparams.clear_off_tu.sec;  
+ ppsparams->clear_off_tu.tspec.tv_nsec = __ppsparams.clear_off_tu.nsec;  
+  
+ return ret;  
+}  
+  
+static __inline int time_pps_setparams(pps_handle_t handle,  
+ const pps_params_t *ppsparams)  
+{  
+ struct pps_kparams __ppsparams;  
+  
+ __ppsparams.api_version = ppsparams->api_version;  
+ __ppsparams.mode = ppsparams->mode;  
+ __ppsparams.assert_off_tu.sec = ppsparams->assert_off_tu.tspec.tv_sec;  
+ __ppsparams.assert_off_tu.nsec = ppsparams->assert_off_tu.tspec.tv_nsec;  
+ __ppsparams.clear_off_tu.sec = ppsparams->clear_off_tu.tspec.tv_sec;  
+ __ppsparams.clear_off_tu.nsec = ppsparams->clear_off_tu.tspec.tv_nsec;  
+  
+ return ioctl(handle, PPS_SETPARAMS, &__ppsparams);  
+}  
+  
+/* Get capabilities for handle */  
+static __inline int time_pps_getcap(pps_handle_t handle, int *mode)  
+{  
+ return ioctl(handle, PPS_GETCAP, mode);  
+}  
+  
+static __inline int time_pps_fetch(pps_handle_t handle, const int tsformat,  
+ pps_info_t *ppsinfobuf,  
+ const struct timespec *timeout)  
+{  
+ struct pps_fdata __fdata;  
+ int ret;  
+  
+ /* Sanity checks */  
+ if (tsformat != PPS_TSFMT_TSPEC) {  
+ errno = EINVAL;  
+ return -1;  
+ }  
+  
+ if (timeout) {  
+ __fdata.timeout.sec = timeout->tv_sec;  
+ __fdata.timeout.nsec = timeout->tv_nsec;  
+ __fdata.timeout.flags = ~PPS_TIME_INVALID;  
+ } else  
+ __fdata.timeout.flags = PPS_TIME_INVALID;  
+  
+ ret = ioctl(handle, PPS_FETCH, &__fdata);  
+  
+ ppsinfobuf->assert_sequence = __fdata.info.assert_sequence;  
+ ppsinfobuf->clear_sequence = __fdata.info.clear_sequence;  
+ ppsinfobuf->assert_tu.tspec.tv_sec = __fdata.info.assert_tu.sec;  
+ ppsinfobuf->assert_tu.tspec.tv_nsec = __fdata.info.assert_tu.nsec;  
+ ppsinfobuf->clear_tu.tspec.tv_sec = __fdata.info.clear_tu.sec;  
+ ppsinfobuf->clear_tu.tspec.tv_nsec = __fdata.info.clear_tu.nsec;  
+ ppsinfobuf->current_mode = __fdata.info.current_mode;  
+  
+ return ret;  
+}  
+  
+static __inline int time_pps_kcbind(pps_handle_t handle,  
+ const int kernel_consumer,  
+ const int edge, const int tsformat)  
+{  
+ /* LinuxPPS doesn't implement kernel consumer feature */  
+ errno = EOPNOTSUPP;  
+ return -1;  
+}  
+  
+#endif /* _SYS_TIMEPPS_H_ */  
 
#  
# Copyright (C) 2010 segal.di.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=restorefactory  
PKG_VERSION:=1  
PKG_RELEASE:=6  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/restorefactory  
SECTION:=utils  
CATEGORY:=Utilities  
TITLE:=Mimic original functionality of the reset button  
endef  
 
define Package/restorefactory/description  
RestoreFactory handles the reset button event and issues a "firstboot" command.  
Button and wait time can be configured with a UCI file.  
endef  
 
define Build/Compile  
endef  
 
define Package/restorefactory/install  
$(INSTALL_DIR) $(1)/etc/hotplug.d/button  
$(INSTALL_BIN) ./files/hotplug_restorefactory $(1)/etc/hotplug.d/button/50-restorefactory  
$(INSTALL_DIR) $(1)/etc/uci-defaults  
$(INSTALL_BIN) ./files/uci_defaults_restorefactory $(1)/etc/uci-defaults/50-restorefactory  
endef  
 
$(eval $(call BuildPackage,restorefactory))  
 
#!/bin/sh  
 
system_config() {  
config_get button "$1" button "reset"  
config_get action "$1" action "pressed"  
config_get timeout "$1" timeout "5"  
}  
 
config_load system  
config_foreach system_config restorefactory  
 
[ "$BUTTON" = "$button" ] && {  
 
[ -f /tmp/run/restorefactory.pid ] && read PID < /tmp/run/restorefactory.pid && kill $PID && rm /tmp/run/restorefactory.pid && logger -p user.info -t "restorefactory" "restore to factory defaults aborted"  
 
[ "$ACTION" = "$action" ] && {  
 
if [ "$timeout" -gt 0 ]  
then  
sleep "$timeout" && firstboot && reboot &  
echo $! > /tmp/run/restorefactory.pid  
logger -p user.info -t "restorefactory" "restoring to factory defaults in $timeout seconds"  
elif [ "$timeout" -eq 0 ]  
then  
firstboot && reboot &  
else  
logger -p user.info -t "restorefactory" "invalid timeout value ($timeout)"  
fi  
}  
}  
 
 
#!/bin/sh  
 
uci -q show system.@restorefactory[0] || {  
uci add system restorefactory  
uci set system.@restorefactory[0].button=reset  
uci set system.@restorefactory[0].action=pressed  
uci set system.@restorefactory[0].timeout=5  
uci commit  
}  
 
 
file:a/utils/rtklib/Makefile (deleted)
#  
# Copyright (C) 2014 nunojpg@gmail.com  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=rtklib  
PKG_VERSION:=2.4.2_p4  
PKG_RELEASE:=$(PKG_SOURCE_VERSION)  
 
PKG_SOURCE_PROTO:=git  
PKG_SOURCE_URL:=git://github.com/tomojitakasu/RTKLIB.git  
PKG_SOURCE_VERSION:=4464e1259f34ba8a8b71f0e5f078faf62e1d9ced  
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz  
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/rtklib/default  
SUBMENU:=RTKLIB Suite  
SECTION:=utils  
CATEGORY:=Utilities  
URL:=http://www.rtklib.com/  
DEPENDS:=+libpthread +librt  
endef  
 
define Package/convbin  
$(call Package/rtklib/default)  
TITLE:=RINEX Converter  
endef  
 
define Package/pos2kml  
$(call Package/rtklib/default)  
TITLE:=Solution to KML converter  
endef  
 
define Package/rnx2rtkp  
$(call Package/rtklib/default)  
TITLE:=Post-Processing Analysis  
endef  
 
define Package/rtkrcv  
$(call Package/rtklib/default)  
TITLE:=Real-Time Positioning  
endef  
 
define Package/str2str  
$(call Package/rtklib/default)  
TITLE:=Communication Server  
endef  
 
define Build/Compile  
rm -rf $(PKG_INSTALL_DIR)  
mkdir -p $(PKG_INSTALL_DIR)  
$(MAKE) -C $(PKG_BUILD_DIR)/app/convbin/gcc CC="$(TARGET_CC) $(TARGET_CFLAGS)"  
$(MAKE) -C $(PKG_BUILD_DIR)/app/pos2kml/gcc CC="$(TARGET_CC) $(TARGET_CFLAGS)"  
$(MAKE) -C $(PKG_BUILD_DIR)/app/rnx2rtkp/gcc CC="$(TARGET_CC) $(TARGET_CFLAGS)"  
$(MAKE) -C $(PKG_BUILD_DIR)/app/rtkrcv/gcc CC="$(TARGET_CC) $(TARGET_CFLAGS)"  
$(MAKE) -C $(PKG_BUILD_DIR)/app/str2str/gcc CC="$(TARGET_CC) $(TARGET_CFLAGS)"  
endef  
 
define Package/convbin/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/convbin/gcc/convbin $(1)/usr/bin/  
endef  
 
define Package/pos2kml/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/pos2kml/gcc/pos2kml $(1)/usr/bin/  
endef  
 
define Package/rnx2rtkp/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/rnx2rtkp/gcc/rnx2rtkp $(1)/usr/bin/  
endef  
 
define Package/rtkrcv/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/rtkrcv/gcc/rtkrcv $(1)/usr/bin/  
endef  
 
define Package/str2str/install  
$(INSTALL_DIR) $(1)/usr/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/str2str/gcc/str2str $(1)/usr/bin/  
endef  
 
$(eval $(call BuildPackage,convbin))  
$(eval $(call BuildPackage,pos2kml))  
$(eval $(call BuildPackage,rnx2rtkp))  
$(eval $(call BuildPackage,rtkrcv))  
$(eval $(call BuildPackage,str2str))  
 
file:a/utils/tcsh/Makefile (deleted)
#  
# Copyright (C) 2011 Nuno Goncalves <nunojpg@gmail.com>  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=tcsh  
PKG_VERSION:=6.17.00  
PKG_RELEASE:=1  
 
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz  
PKG_SOURCE_URL:=ftp://ftp.astron.com/pub/tcsh/  
PKG_MD5SUM:=c47de903e3d52f6824c8dd0c91eeb477  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/tcsh  
SECTION:=utils  
CATEGORY:=Utilities  
TITLE:=Enhanced Berkeley UNIX C shell  
DEPENDS:=+libncurses  
URL:=http://www.tcsh.org/  
endef  
 
define Package/tcsh/description  
Tcsh is an enhanced, but completely compatible  
version of the Berkeley UNIX C shell (csh). It  
is a command language interpreter usable both  
as an interactive login shell and a shell  
script command processor. It includes a  
command-line editor, programmable word  
completion, spelling correction, a history  
mechanism, job control and a C-like syntax.  
endef  
 
define Package/tcsh/postinst  
#!/bin/sh  
grep tcsh $${IPKG_INSTROOT}/etc/shells || \  
echo "/bin/tcsh" >> $${IPKG_INSTROOT}/etc/shells  
echo "/bin/csh" >> $${IPKG_INSTROOT}/etc/shells  
endef  
 
define Package/tcsh/install  
$(INSTALL_DIR) $(1)/bin  
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tcsh $(1)/bin/  
ln -sf tcsh $(1)/bin/csh  
endef  
 
$(eval $(call BuildPackage,tcsh))  
 
--- a/Makefile.in  
+++ b/Makefile.in  
@@ -365,7 +365,7 @@  
 
gethost: gethost.c sh.err.h tc.const.h sh.h  
rm -f gethost  
- ${CC} -o gethost ${LDFLAGS} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} $(srcdir)/gethost.c ${LIBES} ${EXTRALIBS}  
+ gcc -o gethost -g -O2 -I. -I. -D_PATH_TCSHELL='"/usr/local/bin/tcsh"' $(srcdir)/gethost.c ${LIBES} ${EXTRALIBS}  
 
tc.defs.c: gethost host.defs  
@rm -f $@.tmp  
 
--- a/config/linux  
+++ b/config/linux  
@@ -106,6 +106,4 @@  
#endif  
#define ECHO_STYLE BOTH_ECHO  
 
-#define NLS_CATALOGS  
-  
#endif /* _h_config */  
 
#  
# Copyright (C) 2010-2013 OpenWrt.org  
# Copyright (C) 2010 segal.di.ubi.pt  
#  
# This is free software, licensed under the GNU General Public License v2.  
# See /LICENSE for more information.  
#  
 
include $(TOPDIR)/rules.mk  
 
PKG_NAME:=wifitoggle  
PKG_VERSION:=1  
PKG_RELEASE:=4  
 
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>  
 
include $(INCLUDE_DIR)/package.mk  
 
define Package/wifitoggle  
SECTION:=utils  
CATEGORY:=Utilities  
TITLE:=Script to toggle Wi-Fi with a button and UCI config  
endef  
 
define Package/wifitoggle/description  
Very versatile script to toggle Wi-Fi with a button. Allows to set  
timeouts, persist changes after boot, and set LEDs according to the state.  
endef  
 
define Package/wifitoggle/conffiles  
/etc/config/wifitoggle  
endef  
 
define Build/Compile  
endef  
 
define Package/wifitoggle/install  
$(INSTALL_DIR) $(1)/etc/hotplug.d/button  
$(INSTALL_BIN) ./files/wifitoggle.hotplug $(1)/etc/hotplug.d/button/50-wifitoggle  
$(INSTALL_DIR) $(1)/etc/config  
$(INSTALL_DATA) ./files/wifitoggle.config $(1)/etc/config/wifitoggle  
endef  
 
$(eval $(call BuildPackage,wifitoggle))  
 
config wifitoggle  
option button 'wps'  
 
option persistent '0'  
option timer '600'  
 
option led_sysfs 'wrt160nl:amber:wps'  
option led_enable_trigger 'timer'  
option led_enable_delayon '500'  
option led_enable_delayoff '500'  
option led_disable_default '0'  
 
# /bin/sh  
 
setled() {  
if [ -e /sys/class/leds/${led_sysfs}/brightness ]  
then  
[ $led_default -eq 1 ] && echo 1 >/sys/class/leds/${led_sysfs}/brightness  
[ $led_default -eq 1 ] || echo 0 >/sys/class/leds/${led_sysfs}/brightness  
 
echo $led_trigger > /sys/class/leds/${led_sysfs}/trigger  
 
[ "$led_trigger" == "netdev" -a -n "$led_dev" ] && {  
echo $led_dev > /sys/class/leds/${led_sysfs}/device_name  
echo $led_mode > /sys/class/leds/${led_sysfs}/mode  
}  
 
[ "$led_trigger" == "timer" ] && {  
[ -n "$led_delayon" ] && echo $led_delayon > /sys/class/leds/${led_sysfs}/delay_on  
[ -n "$led_delayoff" ] && echo $led_delayoff > /sys/class/leds/${led_sysfs}/delay_off  
}  
else  
logger -p user.err -t "wifitoggle" "led: ${led_sysfs} not found"  
fi  
}  
 
load_wireless() {  
disabled="$(uci get wireless.${1}.disabled)"  
}  
 
save_wireless() {  
[ "$device" = "all" -o "$device" = "${1}" ] && {  
uci set "wireless.${1}.disabled=$disabled"  
}  
}  
 
setwifi() {  
setled  
 
config_load wireless  
config_foreach save_wireless wifi-device  
 
if ubus list network.wireless >/dev/null 2>/dev/null; then  
ubus call network reload  
else  
wifi  
fi  
}  
 
 
save_system() {  
config_get sysfs $1 sysfs  
[ "$sysfs" = "$led_sysfs" ] && {  
uci set "system.${1}.trigger=$led_trigger"  
uci set "system.${1}.dev=$led_dev"  
uci set "system.${1}.mode=$led_mode"  
uci set "system.${1}.default=$led_default"  
uci set "system.${1}.delayon=$led_delayon"  
uci set "system.${1}.delayoff=$led_delayoff"  
 
ledset=1  
}  
}  
 
commit_changes() {  
ledset=""  
 
config_load system  
config_foreach save_system led  
 
[ "$ledset" -eq 1 ] || {  
section=$(uci add system led)  
uci set "system.${section}.sysfs=$led_sysfs"  
uci set "system.${section}.trigger=$led_trigger"  
uci set "system.${section}.dev=$led_dev"  
uci set "system.${section}.mode=$led_mode"  
uci set "system.${section}.default=$led_default"  
uci set "system.${section}.delayon=$led_delayon"  
uci set "system.${section}.delayoff=$led_delayoff"  
}  
 
uci commit  
}  
 
enable() {  
 
led_trigger="$led_enable_trigger"  
led_trigger="$led_enable_trigger"  
led_dev="$led_enable_dev"  
led_mode="$led_enable_mode"  
led_default="$led_enable_default"  
led_delayon="$led_enable_delayon"  
led_delayoff="$led_enable_delayoff"  
disabled=0  
 
setwifi  
 
[ "$timer" -le 0 -a "$persistent" -eq 1 ] && commit_changes  
 
logger -p user.info -t "wifitoggle" "device($device) enabled"  
 
[ "$timer" -gt 0 ] && {  
sleep "$timer" && disable && rm /tmp/run/wirelesstoggle_${1}.pid &  
echo $! > /tmp/run/wirelesstoggle_${1}.pid  
logger -p user.info -t "wifitoggle" "auto-disable timer started($timer seconds)"  
}  
}  
 
disable() {  
 
led_trigger="$led_disable_trigger"  
led_trigger="$led_disable_trigger"  
led_dev="$led_disable_dev"  
led_mode="$led_disable_mode"  
led_default="$led_disable_default"  
led_delayon="$led_disable_delayon"  
led_delayoff="$led_disable_delayoff"  
disabled=1  
 
setwifi  
 
[ "$timer" -le 0 -a "$persistent" -eq 1 ] && commit_changes  
 
logger -p user.info -t "wifitoggle" "device($device) disabled"  
}  
 
 
load_wifitoggle() {  
config_get device $1 device "all"  
config_get button $1 button "wps"  
config_get action $1 action "pressed"  
config_get_bool persistent $1 persistent "0"  
config_get timer $1 timer "0"  
 
config_get led_sysfs $1 led_sysfs  
 
config_get led_enable_trigger $1 led_enable_trigger "none"  
config_get led_enable_dev $1 led_enable_dev  
config_get led_enable_mode $1 led_enable_mode "link"  
config_get_bool led_enable_default $1 led_enable_default "1"  
config_get led_enable_delayon $1 led_enable_delayon  
config_get led_enable_delayoff $1 led_enable_delayoff  
 
config_get led_disable_trigger $1 led_disable_trigger "none"  
config_get led_disable_dev $1 led_disable_dev  
config_get led_disable_mode $1 led_disable_mode "link"  
config_get_bool led_disable_default $1 led_disable_default "0"  
config_get led_disable_delayon $1 led_disable_delayon  
config_get led_disable_delayoff $1 led_disable_delayoff  
 
[ "$ACTION" = "$action" -a "$BUTTON" = "$button" ] && {  
 
[ -f /tmp/run/wirelesstoggle_${1}.pid ] && read PID < /tmp/run/wirelesstoggle_${1}.pid && kill $PID && rm /tmp/run/wirelesstoggle_${1}.pid  
 
if [ "$device" = "all" ]  
then  
config_load wireless  
config_foreach load_wireless wifi-device  
else  
disabled="$(uci get wireless."$device".disabled)"  
fi  
 
 
if [ "$disabled" = "1" ]  
then  
enable $1  
else  
disable  
fi  
}  
}  
 
config_load wifitoggle  
config_foreach load_wifitoggle wifitoggle  
 
comments