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

Contents 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.2 - (show annotations) (download)
Sat Nov 21 08:43:48 2020 UTC (3 years, 6 months ago) by michel
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
* Fri Nov 20 2020 Michel Begue <mab974@gmail.com> 0.1.2-2.sme
- Fix smanager-update event name
- Move smanager service to /usr/lib/systemd
- Fix Bugreport file download
- Fix translations missing in 'viewlogfiles'
- Remove Admin auth in httpd configuration
- Add an optional alias for admin sign in.
- Remove systemctl from .spec file

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