/[smecontribs]/rpms/smeserver-ddclient/contribs10/smeserver-ddclient-1.3.0-Update-SM2-code-for-new-services-and-protocols.patch
ViewVC logotype

Diff of /rpms/smeserver-ddclient/contribs10/smeserver-ddclient-1.3.0-Update-SM2-code-for-new-services-and-protocols.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

Revision 1.2 by brianr, Mon Dec 4 08:48:10 2023 UTC Revision 1.10 by brianr, Mon Dec 18 13:53:48 2023 UTC
# Line 1  Line 1 
1    diff -urN smeserver-ddclient-1.3.0.old/createlinks smeserver-ddclient-1.3.0/createlinks
2    --- smeserver-ddclient-1.3.0.old/createlinks    2023-11-10 16:11:05.855271810 +0000
3    +++ smeserver-ddclient-1.3.0/createlinks        2023-12-18 10:52:53.495714627 +0000
4    @@ -48,3 +48,6 @@
5     $event = 'post-upgrade';
6      templates2events("/etc/ddclient/ddclient.conf", $event);
7      templates2events("/etc/ppp/ip-up.local", $event);
8    +
9    +# and create an empty cache
10    +# safe_touch("/var/cache/ddclient/ddclient.cache")
11    diff -urN smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers smeserver-ddclient-1.3.0/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers
12    --- smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers        2023-11-10 16:11:05.911271972 +0000
13    +++ smeserver-ddclient-1.3.0/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers    2023-12-14 11:40:00.000000000 +0000
14    @@ -52,15 +52,16 @@
15            } elsif ( $method eq 'ip') {
16                    # we want to force manually
17                    $OUT.="usev4=ipv4, ipv4=$ForceIP \n";
18    -       } elsif ( $method eq 'cmd') {
19    -               $OUT .="usev4=cmd, cmdv4='$cmd'\n";
20    +       } elsif ( $method eq 'cmdv4') {
21    +               $OUT .="usev4=cmdv4, cmdv4='$cmd'\n";
22            } else {
23                    # fw method
24                    my $fwaddress = $ddclient{'fwaddress'}||'';
25    +               my $fwdevice = $ddclient{'Extinterface'}||'';
26                    my $fwlogin = $ddclient{'fwlogin'}||'';
27                    my $fwpassword = $ddclient{'fwpassword'}||'';
28                    my $fwskip = $ddclient{'fwskip'}||'';
29    -               $OUT .= "usev4=$method, fwv4=$fwaddress";
30    +               $OUT .= "usev4=$fwdevice, fwv4=$fwaddress";
31                    $OUT .= ", fw-login=$fwlogin " if ( $fwlogin ne '' );
32                    $OUT .= ", fw-password=$fwpassword " if ( $fwpassword ne '' );
33                    $OUT .= ", fwv4-skip='$fwskip' " if ( $fwskip ne '' );
34    diff -urN smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/30FreeHosts smeserver-ddclient-1.3.0/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/30FreeHosts
35    --- smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/30FreeHosts      2023-11-10 16:11:05.913271977 +0000
36    +++ smeserver-ddclient-1.3.0/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/30FreeHosts  2023-12-18 13:45:00.000000000 +0000
37    @@ -93,5 +93,9 @@
38                }
39            }
40         }
41    +    my $file = '/var/cache/ddclient/ddclient.cache';
42    +       # Execute the shell command to clear the file
43    +       system("rm -f '' > $file");
44    +
45     }
46    
47    diff -urN smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service smeserver-ddclient-1.3.0/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service
48    --- smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service  2023-11-10 16:11:05.857271816 +0000
49    +++ smeserver-ddclient-1.3.0/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service      2023-12-16 10:40:00.000000000 +0000
50    @@ -1,7 +1,7 @@
51     {
52     $debug   = (($ddclient{'debug'}   eq 'enabled') ? "debug"   : "nodebug");
53     $verbose = (($ddclient{'verbose'} eq 'enabled') ? "verbose" : "noverbose");
54    -$quiet   = (($ddclient{'quiet'}   eq 'enabled') ? "quiet"   : "noquiet");
55    +$quiet   = (($ddclient{'quiet'}   eq 'disabled') ? "noquiet"   : "quiet");
56     $syslog  = (($ddclient{'syslog'}  eq "enabled") ? "syslog"  : "nosyslog");
57     $OUT .= "\n";
58     $OUT .= "[Service]\n";
59    diff -urN smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf smeserver-ddclient-1.3.0/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf
60    --- smeserver-ddclient-1.3.0.old/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf 2023-11-10 16:11:05.785271609 +0000
61    +++ smeserver-ddclient-1.3.0/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf     2023-12-15 11:54:47.841967164 +0000
62    @@ -1,3 +1,3 @@
63     UID="ddclient"
64     GID="ddclient"
65    -PERMS=0644
66    +PERMS=0600
67  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm
68  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm     2023-11-10 16:11:05.915271983 +0000  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm     2023-11-10 16:11:05.915271983 +0000
69  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm 2023-12-01 17:16:00.000000000 +0000  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm 2023-12-14 11:33:00.000000000 +0000
70  @@ -114,57 +114,168 @@  @@ -114,90 +114,164 @@
71    
72   my %ddc_datas = ();   my %ddc_datas = ();
73    
74  +sub get_devices_names {  +sub get_devices_names {
75  +       #  +       #
76  +       # Router devices from which it can get ip address  +       # Router/Firewall devices from which it can get ip address
77  +       #  +       #
78  +       my $devices = ( [  +       my $devices = ( [
79  +               [ '2wire' => '2Wire 1701HG Gateway' ],  +               [ '2Wire 1701HG Gateway' => '2wire' ],
80  +               [ '3com-3c886a' => '3com 3c886a 56k Lan Modem' ],  +               [ '3com 3c886a 56k Lan Modem' => '3com-3c886a' ],
81  +               [ '3com-oc-remote812' => '3com OfficeConnect Remote 812' ],  +               [ '3com OfficeConnect Remote 812' => '3com-oc-remote812' ],
82  +               [ 'alcatel-510' => 'Alcatel Speed Touch 510' ],  +               [ 'Alcatel Speed Touch 510' => 'alcatel-510' ],
83  +               [ 'alcatel-530' => 'Alcatel/Thomson SpeedTouch 530' ],  +               [ 'Alcatel/Thomson SpeedTouch 530' => 'alcatel-530' ],
84  +               [ 'alcatel-stp' => 'Alcatel Speed Touch Pro' ],  +               [ 'Alcatel Speed Touch Pro' => 'alcatel-stp' ],
85  +               [ 'allnet-1298' => 'Allnet 1298' ],  +               [ 'Allnet 1298' => 'allnet-1298' ],
86  +               [ 'cayman-3220h' => 'Cayman 3220-H DSL' ],  +               [ 'Cayman 3220-H DSL' => 'cayman-3220h' ],
87  +               [ 'dlink-524' => 'D-Link DI-524' ],  +               [ 'D-Link DI-524' => 'dlink-524' ],
88  +               [ 'dlink-604' => 'D-Link DI-604' ],  +               [ 'D-Link DI-604' => 'dlink-604' ],
89  +               [ 'dlink-614' => 'D-Link DI-614+' ],  +               [ 'dlink-614' => 'D-Link DI-614+' ],
90  +               [ 'e-tech' => 'E-tech Router' ],  +               [ 'e-tech' => 'E-tech Router' ],
91  +               [ 'elsa-lancom-dsl10' => 'ELSA LanCom DSL/10 DSL FW' ],  +               [ 'elsa-lancom-dsl10' => 'ELSA LanCom DSL/10 DSL FW' ],
# Line 56  diff -urN smeserver-ddclient-1.3.0.old/r Line 122  diff -urN smeserver-ddclient-1.3.0.old/r
122  +               [ 'watchguard-edge-x' => 'Watchguard Edge X FW' ],  +               [ 'watchguard-edge-x' => 'Watchguard Edge X FW' ],
123  +               [ 'watchguard-soho' => 'Watchguard SOHO FW' ],  +               [ 'watchguard-soho' => 'Watchguard SOHO FW' ],
124  +               [ 'westell-6100' => 'Westell C90-610015-06 DSL Router' ],  +               [ 'westell-6100' => 'Westell C90-610015-06 DSL Router' ],
125  +               [ 'xsense-aero' => 'Xsense Aero']  +               [ 'xsense-aero' => 'Xsense Aero' ]      
126  +       ] );  +       ] );
127  +        return $devices;  +        return $devices;
128  +  +
# Line 77  diff -urN smeserver-ddclient-1.3.0.old/r Line 143  diff -urN smeserver-ddclient-1.3.0.old/r
143  +       # Web Services from which it can get ip address  +       # Web Services from which it can get ip address
144  +       #  +       #
145  +       my $webservices = ( [  +       my $webservices = ( [
146  +               [ 'dyndnshttp://checkip.dyndns.org/' => 'dyndns' ],  +               [ 'dyndns-http://checkip.dyndns.org/' => 'dyndns' ],
147  +               [ 'freednshttps://freedns.afraid.org/dynamic/check.php' => 'freedns' ],  +               [ 'freedns-https://freedns.afraid.org/dynamic/check.php' => 'freedns' ],
148  +               [ 'googledomainshttps://domains.google.com/checkip' => 'googledomains' ],  +               [ 'googledomains-https://domains.google.com/checkip' => 'googledomains' ],
149  +               [ 'hehttps://checkip.dns.he.net/' => 'he' ],  +               [ 'he-https://checkip.dns.he.net/' => 'he' ],
150  +               [ 'ip4only.mehttps://ip4only.me/api/' => 'ip4only.me' ],  +               [ 'ip4only.me-https://ip4only.me/api/' => 'ip4only.me' ],
151  +               [ 'ip6only.mehttps://ip6only.me/api/' => 'ip6only.me' ],  +               [ 'ip6only.me-https://ip6only.me/api/' => 'ip6only.me' ],
152  +               [ 'ipify-ipv4https://api.ipify.org/' => 'ipify-ipv4' ],  +               [ 'ipify-ipv4-https://api.ipify.org/' => 'ipify-ipv4' ],
153  +               [ 'ipify-ipv6https://api6.ipify.org/' => 'ipify-ipv6' ],  +               [ 'ipify-ipv6-https://api6.ipify.org/' => 'ipify-ipv6' ],
154  +               [ 'loopiahttps://dns.loopia.se/checkip/checkip.php' => 'loopia' ],  +               [ 'loopia:-https://dns.loopia.se/checkip/checkip.php' => 'loopia' ],
155  +               [ 'myonlineportalhttps://myonlineportal.net/checkip' => 'myonlineportal' ],  +               [ 'myonlineportal-https://myonlineportal.net/checkip' => 'myonlineportal' ],
156  +               [ 'noip-ipv4http://ip1.dynupdate.no-ip.com/' => 'noip-ipv4' ],  +               [ 'noip-ipv4-http://ip1.dynupdate.no-ip.com/' => 'noip-ipv4' ],
157  +               [ 'noip-ipv6http://ip1.dynupdate6.no-ip.com/' => 'noip-ipv6' ],  +               [ 'noip-ipv6-http://ip1.dynupdate6.no-ip.com/' => 'noip-ipv6' ],
158  +               [ 'nsupdate.info-ipv4https://ipv4.nsupdate.info/myip' => 'nsupdate.info-ipv4' ],  +               [ 'nsupdate.info-ipv4-https://ipv4.nsupdate.info/myip' => 'nsupdate.info-ipv4' ],
159  +               [ 'nsupdate.info-ipv6https://ipv6.nsupdate.info/myip' => 'nsupdate.info-ipv6' ],  +               [ 'nsupdate.info-ipv6-https://ipv6.nsupdate.info/myip' => 'nsupdate.info-ipv6' ],
160  +               [ 'zoneedithttps://dynamic.zoneedit.com/checkip.html' => 'zoneedit' ]  +               [ 'zoneedit-https://dynamic.zoneedit.com/checkip.html' => 'zoneedit' ]
161  +       ] );  +       ] );
162  +       return $webservices  +       return $webservices
163  +  +
# Line 114  diff -urN smeserver-ddclient-1.3.0.old/r Line 180  diff -urN smeserver-ddclient-1.3.0.old/r
180       #       #
181       my $c      = shift;       my $c      = shift;
182  -    my $Labels = (  -    my $Labels = (
183  +    my $dnsservices = ( [      -    
 +               [ $c->l('1984') => '1984' ],  
 +               [ $c->l('changeip') => 'changeip' ],  
 +               [ $c->l('cloudflare') => 'cloudflare' ],  
 +               [ $c->l('cloudns') => 'cloudns' ],  
 +               [ $c->l('digitalocean') => 'digitalocean' ],  
 +               [ $c->l('dinahosting') => 'dinahosting' ],  
 +               [ $c->l('dnsexit') => 'dnsexit' ],  
 +               [ $c->l('dnsmadeeasy') => 'dnsmadeeasy' ],  
 +               [ $c->l('domeneshop') => 'domeneshop' ],  
 +               [ $c->l('dondominio') => 'dondominio' ],  
 +               [ $c->l('dslreports') => 'dslreports' ],  
 +               [ $c->l('duckdns') => 'duckdns' ],  
 +               [ $c->l('dyndns1') => 'dyndns1' ],  
 +               [ $c->l('dyndns2') => 'dyndns2' ],  
 +               [ $c->l('easydns') => 'easydns' ],  
 +               [ $c->l('enom') => 'enom' ],  
 +               [ $c->l('freedns') => 'freedns' ],  
 +               [ $c->l('freemyip') => 'freemyip' ],  
 +               [ $c->l('gandi') => 'gandi' ],  
 +               [ $c->l('godaddy') => 'godaddy' ],  
 +               [ $c->l('googledomains') => 'googledomains' ],  
 +               [ $c->l('hetzner') => 'hetzner' ],  
 +               [ $c->l('infomaniak') => 'infomaniak' ],  
 +               [ $c->l('keysystems') => 'keysystems' ],  
 +               [ $c->l('mythicdyn') => 'mythicdyn' ],  
 +               [ $c->l('namecheap') => 'namecheap' ],  
 +               [ $c->l('nfsn') => 'nfsn' ],  
 +               [ $c->l('njalla') => 'njalla' ],  
 +               [ $c->l('noip') => 'noip' ],  
 +               [ $c->l('nsupdate') => 'nsupdate' ],  
 +               [ $c->l('ovh') => 'ovh' ],  
 +               [ $c->l('porkbun') => 'porkbun' ],  
 +               [ $c->l('regfishde') => 'regfishde' ],  
 +               [ $c->l('sitelutions') => 'sitelutions' ],  
 +               [ $c->l('woima') => 'woima' ],  
 +               [ $c->l('yandex') => 'yandex' ],  
 +               [ $c->l('zoneedit') => 'zoneedit' ]      
 +       ] );      
 +       return $dnsservices;      
       
184  -    # v3.11.1 labels  -    # v3.11.1 labels
185  -    [  -    [
186  -               [$c->l('1984') '1984'],  -               [$c->l('1984') '1984'],
# Line 196  diff -urN smeserver-ddclient-1.3.0.old/r Line 222  diff -urN smeserver-ddclient-1.3.0.old/r
222  -               [$c->l('zoneedit1') 'zoneedit1']    -               [$c->l('zoneedit1') 'zoneedit1']  
223  -    ]    -    ]  
224  -    # end of v3.11.1 labels  -    # end of v3.11.1 labels
225  -      +    my $dnsservices = ( [    
226    +               [ $c->l('1984') => '1984' ],
227    +               [ $c->l('changeip') => 'changeip' ],
228    +               [ $c->l('cloudflare') => 'cloudflare' ],
229    +               [ $c->l('cloudns') => 'cloudns' ],
230    +               [ $c->l('digitalocean') => 'digitalocean' ],
231    +               [ $c->l('dinahosting') => 'dinahosting' ],
232    +               [ $c->l('dnsexit') => 'dnsexit' ],
233    +               [ $c->l('dnsmadeeasy') => 'dnsmadeeasy' ],
234    +               [ $c->l('domeneshop') => 'domeneshop' ],
235    +               [ $c->l('dondominio') => 'dondominio' ],
236    +               [ $c->l('dslreports') => 'dslreports' ],
237    +               [ $c->l('duckdns') => 'duckdns' ],
238    +               [ $c->l('dyndns1') => 'dyndns1' ],
239    +               [ $c->l('dyndns2') => 'dyndns2' ],
240    +               [ $c->l('easydns') => 'easydns' ],
241    +               [ $c->l('enom') => 'enom' ],
242    +               [ $c->l('freedns') => 'freedns' ],
243    +               [ $c->l('freemyip') => 'freemyip' ],
244    +               [ $c->l('gandi') => 'gandi' ],
245    +               [ $c->l('godaddy') => 'godaddy' ],
246    +               [ $c->l('googledomains') => 'googledomains' ],
247    +               [ $c->l('hetzner') => 'hetzner' ],
248    +               [ $c->l('infomaniak') => 'infomaniak' ],
249    +               [ $c->l('keysystems') => 'keysystems' ],
250    +               [ $c->l('mythicdyn') => 'mythicdyn' ],
251    +               [ $c->l('namecheap') => 'namecheap' ],
252    +               [ $c->l('nfsn') => 'nfsn' ],
253    +               [ $c->l('njalla') => 'njalla' ],
254    +               [ $c->l('noip') => 'noip' ],
255    +               [ $c->l('nsupdate') => 'nsupdate' ],
256    +               [ $c->l('ovh') => 'ovh' ],
257    +               [ $c->l('porkbun') => 'porkbun' ],
258    +               [ $c->l('regfishde') => 'regfishde' ],
259    +               [ $c->l('sitelutions') => 'sitelutions' ],
260    +               [ $c->l('woima') => 'woima' ],
261    +               [ $c->l('yandex') => 'yandex' ],
262    +               [ $c->l('zoneedit') => 'zoneedit' ]    
263    +       ] );    
264    +       return $dnsservices;    
265        
266  -      -    
267  -        #[   [ $c->l('CUSTOMDNS'),        'CUSTOMDNS' ],  -        #[   [ $c->l('CUSTOMDNS'),        'CUSTOMDNS' ],
268    -            #[ $c->l('DYNDNS1'),          'DYNDNS1' ],
269    -            #[ $c->l('DYNDNS2'),          'DYNDNS2' ],
270    -            #[ $c->l('DYNDNS3'),          'DYNDNS3' ],
271    -            #[ $c->l('ZONEDIT'),          'ZONEDIT' ],
272    -            #[ $c->l('EASYDNS'),          'EASYDNS' ],
273    -            #[ $c->l('HAMMER'),           'HAMMER' ],
274    -            #[ $c->l('DSLREPORTS'),       'DSLREPORTS' ],
275    -            #[ $c->l('EURODYNDNS'),       'EURODYNDNS' ],
276    -            #[ $c->l('DTDNS'),            'DTDNS' ],
277    -            #[ $c->l('LOOPIA'),           'LOOPIA' ],
278    -            #[ $c->l('DNSPARK'),          'DNSPARK' ],
279    -            #[ $c->l('DYNHOST'),          'DYNHOST' ],
280    -            #[ $c->l('NOIP'),             'NOIP' ],
281    -            #[ $c->l('CHANGEIP'),         'CHANGEIP' ],
282    -            #[ $c->l('NAMECHEAP'),        'NAMECHEAP' ],
283    -            #[ $c->l('SPDNS'),            'SPDNS' ],
284    -            #[ $c->l('SITELUTIONS'),      'SITELUTIONS' ],
285    -            #[ $c->l('FREEDNS'),          'FREEDNS' ],
286    -            #[ $c->l('NSUPDATE'),         'NSUPDATE' ],
287    -            #[ $c->l('CLOUDFLARE'),       'CLOUDFLARE' ],
288    -            #[ $c->l('GOOGLEDOMAINS'),    'GOOGLEDOMAINS' ],
289    -            #[ $c->l('DUCKDNS'),          'DUCKDNS' ],
290    -            #[ $c->l('FREEMYIP'),         'FREEMYIP' ],
291    -            #[ $c->l('WOIMA'),            'WOIMA' ],
292    -            #[ $c->l('YANDEX'),           'YANDEX' ],
293    -            #[ $c->l('DNSMADEEASY'),      'DNSMADEEASY' ],
294    -            #[ $c->l('DONDOMINIO'),       'DONDOMINIO' ],
295    -            #[ $c->l('NEARLYFREESPEECH'), 'NFSN' ],
296    -            #[ $c->l('OVH'),              'OVH' ],
297    -            #[ $c->l('CLOUDNS'),          'CLOUDNS' ]
298    -        #]
299    -    );
300    -    return $Labels;
301  +    #my $output = `ddclient -list-protocols`;  # Run ddclient command and capture the output  +    #my $output = `ddclient -list-protocols`;  # Run ddclient command and capture the output
302  +    #my @protocols;  +    #my @protocols;
303  +    #foreach my $line (split /\n/, $output) {  +    #foreach my $line (split /\n/, $output) {
# Line 208  diff -urN smeserver-ddclient-1.3.0.old/r Line 307  diff -urN smeserver-ddclient-1.3.0.old/r
307  +        #push @protocols, [$custom_value, $protocol];  +        #push @protocols, [$custom_value, $protocol];
308  +    #}  +    #}
309  +   #return \@protocols;  # Return a reference to the protocols array  +   #return \@protocols;  # Return a reference to the protocols array
310  +}   }
 +  
 +# Pre 3.11.1 dns services  
 +          #[   [ $c->l('CUSTOMDNS'),        'CUSTOMDNS' ],  
              #[ $c->l('DYNDNS1'),          'DYNDNS1' ],  
              #[ $c->l('DYNDNS2'),          'DYNDNS2' ],  
              #[ $c->l('DYNDNS3'),          'DYNDNS3' ],  
 @@ -196,9 +307,6 @@  
              #[ $c->l('OVH'),              'OVH' ],  
              #[ $c->l('CLOUDNS'),          'CLOUDNS' ]  
          #]  
 -    );  
 -    return $Labels;  
 -}  
311    
312   sub main {   sub main {
313       #  @@ -230,13 +304,15 @@
 @@ -230,13 +338,15 @@  
314       my $emptycust = ( scalar @FreeDomains == 0 );       my $emptycust = ( scalar @FreeDomains == 0 );
315    
316       my $Labels = (       my $Labels = (
# Line 240  diff -urN smeserver-ddclient-1.3.0.old/r Line 325  diff -urN smeserver-ddclient-1.3.0.old/r
325  +                       [ $c->l('SME external Interface') => "smeIF" ],  +                       [ $c->l('SME external Interface') => "smeIF" ],
326  +                       [ $c->l('SME configuration DB') => 'smeCMD' ],  +                       [ $c->l('SME configuration DB') => 'smeCMD' ],
327  +                       [ $c->l('web') => 'web' ],  +                       [ $c->l('web') => 'web' ],
328  +                       [ $c->l('router') => 'router' ],  +                       [ $c->l('Router/Firewall') => 'router' ],
329  +                       [ $c->l('Interface') => 'if' ],  +                       [ $c->l('Interface') => 'if' ],
330  +                       [ $c->l('IP') => 'ip' ],  +                       [ $c->l('IP') => 'ip' ],
331  +                       [ $c->l('Command') => 'cmd' ]  +                       [ $c->l('Command') => 'cmdv4' ]
332  +               ]  +               ]
333       );       );
334    
335       $c->stash(       $c->stash(
336  @@ -246,6 +356,9 @@  @@ -246,6 +322,9 @@
337           domains      => \@domains,           domains      => \@domains,
338           freedomains  => \@FreeDomains,           freedomains  => \@FreeDomains,
339           methodlabels => $Labels,           methodlabels => $Labels,
# Line 258  diff -urN smeserver-ddclient-1.3.0.old/r Line 343  diff -urN smeserver-ddclient-1.3.0.old/r
343           emptydom     => $emptydom,           emptydom     => $emptydom,
344           emptycust    => $emptycust           emptycust    => $emptycust
345       );       );
346  @@ -260,6 +373,7 @@  @@ -260,6 +339,7 @@
347       # Called to update the parameters relating to the Ip address of the server       # Called to update the parameters relating to the Ip address of the server
348       #       #
349       my $c = shift;       my $c = shift;
# Line 266  diff -urN smeserver-ddclient-1.3.0.old/r Line 351  diff -urN smeserver-ddclient-1.3.0.old/r
351       $ddc_datas{"success"} = pushParams($c);       $ddc_datas{"success"} = pushParams($c);
352       do_display($c);       do_display($c);
353   }   }
354  @@ -269,6 +383,7 @@  @@ -269,6 +349,7 @@
355       #Called to update/delete the ddclient for a specific inbuilt domain       #Called to update/delete the ddclient for a specific inbuilt domain
356       #       #
357       my $c = shift;       my $c = shift;
# Line 274  diff -urN smeserver-ddclient-1.3.0.old/r Line 359  diff -urN smeserver-ddclient-1.3.0.old/r
359       my $retmsg;       my $retmsg;
360       if ( $c->param("Route") eq "ddclient2" ) {    #Route is hidden field       if ( $c->param("Route") eq "ddclient2" ) {    #Route is hidden field
361           $retmsg = performModifyCustom($c);           $retmsg = performModifyCustom($c);
362  @@ -276,10 +391,11 @@  @@ -276,10 +357,11 @@
363       else {       else {
364           $retmsg = performModifyDomain($c);           $retmsg = performModifyDomain($c);
365       }       }
# Line 287  diff -urN smeserver-ddclient-1.3.0.old/r Line 372  diff -urN smeserver-ddclient-1.3.0.old/r
372               $c->l( '' . $dns ) );               $c->l( '' . $dns ) );
373           do_display( $c, %ddc_datas );           do_display( $c, %ddc_datas );
374       }       }
375  @@ -296,7 +412,7 @@  @@ -296,7 +378,7 @@
376       # Create custom domain       # Create custom domain
377       #       #
378       my $c     = shift;       my $c     = shift;
# Line 296  diff -urN smeserver-ddclient-1.3.0.old/r Line 381  diff -urN smeserver-ddclient-1.3.0.old/r
381       my $modul = '';       my $modul = '';
382       my $trt   = "NEW";       my $trt   = "NEW";
383    
384  @@ -305,18 +421,21 @@  @@ -305,18 +387,21 @@
385           title     => $title,           title     => $title,
386           modul     => $modul,           modul     => $modul,
387           ddc_datas => \%ddc_datas,           ddc_datas => \%ddc_datas,
# Line 320  diff -urN smeserver-ddclient-1.3.0.old/r Line 405  diff -urN smeserver-ddclient-1.3.0.old/r
405               $c->l( '' . $dns ) );               $c->l( '' . $dns ) );
406           do_display( $c, %ddc_datas );           do_display( $c, %ddc_datas );
407       }       }
408  @@ -334,7 +453,7 @@  @@ -334,7 +419,7 @@
409       # Display delete or modify panel for custom domain       # Display delete or modify panel for custom domain
410       #       #
411       my $c     = shift;       my $c     = shift;
# Line 329  diff -urN smeserver-ddclient-1.3.0.old/r Line 414  diff -urN smeserver-ddclient-1.3.0.old/r
414       my $modul = '';       my $modul = '';
415       my $trt   = $c->param("trt");       my $trt   = $c->param("trt");
416    
417  @@ -349,7 +468,9 @@  @@ -349,7 +434,9 @@
418           title     => $title,           title     => $title,
419           modul     => $modul,           modul     => $modul,
420           ddc_datas => \%ddc_datas,           ddc_datas => \%ddc_datas,
# Line 340  diff -urN smeserver-ddclient-1.3.0.old/r Line 425  diff -urN smeserver-ddclient-1.3.0.old/r
425       );       );
426       $c->render( template => 'ddclient' );       $c->render( template => 'ddclient' );
427   }   }
428  @@ -360,21 +481,23 @@  @@ -360,21 +447,23 @@
429       # param trt = MOD or DEL       # param trt = MOD or DEL
430       #       #
431       my $c     = shift;       my $c     = shift;
# Line 367  diff -urN smeserver-ddclient-1.3.0.old/r Line 452  diff -urN smeserver-ddclient-1.3.0.old/r
452       );       );
453       $c->render( template => 'ddclient' );       $c->render( template => 'ddclient' );
454   }   }
455  @@ -386,10 +509,11 @@  @@ -386,10 +475,11 @@
456       #       #
457       my $c      = shift;       my $c      = shift;
458       my $route  = $c->current_route;       my $route  = $c->current_route;
# Line 380  diff -urN smeserver-ddclient-1.3.0.old/r Line 465  diff -urN smeserver-ddclient-1.3.0.old/r
465    
466       #Delete it and return to front summary panel - depends on route domain or custom       #Delete it and return to front summary panel - depends on route domain or custom
467       if ( $c->param("Route") eq "ddclient2" ) {    #Route is hidden field       if ( $c->param("Route") eq "ddclient2" ) {    #Route is hidden field
468  @@ -400,7 +524,7 @@  @@ -400,7 +490,7 @@
469       }       }
470    
471       if ( $retmsg eq "ok" ) {       if ( $retmsg eq "ok" ) {
# Line 389  diff -urN smeserver-ddclient-1.3.0.old/r Line 474  diff -urN smeserver-ddclient-1.3.0.old/r
474               $c->l( '' . $c->param("dns") ) );               $c->l( '' . $c->param("dns") ) );
475       }       }
476       else { $ddc_datas{"error"} = $retmsg; }       else { $ddc_datas{"error"} = $retmsg; }
477  @@ -415,15 +539,16 @@  @@ -415,15 +505,16 @@
478       #       #
479       my $c      = shift;       my $c      = shift;
480       my $route  = $c->current_route;       my $route  = $c->current_route;
# Line 408  diff -urN smeserver-ddclient-1.3.0.old/r Line 493  diff -urN smeserver-ddclient-1.3.0.old/r
493       }       }
494       else { $ddc_datas{"error"} = $retmsg; }       else { $ddc_datas{"error"} = $retmsg; }
495       do_display( $c, %ddc_datas );       do_display( $c, %ddc_datas );
496  @@ -588,6 +713,8 @@  @@ -450,7 +541,7 @@
497    
498             foreach $domain ( sort @virtualDomains ) {
499                 my %properties = $domaindb->get($domain)->props;
500    -            my $test = $domaindb->get_prop( $domain, "dns" ) || '';
501    +            my $test = $domaindb->get($domain) || '';
502                 my %extraprops;
503                 if ( $test ne '' ) {
504                     %extraprops = $domaindb->get($domain)->props;
505    @@ -567,6 +658,8 @@
506         my $Extinterface = $ddretrieve->prop('Extinterface') || '';
507         my $cmd          = $ddretrieve->prop('cmd') || '';
508         my $forceIP      = $ddretrieve->prop('ForceIP') || '';
509    +    my $fwlogin      = $ddretrieve->prop('fwlogin') || '';
510    +    my $fwpassword   = $ddretrieve->prop('fwpassword') || '';
511         my $res          = {
512             "ssl"          => $ssl,
513             "DeamonUpdate" => $DeamonUpdate,
514    @@ -574,29 +667,43 @@
515             "Extinterface" => $Extinterface,
516             "cmd"          => $cmd,
517             "ForceIP"      => $forceIP,
518    -        "urlcheckip"   => $urlcheckip
519    +        "urlcheckip"   => $urlcheckip,
520    +        "FWlogin"         => $fwlogin,
521    +        "FWpassword"   => $fwpassword
522         };
523         return $res;
524     }
525    
526     sub pushParams {
527         my $c                 = shift;
528    -    my $DeamonUpdate      = $c->param('retrievedeamonupdate');
529    -    my $urlcheckip        = $c->param('retrieveurlcheckip');
530    -    my $ssl               = $c->param('retrievessl');
531    +    my $retrievedeamonupdate      = $c->param('retrievedeamonupdate');
532    +    my $retrieverouter            = $c->param('retrieverouter');
533    +    my $retrievewebservice        = $c->param('retrievewebservice');
534    +    my $retrieveurlcheckip        = $c->param('retrieveurlcheckip');
535    +    my $retrievessl               = $c->param('retrievessl');
536         my $retrievemethod    = $c->param('retrievemethod');
537       my $retrieveinterface = $c->param('retrieveinterface');       my $retrieveinterface = $c->param('retrieveinterface');
538       my $retrievecmd       = $c->param('retrievecmd');       my $retrievecmd       = $c->param('retrievecmd');
539       my $retrieveip        = $c->param('retrieveip');       my $retrieveip        = $c->param('retrieveip');
540    +    my $retrievefwlogin   = $c->param('retrieverouterlogin');
541    +    my $retrievefwpassword   = $c->param('retrieverouterpassword');
542  +      +    
543  +    #print 1 / 0; #Crash  +    #print 1 / 0; #Crash
544    
545       my $ddclient = $db->get('ddclient');       my $ddclient = $db->get('ddclient');
546       $ddclient->set_prop( 'urlcheckip'   => $urlcheckip );  -    $ddclient->set_prop( 'urlcheckip'   => $urlcheckip );
547  @@ -616,7 +743,7 @@  -    $ddclient->set_prop( 'DeamonUpdate' => $DeamonUpdate );
548    -    $ddclient->set_prop( 'SSL'          => $ssl );
549    +    $ddclient->set_prop( 'urlcheckip'   => $retrievewebservice || $retrieveurlcheckip );
550    +    $ddclient->set_prop( 'DeamonUpdate' => $retrievedeamonupdate );
551    +    $ddclient->set_prop( 'SSL'          => $retrievessl );
552         $ddclient->set_prop( 'method'       => $retrievemethod );
553    -    $ddclient->set_prop( 'Extinterface' => $retrieveinterface );
554    +    if ($retrievemethod eq 'router') {    
555    +               $ddclient->set_prop( 'Extinterface' => $retrieverouter );
556    +       } else {
557    +               $ddclient->set_prop( 'Extinterface' => $retrieveinterface );
558    +       }
559         $ddclient->set_prop( 'cmd'          => $retrievecmd );
560         $ddclient->set_prop( 'ForceIP'      => $retrieveip );
561    +    $ddclient->set_prop( 'fwlogin'      => $retrievefwlogin );
562    +    $ddclient->set_prop( 'fwpassword'   => $retrievefwpassword );
563    
564         $domaindb->reload();
565    
566    @@ -616,7 +723,7 @@
567       #------------------------------------------------------------       #------------------------------------------------------------
568    
569       my $domainName = $c->param('domainName');       my $domainName = $c->param('domainName');
# Line 426  diff -urN smeserver-ddclient-1.3.0.old/r Line 572  diff -urN smeserver-ddclient-1.3.0.old/r
572           $domainName = $1;           $domainName = $1;
573       }       }
574       else {       else {
575  @@ -624,7 +751,7 @@  @@ -624,7 +731,7 @@
576       }       }
577    
578       my $domainLogin = $c->param('login');       my $domainLogin = $c->param('login');
# Line 435  diff -urN smeserver-ddclient-1.3.0.old/r Line 581  diff -urN smeserver-ddclient-1.3.0.old/r
581           $domainLogin = $1;           $domainLogin = $1;
582       }       }
583       else {       else {
584  @@ -632,7 +759,7 @@  @@ -632,7 +739,7 @@
585       }       }
586    
587       my $domainPassword = $c->param('password');       my $domainPassword = $c->param('password');
# Line 444  diff -urN smeserver-ddclient-1.3.0.old/r Line 590  diff -urN smeserver-ddclient-1.3.0.old/r
590           $domainPassword = $1;           $domainPassword = $1;
591       }       }
592       else {       else {
593  @@ -646,7 +773,7 @@  @@ -646,7 +753,7 @@
594    
595       my $dns = $c->param('dns');       my $dns = $c->param('dns');
596       if ( $dns eq 'CUSTOMDNS' ) {       if ( $dns eq 'CUSTOMDNS' ) {
# Line 453  diff -urN smeserver-ddclient-1.3.0.old/r Line 599  diff -urN smeserver-ddclient-1.3.0.old/r
599               $customDNS = $1;               $customDNS = $1;
600           }           }
601           else           else
602  @@ -685,7 +812,7 @@  @@ -685,7 +792,7 @@
603       # Attempt to delete domain       # Attempt to delete domain
604       #------------------------------------------------------------       #------------------------------------------------------------
605    
# Line 462  diff -urN smeserver-ddclient-1.3.0.old/r Line 608  diff -urN smeserver-ddclient-1.3.0.old/r
608           $domain = $1;           $domain = $1;
609       }       }
610       else {       else {
611  @@ -726,7 +853,7 @@  @@ -726,7 +833,7 @@
612       #------------------------------------------------------------       #------------------------------------------------------------
613    
614       my $domainName = $c->param('domainName');       my $domainName = $c->param('domainName');
# Line 471  diff -urN smeserver-ddclient-1.3.0.old/r Line 617  diff -urN smeserver-ddclient-1.3.0.old/r
617           $domainName = $1;           $domainName = $1;
618       }       }
619       else {       else {
620  @@ -749,7 +876,7 @@  @@ -749,7 +856,7 @@
621    
622       my $domainDesc  = $c->param('desc');       my $domainDesc  = $c->param('desc');
623       my $domainLogin = $c->param('login');       my $domainLogin = $c->param('login');
# Line 480  diff -urN smeserver-ddclient-1.3.0.old/r Line 626  diff -urN smeserver-ddclient-1.3.0.old/r
626           $domainLogin = $1;           $domainLogin = $1;
627       }       }
628       else {       else {
629  @@ -757,7 +884,7 @@  @@ -757,7 +864,7 @@
630       }       }
631    
632       my $domainPassword = $c->param('password');       my $domainPassword = $c->param('password');
# Line 489  diff -urN smeserver-ddclient-1.3.0.old/r Line 635  diff -urN smeserver-ddclient-1.3.0.old/r
635           $domainPassword = $1;           $domainPassword = $1;
636       }       }
637       else {       else {
638  @@ -771,7 +898,7 @@  @@ -771,7 +878,7 @@
639    
640       my $dns = $c->param('dns');       my $dns = $c->param('dns');
641       if ( $dns eq 'CUSTOMDNS' ) {       if ( $dns eq 'CUSTOMDNS' ) {
# Line 498  diff -urN smeserver-ddclient-1.3.0.old/r Line 644  diff -urN smeserver-ddclient-1.3.0.old/r
644               $customDNS = $1;               $customDNS = $1;
645           }           }
646           else {           else {
647  @@ -809,7 +936,7 @@  @@ -809,7 +916,7 @@
648       #------------------------------------------------------------       #------------------------------------------------------------
649    
650       my $domainName = $c->param('domainName');       my $domainName = $c->param('domainName');
# Line 507  diff -urN smeserver-ddclient-1.3.0.old/r Line 653  diff -urN smeserver-ddclient-1.3.0.old/r
653           $domainName = $1;           $domainName = $1;
654       }       }
655       else {       else {
656  @@ -817,7 +944,7 @@  @@ -817,7 +924,7 @@
657       }       }
658    
659       my $domainLogin = $c->param('login');       my $domainLogin = $c->param('login');
# Line 516  diff -urN smeserver-ddclient-1.3.0.old/r Line 662  diff -urN smeserver-ddclient-1.3.0.old/r
662           $domainLogin = $1;           $domainLogin = $1;
663       }       }
664       else {       else {
665  @@ -825,7 +952,7 @@  @@ -825,7 +932,7 @@
666       }       }
667    
668       my $domainPassword = $c->param('password');       my $domainPassword = $c->param('password');
# Line 525  diff -urN smeserver-ddclient-1.3.0.old/r Line 671  diff -urN smeserver-ddclient-1.3.0.old/r
671           $domainPassword = $1;           $domainPassword = $1;
672       }       }
673       else {       else {
674  @@ -839,7 +966,7 @@  @@ -839,7 +946,7 @@
675    
676       my $dns = $c->param('dns');       my $dns = $c->param('dns');
677       if ( $dns eq 'CUSTOMDNS' ) {       if ( $dns eq 'CUSTOMDNS' ) {
# Line 534  diff -urN smeserver-ddclient-1.3.0.old/r Line 680  diff -urN smeserver-ddclient-1.3.0.old/r
680               $customDNS = $1;               $customDNS = $1;
681           }           }
682           else           else
683  @@ -878,7 +1005,7 @@  @@ -878,7 +985,7 @@
684       # Attempt to delete domain       # Attempt to delete domain
685       #------------------------------------------------------------       #------------------------------------------------------------
686    
# Line 545  diff -urN smeserver-ddclient-1.3.0.old/r Line 691  diff -urN smeserver-ddclient-1.3.0.old/r
691       else {       else {
692  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm
693  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm        2023-11-10 16:11:05.916271986 +0000  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm        2023-11-10 16:11:05.916271986 +0000
694  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm    2023-12-01 16:35:00.000000000 +0000  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm    2023-12-18 09:29:00.000000000 +0000
695  @@ -80,7 +80,7 @@  @@ -80,46 +80,48 @@
696   'CLOUDNS'=>'CLOUDNS www.cloudns.net',   'CLOUDNS'=>'CLOUDNS www.cloudns.net',
697   # End of Service descriptions   # End of Service descriptions
698    
699  -# v3.11.1 Service descriptions:  -# v3.11.1 Service descriptions:
700  +# v3.11.x Service descriptions:  -"1984" => "https://kb.1984hosting.com/doku.php?id=freedns",
701   "1984" => "https://kb.1984hosting.com/doku.php?id=freedns",  -"changeip" => "https://changeip.com",
702   "changeip" => "https://changeip.com",  -"cloudflare" => "https://cloudflare.com",
703   "cloudflare" => "https://cloudflare.com",  -"cloudns" => "https://cloudns.com",
704  @@ -118,7 +118,7 @@  -"digitalocean" => "https://digitalocean.com",
705   "woima" => "http://woima.com",  -"dinahosting" => "https://dinahosting.com",
706   "yandex" => "https://yandex.com",  -"dnsexit" => "https://dnsexit.com/",
707   "zoneedit" => "https://www.zoneedit.com/dynamic-dns/",  -"dnsmadeeasy" => "https://dnsmadeeasy.com",
708    -"domeneshop" => "https://domeneshop.com",
709    -"dondominio" => "https://dondominio.com",
710    -"dslreports" => "https://www.dslreports.com/",
711    -"duckdns" => "https://duckdns.com",
712    -"dyndns1" => "https://account.dyn.com/",
713    -"dyndns2" => "https://account.dyn.com/",
714    -"easydns" => "https://easydns.com",
715    -"enom" => "https://enom.com",
716    -"freedns" => "http://freedns.com",
717    -"freemyip" => "https://freemyip.com",
718    -"gandi" => "https://gandi.com",
719    -"godaddy" => "https://godaddy.com",
720    -"googledomains" => "https://googledomains.com",
721    -"hetzner" => "https://hetzner.com",
722    -"infomaniak" => "https://infomaniak.com",
723    -"keysystems" => "https://keysystems.com",
724    -"mythicdyn" => "https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns",
725    -"namecheap" => "https://namecheap.com",
726    -"nfsn" => "http://nfsn.com",
727    -"njalla" => "https://njalla.com",
728    -"noip" => "https://noip.com",
729    -"nsupdate" => "http://nsupdate.com",
730    -"ovh" => "https://ovh.com",
731    -"porkbun" => "https://porkbun.com",
732    -"regfishde" => "regfishde",
733    -"sitelutions" => "https://sitelutions.com",
734    -"woima" => "http://woima.com",
735    -"yandex" => "https://yandex.com",
736    -"zoneedit" => "https://www.zoneedit.com/dynamic-dns/",
737  -# end of v3.11.1 Service descriptions:  -# end of v3.11.1 Service descriptions:
738    +# v3.11.x Service descriptions:
739    +"1984" => "1984-https://kb.1984hosting.com/doku.php?id=freedns",
740    +"changeip" => "changeip-https://changeip.com",
741    +"cloudflare" => "cloudflare-https://cloudflare.com",
742    +"cloudns" => "cloudns-https://cloudns.com",
743    +"digitalocean" => "digitalocean-https://digitalocean.com",
744    +"dinahosting" => "dinahosting-https://dinahosting.com",
745    +"dnsexit" => "dnsexit-https://dnsexit.com/",
746    +"dnsmadeeasy" => "dnsmadeeasy-https://dnsmadeeasy.com",
747    +"domeneshop" => "domeneshop-https://domeneshop.com",
748    +"dondominio" => "dondominio-https://dondominio.com",
749    +"dslreports" => "dslreports-https://www.dslreports.com/",
750    +"duckdns" => "duckdns-https://duckdns.com",
751    +"dyndns1" => "dyndns1-https://account.dyn.com/",
752    +"dyndns2" => "dyndns2-https://account.dyn.com/",
753    +"easydns" => "easydns-https://easydns.com",
754    +"enom" => "enom-https://enom.com",
755    +"freedns" => "freedns-http://freedns.com",
756    +"freemyip" => "freemyip-https://freemyip.com",
757    +"gandi" => "gandi-https://gandi.com",
758    +"godaddy" => "godaddy-https://godaddy.com",
759    +"googledomains" => "googledomains-https://googledomains.com",
760    +"hetzner" => "hetzner-https://hetzner.com",
761    +"infomaniak" => "infomaniak-https://infomaniak.com",
762    +"keysystems" => "keysystems-https://keysystems.com",
763    +"mythicdyn" => "mythicdyn-https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns",
764    +"namecheap" => "namecheap-https://namecheap.com",
765    +"nfsn" => "nfsn-http://nfsn.com",
766    +"njalla" => "njalla-https://njalla.com",
767    +"noip" => "noip-https://noip.com",
768    +"nsupdate" => "nsupdate-http://nsupdate.com",
769    +"ovh" => "ovh-https://ovh.com",
770    +"porkbun" => "porkbun-https://porkbun.com",
771    +"regfishde" => "regfishde-regfishde",
772    +"sitelutions" => "sitelutions-https://sitelutions.com",
773    +"woima" => "woima-http://woima.com",
774    +"yandex" => "yandex-https://yandex.com",
775    +"zoneedit" => "zoneedit-https://www.zoneedit.com/dynamic-dns/",
776  +# end of v3.11.x Service descriptions:  +# end of v3.11.x Service descriptions:
777    
778    +'MODIFY_DESCRIPTION' => "You can modify the Dynamic DNS Service that you use and change the username and password",
779    +'CREATE_DESCRIPTION' => "You can create a domain to use for the Dynamic DNS Service that you use and set or change the username and password",
780   'CUSTOMDNS' => 'Custom Dynamic DNS Provider',   'CUSTOMDNS' => 'Custom Dynamic DNS Provider',
781   'CUSTOMDNS_LABEL' => 'Custom server Address',   'CUSTOMDNS_LABEL' => 'Custom server Address',
782  @@ -136,8 +136,8 @@   'CUSTOM_PROTOCOL_LABEL' => 'Custom ddclient Protocol',
783    @@ -136,8 +138,8 @@
784   'DESCRIPTION_LABEL' => 'Domain description',   'DESCRIPTION_LABEL' => 'Domain description',
785   'SUCCESSFULLY_MODIFIED_RETRIEVE_IP' => 'You have successfully modified the retrieve IP options.',   'SUCCESSFULLY_MODIFIED_RETRIEVE_IP' => 'You have successfully modified the retrieve IP options.',
786   'RETRIEVE_METHOD' => 'Method to retrieve new IP:',   'RETRIEVE_METHOD' => 'Method to retrieve new IP:',
# Line 577  diff -urN smeserver-ddclient-1.3.0.old/r Line 793  diff -urN smeserver-ddclient-1.3.0.old/r
793   'web' => 'Web query',   'web' => 'Web query',
794  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep
795  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep     2020-06-28 09:57:52.000000000 +0100  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep     2020-06-28 09:57:52.000000000 +0100
796  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep 2023-11-15 16:10:00.000000000 +0000  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep 2023-12-18 09:35:00.000000000 +0000
797  @@ -1,6 +1,6 @@  @@ -1,41 +1,43 @@
798   <div id='ddc_createcustom'>  -<div id='ddc_createcustom'>
799    +<div id='createcustom'>
800        <h2>        <h2>
801  -     %= l 'ddc_CUSTOM_DESCRIPTION'  -     %= l 'ddc_CUSTOM_DESCRIPTION'
802  +     %= l 'CUSTOM_DESCRIPTION'  +     %= l 'CREATE_DESCRIPTION'
803        </h2><br>        </h2><br>
804       % my $btn = l('ddc_APPLY');  -    % my $btn = l('ddc_APPLY');
805    +    % my $btn = l('APPLY');
806       %= form_for '/ddclient7' => (method => 'POST') => begin       %= form_for '/ddclient7' => (method => 'POST') => begin
807                    <span class=label>
808    -                       %=l 'ddc_DOMAIN_NAME_LABEL'
809    +                       %=l 'DOMAIN_NAME_LABEL'
810                    </span><span class=data>
811                            %=text_field 'domainName'
812                    </span><br>
813                    <span class=label>
814    -                       %=l 'ddc_DESCRIPTION_LABEL'
815    +                       %=l 'DESCRIPTION_LABEL'
816                    </span><span class=data>
817                            %=text_field 'desc'
818                    </span><br>
819                    <span class=label>
820    -                       %=l 'ddc_SERVERS_LABEL'
821    +                       %=l 'SERVERS_LABEL'
822                    </span><span class=data>
823                            %=select_field dns=>$dnslabels
824                    </span><br>
825    +<!--
826                    <span class=label>
827    -                       %=l 'ddc_CUSTOMDNS_LABEL'
828    +                       %=l 'CUSTOMDNS_LABEL'
829                    </span><span class=data>
830                            %=text_field  'customdns'
831                    </span><br>
832                    <span class=label>
833    -                       %=l 'ddc_CUSTOM_PROTOCOL_LABEL'
834    +                       %=l 'CUSTOM_PROTOCOL_LABEL'
835                    </span><span class=data>
836                            %=text_field  'customprotocol'
837                    </span><br>
838    +-->
839                    <span class=label>
840    -                       %=l 'ddc_NAME_LABEL'
841    +                       %=l 'NAME_LABEL'
842                    </span><span class=data>
843                            %=text_field  'login'
844                    </span><br>
845                    <span class=label>
846    -                       %=l 'ddc_PASSWORD_LABEL'
847    +                       %=l 'PASSWORD_LABEL'
848                    </span><span class=data>
849                            %=password_field 'password',id=>"ddcPass"
850                            %=label_for show=>"Show"
851    @@ -52,7 +54,7 @@
852                            % end
853                    </span><br>
854                    <span class=label>
855    -                       %=l 'ddc_MX'
856    +                       %=l 'MX'
857                    </span><span class=data>
858                            %=text_field 'mx'
859                    </span><br>    
860    diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep
861    --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep     2023-11-10 16:11:05.900271940 +0000
862    +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep 2023-12-18 11:14:00.000000000 +0000
863    @@ -2,7 +2,7 @@
864         % my $btn = l('REMOVE');
865                    %= form_for '/ddclient4' => (method => 'POST') => begin
866             <p>
867    -               %= $c->render_to_string(inline =>l("ddc_REMOVE_DESCRIPTION",$ddc_datas->{"Domain_details"}->{"Domain"},$ddc_datas->{"Domain_details"}->{"Description"},$c->l($ddc_datas->{"Domain_details"}->{"Publication"})))
868    +               %= $c->render_to_string(inline =>l("REMOVE_DESCRIPTION",$ddc_datas->{"Domain_details"}->{"Domain"},$ddc_datas->{"Domain_details"}->{"Description"},$c->l($ddc_datas->{"Domain_details"}->{"Publication"})))
869                    </p>
870                    % param Domain=>$ddc_datas->{"Domain_details"}->{"Domain"};
871                    %= hidden_field Domain=>$ddc_datas->{"Domain_details"}->{"Domain"}
872    diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep
873    --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep      2023-11-10 16:11:05.900271940 +0000
874    +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep  2023-12-18 11:46:00.000000000 +0000
875    @@ -36,9 +36,12 @@
876                            %= t td => (class => 'sme-border') => $Domain->{"Publication"}
877                            <td class = 'sme-border'>
878                                    <a href="/smanager/ddclient1?trt=MOD&Domain=<%= $Domain->{"Domain"}%>"><%=l 'MODIFY'%></a>
879    -                       </td><td class = 'sme-border'>          
880    -                               <a href="/smanager/ddclient1?trt=DEL&Domain=<%= $Domain->{"Domain"}%>"><%=l 'REMOVE'%></a>
881    -                       </td>          
882    +                       </td>
883    +                       % if ($Domain->{"Publication"} ne ""){
884    +                               <td class = 'sme-border'>      
885    +                                       <a href="/smanager/ddclient1?trt=DEL&Domain=<%= $Domain->{"Domain"}%>"><%=l 'REMOVE'%></a>
886    +                               </td>          
887    +                       % }
888                    </tr>
889                    %}
890                    </tbody>
891  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep
892  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep   2023-11-10 16:11:05.901271943 +0000  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep   2023-11-10 16:11:05.901271943 +0000
893  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep       2023-11-18 14:56:00.000000000 +0000  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep       2023-12-18 11:13:00.000000000 +0000
894  @@ -1,4 +1,9 @@  @@ -1,6 +1,11 @@
895   <div id='modifydomain'>   <div id='modifydomain'>
896  +  <script>  +  <script>
897  +    window.onload = function() {  +    window.onload = function() {
# Line 597  diff -urN smeserver-ddclient-1.3.0.old/r Line 899  diff -urN smeserver-ddclient-1.3.0.old/r
899  +    };  +    };
900  +  </script>  +  </script>
901        <h2>        <h2>
902        %= l 'CUSTOM_DESCRIPTION'  -     %= l 'CUSTOM_DESCRIPTION'
903    +     %= l 'MODIFY_DESCRIPTION'
904        </h2><br>        </h2><br>
905  @@ -24,20 +29,41 @@       % my $btn = l('APPLY');
906         %= form_for '/ddclient8' => (method => 'POST') => begin
907    @@ -10,34 +15,60 @@
908                    %= hidden_field domainName => $ddc_datas->{"Domain_details"}->{"Domain"}
909                            %= $ddc_datas->{"Domain_details"}->{"Domain"}
910                    </span><br><br>
911    +              
912                    <span class=label>
913                            %=l 'DESCRIPTION_LABEL'
914                    </span><span class=data>
915                            %= $ddc_datas->{"Domain_details"}->{"Description"}
916                    </span><br><br>
917    +              
918    +               % if ($ddc_datas->{"Domain_details"}->{"Content"} ne ""){
919                    <span class=label>
920                            %= $ddc_datas->{"Domain_details"}->{"Content"}
921                    </span><span class=data>
922                            %= $ddc_datas->{"Domain_details"}->{"Content"}
923                    </span><br><br>
924    +               % }
925    +              
926                    <span class=label>
927                          %=l 'SERVERS_LABEL'                          %=l 'SERVERS_LABEL'
928                  </span><span class=data>                  </span><span class=data>
929                      % param dns=>$ddc_datas->{"Domain_details"}->{"dns"};                      % param dns=>$ddc_datas->{"Domain_details"}->{"dns"};
# Line 648  diff -urN smeserver-ddclient-1.3.0.old/r Line 972  diff -urN smeserver-ddclient-1.3.0.old/r
972                  </span><span class=data>                  </span><span class=data>
973  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep  diff -urN smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep
974  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep       2023-11-10 16:11:05.902271946 +0000  --- smeserver-ddclient-1.3.0.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep       2023-11-10 16:11:05.902271946 +0000
975  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep   2023-12-01 17:12:00.000000000 +0000  +++ smeserver-ddclient-1.3.0/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep   2023-12-16 08:19:00.000000000 +0000
976  @@ -1,4 +1,9 @@  @@ -1,4 +1,9 @@
977   <div id='paramlist'>   <div id='paramlist'>
978  +  <script>  +  <script>
# Line 673  diff -urN smeserver-ddclient-1.3.0.old/r Line 997  diff -urN smeserver-ddclient-1.3.0.old/r
997                  </span><span class=data>                  </span><span class=data>
998                      % param retrievedeamonupdate=>$ddc_datas->{"params"}->{"DeamonUpdate"};                      % param retrievedeamonupdate=>$ddc_datas->{"params"}->{"DeamonUpdate"};
999                          %=number_field 'retrievedeamonupdate',min=>0                          %=number_field 'retrievedeamonupdate',min=>0
1000  @@ -19,33 +24,88 @@  @@ -19,33 +24,112 @@
1001                  <span class=label>                  <span class=label>
1002                          %=l 'RETRIEVE_METHOD'                          %=l 'RETRIEVE_METHOD'
1003                  </span><span class=data>                  </span><span class=data>
# Line 681  diff -urN smeserver-ddclient-1.3.0.old/r Line 1005  diff -urN smeserver-ddclient-1.3.0.old/r
1005  -                       %=select_field  retrievemethod=>$methodlabels  -                       %=select_field  retrievemethod=>$methodlabels
1006  -               </span><br>  -               </span><br>
1007  -               <span class=label>  -               <span class=label>
1008    -                       %=l 'RETRIEVE_IF'
1009    -               </span><span class=data>
1010    -                   % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"};
1011    -                       %=text_field  'retrieveinterface'
1012    -               </span><br>
1013    -               <span class=label>
1014    -                       %=l 'RETRIEVE_CMD'
1015    -               </span><span class=data>
1016    -                   % param retrievecmd=>$ddc_datas->{"params"}->{"cmd"};
1017    -                       %=text_field  'retrievecmd'
1018    -               </span><br>
1019    -               <span class=label>
1020    -                       %=l 'RETRIEVE_IP'
1021    -               </span><span class=data>
1022    -                   % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"};
1023    -                       %=text_field  'retrieveip'
1024    -               </span><br>
1025    -               <span class=label>
1026    -                       %=l 'RETRIEVE_URLCHECKIP'
1027    -               </span><span class=data>
1028    -                   % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"};
1029    -                       %=text_field 'retrieveurlcheckip'
1030    -               </span><br>
1031  +                   % param retrievemethod=>$ddc_datas->{"params"}->{"method"} unless param 'retrievemethod';  +                   % param retrievemethod=>$ddc_datas->{"params"}->{"method"} unless param 'retrievemethod';
1032  +                       %=select_field  retrievemethod=>$methodlabels,id=>"retrievemethod",onchange=>"SelectInput()"  +                       %=select_field  retrievemethod=>$methodlabels,id=>"retrievemethod",onchange=>"SelectInput()"
1033  +                       %= javascript begin  +                       %= javascript begin
1034  +                       function SelectInput() {  +                       function SelectInput() {
1035  +                         var method = document.querySelector("#retrievemethod");  +                         var method = document.querySelector("#retrievemethod");
1036  +                         const types=['smeIF','smeCMD','web','router','if','ip','cmd','custom'];  +                         const types=['smeIF','smeCMD','web','router','if','ip','cmdv4','custom'];
1037  +                         types.forEach((type)=>{  +                         types.forEach((type)=>{
1038  +                                 var service = document.querySelector(`.${type}`);  +                                 var service = document.querySelector(`.${type}`);
1039  +                                 if (service != null) {  +                                 if (service != null) {
# Line 703  diff -urN smeserver-ddclient-1.3.0.old/r Line 1050  diff -urN smeserver-ddclient-1.3.0.old/r
1050  +               %#  +               %#
1051  +               %# From here the one that is shown depends on the choice above  +               %# From here the one that is shown depends on the choice above
1052  +               %#  +               %#
 +               <div class = smeIF></div>  
 +               <div class = smeIF></div>  
1053  +               %# Only if "router" is chosen  +               %# Only if "router" is chosen
1054  +               <div class = router>  +               <div class = router>
1055  +               <span class=label>  +                       <span class=label>
1056  +                       %=l 'Router type'  +                               %=l 'Router type'
1057  +               </span><span class=data>  +                       </span><span class=data>
1058  +                   % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieveinterface';  +                               % param retrieverouter=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieverouter';
1059  +                       %=select_field  retrieveinterface=>$devices  +                               %=select_field  retrieverouter=>$devices
1060  +               </span><br>  +                       </span><br>
1061    +                       %# Need login and password for router
1062    +                       <span class=label>
1063    +                               %=l 'Router login'
1064    +                       </span><span class=data>
1065    +                               % param retrieverouterlogin=>$ddc_datas->{"params"}->{"FWLogin"} unless param 'retrieverouter';
1066    +                               %=text_field  'retrieverouterlogin'
1067    +                       </span><br>
1068    +                       <span class=label>
1069    +                               %=l 'Router password'
1070    +                       </span><span class=data>
1071    +                               % param retrieverouterpassword=>$ddc_datas->{"params"}->{"FWPassword"} unless param 'retrieverouterpassword';
1072    +                               %=password_field 'retrieverouterpassword', id=>'ddcPass'
1073    +                               %=label_for show=>"Show"
1074    +                               %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
1075    +                               %= javascript begin
1076    +                               function showPass() {
1077    +                                 var x = document.getElementById("ddcPass");
1078    +                                 if (x.type === "password") {
1079    +                                       x.type = "text";
1080    +                                 } else {
1081    +                                       x.type = "password";
1082    +                                 }
1083    +                               }
1084    +                               % end
1085    +                       </span><br>
1086  +               </div>  +               </div>
1087  +  +
1088  +               %# Only if "web" is chosen"  +               %# Only if "web" is chosen"
1089  +               <div class = web>  +               <div class = web>
1090  +               <span class=label>  +                       <span class=label>
1091  +                       %=l 'Web service'  +                               %=l 'Web service'
1092  +               </span><span class=data>  +                       </span><span class=data>
1093  +                   % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrieveurlcheckip';  +                               % param retrievewebservice=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrievewebservice';
1094  +                       %=select_field  retrieveurlcheckip=>$dnslabels  +                               %=select_field  retrievewebservice=>$webservices
1095    +                       </span><br />
1096  +               </div>  +               </div>
1097  +  +
1098  +               %# Only if "Interface" is chosen  +               %# Only if "Interface" is chosen
1099  +               <div class=if>  +               <div class=if>
1100  +               <span class=label Interface>  +                       <span class=label Interface>
1101                          %=l 'RETRIEVE_IF'  +                               %=l 'RETRIEVE_IF'
1102  -               </span><span class=data>  +                       </span><span class=data Interface>
1103  -                   % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"};  +                               % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieveinterface';
1104  +               </span><span class=data Interface>  +                               %=text_field  'retrieveinterface'
1105  +                   % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieveinterface';  +                       </span><br>
                         %=text_field  'retrieveinterface'  
                 </span><br>  
 -               <span class=label>  
1106  +               </div>  +               </div>
1107  +                +              
1108  +               %# Only if "cmd" is chosen  +               %# Only if "cmd" is chosen
1109  +               <div class=cmd>  +               <div class=cmdv4>
1110  +               <span class=label cmd>  +                       <span class=label cmd>
1111                          %=l 'RETRIEVE_CMD'  +                               %=l 'RETRIEVE_CMD'
1112  -               </span><span class=data>  +                       </span><span class=data cmd>
1113  -                   % param retrievecmd=>$ddc_datas->{"params"}->{"cmd"};  +                               % param retrievecmd=>$ddc_datas->{"params"}->{"cmdv4"} unless param 'retrievecmd';
1114  +               </span><span class=data cmd>  +                               %=text_field  'retrievecmd'
1115  +                   % param retrievecmd=>$ddc_datas->{"params"}->{"cmd"} unless param 'retrievecmd';  +                       </span><br>
                         %=text_field  'retrievecmd'  
                 </span><br>  
 -               <span class=label>  
1116  +               </div>  +               </div>
1117  +                +              
1118  +               %# Only if "ip" is chosen  +               %# Only if "ip" is chosen
1119  +               <div class=ip>  +               <div class=ip>
1120  +               <span class=label ip>  +                       <span class=label ip>
1121                          %=l 'RETRIEVE_IP'  +                               %=l 'RETRIEVE_IP'
1122  -               </span><span class=data>  +                       </span><span class=data ip>
1123  -                   % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"};  +                               % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"} unless param 'retrieveip';
1124  +               </span><span class=data ip>  +                               %=text_field  'retrieveip'
1125  +                   % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"} unless param 'retrieveip';  +                       </span><br>
                         %=text_field  'retrieveip'  
                 </span><br>  
 -               <span class=label>  
1126  +               </div>  +               </div>
1127  +                +              
1128  +               %# Only if "custom web service"  +               %# Only if "custom web service"
1129  +               <div  class=custom>  +               <div  class=custom>
1130  +               <span class=label customweb>  +                       <span class=label customweb>
1131                          %=l 'RETRIEVE_URLCHECKIP'  +                               %=l 'RETRIEVE_URLCHECKIP'
1132  -               </span><span class=data>  +                       </span><span class=data customweb>
1133  -                   % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"};  +                               % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrieveurlcheckip';
1134  +               </span><span class=data customweb>  +                               %=text_field 'retrieveurlcheckip'
1135  +                   % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrieveurlcheckip';  +                       </span><br>
                         %=text_field 'retrieveurlcheckip'  
                 </span><br>  
1136  +               </div>  +               </div>
1137                                    
1138                  %= submit_button "$btn", class => 'action'                  %= submit_button "$btn", class => 'action'


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed