Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Backports:SLE-15-SP4:FactoryCandidates
ez-ipupdate
ez-ipupdate-dnsexit.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ez-ipupdate-dnsexit.patch of Package ez-ipupdate
--- ez-ipupdate.c.old 2005-09-11 05:41:27.000000000 -0400 +++ ez-ipupdate.c 2005-09-11 05:42:44.000000000 -0400 @@ -103,6 +103,10 @@ #define HEIPV6TB_DEFAULT_PORT "80" #define HEIPV6TB_REQUEST "/index.cgi" +#define DNSEXIT_DEFAULT_SERVER "www.dnsexit.com" +#define DNSEXIT_DEFAULT_PORT "80" +#define DNSEXIT_REQUEST "/RemoteUpdate.sv" + #define DEFAULT_TIMEOUT 120 #define DEFAULT_UPDATE_PERIOD 120 #define DEFAULT_RESOLV_PERIOD 30 @@ -343,6 +349,12 @@ int HEIPV6TB_check_info(void); static char *HEIPV6TB_fields_used[] = { "server", "user", NULL }; +#ifdef USE_MD5 +int DNSEXIT_update_entry(void); +int DNSEXIT_check_info(void); +static char *DNSEXIT_fields_used[] = { "server", "user", "address", "wildcard", "mx", "host", NULL }; +#endif + struct service_t services[] = { { "NULL", { "null", "NULL", 0, }, @@ -516,6 +528,18 @@ HEIPV6TB_DEFAULT_PORT, HEIPV6TB_REQUEST }, +#ifdef USE_MD5 + { "dnsexit", + {"dnsexit", 0, 0, }, + NULL, + DNSEXIT_update_entry, + DNSEXIT_check_info, + DNSEXIT_fields_used, + DNSEXIT_DEFAULT_SERVER, + DNSEXIT_DEFAULT_PORT, + DNSEXIT_REQUEST +}, +#endif }; static struct service_t *service = NULL; @@ -675,7 +699,7 @@ fprintf( stdout, "AUTHORS / CONTRIBUTORS\n" " Angus Mackay <amackay@gusnet.cx>\n" " Jeremy Bopp <jbopp@mail.utexas.edu>\n" - " Mark Jeftovic <markjr@easydns.com>\n" + " Mark Jeftovic <markjr@dnsexit.com>\n" " Stefaan Ponnet <webmaster@dyns.cx>\n" " Colin Viebrock <colin@easydns.com>\n" " Tim Brown <timb@machine.org.uk>\n" @@ -4248,6 +4272,175 @@ return(UPDATERES_OK); } +#ifdef USE_MD5 +int DNSEXIT_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 DNSEXIT_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?action=edit&", request); + output(buf); + if(address != NULL && *address != '\0') + { + snprintf(buf, BUFFER_SIZE, "%s=%s&", "myip", address); + output(buf); + } + snprintf(buf, BUFFER_SIZE, "%s=%s&", "wildcard", wildcard ? "ON" : "OFF"); + 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, "%s=%s&", "host", host); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "login", user_name); + output(buf); + snprintf(buf, BUFFER_SIZE, "%s=%s&", "password", password); + output(buf); + snprintf(buf, BUFFER_SIZE, " HTTP/1.0\015\012"); + output(buf); + snprintf(buf, BUFFER_SIZE, "Authorization: Basic %s\015\012", auth); + 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(strstr(buf, "0=Success") != NULL) + { + if(!(options & OPT_QUIET)) + { + printf("Request successful\n"); + } + } + else if(strstr(buf, "1=IP stays same") != NULL) + { + if(!(options & OPT_QUIET)) + { + printf("Request successful but the IP is the same as previous update\n"); + } + } + else + { + show_message("Errors return from server\n"); + if(!(options & OPT_QUIET)) + { + fprintf(stderr, "server output: %s\n", buf); + } + return(UPDATERES_ERROR); + } + break; + + case 401: + if(!(options & OPT_QUIET)) + { + show_message("authentication failure\n"); + } + return(UPDATERES_SHUTDOWN); + 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); +} +#endif static int is_in_list(char *needle, char **haystack) { char **p; --- example-dnsexit.conf +++ example-dnsexit.conf @@ -0,0 +1,19 @@ +#!/usr/local/bin/ez-ipupdate -c +# +# example config file for ez-ipupdate +# +# this file is actually executable! +# + +service-type=dnsexit +user=loginname:password +host=www.yourdomain.com +interface=eth0 + +# please ensure the user has permission to write this file +cache-file=/var/lib/ez-ipupdate/ez-ipupdate.cache + +# uncomment this once you have everything working how you want and you are +# ready to have ez-ipupdate running in the background all the time. to stop it +# you can use "killall -QUIT ez-ipupdate" under linux. +#daemon
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor