/[smecontribs]/rpms/smeserver-xt_geoip/contribs9/smeserver-xt_geoip-1.0.1-per_service2.patch
ViewVC logotype

Contents of /rpms/smeserver-xt_geoip/contribs9/smeserver-xt_geoip-1.0.1-per_service2.patch

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


Revision 1.2 - (show annotations) (download)
Wed May 1 20:43:26 2019 UTC (5 years, 1 month ago) by michel
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -1 lines
FILE REMOVED
* Wed Apr 24 2019 Michel Begue <mab974@gmail.com> 1.0.1-12.sme
- add per service management of GeoIP bans [SME: 10760]

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 = '&nbsp;';
145 + $actionModify .= $q->a({href => "${href}SrvModify"},$modify)
146 + . '&nbsp;';
147 +
148 + my $actionRemove = '&nbsp;';
149 + $actionRemove .= $q->a({href => "${href}SrvRemove"}, $remove)
150 + . '&nbsp';
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;

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