diff -Nur smeserver-ddclient-1.2.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient smeserver-ddclient-1.2.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient
--- smeserver-ddclient-1.2.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient 2019-01-19 21:10:55.543000000 -0500
+++ smeserver-ddclient-1.2.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient 2019-01-19 23:46:36.234000000 -0500
@@ -305,4 +305,48 @@
SUCCESSFULLY_MODIFIED_RETRIEVE_IP
You have successfully modified the retrieve IP options.
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ SME external interface
+
+
+ SME configuration DB
+ SME configuration DB
+
+
+ web
+ Web query
+
+
+ Interface
+ IP from interface
+
+
+ IP
+ Manual IP setting
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
diff -Nur smeserver-ddclient-1.2.1.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers smeserver-ddclient-1.2.1/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers
--- smeserver-ddclient-1.2.1.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers 2019-01-19 21:10:55.544000000 -0500
+++ smeserver-ddclient-1.2.1/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers 2019-01-20 00:19:43.400000000 -0500
@@ -9,5 +9,45 @@
pid=/var/run/ddclient.pid # record PID in file.
ssl=$ssl
#);
+
+ my $method = $ddclient{'method'}||'web';
+ my $webskip = $ddclient{'webskip'}||'IP Address:';
+ my $cmdskip = $ddclient{'cmdskip'}||'';
+ my $ifskip = $ddclient{'ifskip'}||'';
+ my $Extinterface = $ddclient{'Extinterface'}|| $ExternalInterface{'Name'}|| '';
+ my $cmd = $ddclient{'cmd'} || '/sbin/e-smith/db configuration getprop ExternalInterface IPAddress';
+ my $ForceIP = $ddclient{'ForceIP'} || $ExternalInterface{'IPAddress'} || $ExternalIP || '';
+ $OUT .= "\n";
+ if ( $method eq 'smeIF' ) {
+ # we use SME db to get the external interface NAME : ppp0, eth1, tap0...
+ $Extinterface = $ExternalInterface{'Name'} ||$Extinterface;
+ $OUT .="use=if, if=$Extinterface\n";
+ } elsif ( $method eq 'smeCMD') {
+ # we choose to just get the value from configuration DB
+ $OUT .="use=cmd, cmd='/sbin/e-smith/db configuration getprop ExternalInterface IPAddress'\n";
+ } elsif ( $method eq 'web') {
+ # old good way, we get the value from an external web page. best if we are not gateway
+ $OUT .="use=web, web=$ddclient{'urlcheckip'}\/, web-skip='$webskip' \n";
+ } elsif ( $method eq 'if') {
+ # we have a specific configuation and can not trust sme to get the interface correctly
+ $OUT .="use=if, if=$Extinterface, if-skip='$ifskip'\n";
+ } elsif ( $method eq 'ip') {
+ # we want to force manually
+ $OUT.="use=ip, ip=$ForceIP \n";
+ } elsif ( $method eq 'cmd') {
+ $OUT .="use=cmd, cmd='$cmd', cmd-skip='$cmdskip' \n";
+ } else {
+ # fw method
+ my $fwaddress = $ddclient{'fwaddress'}||'';
+ my $fwlogin = $ddclient{'fwlogin'}||'';
+ my $fwpassword = $ddclient{'fwpassword'}||'';
+ my $fwskip = $ddclient{'fwskip'}||'';
+ $OUT .= "use=$method, fw=$fwaddress";
+ $OUT .= ", fw-login=$fwlogin " if ( $fwlogin ne '' );
+ $OUT .= ", fw-password=$fwpassword " if ( $fwpassword ne '' );
+ $OUT .= ", fw-skip='$fwskip' " if ( $fwskip ne '' );
+ $OUT .= "\n";
+ }
+
}
diff -Nur smeserver-ddclient-1.2.1.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration smeserver-ddclient-1.2.1/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration
--- smeserver-ddclient-1.2.1.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration 2019-01-19 21:15:16.756000000 -0500
+++ smeserver-ddclient-1.2.1/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration 2019-01-19 23:52:13.859000000 -0500
@@ -5,8 +5,6 @@
my $ddb = esmith::DomainsDB->open_ro();
- $OUT .="use=web, web=$ddclient{'urlcheckip'}\/, web-skip='IP Address:' \n";
-
for my $edom ( $ddb->domains )
{
{
diff -Nur smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/functions/ddclient smeserver-ddclient-1.2.1/root/etc/e-smith/web/functions/ddclient
--- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/functions/ddclient 2019-01-19 21:10:55.546000000 -0500
+++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/functions/ddclient 2019-01-19 23:48:15.869000000 -0500
@@ -58,6 +58,7 @@
sub genServer ($$);
sub genRetrieve($$);
+sub genRetrieveMethod($$);
sub performRetrieve($);
################################################################################################################"
@@ -226,7 +227,32 @@
-labels => \%Labels));
}
#------------------------------------------------------------
+sub genRetrieveMethod($$) {
+ my ($q, $curSetting) = @_;
+
+ if ((! defined $curSetting) || ($curSetting eq ''))
+ {
+ $curSetting = 'web';
+ }
+ my %Labels = (
+ 'smeIF' => $fm->localise('SME external interface'),
+ 'smeCMD' => $fm->localise('SME configuration DB'),
+ 'web' => $fm->localise('web'),
+ 'if' => $fm->localise('Interface'),
+ 'ip' => $fm->localise('IP'),
+ 'cmd' => $fm->localise('Command'),
+ );
+
+ return esmith::cgi::genCell ($q, $q->popup_menu (-name => 'retrievemethod',
+ -values => [
+ 'smeIF','smeCMD','web','if','ip','cmd'
+ ],
+ -default => $curSetting,
+ -labels => \%Labels));
+}
+#------------------------------------------------------------
+#
sub showInitial ($$)
{
my ($q, $msg) = @_;
@@ -253,25 +279,37 @@
# get the ip retrieve method
#------------------------------------------------------------
my $ddretrieve=$conf->get('ddclient');
+ my $ExtIF=$conf->get('ExternalInterface');
my $DeamonUpdate=$ddretrieve->prop('DeamonUpdate')|| '300';
my $urlcheckip=$ddretrieve->prop('urlcheckip')|| 'checkip.dyndns.org';
my $ssl=$ddretrieve->prop('SSL')|| 'yes';
+ my $method=$ddretrieve->prop('method')||'web';
+ my $Extinterface=$ddretrieve->prop('Extinterface')||'';
+ my $cmd=$ddretrieve->prop('cmd')||'';
+ my $forceIP=$ddretrieve->prop('ForceIP')||'';
print $q->startform (-method => 'POST',
-action => $q->url (-absolute => 1));
print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
- $q->Tr (esmith::cgi::genCell ($q,$fm->localise('RETRIEVE_SSL')),
+ $q->Tr (esmith::cgi::genCell($q,
+ $fm->localise('RETRIEVE_SSL').":", 'sme-noborders-label' ),
genRetrieve($q,$ssl)),
# esmith::cgi::genWidgetRow ($q, $fm->localise('RETRIEVE_SSL')),
# $q->popup_menu (-name => 'SSL',
# -values => ['yes', 'no'],
# -default => $ssl),
# -labels => \%status)) ,
-
-
$q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_DEAMONUPDATE'),
"retrievedeamonupdate",$DeamonUpdate)),
+ $q->Tr (esmith::cgi::genCell ($q,$fm->localise('RETRIEVE_METHOD').":", 'sme-noborders-label' ),
+ genRetrieveMethod($q,$method)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_IF'),
+ "retrieveinterface",$Extinterface)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_CMD'),
+ "retrievecmd",$cmd)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_IP'),
+ "retrieveip",$forceIP)),
$q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_URLCHECKIP'),
"retrieveurlcheckip",$urlcheckip)),
esmith::cgi::genButtonRow ( $q,
@@ -480,11 +518,19 @@
my $deamonupdate =$q->param('retrievedeamonupdate');
my $urlcheckip =$q->param('retrieveurlcheckip');
my $ssl = $q->param('retrievessl');
+ my $retrievemethod = $q->param('retrievemethod');
+ my $retrieveinterface = $q->param('retrieveinterface');
+ my $retrievecmd = $q->param('retrievecmd');
+ my $retrieveip = $q->param('retrieveip');
my $ddclient=$conf->get('ddclient');
$ddclient->set_prop('urlcheckip' => $urlcheckip);
$ddclient->set_prop('DeamonUpdate' => $deamonupdate);
$ddclient->set_prop('SSL' => $ssl);
+ $ddclient->set_prop('method' => $retrievemethod);
+ $ddclient->set_prop('Extinterface' => $retrieveinterface );
+ $ddclient->set_prop('cmd' => $retrievecmd);
+ $ddclient->set_prop('ForceIP' => $retrieveip);
$domaindb->reload();