Port of the dyndns.com update client ndyndns.
Signed off by: Conrad Hirano <placebo3@fastmail.us> git-svn-id: svn://svn.openwrt.org/openwrt/packages@10615 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
19db553391
commit
187a2c552c
50
net/ndyndns/Makefile
Normal file
50
net/ndyndns/Makefile
Normal file
@ -0,0 +1,50 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ndyndns
|
||||
PKG_VERSION:=1.12
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=ndyndns-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://ndyndns.googlecode.com/files
|
||||
PKG_MD5SUM:=1ca356cf366cd617fe3fb5fad9eb961b
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
PKG_FIXUP = libtool
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
MAKE_FLAGS:=PLATFORM=linux
|
||||
|
||||
define Package/ndyndns
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=DynDNS.com update daemon
|
||||
URL:=http://ndyndns.googlecode.com/
|
||||
DEPENDS:=+libcurl +libopenssl
|
||||
endef
|
||||
|
||||
define Package/ndyndns/description
|
||||
The ndyndns daemon is an update client for DynDNS.com. It
|
||||
checks for an IP address change every two minutes, avoids
|
||||
unnecessary updates, reports errors, logs to syslog, and
|
||||
generally complies with everything required of a proper dyndns
|
||||
client.
|
||||
endef
|
||||
|
||||
define Package/ndyndns/conffiles
|
||||
/etc/ndyndns/ndyndns.conf.sample
|
||||
/etc/default/ndyndns
|
||||
endef
|
||||
|
||||
define Package/ndyndns/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ndyndns $(1)/usr/sbin
|
||||
$(INSTALL_DIR) $(1)/etc/default
|
||||
$(INSTALL_BIN) files/$(PKG_NAME).default $(1)/etc/default/$(PKG_NAME)
|
||||
$(INSTALL_DIR) $(1)/etc/init.d/
|
||||
$(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
|
||||
$(INSTALL_DIR) $(1)/etc/$(PKG_NAME)
|
||||
$(INSTALL_CONF) files/$(PKG_NAME).conf.sample $(1)/etc/$(PKG_NAME)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ndyndns))
|
4
net/ndyndns/files/ndyndns.conf.sample
Normal file
4
net/ndyndns/files/ndyndns.conf.sample
Normal file
@ -0,0 +1,4 @@
|
||||
username=user
|
||||
password=password
|
||||
hostname=hostname.dyndns.org
|
||||
wildcard
|
3
net/ndyndns/files/ndyndns.default
Normal file
3
net/ndyndns/files/ndyndns.default
Normal file
@ -0,0 +1,3 @@
|
||||
CHROOT="/etc/ndyndns"
|
||||
CONFIG="/etc/ndyndns/ndyndns.conf"
|
||||
OPTIONS=""
|
18
net/ndyndns/files/ndyndns.init
Normal file
18
net/ndyndns/files/ndyndns.init
Normal file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2007 OpenWrt.org
|
||||
|
||||
START=80
|
||||
DEFAULT=/etc/default/ndyndns
|
||||
|
||||
start() {
|
||||
[ -f $DEFAULT ] && . $DEFAULT
|
||||
|
||||
. /etc/functions.sh
|
||||
include /lib/network
|
||||
scan_interfaces
|
||||
/usr/sbin/ndyndns -c $CHROOT -f $CONFIG -i $(config_get wan ifname) $OPTIONS
|
||||
}
|
||||
|
||||
stop() {
|
||||
killall ndyndns
|
||||
}
|
163
net/ndyndns/patches/ndyndns.patch
Normal file
163
net/ndyndns/patches/ndyndns.patch
Normal file
@ -0,0 +1,163 @@
|
||||
diff -Naur old/Makefile.in new/Makefile.in
|
||||
--- old/Makefile.in 2007-09-13 10:56:00.000000000 -0700
|
||||
+++ new/Makefile.in 2008-02-03 04:07:13.000000000 -0800
|
||||
@@ -1,11 +1,9 @@
|
||||
#CC = gcc -Wall -Wpointer-arith -Wstrict-prototypes -pedantic
|
||||
CC = @CC@
|
||||
-dnslib = -lnss_dns
|
||||
objects = log.o nstrl.o util.o chroot.o pidfile.o signals.o strlist.o checkip.o $(PLATFORM).o cfg.o ndyndns.o
|
||||
-CURLINC = @CURLINC@
|
||||
CURLLIB = @CURLLIB@
|
||||
VERSION = @VERSION@
|
||||
-CFLAGS = @CFLAGS@ -Wall -Wpointer-arith -Wstrict-prototypes -pedantic $(CURLINC)
|
||||
+CFLAGS += -Wall -Wpointer-arith -Wstrict-prototypes -pedantic
|
||||
PLATFORM = @PLATFORM@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
@@ -16,7 +14,7 @@
|
||||
all: ndyndns
|
||||
|
||||
ndyndns : $(objects)
|
||||
- $(CC) $(LDFLAGS) $(dnslib) $(CURLLIB) -o ndyndns $(objects)
|
||||
+ $(CC) $(LDFLAGS) $(CURLLIB) -o ndyndns $(objects)
|
||||
|
||||
ndyndns.o : log.h nstrl.h util.h chroot.h pidfile.h signals.h strlist.h checkip.h $(PLATFORM).h cfg.h
|
||||
$(CC) $(CFLAGS) -c -o $@ ndyndns.c
|
||||
diff -Naur old/chroot.c new/chroot.c
|
||||
--- old/chroot.c 2007-03-13 15:54:12.000000000 -0700
|
||||
+++ new/chroot.c 2008-02-03 04:10:21.000000000 -0800
|
||||
@@ -18,8 +18,6 @@
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
-#include <pwd.h>
|
||||
-#include <grp.h>
|
||||
|
||||
#include "defines.h"
|
||||
#include "log.h"
|
||||
@@ -60,24 +58,4 @@
|
||||
log_line("Failed to chdir(%s). Not invoking job.", path);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
-
|
||||
- ret = chroot(path);
|
||||
- if (ret) {
|
||||
- log_line("Failed to chroot(%s). Not invoking job.", path);
|
||||
- exit(EXIT_FAILURE);
|
||||
- }
|
||||
}
|
||||
-
|
||||
-void drop_root(uid_t uid, gid_t gid)
|
||||
-{
|
||||
- if (uid == 0 || gid == 0) {
|
||||
- log_line("FATAL - drop_root: attempt to drop root to root?\n");
|
||||
- exit(EXIT_FAILURE);
|
||||
- }
|
||||
-
|
||||
- if (setregid(gid, gid) == -1 || setreuid(uid, uid) == -1) {
|
||||
- log_line("FATAL - drop_root: failed to drop root!\n");
|
||||
- exit(EXIT_FAILURE);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
diff -Naur old/ndyndns.c new/ndyndns.c
|
||||
--- old/ndyndns.c 2007-09-19 00:04:13.000000000 -0700
|
||||
+++ new/ndyndns.c 2008-02-03 04:10:21.000000000 -0800
|
||||
@@ -32,8 +32,6 @@
|
||||
#include <net/if.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
-#include <pwd.h>
|
||||
-#include <grp.h>
|
||||
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
@@ -728,12 +726,9 @@
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
- int c, t, uid = 0, gid = 0;
|
||||
+ int c, t;
|
||||
char pidfile[MAX_PATH_LENGTH] = PID_FILE_DEFAULT;
|
||||
char conffile[MAX_PATH_LENGTH] = CONF_FILE_DEFAULT;
|
||||
- char *p;
|
||||
- struct passwd *pws;
|
||||
- struct group *grp;
|
||||
|
||||
|
||||
while (1) {
|
||||
@@ -745,8 +740,6 @@
|
||||
{"quiet", 0, 0, 'q'},
|
||||
{"chroot", 1, 0, 'c'},
|
||||
{"file", 1, 0, 'f'},
|
||||
- {"user", 1, 0, 'u'},
|
||||
- {"group", 1, 0, 'g'},
|
||||
{"interface", 1, 0, 'i'},
|
||||
{"remote", 0, 0, 'r'},
|
||||
{"help", 0, 0, 'h'},
|
||||
@@ -754,7 +747,7 @@
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
- c = getopt_long (argc, argv, "rdnp:qc:f:u:g:i:hv", long_options, &option_index);
|
||||
+ c = getopt_long (argc, argv, "rdnp:qc:f:i:hv", long_options, &option_index);
|
||||
if (c == -1) break;
|
||||
|
||||
switch (c) {
|
||||
@@ -771,8 +764,6 @@
|
||||
" -f, --file configuration file\n"
|
||||
" -p, --pidfile pidfile path\n");
|
||||
printf(
|
||||
-" -u, --user user name that ndyndns should run as\n"
|
||||
-" -g, --group group name that ndyndns should run as\n"
|
||||
" -i, --interface interface ip to check (default: ppp0)\n"
|
||||
" -r, --remote get ip from remote dyndns host (overrides -i)\n"
|
||||
" -h, --help print this help and exit\n"
|
||||
@@ -817,39 +808,12 @@
|
||||
strlcpy(pidfile, optarg, sizeof pidfile);
|
||||
break;
|
||||
|
||||
- case 'u':
|
||||
- t = (unsigned int) strtol(optarg, &p, 10);
|
||||
- if (*p != '\0') {
|
||||
- pws = getpwnam(optarg);
|
||||
- if (pws) {
|
||||
- uid = (int)pws->pw_uid;
|
||||
- if (!gid)
|
||||
- gid = (int)pws->pw_gid;
|
||||
- } else suicide("FATAL - Invalid uid specified.\n");
|
||||
- } else
|
||||
- uid = t;
|
||||
- break;
|
||||
-
|
||||
- case 'g':
|
||||
- t = (unsigned int) strtol(optarg, &p, 10);
|
||||
- if (*p != '\0') {
|
||||
- grp = getgrnam(optarg);
|
||||
- if (grp) {
|
||||
- gid = (int)grp->gr_gid;
|
||||
- } else suicide("FATAL - Invalid gid specified.\n");
|
||||
- } else
|
||||
- gid = t;
|
||||
- break;
|
||||
-
|
||||
case 'i':
|
||||
strlcpy(ifname, optarg, sizeof ifname);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- if (getuid())
|
||||
- suicide("FATAL - I need root for chroot!\n");
|
||||
-
|
||||
if (gflags_detach)
|
||||
if (daemon(0,0))
|
||||
suicide("FATAL - detaching fork failed\n");
|
||||
@@ -870,7 +834,6 @@
|
||||
|
||||
/* Note that failure cases are handled by called fns. */
|
||||
imprison(get_chroot());
|
||||
- drop_root(uid, gid);
|
||||
|
||||
/* Cover our tracks... */
|
||||
wipe_chroot();
|
Loading…
x
Reference in New Issue
Block a user