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

Annotation 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 - (hide annotations) (download)
Wed May 1 20:43:26 2019 UTC (5 years, 2 months 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 michel 1.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 michel 1.2 our $VERSION = sprintf '%d.%03d', q$Revision: 1.1 $ =~ /: (\d+).(\d+)/;
59 michel 1.1 @@ -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