1 |
mrness 07/09/30 11:30:48 |
2 |
|
3 |
Added: pgsql_createdb.py dspam.cron-r1 pgsql_purge.py |
4 |
digest-dspam-3.8.0-r7 |
5 |
Log: |
6 |
Major dspam.cron and pkg_config redesign (#193081). Drop sqlite-2 support. Install prefs.h needed by dovecot-dspam. |
7 |
(Portage version: 2.1.3.9) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 mail-filter/dspam/files/pgsql_createdb.py |
11 |
|
12 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/pgsql_createdb.py?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/pgsql_createdb.py?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: pgsql_createdb.py |
16 |
=================================================================== |
17 |
#!/bin/env python |
18 |
|
19 |
import sys, os |
20 |
import psycopg2 |
21 |
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT |
22 |
|
23 |
adminuser = '' |
24 |
adminpass = '' |
25 |
|
26 |
def inputStuff(title, default = None, empty = True): |
27 |
if default is not None: |
28 |
uinput = raw_input("%s [DEFAULT %s]: " %(title, default)) |
29 |
else: |
30 |
uinput = raw_input("%s: " %(title)) |
31 |
if default: |
32 |
if uinput == '': |
33 |
return default |
34 |
if uinput == '' and not empty: |
35 |
print "Error: Zero length input not allowed!" |
36 |
return inputStuff(title, default, empty) |
37 |
return uinput |
38 |
|
39 |
def main(): |
40 |
global adminuser |
41 |
if len(sys.argv) == 7: |
42 |
thiscript, serverhost, serverport, adminuser, dspamuser, dspamdb, createscript = sys.argv |
43 |
elif len(sys.argv) == 8: |
44 |
thiscript, serverhost, serverport, adminuser, dspamuser, dspamdb, createscript, vuserscript = sys.argv |
45 |
else: |
46 |
print "Usage: %s server_host server_port admin_user dspam_user dspam_dbname setup_DB_script [setup_virtual_user_script]" %(sys.argv[0]) |
47 |
sys.exit(1) |
48 |
env = os.environ |
49 |
dspampass = env['DSPAM_PgSQLPass'] |
50 |
con = connectasadmin(serverhost, serverport, 'template1') |
51 |
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # CREATE DATABASE needs this |
52 |
cur = con.cursor() |
53 |
createDbAndUser(cur, dspamuser, dspampass, dspamdb) |
54 |
con.close() |
55 |
con = connectasadmin(serverhost, serverport, dspamdb) |
56 |
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # CREATE LANGUAGE probably needs this |
57 |
cur = con.cursor() |
58 |
createLanguage(cur) |
59 |
con.close() |
60 |
executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, createscript) |
61 |
if len(sys.argv) == 8: |
62 |
executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, vuserscript) |
63 |
|
64 |
def createDbAndUser(cur, dspamuser, dspampass, dspamdb): |
65 |
try: |
66 |
cur.execute("""CREATE USER %s WITH PASSWORD '%s' NOCREATEDB NOCREATEUSER;""" %(dspamuser, dspampass)) |
67 |
cur.execute("""CREATE DATABASE %s;""" %(dspamdb)) |
68 |
cur.execute("""GRANT ALL PRIVILEGES ON DATABASE %s TO %s;""" %(dspamdb, dspamuser)) |
69 |
cur.execute("""GRANT ALL PRIVILEGES ON SCHEMA public TO %s;""" %(dspamuser)) |
70 |
cur.execute("""UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_shadow WHERE usename='%s') WHERE datname='%s';""" %(dspamuser, dspamdb)) |
71 |
except Exception, e: |
72 |
print "ERROR:", e |
73 |
sys.exit(2) |
74 |
|
75 |
def createLanguage(cur): |
76 |
try: |
77 |
cur.execute("CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql', 'plpgsql_call_handler' LANGUAGE c;") |
78 |
cur.execute("CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS '$libdir/plpgsql', 'plpgsql_validator' LANGUAGE c;") |
79 |
cur.execute("CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator;") |
80 |
except Exception, e: |
81 |
print "ERROR:", e |
82 |
sys.exit(2) |
83 |
|
84 |
def executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, script): |
85 |
try: |
86 |
if len(serverport) > 0: |
87 |
con = psycopg2.connect(host=serverhost, port=int(serverport), database=dspamdb, user=dspamuser, password=dspampass) |
88 |
else: |
89 |
con = psycopg2.connect(host=serverhost, database=dspamdb, user=dspamuser, password=dspampass) |
90 |
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # Needed for plpgsql |
91 |
cur = con.cursor() |
92 |
except Exception, e: |
93 |
print "ERROR: ",e |
94 |
sys.exit(3) |
95 |
try: |
96 |
f = open(script, 'r') |
97 |
script = f.read() |
98 |
f.close() |
99 |
except Exception, e: |
100 |
print "ERROR: ",e |
101 |
sys.exit(4) |
102 |
try: |
103 |
cur.execute(script) |
104 |
except Exception, e: |
105 |
print "ERROR: ",e |
106 |
sys.exit(5) |
107 |
con.close() |
108 |
|
109 |
def connectasadmin(serverhost, serverport, db): |
110 |
global adminuser, adminpass |
111 |
notconnected = 1 |
112 |
while(notconnected): |
113 |
try: |
114 |
if len(serverport) > 0: |
115 |
con = psycopg2.connect(host=serverhost, port=int(serverport), database=db, user=adminuser, password=adminpass) |
116 |
else: |
117 |
con = psycopg2.connect(host=serverhost, database=db, user=adminuser, password=adminpass) |
118 |
notconnected = 0 |
119 |
except psycopg2.OperationalError, e: |
120 |
if 'no password' in e[0]: |
121 |
adminpass = inputStuff('Password') |
122 |
else: |
123 |
print e |
124 |
sys.exit(2) |
125 |
except Exception, e: |
126 |
print e |
127 |
sys.exit(2) |
128 |
return con |
129 |
|
130 |
if __name__ == '__main__': |
131 |
main() |
132 |
|
133 |
|
134 |
|
135 |
1.1 mail-filter/dspam/files/dspam.cron-r1 |
136 |
|
137 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/dspam.cron-r1?rev=1.1&view=markup |
138 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/dspam.cron-r1?rev=1.1&content-type=text/plain |
139 |
|
140 |
Index: dspam.cron-r1 |
141 |
=================================================================== |
142 |
#!/bin/sh |
143 |
# Copyright 1999-2007 Gentoo Foundation |
144 |
# Distributed under the terms of the GNU General Public License v2 |
145 |
# |
146 |
# Remove old signatures and unimportant tokens from the DSPAM database. |
147 |
# Purge old log entries in user logs. |
148 |
# |
149 |
|
150 |
# |
151 |
# Parse optional command line parameters |
152 |
# |
153 |
for foo in $@ |
154 |
do |
155 |
case "${foo}" in |
156 |
--logdays=*) LOGROTATE_AGE="${foo#--logdays=}";; |
157 |
--sigdays=*) SIGNATURE_AGE="${foo#--sigdays=}";; |
158 |
--without-sql-purge) USE_SQL_PURGE=false;; |
159 |
*) |
160 |
echo "usage: $0 [--logdays=no_of_days] [--sigdays=no_of_days] [--without-sql-purge]" |
161 |
exit 1 |
162 |
;; |
163 |
esac |
164 |
done |
165 |
|
166 |
# |
167 |
# Parameters |
168 |
# |
169 |
[ -z "${LOGROTATE_AGE}" ] && LOGROTATE_AGE=30 # Delete log entries older than $LOGROTATE_AGE days |
170 |
[ -z "${SIGNATURE_AGE}" ] && SIGNATURE_AGE=30 # Delete signatures older than $SIGNATURE_AGE days |
171 |
[ -z "${USE_SQL_PURGE}" ] && USE_SQL_PURGE=true # Run sql purge scripts |
172 |
|
173 |
# |
174 |
# Function to run dspam_clean |
175 |
# |
176 |
run_dspam_clean() { |
177 |
if [ ! -e "/usr/bin/dspam_clean" ] |
178 |
then |
179 |
echo "Can not run DSPAM clean application:" |
180 |
echo " /usr/bin/dspam_clean does not exist" |
181 |
return 1 |
182 |
else |
183 |
/usr/bin/dspam_clean -s${SIGNATURE_AGE} -p${SIGNATURE_AGE} -u${SIGNATURE_AGE},${SIGNATURE_AGE},${SIGNATURE_AGE},${SIGNATURE_AGE} >/dev/null 2>&1 |
184 |
return $? |
185 |
fi |
186 |
} |
187 |
|
188 |
|
189 |
# |
190 |
# Function to check if we have all needed tools |
191 |
# |
192 |
check_for_tools() { |
193 |
local myrc=0 |
194 |
for foo in awk cut sed getent |
195 |
do |
196 |
if ! which ${foo} >/dev/null 2>&1 |
197 |
then |
198 |
echo "Command ${foo} not found!" |
199 |
myrc=1 |
200 |
fi |
201 |
done |
202 |
return ${myrc} |
203 |
} |
204 |
|
205 |
|
206 |
# |
207 |
# Function to read dspam.conf parameters |
208 |
# |
209 |
read_dspam_params() { |
210 |
local PARAMETER VALUE |
211 |
for PARAMETER in $@ ; do |
212 |
VALUE=$(awk "BEGIN { IGNORECASE=1; } \$1==\"${PARAMETER}\" { print \$2; exit; }" "${DSPAM_CONFIGDIR}/dspam.conf") |
213 |
[[ $? == 0 ]] || return 1 |
214 |
eval ${PARAMETER}=\"${VALUE}\" |
215 |
done |
216 |
return 0 |
217 |
} |
218 |
|
219 |
|
220 |
# |
221 |
# Function to clean DSPAM MySQL data |
222 |
# |
223 |
clean_mysql_drv() { |
224 |
# |
225 |
# MySQL |
226 |
# |
227 |
if ${USE_SQL_PURGE} && \ |
228 |
read_dspam_params MySQLServer MySQLPort MySQLUser MySQLPass MySQLDb MySQLCompress && \ |
229 |
[ -n "${MySQLServer}" -a -n "${MySQLUser}" -a -n "${MySQLDb}" ] |
230 |
then |
231 |
if [ ! -e "/usr/bin/mysql_config" ] |
232 |
then |
233 |
echo "Can not run MySQL purge script:" |
234 |
echo " /usr/bin/mysql_config does not exist" |
235 |
return 1 |
236 |
fi |
237 |
DSPAM_MySQL_PURGE_SQL= |
238 |
DSPAM_MySQL_VER=$(/usr/bin/mysql_config --version | sed "s:[^0-9.]*::g") |
239 |
DSPAM_MySQL_MAJOR=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f1) |
240 |
DSPAM_MySQL_MINOR=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f2) |
241 |
DSPAM_MySQL_MICRO=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f3) |
242 |
DSPAM_MySQL_INT=$(($DSPAM_MySQL_MAJOR * 65536 + $DSPAM_MySQL_MINOR * 256 + $DSPAM_MySQL_MICRO)) |
243 |
|
244 |
# For MySQL >= 4.1 use the new purge script |
245 |
if [ "${DSPAM_MySQL_INT}" -ge "262400" ] |
246 |
then |
247 |
if [ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" -o -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" ] |
248 |
then |
249 |
# See: http://securitydot.net/txt/id/32/type/articles/ |
250 |
[ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" |
251 |
[ -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" |
252 |
else |
253 |
[ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge-4.1.sql" |
254 |
[ -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge-4.1.sql" |
255 |
fi |
256 |
else |
257 |
[ -f "${DSPAM_CONFIGDIR}/config/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge.sql" |
258 |
[ -f "${DSPAM_CONFIGDIR}/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge.sql" |
259 |
fi |
260 |
|
261 |
if [ -z "${DSPAM_MySQL_PURGE_SQL}" ] |
262 |
then |
263 |
echo "Can not run MySQL purge script:" |
264 |
echo " No mysql_purge SQL script found" |
265 |
return 1 |
266 |
fi |
267 |
|
268 |
if [ ! -e "/usr/bin/mysql" ] |
269 |
then |
270 |
echo "Can not run MySQL purge script:" |
271 |
echo " /usr/bin/mysql does not exist" |
272 |
return 1 |
273 |
fi |
274 |
|
275 |
# Construct mysql command line |
276 |
DSPAM_MySQL_CMD="/usr/bin/mysql --silent --user=${MySQLUser}" |
277 |
[ -S "${MySQLServer}" ] && |
278 |
DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --socket=${MySQLServer}" || |
279 |
DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --host=${MySQLServer}" |
280 |
[ -n "${MySQLPort}" ] && |
281 |
DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --port=${MySQLPort}" |
282 |
[ "${MySQLCompress}" == "true" ] && |
283 |
DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --compress" |
284 |
|
285 |
# Run the MySQL purge script |
286 |
MYSQL_PWD="${MySQLPass}" ${DSPAM_MySQL_CMD} ${MySQLDb} < ${DSPAM_MySQL_PURGE_SQL} >/dev/null |
287 |
_RC=$? |
288 |
if [ ${_RC} != 0 ] |
289 |
then |
290 |
echo "MySQL purge script returned error code ${_RC}" |
291 |
fi |
292 |
|
293 |
return 0 |
294 |
fi |
295 |
} |
296 |
|
297 |
|
298 |
# |
299 |
# Function to clean DSPAM PostgreSQL data |
300 |
# |
301 |
clean_pgsql_drv() { |
302 |
# |
303 |
# PostgreSQL |
304 |
# |
305 |
if ${USE_SQL_PURGE} && \ |
306 |
read_dspam_params PgSQLServer PgSQLPort PgSQLUser PgSQLPass PgSQLDb && \ |
307 |
[ -n "${PgSQLServer}" -a -n "${PgSQLUser}" -a -n "${PgSQLDb}" ] |
308 |
then |
309 |
DSPAM_PgSQL_PURGE_SQL="" |
310 |
[ -f "${DSPAM_CONFIGDIR}/config/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/pgsql_purge.sql" |
311 |
[ -f "${DSPAM_CONFIGDIR}/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_CONFIGDIR}/pgsql_purge.sql" |
312 |
|
313 |
if [ -z "${DSPAM_PgSQL_PURGE_SQL}" ] |
314 |
then |
315 |
echo "Can not run PostgreSQL purge script:" |
316 |
echo " No pgsql_purge SQL script found" |
317 |
return 1 |
318 |
fi |
319 |
|
320 |
if [ -e "/usr/bin/psql" ] |
321 |
then |
322 |
# Construct psql command line |
323 |
DSPAM_PgSQL_CMD="/usr/bin/psql -q -U ${PgSQLUser} -h ${PgSQLServer} -d ${PgSQLDb}" |
324 |
[ -n "${PgSQLPort}" ] && |
325 |
DSPAM_PgSQL_CMD="${DSPAM_PgSQL_CMD} -p ${PgSQLPort}" |
326 |
|
327 |
# Run the PostgreSQL purge script |
328 |
PGUSER="${PgSQLUser}" PGPASSWORD="${PgSQLPass}" ${DSPAM_PgSQL_CMD} -f "${DSPAM_PgSQL_PURGE_SQL}" >/dev/null |
329 |
else |
330 |
# Run the pgsql_purge.py script |
331 |
PGUSER="${PgSQLUser}" PGPASSWORD="${PgSQLPass}" "${DSPAM_CONFIGDIR}/pgsql_purge.py" "${PgSQLServer}" "${PgSQLPort}" "${PgSQLDb}" "${DSPAM_PgSQL_PURGE_SQL}" |
332 |
fi |
333 |
|
334 |
_RC=$? |
335 |
if [ ${_RC} != 0 ] |
336 |
then |
337 |
echo "PostgreSQL purge script returned error code ${_RC}" |
338 |
fi |
339 |
|
340 |
return 0 |
341 |
fi |
342 |
} |
343 |
|
344 |
|
345 |
# |
346 |
# Function to clean DSPAM Hash data |
347 |
# |
348 |
clean_hash_drv() { |
349 |
# |
350 |
# Hash |
351 |
# |
352 |
if [ -d "${DSPAM_HOMEDIR}/data" ] |
353 |
then |
354 |
find ${DSPAM_HOMEDIR}/data/ -maxdepth 4 -mindepth 1 -type f -name "*.css" | while read name |
355 |
do |
356 |
/usr/bin/csscompress "${name}" 1>/dev/null 2>&1 |
357 |
/usr/bin/cssclean "${name}" 1>/dev/null 2>&1 |
358 |
# chown dspam:dspam "${name}" |
359 |
done |
360 |
find ${DSPAM_HOMEDIR}/data/ -maxdepth 4 -mindepth 1 -type d -name "*.sig" | while read name |
361 |
do |
362 |
find "${name}" -maxdepth 1 -mindepth 1 -type f -mtime +${SIGNATURE_AGE} -name "*.sig" -exec /bin/rm "{}" ";" |
363 |
done |
364 |
return 0 |
365 |
else |
366 |
return 1 |
367 |
fi |
368 |
} |
369 |
|
370 |
|
371 |
# |
372 |
# Function to clean DSPAM SQLite3 data |
373 |
# |
374 |
clean_sqlite3_drv() { |
375 |
# |
376 |
# SQLite3 |
377 |
# |
378 |
if ${USE_SQL_PURGE} |
379 |
then |
380 |
DSPAM_SQLite3_PURGE_SQL="" |
381 |
[ -f "${DSPAM_CONFIGDIR}/config/sqlite3_purge.sql" ] && DSPAM_SQLite3_PURGE_SQL="${DSPAM_CONFIGDIR}/config/sqlite3_purge.sql" |
382 |
[ -f "${DSPAM_CONFIGDIR}/sqlite3_purge.sql" ] && DSPAM_SQLite3_PURGE_SQL="${DSPAM_CONFIGDIR}/sqlite3_purge.sql" |
383 |
|
384 |
if [ -z "${DSPAM_SQLite3_PURGE_SQL}" ] |
385 |
then |
386 |
echo "Can not run SQLite3 purge script:" |
387 |
echo " No sqlite_purge SQL script found" |
388 |
return 1 |
389 |
fi |
390 |
|
391 |
if [ ! -e "/usr/bin/sqlite3" ] |
392 |
then |
393 |
echo "Can not run SQLite3 purge script:" |
394 |
echo " /usr/bin/sqlite3 does not exist" |
395 |
return 1 |
396 |
fi |
397 |
|
398 |
# Run the SQLite3 purge script |
399 |
find "${DSPAM_HOMEDIR}" -name "*.sdb" -print | while read name |
400 |
do |
401 |
/usr/bin/sqlite3 "$name" < "${DSPAM_SQLite3_PURGE_SQL}" >/dev/null |
402 |
done 1>/dev/null 2>&1 |
403 |
|
404 |
return 0 |
405 |
fi |
406 |
|
407 |
} |
408 |
|
409 |
|
410 |
# |
411 |
# Acquire lock file and start processing |
412 |
# |
413 |
DSPAM_CRON_LOCKFILE="/var/run/$(basename $0 .sh).pid" |
414 |
if ( set -o noclobber; echo "$$" > "${DSPAM_CRON_LOCKFILE}") 2> /dev/null; then |
415 |
|
416 |
trap 'rm -f "${DSPAM_CRON_LOCKFILE}"; exit $?' INT TERM EXIT |
417 |
|
418 |
# |
419 |
# Check for needed tools |
420 |
# |
421 |
if ! check_for_tools |
422 |
then |
423 |
# We have not all needed tools installed. Run just the dspam_clean part. |
424 |
run_dspam_clean |
425 |
exit $? |
426 |
fi |
427 |
|
428 |
# |
429 |
# Try to get DSPAM config directory |
430 |
# |
431 |
DSPAM_CONFIGDIR=$(getent passwd dspam | awk -F : '{print $6}') |
432 |
if [ ! -f "${DSPAM_CONFIGDIR}/dspam.conf" ] |
433 |
then |
434 |
# Something is wrong in passwd! Check if /etc/mail/dspam exists instead. |
435 |
if [ -f /etc/mail/dspam/dspam.conf ] |
436 |
then |
437 |
DSPAM_CONFIGDIR="/etc/mail/dspam" |
438 |
fi |
439 |
fi |
440 |
if [ ! -d "${DSPAM_CONFIGDIR}" ] |
441 |
then |
442 |
echo "Configuration directory not found!" |
443 |
exit 2 |
444 |
fi |
445 |
|
446 |
# |
447 |
# Try to get DSPAM data home directory |
448 |
# |
449 |
if read_dspam_params Home && [ -d "${Home}" ] |
450 |
then |
451 |
DSPAM_HOMEDIR=${Home} |
452 |
else |
453 |
# Something is wrong in dspam.conf! Check if /var/spool/dspam exists instead. |
454 |
if [ -d /var/spool/dspam ] |
455 |
then |
456 |
DSPAM_HOMEDIR="/var/spool/dspam" |
457 |
fi |
458 |
fi |
459 |
if [ ! -d "${DSPAM_HOMEDIR}" ] |
460 |
then |
461 |
echo "Home directory not found! Please fix your dspam.conf." |
462 |
exit 2 |
463 |
fi |
464 |
|
465 |
# |
466 |
# User log purging |
467 |
# |
468 |
if [ -d "${DSPAM_CONFIGDIR}/data" ] |
469 |
then |
470 |
dspam_logrotate -a ${LOGROTATE_AGE} -d "${DSPAM_CONFIGDIR}/data" >/dev/null # 2>&1 |
471 |
fi |
472 |
|
473 |
if [ ! -e "/usr/bin/dspam" ] |
474 |
then |
475 |
echo "Can not run DSPAM application:" |
476 |
echo " /usr/bin/dspam does not exist" |
477 |
return 1 |
478 |
fi |
479 |
|
480 |
# |
481 |
# Process all available storage drivers |
482 |
# |
483 |
for foo in $(/usr/bin/dspam --version 2>&1 | sed -n "s:,: :g;s:^.*\-\-with\-storage\-driver=\([^\'\]*\).*:\1:gIp") |
484 |
do |
485 |
case "${foo}" in |
486 |
hash_drv) |
487 |
clean_hash_drv |
488 |
;; |
489 |
mysql_drv) |
490 |
clean_mysql_drv |
491 |
;; |
492 |
pgsql_drv) |
493 |
clean_pgsql_drv |
494 |
;; |
495 |
sqlite3_drv) |
496 |
clean_sqlite3_drv |
497 |
;; |
498 |
*) |
499 |
echo "Unknown storage ${foo} driver" |
500 |
;; |
501 |
esac |
502 |
done |
503 |
|
504 |
# |
505 |
# Run the dspam_clean command |
506 |
# |
507 |
run_dspam_clean |
508 |
|
509 |
|
510 |
# |
511 |
# Release lock |
512 |
# |
513 |
/bin/rm -f "${DSPAM_CRON_LOCKFILE}" |
514 |
trap - INT TERM EXIT |
515 |
fi |
516 |
|
517 |
|
518 |
|
519 |
1.1 mail-filter/dspam/files/pgsql_purge.py |
520 |
|
521 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/pgsql_purge.py?rev=1.1&view=markup |
522 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/pgsql_purge.py?rev=1.1&content-type=text/plain |
523 |
|
524 |
Index: pgsql_purge.py |
525 |
=================================================================== |
526 |
#!/bin/env python |
527 |
|
528 |
import sys, os |
529 |
import psycopg2 |
530 |
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT |
531 |
|
532 |
def main(): |
533 |
if len(sys.argv) == 5: |
534 |
thiscript, serverhost, serverport, dspamdb, purgescript = sys.argv |
535 |
else: |
536 |
print "Usage: %s server_host server_port dspam_dbname purge_script" %(sys.argv[0]) |
537 |
sys.exit(1) |
538 |
try: |
539 |
env = os.environ |
540 |
dspamuser = env['PGUSER'] |
541 |
dspampass = env['PGPASSWORD'] |
542 |
if len(serverport) > 0: |
543 |
con = psycopg2.connect(host=serverhost, port=int(serverport), database=dspamdb, user=dspamuser, password=dspampass) |
544 |
else: |
545 |
con = psycopg2.connect(host=serverhost, database=dspamdb, user=dspamuser, password=dspampass) |
546 |
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # Needed for plpgsql |
547 |
cur = con.cursor() |
548 |
except Exception, e: |
549 |
print "ERROR: ",e |
550 |
sys.exit(2) |
551 |
try: |
552 |
f = open(purgescript, 'r') |
553 |
script = f.read() |
554 |
f.close() |
555 |
except Exception, e: |
556 |
print "ERROR: ",e |
557 |
sys.exit(3) |
558 |
try: |
559 |
cur.execute(script) |
560 |
except Exception, e: |
561 |
print "ERROR: ",e |
562 |
sys.exit(4) |
563 |
con.close() |
564 |
|
565 |
if __name__ == '__main__': |
566 |
main() |
567 |
|
568 |
|
569 |
|
570 |
1.1 mail-filter/dspam/files/digest-dspam-3.8.0-r7 |
571 |
|
572 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/digest-dspam-3.8.0-r7?rev=1.1&view=markup |
573 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/mail-filter/dspam/files/digest-dspam-3.8.0-r7?rev=1.1&content-type=text/plain |
574 |
|
575 |
Index: digest-dspam-3.8.0-r7 |
576 |
=================================================================== |
577 |
MD5 1b44857a1cafe810fb321d5d6d326fe9 dspam-3.8.0-patches-20070930.tar.gz 8356 |
578 |
RMD160 3ea07fac355ecfbbd0569cdcb08b57ce252365e0 dspam-3.8.0-patches-20070930.tar.gz 8356 |
579 |
SHA256 ee22f7625445d37111aa4d8fa2f7c3cb159b96a86df29a97a01c9086c4e84e0d dspam-3.8.0-patches-20070930.tar.gz 8356 |
580 |
MD5 056b8c8b3ad9415a52c01b22ff1e64cf dspam-3.8.0.tar.gz 726160 |
581 |
RMD160 e7831e2415e30e819dd9cbc0ba3f269e113e2fb9 dspam-3.8.0.tar.gz 726160 |
582 |
SHA256 84a227934a7aee73516bdb82c33ee7b359e955c8cd95a1544a9a13069f79bfc7 dspam-3.8.0.tar.gz 726160 |
583 |
MD5 8ffe9d41e6104a4c6d19067528193145 dspam_sa_trainer.tar.gz 1230 |
584 |
RMD160 c3d0fca7169d23ecf9d44c850ee255b42d97d818 dspam_sa_trainer.tar.gz 1230 |
585 |
SHA256 8fb6b1ebe592acf00a028737ef8e174544af166768b987d29048b2319bc5a215 dspam_sa_trainer.tar.gz 1230 |
586 |
|
587 |
|
588 |
|
589 |
-- |
590 |
gentoo-commits@g.o mailing list |