--- a/ddclient	2018-08-09 17:58:16.000000000 +0200
+++ b/ddclient	2018-09-02 01:17:50.000000000 +0200
@@ -452,6 +452,13 @@
 	'googledomains-common-defaults'       => {
 		'server'	      => setv(T_FQDNP,  1, 0, 1, 'domains.google.com', undef),
 	},
+	'corenetworks-common-defaults'       => {
+			'server'             => setv(T_FQDNP,  1, 0, 1, 'dyndns.core-networks.de', undef),
+			'login'              => setv(T_LOGIN,  1, 0, 1, '',                        undef),
+			'password'           => setv(T_PASSWD, 1, 0, 1, '',                        undef),
+			'keepipv4'           => setv(T_BOOL,   0, 1, 1, 0,                         undef),
+			'keepipv6'           => setv(T_BOOL,   0, 1, 1, 0,                         undef),
+	},
 	'duckdns-common-defaults'       => {
 			'server'              => setv(T_FQDNP,  1, 0, 1, 'www.duckdns.org', undef),
 			'login'               => setv(T_LOGIN,  0, 0, 0, 'unused',            undef),
@@ -658,6 +665,15 @@
             $variables{'service-common-defaults'},
             ),
     },
+    'corenetworks' => {
+        'updateable' => undef,
+        'update'     => \&nic_corenetworks_update,
+        'examples'   => \&nic_corenetworks_examples,
+        'variables'  => merge(
+                          $variables{'corenetworks-common-defaults'},
+                          $variables{'service-common-defaults'},
+                        ),
+    },
     'duckdns' => {
         'updateable' => undef,
         'update'     => \&nic_duckdns_update,
@@ -4416,6 +4432,92 @@
         {
                 $config{$h}{'ip'}     = $ip;
                 $config{$h}{'mtime'}  = $now;
+                $config{$h}{'status'} = 'good';
+                success("updating %s: good: IP address set to %s", $h, $ip);
+         }
+         else
+         {
+                $config{$h}{'status'} = 'failed';
+                failed("updating %s: Server said: '$returned'", $h);
+         }
+    }
+}
+
+######################################################################
+## nic_corenetworks_examples
+######################################################################
+sub nic_corenetworks_examples {
+    return <<EoEXAMPLE;
+o 'corenetworks'
+
+The 'corenetworks' protocol is used by the Core Networks GmbH,
+a domain/dns robot, which also supports a dynamic dns service for own domains.
+An API documentation can be found here: https://www.core-networks.de/faq/dyndns-client.html
+
+Configuration variables applicable to the 'corenetworks' protocol are:
+  protocol=corenetworks
+  login=mylogin         ## The login of the DynDNS account
+  password=mypassword   ## The password of the DynDNS account
+  keepipv4=0/1          ## Keep IPv4 addresses, which were not specified.
+  keepipv6=0/1          ## Keep IPv6 addresses, which were not specified.
+  sub.domain.tld        ## The specified (sub)-domain for update.
+
+Example ${program}.conf file entries:
+  protocol=corenetworks,                                     \\
+  login=foo                                                  \\
+  password=bar                                               \\
+  keepipv4=0                                                 \\
+  keepipv6=0                                                 \\
+  myhost.mydomain.tld
+
+EoEXAMPLE
+}
+
+######################################################################
+## nic_corenetworks_update
+## by ConiKost (reused code from nic_freemyip and nic_duckdns)
+## https://mylogin:mypassword@dyndns.core-networks.de/?hostname=myhost.mydomain.tld&myip=myip4,myip6&keepipv4=mykeepipv4$keepipv6=mykeepipv6
+## Response contains HTTP status codes, OK=200, ERROR=500.
+## Responde contains 'good', when successful.
+######################################################################
+sub nic_corenetworks_update {
+
+    debug("\nnic_corenetworks_update -------------------");
+
+    foreach my $h (@_) {
+        my $ip = delete $config{$h}{'wantip'};
+        info("setting IP address to %s for %s", $ip, $h);
+        verbose("UPDATE:","updating %s", $h);
+
+        # Set the URL that we're going to to update
+        my $url;
+        $url  = "https://";
+        $url .= "$config{$h}{'server'}/";
+        $url .= "?hostname=";
+        $url .= $h;
+        $url .= "&myip=";
+        $url .= $ip;
+        $url .= "&keepipv4=";
+        $url .= $config{$h}{'keepipv4'};
+        $url .= "&keepipv6=";
+        $url .= $config{$h}{'keepipv6'};
+
+        # Try to get URL
+        my $reply = geturl(opt('proxy'), $url, $config{$h}{'login'}, $config{$h}{'password'});
+
+        # No response, declare as failed
+        if (!defined($reply) || !$reply) {
+            failed("updating %s: Could not connect to %s.", $h, $config{$h}{'server'});
+            last;
+        }
+        last if !header_ok($h, $reply);
+
+        my @reply = split /\n/, $reply;
+        my $returned = pop(@reply);
+        if ($returned =~ /good/)
+        {
+                $config{$h}{'ip'}     = $ip;
+                $config{$h}{'mtime'}  = $now;
                 $config{$h}{'status'} = 'good';
                 success("updating %s: good: IP address set to %s", $h, $ip);
          }
--- a/sample-etc_ddclient.conf	2018-08-09 17:58:16.000000000 +0200
+++ b/sample-etc_ddclient.conf	2018-09-02 01:23:32.000000000 +0200
@@ -214,6 +214,16 @@
 # my.domain.tld, otherhost.domain.tld
 
 ##
+## Core Networks GmbH (https://www.core-networks.de)
+##
+# protocol=corenetworks
+# login=mylogin
+# password=mypassword
+# keepipv4=0
+# keepipv6=0
+# sub.domain.tld
+
+##
 ## Duckdns (http://www.duckdns.org/)
 ##
 # 
