]>
git.proxmox.com Git - pmg-api.git/blob - PMG/API2/Quarantine.pm
1 package PMG
:: API2
:: Quarantine
;
10 use PVE
:: Exception
qw(raise_param_exc) ;
11 use PVE
:: Tools
qw(extract_param) ;
12 use PVE
:: JSONSchema
qw(get_standard_option) ;
16 use PMG
:: AccessControl
;
19 use base
qw(PVE::RESTHandler) ;
22 __PACKAGE__-
> register_method ({
26 permissions
=> { user
=> 'all' },
27 description
=> "Directory index." ,
29 additionalProperties
=> 0 ,
38 links
=> [ { rel
=> 'child' , href
=> "{name}" } ],
44 { name
=> 'deliver' },
52 __PACKAGE__-
> register_method ({
56 permissions
=> { check
=> [ 'admin' , 'qmanager' , 'audit' , 'quser' ] },
57 description
=> "Show spam mails distribution (per day)." ,
59 additionalProperties
=> 0 ,
62 description
=> "Only consider entries newer than 'startime' (unix epoch)." ,
68 description
=> "Only consider entries older than 'endtime' (unix epoch)." ,
74 description
=> "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles." ,
75 type
=> 'string' , format
=> 'email' ,
86 description
=> "Day (as unix epoch)." ,
90 description
=> "Number of quarantine entries." ,
94 description
=> "Average spam level." ,
99 links
=> [ { rel
=> 'child' , href
=> "{day}" } ],
104 my $rpcenv = PMG
:: RESTEnvironment-
> get ();
105 my $authuser = $rpcenv -> get_user ();
106 my $role = $rpcenv -> get_role ();
108 my $pmail = $param ->{ pmail
};
110 if ( $role eq 'quser' ) {
111 raise_param_exc
({ pmail
=> "paramater not allwed with role ' $role '" })
115 raise_param_exc
({ pmail
=> "paramater required with role ' $role '" })
121 my $dbh = PMG
:: DBTools
:: open_ruledb
();
123 my $start = $param ->{ starttime
};
124 my $end = $param ->{ endtime
};
126 my $timezone = tz_local_offset
();
128 my $sth = $dbh -> prepare (
130 "((time + $timezone ) / 86400) * 86400 - $timezone as day, " .
131 "count (ID) as count, avg (Spamlevel) as spamavg " .
132 "FROM CMailStore, CMSReceivers WHERE " .
133 ( defined ( $start ) ?
"time >= $start AND " : '' ) .
134 ( defined ( $end ) ?
"time < $end AND " : '' ) .
136 "QType = 'S' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
137 "AND Status = 'N' " .
139 "ORDER BY day DESC" );
141 $sth -> execute ( $pmail );
143 while ( my $ref = $sth -> fetchrow_hashref ()) {
150 __PACKAGE__-
> register_method ({
152 path
=> 'spam/{starttime}' ,
154 permissions
=> { check
=> [ 'admin' , 'qmanager' , 'audit' , 'quser' ] },
155 description
=> "Show spam mails distribution (per day)." ,
157 additionalProperties
=> 0 ,
160 description
=> "Only consider entries newer than 'starttime' (unix epoch)." ,
165 description
=> "Only consider entries older than 'endtime' (unix epoch). This is set to '<start> + 1day' by default." ,
171 description
=> "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles." ,
172 type
=> 'string' , format
=> 'email' ,
187 my $rpcenv = PMG
:: RESTEnvironment-
> get ();
188 my $authuser = $rpcenv -> get_user ();
189 my $role = $rpcenv -> get_role ();
191 my $pmail = $param ->{ pmail
};
193 if ( $role eq 'quser' ) {
194 raise_param_exc
({ pmail
=> "paramater not allwed with role ' $role '" })
198 raise_param_exc
({ pmail
=> "paramater required with role ' $role '" })
204 my $dbh = PMG
:: DBTools
:: open_ruledb
();
206 my $start = $param ->{ starttime
};
207 my $end = $param ->{ endtime
} // ( $start + 86400 );
209 my $sth = $dbh -> prepare (
211 "FROM CMailStore, CMSReceivers WHERE " .
212 "pmail = ? AND time >= $start AND time < $end AND " .
213 "QType = 'S' AND CID = CMailStore_CID AND RID = CMailStore_RID " .
214 "AND Status = 'N' ORDER BY pmail, time, receiver" );
216 $sth -> execute ( $pmail );
218 while ( my $ref = $sth -> fetchrow_hashref ()) {