1 |
diff -urN smeserver-xt_geoip-1.0.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/xt_geoip smeserver-xt_geoip-1.0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/xt_geoip |
2 |
--- smeserver-xt_geoip-1.0.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/xt_geoip 2019-04-29 20:23:21.000000000 +0400 |
3 |
+++ smeserver-xt_geoip-1.0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/xt_geoip 2019-04-29 19:35:33.000000000 +0400 |
4 |
@@ -96,12 +96,12 @@ |
5 |
|
6 |
<entry> |
7 |
<base>IPT_LIST</base> |
8 |
- <trans>Geoip ban</trans> |
9 |
+ <trans>Stats of XT-geoip prevented connections</trans> |
10 |
</entry> |
11 |
|
12 |
<entry> |
13 |
<base>SSH_LIST</base> |
14 |
- <trans>Ssh errors</trans> |
15 |
+ <trans>Stats of SSH errors not blocked by XT-geoip</trans> |
16 |
</entry> |
17 |
|
18 |
<entry> |
19 |
diff -urN smeserver-xt_geoip-1.0.1.old/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/xt_geoip smeserver-xt_geoip-1.0.1/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/xt_geoip |
20 |
--- smeserver-xt_geoip-1.0.1.old/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/xt_geoip 2019-04-29 20:23:21.000000000 +0400 |
21 |
+++ smeserver-xt_geoip-1.0.1/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/xt_geoip 2019-04-29 19:33:56.000000000 +0400 |
22 |
@@ -93,14 +93,15 @@ |
23 |
|
24 |
<entry> |
25 |
<base>IPT_LIST</base> |
26 |
- <trans>Geoip stop</trans> |
27 |
+ <trans>Stats des connexions évitées à l'aide de XT-geoip</trans> |
28 |
</entry> |
29 |
|
30 |
<entry> |
31 |
<base>SSH_LIST</base> |
32 |
- <trans>Ssh erreurs</trans> |
33 |
+ <trans>Stats des erreurs SSH non bloquées par XT-geoip</trans> |
34 |
</entry> |
35 |
|
36 |
+ |
37 |
<entry> |
38 |
<base>STATS_GENERATED</base> |
39 |
<trans>Statistiques générées</trans> |
40 |
diff -urN smeserver-xt_geoip-1.0.1.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/xt_geoip.pm smeserver-xt_geoip-1.0.1/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/xt_geoip.pm |
41 |
--- smeserver-xt_geoip-1.0.1.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/xt_geoip.pm 2019-04-29 20:23:21.000000000 +0400 |
42 |
+++ smeserver-xt_geoip-1.0.1/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/xt_geoip.pm 2019-04-25 20:33:34.000000000 +0400 |
43 |
@@ -26,6 +26,15 @@ |
44 |
get_date_update |
45 |
change_settings |
46 |
must_exist |
47 |
+ print_service_table |
48 |
+ get_stat_geoip |
49 |
+ print_custom_button |
50 |
+ generateStats |
51 |
+ get_srv_name |
52 |
+ get_srv_badcountries |
53 |
+ remove_serv |
54 |
+ modify_serv |
55 |
+ srv_must_exist |
56 |
); |
57 |
|
58 |
our $VERSION = sprintf '%d.%03d', q$Revision: 1.1 $ =~ /: (\d+).(\d+)/; |
59 |
@@ -215,7 +224,7 @@ |
60 |
my @mq_bcs = split /[,:]/, $q->param("masq_badcountries"); |
61 |
if (@mq_bcs) { |
62 |
my $ctr = @mq_bcs; |
63 |
- return $self->localise('ERR_COUNTRY_MAX: {$ctr}', {ctr=> "$ctr"}) if ($ctr > 50); |
64 |
+ return $self->localise('ERROR_COUNTRY_MAX: {$ctr}', {ctr=> "$ctr"}) if ($ctr > 50); |
65 |
|
66 |
foreach my $bcs (@mq_bcs) { |
67 |
my $file = "/usr/share/xt_geoip/LE/" . $bcs . ".iv4"; |
68 |
@@ -249,7 +258,7 @@ |
69 |
$stats_type =~ /(.+)/; $stats_type = $1; |
70 |
if ($stats_type ne "ipt" && $stats_type ne "ssh") |
71 |
{ |
72 |
- print $q->p($q->b($self->localise('INVALID_STATS_TYPE'). |
73 |
+ print $q->p($q->b($self->localise('INVALID_STATS_TYPE')." ". |
74 |
$stats_type)); |
75 |
return ''; |
76 |
} else { |
77 |
@@ -271,8 +280,174 @@ |
78 |
print "</pre>\n"; |
79 |
|
80 |
print $q->h3($self->localise('END_OF_STATS')); |
81 |
+ $self->wherenext('First'); |
82 |
return ''; |
83 |
} |
84 |
} |
85 |
|
86 |
+sub get_srv_name |
87 |
+{ |
88 |
+ my ($self) = @_; |
89 |
+ return $self->cgi->param('name'); |
90 |
+} |
91 |
+ |
92 |
+sub get_srv_badcountries |
93 |
+{ |
94 |
+ my ($self) = @_; |
95 |
+ my $name = $self->cgi->param('name'); |
96 |
+ return $db->get_prop($name, "BadCountries"); |
97 |
+} |
98 |
+ |
99 |
+sub print_service_table { |
100 |
+ my $self = shift; |
101 |
+ my $q = $self->{cgi}; |
102 |
+ my $servname = $self->localise('NAME'); |
103 |
+ my $port = $self->localise('PORT'); |
104 |
+ my $status = $self->localise('STATUS'); |
105 |
+ my $access = $self->localise('ACCESS'); |
106 |
+ my $servBC = $self->localise('BADCOUNTRIES'); |
107 |
+ my $modify = $self->localise('MODIFY'); |
108 |
+ my $remove = $self->localise('REMOVE'); |
109 |
+ my $action_h = $self->localise('ACTION'); |
110 |
+ |
111 |
+ my @services = split(/,/, $db->get_prop("masq", "XtServices")); |
112 |
+ #my @services = ('imaps','pop3s','sshd','ftp','ssmtpd'); |
113 |
+ |
114 |
+ unless ( scalar @services ) |
115 |
+ { |
116 |
+ print $q->Tr($q->td($self->localise('NO_SERVICES'))); |
117 |
+ return ""; |
118 |
+ } |
119 |
+ |
120 |
+ print $q->start_table({-CLASS => "sme-border"}),"\n"; |
121 |
+ print $q->Tr ( |
122 |
+ esmith::cgi::genSmallCell($q, $servname,"header"), |
123 |
+ esmith::cgi::genSmallCell($q, $port,"header"), |
124 |
+ esmith::cgi::genSmallCell($q, $status,"header"), |
125 |
+ esmith::cgi::genSmallCell($q, $access,"header"), |
126 |
+ esmith::cgi::genSmallCell($q, $servBC,"header"), |
127 |
+ esmith::cgi::genSmallCell($q, $action_h,"header", 2)),"\n"; |
128 |
+ |
129 |
+ my $scriptname = basename($0); |
130 |
+ |
131 |
+ foreach my $servname (@services) |
132 |
+ { |
133 |
+ my $i = $db->get($servname); |
134 |
+ |
135 |
+ my $port = $i->prop('TCPPort'); |
136 |
+ my $status = $i->prop('status'); |
137 |
+ my $access = $i->prop('access'); |
138 |
+ my $servBC = $i->prop('BadCountries') || ' '; |
139 |
+ |
140 |
+ my $params = $self->build_serv_cgi_params($servname, $i->props()); |
141 |
+ |
142 |
+ my $href = "$scriptname?$params&action=modify&wherenext="; |
143 |
+ |
144 |
+ my $actionModify = ' '; |
145 |
+ $actionModify .= $q->a({href => "${href}SrvModify"},$modify) |
146 |
+ . ' '; |
147 |
+ |
148 |
+ my $actionRemove = ' '; |
149 |
+ $actionRemove .= $q->a({href => "${href}SrvRemove"}, $remove) |
150 |
+ . ' '; |
151 |
+ |
152 |
+ my $color = 'red'; |
153 |
+ if ($status eq 'disabled' || $access ne 'public') { $color = 'green'; } |
154 |
+ print $q->Tr ( |
155 |
+ esmith::cgi::genSmallCell($q, $servname,"normal"), |
156 |
+ esmith::cgi::genSmallCell($q, $port,"normal"), |
157 |
+ esmith::cgi::genSmallCell($q, $status,"header"), |
158 |
+ esmith::cgi::genSmallCell($q, $access,"header"), |
159 |
+ esmith::cgi::genSmallCell($q, "<font color='$color'>" . $servBC . "</font>","header"), |
160 |
+ esmith::cgi::genSmallCell($q, $actionModify,"normal"), |
161 |
+ esmith::cgi::genSmallCell($q, $actionRemove,"normal")); |
162 |
+ } |
163 |
+ |
164 |
+ print $q->end_table,"\n"; |
165 |
+ |
166 |
+ return ""; |
167 |
+} |
168 |
+ |
169 |
+sub build_serv_cgi_params { |
170 |
+ my ($self, $servname, %oldprops) = @_; |
171 |
+ |
172 |
+ my %props = ( |
173 |
+ page => 0, |
174 |
+ page_stack => "", |
175 |
+ name => $servname, |
176 |
+ ); |
177 |
+ |
178 |
+ return $self->props_to_query_string(\%props); |
179 |
+} |
180 |
+ |
181 |
+sub remove_serv { |
182 |
+ my ($self) = @_; |
183 |
+ my $name = $self->cgi->param('name'); |
184 |
+ if (my $serv = $db->get($name)) { |
185 |
+ my $servBC = $serv->prop('BadCountries') || ''; |
186 |
+ if ($servBC ne '') { |
187 |
+ $db->set_prop($name, "BadCountries", ''); |
188 |
+ # Untaint $name before use in system() |
189 |
+ # $name =~ /(.+)/; $name = $1; |
190 |
+ if (system ("/sbin/e-smith/signal-event", "xt_geoip-service") == 0) |
191 |
+ { |
192 |
+ return $self->success("SUCCESSFULLY_DELETED_SERVICE"); |
193 |
+ } else { |
194 |
+ return $self->error("ERROR_WHILE_DELETING_SERVICE"); |
195 |
+ } |
196 |
+ } else { |
197 |
+ return $self->success('NO_CHANGE'); |
198 |
+ } |
199 |
+ |
200 |
+ } else { |
201 |
+ $self->error('CANT_FIND_SERV'); |
202 |
+ } |
203 |
+ $self->wherenext('First'); |
204 |
+} |
205 |
+ |
206 |
+sub modify_serv { |
207 |
+ my ($self) = @_; |
208 |
+ my $name = $self->cgi->param('name'); |
209 |
+ if (my $serv = $db->get($name)) { |
210 |
+ my $servBC = $serv->prop('BadCountries') || ''; |
211 |
+ |
212 |
+ my $q = $self->{'cgi'}; |
213 |
+ my $n_servBC = $q->param("masq_srv_badcountries") || $servBC; |
214 |
+ |
215 |
+ if ($n_servBC eq $servBC) { |
216 |
+ return $self->success("NO_CHANGE") |
217 |
+ } |
218 |
+ $db->set_prop($name, "BadCountries", $n_servBC); |
219 |
+ |
220 |
+ if (system ( "/sbin/e-smith/signal-event", "xt_geoip-service" ) == 0 ) |
221 |
+ { |
222 |
+ return $self->success("SUCCESS"); |
223 |
+ } else { |
224 |
+ return $self->error("ERROR_UPDATING"); |
225 |
+ } |
226 |
+ } else { |
227 |
+ $self->error('CANT_FIND_SERV'); |
228 |
+ } |
229 |
+ $self->wherenext('First'); |
230 |
+} |
231 |
+ |
232 |
+sub srv_must_exist |
233 |
+{ |
234 |
+ my $self = shift; |
235 |
+ my $q = $self->{cgi}; |
236 |
+ my $listerr = ""; |
237 |
+ my @mq_bcs = split /[,:]/, $q->param("masq_srv_badcountries"); |
238 |
+ if (@mq_bcs) { |
239 |
+ my $ctr = @mq_bcs; |
240 |
+ return $self->localise('ERROR_COUNTRY_MAX: {$ctr}', {ctr=> "$ctr"}) if ($ctr > 50); |
241 |
+ |
242 |
+ foreach my $bcs (@mq_bcs) { |
243 |
+ my $file = "/usr/share/xt_geoip/LE/" . $bcs . ".iv4"; |
244 |
+ if (! -f $file) { $listerr .= $bcs . ","; } |
245 |
+ } |
246 |
+ return $self->localise('ERR_COUNTRY_NOT_EXIST: {$listerr}', {listerr=> "$listerr"}) if $listerr; |
247 |
+ } |
248 |
+ return 'OK'; |
249 |
+} |
250 |
+ |
251 |
1; |