Hello community, here is the log from the commit of package ez-ipupdate for openSUSE:Factory checked in at 2013-04-12 20:29:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ez-ipupdate (Old) and /work/SRC/openSUSE:Factory/.ez-ipupdate.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ez-ipupdate", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/ez-ipupdate/ez-ipupdate.changes 2011-12-08 11:48:34.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.ez-ipupdate.new/ez-ipupdate.changes 2013-04-12 20:29:55.000000000 +0200 @@ -1,0 +2,15 @@ +Wed Apr 10 17:51:53 CEST 2013 - [email protected] + +- Add ez-ipupdate-joker_com.patch to add support for joker.com. + Don't install the file INSTALL as these are generic compile + instructions. +- Get rid of acconfig.h and use the third argument of AC_DEFINE + and AC_DEFINE_UNQUTED plus AH_TEMPLATE to describe entries + in config.h (add to ez-ipupdate-auto_foo.patch). +- Use AS_HELP_STRING to format help strings in configure.in. +- Modernize the initialization in configure.ac. +- Rename configure.in to configure.ac. +- Added ez-ipupdate-code_cleanup.patch to reduce the number of + compiler warnings. + +------------------------------------------------------------------- Old: ---- ez-ipupdate-3.0.11b8-fix_autofoo.patch New: ---- ez-ipupdate-code_cleanup.patch ez-ipupdate-fix_autofoo.patch ez-ipupdate-joker_com.patch ez-ipupdate-type-punning.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ez-ipupdate.spec ++++++ --- /var/tmp/diff_new_pack.i7L8ho/_old 2013-04-12 20:29:58.000000000 +0200 +++ /var/tmp/diff_new_pack.i7L8ho/_new 2013-04-12 20:29:58.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package ez-ipupdate # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,13 +15,14 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: ez-ipupdate Summary: A Small Utility for Updating a Dynamic DNS Service +License: GPL-2.0+ +Group: Productivity/Networking/DNS/Utilities Version: 3.0.11b8 Release: 0 -License: GPL-2.0+ BuildRequires: automake -Group: Productivity/Networking/DNS/Utilities Source0: %{name}-%{version}.tar.bz2 Source1: ez-ipupdate.init Source2: ez-ipupdate.example.conf @@ -30,7 +31,14 @@ Patch2: ez-ipupdate-format-string-vuln.patch Patch3: ez-ipupdate-includes.patch Patch4: ez-ipupdate-dnsexit.patch -Patch5: ez-ipupdate-3.0.11b8-fix_autofoo.patch +# PATCH-FIX-UPSTREAM Various fixes for configure.ac and Makefile.am +Patch5: ez-ipupdate-fix_autofoo.patch +# PATCH-FEATURE-UPSTREAM Add support for joker.com dyndns service +Patch6: ez-ipupdate-joker_com.patch +# PATCH-FIX-UPSTREAM do type punning via memcpy +Patch7: ez-ipupdate-type-punning.patch +# PATCH-FIX-UPSTREAM Reduce compiler warnings. +Patch8: ez-ipupdate-code_cleanup.patch Url: http://ez-ipupdate.com/ BuildRoot: %{_tmppath}/%{name}-%{version}-build PreReq: %insserv_prereq @@ -63,6 +71,8 @@ * http://www.zoneedit.com +* http://www.joker.com + %prep %setup -q %patch -p1 @@ -70,7 +80,12 @@ %patch2 -p1 %patch3 %patch4 +mv configure.in configure.ac %patch5 +%patch6 +%patch7 +%patch8 +rm acconfig.h %build find -name "example*" | xargs -n 1 sed -i "s@/usr/local/bin/@/usr/bin/@" @@ -100,7 +115,7 @@ %files %defattr(-, root, root) -%doc README INSTALL CHANGELOG COPYING example* +%doc README CHANGELOG COPYING example* %{_bindir}/ez-ipupdate %{_sbindir}/rcez-ipupdate %config(noreplace) %{_sysconfdir}/ez-ipupdate.conf ++++++ ez-ipupdate-code_cleanup.patch ++++++ From: Philipp Thomas <[email protected]> Date: 2013-04-11 11:25:14+02:00 Subject: Clean up the code --- ez-ipupdate.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) signed-off-by: [email protected] Index: ez-ipupdate.c =================================================================== --- ez-ipupdate.c.orig 2013-04-11 10:54:02.685445947 +0200 +++ ez-ipupdate.c 2013-04-11 11:21:24.515547623 +0200 @@ -2525,7 +2525,7 @@ int DHS_update_entry(void) p += strlen(p); limit = BUFFER_SIZE - 1 - strlen(buf); - snprintf(buf, BUFFER_SIZE, "Content-length: %d\015\012", strlen(putbuf)); + snprintf(buf, BUFFER_SIZE, "Content-length: %d\015\012", (int)strlen(putbuf)); output(buf); snprintf(buf, BUFFER_SIZE, "\015\012"); output(buf); @@ -2662,7 +2662,7 @@ int DHS_update_entry(void) p += strlen(p); limit = BUFFER_SIZE - 1 - strlen(buf); - snprintf(buf, BUFFER_SIZE, "Content-length: %d\015\012", strlen(putbuf)); + snprintf(buf, BUFFER_SIZE, "Content-length: %d\015\012", (int)strlen(putbuf)); output(buf); snprintf(buf, BUFFER_SIZE, "\015\012"); output(buf); @@ -4257,8 +4257,6 @@ int HEIPV6TB_update_entry(void) switch(ret) { - char *p; - case -1: if(!(options & OPT_QUIET)) { ++++++ ez-ipupdate-fix_autofoo.patch ++++++ --- Makefile.am | 11 ++++++++--- configure.in | 59 ++++++++++++++++++++++++++++++++--------------------------- 2 files changed, 40 insertions(+), 30 deletions(-) Index: Makefile.am =================================================================== --- Makefile.am.orig 2001-07-07 23:19:35.000000000 +0200 +++ Makefile.am 2013-04-11 12:05:21.086671161 +0200 @@ -1,8 +1,13 @@ bin_PROGRAMS = ez-ipupdate -ez_ipupdate_SOURCES = ez-ipupdate.c conf_file.c conf_file.h md5.c md5.h cache_file.c cache_file.h error.h pid_file.c pid_file.h dprintf.h @EXTRASRC@ -ez_ipupdate_LDADD = @EXTRAOBJ@ +ez_ipupdate_SOURCES = ez-ipupdate.c conf_file.c conf_file.h md5.c md5.h \ + cache_file.c cache_file.h error.h pid_file.c pid_file.h \ + dprintf.h -EXTRA_DIST = getpass.c ez-ipupdate.lsm example.conf example-pgpow.conf example-dhs.conf example-dyndns.conf example-ods.conf example-tzo.conf example-gnudip.conf example-easydns.conf example-justlinux.conf example-dyns.conf CHANGELOG mkbinary example-heipv6tb.conf +EXTRA_DIST = getpass.c ez-ipupdate.lsm example.conf example-pgpow.conf \ + example-dhs.conf example-dyndns.conf example-ods.conf \ + example-tzo.conf example-gnudip.conf example-easydns.conf \ + example-justlinux.conf example-dyns.conf CHANGELOG mkbinary \ + example-heipv6tb.conf AUTOMAKE_OPTIONS=foreign Index: configure.ac =================================================================== --- configure.ac.orig 2003-04-17 19:32:34.000000000 +0200 +++ configure.ac 2013-04-11 12:19:08.454510832 +0200 @@ -1,9 +1,10 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(ez-ipupdate.c) -AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(ez-ipupdate,3.0.11b8) - +AC_INIT([ez-ipupdat]e, [3.0.11b8]) +AC_CONFIG_SRCDIR([ez-ipupdate.c]) +AC_CONFIG_HEADERS(config.h) +AC_CONFIG_FILES(Makefile) +AM_INIT_AUTOMAKE([foreign dist-xz]) dnl Checks for programs. @@ -16,13 +17,13 @@ AC_TYPE_SIGNAL dnl Checks for libraries. -AC_CHECK_FUNC(gethostbyname) +AC_CHECK_FUNC([gethostbyname]) if test $ac_cv_func_gethostbyname = no; then - AC_CHECK_LIB(nsl, gethostbyname) + AC_CHECK_LIB([nsl], [gethostbyname]) fi -AC_CHECK_FUNC(connect) +AC_CHECK_FUNC([connect]) if test $ac_cv_func_connect = no; then - AC_CHECK_LIB(socket, connect) + AC_CHECK_LIB([socket], [connect]) fi AC_CHECK_FUNCS( socket \ @@ -77,7 +78,8 @@ AC_CHECK_HEADERS( unistd.h \ ,, AC_MSG_ERROR(could not locate neccessary system header files) ) -AC_CHECK_LIB(c, sys_errlist, AC_DEFINE(HAVE_SYS_ERRLIST)) +AC_CHECK_LIB(c, sys_errlist, AC_DEFINE([HAVE_SYS_ERRLIST], 1, + [Define if you have sys_errlist])) dnl you need at least to have getopt, but getopt_long will be used if it dnl is present @@ -86,27 +88,31 @@ if test "$ac_cv_func_getopt" != yes; the AC_MSG_ERROR(getopt is needed for this program to work) fi -AC_CHECK_FUNC(getpass, AC_DEFINE(HAVE_GETPASS), - [EXTRASRC="$EXTRASRC \$(srcdir)/getpass.c"] - [EXTRAOBJ="$EXTRAOBJ \$(srcdir)/getpass.o"] ) +AC_CHECK_FUNC(getpass, + AC_DEFINE([HAVE_GETPASS], 1, [Define if you have the getpass function]), + AC_MSG_ERROR(Your system does not define getpass, fix it)) dnl Get system canonical name AC_CANONICAL_HOST -AC_DEFINE_UNQUOTED(OS, "${host}") +AC_DEFINE_UNQUOTED([OS], "${host}", [Define the system canonical name]) dnl allow selection of the default service dnl the default is to use ez-ip -AC_MSG_CHECKING(for user supplied default service) -AC_ARG_ENABLE(default-service, - [ --enable-default-service=SERVICE - the default service type to use - possibilities are: ezip, pgpow, justlinux, dhs, - dyndns, dyndns-static, ods, tzo, gnudip, easydns, easydns-partner, dyns, hn, zoneedit, heipv6tb], +AC_MSG_CHECKING([for user supplied default service]) +AC_ARG_ENABLE([default-service], + AS_HELP_STRING([--enable-default-service=SERVICE], + [the default service type to use + possibilities are: ezip, pgpow, justlinux, dhs, + dyndns, dyndns-static, ods, tzo, gnudip, easydns, + easydns-partner, dyns, hn, zoneedit, heipv6tb, joker]), [ use_SERVICE=$enableval; AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) use_SERVICE=null - AC_MSG_WARN(not setting default service) ] ) + AC_MSG_WARN([not setting default service]) ] ) + +AH_TEMPLATE([DEF_SERVICE], [Define the dyndns service to use by default]) + case "$use_SERVICE" in ezip ) AC_DEFINE(DEF_SERVICE, "ezip");; ez-ip ) AC_DEFINE(DEF_SERVICE, "ezip");; @@ -126,6 +132,7 @@ case "$use_SERVICE" in hn ) AC_DEFINE(DEF_SERVICE, "hn");; zoneedit ) AC_DEFINE(DEF_SERVICE, "zoneedit");; heipv6tb ) AC_DEFINE(DEF_SERVICE, "heipv6tb");; + joker) AC_DEFINE(DEF_SERVICE, "joker");; null ) AC_DEFINE(DEF_SERVICE, "NULL");; "" ) ;; * ) AC_MSG_ERROR(unknown default service type);; @@ -135,21 +142,19 @@ dnl check weather we want debugging supp dnl the default is to NOT use debugging support AC_MSG_CHECKING(whether user wants debugging support) AC_ARG_ENABLE(debug, - [ --enable-debug include support for debugging], - [ AC_DEFINE(DEBUG) + AS_HELP_STRING([--enable-debug], [include support for debugging]), + [ AC_DEFINE(DEBUG, 1, [Define if you want to debug the program]) AC_MSG_RESULT(yes) ], [ AC_MSG_RESULT(no) ] ) dnl check weather we want to disable MD5 support AC_MSG_CHECKING(whether user wants to dissable MD5 support) AC_ARG_ENABLE(md5, - [ --disable-md5 disable MD5 support], + AS_HELP_STRING([--disable-md5], [disable MD5 support]), [ AC_MSG_RESULT(yes) ], - [ AC_DEFINE(USE_MD5) + [ AC_DEFINE(USE_MD5, 1, [Define to use md5]) AC_MSG_RESULT(no) ] ) -AC_SUBST(EXTRASRC) -AC_SUBST(EXTRAOBJ) -AC_OUTPUT(Makefile) +AC_OUTPUT() ++++++ ez-ipupdate-joker_com.patch ++++++ From: Philipp Thomas <[email protected]> Date: 2013-04-10 17:53:34+02:00 Subject: Add support for joker.com Add support for the dyndns service of joker.com. --- ez-ipupdate.c | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) signed-off-by: [email protected] Index: ez-ipupdate.c =================================================================== --- ez-ipupdate.c.orig 2013-04-11 10:50:22.180672887 +0200 +++ ez-ipupdate.c 2013-04-11 10:54:02.685445947 +0200 @@ -107,6 +107,10 @@ #define DNSEXIT_DEFAULT_PORT "80" #define DNSEXIT_REQUEST "/RemoteUpdate.sv" +#define JOKER_DEFAULT_SERVER "svc.joker.com" +#define JOKER_DEFAULT_PORT "80" +#define JOKER_REQUEST "/nic/update" + #define DEFAULT_TIMEOUT 120 #define DEFAULT_UPDATE_PERIOD 120 #define DEFAULT_RESOLV_PERIOD 30 @@ -353,6 +357,10 @@ int DNSEXIT_check_info(void); static char *DNSEXIT_fields_used[] = { "server", "user", "address", "wildcard", "mx", "host", NULL }; #endif +int JOKER_update_entry(void); +int JOKER_check_info(void); +static char *JOKER_fields_used[] = { "server", "user", "address", "wildcard", "mx", "host", NULL }; + struct service_t services[] = { { "NULL", { "null", "NULL", 0, }, @@ -538,6 +546,16 @@ struct service_t services[] = { DNSEXIT_REQUEST }, #endif + { "joker", + { "joker", 0, 0, }, + NULL, + JOKER_update_entry, + JOKER_check_info, + JOKER_fields_used, + JOKER_DEFAULT_SERVER, + JOKER_DEFAULT_PORT, + JOKER_REQUEST + }, }; static struct service_t *service = NULL; @@ -4265,6 +4283,180 @@ int HEIPV6TB_update_entry(void) } return(UPDATERES_ERROR); break; + } + + return(UPDATERES_OK); +} + +int JOKER_check_info(void) +{ + char buf[BUFSIZ+1]; + + if((host == NULL) || (*host == '\0')) + { + if(options & OPT_DAEMON) + { + return(-1); + } + if(host) { free(host); } + printf("host: "); + *buf = '\0'; + fgets(buf, BUFSIZ, stdin); + host = strdup(buf); + chomp(host); + } + + if(interface == NULL && address == NULL) + { + if(options & OPT_DAEMON) + { + fprintf(stderr, "you must provide either an interface or an address\n"); + return(-1); + } + if(interface) { free(interface); } + printf("interface: "); + *buf = '\0'; + fgets(buf, BUFSIZ, stdin); + chomp(buf); + option_handler(CMD_interface, buf); + } + + warn_fields(service->fields_used); + + return 0; +} + +int JOKER_update_entry(void) +{ + char buf[BUFFER_SIZE+1]; + char *bp = buf; + int bytes; + int btot; + int ret; + + buf[BUFFER_SIZE] = '\0'; + + if(do_connect((int*)&client_sockfd, server, port) != 0) + { + if(!(options & OPT_QUIET)) + { + show_message("error connecting to %s:%s\n", server, port); + } + return(UPDATERES_ERROR); + } + + snprintf(buf, BUFFER_SIZE, "GET %s?", request); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "username", user_name); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "password", password); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "hostname", host); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "myip", address); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "wildcard", wildcard ? "yes" : "no"); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "mx", mx); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "backmx", *mx == '\0' ? "NO" : "YES"); + output(buf); + snprintf(buf, BUFFER_SIZE, " HTTP/1.0\015\012"); + output(buf); + snprintf(buf, BUFFER_SIZE, "User-Agent: %s-%s %s [%s] (%s)\015\012", + "ez-update", VERSION, OS, (options & OPT_DAEMON) ? "daemon" : "", "by Angus Mackay"); + output(buf); + snprintf(buf, BUFFER_SIZE, "Host: %s\015\012", server); + output(buf); + snprintf(buf, BUFFER_SIZE, "\015\012"); + output(buf); + + bp = buf; + bytes = 0; + btot = 0; + while((bytes=read_input(bp, BUFFER_SIZE-btot)) > 0) + { + bp += bytes; + btot += bytes; + dprintf((stderr, "btot: %d\n", btot)); + } + close(client_sockfd); + buf[btot] = '\0'; + + dprintf((stderr, "server output: %s\n", buf)); + + if(sscanf(buf, " HTTP/1.%*c %3d", &ret) != 1) + { + ret = -1; + } + + switch(ret) + { + case -1: + if(!(options & OPT_QUIET)) + { + show_message("strange server response, are you connecting to the right server?\n"); + } + return(UPDATERES_ERROR); + break; + + case 200: + if(!(options & OPT_QUIET)) + { + printf("request successful\n"); + } + break; + + case 302: + // There is no neat way to determine the exact error other than to + // parse the Location part of the mime header to find where we're + // being redirected. + if(!(options & OPT_QUIET)) + { + // reuse the auth buffer + *auth = '\0'; + bp = strstr(buf, "Location: "); + if((bp < strstr(buf, "\r\n\r\n")) && (sscanf(bp, "Location: http://%*[^/]%255[^\r\n]", auth) == 1)) + { + bp = strrchr(auth, '/') + 1; + } + else + { + bp = ""; + } + dprintf((stderr, "location: %s\n", bp)); + + if(!(strncmp(bp, "domainmismatch.htm", strlen(bp)) && strncmp(bp, "invname.htm", strlen(bp)))) + { + show_message("invalid host name\n"); + } + else if(!strncmp(bp, "invkey.htm", strlen(bp))) + { + show_message("invalid password(tzo key)\n"); + } + else if(!(strncmp(bp, "emailmismatch.htm", strlen(bp)) && strncmp(bp, "invemail.htm", strlen(bp)))) + { + show_message("invalid user name(email address)\n"); + } + else + { + show_message("unknown error\n"); + } + } + return(UPDATERES_ERROR); + break; + + default: + if(!(options & OPT_QUIET)) + { + // reuse the auth buffer + *auth = '\0'; + sscanf(buf, " HTTP/1.%*c %*3d %255[^\r\n]", auth); + show_message("unknown return code: %d\n", ret); + show_message("server response: %s\n", auth); + } + return(UPDATERES_ERROR); + break; } return(UPDATERES_OK); ++++++ ez-ipupdate-type-punning.patch ++++++ From: Philipp Thomas <[email protected]> Date: 2013-04-11 11:24:54+02:00 Subject: Use memcpy for type-punning --- md5.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) signed-off-by: [email protected] Index: md5.c =================================================================== --- md5.c.orig 2013-04-11 10:50:22.160673361 +0200 +++ md5.c 2013-04-11 11:18:46.118299579 +0200 @@ -92,6 +92,7 @@ md5_finish_ctx (struct md5_ctx *ctx, voi { /* Take yet unprocessed bytes into account. */ md5_uint32 bytes = ctx->buflen; + md5_uint32 tmp; size_t pad; /* Now count remaining bytes. */ @@ -103,9 +104,10 @@ md5_finish_ctx (struct md5_ctx *ctx, voi memcpy (&ctx->buffer[bytes], fillbuf, pad); /* Put the 64-bit file length in *bits* at the end of the buffer. */ - *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); - *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | - (ctx->total[0] >> 29)); + tmp = SWAP (ctx->total[0] << 3); + memcpy(&ctx->buffer[bytes + pad], &tmp, sizeof(md5_uint32)); + tmp = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); + memcpy(&ctx->buffer[bytes + pad + 4], &tmp, sizeof(md5_uint32)); /* Process last bytes. */ md5_process_block (ctx->buffer, bytes + pad + 8, ctx); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
