/[smecontribs]/rpms/smeserver-ddclient/contribs10/smeserver-ddclient-1.2.1-Update-for-Apache-Mod-Proxy-based-server2.patch
ViewVC logotype

Annotation of /rpms/smeserver-ddclient/contribs10/smeserver-ddclient-1.2.1-Update-for-Apache-Mod-Proxy-based-server2.patch

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


Revision 1.1 - (hide annotations) (download)
Fri Jun 12 07:57:21 2020 UTC (4 years, 5 months ago) by brianr
Branch: MAIN
CVS Tags: smeserver-ddclient-1_3_0-1_el7_sme, smeserver-ddclient-1_3_0-4_el7_sme, smeserver-ddclient-1_3_0-9_el7_sme, smeserver-ddclient-1_3_0-13_el7_sme, smeserver-ddclient-1_3_0-34_el7_sme, smeserver-ddclient-1_3_0-20_el7_sme, smeserver-ddclient-1_3_0-5_el7_sme, smeserver-ddclient-1_3_0-8_el7_sme, smeserver-ddclient-1_3_0-18_el7_sme, smeserver-ddclient-1_3_0-22_el7_sme, smeserver-ddclient-1_3_0-21_el7_sme, smeserver-ddclient-1_3_0-26_el7_sme, smeserver-ddclient-1_3_0-23_el7_sme, smeserver-ddclient-1_3_0-29_el7_sme, smeserver-ddclient-1_3_0-16_el7_sme, smeserver-ddclient-1_3_0-28_el7_sme, smeserver-ddclient-1_3_0-25_el7_sme, smeserver-ddclient-1_3_0-17_el7_sme, smeserver-ddclient-1_3_0-3_el7_sme, smeserver-ddclient-1_3_0-14_el7_sme, smeserver-ddclient-1_3_0-7_el7_sme, smeserver-ddclient-1_3_0-24_el7_sme, smeserver-ddclient-1_3_0-27_el7_sme, smeserver-ddclient-1_3_0-19_el7_sme, smeserver-ddclient-1_3_0-10_el7_sme, smeserver-ddclient-1_3_0-6_el7_sme, smeserver-ddclient-1_3_0-31_el7_sme, smeserver-ddclient-1_3_0-32_el7_sme, smeserver-ddclient-1_2_1-17_el7_sme, smeserver-ddclient-1_3_0-30_el7_sme, smeserver-ddclient-1_3_0-15_el7_sme, smeserver-ddclient-1_3_0-33_el7_sme, smeserver-ddclient-1_3_0-11_el7_sme, smeserver-phpki-ng-0_3-6_el7_sme, smeserver-ddclient-1_3_0-12_el7_sme, HEAD
* Thu Jun 11 2020 Brian Read <brianr@bjsystems.co.uk> 1.2.1-17.sme
- Update-for-Apache-Mod-Proxy-based-server2 [SME:10942 ]

1 brianr 1.1 diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/dirs.txt smeserver-ddclient-1.2.1/root/etc/e-smith/web/dirs.txt
2     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/dirs.txt 2020-06-11 09:31:35.755359875 +0100
3     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/dirs.txt 1970-01-01 01:00:00.000000000 +0100
4     @@ -1,4 +0,0 @@
5     -mkdir -p ./manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller
6     -mkdir -p ./manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/Modules/Ddclient
7     -mkdir -p ./manager2/cgi-bin/srvmngr/themes/default/templates
8     -mkdir -p ./manager2/cgi-bin/srvmngr/themes/default/templates/partials
9     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ddclient.pm smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ddclient.pm
10     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ddclient.pm 2020-06-11 09:31:35.756359885 +0100
11     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Ddclient.pm 1970-01-01 01:00:00.000000000 +0100
12     @@ -1,772 +0,0 @@
13     -package SrvMngr::Controller::Ddclient;
14     -
15     -#----------------------------------------------------------------------
16     -# heading : Configuration
17     -# description : Dynamic Clients
18     -# navigation : 3000 3400
19     -#
20     -# name : ddclient, method : get, url : /ddclient, ctlact : Ddclient#main
21     -# name : ddclient3, method : post, url : /ddclient3, ctlact : Ddclient#do_updateparams
22     -# name : ddclient1, method : get, url : /ddclient1, ctlact : Ddclient#do_summary_domain
23     -# name : ddclient2, method : get, url : /ddclient2, ctlact : Ddclient#do_summary_custom
24     -# name : ddclient4, method : post, url : /ddclient4, ctlact : Ddclient#do_delete_domain
25     -# name : ddclient5, method : get, url : /ddclient5, ctlact : Ddclient#do_update_domain
26     -# name : ddclient6, method : get, url : /ddclient6, ctlact : Ddclient#do_create_custom
27     -# name : ddclient7, method : post, url : /ddclient7, ctlact : Ddclient#do_create_custom_actual
28     -# name : ddclient8, method : post, url : /ddclient8, ctlact : Ddclient#do_update_domain
29     -#
30     -# routes : end
31     -#----------------------------------------------------------------------
32     -
33     -use strict;
34     -use warnings;
35     -use Mojo::Base 'Mojolicious::Controller';
36     -
37     -use constant FALSE => 0;
38     -use constant TRUE => 1;
39     -
40     -use Locale::gettext;
41     -use SrvMngr::I18N;
42     -use SrvMngr qw(theme_list init_session_cgi);
43     -
44     -use Data::Dumper;
45     -use esmith::util;
46     -use esmith::HostsDB;
47     -use esmith::AccountsDB;
48     -
49     -our $db = esmith::ConfigDB->open();
50     -our $adb = esmith::AccountsDB->open();
51     -
52     -our $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains')
53     - or die "Unable to open domains db";
54     -our $edb;
55     -$edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
56     - or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
57     -
58     -my %ddc_datas = ();
59     -
60     -sub get_dns_labels {
61     - #
62     - # dns service names
63     - #
64     - my $c = shift;
65     - my $Labels = (
66     - [
67     - [ $c->l('ddc_CUSTOMDNS'), 'CUSTOMDNS' ],
68     - [ $c->l('ddc_DYNDNS1'), 'DYNDNS1' ],
69     - [ $c->l('ddc_DYNDNS2'), 'DYNDNS2' ],
70     - [ $c->l('ddc_DYNDNS3'), 'DYNDNS3' ],
71     - [ $c->l('ddc_ZONEDIT'), 'ZONEDIT' ],
72     - [ $c->l('ddc_EASYDNS'), 'EASYDNS' ],
73     - [ $c->l('ddc_HAMMER'), 'HAMMER' ],
74     - [ $c->l('ddc_DSLREPORTS'), 'DSLREPORTS' ],
75     - [ $c->l('ddc_EURODYNDNS'), 'EURODYNDNS' ],
76     - [ $c->l('ddc_DTDNS'), 'DTDNS' ],
77     - [ $c->l('ddc_LOOPIA'), 'LOOPIA' ],
78     - [ $c->l('ddc_DNSPARK'), 'DNSPARK' ],
79     - [ $c->l('ddc_DYNHOST'), 'DYNHOST' ],
80     - [ $c->l('ddc_NOIP'), 'NOIP' ],
81     - [ $c->l('ddc_CHANGEIP'), 'CHANGEIP' ],
82     - [ $c->l('ddc_NAMECHEAP'), 'NAMECHEAP' ],
83     - [ $c->l('ddc_SPDNS'), 'SPDNS' ]
84     - ]
85     - );
86     - return $Labels;
87     -}
88     -
89     -sub main {
90     - #
91     - # Initial page - full summary of parameters etc
92     - # Initial para from the Wiki.
93     - #
94     - my $c = shift;
95     - $ddc_datas{"first"} = 'ddc_DESCRIPTION';
96     - do_display( $c, %ddc_datas );
97     -}
98     -
99     -sub do_display {
100     - #
101     - # Front Summary page
102     - #
103     - my $c = shift;
104     - $c->app->log->info( $c->log_req );
105     -
106     - my $title = $c->l('ddc_FORM_TITLE');
107     - my $modul = '';
108     - $ddc_datas{trt} = 'LIST';
109     - my $trt = "LIST";
110     -
111     - $ddc_datas{"params"} = get_params($c);
112     - my @domains = get_domain_table($c);
113     - my @FreeDomains = get_custom_table($c);
114     -
115     - my $emptydom = ( scalar @domains == 0 );
116     - my $emptycust = ( scalar @FreeDomains == 0 );
117     -
118     - my $Labels = (
119     - [
120     - [ $c->l('ddc_SME external Interface'), "smeIF" ],
121     - [ $c->l('ddc_SME configuration DB'), "smeCMD" ],
122     - [ $c->l('ddc_web'), "web" ],
123     - [ $c->l('ddc_Interface'), "if" ],
124     - [ $c->l('ddc_IP'), "ip" ],
125     - [ $c->l('ddc_Command'), "cmd" ]
126     - ]
127     - );
128     -
129     - $c->stash(
130     - title => $title,
131     - modul => $modul,
132     - ddc_datas => \%ddc_datas,
133     - domains => \@domains,
134     - freedomains => \@FreeDomains,
135     - methodlabels => $Labels,
136     - emptydom => $emptydom,
137     - emptycust => $emptycust
138     - );
139     - $ddc_datas{'trt'} = $trt;
140     - $c->stash( title => $title, modul => $modul, ddc_datas => \%ddc_datas );
141     - $c->render( template => 'ddclient' );
142     -
143     -}
144     -
145     -sub do_updateparams {
146     - #
147     - # Called to update the parameters relating to the Ip address of the server
148     - #
149     - my $c = shift;
150     - $ddc_datas{"success"} = pushParams($c);
151     - do_display($c);
152     -}
153     -
154     -sub do_update_domain {
155     - #
156     - #Called to update/delete the ddclient for a specific inbuilt domain
157     - #
158     - my $c = shift;
159     - my $retmsg;
160     - if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
161     - $retmsg = performModifyCustom($c);
162     - }
163     - else {
164     - $retmsg = performModifyDomain($c);
165     - }
166     - if ( $retmsg eq "ok" ) {
167     - my $dns = $c->param('dns');
168     - my $domain = $c->param('domainname');
169     - $ddc_datas{"success"} =
170     - $c->l( "ddc_SUCCESSFULLY_MODIFIED", $domain, $c->l( 'ddc_' . $dns ) );
171     - do_display( $c, %ddc_datas );
172     - }
173     - else {
174     - $ddc_datas{"error"} = $retmsg;
175     -
176     - #Back to input panel to correct error
177     - do_summary_domain($c);
178     - }
179     -}
180     -
181     -sub do_create_custom {
182     - #
183     - # Create custom domain
184     - #
185     - my $c = shift;
186     - my $title = $c->l("ddc_CREATE_TITLE");
187     - my $modul = '';
188     - my $trt = "NEW";
189     -
190     - $ddc_datas{trt} = $trt;
191     - $c->stash(
192     - title => $title,
193     - modul => $modul,
194     - ddc_datas => \%ddc_datas,
195     - dnslabels => get_dns_labels($c)
196     - );
197     - $c->render( template => 'ddclient' );
198     -}
199     -
200     -sub do_create_custom_actual {
201     - my $c = shift;
202     - my $retmsg = performCreateCustom($c);
203     - if ( $retmsg eq "ok" ) {
204     - my $dns = $c->param('dns');
205     - my $domain = $c->param('domainname');
206     - $ddc_datas{"success"} =
207     - $c->l( "ddc_SUCCESSFULLY_DELETED", $domain, $c->l( 'ddc_' . $dns ) );
208     - do_display( $c, %ddc_datas );
209     - }
210     - else {
211     - $ddc_datas{"error"} = $retmsg;
212     - #Back to input panel to correct error
213     - do_createcustom($c);
214     - }
215     -
216     -}
217     -
218     -sub do_summary_custom {
219     - #
220     - # Display delete or modify panel for custom domain
221     - #
222     - my $c = shift;
223     - my $title = $c->l("ddc_MODIFY_TITLE");
224     - my $modul = '';
225     - my $trt = $c->param("trt");
226     -
227     - #Extract domain stuff from DB
228     - my @results =
229     - get_custom_table( $c, $c->param("Domain") ); #Returns just one row
230     -
231     - $ddc_datas{"Domain_details"} = $results[0];
232     -
233     - $ddc_datas{'trt'} = $trt;
234     - $c->stash(
235     - title => $title,
236     - modul => $modul,
237     - ddc_datas => \%ddc_datas,
238     - dnslabels => get_dns_labels($c)
239     - );
240     - $c->render( template => 'ddclient' );
241     -}
242     -
243     -sub do_summary_domain {
244     - #
245     - # Display delete or modify panel for inbuilt domain
246     - # param trt = MOD or DEL
247     - #
248     - my $c = shift;
249     - my $title = $c->l("ddc_MODIFY_TITLE");
250     - my $modul = '';
251     - my $trt = $c->param("trt");
252     -
253     - #Extract domain stuff from DB
254     - my @results =
255     - get_domain_table( $c, $c->param("Domain") ); #Returns just one row
256     - $ddc_datas{"Domain_details"} = $results[0];
257     -
258     - $ddc_datas{'trt'} = $trt;
259     - $c->stash(
260     - title => $title,
261     - modul => $modul,
262     - ddc_datas => \%ddc_datas,
263     - dnslabels => get_dns_labels($c)
264     - );
265     - $c->render( template => 'ddclient' );
266     -}
267     -
268     -sub do_delete_domain {
269     - #
270     - # Actually clearout the inbuilt domain
271     - # Return to initial page with message at the top.
272     - #
273     - my $c = shift;
274     - my $route = $c->current_route;
275     - my $title = $c->l("ddc_REMOVE_TITLE");
276     - my $modul = '';
277     - my $retmsg = "";
278     - my $domain = $c->param("Domain");
279     -
280     - #Delete it and return to front summary panel - depends on route domain or custom
281     - if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
282     - $retmsg = performDeleteCustom( $c, $domain );
283     - }
284     - else {
285     - $retmsg = performDeleteDomain( $c, $domain );
286     - }
287     -
288     - if ( $retmsg eq "ok" ) {
289     - $ddc_datas{"success"} = $c->l( "ddc_SUCCESSFULLY_DELETED", $domain,
290     - $c->l( 'ddc_' . $c->param("dns") ) );
291     - }
292     - else { $ddc_datas{"error"} = $retmsg; }
293     - do_display( $c, %ddc_datas );
294     -
295     -}
296     -
297     -sub do_delete_custom {
298     - #
299     - # Actually delete the custom domain
300     - # Return to initial page with message at the top.
301     - #
302     - my $c = shift;
303     - my $route = $c->current_route;
304     - my $title = $c->l("ddc_REMOVE_TITLE");
305     - my $modul = '';
306     - my $retmsg = "";
307     - my $domain = $c->param("Domain");
308     -
309     - #Delete it and return to front summary panel - depends on route domain or custom
310     - $retmsg = performDeleteCustom( $c, $domain );
311     - if ( $retmsg eq "ok" ) {
312     - $ddc_datas{"success"} = $c->l( "ddc_SUCCESSFULLY_DELETED", $domain );
313     - }
314     - else { $ddc_datas{"error"} = $retmsg; }
315     - do_display( $c, %ddc_datas );
316     -
317     -}
318     -
319     -sub performDeleteDomain {
320     - my ( $c, $domain ) = @_;
321     -
322     - #------------------------------------------------------------
323     - # Attempt to delete domain
324     - #------------------------------------------------------------
325     -
326     - if ( $domain =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
327     - $domain = $1;
328     - }
329     - else {
330     - return $c->l( 'ddc_ERROR_WHILE_REMOVING_DOMAIN', $domain );
331     - }
332     -
333     - my $value = $domaindb->get($domain);
334     - unless ($value) {
335     - return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
336     - }
337     -
338     - my %properties = $value->props;
339     - my $type = $properties{'type'};
340     - if ( $type ne 'domain' ) {
341     - return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
342     - }
343     -
344     - my $evalue = $domaindb->get($domain);
345     -
346     - $evalue->set_prop( 'dns' => '' );
347     - $evalue->set_prop( 'login' => '' );
348     - $evalue->set_prop( 'password' => '' );
349     - $evalue->set_prop( 'customdns' => '' );
350     - $evalue->set_prop( 'customprotocol' => '' );
351     -
352     - $domaindb->reload();
353     -
354     - system( "/sbin/e-smith/signal-event", "ddclient" );
355     -
356     - return "ok";
357     -}
358     -
359     -sub performDeleteCustom {
360     - my ( $c, $domain ) = @_;
361     -
362     - #------------------------------------------------------------
363     - # Attempt to delete domain
364     - #------------------------------------------------------------
365     -
366     - if ( $domain =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
367     - $domain = $1;
368     - }
369     - else {
370     - return $c->l( 'ddc_ERROR_WHILE_REMOVING_DOMAIN', $domain );
371     - }
372     -
373     - my $evalue = $edb->get($domain);
374     - unless ($evalue) {
375     - return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
376     - }
377     -
378     - my %properties = $evalue->props;
379     - my $type = $properties{'type'};
380     -
381     - if ( $type ne 'ddhost' ) {
382     - return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
383     -
384     - }
385     -
386     - $evalue->delete;
387     - $edb->reload();
388     -
389     - system( "/sbin/e-smith/signal-event", "ddclient" );
390     - return "ok";
391     -}
392     -
393     -sub get_domain_table {
394     - #
395     - # Return full table of all domains OR just the details for the specified one
396     - #
397     - my ( $c, $findDomain ) = @_; #$c and domain to find
398     - $findDomain = FALSE if ( scalar(@_) <= 1 );
399     - my $key;
400     - my @virtualDomains = ();
401     - foreach my $domain ( $domaindb->get_all_by_prop( type => 'domain' ) ) {
402     - $key = $domain->key;
403     - push( @virtualDomains, $key );
404     - }
405     - my $numDomains = @virtualDomains;
406     - if ( $numDomains == 0 ) { return () }
407     - else {
408     - my $domain;
409     - my @virtualDomains2d = ();
410     -
411     - foreach $domain ( sort @virtualDomains ) {
412     - my %properties = $domaindb->get($domain)->props;
413     - my $test = $domaindb->get_prop( $domain, "dns" ) || '';
414     - my %extraprops;
415     - if ( $test ne '' ) { %extraprops = $domaindb->get($domain)->props; }
416     -
417     - my $content;
418     - if ( $properties{'Content'} eq 'wwwpublic' ) {
419     - $content = $c->l('ddc_PRIMARY_SITE');
420     - }
421     - else { $content = $c->l( 'ddc_CONTENT', $properties{'Content'} ); }
422     -
423     - my $public;
424     - my %thisrow;
425     - if ( $test eq '' ) {
426     - %thisrow = (
427     - "Domain" => $domain,
428     - "Description" => $properties{'Description'},
429     - "Content" => $content,
430     - "dns" => "",
431     - "Publication" => "",
432     - "customprotocol" => "",
433     - "customdns" => "",
434     - "login" => "",
435     - "password" => "",
436     - "mx" => ""
437     - );
438     - push( @virtualDomains2d, \%thisrow );
439     - }
440     - else {
441     - %thisrow = (
442     - "Domain" => $domain,
443     - "Description" => $properties{'Description'},
444     - "Content" => $content,
445     - "dns" => $extraprops{'dns'},
446     - "Publication" => $c->l( 'ddc_' . $extraprops{'dns'} ),
447     - "customprotocol" => $properties{"customprotocol"},
448     - "customdns" => $properties{"customdns"},
449     - "login" => $properties{"login"},
450     - "password" => $properties{"password"},
451     - "mx" => $properties{"mx"},
452     - );
453     - push( @virtualDomains2d, \%thisrow );
454     -
455     - }
456     - if ($findDomain) {
457     - if ( $domain eq $findDomain ) {
458     - @virtualDomains2d = (); #Just return matching one
459     - push( @virtualDomains2d, \%thisrow );
460     - last;
461     - }
462     - } #Found the one needed
463     - }
464     - return @virtualDomains2d; #Return the lot
465     - }
466     -}
467     -
468     -sub get_custom_table {
469     - #
470     - # Return full table of all domains OR just the details for the specified one
471     - #
472     - my ( $c, $findDomain ) = @_; #$c and domain to find
473     - $findDomain = FALSE if ( scalar(@_) <= 1 );
474     - my $key;
475     - my @FreeDomains = ();
476     - foreach my $domain ( $edb->get_all_by_prop( type => 'ddhost' ) ) {
477     - $key = $domain->key;
478     - push( @FreeDomains, $key );
479     - }
480     - my $numDomains = @FreeDomains;
481     - my @freedomains2d = ();
482     - if ( $numDomains > 0 ) {
483     - foreach my $domain ( sort @FreeDomains ) {
484     - my $vals = $edb->get($domain);
485     - my $content = $vals->prop('desc');
486     - my $publish = $vals->prop('dns');
487     - my %thisrow = (
488     - 'Domain' => $domain,
489     - "Description" => $content,
490     - "dns" => $publish,
491     - "Publication" =>
492     - $c->l( 'ddc_' . $publish ), #msg ddc prefix for ddclient
493     - "customprotocol" => $vals->prop("customprotocol"),
494     - "customdns" => $vals->prop("customdns"),
495     - "login" => $vals->prop("login"),
496     - "password" => $vals->prop("password"),
497     - "mx" => $vals->prop("mx"),
498     -
499     - );
500     -
501     - push( @freedomains2d, \%thisrow );
502     - if ($findDomain) {
503     - if ( $domain eq $findDomain ) {
504     - @freedomains2d = (); #Just return matching one
505     - push( @freedomains2d, \%thisrow );
506     - last;
507     - }
508     - } #Found the one needed
509     -
510     - }
511     - }
512     - return @freedomains2d;
513     -}
514     -
515     -sub get_params {
516     - my $c = shift;
517     - my $ddretrieve = $db->get('ddclient');
518     - my $ExtIF = $db->get('ExternalInterface');
519     - my $DeamonUpdate = $ddretrieve->prop('DeamonUpdate') || '300';
520     - my $urlcheckip = $ddretrieve->prop('urlcheckip') || 'checkip.dyndns.org';
521     - my $ssl = $ddretrieve->prop('SSL') || 'yes';
522     - my $method = $ddretrieve->prop('method') || 'web';
523     - my $Extinterface = $ddretrieve->prop('Extinterface') || '';
524     - my $cmd = $ddretrieve->prop('cmd') || '';
525     - my $forceIP = $ddretrieve->prop('ForceIP') || '';
526     - my $res = {
527     - "ssl" => $ssl,
528     - "DeamonUpdate" => $DeamonUpdate,
529     - "method" => $method,
530     - "Extinterface" => $Extinterface,
531     - "cmd" => $cmd,
532     - "ForceIP" => $forceIP,
533     - "urlcheckip" => $urlcheckip
534     - };
535     - return $res;
536     -}
537     -
538     -sub pushParams {
539     - my $c = shift;
540     - my $DeamonUpdate = $c->param('retrievedeamonupdate');
541     - my $urlcheckip = $c->param('retrieveurlcheckip');
542     - my $ssl = $c->param('retrievessl');
543     - my $retrievemethod = $c->param('retrievemethod');
544     - my $retrieveinterface = $c->param('retrieveinterface');
545     - my $retrievecmd = $c->param('retrievecmd');
546     - my $retrieveip = $c->param('retrieveip');
547     -
548     - my $ddclient = $db->get('ddclient');
549     - $ddclient->set_prop( 'urlcheckip' => $urlcheckip );
550     - $ddclient->set_prop( 'DeamonUpdate' => $DeamonUpdate );
551     - $ddclient->set_prop( 'SSL' => $ssl );
552     - $ddclient->set_prop( 'method' => $retrievemethod );
553     - $ddclient->set_prop( 'Extinterface' => $retrieveinterface );
554     - $ddclient->set_prop( 'cmd' => $retrievecmd );
555     - $ddclient->set_prop( 'ForceIP' => $retrieveip );
556     -
557     - $domaindb->reload();
558     -
559     - system( "/sbin/e-smith/signal-event", "ddclient" );
560     -
561     - return $c->l('ddc_SUCCESSFULLY_MODIFIED_RETRIEVE_IP');
562     -}
563     -
564     -sub performCreateCustom {
565     - my ($c) = shift;
566     -
567     - #------------------------------------------------------------
568     - # Validate parameters and untaint them
569     - #------------------------------------------------------------
570     -
571     - my $domainName = $c->param('domainName');
572     - if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
573     - $domainName = $1;
574     - }
575     - else {
576     - return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
577     - }
578     -
579     - foreach my $domain ( $edb->get_all_by_prop( type => 'domain' ) ) {
580     - my $key = $domain->key;
581     - if ( $key eq $domainName ) {
582     - return $c->l( 'ddc_DOMAIN_NAME_ALREADY_EXIST', $domainName );
583     - }
584     - }
585     -
586     - foreach my $domain ( $domaindb->get_all_by_prop( type => 'ddhost' ) ) {
587     - my $key = $domain->key;
588     - if ( $key eq $domainName ) {
589     - return $c->l( 'ddc_DOMAIN_NAME_ALREADY_EXIST', $domainName );
590     - }
591     - }
592     -
593     - my $domainDesc = $c->param('desc');
594     - my $domainLogin = $c->param('login');
595     - if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
596     - $domainLogin = $1;
597     - }
598     - else {
599     - return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
600     - }
601     -
602     - my $domainPassword = $c->param('password');
603     - if ( $domainPassword =~ /^(.*)$/ ) {
604     - $domainPassword = $1;
605     - }
606     - else {
607     - return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
608     - }
609     -
610     - my $domainMX = $c->param('mx');
611     - my $customDNS = $c->param('customdns');
612     - my $customPROTOCOL = $c->param('customprotocol');
613     -
614     - my $dns = $c->param('dns');
615     - if ( $dns eq 'CUSTOMDNS' ) {
616     - if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
617     - $customDNS = $1;
618     - }
619     - else {
620     - return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
621     - }
622     - }
623     -
624     - #------------------------------------------------------------
625     - # Looks good. Find out if this domain has been taken
626     - # or if the domain is a reserved to provide a secured webserver
627     - # for a previous domain
628     - #------------------------------------------------------------
629     -
630     - my %properties = ();
631     - $properties{'type'} = 'ddhost';
632     - $properties{'dns'} = $dns;
633     - $properties{'login'} = $domainLogin;
634     - $properties{'password'} = $domainPassword;
635     - $properties{'mx'} = $domainMX;
636     - $properties{'desc'} = $domainDesc;
637     - $properties{'customdns'} = $customDNS;
638     - $properties{'customprotocol'} = $customPROTOCOL;
639     - $edb->new_record( $domainName, \%properties );
640     -
641     - system( "/sbin/e-smith/signal-event", "ddclient" );
642     - return "ok";
643     -
644     -}
645     -
646     -sub performModifyDomain {
647     - my $c = shift;
648     -
649     - #------------------------------------------------------------
650     - # Validate parameters and untaint them
651     - #------------------------------------------------------------
652     -
653     - my $domainName = $c->param('domainName');
654     - if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
655     - $domainName = $1;
656     - }
657     - else {
658     - return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
659     - }
660     -
661     - my $domainLogin = $c->param('login');
662     - if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
663     - $domainLogin = $1;
664     - }
665     - else {
666     - return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
667     - }
668     -
669     - my $domainPassword = $c->param('password');
670     - if ( $domainPassword =~ /^(.*)$/ ) {
671     - $domainPassword = $1;
672     - }
673     - else {
674     - return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
675     - }
676     -
677     - my $domainMX = $c->param('mx');
678     - my $customDNS = $c->param('customdns');
679     - my $customPROTOCOL = $c->param('customprotocol');
680     -
681     - my $dns = $c->param('dns');
682     - if ( $dns eq 'CUSTOMDNS' ) {
683     - if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
684     - $customDNS = $1;
685     - }
686     - else
687     -
688     - {
689     - return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
690     - }
691     - }
692     -
693     - #------------------------------------------------------------
694     - # Looks good. Find out if this domain has been taken
695     - # or if the domain is a reserved to provide a secured webserver
696     - # for a previous domain
697     - #------------------------------------------------------------
698     - # my $dns = $c->param ('dns');
699     -
700     - my $dom = $domaindb->get($domainName);
701     -
702     - $dom->set_prop( 'dns' => $dns );
703     - $dom->set_prop( 'login' => $domainLogin );
704     - $dom->set_prop( 'password' => $domainPassword );
705     - $dom->set_prop( 'mx' => $domainMX );
706     - $dom->set_prop( 'customdns' => $customDNS );
707     - $dom->set_prop( 'customprotocol' => $customPROTOCOL );
708     -
709     - $domaindb->reload();
710     -
711     - system( "/sbin/e-smith/signal-event", "ddclient" );
712     - return "ok";
713     -}
714     -
715     -sub performModifyCustom {
716     - my $c = shift;
717     -
718     - #------------------------------------------------------------
719     - # Validate parameters and untaint them
720     - #------------------------------------------------------------
721     -
722     - my $domainName = $c->param('domainName');
723     - if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
724     - $domainName = $1;
725     - }
726     - else {
727     - return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
728     - }
729     -
730     - my $domainLogin = $c->param('login');
731     - if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
732     - $domainLogin = $1;
733     - }
734     - else {
735     - return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
736     - }
737     -
738     - my $domainPassword = $c->param('password');
739     - if ( $domainPassword =~ /^(.*)$/ ) {
740     - $domainPassword = $1;
741     - }
742     - else {
743     - return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
744     - }
745     -
746     - my $domainMX = $c->param('mx');
747     - my $customDNS = $c->param('customdns');
748     - my $customPROTOCOL = $c->param('customprotocol');
749     -
750     - my $dns = $c->param('dns');
751     - if ( $dns eq 'CUSTOMDNS' ) {
752     - if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
753     - $customDNS = $1;
754     - }
755     - else
756     -
757     - {
758     - return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
759     - }
760     - }
761     -
762     - #------------------------------------------------------------
763     - # Looks good. Find out if this domain has been taken
764     - # or if the domain is a reserved to provide a secured webserver
765     - # for a previous domain
766     - #------------------------------------------------------------
767     - # my $dns = $c->param ('dns');
768     -
769     - my $dom = $edb->get($domainName);
770     -
771     - $dom->set_prop( 'dns' => $dns );
772     - $dom->set_prop( 'login' => $domainLogin );
773     - $dom->set_prop( 'password' => $domainPassword );
774     - $dom->set_prop( 'mx' => $domainMX );
775     - $dom->set_prop( 'customdns' => $customDNS );
776     - $dom->set_prop( 'customprotocol' => $customPROTOCOL );
777     -
778     - $domaindb->reload();
779     -
780     - system( "/sbin/e-smith/signal-event", "ddclient" );
781     - return "ok";
782     -}
783     -
784     -1;
785     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/Modules/Ddclient/en.pm smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/Modules/Ddclient/en.pm
786     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/Modules/Ddclient/en.pm 2020-06-11 09:31:35.756359885 +0100
787     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/Modules/Ddclient/en.pm 1970-01-01 01:00:00.000000000 +0100
788     @@ -1,97 +0,0 @@
789     -package SrvMngr::I18N::Modules::Ddclient::en;
790     -use strict;
791     -use warnings;
792     -use utf8;
793     -use Mojo::Base 'SrvMngr::I18N';
794     -
795     -use SrvMngr::I18N::Modules::General::en;
796     -
797     -my %lexicon = (
798     -'ddc_FORM_TITLE' => 'Create, remove or change the publication of virtual domains',
799     -'ddc_Params_for_IP_Retrieval'=>' Parameters to control how the IP of your server is found:',
800     -'ddc_DESCRIPTION'=> 'Use this contrib when you have a sme server connected to a ISP service using a dynamic IP, and you wish to host multiple domains.
801     -<br>ddclient is a client for updating dynamic DNS entries for domains hosted at different DNS providers.
802     -<br>Configure your dynamic host domains via the ddclient server manager panel.
803     -<br>ddclient can be used on servers configured in server gateway mode or in server only mode.<br><br> ',
804     -'ddc_FORM_DESCRIPTION' => 'Virtual Domains for publication on the net:',
805     -'ddc_NO_VIRTUAL_DOMAINS' => 'There are no virtual domains in the system.',
806     -'ddc_CURRENT_LIST_OF_DOMAINS' => 'Current list of virtual domains',
807     -'ddc_PUBLICATION' => 'Publication',
808     -'ddc_PRIMARY_SITE' => 'Primary Site',
809     -'ddc_CONTENT' => '[_1] i-bay',
810     -'ddc_CREATE_TITLE' => 'Create a new publication virtual domain',
811     -'ddc_SERVERS_LABEL' => 'Where to publish',
812     -'ddc_MX' => 'record MX',
813     -'ddc_NAME_LABEL' => 'Login to publish',
814     -'ddc_PASSWORD_LABEL' => 'Password to publish',
815     -'ddc_CONTENT_FIELD_DESCRIPTION' => 'For the web site, you may choose your primary web site or any i-bay as the content.',
816     -'ddc_DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name [_1]. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.',
817     -'ddc_DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description [_1]. Did not create new domain.',
818     -'ddc_DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use. Did not create new domain.',
819     -'ddc_DOMAIN_LOGIN_VALIDATION_ERROR'=> 'Domain login must not be blank and only consist of letter, numbers, "." or "@"',
820     -'ddc_RESERVED_SECURE_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for the virtual domain [_2]. Did not create new domain.',
821     -'ddc_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.',
822     -'ddc_RESERVED_SECURE_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for your system domain name [_2]. Did not create new domain.',
823     -'ddc_SUCCESSFULLY_CREATED' => 'Successfully publication domain [_1] on [_2].',
824     -'ddc_MODIFY_TITLE' => 'Modify virtual domain',
825     -'ddc_NONEXISTENT_DOMAIN_ERROR' => 'Error: [_1] is not an existing domain.',
826     -'ddc_SUCCESSFULLY_MODIFIED' => 'Successfully modified the publication [_1] on [_2].',
827     -'ddc_REMOVE_TITLE' => 'Remove publication of virtual domain',
828     -'ddc_REMOVE_DESCRIPTION' => '<p>You are about to remove the publication of domain [_1] ([_2]) on [_3].
829     -</p>
830     -<p>
831     -<b>Are you sure you wish to remove this domain\'s publication ?</b>
832     -</p>
833     -',
834     -'ddc_ERROR_WHILE_REMOVING_DOMAIN' => 'Error: internal failure while removing publication of [_1].',
835     -'ddc_SUCCESSFULLY_DELETED' => 'Successfully deleted publication of [_1] on [_2].',
836     -'ddc_DYNDNS1' => 'dyndns.org dynamic addresses',
837     -'ddc_DYNDNS2' => 'dyndns.org static addresses',
838     -'ddc_DYNDNS3' => 'dyndns.org custom addresses',
839     -'ddc_ZONEDIT' => 'ZoneEdit (zoneedit.com)',
840     -'ddc_EASYDNS' => 'EasyDNS (easydns.com)',
841     -'ddc_HAMMER' => 'Hammernode (hn.org) dynamic addresses',
842     -'ddc_DSLREPORTS' => 'dslreports.com dynamic-host monitoring',
843     -'ddc_EURODYNDNS' => 'eurodyndns.org dynamic addresses',
844     -'ddc_DTDNS' => 'DtDNS (www.dtdns.com) dynamic addresses',
845     -'ddc_LOOPIA' => 'Loopia (loopia.se) dynamic addresses',
846     -'ddc_DNSPARK' => ' Dnspark (dnspark.com) dynamic addresses',
847     -'ddc_DYNHOST' => ' DynHost (ovh.com) dynamic addresses',
848     -'ddc_NOIP' => ' NoIP (noip.com) dynamic addresses',
849     -'ddc_CHANGEIP' => ' ChangeIP (changeip.com) dynamic addresses',
850     -'ddc_NAMECHEAP' => ' NAMECHEAP (namecheap.com) dynamic addresses',
851     -'ddc_SPDNS' => ' SPDNS (spdns.de) dynamic addresses',
852     -'ddc_CUSTOMDNS' => 'Custom Dynamic DNS Provider',
853     -'ddc_CUSTOMDNS_LABEL' => 'Custom server Address',
854     -'ddc_CUSTOM_PROTOCOL_LABEL' => 'Custom ddclient Protocol',
855     -'ddc_CUSTOM_DESCRIPTION' => 'You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings',
856     -'ddc_CUSTOMDNS_VALIDATION_ERROR' => 'Error: unexpected or missing characters in custom server address field of domain [_1]. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.',
857     -'ddc_ddclient' =>'Dynamic Clients',
858     -'ddc_DOMAIN_NAME_ALREADY_EXIST' => 'Error: this domain:"[_1]" already exists. Please chose another.',
859     -'ddc_FREE_FORM_DESCRIPTION' => 'Here you can create any domain name to publish over the net:',
860     -'ddc_RETRIEVE_SSL' => 'SSL update',
861     -'ddc_RETRIEVE_DEAMONUPDATE' => 'Deamon update (seconds)',
862     -'ddc_RETRIEVE_URLCHECKIP' => 'Url for the external IP',
863     -'ddc_APPLY' => 'Save',
864     -'ddc_DOMAIN_NAME_LABEL' => 'Domain Name',
865     -'ddc_DESCRIPTION_LABEL' => 'Domain description',
866     -'ddc_SUCCESSFULLY_MODIFIED_RETRIEVE_IP' => 'You have successfully modified the retrieve IP options.',
867     -'ddc_RETRIEVE_METHOD' => 'Method to retrieve new IP:',
868     -'ddc_RETRIEVE_IF' => 'Local interface to get new IP, if selected interface method',
869     -'ddc_RETRIEVE_CMD' => 'Command to execute to get IP, if selected command method',
870     -'ddc_SME external Interface' => 'SME external interface',
871     -'ddc_SME configuration DB' => 'SME configuration DB',
872     -'ddc_web' => 'Web query',
873     -'ddc_Interface' => 'IP from interface',
874     -'ddc_IP' => 'Manual IP setting',
875     -'ddc_Command' => 'Command to execute',
876     -'ddc_RETRIEVE_IP' => 'IP to manually force'
877     -);
878     -
879     -our %Lexicon = (
880     - %{ SrvMngr::I18N::Modules::General::en::Lexicon },
881     - %lexicon
882     -);
883     -
884     -
885     -1;
886     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/ddclient.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/ddclient.html.ep
887     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/ddclient.html.ep 2020-06-11 09:31:35.756359885 +0100
888     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/ddclient.html.ep 1970-01-01 01:00:00.000000000 +0100
889     @@ -1,48 +0,0 @@
890     -% layout 'default', title => "Sme server 2 - Dynamic Clients", share_dir => './';
891     -
892     -% content_for 'module' => begin
893     -<div id="module">
894     -
895     - % if ($config->{debug} == 1) {
896     - <p>
897     - %= dumper $c->current_route
898     - </p>
899     - % }
900     -
901     - <h1><%=$title%></h1>
902     - %= $modul
903     -
904     - %if ($ddc_datas->{first}) {
905     - <br><p>
906     - %=$c->render_to_string(inline =>$c->l($ddc_datas->{first}))
907     - </p>
908     -
909     - %} elsif ($ddc_datas->{success}) {
910     - <div class='sme-border'>
911     - <h2> Operation Status Report</h2><p>
912     - %= $c->l($ddc_datas->{success});
913     - </p>
914     - </div>
915     -
916     - %} elsif ($ddc_datas->{error}) {
917     - <div class='sme-error'>
918     - <h2> Operation Status Report - error</h2><p>
919     - %= $c->l($ddc_datas->{error});
920     - </p>
921     - </div>
922     - %}
923     -
924     - % if ($ddc_datas->{trt} eq 'NEW') {
925     - %= include 'partials/_ddc_create_cust'
926     - %} elsif ($ddc_datas->{trt} eq 'DEL') {
927     - %= include 'partials/_ddc_del'
928     - %} elsif ($ddc_datas->{trt} eq 'MOD') {
929     - %= include 'partials/_ddc_modify_domain'
930     - %} else { #LIST
931     - %= include 'partials/_ddc_paramlist'
932     - %= include 'partials/_ddc_domainlist'
933     - %= include 'partials/_ddc_customlist'
934     - %}
935     -
936     -</div>
937     -%end
938     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_create_cust.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_create_cust.html.ep
939     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_create_cust.html.ep 2020-06-11 09:31:35.757359896 +0100
940     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_create_cust.html.ep 1970-01-01 01:00:00.000000000 +0100
941     @@ -1,63 +0,0 @@
942     -<div id='ddc_createcustom'>
943     - <h2>
944     - %= l 'ddc_CUSTOM_DESCRIPTION'
945     - </h2><br>
946     - % my $btn = l('ddc_APPLY');
947     - %= form_for '/ddclient7' => (method => 'POST') => begin
948     - <span class=label>
949     - %=l 'ddc_DOMAIN_NAME_LABEL'
950     - </span><span class=data>
951     - %=text_field 'domainName'
952     - </span><br>
953     - <span class=label>
954     - %=l 'ddc_DESCRIPTION_LABEL'
955     - </span><span class=data>
956     - %=text_field 'desc'
957     - </span><br>
958     - <span class=label>
959     - %=l 'ddc_SERVERS_LABEL'
960     - </span><span class=data>
961     - %=select_field dns=>$dnslabels
962     - </span><br>
963     - <span class=label>
964     - %=l 'ddc_CUSTOMDNS_LABEL'
965     - </span><span class=data>
966     - %=text_field 'customdns'
967     - </span><br>
968     - <span class=label>
969     - %=l 'ddc_CUSTOM_PROTOCOL_LABEL'
970     - </span><span class=data>
971     - %=text_field 'customprotocol'
972     - </span><br>
973     - <span class=label>
974     - %=l 'ddc_NAME_LABEL'
975     - </span><span class=data>
976     - %=text_field 'login'
977     - </span><br>
978     - <span class=label>
979     - %=l 'ddc_PASSWORD_LABEL'
980     - </span><span class=data>
981     - %=password_field 'password',id=>"ddcPass"
982     - %=label_for show=>"Show"
983     - %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
984     - %= javascript begin
985     - function showPass() {
986     - var x = document.getElementById("ddcPass");
987     - if (x.type === "password") {
988     - x.type = "text";
989     - } else {
990     - x.type = "password";
991     - }
992     - }
993     - % end
994     - </span><br>
995     - <span class=label>
996     - %=l 'ddc_MX'
997     - </span><span class=data>
998     - %=text_field 'mx'
999     - </span><br>
1000     - %= submit_button "$btn", class => 'action'
1001     - % end
1002     -</div>
1003     -
1004     -
1005     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_customlist.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_customlist.html.ep
1006     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_customlist.html.ep 2020-06-11 09:31:35.757359896 +0100
1007     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_customlist.html.ep 1970-01-01 01:00:00.000000000 +0100
1008     @@ -1,50 +0,0 @@
1009     -<div id='ddc_customlist'>
1010     - <h2>
1011     - %= l 'ddc_FREE_FORM_DESCRIPTION'
1012     - </h2>
1013     -
1014     - %= form_for '/ddclient' => (method => 'POST') => begin
1015     -
1016     - <table class="sme-border"><tbody>
1017     - <tr>
1018     - <th class='sme-border'>
1019     - %=l 'ddc_DOMAIN_NAME_LABEL'
1020     - </th>
1021     - <th class='sme-border'>
1022     - %=l 'ddc_DESCRIPTION_LABEL'
1023     - </th>
1024     - <th class='sme-border'>
1025     - %=l 'ddc_PUBLICATION'
1026     - </th>
1027     - <th class='sme-border' colspan=2>
1028     - %=l 'ACTION'
1029     - </th>
1030     - </tr>
1031     - %if (!$emptycust){
1032     - % foreach my $freeDomain (@$freedomains) {
1033     - <tr>
1034     - %= t td => (class => 'sme-border') => $freeDomain->{"Domain"}
1035     - %= t td => (class => 'sme-border') => $freeDomain->{"Description"}
1036     - %= t td => (class => 'sme-border') => $freeDomain->{"Publication"}
1037     - <td class = 'sme-border'>
1038     - <a href='/server-manager2/ddclient2?trt=MOD&Domain=<%= $freeDomain->{"Domain"}%>'><%=l 'MODIFY'%></a>
1039     - </td><td class = 'sme-border'>
1040     - <a href='/server-manager2/ddclient2?trt=DEL&Domain=<%= $freeDomain->{"Domain"}%>'><%=l 'REMOVE'%></a>
1041     - </td>
1042     - </td>
1043     - </tr>
1044     - %}
1045     - %}
1046     - <tr><td class='sme-border'></td>
1047     - <td class='sme-border'></td>
1048     - <td class='sme-border'>&nbsp;</td>
1049     - <td class='sme-border'>&nbsp;</td>
1050     - <td class='sme-border'>
1051     - <a href="/server-manager2/ddclient6?trt=NEW"><%=l 'CREATE'%></a>
1052     - </td>
1053     - </tr>
1054     -
1055     - </tbody>
1056     - </table>
1057     - % end
1058     -</div>
1059     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_del.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_del.html.ep
1060     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_del.html.ep 2020-06-11 09:31:35.757359896 +0100
1061     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_del.html.ep 1970-01-01 01:00:00.000000000 +0100
1062     @@ -1,14 +0,0 @@
1063     -<div id='ddc_del'>
1064     - % my $btn = l('REMOVE');
1065     - %= form_for '/ddclient4' => (method => 'POST') => begin
1066     - <p>
1067     - %= $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"})))
1068     - </p>
1069     - % param Domain=>$ddc_datas->{"Domain_details"}->{"Domain"};
1070     - %= hidden_field Domain=>$ddc_datas->{"Domain_details"}->{"Domain"}
1071     - %= hidden_field Route=>$c->current_route
1072     - %= hidden_field dns=>$ddc_datas->{"Domain_details"}->{"dns"}
1073     - %= hidden_field trt=>"DEL"
1074     - %= submit_button "$btn", class => 'action'
1075     - % end
1076     -</div>
1077     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_domainlist.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_domainlist.html.ep
1078     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_domainlist.html.ep 2020-06-11 09:31:35.757359896 +0100
1079     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_domainlist.html.ep 1970-01-01 01:00:00.000000000 +0100
1080     @@ -1,48 +0,0 @@
1081     -<div id='ddc_Domainslist'>
1082     - <h2>
1083     - %= l 'ddc_FORM_DESCRIPTION'
1084     - </h2>
1085     - %= form_for '/ddclient' => (method => 'POST') => begin
1086     -
1087     - % if ($emptydom){
1088     - <br><h2>
1089     - %=l 'NO_VIRTUAL_DomainS'
1090     - <h2>
1091     - % } else {
1092     - <table class="sme-border"><tbody>
1093     - <tr>
1094     - <th class='sme-border'>
1095     - %=l 'ddc_DOMAIN_NAME_LABEL'
1096     - </th>
1097     - <th class='sme-border'>
1098     - %=l 'ddc_DESCRIPTION_LABEL'
1099     - </th>
1100     - <th class='sme-border'>
1101     - %=l('ddc_CONTENT',"")
1102     - </th>
1103     - <th class='sme-border'>
1104     - %=l 'ddc_PUBLICATION'
1105     - </th>
1106     -
1107     - <th class='sme-border' colspan=2>
1108     - %=l 'ACTION'
1109     - </th>
1110     - </tr>
1111     - % foreach my $Domain (@$domains) {
1112     - <tr>
1113     - %= t td => (class => 'sme-border') => $Domain->{"Domain"}
1114     - %= t td => (class => 'sme-border') => $Domain->{"Description"}
1115     - %= t td => (class => 'sme-border') => $Domain->{"Content"}
1116     - %= t td => (class => 'sme-border') => $Domain->{"Publication"}
1117     - <td class = 'sme-border'>
1118     - <a href="/server-manager2/ddclient1?trt=MOD&Domain=<%= $Domain->{"Domain"}%>"><%=l 'MODIFY'%></a>
1119     - </td><td class = 'sme-border'>
1120     - <a href="/server-manager2/ddclient1?trt=DEL&Domain=<%= $Domain->{"Domain"}%>"><%=l 'REMOVE'%></a>
1121     - </td>
1122     - </tr>
1123     - %}
1124     - </tbody>
1125     - </table>
1126     - %}
1127     - % end
1128     -</div>
1129     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_modify_domain.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_modify_domain.html.ep
1130     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_modify_domain.html.ep 2020-06-11 09:31:35.758359906 +0100
1131     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_modify_domain.html.ep 1970-01-01 01:00:00.000000000 +0100
1132     @@ -1,77 +0,0 @@
1133     -<div id='ddc_modifydomain'>
1134     - <h2>
1135     - %= l 'ddc_CUSTOM_DESCRIPTION'
1136     - </h2><br>
1137     - % my $btn = l('ddc_APPLY');
1138     - %= form_for '/ddclient8' => (method => 'POST') => begin
1139     - <span class=label>
1140     - %=l 'ddc_DOMAIN_NAME_LABEL'
1141     - </span><span class=data>
1142     - %= hidden_field domainName => $ddc_datas->{"Domain_details"}->{"Domain"}
1143     - %= $ddc_datas->{"Domain_details"}->{"Domain"}
1144     - </span><br><br>
1145     - <span class=label>
1146     - %=l 'ddc_DESCRIPTION_LABEL'
1147     - </span><span class=data>
1148     - %= $ddc_datas->{"Domain_details"}->{"Description"}
1149     - </span><br><br>
1150     - <span class=label>
1151     - %= $ddc_datas->{"Domain_details"}->{"Content"}
1152     - </span><span class=data>
1153     - %= $ddc_datas->{"Domain_details"}->{"Content"}
1154     - </span><br><br>
1155     - <span class=label>
1156     - %=l 'ddc_SERVERS_LABEL'
1157     - </span><span class=data>
1158     - % param dns=>$ddc_datas->{"Domain_details"}->{"dns"};
1159     - %=select_field dns=>$dnslabels
1160     - </span><br>
1161     - <span class=label>
1162     - %=l 'ddc_CUSTOMDNS_LABEL'
1163     - </span><span class=data>
1164     - % param customdns=>$ddc_datas->{"Domain_details"}->{"customdns"};
1165     - %=text_field 'customdns'
1166     - </span><br>
1167     - <span class=label>
1168     - %=l 'ddc_CUSTOM_PROTOCOL_LABEL'
1169     - </span><span class=data>
1170     - % param customprotocol=>$ddc_datas->{"Domain_details"}->{"customprotocol"};
1171     - %=text_field 'customprotocol'
1172     - </span><br>
1173     - <span class=label>
1174     - %=l 'ddc_NAME_LABEL'
1175     - </span><span class=data>
1176     - % param login=>$ddc_datas->{"Domain_details"}->{"login"};
1177     - %=text_field 'login'
1178     - </span><br>
1179     - <span class=label>
1180     - %=l 'ddc_PASSWORD_LABEL'
1181     - </span><span class=data>
1182     - % param password=>$ddc_datas->{"Domain_details"}->{"password"};
1183     - %=password_field 'password',id=>"ddcPass",value=>$ddc_datas->{"Domain_details"}->{"password"}
1184     - %=label_for show=>"Show"
1185     - %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
1186     - %= javascript begin
1187     - function showPass() {
1188     - var x = document.getElementById("ddcPass");
1189     - if (x.type === "password") {
1190     - x.type = "text";
1191     - } else {
1192     - x.type = "password";
1193     - }
1194     - }
1195     - % end
1196     - </span><br>
1197     - <span class=label>
1198     - %=l 'ddc_MX'
1199     - </span><span class=data>
1200     - % param mx=>$ddc_datas->{"Domain_details"}->{"mx"};
1201     - %=text_field 'mx'
1202     - </span><br>
1203     - %= hidden_field trt=>"MOD"
1204     - %= hidden_field Route=>$c->current_route
1205     - %= submit_button "$btn", class => 'action'
1206     - % end
1207     -</div>
1208     -
1209     -
1210     diff -urN smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_paramlist.html.ep smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_paramlist.html.ep
1211     --- smeserver-ddclient-1.2.1.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_paramlist.html.ep 2020-06-11 09:31:35.758359906 +0100
1212     +++ smeserver-ddclient-1.2.1/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ddc_paramlist.html.ep 1970-01-01 01:00:00.000000000 +0100
1213     @@ -1,52 +0,0 @@
1214     -<div id='ddc_paramlist'>
1215     - <h2>
1216     - %= l 'ddc_Params_for_IP_Retrieval'
1217     - </h2>
1218     - % my $btn = l('ddc_APPLY');
1219     - %= form_for '/ddclient3' => (method => 'POST') => begin
1220     - <span class=label>
1221     - %=l 'ddc_RETRIEVE_SSL'
1222     - </span><span class=data>
1223     - % param retrievessl=>$ddc_datas->{"params"}->{"ssl"};
1224     - %=select_field retrievessl=>[['Yes'=>'yes'],['No'=>'no']]
1225     - </span><br>
1226     - <span class=label>
1227     - %=l 'ddc_RETRIEVE_DEAMONUPDATE'
1228     - </span><span class=data>
1229     - % param retrievedeamonupdate=>$ddc_datas->{"params"}->{"DeamonUpdate"};
1230     - %=number_field 'retrievedeamonupdate',min=>0
1231     - </span><br>
1232     - <span class=label>
1233     - %=l 'ddc_RETRIEVE_METHOD'
1234     - </span><span class=data>
1235     - % param retrievemethod=>$ddc_datas->{"params"}->{"method"};
1236     - %=select_field retrievemethod=>$methodlabels
1237     - </span><br>
1238     - <span class=label>
1239     - %=l 'ddc_RETRIEVE_IF'
1240     - </span><span class=data>
1241     - % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"};
1242     - %=text_field 'retrieveinterface'
1243     - </span><br>
1244     - <span class=label>
1245     - %=l 'ddc_RETRIEVE_CMD'
1246     - </span><span class=data>
1247     - % param retrievecmd=>$ddc_datas->{"params"}->{"cmd"};
1248     - %=text_field 'retrievecmd'
1249     - </span><br>
1250     - <span class=label>
1251     - %=l 'ddc_RETRIEVE_IP'
1252     - </span><span class=data>
1253     - % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"};
1254     - %=text_field 'retrieveip'
1255     - </span><br>
1256     - <span class=label>
1257     - %=l 'ddc_RETRIEVE_URLCHECKIP'
1258     - </span><span class=data>
1259     - % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"};
1260     - %=text_field 'retrieveurlcheckip'
1261     - </span><br>
1262     -
1263     - %= submit_button "$btn", class => 'action'
1264     - % end
1265     -</div>
1266     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm smeserver-ddclient-1.2.1/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm
1267     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm 1970-01-01 01:00:00.000000000 +0100
1268     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm 2020-06-12 08:45:00.000000000 +0100
1269     @@ -0,0 +1,772 @@
1270     +package SrvMngr::Controller::Ddclient;
1271     +
1272     +#----------------------------------------------------------------------
1273     +# heading : Configuration
1274     +# description : Dynamic Clients
1275     +# navigation : 3000 3400
1276     +#
1277     +# name : ddclient, method : get, url : /ddclient, ctlact : Ddclient#main
1278     +# name : ddclient3, method : post, url : /ddclient3, ctlact : Ddclient#do_updateparams
1279     +# name : ddclient1, method : get, url : /ddclient1, ctlact : Ddclient#do_summary_domain
1280     +# name : ddclient2, method : get, url : /ddclient2, ctlact : Ddclient#do_summary_custom
1281     +# name : ddclient4, method : post, url : /ddclient4, ctlact : Ddclient#do_delete_domain
1282     +# name : ddclient5, method : get, url : /ddclient5, ctlact : Ddclient#do_update_domain
1283     +# name : ddclient6, method : get, url : /ddclient6, ctlact : Ddclient#do_create_custom
1284     +# name : ddclient7, method : post, url : /ddclient7, ctlact : Ddclient#do_create_custom_actual
1285     +# name : ddclient8, method : post, url : /ddclient8, ctlact : Ddclient#do_update_domain
1286     +#
1287     +# routes : end
1288     +#----------------------------------------------------------------------
1289     +
1290     +use strict;
1291     +use warnings;
1292     +use Mojo::Base 'Mojolicious::Controller';
1293     +
1294     +use constant FALSE => 0;
1295     +use constant TRUE => 1;
1296     +
1297     +use Locale::gettext;
1298     +use SrvMngr::I18N;
1299     +use SrvMngr qw(theme_list init_session);
1300     +
1301     +use Data::Dumper;
1302     +use esmith::util;
1303     +use esmith::HostsDB;
1304     +use esmith::AccountsDB;
1305     +
1306     +our $db = esmith::ConfigDB->open();
1307     +our $adb = esmith::AccountsDB->open();
1308     +
1309     +our $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains')
1310     + or die "Unable to open domains db";
1311     +our $edb;
1312     +$edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
1313     + or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
1314     +
1315     +my %ddc_datas = ();
1316     +
1317     +sub get_dns_labels {
1318     + #
1319     + # dns service names
1320     + #
1321     + my $c = shift;
1322     + my $Labels = (
1323     + [
1324     + [ $c->l('ddc_CUSTOMDNS'), 'CUSTOMDNS' ],
1325     + [ $c->l('ddc_DYNDNS1'), 'DYNDNS1' ],
1326     + [ $c->l('ddc_DYNDNS2'), 'DYNDNS2' ],
1327     + [ $c->l('ddc_DYNDNS3'), 'DYNDNS3' ],
1328     + [ $c->l('ddc_ZONEDIT'), 'ZONEDIT' ],
1329     + [ $c->l('ddc_EASYDNS'), 'EASYDNS' ],
1330     + [ $c->l('ddc_HAMMER'), 'HAMMER' ],
1331     + [ $c->l('ddc_DSLREPORTS'), 'DSLREPORTS' ],
1332     + [ $c->l('ddc_EURODYNDNS'), 'EURODYNDNS' ],
1333     + [ $c->l('ddc_DTDNS'), 'DTDNS' ],
1334     + [ $c->l('ddc_LOOPIA'), 'LOOPIA' ],
1335     + [ $c->l('ddc_DNSPARK'), 'DNSPARK' ],
1336     + [ $c->l('ddc_DYNHOST'), 'DYNHOST' ],
1337     + [ $c->l('ddc_NOIP'), 'NOIP' ],
1338     + [ $c->l('ddc_CHANGEIP'), 'CHANGEIP' ],
1339     + [ $c->l('ddc_NAMECHEAP'), 'NAMECHEAP' ],
1340     + [ $c->l('ddc_SPDNS'), 'SPDNS' ]
1341     + ]
1342     + );
1343     + return $Labels;
1344     +}
1345     +
1346     +sub main {
1347     + #
1348     + # Initial page - full summary of parameters etc
1349     + # Initial para from the Wiki.
1350     + #
1351     + my $c = shift;
1352     + $ddc_datas{"first"} = 'ddc_DESCRIPTION';
1353     + do_display( $c, %ddc_datas );
1354     +}
1355     +
1356     +sub do_display {
1357     + #
1358     + # Front Summary page
1359     + #
1360     + my $c = shift;
1361     + $c->app->log->info( $c->log_req );
1362     +
1363     + my $title = $c->l('ddc_FORM_TITLE');
1364     + my $modul = '';
1365     + $ddc_datas{trt} = 'LIST';
1366     + my $trt = "LIST";
1367     +
1368     + $ddc_datas{"params"} = get_params($c);
1369     + my @domains = get_domain_table($c);
1370     + my @FreeDomains = get_custom_table($c);
1371     +
1372     + my $emptydom = ( scalar @domains == 0 );
1373     + my $emptycust = ( scalar @FreeDomains == 0 );
1374     +
1375     + my $Labels = (
1376     + [
1377     + [ $c->l('ddc_SME external Interface'), "smeIF" ],
1378     + [ $c->l('ddc_SME configuration DB'), "smeCMD" ],
1379     + [ $c->l('ddc_web'), "web" ],
1380     + [ $c->l('ddc_Interface'), "if" ],
1381     + [ $c->l('ddc_IP'), "ip" ],
1382     + [ $c->l('ddc_Command'), "cmd" ]
1383     + ]
1384     + );
1385     +
1386     + $c->stash(
1387     + title => $title,
1388     + modul => $modul,
1389     + ddc_datas => \%ddc_datas,
1390     + domains => \@domains,
1391     + freedomains => \@FreeDomains,
1392     + methodlabels => $Labels,
1393     + emptydom => $emptydom,
1394     + emptycust => $emptycust
1395     + );
1396     + $ddc_datas{'trt'} = $trt;
1397     + $c->stash( title => $title, modul => $modul, ddc_datas => \%ddc_datas );
1398     + $c->render( template => 'ddclient' );
1399     +
1400     +}
1401     +
1402     +sub do_updateparams {
1403     + #
1404     + # Called to update the parameters relating to the Ip address of the server
1405     + #
1406     + my $c = shift;
1407     + $ddc_datas{"success"} = pushParams($c);
1408     + do_display($c);
1409     +}
1410     +
1411     +sub do_update_domain {
1412     + #
1413     + #Called to update/delete the ddclient for a specific inbuilt domain
1414     + #
1415     + my $c = shift;
1416     + my $retmsg;
1417     + if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
1418     + $retmsg = performModifyCustom($c);
1419     + }
1420     + else {
1421     + $retmsg = performModifyDomain($c);
1422     + }
1423     + if ( $retmsg eq "ok" ) {
1424     + my $dns = $c->param('dns');
1425     + my $domain = $c->param('domainname');
1426     + $ddc_datas{"success"} =
1427     + $c->l( "ddc_SUCCESSFULLY_MODIFIED", $domain, $c->l( 'ddc_' . $dns ) );
1428     + do_display( $c, %ddc_datas );
1429     + }
1430     + else {
1431     + $ddc_datas{"error"} = $retmsg;
1432     +
1433     + #Back to input panel to correct error
1434     + do_summary_domain($c);
1435     + }
1436     +}
1437     +
1438     +sub do_create_custom {
1439     + #
1440     + # Create custom domain
1441     + #
1442     + my $c = shift;
1443     + my $title = $c->l("ddc_CREATE_TITLE");
1444     + my $modul = '';
1445     + my $trt = "NEW";
1446     +
1447     + $ddc_datas{trt} = $trt;
1448     + $c->stash(
1449     + title => $title,
1450     + modul => $modul,
1451     + ddc_datas => \%ddc_datas,
1452     + dnslabels => get_dns_labels($c)
1453     + );
1454     + $c->render( template => 'ddclient' );
1455     +}
1456     +
1457     +sub do_create_custom_actual {
1458     + my $c = shift;
1459     + my $retmsg = performCreateCustom($c);
1460     + if ( $retmsg eq "ok" ) {
1461     + my $dns = $c->param('dns');
1462     + my $domain = $c->param('domainname');
1463     + $ddc_datas{"success"} =
1464     + $c->l( "ddc_SUCCESSFULLY_DELETED", $domain, $c->l( 'ddc_' . $dns ) );
1465     + do_display( $c, %ddc_datas );
1466     + }
1467     + else {
1468     + $ddc_datas{"error"} = $retmsg;
1469     + #Back to input panel to correct error
1470     + do_create_custom($c);
1471     + }
1472     +
1473     +}
1474     +
1475     +sub do_summary_custom {
1476     + #
1477     + # Display delete or modify panel for custom domain
1478     + #
1479     + my $c = shift;
1480     + my $title = $c->l("ddc_MODIFY_TITLE");
1481     + my $modul = '';
1482     + my $trt = $c->param("trt");
1483     +
1484     + #Extract domain stuff from DB
1485     + my @results =
1486     + get_custom_table( $c, $c->param("Domain") ); #Returns just one row
1487     +
1488     + $ddc_datas{"Domain_details"} = $results[0];
1489     +
1490     + $ddc_datas{'trt'} = $trt;
1491     + $c->stash(
1492     + title => $title,
1493     + modul => $modul,
1494     + ddc_datas => \%ddc_datas,
1495     + dnslabels => get_dns_labels($c)
1496     + );
1497     + $c->render( template => 'ddclient' );
1498     +}
1499     +
1500     +sub do_summary_domain {
1501     + #
1502     + # Display delete or modify panel for inbuilt domain
1503     + # param trt = MOD or DEL
1504     + #
1505     + my $c = shift;
1506     + my $title = $c->l("ddc_MODIFY_TITLE");
1507     + my $modul = '';
1508     + my $trt = $c->param("trt");
1509     +
1510     + #Extract domain stuff from DB
1511     + my @results =
1512     + get_domain_table( $c, $c->param("Domain") ); #Returns just one row
1513     + $ddc_datas{"Domain_details"} = $results[0];
1514     +
1515     + $ddc_datas{'trt'} = $trt;
1516     + $c->stash(
1517     + title => $title,
1518     + modul => $modul,
1519     + ddc_datas => \%ddc_datas,
1520     + dnslabels => get_dns_labels($c)
1521     + );
1522     + $c->render( template => 'ddclient' );
1523     +}
1524     +
1525     +sub do_delete_domain {
1526     + #
1527     + # Actually clearout the inbuilt domain
1528     + # Return to initial page with message at the top.
1529     + #
1530     + my $c = shift;
1531     + my $route = $c->current_route;
1532     + my $title = $c->l("ddc_REMOVE_TITLE");
1533     + my $modul = '';
1534     + my $retmsg = "";
1535     + my $domain = $c->param("Domain");
1536     +
1537     + #Delete it and return to front summary panel - depends on route domain or custom
1538     + if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
1539     + $retmsg = performDeleteCustom( $c, $domain );
1540     + }
1541     + else {
1542     + $retmsg = performDeleteDomain( $c, $domain );
1543     + }
1544     +
1545     + if ( $retmsg eq "ok" ) {
1546     + $ddc_datas{"success"} = $c->l( "ddc_SUCCESSFULLY_DELETED", $domain,
1547     + $c->l( 'ddc_' . $c->param("dns") ) );
1548     + }
1549     + else { $ddc_datas{"error"} = $retmsg; }
1550     + do_display( $c, %ddc_datas );
1551     +
1552     +}
1553     +
1554     +sub do_delete_custom {
1555     + #
1556     + # Actually delete the custom domain
1557     + # Return to initial page with message at the top.
1558     + #
1559     + my $c = shift;
1560     + my $route = $c->current_route;
1561     + my $title = $c->l("ddc_REMOVE_TITLE");
1562     + my $modul = '';
1563     + my $retmsg = "";
1564     + my $domain = $c->param("Domain");
1565     +
1566     + #Delete it and return to front summary panel - depends on route domain or custom
1567     + $retmsg = performDeleteCustom( $c, $domain );
1568     + if ( $retmsg eq "ok" ) {
1569     + $ddc_datas{"success"} = $c->l( "ddc_SUCCESSFULLY_DELETED", $domain );
1570     + }
1571     + else { $ddc_datas{"error"} = $retmsg; }
1572     + do_display( $c, %ddc_datas );
1573     +
1574     +}
1575     +
1576     +sub performDeleteDomain {
1577     + my ( $c, $domain ) = @_;
1578     +
1579     + #------------------------------------------------------------
1580     + # Attempt to delete domain
1581     + #------------------------------------------------------------
1582     +
1583     + if ( $domain =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1584     + $domain = $1;
1585     + }
1586     + else {
1587     + return $c->l( 'ddc_ERROR_WHILE_REMOVING_DOMAIN', $domain );
1588     + }
1589     +
1590     + my $value = $domaindb->get($domain);
1591     + unless ($value) {
1592     + return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
1593     + }
1594     +
1595     + my %properties = $value->props;
1596     + my $type = $properties{'type'};
1597     + if ( $type ne 'domain' ) {
1598     + return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
1599     + }
1600     +
1601     + my $evalue = $domaindb->get($domain);
1602     +
1603     + $evalue->set_prop( 'dns' => '' );
1604     + $evalue->set_prop( 'login' => '' );
1605     + $evalue->set_prop( 'password' => '' );
1606     + $evalue->set_prop( 'customdns' => '' );
1607     + $evalue->set_prop( 'customprotocol' => '' );
1608     +
1609     + $domaindb->reload();
1610     +
1611     + system( "/sbin/e-smith/signal-event", "ddclient" );
1612     +
1613     + return "ok";
1614     +}
1615     +
1616     +sub performDeleteCustom {
1617     + my ( $c, $domain ) = @_;
1618     +
1619     + #------------------------------------------------------------
1620     + # Attempt to delete domain
1621     + #------------------------------------------------------------
1622     +
1623     + if ( $domain =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1624     + $domain = $1;
1625     + }
1626     + else {
1627     + return $c->l( 'ddc_ERROR_WHILE_REMOVING_DOMAIN', $domain );
1628     + }
1629     +
1630     + my $evalue = $edb->get($domain);
1631     + unless ($evalue) {
1632     + return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
1633     + }
1634     +
1635     + my %properties = $evalue->props;
1636     + my $type = $properties{'type'};
1637     +
1638     + if ( $type ne 'ddhost' ) {
1639     + return $c->l( 'ddc_NONEXISTENT_DOMAIN_ERROR', $domain );
1640     +
1641     + }
1642     +
1643     + $evalue->delete;
1644     + $edb->reload();
1645     +
1646     + system( "/sbin/e-smith/signal-event", "ddclient" );
1647     + return "ok";
1648     +}
1649     +
1650     +sub get_domain_table {
1651     + #
1652     + # Return full table of all domains OR just the details for the specified one
1653     + #
1654     + my ( $c, $findDomain ) = @_; #$c and domain to find
1655     + $findDomain = FALSE if ( scalar(@_) <= 1 );
1656     + my $key;
1657     + my @virtualDomains = ();
1658     + foreach my $domain ( $domaindb->get_all_by_prop( type => 'domain' ) ) {
1659     + $key = $domain->key;
1660     + push( @virtualDomains, $key );
1661     + }
1662     + my $numDomains = @virtualDomains;
1663     + if ( $numDomains == 0 ) { return () }
1664     + else {
1665     + my $domain;
1666     + my @virtualDomains2d = ();
1667     +
1668     + foreach $domain ( sort @virtualDomains ) {
1669     + my %properties = $domaindb->get($domain)->props;
1670     + my $test = $domaindb->get_prop( $domain, "dns" ) || '';
1671     + my %extraprops;
1672     + if ( $test ne '' ) { %extraprops = $domaindb->get($domain)->props; }
1673     +
1674     + my $content;
1675     + if ( $properties{'Content'} eq 'wwwpublic' ) {
1676     + $content = $c->l('ddc_PRIMARY_SITE');
1677     + }
1678     + else { $content = $c->l( 'ddc_CONTENT', $properties{'Content'} ); }
1679     +
1680     + my $public;
1681     + my %thisrow;
1682     + if ( $test eq '' ) {
1683     + %thisrow = (
1684     + "Domain" => $domain,
1685     + "Description" => $properties{'Description'},
1686     + "Content" => $content,
1687     + "dns" => "",
1688     + "Publication" => "",
1689     + "customprotocol" => "",
1690     + "customdns" => "",
1691     + "login" => "",
1692     + "password" => "",
1693     + "mx" => ""
1694     + );
1695     + push( @virtualDomains2d, \%thisrow );
1696     + }
1697     + else {
1698     + %thisrow = (
1699     + "Domain" => $domain,
1700     + "Description" => $properties{'Description'},
1701     + "Content" => $content,
1702     + "dns" => $extraprops{'dns'},
1703     + "Publication" => $c->l( 'ddc_' . $extraprops{'dns'} ),
1704     + "customprotocol" => $properties{"customprotocol"},
1705     + "customdns" => $properties{"customdns"},
1706     + "login" => $properties{"login"},
1707     + "password" => $properties{"password"},
1708     + "mx" => $properties{"mx"},
1709     + );
1710     + push( @virtualDomains2d, \%thisrow );
1711     +
1712     + }
1713     + if ($findDomain) {
1714     + if ( $domain eq $findDomain ) {
1715     + @virtualDomains2d = (); #Just return matching one
1716     + push( @virtualDomains2d, \%thisrow );
1717     + last;
1718     + }
1719     + } #Found the one needed
1720     + }
1721     + return @virtualDomains2d; #Return the lot
1722     + }
1723     +}
1724     +
1725     +sub get_custom_table {
1726     + #
1727     + # Return full table of all domains OR just the details for the specified one
1728     + #
1729     + my ( $c, $findDomain ) = @_; #$c and domain to find
1730     + $findDomain = FALSE if ( scalar(@_) <= 1 );
1731     + my $key;
1732     + my @FreeDomains = ();
1733     + foreach my $domain ( $edb->get_all_by_prop( type => 'ddhost' ) ) {
1734     + $key = $domain->key;
1735     + push( @FreeDomains, $key );
1736     + }
1737     + my $numDomains = @FreeDomains;
1738     + my @freedomains2d = ();
1739     + if ( $numDomains > 0 ) {
1740     + foreach my $domain ( sort @FreeDomains ) {
1741     + my $vals = $edb->get($domain);
1742     + my $content = $vals->prop('desc');
1743     + my $publish = $vals->prop('dns');
1744     + my %thisrow = (
1745     + 'Domain' => $domain,
1746     + "Description" => $content,
1747     + "dns" => $publish,
1748     + "Publication" =>
1749     + $c->l( 'ddc_' . $publish ), #msg ddc prefix for ddclient
1750     + "customprotocol" => $vals->prop("customprotocol"),
1751     + "customdns" => $vals->prop("customdns"),
1752     + "login" => $vals->prop("login"),
1753     + "password" => $vals->prop("password"),
1754     + "mx" => $vals->prop("mx"),
1755     +
1756     + );
1757     +
1758     + push( @freedomains2d, \%thisrow );
1759     + if ($findDomain) {
1760     + if ( $domain eq $findDomain ) {
1761     + @freedomains2d = (); #Just return matching one
1762     + push( @freedomains2d, \%thisrow );
1763     + last;
1764     + }
1765     + } #Found the one needed
1766     +
1767     + }
1768     + }
1769     + return @freedomains2d;
1770     +}
1771     +
1772     +sub get_params {
1773     + my $c = shift;
1774     + my $ddretrieve = $db->get('ddclient');
1775     + my $ExtIF = $db->get('ExternalInterface');
1776     + my $DeamonUpdate = $ddretrieve->prop('DeamonUpdate') || '300';
1777     + my $urlcheckip = $ddretrieve->prop('urlcheckip') || 'checkip.dyndns.org';
1778     + my $ssl = $ddretrieve->prop('SSL') || 'yes';
1779     + my $method = $ddretrieve->prop('method') || 'web';
1780     + my $Extinterface = $ddretrieve->prop('Extinterface') || '';
1781     + my $cmd = $ddretrieve->prop('cmd') || '';
1782     + my $forceIP = $ddretrieve->prop('ForceIP') || '';
1783     + my $res = {
1784     + "ssl" => $ssl,
1785     + "DeamonUpdate" => $DeamonUpdate,
1786     + "method" => $method,
1787     + "Extinterface" => $Extinterface,
1788     + "cmd" => $cmd,
1789     + "ForceIP" => $forceIP,
1790     + "urlcheckip" => $urlcheckip
1791     + };
1792     + return $res;
1793     +}
1794     +
1795     +sub pushParams {
1796     + my $c = shift;
1797     + my $DeamonUpdate = $c->param('retrievedeamonupdate');
1798     + my $urlcheckip = $c->param('retrieveurlcheckip');
1799     + my $ssl = $c->param('retrievessl');
1800     + my $retrievemethod = $c->param('retrievemethod');
1801     + my $retrieveinterface = $c->param('retrieveinterface');
1802     + my $retrievecmd = $c->param('retrievecmd');
1803     + my $retrieveip = $c->param('retrieveip');
1804     +
1805     + my $ddclient = $db->get('ddclient');
1806     + $ddclient->set_prop( 'urlcheckip' => $urlcheckip );
1807     + $ddclient->set_prop( 'DeamonUpdate' => $DeamonUpdate );
1808     + $ddclient->set_prop( 'SSL' => $ssl );
1809     + $ddclient->set_prop( 'method' => $retrievemethod );
1810     + $ddclient->set_prop( 'Extinterface' => $retrieveinterface );
1811     + $ddclient->set_prop( 'cmd' => $retrievecmd );
1812     + $ddclient->set_prop( 'ForceIP' => $retrieveip );
1813     +
1814     + $domaindb->reload();
1815     +
1816     + system( "/sbin/e-smith/signal-event", "ddclient" );
1817     +
1818     + return $c->l('ddc_SUCCESSFULLY_MODIFIED_RETRIEVE_IP');
1819     +}
1820     +
1821     +sub performCreateCustom {
1822     + my ($c) = shift;
1823     +
1824     + #------------------------------------------------------------
1825     + # Validate parameters and untaint them
1826     + #------------------------------------------------------------
1827     +
1828     + my $domainName = $c->param('domainName');
1829     + if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1830     + $domainName = $1;
1831     + }
1832     + else {
1833     + return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
1834     + }
1835     +
1836     + foreach my $domain ( $edb->get_all_by_prop( type => 'domain' ) ) {
1837     + my $key = $domain->key;
1838     + if ( $key eq $domainName ) {
1839     + return $c->l( 'ddc_DOMAIN_NAME_ALREADY_EXIST', $domainName );
1840     + }
1841     + }
1842     +
1843     + foreach my $domain ( $domaindb->get_all_by_prop( type => 'ddhost' ) ) {
1844     + my $key = $domain->key;
1845     + if ( $key eq $domainName ) {
1846     + return $c->l( 'ddc_DOMAIN_NAME_ALREADY_EXIST', $domainName );
1847     + }
1848     + }
1849     +
1850     + my $domainDesc = $c->param('desc');
1851     + my $domainLogin = $c->param('login');
1852     + if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
1853     + $domainLogin = $1;
1854     + }
1855     + else {
1856     + return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
1857     + }
1858     +
1859     + my $domainPassword = $c->param('password');
1860     + if ( $domainPassword =~ /^(.*)$/ ) {
1861     + $domainPassword = $1;
1862     + }
1863     + else {
1864     + return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
1865     + }
1866     +
1867     + my $domainMX = $c->param('mx');
1868     + my $customDNS = $c->param('customdns');
1869     + my $customPROTOCOL = $c->param('customprotocol');
1870     +
1871     + my $dns = $c->param('dns');
1872     + if ( $dns eq 'CUSTOMDNS' ) {
1873     + if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1874     + $customDNS = $1;
1875     + }
1876     + else {
1877     + return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
1878     + }
1879     + }
1880     +
1881     + #------------------------------------------------------------
1882     + # Looks good. Find out if this domain has been taken
1883     + # or if the domain is a reserved to provide a secured webserver
1884     + # for a previous domain
1885     + #------------------------------------------------------------
1886     +
1887     + my %properties = ();
1888     + $properties{'type'} = 'ddhost';
1889     + $properties{'dns'} = $dns;
1890     + $properties{'login'} = $domainLogin;
1891     + $properties{'password'} = $domainPassword;
1892     + $properties{'mx'} = $domainMX;
1893     + $properties{'desc'} = $domainDesc;
1894     + $properties{'customdns'} = $customDNS;
1895     + $properties{'customprotocol'} = $customPROTOCOL;
1896     + $edb->new_record( $domainName, \%properties );
1897     +
1898     + system( "/sbin/e-smith/signal-event", "ddclient" );
1899     + return "ok";
1900     +
1901     +}
1902     +
1903     +sub performModifyDomain {
1904     + my $c = shift;
1905     +
1906     + #------------------------------------------------------------
1907     + # Validate parameters and untaint them
1908     + #------------------------------------------------------------
1909     +
1910     + my $domainName = $c->param('domainName');
1911     + if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1912     + $domainName = $1;
1913     + }
1914     + else {
1915     + return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
1916     + }
1917     +
1918     + my $domainLogin = $c->param('login');
1919     + if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
1920     + $domainLogin = $1;
1921     + }
1922     + else {
1923     + return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
1924     + }
1925     +
1926     + my $domainPassword = $c->param('password');
1927     + if ( $domainPassword =~ /^(.*)$/ ) {
1928     + $domainPassword = $1;
1929     + }
1930     + else {
1931     + return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
1932     + }
1933     +
1934     + my $domainMX = $c->param('mx');
1935     + my $customDNS = $c->param('customdns');
1936     + my $customPROTOCOL = $c->param('customprotocol');
1937     +
1938     + my $dns = $c->param('dns');
1939     + if ( $dns eq 'CUSTOMDNS' ) {
1940     + if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1941     + $customDNS = $1;
1942     + }
1943     + else
1944     +
1945     + {
1946     + return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
1947     + }
1948     + }
1949     +
1950     + #------------------------------------------------------------
1951     + # Looks good. Find out if this domain has been taken
1952     + # or if the domain is a reserved to provide a secured webserver
1953     + # for a previous domain
1954     + #------------------------------------------------------------
1955     + # my $dns = $c->param ('dns');
1956     +
1957     + my $dom = $domaindb->get($domainName);
1958     +
1959     + $dom->set_prop( 'dns' => $dns );
1960     + $dom->set_prop( 'login' => $domainLogin );
1961     + $dom->set_prop( 'password' => $domainPassword );
1962     + $dom->set_prop( 'mx' => $domainMX );
1963     + $dom->set_prop( 'customdns' => $customDNS );
1964     + $dom->set_prop( 'customprotocol' => $customPROTOCOL );
1965     +
1966     + $domaindb->reload();
1967     +
1968     + system( "/sbin/e-smith/signal-event", "ddclient" );
1969     + return "ok";
1970     +}
1971     +
1972     +sub performModifyCustom {
1973     + my $c = shift;
1974     +
1975     + #------------------------------------------------------------
1976     + # Validate parameters and untaint them
1977     + #------------------------------------------------------------
1978     +
1979     + my $domainName = $c->param('domainName');
1980     + if ( $domainName =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
1981     + $domainName = $1;
1982     + }
1983     + else {
1984     + return $c->l( 'ddc_DOMAIN_NAME_VALIDATION_ERROR', $domainName );
1985     + }
1986     +
1987     + my $domainLogin = $c->param('login');
1988     + if ( $domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
1989     + $domainLogin = $1;
1990     + }
1991     + else {
1992     + return $c->l( 'ddc_DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
1993     + }
1994     +
1995     + my $domainPassword = $c->param('password');
1996     + if ( $domainPassword =~ /^(.*)$/ ) {
1997     + $domainPassword = $1;
1998     + }
1999     + else {
2000     + return $c->l( 'ddc_DOMAIN_PASSWORD_VALIDATION_ERROR', $domainPassword );
2001     + }
2002     +
2003     + my $domainMX = $c->param('mx');
2004     + my $customDNS = $c->param('customdns');
2005     + my $customPROTOCOL = $c->param('customprotocol');
2006     +
2007     + my $dns = $c->param('dns');
2008     + if ( $dns eq 'CUSTOMDNS' ) {
2009     + if ( $customDNS =~ /^([a-zA-Z0-9\-\.]+)$/ ) {
2010     + $customDNS = $1;
2011     + }
2012     + else
2013     +
2014     + {
2015     + return $c->l( 'ddc_CUSTOMDNS_VALIDATION_ERROR', $domainName );
2016     + }
2017     + }
2018     +
2019     + #------------------------------------------------------------
2020     + # Looks good. Find out if this domain has been taken
2021     + # or if the domain is a reserved to provide a secured webserver
2022     + # for a previous domain
2023     + #------------------------------------------------------------
2024     + # my $dns = $c->param ('dns');
2025     +
2026     + my $dom = $edb->get($domainName);
2027     +
2028     + $dom->set_prop( 'dns' => $dns );
2029     + $dom->set_prop( 'login' => $domainLogin );
2030     + $dom->set_prop( 'password' => $domainPassword );
2031     + $dom->set_prop( 'mx' => $domainMX );
2032     + $dom->set_prop( 'customdns' => $customDNS );
2033     + $dom->set_prop( 'customprotocol' => $customPROTOCOL );
2034     +
2035     + $domaindb->reload();
2036     +
2037     + system( "/sbin/e-smith/signal-event", "ddclient" );
2038     + return "ok";
2039     +}
2040     +
2041     +1;
2042     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm smeserver-ddclient-1.2.1/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm
2043     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm 1970-01-01 01:00:00.000000000 +0100
2044     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm 2020-06-08 18:18:00.000000000 +0100
2045     @@ -0,0 +1,97 @@
2046     +package SrvMngr::I18N::Modules::Ddclient::en;
2047     +use strict;
2048     +use warnings;
2049     +use utf8;
2050     +use Mojo::Base 'SrvMngr::I18N';
2051     +
2052     +use SrvMngr::I18N::Modules::General::en;
2053     +
2054     +my %lexicon = (
2055     +'ddc_FORM_TITLE' => 'Create, remove or change the publication of virtual domains',
2056     +'ddc_Params_for_IP_Retrieval'=>' Parameters to control how the IP of your server is found:',
2057     +'ddc_DESCRIPTION'=> 'Use this contrib when you have a sme server connected to a ISP service using a dynamic IP, and you wish to host multiple domains.
2058     +<br>ddclient is a client for updating dynamic DNS entries for domains hosted at different DNS providers.
2059     +<br>Configure your dynamic host domains via the ddclient server manager panel.
2060     +<br>ddclient can be used on servers configured in server gateway mode or in server only mode.<br><br> ',
2061     +'ddc_FORM_DESCRIPTION' => 'Virtual Domains for publication on the net:',
2062     +'ddc_NO_VIRTUAL_DOMAINS' => 'There are no virtual domains in the system.',
2063     +'ddc_CURRENT_LIST_OF_DOMAINS' => 'Current list of virtual domains',
2064     +'ddc_PUBLICATION' => 'Publication',
2065     +'ddc_PRIMARY_SITE' => 'Primary Site',
2066     +'ddc_CONTENT' => '[_1] i-bay',
2067     +'ddc_CREATE_TITLE' => 'Create a new publication virtual domain',
2068     +'ddc_SERVERS_LABEL' => 'Where to publish',
2069     +'ddc_MX' => 'record MX',
2070     +'ddc_NAME_LABEL' => 'Login to publish',
2071     +'ddc_PASSWORD_LABEL' => 'Password to publish',
2072     +'ddc_CONTENT_FIELD_DESCRIPTION' => 'For the web site, you may choose your primary web site or any i-bay as the content.',
2073     +'ddc_DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name [_1]. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.',
2074     +'ddc_DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description [_1]. Did not create new domain.',
2075     +'ddc_DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use. Did not create new domain.',
2076     +'ddc_DOMAIN_LOGIN_VALIDATION_ERROR'=> 'Domain login must not be blank and only consist of letter, numbers, "." or "@"',
2077     +'ddc_RESERVED_SECURE_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for the virtual domain [_2]. Did not create new domain.',
2078     +'ddc_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.',
2079     +'ddc_RESERVED_SECURE_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for your system domain name [_2]. Did not create new domain.',
2080     +'ddc_SUCCESSFULLY_CREATED' => 'Successfully publication domain [_1] on [_2].',
2081     +'ddc_MODIFY_TITLE' => 'Modify virtual domain',
2082     +'ddc_NONEXISTENT_DOMAIN_ERROR' => 'Error: [_1] is not an existing domain.',
2083     +'ddc_SUCCESSFULLY_MODIFIED' => 'Successfully modified the publication [_1] on [_2].',
2084     +'ddc_REMOVE_TITLE' => 'Remove publication of virtual domain',
2085     +'ddc_REMOVE_DESCRIPTION' => '<p>You are about to remove the publication of domain [_1] ([_2]) on [_3].
2086     +</p>
2087     +<p>
2088     +<b>Are you sure you wish to remove this domain\'s publication ?</b>
2089     +</p>
2090     +',
2091     +'ddc_ERROR_WHILE_REMOVING_DOMAIN' => 'Error: internal failure while removing publication of [_1].',
2092     +'ddc_SUCCESSFULLY_DELETED' => 'Successfully deleted publication of [_1] on [_2].',
2093     +'ddc_DYNDNS1' => 'dyndns.org dynamic addresses',
2094     +'ddc_DYNDNS2' => 'dyndns.org static addresses',
2095     +'ddc_DYNDNS3' => 'dyndns.org custom addresses',
2096     +'ddc_ZONEDIT' => 'ZoneEdit (zoneedit.com)',
2097     +'ddc_EASYDNS' => 'EasyDNS (easydns.com)',
2098     +'ddc_HAMMER' => 'Hammernode (hn.org) dynamic addresses',
2099     +'ddc_DSLREPORTS' => 'dslreports.com dynamic-host monitoring',
2100     +'ddc_EURODYNDNS' => 'eurodyndns.org dynamic addresses',
2101     +'ddc_DTDNS' => 'DtDNS (www.dtdns.com) dynamic addresses',
2102     +'ddc_LOOPIA' => 'Loopia (loopia.se) dynamic addresses',
2103     +'ddc_DNSPARK' => ' Dnspark (dnspark.com) dynamic addresses',
2104     +'ddc_DYNHOST' => ' DynHost (ovh.com) dynamic addresses',
2105     +'ddc_NOIP' => ' NoIP (noip.com) dynamic addresses',
2106     +'ddc_CHANGEIP' => ' ChangeIP (changeip.com) dynamic addresses',
2107     +'ddc_NAMECHEAP' => ' NAMECHEAP (namecheap.com) dynamic addresses',
2108     +'ddc_SPDNS' => ' SPDNS (spdns.de) dynamic addresses',
2109     +'ddc_CUSTOMDNS' => 'Custom Dynamic DNS Provider',
2110     +'ddc_CUSTOMDNS_LABEL' => 'Custom server Address',
2111     +'ddc_CUSTOM_PROTOCOL_LABEL' => 'Custom ddclient Protocol',
2112     +'ddc_CUSTOM_DESCRIPTION' => 'You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings',
2113     +'ddc_CUSTOMDNS_VALIDATION_ERROR' => 'Error: unexpected or missing characters in custom server address field of domain [_1]. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.',
2114     +'ddc_ddclient' =>'Dynamic Clients',
2115     +'ddc_DOMAIN_NAME_ALREADY_EXIST' => 'Error: this domain:"[_1]" already exists. Please chose another.',
2116     +'ddc_FREE_FORM_DESCRIPTION' => 'Here you can create any domain name to publish over the net:',
2117     +'ddc_RETRIEVE_SSL' => 'SSL update',
2118     +'ddc_RETRIEVE_DEAMONUPDATE' => 'Deamon update (seconds)',
2119     +'ddc_RETRIEVE_URLCHECKIP' => 'Url for the external IP',
2120     +'ddc_APPLY' => 'Save',
2121     +'ddc_DOMAIN_NAME_LABEL' => 'Domain Name',
2122     +'ddc_DESCRIPTION_LABEL' => 'Domain description',
2123     +'ddc_SUCCESSFULLY_MODIFIED_RETRIEVE_IP' => 'You have successfully modified the retrieve IP options.',
2124     +'ddc_RETRIEVE_METHOD' => 'Method to retrieve new IP:',
2125     +'ddc_RETRIEVE_IF' => 'Local interface to get new IP, if selected interface method',
2126     +'ddc_RETRIEVE_CMD' => 'Command to execute to get IP, if selected command method',
2127     +'ddc_SME external Interface' => 'SME external interface',
2128     +'ddc_SME configuration DB' => 'SME configuration DB',
2129     +'ddc_web' => 'Web query',
2130     +'ddc_Interface' => 'IP from interface',
2131     +'ddc_IP' => 'Manual IP setting',
2132     +'ddc_Command' => 'Command to execute',
2133     +'ddc_RETRIEVE_IP' => 'IP to manually force'
2134     +);
2135     +
2136     +our %Lexicon = (
2137     + %{ SrvMngr::I18N::Modules::General::en::Lexicon },
2138     + %lexicon
2139     +);
2140     +
2141     +
2142     +1;
2143     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/ddclient.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/ddclient.html.ep
2144     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/ddclient.html.ep 1970-01-01 01:00:00.000000000 +0100
2145     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/ddclient.html.ep 2020-06-08 18:18:00.000000000 +0100
2146     @@ -0,0 +1,48 @@
2147     +% layout 'default', title => "Sme server 2 - Dynamic Clients", share_dir => './';
2148     +
2149     +% content_for 'module' => begin
2150     +<div id="module">
2151     +
2152     + % if ($config->{debug} == 1) {
2153     + <p>
2154     + %= dumper $c->current_route
2155     + </p>
2156     + % }
2157     +
2158     + <h1><%=$title%></h1>
2159     + %= $modul
2160     +
2161     + %if ($ddc_datas->{first}) {
2162     + <br><p>
2163     + %=$c->render_to_string(inline =>$c->l($ddc_datas->{first}))
2164     + </p>
2165     +
2166     + %} elsif ($ddc_datas->{success}) {
2167     + <div class='sme-border'>
2168     + <h2> Operation Status Report</h2><p>
2169     + %= $c->l($ddc_datas->{success});
2170     + </p>
2171     + </div>
2172     +
2173     + %} elsif ($ddc_datas->{error}) {
2174     + <div class='sme-error'>
2175     + <h2> Operation Status Report - error</h2><p>
2176     + %= $c->l($ddc_datas->{error});
2177     + </p>
2178     + </div>
2179     + %}
2180     +
2181     + % if ($ddc_datas->{trt} eq 'NEW') {
2182     + %= include 'partials/_ddc_create_cust'
2183     + %} elsif ($ddc_datas->{trt} eq 'DEL') {
2184     + %= include 'partials/_ddc_del'
2185     + %} elsif ($ddc_datas->{trt} eq 'MOD') {
2186     + %= include 'partials/_ddc_modify_domain'
2187     + %} else { #LIST
2188     + %= include 'partials/_ddc_paramlist'
2189     + %= include 'partials/_ddc_domainlist'
2190     + %= include 'partials/_ddc_customlist'
2191     + %}
2192     +
2193     +</div>
2194     +%end
2195     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep
2196     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep 1970-01-01 01:00:00.000000000 +0100
2197     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep 2020-06-08 18:18:00.000000000 +0100
2198     @@ -0,0 +1,63 @@
2199     +<div id='ddc_createcustom'>
2200     + <h2>
2201     + %= l 'ddc_CUSTOM_DESCRIPTION'
2202     + </h2><br>
2203     + % my $btn = l('ddc_APPLY');
2204     + %= form_for '/ddclient7' => (method => 'POST') => begin
2205     + <span class=label>
2206     + %=l 'ddc_DOMAIN_NAME_LABEL'
2207     + </span><span class=data>
2208     + %=text_field 'domainName'
2209     + </span><br>
2210     + <span class=label>
2211     + %=l 'ddc_DESCRIPTION_LABEL'
2212     + </span><span class=data>
2213     + %=text_field 'desc'
2214     + </span><br>
2215     + <span class=label>
2216     + %=l 'ddc_SERVERS_LABEL'
2217     + </span><span class=data>
2218     + %=select_field dns=>$dnslabels
2219     + </span><br>
2220     + <span class=label>
2221     + %=l 'ddc_CUSTOMDNS_LABEL'
2222     + </span><span class=data>
2223     + %=text_field 'customdns'
2224     + </span><br>
2225     + <span class=label>
2226     + %=l 'ddc_CUSTOM_PROTOCOL_LABEL'
2227     + </span><span class=data>
2228     + %=text_field 'customprotocol'
2229     + </span><br>
2230     + <span class=label>
2231     + %=l 'ddc_NAME_LABEL'
2232     + </span><span class=data>
2233     + %=text_field 'login'
2234     + </span><br>
2235     + <span class=label>
2236     + %=l 'ddc_PASSWORD_LABEL'
2237     + </span><span class=data>
2238     + %=password_field 'password',id=>"ddcPass"
2239     + %=label_for show=>"Show"
2240     + %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
2241     + %= javascript begin
2242     + function showPass() {
2243     + var x = document.getElementById("ddcPass");
2244     + if (x.type === "password") {
2245     + x.type = "text";
2246     + } else {
2247     + x.type = "password";
2248     + }
2249     + }
2250     + % end
2251     + </span><br>
2252     + <span class=label>
2253     + %=l 'ddc_MX'
2254     + </span><span class=data>
2255     + %=text_field 'mx'
2256     + </span><br>
2257     + %= submit_button "$btn", class => 'action'
2258     + % end
2259     +</div>
2260     +
2261     +
2262     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep
2263     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep 1970-01-01 01:00:00.000000000 +0100
2264     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep 2020-06-11 08:46:00.000000000 +0100
2265     @@ -0,0 +1,50 @@
2266     +<div id='ddc_customlist'>
2267     + <h2>
2268     + %= l 'ddc_FREE_FORM_DESCRIPTION'
2269     + </h2>
2270     +
2271     + %= form_for '/ddclient' => (method => 'POST') => begin
2272     +
2273     + <table class="sme-border"><tbody>
2274     + <tr>
2275     + <th class='sme-border'>
2276     + %=l 'ddc_DOMAIN_NAME_LABEL'
2277     + </th>
2278     + <th class='sme-border'>
2279     + %=l 'ddc_DESCRIPTION_LABEL'
2280     + </th>
2281     + <th class='sme-border'>
2282     + %=l 'ddc_PUBLICATION'
2283     + </th>
2284     + <th class='sme-border' colspan=2>
2285     + %=l 'ACTION'
2286     + </th>
2287     + </tr>
2288     + %if (!$emptycust){
2289     + % foreach my $freeDomain (@$freedomains) {
2290     + <tr>
2291     + %= t td => (class => 'sme-border') => $freeDomain->{"Domain"}
2292     + %= t td => (class => 'sme-border') => $freeDomain->{"Description"}
2293     + %= t td => (class => 'sme-border') => $freeDomain->{"Publication"}
2294     + <td class = 'sme-border'>
2295     + <a href='/smanager/ddclient2?trt=MOD&Domain=<%= $freeDomain->{"Domain"}%>'><%=l 'MODIFY'%></a>
2296     + </td><td class = 'sme-border'>
2297     + <a href='/smanager/ddclient2?trt=DEL&Domain=<%= $freeDomain->{"Domain"}%>'><%=l 'REMOVE'%></a>
2298     + </td>
2299     + </td>
2300     + </tr>
2301     + %}
2302     + %}
2303     + <tr><td class='sme-border'></td>
2304     + <td class='sme-border'></td>
2305     + <td class='sme-border'>&nbsp;</td>
2306     + <td class='sme-border'>&nbsp;</td>
2307     + <td class='sme-border'>
2308     + <a href="/smanager/ddclient6?trt=NEW"><%=l 'CREATE'%></a>
2309     + </td>
2310     + </tr>
2311     +
2312     + </tbody>
2313     + </table>
2314     + % end
2315     +</div>
2316     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep
2317     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep 1970-01-01 01:00:00.000000000 +0100
2318     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep 2020-06-08 18:18:00.000000000 +0100
2319     @@ -0,0 +1,14 @@
2320     +<div id='ddc_del'>
2321     + % my $btn = l('REMOVE');
2322     + %= form_for '/ddclient4' => (method => 'POST') => begin
2323     + <p>
2324     + %= $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"})))
2325     + </p>
2326     + % param Domain=>$ddc_datas->{"Domain_details"}->{"Domain"};
2327     + %= hidden_field Domain=>$ddc_datas->{"Domain_details"}->{"Domain"}
2328     + %= hidden_field Route=>$c->current_route
2329     + %= hidden_field dns=>$ddc_datas->{"Domain_details"}->{"dns"}
2330     + %= hidden_field trt=>"DEL"
2331     + %= submit_button "$btn", class => 'action'
2332     + % end
2333     +</div>
2334     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep
2335     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep 1970-01-01 01:00:00.000000000 +0100
2336     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep 2020-06-11 08:46:00.000000000 +0100
2337     @@ -0,0 +1,48 @@
2338     +<div id='ddc_Domainslist'>
2339     + <h2>
2340     + %= l 'ddc_FORM_DESCRIPTION'
2341     + </h2>
2342     + %= form_for '/ddclient' => (method => 'POST') => begin
2343     +
2344     + % if ($emptydom){
2345     + <br><h2>
2346     + %=l 'NO_VIRTUAL_DomainS'
2347     + <h2>
2348     + % } else {
2349     + <table class="sme-border"><tbody>
2350     + <tr>
2351     + <th class='sme-border'>
2352     + %=l 'ddc_DOMAIN_NAME_LABEL'
2353     + </th>
2354     + <th class='sme-border'>
2355     + %=l 'ddc_DESCRIPTION_LABEL'
2356     + </th>
2357     + <th class='sme-border'>
2358     + %=l('ddc_CONTENT',"")
2359     + </th>
2360     + <th class='sme-border'>
2361     + %=l 'ddc_PUBLICATION'
2362     + </th>
2363     +
2364     + <th class='sme-border' colspan=2>
2365     + %=l 'ACTION'
2366     + </th>
2367     + </tr>
2368     + % foreach my $Domain (@$domains) {
2369     + <tr>
2370     + %= t td => (class => 'sme-border') => $Domain->{"Domain"}
2371     + %= t td => (class => 'sme-border') => $Domain->{"Description"}
2372     + %= t td => (class => 'sme-border') => $Domain->{"Content"}
2373     + %= t td => (class => 'sme-border') => $Domain->{"Publication"}
2374     + <td class = 'sme-border'>
2375     + <a href="/smanager/ddclient1?trt=MOD&Domain=<%= $Domain->{"Domain"}%>"><%=l 'MODIFY'%></a>
2376     + </td><td class = 'sme-border'>
2377     + <a href="/smanager/ddclient1?trt=DEL&Domain=<%= $Domain->{"Domain"}%>"><%=l 'REMOVE'%></a>
2378     + </td>
2379     + </tr>
2380     + %}
2381     + </tbody>
2382     + </table>
2383     + %}
2384     + % end
2385     +</div>
2386     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep
2387     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep 1970-01-01 01:00:00.000000000 +0100
2388     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep 2020-06-08 18:18:00.000000000 +0100
2389     @@ -0,0 +1,77 @@
2390     +<div id='ddc_modifydomain'>
2391     + <h2>
2392     + %= l 'ddc_CUSTOM_DESCRIPTION'
2393     + </h2><br>
2394     + % my $btn = l('ddc_APPLY');
2395     + %= form_for '/ddclient8' => (method => 'POST') => begin
2396     + <span class=label>
2397     + %=l 'ddc_DOMAIN_NAME_LABEL'
2398     + </span><span class=data>
2399     + %= hidden_field domainName => $ddc_datas->{"Domain_details"}->{"Domain"}
2400     + %= $ddc_datas->{"Domain_details"}->{"Domain"}
2401     + </span><br><br>
2402     + <span class=label>
2403     + %=l 'ddc_DESCRIPTION_LABEL'
2404     + </span><span class=data>
2405     + %= $ddc_datas->{"Domain_details"}->{"Description"}
2406     + </span><br><br>
2407     + <span class=label>
2408     + %= $ddc_datas->{"Domain_details"}->{"Content"}
2409     + </span><span class=data>
2410     + %= $ddc_datas->{"Domain_details"}->{"Content"}
2411     + </span><br><br>
2412     + <span class=label>
2413     + %=l 'ddc_SERVERS_LABEL'
2414     + </span><span class=data>
2415     + % param dns=>$ddc_datas->{"Domain_details"}->{"dns"};
2416     + %=select_field dns=>$dnslabels
2417     + </span><br>
2418     + <span class=label>
2419     + %=l 'ddc_CUSTOMDNS_LABEL'
2420     + </span><span class=data>
2421     + % param customdns=>$ddc_datas->{"Domain_details"}->{"customdns"};
2422     + %=text_field 'customdns'
2423     + </span><br>
2424     + <span class=label>
2425     + %=l 'ddc_CUSTOM_PROTOCOL_LABEL'
2426     + </span><span class=data>
2427     + % param customprotocol=>$ddc_datas->{"Domain_details"}->{"customprotocol"};
2428     + %=text_field 'customprotocol'
2429     + </span><br>
2430     + <span class=label>
2431     + %=l 'ddc_NAME_LABEL'
2432     + </span><span class=data>
2433     + % param login=>$ddc_datas->{"Domain_details"}->{"login"};
2434     + %=text_field 'login'
2435     + </span><br>
2436     + <span class=label>
2437     + %=l 'ddc_PASSWORD_LABEL'
2438     + </span><span class=data>
2439     + % param password=>$ddc_datas->{"Domain_details"}->{"password"};
2440     + %=password_field 'password',id=>"ddcPass",value=>$ddc_datas->{"Domain_details"}->{"password"}
2441     + %=label_for show=>"Show"
2442     + %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
2443     + %= javascript begin
2444     + function showPass() {
2445     + var x = document.getElementById("ddcPass");
2446     + if (x.type === "password") {
2447     + x.type = "text";
2448     + } else {
2449     + x.type = "password";
2450     + }
2451     + }
2452     + % end
2453     + </span><br>
2454     + <span class=label>
2455     + %=l 'ddc_MX'
2456     + </span><span class=data>
2457     + % param mx=>$ddc_datas->{"Domain_details"}->{"mx"};
2458     + %=text_field 'mx'
2459     + </span><br>
2460     + %= hidden_field trt=>"MOD"
2461     + %= hidden_field Route=>$c->current_route
2462     + %= submit_button "$btn", class => 'action'
2463     + % end
2464     +</div>
2465     +
2466     +
2467     diff -urN smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep
2468     --- smeserver-ddclient-1.2.1.old/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep 1970-01-01 01:00:00.000000000 +0100
2469     +++ smeserver-ddclient-1.2.1/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep 2020-06-08 18:18:00.000000000 +0100
2470     @@ -0,0 +1,52 @@
2471     +<div id='ddc_paramlist'>
2472     + <h2>
2473     + %= l 'ddc_Params_for_IP_Retrieval'
2474     + </h2>
2475     + % my $btn = l('ddc_APPLY');
2476     + %= form_for '/ddclient3' => (method => 'POST') => begin
2477     + <span class=label>
2478     + %=l 'ddc_RETRIEVE_SSL'
2479     + </span><span class=data>
2480     + % param retrievessl=>$ddc_datas->{"params"}->{"ssl"};
2481     + %=select_field retrievessl=>[['Yes'=>'yes'],['No'=>'no']]
2482     + </span><br>
2483     + <span class=label>
2484     + %=l 'ddc_RETRIEVE_DEAMONUPDATE'
2485     + </span><span class=data>
2486     + % param retrievedeamonupdate=>$ddc_datas->{"params"}->{"DeamonUpdate"};
2487     + %=number_field 'retrievedeamonupdate',min=>0
2488     + </span><br>
2489     + <span class=label>
2490     + %=l 'ddc_RETRIEVE_METHOD'
2491     + </span><span class=data>
2492     + % param retrievemethod=>$ddc_datas->{"params"}->{"method"};
2493     + %=select_field retrievemethod=>$methodlabels
2494     + </span><br>
2495     + <span class=label>
2496     + %=l 'ddc_RETRIEVE_IF'
2497     + </span><span class=data>
2498     + % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"};
2499     + %=text_field 'retrieveinterface'
2500     + </span><br>
2501     + <span class=label>
2502     + %=l 'ddc_RETRIEVE_CMD'
2503     + </span><span class=data>
2504     + % param retrievecmd=>$ddc_datas->{"params"}->{"cmd"};
2505     + %=text_field 'retrievecmd'
2506     + </span><br>
2507     + <span class=label>
2508     + %=l 'ddc_RETRIEVE_IP'
2509     + </span><span class=data>
2510     + % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"};
2511     + %=text_field 'retrieveip'
2512     + </span><br>
2513     + <span class=label>
2514     + %=l 'ddc_RETRIEVE_URLCHECKIP'
2515     + </span><span class=data>
2516     + % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"};
2517     + %=text_field 'retrieveurlcheckip'
2518     + </span><br>
2519     +
2520     + %= submit_button "$btn", class => 'action'
2521     + % end
2522     +</div>

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