/[smeserver]/rpms/smeserver-manager/sme10/smeserver-manager-0.1.0-portforwarding-localnetwork-cleanup.patch
ViewVC logotype

Annotation of /rpms/smeserver-manager/sme10/smeserver-manager-0.1.0-portforwarding-localnetwork-cleanup.patch

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


Revision 1.1 - (hide annotations) (download)
Tue Apr 7 13:29:49 2020 UTC (4 years, 6 months ago) by brianr
Branch: MAIN
CVS Tags: smeserver-manager-0_1_0-28_el7_sme, smeserver-manager-0_1_0-25_el7_sme, smeserver-manager-0_1_0-29_el7_sme, smeserver-manager-0_1_0-26_el7_sme, smeserver-manager-0_1_0-30_el7_sme, smeserver-manager-0_1_0-20_el7_sme, smeserver-manager-0_1_0-14_el7_sme, smeserver-manager-0_1_0-27_el7_sme, smeserver-manager-0_1_0-24_el7_sme, smeserver-manager-0_1_0-21_el7_sme, smeserver-manager-0_1_0-16_el7_sme, smeserver-manager-0_1_0-15_el7_sme, smeserver-manager-0_1_0-18_el7_sme, smeserver-manager-0_1_0-31_el7_sme, smeserver-manager-0_1_2-1_el7_sme, smeserver-manager-0_1_0-23_el7_sme, smeserver-manager-0_1_0-22_el7_sme, smeserver-manager-0_1_0-17_el7_sme, smeserver-manager-0_1_0-19_el7_sme
* Tue Apr 07 2020 Brian Read <brianr@bjsystems.co.uk> 0.1.0-14.sme
- Add in portforwarding panel
- Clean up localnetwork panel code

1 brianr 1.1 diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Localnetworks.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Localnetworks.pm
2     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Localnetworks.pm 2020-04-07 07:05:13.511766797 +0100
3     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Localnetworks.pm 2020-04-07 06:44:00.000000000 +0100
4     @@ -13,9 +13,6 @@
5     use esmith::util;
6     use esmith::HostsDB;
7    
8     -#use esmith::AccountsDB;
9     -#our $cdb = esmith::ConfigDB->open || die "Couldn't open configuration db";
10     -
11     my $network_db = esmith::NetworksDB->open() || die("Couldn't open networks db");
12     my $ret = "OK";
13    
14     @@ -73,7 +70,6 @@
15     if ( $trt eq 'ADD1' ) {
16     #Add a network - called after new network details filled in
17     my %ret = add_network($c);
18     - #die(%ret);
19     #Return to list page if success
20     if ((index($ret{ret},"SUCCESS") != -1)) {
21     $trt = "LIST";
22     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Portforwarding.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Portforwarding.pm
23     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Portforwarding.pm 1970-01-01 01:00:00.000000000 +0100
24     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/Controller/Portforwarding.pm 2020-04-06 12:31:00.000000000 +0100
25     @@ -0,0 +1,407 @@
26     +package SrvMngr::Controller::Portforwarding;
27     +
28     +use strict;
29     +use warnings;
30     +use Mojo::Base 'Mojolicious::Controller';
31     +
32     +use Locale::gettext;
33     +use SrvMngr::I18N;
34     +use SrvMngr qw(theme_list init_session_cgi);
35     +#use Regexp::Common qw /net/;
36     +
37     +use Data::Dumper;
38     +use esmith::util;
39     +use esmith::HostsDB;
40     +
41     +our $db = esmith::ConfigDB->open
42     + || die "Can't open configuration database: $!\n";
43     +our $tcp_db = esmith::ConfigDB->open('portforward_tcp')
44     + || die "Can't open portforward_tcp database: $!\n";
45     +our $udp_db = esmith::ConfigDB->open('portforward_udp')
46     + || die "Can't open portforward_udp database: $!\n";
47     +
48     +
49     +my %ret = ();
50     +
51     +use constant FALSE => 0;
52     +use constant TRUE => 1;
53     +
54     +sub main {
55     +
56     + my $c = shift;
57     + $c->app->log->info( $c->log_req );
58     +
59     + my %pf_datas = ();
60     + $pf_datas{return} = "";
61     + my $title = $c->l('pf_FORM_TITLE');
62     + my $modul = '';
63     +
64     + $pf_datas{trt} = 'LIST';
65     +
66     + my @tcpforwards = $tcp_db->get_all;
67     + my @udpforwards = $udp_db->get_all;
68     + my $empty = 1 if not @tcpforwards and not @udpforwards;
69     +
70     + $c->stash(
71     + title => $title,
72     + modul => $modul,
73     + pf_datas => \%pf_datas,
74     + tcpforwards =>\@tcpforwards,
75     + udpforwards =>\@udpforwards,
76     + empty => $empty
77     + );
78     + $c->render( template => 'portforwarding' );
79     +}
80     +
81     +sub do_display {
82     +
83     + my $c = shift;
84     + $c->app->log->info( $c->log_req );
85     + #my $pf_datas = $c->stash('pf_datas');
86     + my $portforwards = $c->stash('portforwards');
87     +
88     + my $rt = $c->current_route;
89     + my $trt = ( $c->param('trt') || 'LIST' );
90     +
91     +
92     + $trt = 'DEL' if ( $rt eq 'portforwardingdel' );
93     + $trt = 'ADD' if ( $rt eq 'portforwardingadd' );
94     + $trt = 'ADD1' if ( $rt eq 'portforwardingadd1' );
95     + $trt = 'DEL1' if ( $rt eq 'portforwardingdel1' );
96     +
97     + my %pf_datas = ();
98     + my $title = $c->l('pf_FORM_TITLE');
99     + my $modul = '';
100     +
101     +
102     + if ( $trt eq 'ADD' ) {
103     + # Add a portforward- called from the list panel
104     + # Nothing to do here...as just need template to display fields to input data.
105     +
106     + }
107     +
108     + if ( $trt eq 'ADD1' ) {
109     + #Add a port forward - called after new pf details filled in
110     + my %ret = add_portforward($c);
111     + #Return to list page if success
112     + if ((index($ret{ret},"SUCCESS") != -1)) {
113     + $trt = "LIST";
114     + } else {
115     + #Error - return to Add page
116     + $trt = "ADD";
117     + }
118     + $c->stash(ret=>\%ret);
119     + }
120     +
121     + if ( $trt eq 'DEL1' ) {
122     + ##After Remove clicked on Delete network panel
123     + my $sport = $c->param("sport") || '';
124     + my $proto = $c->param("proto") || '';
125     + #work out which protocol
126     + my $fdb;
127     + if ($proto eq 'TCP') {
128     + $fdb = $tcp_db;
129     + }
130     + else {
131     + $fdb = $udp_db;
132     + }
133     + #check that the sport is in the db
134     + my $entry = $fdb->get($sport) || die("Unable to find sport and proto $sport $proto");
135     + $entry->delete;
136     + system( "/sbin/e-smith/signal-event", "portforwarding-update") == 0
137     + or ( die($c->l('pf_ERR_NONZERO_RETURN_EVENT')));
138     + $trt = "LIST";
139     + my %ret = (ret=>"pf_SUCCESS");
140     + $c->stash(ret=>\%ret);
141     + }
142     +
143     + if ( $trt eq 'DEL' ) {
144     + ##Initial delete panel requiring confirmation
145     + my $sport = $c->param("sport") || '';
146     + my $proto = $c->param("proto") || '';
147     + $c->stash(sport=>$sport);
148     + #work out which protocol
149     + my $fdb;
150     + if ($proto eq 'TCP') {
151     + $fdb = $tcp_db;
152     + }
153     + else {
154     + $fdb = $udp_db;
155     + }
156     + #pull out details and pass to template
157     + my $entry = $fdb->get($sport) || die("Unable to find sport and proto $sport $proto");
158     + $pf_datas{proto} = $proto;
159     + $pf_datas{sport} = $sport;
160     + $pf_datas{dhost} = $entry->prop('DestHost');
161     + $pf_datas{dport} = $entry->prop('DestPort') || '';
162     + $pf_datas{cmmnt} = $entry->prop('Comment') || '';
163     + $pf_datas{allow} = $entry->prop('AllowHosts') || '';
164     + }
165     +
166     + if ( $trt eq 'LIST' ) {
167     + #List all the port forwards
168     + my @tcpforwards = $tcp_db->get_all;
169     + my @udpforwards = $udp_db->get_all;
170     + my $empty = 1 if not @tcpforwards and not @udpforwards;
171     +
172     + $c->stash(
173     + tcpforwards =>\@tcpforwards,
174     + udpforwards =>\@udpforwards,
175     + empty => $empty
176     + );
177     +
178     + #my %forwards = (TCP=>@tcpforwards,UDP=>@udpforwards);
179     + #$c->stash(portforwarding => %forwards);
180     + }
181     +
182     + $pf_datas{'trt'} = $trt;
183     + $c->stash( title => $title, modul => $modul, pf_datas => \%pf_datas );
184     + $c->render( template => 'portforwarding' );
185     +}
186     +
187     +sub add_portforward {
188     + my $c = shift;
189     + my $sport = $c->param("sport") || '';
190     + my $proto = $c->param("proto") || '';
191     + #work out which protocol
192     + my $fdb;
193     + if ($proto eq 'TCP') {
194     + $fdb = $tcp_db;
195     + }
196     + else {
197     + $fdb = $udp_db;
198     + }
199     + #Get the values
200     + my $proto = $c->param("proto");
201     + my $sport = $c->param("sport");
202     + my $dport = $c->param("dport");
203     + my $dhost = get_destination_host($c);
204     + my $cmmnt = $c->param("commnt") || "";
205     + my $allow = $c->param("allow") || "";
206     + my $deny = (($c->param("allow")) ? "0.0.0.0/0" : "");
207     + $proto =~ s/^\s+|\s+$//g;
208     + $sport =~ s/^\s+|\s+$//g;
209     + $dport =~ s/^\s+|\s+$//g;
210     + $dhost =~ s/^\s+|\s+$//g;
211     + #Validate the values
212     + %ret=validate_source_port($c) ; unless (index($ret{ret},"SUCCESS")!= -1) {return %ret;}
213     + %ret=validate_allowed_hosts($c) ; if (index($ret{ret},"SUCCESS")== -1) {return %ret;}
214     + %ret=validate_destination_port($c) ; if (index($ret{ret},"SUCCESS")== -1) {return %ret;}
215     + %ret=validate_destination_host($c) ; if (index($ret{ret},"SUCCESS")== -1) {return %ret;}
216     + # and then write it to the DB and tell the exec about it.
217     + my $entry = $fdb->get($sport) || $fdb->new_record($sport, { type => 'forward' });
218     + $entry->set_prop('DestHost', $dhost);
219     + $entry->set_prop('DestPort', $dport) if $dport;
220     + $entry->set_prop('Comment', $cmmnt);
221     + $entry->set_prop('AllowHosts', $allow);
222     + $entry->set_prop('DenyHosts', $deny);
223     + system( "/sbin/e-smith/signal-event", "portforwarding-update") == 0
224     + or ( return (ret=>'pf_ERR_NONZERO_RETURN_EVENT' ));
225     + my %ret = (ret=>"pf_SUCCESS");
226     + return %ret;
227     +
228     +}
229     +
230     +sub get_destination_host
231     +{
232     + my $q = shift;
233     + my $dhost = $q->param("dhost");
234     + my $localip = $db->get_prop('InternalInterface', 'IPAddress');
235     + my $external_ip = $db->get_prop('ExternalInterface', 'IPAddress') || $localip;
236     +
237     + if ($dhost =~ /^(127.0.0.1|$localip|$external_ip)$/i)
238     + {
239     + # localhost token gets expanded at runtime to current external IP
240     + $dhost = 'localhost';
241     + }
242     + return $dhost;
243     +}
244     +
245     +sub validate_source_port {
246     + my $q = shift;
247     + my $sport = $q->param('sport');
248     + $sport =~ s/^\s+|\s+$//g;
249     + # If this is a port range, split it up and validate it individually.
250     + my @ports = ();
251     + if ($sport =~ /-/)
252     + {
253     + @ports = split /-/, $sport;
254     + if (@ports > 2)
255     + {
256     + #$self->debug_msg("found more than 2 ports: @ports");
257     + return (ret=>'pf_ERR_BADPORT');
258     + }
259     + }
260     + else
261     + {
262     + push @ports, $sport;
263     + }
264     + #$self->debug_msg("the ports array is: @ports");
265     + foreach my $port (@ports)
266     + {
267     + #$self->debug_msg("looping on port $port");
268     + if (! isValidPort($port))
269     + {
270     + #$self->debug_msg("returning: " . $self->localise('ERR_BADPORT'));
271     + return (ret=>'pf_ERR_BADPORT');
272     + }
273     + }
274     + # Now, lets screen any duplicates.
275     + my $protocol = $q->param('protocol');
276     + my @forwards = ();
277     +
278     + # Grab the existing rules for this protocol.
279     + if ($protocol eq 'TCP') {
280     + @forwards = map { $_->key } $tcp_db->get_all;
281     + } elsif ($protocol eq 'UDP') {
282     + @forwards = map { $_->key } $udp_db->get_all;
283     + }
284     + foreach my $psport (@forwards)
285     + {
286     + if (detect_collision($sport, $psport))
287     + {
288     + return (ret=>'pf_ERR_PORT_COLLISION');
289     + }
290     + }
291     + return (ret=>"pf_SUCCESS");
292     +}
293     +
294     +sub detect_collision
295     +{
296     + my $port_a = shift;
297     + my $port_b = shift;
298     +
299     + # If they're both single ports, see if they're the same.
300     + if (($port_a !~ /-/) && ($port_b !~ /-/))
301     + {
302     + return $port_a eq $port_b;
303     + }
304     + # If port_a is not a range but port_b is, is a in b?
305     + elsif ($port_a !~ /-/)
306     + {
307     + my ($b1, $b2) = split /-/, $port_b;
308     + return (($port_a >= $b1) && ($port_a <= $b2));
309     + }
310     + elsif ($port_b !~ /-/)
311     + {
312     + my ($a1, $a2) = split /-/, $port_a;
313     + return (($port_b >= $a1) && ($port_b <= $a2));
314     + }
315     + else
316     + {
317     + # They're both ranges. Do they overlap?
318     + my ($a1, $a2) = split /-/, $port_a;
319     + my ($b1, $b2) = split /-/, $port_b;
320     + # They can overlap in two ways. Either a1 is in b, or b1 is in a.
321     + if (($a1 >= $b1) && ($a1 <= $b2))
322     + {
323     + return TRUE;
324     + }
325     + elsif (($b1 >= $a1) && ($b1 <= $a2))
326     + {
327     + return TRUE;
328     + }
329     + return FALSE;
330     + }
331     +}
332     +
333     +
334     +sub validate_destination_port {
335     + my $c = shift;
336     + my $dport = $c->param('dport');
337     + $dport =~ s/^\s+|\s+$//g;
338     + # If the dport is empty, that's ok.
339     + return (ret=>'pf_SUCCESS') if not $dport;
340     +
341     + # If this is a port range, split it up and validate it individually.
342     + my @ports = ();
343     + if ($dport =~ /-/)
344     + {
345     + @ports = split /-/, $dport;
346     + if (@ports > 2)
347     + {
348     + #$self->debug_msg("found more than 2 ports: @ports");
349     + return (ret=>'pf_ERR_BADPORT');
350     + }
351     + }
352     + else
353     + {
354     + push @ports, $dport;
355     + }
356     + #$self->debug_msg("the ports array is: @ports");
357     +
358     + foreach my $port (@ports)
359     + {
360     + #$self->debug_msg("looping on port $port");
361     + if (! isValidPort($port))
362     + {
363     + #$self->debug_msg("returning: " . $self->localise('ERR_BADPORT'));
364     + return (ret=>'pf_ERR_BADPORT');
365     + }
366     + }
367     + return (ret=>'pf_SUCCESS');
368     +}
369     +
370     +
371     +sub isValidPort() {
372     + my $port = shift;
373     +
374     + return FALSE unless defined $port;
375     +
376     + if (($port =~ /^\d+$/) &&
377     + ($port > 0) &&
378     + ($port < 65536))
379     + {
380     + return TRUE;
381     + }
382     + else {
383     + return FALSE;
384     + }
385     +}
386     +
387     +sub validate_destination_host {
388     + my $c = shift;
389     + my $dhost = $c->param('dhost');
390     + $dhost =~ s/^\s+|\s+$//g;
391     +
392     + my $localip = $db->get_prop('InternalInterface', 'IPAddress');
393     + my $external_ip = $db->get_prop('ExternalInterface', 'IPAddress') || $localip;
394     +
395     + if ($dhost =~ /^(localhost|127.0.0.1|$localip|$external_ip)$/i)
396     + {
397     + # localhost token gets expanded at runtime to current external IP
398     + $c->param(-name=>'dhost', -value=>'localhost');
399     + return (ret=>'pf_SUCCESS');
400     + }
401     +
402     + my $systemmode = $db->get_value('SystemMode');
403     +
404     + if ($systemmode eq 'serveronly') {
405     + return (ret=>'pf_IN_SERVERONLY');
406     + }
407     +
408     + if (isValidIP($dhost)) {
409     + return (ret=>'pf_SUCCESS');
410     + }
411     + else {
412     + return (ret=>'pf_ERR_BADIP');
413     + }
414     +}
415     +
416     +sub validate_allowed_hosts {
417     + my $c = shift;
418     + my $ahost = $c->param('allow');
419     + $ahost =~ s/^\s+|\s+$//g;
420     +
421     + my %valid_ahost_list = (ret=>"pf_SUCCESS");
422     +
423     + foreach (split(/[\s,]+/, $ahost)) {
424     + my $valid_ipnet = 0;
425     + $valid_ipnet = 1 if ($_ =~ m/^\d+\.\d+\.\d+\.\d+$/);
426     + $valid_ipnet = 1 if ($_ =~ m/^\d+\.\d+\.\d+\.\d+\/\d+$/);
427     + %valid_ahost_list = (ret=>"pf_ERR_BADAHOST") if ($valid_ipnet != 1);
428     + }
429     +
430     + return %valid_ahost_list;
431     +}
432     +1;
433     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm
434     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm 2020-04-07 07:05:11.686749826 +0100
435     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/lib/SrvMngr/I18N/en.pm 2020-04-07 09:29:08.436312695 +0100
436     @@ -1818,6 +1818,115 @@
437     handle this nonstandard subnet mask. The simpler specification
438     <b>{$simpleMask}</b> will be used instead.
439     </p>',
440     +
441     + 'pf_FORM_TITLE' =>
442     + 'Configure Port Forwarding',
443     + 'pf_FIRST_PAGE_DESCRIPTION' =>
444     + '<p>
445     + You can use this panel to modify your firewall rules so
446     + as to open a specific port on this server and forward it
447     + to another port on another host. Doing so will permit
448     + incoming traffic to directly access a private host on
449     + your LAN.
450     + </p>
451     + <p>
452     + WARNING: Misuse of this feature can seriously compromise the
453     + security of your network. Do not use this feature
454     + lightly, or without fully understanding the implications
455     + of your actions.
456     + </p>
457     + ',
458     + 'pf_CREATE_RULE' =>
459     + 'Create portforwarding rule',
460     + 'pf_SUMMARY_ADD_DESC' =>
461     + 'The following summarizes the port-forwarding rule
462     + that you are about to add. If you are satisfied with the rule,
463     + click the &quot;Add&quot; button. If you are not, click the
464     + &quot;Cancel&quot; button.
465     + ',
466     + 'pf_SUMMARY_REMOVE_DESC' =>
467     + 'The following summarizes the port-forwarding rule
468     + that you are about to remove. If you are sure you want to
469     + remove the rule, click the &quot;Remove&quot; button. If not,
470     + click the &quot;Cancel&quot; button.
471     + ',
472     + 'pf_SHOW_FORWARDS' =>
473     + '
474     + Below you will find a table summarizing the current
475     + port-forwarding rules installed on this server. Click on the
476     + &quot;Remove&quot; link to remove the corresponding rule.
477     + ',
478     + 'pf_NO_FORWARDS' =>
479     + 'There are currently no forwarded ports on the system.',
480     + 'pf_CREATE_PAGE_DESCRIPTION' =>
481     + '<![CDATA[
482     + <p>Select the protocol, the port you wish to forward, the
483     + destination host, and the port on the destination host
484     + that you wish to forward to. If you wish to specify a port
485     + range, enter the lower and upper boundaries separated by a
486     + hyphen. The destination port may be left blank, which will
487     + instruct the firewall to leave the source port
488     + unaltered.</p>
489     + ]]>
490     + ',
491     + 'pf_LABEL_SOURCE_PORT' =>
492     + 'Source Port(s)',
493     + 'pf_LABEL_PROTOCOL' =>
494     + 'Protocol',
495     + 'pf_LABEL_DESTINATION_PORT' =>
496     + 'Destination Port(s)',
497     + 'pf_LABEL_DESTINATION_HOST' =>
498     + 'Destination Host IP Address',
499     + 'pf_LABEL_RULE_COMMENT' =>
500     + 'Rule Comment',
501     + 'pf_LABEL_ALLOW_HOSTS' =>
502     + 'Allow Hosts',
503     + 'pf_Port forwarding' =>
504     + 'Port forwarding',
505     + 'pf_SUCCESS' =>
506     + 'Your change to the port forwarding rules has been
507     + successfully saved.
508     + ',
509     + 'pf_RULE_COMMENT' =>
510     + 'Rule Comment',
511     + 'pf_ALLOW_HOSTS' =>
512     + 'Allow Hosts',
513     + 'pf_ERR_NO_MASQ_RECORD' =>
514     + 'Cannot retrieve masq record from the configuration
515     + database.',
516     + 'pf_ERR_UNSUPPORTED_MODE' =>
517     + 'Unsupported mode.',
518     + 'pf_ERR_CANNOT_REMOVE_NORULE' =>
519     + 'Cannot remove non-existant rule.',
520     + 'pf_ERR_NONZERO_RETURN_EVENT' =>
521     + 'Event returned a non-zero return value.',
522     + 'pf_ERR_BADPORT' =>
523     + 'The ports must be a positive integer less than
524     + 65536.',
525     + 'pf_ERR_BADIP' =>
526     + 'This does not appear to be an IP address. You must use
527     + dotted-quad notation, and each of the four numbers should be less
528     + than 256. ie: 192.168.0.5',
529     + 'pf_ERR_DUPRULE' =>
530     + 'This rule has already been added, it cannot be added
531     + twice.',
532     + 'pf_ERR_PORT_COLLISION' =>
533     + '
534     + ERROR: This port or port range conflicts with an existing
535     + rule. Please modify this new rule, or remove the old rule.
536     + ',
537     + 'pf_ERR_BADAHOST' =>
538     + '
539     + This does not appear to be a valid IP address list.
540     + ie: 192.168.0.1,192.168.1.1/24
541     + ',
542     + 'pf_IN_SERVERONLY' =>
543     + '
544     + This server is currently in serveronly mode and portforwarding
545     + is possible only to localhost.
546     + ',
547     +
548     +
549    
550     );
551    
552     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl
553     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl 2020-04-07 07:05:11.930752095 +0100
554     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/script/srvmngr.pl 2020-04-07 09:30:58.028331856 +0100
555     @@ -114,6 +114,16 @@
556     $r->post('/localnetworksdel1')->to('localnetworks#do_display')->name('localnetworksdel1');
557     $r->get('/localnetworksdel1')->to('localnetworks#do_display')->name('localnetworksdel1');
558    
559     +$r->get('/portforwarding')->to('portforwarding#main')->name('portforwarding');
560     +$r->post('/portforwarding')->to('portforwarding#do_display')->name('portforwarding');
561     +$r->post('/portforwardingdel')->to('portforwarding#do_display')->name('portforwardingdel');
562     +$r->post('/portforwardingadd')->to('portforwarding#do_display')->name('portforwardingadd');
563     +$r->post('/portforwardingadd1')->to('portforwarding#do_display')->name('portforwardingadd1');
564     +$r->get('/portforwardingadd1')->to('portforwarding#do_display')->name('portforwardingadd1');
565     +$r->get('/portforwardingdel')->to('portforwarding#do_display')->name('portforwardingdel');
566     +$r->post('/portforwardingdel1')->to('portforwarding#do_display')->name('portforwardingdel1');
567     +$r->get('/portforwardingdel1')->to('portforwarding#do_display')->name('portforwardingdel1');
568     +
569     $r->get('/printers')->to('printers#main')->name('printers');
570     $r->post('/printers')->to('printers#do_display')->name('printeradd');
571     $r->get('/printers2')->to('printers#do_update')->name('printernet');
572     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ln_list.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ln_list.html.ep
573     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ln_list.html.ep 2020-04-07 07:05:13.512766806 +0100
574     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_ln_list.html.ep 2020-04-07 06:45:00.000000000 +0100
575     @@ -50,7 +50,7 @@
576     %=l 'NETWORK'
577     </th>
578     <th class='sme-border'>
579     - %=l 'SUBNET_MASK'
580     + %=l 'ln_SUBNET_MASK'
581     </th>
582    
583     <th class='sme-border'>
584     @@ -78,7 +78,8 @@
585     %= t td => (class => 'sme-border') => $num_hosts
586     %= t td => (class => 'sme-border') => $localnetwork->prop('Router')
587     % if ($removable eq "yes") {
588     - <td class='sme-border'><a href="/server-manager2/localnetworksdel?trt=DEL&localnetwork=<%= $localnetwork->key%>"><%=l 'REMOVE'%></a></td>
589     + <td class='sme-border'>
590     + <a href="/server-manager2/localnetworksdel?trt=DEL&localnetwork=<%= $localnetwork->key%>"><%=l 'REMOVE'%></a></td>
591     % } else {
592     <td class='sme-border'> </td>
593     %}
594     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_add.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_add.html.ep
595     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_add.html.ep 1970-01-01 01:00:00.000000000 +0100
596     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_add.html.ep 2020-04-06 07:01:00.000000000 +0100
597     @@ -0,0 +1,83 @@
598     +<div id='pf_add'>
599     +
600     + % my $retref= $c->stash("ret");
601     + % my %ret;
602     + % unless (length($retref)) {%ret = (ret=>"");}
603     + % else {%ret = %$retref;}
604     +
605     + % my @vars = split(",",$ret{vars});
606     + % my $var1 = @vars[0];
607     + % my $var2 = @vars[1];
608     + % my $var3 = @vars[2];
609     + % my $var4 = @vars[3];
610     + % my $var5 = @vars[4];
611     + % my $var6 = @vars[5];
612     +
613     + %if ($ret{'ret'} eq "") {
614     +
615     + %} elsif (index($ret{ret},"SUCCESS") != -1) {
616     + <div class='success'>
617     + <h2> Operation Status Report</h2>
618     + %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
619     + </div>
620     + %} else {
621     + <div class='sme-error'>
622     + <h2> Operation Status Report - Error</h2>
623     + %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
624     + </div>
625     + %}
626     + <br />
627     + % my $btn = l('ADD');
628     +
629     + % if ($config->{debug} == 1) {
630     + <p>
631     + %= dumper $c->current_route
632     + %= dumper $c->stash("ret")
633     + </p>
634     + % }
635     +
636     + %= form_for '/portforwardingadd1' => (method => 'POST') => begin
637     + <h2>
638     + %=l "pf_CREATE_RULE"
639     + </h2>
640     + <p>
641     + %=l "pf_SUMMARY_ADD_DESC"
642     + </p><br>
643     + <span class=label>
644     + %=l "pf_LABEL_PROTOCOL"
645     + </span><span class=data>
646     + %=select_field 'proto'=>["TCP","UDP"]
647     + </span><br><br>
648     + <span class=label>
649     + %=l "pf_LABEL_SOURCE_PORT"
650     + </span><span class=data>
651     + %=text_field 'sport'
652     + </span><br><br>
653     + <span class=label>
654     + %=l "pf_LABEL_DESTINATION_PORT"
655     + </span>
656     + <span class=data>
657     + %=text_field 'dport'
658     + </span><br><br>
659     + <span class=label>
660     + %=l "pf_LABEL_DESTINATION_HOST"
661     + </span>
662     + <span class=data>
663     + %=text_field 'dhost'
664     + </span><br><br>
665     + <span class=label>
666     + %=l "pf_ALLOW_HOSTS"
667     + </span>
668     + <span class=data>
669     + %=text_field 'allow'
670     + </span><br><br>
671     + <span class=label>
672     + %=l "pf_RULE_COMMENT"
673     + </span>
674     + <span class=data>
675     + %=text_field 'cmmnt'
676     + </span><br><br>
677     + %= submit_button "$btn", class => 'action'
678     + %end
679     +
680     +</div>
681     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_del.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_del.html.ep
682     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_del.html.ep 1970-01-01 01:00:00.000000000 +0100
683     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_del.html.ep 2020-04-06 06:25:00.000000000 +0100
684     @@ -0,0 +1,63 @@
685     +<div id='ln_del'>
686     +
687     + % my $btn = l('REMOVE');
688     + % my $proto = $pf_datas->{proto};
689     + % my $sport = $pf_datas->{sport};
690     + % my $dport = $pf_datas->{dport};
691     + % my $dhost = $pf_datas->{dhost};
692     + % my $cmmnt = $pf_datas->{cmmnt};
693     + % my $allow = $pf_datas->{allow};
694     +
695     + % if ($config->{debug} == 1) {
696     + <p>
697     + %= dumper $c->current_route
698     + %= dumper $c->stash("ret")
699     + %= dumper %$pf_datas
700     + </p>
701     + % }
702     +
703     + %= form_for '/portforwardingdel1' => (method => 'POST') => begin
704     + <br>
705     + %= l "pf_SUMMARY_REMOVE_DESC"
706     + </p><br>
707     + <span class=label>
708     + %=l "pf_LABEL_PROTOCOL"
709     + </span><span class=data>
710     + %=$proto
711     + </span><br><br>
712     + <span class=label>
713     + %=l "pf_LABEL_SOURCE_PORT"
714     + </span><span class=data>
715     + %=$sport
716     + </span><br><br>
717     + <span class=label>
718     + %=l "pf_LABEL_DESTINATION_HOST"
719     + </span>
720     + <span class=data>
721     + %=$dport
722     + </span><br><br>
723     + <span class=label>
724     + %=l "pf_LABEL_DESTINATION_PORT"
725     + </span>
726     + <span class=data>
727     + %=$dhost
728     + </span><br><br>
729     + <span class=label>
730     + %=l "pf_RULE_COMMENT"
731     + </span>
732     + <span class=data>
733     + %=$cmmnt
734     + </span><br><br>
735     + <span class=label>
736     + %=l "pf_ALLOW_HOSTS"
737     + </span>
738     + <span class=data>
739     + %=$allow
740     + </span><br><br>
741     + %#}
742     + %= hidden_field sport=>$sport
743     + %= hidden_field proto=>$proto
744     + %= submit_button "$btn", class => 'action'
745     + %end
746     +
747     +</div>
748     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_list.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_list.html.ep
749     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_list.html.ep 1970-01-01 01:00:00.000000000 +0100
750     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/partials/_pf_list.html.ep 2020-04-06 07:35:00.000000000 +0100
751     @@ -0,0 +1,107 @@
752     +<div id='pf_list'>
753     + % my $btn = l('pf_CREATE_RULE');
754     + %= form_for '/portforwardingadd' => (method => 'POST') => begin
755     +
756     + % my $retref= $c->stash("ret");
757     + % my %ret;
758     + % unless (length($retref)) {%ret = (ret=>"");}
759     + % else {%ret = %$retref;}
760     +
761     + % my $numtcpforwards = @$tcpforwards;
762     + % my $numudpforwards = @$udpforwards;
763     +
764     + % my @vars = split(",",$ret{vars});
765     + % my $var1 = @vars[0];
766     + % my $var2 = @vars[1];
767     + % my $var3 = @vars[2];
768     + % my $var4 = @vars[3];
769     + % my $var5 = @vars[4];
770     + % my $var6 = @vars[5];
771     +
772     +
773     +
774     + %if ($ret{ret} eq "") {
775     + %=l "pf_FIRST_PAGE_DESCRIPTION"
776     + %} elsif (index($ret{ret},"SUCCESS") != -1) {
777     + <div class='success'>
778     + <h2> Operation Status Report</h2>
779     + %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
780     + </div>
781     + %} else {
782     + <div class='sme-error'>
783     + <h2> Operation Status Report - Error</h2>
784     + %= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
785     + </div>
786     + %}
787     + <br><br>
788     + %= submit_button "$btn", class => 'action'
789     + <br>
790     +
791     + % if ($empty){
792     + <br>
793     + %=l 'pf_NO_FORWARDS'
794     + % } else {
795     + <br>
796     + <table class="sme-border"><tbody>
797     + <tr>
798     + <th class='sme-border'>
799     + %=l 'pf_LABEL_PROTOCOL'
800     + </th>
801     + <th class='sme-border'>
802     + %=l 'pf_LABEL_SOURCE_PORT'
803     + </th>
804     +
805     + <th class='sme-border'>
806     + %=l 'pf_LABEL_DESTINATION_HOST'
807     + </th>
808     +
809     + <th class='sme-border'>
810     + %=l 'pf_LABEL_DESTINATION_PORT'
811     + </th>
812     +
813     + <th class='sme-border'>
814     + %=l 'pf_ALLOW_HOSTS'
815     + </th>
816     +
817     +
818     + <th class='sme-border'>
819     + %=l 'pf_RULE_COMMENT'
820     + </th>
821     +
822     + <th class='sme-border' '>
823     + %=l 'ACTION'
824     + </th>
825     + </tr>
826     +
827     + % my %forwards = ();
828     + % $forwards{TCP} = $tcpforwards;
829     + % $forwards{UDP} = $udpforwards;
830     +
831     + % foreach my $proto (sort keys %forwards) {
832     +
833     + % if (@{ $forwards{$proto} }) {
834     + % foreach my $entry (@{ $forwards{$proto} }) {
835     + <tr>
836     + % my $sport = $entry->key;
837     + % my $dhost = $entry->prop('DestHost');
838     + % my $dport = $entry->prop('DestPort') || '';
839     + % my $cmmnt = $entry->prop('Comment') || '';
840     + % my $allow = $entry->prop('AllowHosts') || '';
841     + %= t td => (class => 'sme-border') => $proto
842     + %= t td => (class => 'sme-border') => $sport
843     + %= t td => (class => 'sme-border') => $dhost
844     + %= t td => (class => 'sme-border') => $dport
845     + %= t td => (class => 'sme-border') => $allow
846     + %= t td => (class => 'sme-border') => $cmmnt
847     + <td class='sme-border'>
848     + <a href="/server-manager2/portforwardingdel?trt=DEL&sport=<%= $sport%>&proto=<%= $proto%>"><%=l 'REMOVE'%></a></td>
849     + </tr>
850     + % }
851     + % }
852     + %}
853     + %= hidden_field 'trt' => $pf_datas->{trt}
854     + %}
855     + </tbody>
856     + </table>
857     + % end
858     +</div>
859     diff -urN smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/portforwarding.html.ep smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/portforwarding.html.ep
860     --- smeserver-manager-0.1.0.old/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/portforwarding.html.ep 1970-01-01 01:00:00.000000000 +0100
861     +++ smeserver-manager-0.1.0/root/etc/e-smith/web/panels/manager2/cgi-bin/srvmngr/themes/default/templates/portforwarding.html.ep 2020-04-05 14:15:00.000000000 +0100
862     @@ -0,0 +1,32 @@
863     +% layout 'default', title => "Sme server 2 - Port Forwards", share_dir => './';
864     +
865     +% content_for 'module' => begin
866     +<div id="module">
867     +
868     + % if ($config->{debug} == 1) {
869     + <p>
870     + %= dumper "<pf>".$c->current_route
871     + %= dumper $c->stash("ret")
872     + %= dumper $c->stash("portforwarding")
873     + % my $ref = $pf_datas->{portforwarding};
874     + %= dumper $ref->{TCP}->[0]."</pf>"
875     + </p>
876     + % }
877     +
878     + <h1><%= $title%></h1>
879     + %= $modul
880     +
881     + % if ($pf_datas->{trt} eq 'ADD') {
882     + %= include 'partials/_pf_add'
883     + %} elsif ($pf_datas->{trt} eq 'ADD1') {
884     + %= include 'partials/_pf_add'
885     + %} elsif ($pf_datas->{trt} eq 'DEL') {
886     + %= include 'partials/_pf_del'
887     + %} elsif ($pf_datas->{trt} eq 'DEL1'){
888     + %= include 'partials/_pf_list'
889     + %} else {
890     + %= include 'partials/_pf_list'
891     + %}
892     +
893     +</div>
894     +%end

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