From b2f8244ae28ce553f5e51a161f6c13a1188f8a4e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Jun 2013 15:22:48 +0200 Subject: [PATCH] DDNS: Send proper user agent. --- config/cfgroot/general-functions.pl | 28 +++++++++++++++++++++++++++- src/scripts/setddns.pl | 3 ++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 56fc602638..9c6d460e66 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -857,10 +857,11 @@ sub FetchPublicIp { my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); Net::SSLeay::set_proxy($peer,$peerport,$proxysettings{'UPSTREAM_USER'},$proxysettings{'UPSTREAM_PASSWORD'} ); } + my $user_agent = &MakeUserAgent(); my ($out, $response) = Net::SSLeay::get_http( 'checkip.dns.lightningwirelabs.com', 80, "/", - Net::SSLeay::make_headers('User-Agent' => 'IPFire' ) + Net::SSLeay::make_headers('User-Agent' => $user_agent ) ); if ($response =~ m%HTTP/1\.. 200 OK%) { $out =~ /Your IP address is: (\d+.\d+.\d+.\d+)/; @@ -980,4 +981,29 @@ sub GetIcmpDescription ($) { 'Experimental'); if ($index>41) {return 'unknown'} else {return @icmp_description[$index]}; } + +sub GetCoreUpdateVersion() { + my $core_update; + + open(FILE, "/opt/pakfire/db/core/mine"); + while () { + $core_update = $_; + last; + } + close(FILE); + + return $core_update; +} + +sub MakeUserAgent() { + my $user_agent = "IPFire/$General::version"; + + my $core_update = &GetCoreUpdateVersion(); + if ($core_update ne "") { + $user_agent .= "/$core_update"; + } + + return $user_agent; +} + 1; diff --git a/src/scripts/setddns.pl b/src/scripts/setddns.pl index 8794ca62eb..6c4c3697f1 100644 --- a/src/scripts/setddns.pl +++ b/src/scripts/setddns.pl @@ -260,9 +260,10 @@ if ($ip ne $ipcache) { $authstring = "username=$settings{'LOGIN'}&password=$settings{'PASSWORD'}"; } + my $user_agent = &General::MakeUserAgent(); my ($out, $response) = Net::SSLeay::get_https("dns.lightningwirelabs.com", 443, "/update?hostname=$settings{'HOSTDOMAIN'}&address4=$ip&$authstring", - Net::SSLeay::make_headers('User-Agent' => 'IPFire') + Net::SSLeay::make_headers('User-Agent' => $user_agent) ); # Valid response are 'ok' 'nochange' -- 2.39.5