Hi all,
I have an SME 7.0 (server only) behind a Firewall/Router. I have two domains on this server and use zoneedit as my DynDNS service because I use private domain names.
The update-dns action script can't handle this situation as it won't know what the external IP address is.
I have rewriten the update-dns action script as follows:
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 1999-2005 Mitel Networks Corporation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Technical support for this program is available from Mitel Networks
# Please visit our web site www.mitel.com/sme/ for details.
#----------------------------------------------------------------------
package esmith;
use strict;
use Errno;
use esmith::ConfigDB;
my $c = esmith::ConfigDB->open_ro or die "Couldn't open config db";
#------------------------------------------------------------
# If using Dynamic DNS service, notify them of new IP address.
#------------------------------------------------------------
my $event = $ARGV [0];
my $DynDNS = $c->get('DynDNS');
exit 0 unless $DynDNS;
my $status = $DynDNS->prop('status') || "disabled";
my $service = $DynDNS->prop('Service') || 'off';
my $account = $DynDNS->prop('Account');
my $password = $DynDNS->prop('Password');
my $domain = $c->get('DomainName')->value;
exit 0 unless ($status eq "enabled" && $service ne "off");
# my $ipaddress = $c->get('ExternalIP') or die "Can't get External IP address";
# The previuos line was replaced for the following
# to accomodate for the use of DynDNS on a server-only setup with external
# gateway to the Internet.
# Author: Ernesto Lorenz
# Date: 17/09/2006
my @result = split /:/ , `lynx --dump http://checkip.dyndns.org`;
my $ipaddress = $result[1];
exec ("/sbin/e-smith/dynamic-dns/$service", $ipaddress, $account, $password, $domain);
Is this code interesting to the comunity? If so, where do I post this for it's inclusion in the next SME release?
Regards,
Ernesto Lorenz