You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(33) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(2) |
Feb
(21) |
Mar
(34) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(11) |
Jun
(12) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
|
Nov
(4) |
Dec
(11) |
| 2009 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
(1) |
| 2011 |
Jan
(18) |
Feb
|
Mar
|
Apr
(2) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jgs...@us...> - 2003-12-09 06:50:16
|
Update of /cvsroot/serverfilters
In directory sc8-pr-cvs1:/tmp/cvs-serv28582
Modified Files:
ChangeLog README backend.php config.php functions.php
options.php recipie_functions.php
Log Message:
Removed FTP requirement. New backend uses "sudo" do properly move and set permissions on files with scripts in the script directory.
Index: README
===================================================================
RCS file: /cvsroot/serverfilters/README,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** README 8 Dec 2003 18:53:06 -0000 1.2
--- README 9 Dec 2003 06:50:12 -0000 1.3
***************
*** 11,21 ****
ServerSideFilters supports standard shell users and Virtual Domains.
- ServerSideFilter can be configured to store the filter file in a local
- directory or to use FTP to put the file in the users home directory.
- See the configure.php file to select this option.
- FTP support in PHP is required to use this FTP version.
-
- FTP method must be used for maildrop due to file permission requirements.
-
For qmail users, this script can also be configured to create the proper
dot-qmail files for delivery.
--- 11,14 ----
***************
*** 39,71 ****
4) reconfigure SquirrelMail to enable the ServerSideFilter plugin.
-
- apache.conf
- The following text is taken straight from the vadmin plugin. If you already have
- vadmin setup and working, you do not need to mess with this at all. Vadmin
- is not a requirement, I am simply giving due credit.
-
- Edit apache.conf and change two things -- the path to your
- squirrelmail directory if it's not /usr/share/squirrelmail (in which
- case some people at FHS might want to have a word or two with you),
- and change "LLAMA" to some unique string. This is the encryption
- hash that will be used to encrypt your vadmin data, including
- domain passwords. Make it something good. If you don't change it
- from "LLAMA," you will suffer the consequences when someone logs in
- and runs porn warez from your server.
-
- Once you have edited the file, you have two options. If you have
- /etc/httpd/conf.d directory (which is true for at least Red Hat
- Linux 8 and above), then just move that file into that dir. I.e.:
- mv apache.conf /etc/httpd/conf.d/vadmin-apache.conf.
-
- If you don't have /etc/httpd/conf.d directory, then move the file
- into /etc/httpd/conf and add the following line into your global
- apache.conf:
- Include vadmin-apache.conf
-
- !!!IMPORTANT!!!
- Wherever you have moved the file, run the following commands on it:
- chown root:root vadmin-apache.conf
- chmod 0600 vadmin-apache.conf
--- 32,35 ----
Index: backend.php
===================================================================
RCS file: /cvsroot/serverfilters/backend.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** backend.php 8 Dec 2003 18:28:03 -0000 1.2
--- backend.php 9 Dec 2003 06:50:12 -0000 1.3
***************
*** 12,29 ****
*/
- /*
- * Local Backend
- * Functions here work with a local file
- */
function local_filter_get() {
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! if (isset($VIRTUAL_DOMAINS) && ($VIRTUAL_DOMAINS==1)) {
! list($user, $domain) = split($SEPERATOR,$username);
! } else {
! $user = $username;
! $domain = '';
! }
! $path = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
if (!file_exists($path)) {
mkdirs($path,0700);
--- 12,20 ----
*/
function local_filter_get() {
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! $path = vd_replace($FILTERDIR);
!
if (!file_exists($path)) {
mkdirs($path,0700);
***************
*** 32,38 ****
$file = "$path/$FILTERFILE";
$localfile = "/tmp/$FILTERFILE.$username";
! if (file_exists($file))
! copy($file, $localfile);
! else
touch($localfile);
--- 23,30 ----
$file = "$path/$FILTERFILE";
$localfile = "/tmp/$FILTERFILE.$username";
! if (local_file_exists($file)) {
! $command = escapeshellcmd("sudo ./script/getrc $file $localfile");
! system($command);
! } else
touch($localfile);
***************
*** 43,55 ****
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! if (isset($VIRTUAL_DOMAINS) && ($VIRTUAL_DOMAINS==1)) {
! list($user, $domain) = split($SEPERATOR,$username);
! } else {
! $user = $username;
! $domain = '';
! }
! $path = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
$file = "$path/$FILTERFILE";
! return file_exists($file);
}
--- 35,52 ----
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! $path = vd_replace($FILTERDIR);
!
$file = "$path/$FILTERFILE";
! return local_file_exists($file);
!
! }
!
! function local_file_exists($file) {
! $command = escapeshellcmd("sudo ./script/rcexists $file");
! system($command, $exists);
! if ($exists == 0)
! return true;
! else
! return false;
}
***************
*** 59,69 ****
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! if (isset($VIRTUAL_DOMAINS) && ($VIRTUAL_DOMAINS==1)) {
! list($user, $domain) = split($SEPERATOR,$username);
! } else {
! $user = $username;
! $domain = '';
! }
! $path = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
if (!file_exists($path)) {
mkdirs($path,0700);
--- 56,61 ----
global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
! $path = vd_replace($FILTERDIR);
!
if (!file_exists($path)) {
mkdirs($path,0700);
***************
*** 71,189 ****
$newfile = "$path/$FILTERFILE";
- copy($file, $newfile);
- }
- // the local method has no way to check passwords. this function should really never be called.
- function local_check_pass() {
- return false;
- }
- /*
- * FTP backend
- * These functions implement moving the filter files and qmail files via FTP
- */
- function ftp_filter_get() {
- global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
if ($VIRTUAL_DOMAINS)
- list($user,$domain) = split($SEPERATOR,$username);
- else {
- $user = $username;
- $domain = '';
- }
- $path = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
- $filtername = "$path/$FILTERFILE";
- $localfile = "/tmp/$FILTERFILE.$username";
- _ftp_get($localfile, $filtername);
- return $localfile;
- }
-
- function ftp_filter_exists() {
- $file = ftp_filter_get();
- if (filesize($file) > 0) $ret = true;
- else $ret = false;
- unlink($file);
- return $ret;
- }
-
- function ftp_filter_put($file) {
- global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
- if ($VIRTUAL_DOMAINS)
- list($user,$domain) = split($SEPERATOR,$username);
- else {
- $user = $username;
- $domain = '';
- }
- $path = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
- $filtername = "$path/$FILTERFILE";
- _ftp_put($file,$filtername);
- }
-
- function ftp_write_dot_qmail($file) {
- global $username, $VIRTUAL_DOMAINS, $SEPERATOR;
- if ($VIRTUAL_DOMAINS) {
- list($user,$domain) = split($SEPERATOR,$username);
- $dot_qmail = ".qmail-$user";
- } else {
- $dot_qmail = '.qmail';
- }
- _ftp_put($file,$dot_qmail);
- }
-
- function ftp_check_pass ($user, $pass) {
- global $imapServerAddress;
-
- $conn = @ftp_connect($imapServerAddress);
- $ret = @ftp_login($conn, $user, $pass);
- @ftp_quit($conn);
- return $ret;
- }
- // Raw ftp functions
- function _ftp_get($localfile, $remotefile) {
- global $username, $key, $onetimepad, $imapServerAddress, $VIRTUAL_DOMAINS, $SEPERATOR;
-
- if ($VIRTUAL_DOMAINS) {
- list($vuser,$vdomain) = split($SEPERATOR,$username);
- $password = my_get_domain_passwd($vdomain);
$user = my_virtual_domain_user($vdomain);
! } else {
! compatibility_sqextractGlobalVar('onetimepad');
! if (!compatibility_check_php_version(4, 1)) {
! global $HTTP_COOKIE_VARS;
! $_COOKIE = $HTTP_COOKIE_VARS;
! }
! $key = $_COOKIE['key'];
! $password = OneTimePadDecrypt($key, $onetimepad);
$user = $username;
- }
! $conn = @ftp_connect($imapServerAddress);
! @ftp_login($conn, $user, $password);
! @ftp_get($conn, $localfile, $remotefile, FTP_BINARY) or touch($localfile);
! @ftp_quit($conn);
}
- function _ftp_put($localfile, $remotefile) {
- global $username, $key, $onetimepad, $imapServerAddress, $VIRTUAL_DOMAINS, $SEPERATOR;
-
- if ($VIRTUAL_DOMAINS) {
- list($vuser,$vdomain) = split($SEPERATOR,$username);
- $password = my_get_domain_passwd($vdomain);
- $user = my_virtual_domain_user($vdomain);
- } else {
- compatibility_sqextractGlobalVar('onetimepad');
- if (!compatibility_check_php_version(4, 1)) {
- global $HTTP_COOKIE_VARS;
- $_COOKIE = $HTTP_COOKIE_VARS;
- }
- $key = $_COOKIE['key'];
- $password = OneTimePadDecrypt($key, $onetimepad);
- $user = $username;
- }
- $conn = @ftp_connect($imapServerAddress);
- @ftp_login($conn, $user, $password);
- @ftp_put($conn, $remotefile, $localfile, FTP_BINARY);
- @ftp_site($conn,"CHMOD 0600 $remotefile");
-
- @ftp_quit($conn);
- }
/**
--- 63,76 ----
$newfile = "$path/$FILTERFILE";
if ($VIRTUAL_DOMAINS)
$user = my_virtual_domain_user($vdomain);
! else
$user = $username;
! $command = escapeshellcmd("sudo ./script/putrc $user $file $localfile");
! system($command);
}
/**
***************
*** 242,256 ****
function vd_replace($setting) {
! global $VIRTUAL_DOMAINS, $SEPERATOR;
if (isset($VIRTUAL_DOMAINS) && ($VIRTUAL_DOMAINS==1)) {
list($user, $domain) = split($SEPERATOR,$username);
} else {
$user = $username;
$domain = '';
}
-
return preg_replace(
! array('/\[DOMAIN\]/','/\[USERNAME\]/'),
! array($domain,$user),
$setting
);
--- 129,144 ----
function vd_replace($setting) {
! global $username, $VIRTUAL_DOMAINS, $SEPERATOR;
if (isset($VIRTUAL_DOMAINS) && ($VIRTUAL_DOMAINS==1)) {
list($user, $domain) = split($SEPERATOR,$username);
+ $domuser = my_virtual_domain_user($domain);
} else {
$user = $username;
$domain = '';
+ $domuser = '';
}
return preg_replace(
! array('/\[DOMAIN\]/','/\[USERNAME\]/','/\[DOMUSER\]/'),
! array($domain,$user,$domuser),
$setting
);
***************
*** 311,340 ****
}
- /*
- * Virtual Domain Backend
- * Some of this code is loosely based off of code from Konstantin Riabitsev's vadmin plugin
- */
- function qmail_list_virtual_domains(){
- $control = '/var/qmail/control';
- $vfile = "$control/virtualdomains";
- if (!file_exists($vfile) || !is_readable($vfile)){
- return false;
- }
- $fd = fopen($vfile, 'r');
- $contents = fread($fd, filesize($vfile));
- $contents = rtrim($contents);
- if (strlen($contents) > 0){
- $domuary = explode("\n", $contents);
- $domary = array();
- foreach ($domuary as $domu){
- $domain = preg_replace('/:.*/s', '', $domu);
- array_push($domary, $domain);
- }
- return $domary;
- } else {
- return false;
- }
- }
-
function qmail_virtual_domain_user($domain){
$control = '/var/qmail/control';
--- 199,202 ----
***************
*** 357,470 ****
return false;
}
- }
-
-
- /**
- * Crypto code.
- * These functions encrypt the password
- *
- * This function stolen nearly verbatim from hastymail.
- * http://hastymail.sf.net/
- */
- function my_rc4_crypt($input, $key) {
- $k_tmp = preg_split('//', $key, -1, PREG_SPLIT_NO_EMPTY);
- foreach($k_tmp as $char) {
- $k[] = ord($char);
- }
- unset($k_tmp);
- $message = preg_split('//', $input, -1, PREG_SPLIT_NO_EMPTY);
- $rep = count($k);
- for ($n=0;$n<$rep;$n++) {
- $s[] = $n;
- }
- $i = 0;
- $f = 0;
- for ($i = 0;$i<$rep;$i++) {
- $f = (($f + $s[$i] + $k[$i]) % $rep);
- $tmp = $s[$i];
- $s[$i] = $s[$f];
- $s[$f] = $tmp;
- }
- $i = 0;
- $f = 0;
- foreach($message as $letter) {
- $i = (($i + 1) % $rep);
- $f = (($f + $s[$i]) % $rep);
- $tmp = $s[$i];
- $s[$i] = $s[$f];
- $s[$f] = $tmp;
- $t = $s[$i] + $s[$f];
- $done = ($t^(ord($letter)));
- $i++;
- $f++;
- $enc_array[] = chr($done);
- }
- $coded = implode('', $enc_array);
- return $coded;
- }
-
- /**
- * This function does the encryption and decryption of sensitive
- * data stored on the HDD. It uses the CRYPTO_HASH_LINE as key.
- * This function is taken from the VADMIN plugin.
- *
- * @param $input the contents to encrypt/decrypt.
- * @param $mode a string that can be either "decrypt" or "encrypt"
- * depending on which action needs to be performed.
- * @return the results of encryption/decryption.
- */
- function my_crypto($input, $mode){
- $CRYPTO_HASH_LINE = $_SERVER{'CRYPTO_HASH_LINE'};
- $MCRYPT_ALGO = $_SERVER{'MCRYPT_ALGO'};
-
- /**
- * See if we have everything needed for
- * encryption/decryption. This includes checking for the
- * encryption functions, the algorithm, and the hash line.
- */
- if (!$CRYPTO_HASH_LINE || !$MCRYPT_ALGO){
- $message = '';
- if (!$CRYPTO_HASH_LINE){
- $message .= _("Could not find CRYPTO_HASH_LINE! ");
- }
- if (!$MCRYPT_ALGO){
- $message .= _("Could not find MCRYPT_ALGO! ");
- }
- echo "CRYPTO is misconfigured: $message";
- }
- $key = $CRYPTO_HASH_LINE;
- if ($MCRYPT_ALGO == 'rc4_builtin'){
- switch($mode){
- case 'encrypt':
- $endresult = base64_encode(vadmin_rc4_crypt($input, $key));
- break;
- case 'decrypt':
- $endresult = vadmin_rc4_crypt(base64_decode($input), $key);
- break;
- }
- } else {
- if (!function_exists('mcrypt_generic')){
- $message = _("An algorithm other than 'rc4_builtin' specified, but mcrypt support not found.");
- echo "CRYPTO is misconfigured: $message";
- }
- $td = mcrypt_module_open($MCRYPT_ALGO, '', MCRYPT_MODE_ECB, '');
- $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
- @mcrypt_generic_init($td, $key, $iv);
- switch ($mode){
- case 'encrypt':
- $endresult = base64_encode(mcrypt_generic($td, $input));
- break;
- case 'decrypt':
- $endresult = mdecrypt_generic($td, base64_decode($input));
- /**
- * There will be trailing nul's on the end. Remove
- * these. They suck.
- */
- $endresult = rtrim($endresult);
- break;
- }
- mcrypt_generic_deinit($td);
- }
- return $endresult;
}
--- 219,222 ----
Index: config.php
===================================================================
RCS file: /cvsroot/serverfilters/config.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** config.php 8 Dec 2003 18:28:03 -0000 1.2
--- config.php 9 Dec 2003 06:50:12 -0000 1.3
***************
*** 7,28 ****
! global $STORAGE_DIR, $ADMIN, $ALWAYS_CREATE, $FILE_BACKEND, $FILTERDIR, $FILTERFILE,
! $FILTER_APP, $FILTER_APP_PATH, $DEFAULT_DELIVERY, $SPAMFILTER, $SPAMHEADER,
$SPAMVALUE, $UNSUREVALUE, $VIRTUAL_DOMAINS, $LOCAL_MAILDIR,
! $USE_MAILDIRS, $VD_BACKEND, $SEPERATOR, $CREATE_DOT_QMAIL;
! /**
! * STORAGE_DIR
! * If you are using virtual domains, then the domain password
! * will need to be stored in an encrypted file. This is the location
! * for that file. You will be able to set the passwords in the
! * admin module on the options page.
! * Admin
! * names of users allowed to set the domain passwords when using
! * Virtual Domains and the ftp backend.
! * when one of these users logs in, they will have a link under the
! * Mail filters option to set domain passwords.
! */
! $STORAGE_DIR = '/var/lib/serversidefilter';
! $ADMIN = array('jgs...@bs...');
/**
--- 7,14 ----
! global $ALWAYS_CREATE, $FILTERDIR, $FILTERFILE, $FILTER_APP, $FILTER_APP_PATH,
! $DEFAULT_DELIVERY, $SPAMFILTER, $SPAMHEADER,
$SPAMVALUE, $UNSUREVALUE, $VIRTUAL_DOMAINS, $LOCAL_MAILDIR,
! $USE_MAILDIRS, $SEPERATOR, $CREATE_DOT_QMAIL, $DOT_QMAIL_DIR;
/**
***************
*** 36,53 ****
- /**
- * FILE_BACKEND
- * this is the method to save the filter file.
- * 'local'
- * Setting to local will store the file in the HOMEDIR listed below.
- * This setting will not work if you want this script to generate
- * dot-qmail files. This is also not compatible with maildrop.
- * 'ftp'
- * Setting to FTP will transfer the file via ftp to the user's
- * home directory.
- */
- //$FILE_BACKEND = 'local';
- $FILE_BACKEND = 'ftp';
-
/*
* This is the directory where the filter files will be stored
--- 22,25 ----
***************
*** 57,63 ****
* and the appropriate domain name and username will be entered.
*/
! //$FILTERDIR = '/var/lib/squirrelmail/home/[DOMAIN]/[USERNAME]'; //example for FILE_LOCATION='local'
! $FILTERDIR = 'users/[USERNAME]'; //example for virtual domains and using ftp
! //$FILTERDIR = '.';
/*
--- 29,34 ----
* and the appropriate domain name and username will be entered.
*/
! //$FILTERDIR = '/var/lib/squirrelmail/home/[DOMAIN]/[USERNAME]';
! $FILTERDIR = '/home/email/[DOMUSER]/users/[USERNAME]';
/*
***************
*** 100,104 ****
$SPAMFILTER = '/usr/bin/spamc -u [USERNAME] -f';
$SPAMHEADER = 'X-Spam-Flag';
! $SPAMVALUE = 'YES';
//$SPAMFILTER= '/usr/bin/sb_filter.py';
//$SPAMHEADER = 'X-SpamBayes-Classification';
--- 71,75 ----
$SPAMFILTER = '/usr/bin/spamc -u [USERNAME] -f';
$SPAMHEADER = 'X-Spam-Flag';
! $SPAMVALUE = 'Yes';
//$SPAMFILTER= '/usr/bin/sb_filter.py';
//$SPAMHEADER = 'X-SpamBayes-Classification';
***************
*** 106,113 ****
//$UNSUREVALUE = 'unsure';
- /**** Virtual Domain Settings ****/
-
- // Set this to 1 if you host virtual domains and have virtual users
- $VIRTUAL_DOMAINS = 1;
/*
--- 77,80 ----
***************
*** 128,144 ****
$USE_MAILDIRS = 1;
! /*
! * VD_BACKEND
! * This is basically the mailserver you use to implement virtual domains.
! * This is used to determine the base directory of your virtual domains.
! * This is only used when VIRTUAL_USERS = 1
! * 'qmail'
! * Setting this to qmail will read /var/qmail/control/virtualdomains to
! * determine the location of the Maildir folders
! * 'postfix'
! * Option not yet supported
! */
! $VD_BACKEND = 'qmail';
// Character that seperates username from domain name
--- 95,102 ----
$USE_MAILDIRS = 1;
! /**** Virtual Domain Settings ****/
+ // Set this to 1 if you host virtual domains and have virtual users
+ $VIRTUAL_DOMAINS = 1;
// Character that seperates username from domain name
***************
*** 151,154 ****
--- 109,113 ----
// Currently only works if FTP method is selected
$CREATE_DOT_QMAIL = 1;
+ $DOT_QMAIL_DIR = "/home/email/[DOMUSER]/";
?>
Index: functions.php
===================================================================
RCS file: /cvsroot/serverfilters/functions.php,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** functions.php 4 Dec 2003 23:15:06 -0000 1.1.1.1
--- functions.php 9 Dec 2003 06:50:12 -0000 1.2
***************
*** 17,57 ****
* Filter functions
* The are the functions you call to get or write the filter files
- * The backend implementation is called from within these functions
- * The backend definitions are backend.php
*/
function filter_get() {
! global $FILE_BACKEND;
! $filter_get = $FILE_BACKEND.'_filter_get';
! return $filter_get();
}
! function filter_exists(){
! global $FILE_BACKEND;
! $filter_exists = $FILE_BACKEND.'_filter_exists';
! return $filter_exists();
}
function filter_put($file) {
! global $FILE_BACKEND;
! $filter_put = $FILE_BACKEND.'_filter_put';
! return $filter_put($file);
}
function write_dot_qmail() {
! global $username, $SEPERATOR, $VIRTUAL_DOMAINS, $FILE_BACKEND,
! $FILTERDIR, $FILTERFILE, $FILTER_APP_PATH;
$tmpfile = "/tmp/.qmail-$username";
! if ($VIRTUAL_DOMAINS) list($user,$domain) = split($SEPERATOR,$username);
! else $user = $username;
$fd = fopen($tmpfile,"w");
! $filterpath = preg_replace(array('/\[DOMAIN\]/','/\[USERNAME\]/'),array($domain,$user),$FILTERDIR);
$filterfile = "$filterpath/$FILTERFILE";
$contents = "|preline $FILTER_APP_PATH $filterfile\n";
fwrite($fd, $contents);
fclose($fd);
! $write_dot_qmail = $FILE_BACKEND.'_write_dot_qmail';
! $write_dot_qmail($tmpfile);
! unlink($tmpfile);
}
--- 17,98 ----
* Filter functions
* The are the functions you call to get or write the filter files
*/
function filter_get() {
! global $username, $FILTERDIR, $FILTERFILE;
!
! $path = vd_replace($FILTERDIR);
!
! if (!file_exists($path)) {
! mkdirs($path,0700);
! }
!
! $file = "$path/$FILTERFILE";
! $localfile = "/tmp/$FILTERFILE.$username";
! if (filter_exists($file)) {
! $command = escapeshellcmd("sudo ../plugins/serversidefilter/script/getrc $file $localfile");
! system($command);
! } else
! touch($localfile);
!
! return $localfile;
}
! function filter_exists() {
! global $FILTERDIR, $FILTERFILE;
!
! $path = vd_replace($FILTERDIR);
!
! $file = "$path/$FILTERFILE";
!
! $command = escapeshellcmd("sudo ../plugins/serversidefilter/script/rcexists $file");
! system($command, $exists);
! if ($exists == 0) {
! return true;
! } else {
! return false;
! }
}
+ // Put the filter file
+
function filter_put($file) {
! global $username, $FILTERDIR, $FILTERFILE, $VIRTUAL_DOMAINS, $SEPERATOR;
!
! $path = vd_replace($FILTERDIR);
!
! $newfile = "$path/$FILTERFILE";
!
! if ($VIRTUAL_DOMAINS) {
! list($user, $domain) = split($SEPERATOR,$username);
! $user = my_virtual_domain_user($domain);
! } else
! $user = $username;
!
! $command = escapeshellcmd("sudo ../plugins/serversidefilter/script/putrc $user $file $newfile");
! system($command);
}
function write_dot_qmail() {
! global $username, $SEPERATOR, $VIRTUAL_DOMAINS, $FILTERDIR, $FILTERFILE, $FILTER_APP_PATH, $DOT_QMAIL_DIR;
$tmpfile = "/tmp/.qmail-$username";
! if ($VIRTUAL_DOMAINS) {
! list($user, $domain) = split($SEPERATOR,$username);
! $user = my_virtual_domain_user($domain);
! $dot_qmail = "$DOT_QMAIL_DIR/.qmail-$user";
! } else {
! $user = $username;
! $dot_qmail = "$DOT_QMAIL_DIR/.qmail";
! }
$fd = fopen($tmpfile,"w");
! $filterpath = vd_replace($FILTERDIR);
$filterfile = "$filterpath/$FILTERFILE";
$contents = "|preline $FILTER_APP_PATH $filterfile\n";
fwrite($fd, $contents);
fclose($fd);
!
! $command = escapeshellcmd("sudo ../plugins/serversidefilter/script/putrc $user $tmpfile $dot_qmail");
! system($command, $exists);
!
}
***************
*** 94,160 ****
*/
- // Get the list of vitual domains
- function my_list_virtual_domains() {
- global $VD_BACKEND;
- $list_vd = $VD_BACKEND.'_list_virtual_domains';
- return $list_vd();
- }
-
// get the owner of a virtual domain
function my_virtual_domain_user($domain) {
! global $VD_BACKEND;
! $vd_user = $VD_BACKEND.'_virtual_domain_user';
return $vd_user($domain);
}
-
- // check to see if the password is saved
- function check_pass($domain){
- global $STORAGE_DIR, $FILE_BACKEND;
-
- $vdomain = preg_replace('/\./','_',$domain);
- $file = "$STORAGE_DIR/$vdomain";
- if (file_exists($file) && is_file($file)) {
- $ckpass = $FILE_BACKEND.'_check_pass';
- $user = my_virtual_domain_user($domain);
- $pass = my_get_domain_passwd($domain);
- return $ckpass($user,$pass);
- } else
- return false;
- }
-
-
- /**
- * This function will return a stored domain password or false if
- * there isn't one.
- *
- * @param $domain a vadmin domain.
- * @return the domain password stored in $domain/passwd, or
- * false if that file is empty.
- */
- function my_get_domain_passwd($domain){
- global $STORAGE_DIR;
-
- $mydomain = preg_replace('/\./','_',$domain);
- $file = "$STORAGE_DIR/$mydomain";
- if (file_exists($file) && is_file($file)) {
- $fd = fopen($file,'r');
- $contents = fread($fd, filesize($file));
- $contents = rtrim($contents);
- $clearpass = my_crypto($contents, 'decrypt');
- return $clearpass;
- } else return false;
- }
-
- // store the domain password to a file
- function my_put_domain_passwd($domain, $clearpass){
- global $STORAGE_DIR;
-
- $file = "$STORAGE_DIR/$domain";
- $fd = fopen($file,'w');
- $encpass = my_crypto($clearpass, 'encrypt');
- fwrite($fd,$encpass);
- fclose($fd);
- }
-
?>
--- 135,143 ----
*/
// get the owner of a virtual domain
function my_virtual_domain_user($domain) {
! $vd_user = 'qmail_virtual_domain_user';
return $vd_user($domain);
}
?>
Index: options.php
===================================================================
RCS file: /cvsroot/serverfilters/options.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** options.php 8 Dec 2003 18:28:03 -0000 1.2
--- options.php 9 Dec 2003 06:50:12 -0000 1.3
***************
*** 174,177 ****
--- 174,178 ----
unlink($file);
+ $value = count($recipies);
displayPageHeader($color, 'None');
?>
***************
*** 182,214 ****
<table width="100%" border=0 cellpadding=1 cellspacing=1>
- <?php
- if (in_array($username, $ADMIN) && $VIRTUAL_DOMAINS && ($FILE_BACKEND == 'ftp')) {
- echo "<tr><td bgcolor=$color[4] align=center><br>";
- echo '<center><a href=admin.php>Admin - Set Domain Passwords</a></center>';
- $vdomains = my_list_virtual_domains();
- $goodpass = true;
- foreach($vdomains as $vdomain) {
- if (!check_pass($vdomain)) {
- echo "<center>" . _("Passwords out of date") . "</center>";
- $goodpass = false;
- break;
- }
- }
- if ($goodpass) echo "<center>" . _("Passwords are all up to date") . "</center>";
- echo "<br></td></tr>";
- }
- ?>
<tr><td bgcolor="<?php echo $color[4] ?>" align=center><br>
<table border=1 frame=void rules=rows noshade=0 bordercolor=<?php echo $color[0]?> cellpadding=5 cellspacing=0>
- <?php
- if ($VIRTUAL_DOMAINS && ($FILE_BACKEND == 'ftp')) {
- list($vuser,$vdomain) = split($SEPERATOR,$username);
- if (!check_pass($vdomain)) {
- echo _("Your domain") . " ($vdomain) " . _("password is out of date. Your administrator will need to correct this before you may setup your mailfilters.");
- exit;
- }
- }
- $value = count($recipies);
- ?>
<tr><td bgcolor="<?php echo $color[4] ?>" align=center colspan=6>
<table border=4 rules=rows noshade=0 bordercolor=<?php echo $color[0]?> cellpadding=5 cellspacing=0>
--- 183,188 ----
Index: recipie_functions.php
===================================================================
RCS file: /cvsroot/serverfilters/recipie_functions.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** recipie_functions.php 8 Dec 2003 18:28:03 -0000 1.2
--- recipie_functions.php 9 Dec 2003 06:50:12 -0000 1.3
***************
*** 162,167 ****
fclose($nf);
! if (isset($CREATE_DOT_QMAIL) && $CREATE_DOT_QMAIL == 1 &&
! $FILE_BACKEND != 'local')
write_dot_qmail();
}
--- 162,166 ----
fclose($nf);
! if (isset($CREATE_DOT_QMAIL) && $CREATE_DOT_QMAIL == 1)
write_dot_qmail();
}
|
|
From: <jgs...@us...> - 2003-12-09 06:50:16
|
Update of /cvsroot/serverfilters/script In directory sc8-pr-cvs1:/tmp/cvs-serv28582/script Added Files: getrc putrc rcexists Log Message: Removed FTP requirement. New backend uses "sudo" do properly move and set permissions on files with scripts in the script directory. --- NEW FILE: getrc --- #!/bin/sh FILE=$1 NEWFILE=$2 cp $FILE $NEWFILE chown $SUDO_UID:$SUDO_GID $NEWFILE chmod 0600 $NEWFILE --- NEW FILE: putrc --- #!/bin/sh USER=$1 FILE=$2 DIR=$3 if [ "$USER" == "root" ] || [ "$USER" == "0" ] ; then echo "Cannot set owner to root." exit fi; chown $USER $FILE chmod 0600 $FILE mv $FILE $DIR --- NEW FILE: rcexists --- #!/bin/sh FILE=$1 if [ -e $FILE ] ; then exit 0 else echo not found; exit 1 fi |
|
From: <jgs...@us...> - 2003-12-09 06:45:30
|
Update of /cvsroot/serverfilters/script In directory sc8-pr-cvs1:/tmp/cvs-serv28048/script Log Message: Directory /cvsroot/serverfilters/script added to the repository |
|
From: <jgs...@us...> - 2003-12-08 20:01:34
|
Update of /cvsroot/serverfilters In directory sc8-pr-cvs1:/tmp/cvs-serv17512 Added Files: ChangeLog Log Message: Added changelog. Logging changes starting with rev1.33 |
|
From: <jgs...@us...> - 2003-12-08 18:53:13
|
Update of /cvsroot/serverfilters In directory sc8-pr-cvs1:/tmp/cvs-serv3840 Modified Files: README Log Message: Added comment about plugin not requiring vadmin. This was very unclear. |
|
From: <ton...@us...> - 2003-12-08 18:28:06
|
Update of /cvsroot/serverfilters
In directory sc8-pr-cvs1:/tmp/cvs-serv31909
Modified Files:
backend.php config.php config.php.sample options.php
recipie_functions.php
Log Message:
Spam filter additions: ability to add unsure rule, filter command line
parameterized by [USERNAME], header names and spam/unsure values
controlled by config settings.
Index: config.php
===================================================================
RCS file: /cvsroot/serverfilters/config.php,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** config.php 4 Dec 2003 23:15:06 -0000 1.1.1.1
--- config.php 8 Dec 2003 18:28:03 -0000 1.2
***************
*** 8,15 ****
global $STORAGE_DIR, $ADMIN, $ALWAYS_CREATE, $FILE_BACKEND, $FILTERDIR, $FILTERFILE,
! $FILTER_APP, $FILTER_APP_PATH, $DEFAULT_DELIVERY, $SPAMFILTER, $VIRTUAL_DOMAINS,
! $LOCAL_MAILDIR, $USE_MAILDIRS, $VD_BACKEND, $SEPERATOR, $CREATE_DOT_QMAIL;
/**
! * STOARAGE_DIR
* If you are using virtual domains, then the domain password
* will need to be stored in an encrypted file. This is the location
--- 8,16 ----
global $STORAGE_DIR, $ADMIN, $ALWAYS_CREATE, $FILE_BACKEND, $FILTERDIR, $FILTERFILE,
! $FILTER_APP, $FILTER_APP_PATH, $DEFAULT_DELIVERY, $SPAMFILTER, $SPAMHEADER,
! $SPAMVALUE, $UNSUREVALUE, $VIRTUAL_DOMAINS, $LOCAL_MAILDIR,
! $USE_MAILDIRS, $VD_BACKEND, $SEPERATOR, $CREATE_DOT_QMAIL;
/**
! * STORAGE_DIR
* If you are using virtual domains, then the domain password
* will need to be stored in an encrypted file. This is the location
***************
*** 97,101 ****
* based on a spam header, set this to the location of the spam filter, otherwise comment out.
*/
! $SPAMFILTER = '/usr/bin/spamc';
/**** Virtual Domain Settings ****/
--- 98,108 ----
* based on a spam header, set this to the location of the spam filter, otherwise comment out.
*/
! $SPAMFILTER = '/usr/bin/spamc -u [USERNAME] -f';
! $SPAMHEADER = 'X-Spam-Flag';
! $SPAMVALUE = 'YES';
! //$SPAMFILTER= '/usr/bin/sb_filter.py';
! //$SPAMHEADER = 'X-SpamBayes-Classification';
! //$SPAMVALUE = 'spam';
! //$UNSUREVALUE = 'unsure';
/**** Virtual Domain Settings ****/
Index: config.php.sample
===================================================================
RCS file: /cvsroot/serverfilters/config.php.sample,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** config.php.sample 4 Dec 2003 23:15:06 -0000 1.1.1.1
--- config.php.sample 8 Dec 2003 18:28:03 -0000 1.2
***************
*** 8,15 ****
global $STORAGE_DIR, $ADMIN, $ALWAYS_CREATE, $FILE_BACKEND, $FILTERDIR, $FILTERFILE,
! $FILTER_APP, $FILTER_APP_PATH, $DEFAULT_DELIVERY, $SPAMFILTER, $VIRTUAL_DOMAINS,
! $LOCAL_MAILDIR, $USE_MAILDIRS, $VD_BACKEND, $SEPERATOR, $CREATE_DOT_QMAIL;
/**
! * STOARAGE_DIR
* If you are using virtual domains, then the domain password
* will need to be stored in an encrypted file. This is the location
--- 8,16 ----
global $STORAGE_DIR, $ADMIN, $ALWAYS_CREATE, $FILE_BACKEND, $FILTERDIR, $FILTERFILE,
! $FILTER_APP, $FILTER_APP_PATH, $DEFAULT_DELIVERY, $SPAMFILTER, $SPAMHEADER,
! $SPAMVALUE, $UNSUREVALUE, $VIRTUAL_DOMAINS, $LOCAL_MAILDIR,
! $USE_MAILDIRS, $VD_BACKEND, $SEPERATOR, $CREATE_DOT_QMAIL;
/**
! * STORAGE_DIR
* If you are using virtual domains, then the domain password
* will need to be stored in an encrypted file. This is the location
***************
*** 97,101 ****
* based on a spam header, set this to the location of the spam filter, otherwise comment out.
*/
! $SPAMFILTER = '/usr/bin/spamc';
/**** Virtual Domain Settings ****/
--- 98,108 ----
* based on a spam header, set this to the location of the spam filter, otherwise comment out.
*/
! $SPAMFILTER = '/usr/bin/spamc -u [USERNAME] -f';
! $SPAMHEADER = 'X-Spam-Flag';
! $SPAMVALUE = 'YES';
! //$SPAMFILTER= '/usr/bin/sb_filter.py';
! //$SPAMHEADER = 'X-SpamBayes-Classification';
! //$SPAMVALUE = 'spam';
! //$UNSUREVALUE = 'unsure';
/**** Virtual Domain Settings ****/
Index: options.php
===================================================================
RCS file: /cvsroot/serverfilters/options.php,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** options.php 4 Dec 2003 23:15:05 -0000 1.1.1.1
--- options.php 8 Dec 2003 18:28:03 -0000 1.2
***************
*** 44,48 ****
global $username, $key, $imapServerAddress, $imapPort;
global $fields, $folders, $imapConnection, $imap_stream;
! global $recipies;
compatibility_sqextractGlobalVar('onetimepad');
--- 44,48 ----
global $username, $key, $imapServerAddress, $imapPort;
global $fields, $folders, $imapConnection, $imap_stream;
! global $recipies, $SPAMHEADER, $SPAMVALUE, $UNSUREVALUE;
compatibility_sqextractGlobalVar('onetimepad');
***************
*** 61,64 ****
--- 61,65 ----
$fields = array("From", "Subject", "To", "Cc", "TO_");
$spamrule_set = false;
+ $unsurerule_set = false;
// figure out if we're already connected to IMAP server
***************
*** 92,97 ****
// Create a new entry
! if ($_POST['field'] == 'X-Spam-Flag')
! $new['field'] = 'X-Spam-Flag';
else
$new['field'] = $fields[$_POST['field']];
--- 93,98 ----
// Create a new entry
! if ($_POST['field'] == $SPAMHEADER)
! $new['field'] = $SPAMHEADER;
else
$new['field'] = $fields[$_POST['field']];
***************
*** 120,125 ****
} elseif (array_key_exists('modify_x', $_POST)) {
// Modify an existing entry
! if ($_POST['field'] == 'X-Spam-Flag')
! $recipies[$_POST['rule']]['field'] = 'X-Spam-Flag';
else
$recipies[$_POST['rule']]['field'] = $fields[$_POST['field']];
--- 121,126 ----
} elseif (array_key_exists('modify_x', $_POST)) {
// Modify an existing entry
! if ($_POST['field'] == $SPAMHEADER)
! $recipies[$_POST['rule']]['field'] = $SPAMHEADER;
else
$recipies[$_POST['rule']]['field'] = $fields[$_POST['field']];
***************
*** 237,246 ****
</form>
<?php
! if (!$spamrule_set && isset($SPAMFILTER) && $SPAMFILTER != '') {
echo '<form method=post action="options.php">'
! .'<input type=hidden name="create.x" value="'.$value.'">'
.'<tr><td align=right valign=top>'
! .'<input type=hidden name=field value="X-Spam-Flag">'
! .'<input type=hidden name=string value="YES">'
._("if message is marked as").' <b>'._("SPAM").'</b> '._("then")
.' <select name=action>'
--- 238,248 ----
</form>
<?php
! if (isset($SPAMFILTER) && $SPAMFILTER != '') {
! if (!$spamrule_set) {
echo '<form method=post action="options.php">'
! .'<input type=hidden name="create.x" value="'.$value++.'">'
.'<tr><td align=right valign=top>'
! .'<input type=hidden name=field value="' . $SPAMHEADER . '">'
! .'<input type=hidden name=string value="' . $SPAMVALUE . '">'
._("if message is marked as").' <b>'._("SPAM").'</b> '._("then")
.' <select name=action>'
***************
*** 257,260 ****
--- 259,284 ----
.'<td colspan=4 align=center valign=top><input type=image src="images/saveas.gif" border=0 name=create alt="save new"></td></tr>'
.'</form>';
+ }
+ if (!$unsurerule_set && isset($UNSUREVALUE) && $UNSUREVALUE != '' ) {
+ echo '<form method=post action="options.php">'
+ .'<input type=hidden name="create.x" value="'.$value++.'">'
+ .'<tr><td align=right valign=top>'
+ .'<input type=hidden name=field value="' . $SPAMHEADER . '">'
+ .'<input type=hidden name=string value="' . $UNSUREVALUE . '">'
+ ._("if message is marked as").' <b>'._("UNSURE").'</b> '._("then")
+ .' <select name=action>'
+ .'<option value=m>move</option>'
+ .'<option value=c>copy</option>'
+ .'</select>'
+ .' '._("to").'</td><td><table border=0 cellpadding=0 cellspacing=0>'
+ .'<tr><td><input type=checkbox name=toFolder checked>' . _("Folder") . ' </td><td>';
+ folderDropdown('');
+ echo '</td></tr>'
+ .'<td><input type=checkbox name=toAddress>' ._("Email") . ' </td>'
+ .'<td><input type=text name=add_string></td>'
+ .'</tr></table></td>'
+ .'<td colspan=4 align=center valign=top><input type=image src="images/saveas.gif" border=0 name=create alt="save new"></td></tr>'
+ .'</form>';
+ }
}
echo "</table></td></tr>";
Index: recipie_functions.php
===================================================================
RCS file: /cvsroot/serverfilters/recipie_functions.php,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** recipie_functions.php 4 Dec 2003 23:15:06 -0000 1.1.1.1
--- recipie_functions.php 8 Dec 2003 18:28:03 -0000 1.2
***************
*** 60,64 ****
function read_recipies($file) {
! global $recipies, $spamrule_set;
$buf = '';
--- 60,64 ----
function read_recipies($file) {
! global $recipies, $spamrule_set, $unsurerule_set, $SPAMHEADER, $SPAMVALUE, $UNSUREVALUE;
$buf = '';
***************
*** 73,79 ****
$tmp = explode(" '' ", substr($buf, 3));
$new['field'] = stripslashes($tmp[0]);
- if ($new['field'] == 'X-Spam-Flag')
- $spamrule_set = true;
$new['string'] = stripslashes($tmp[1]);
$new['folder'] = stripslashes($tmp[2]);
$new['action'] = stripslashes($tmp[3]);
--- 73,81 ----
$tmp = explode(" '' ", substr($buf, 3));
$new['field'] = stripslashes($tmp[0]);
$new['string'] = stripslashes($tmp[1]);
+ if ($new['field'] == $SPAMHEADER) {
+ if ($new['string'] == $SPAMVALUE) $spamrule_set = true;
+ if ($new['string'] == $UNSUREVALUE) $unsurerule_set = true;
+ }
$new['folder'] = stripslashes($tmp[2]);
$new['action'] = stripslashes($tmp[3]);
***************
*** 94,98 ****
function write_recipies($oldfile, $newfile) {
! global $username, $recipies, $SEPERATOR, $SPAMFILTER,
$VIRTUAL_DOMAINS, $LOCAL_MAILDIR, $FILE_BACKEND, $CREATE_DOT_QMAIL;
--- 96,100 ----
function write_recipies($oldfile, $newfile) {
! global $username, $recipies, $SEPERATOR, $SPAMFILTER, $SPAMHEADER, $UNSUREVALUE, $SPAMVALUE,
$VIRTUAL_DOMAINS, $LOCAL_MAILDIR, $FILE_BACKEND, $CREATE_DOT_QMAIL;
***************
*** 200,204 ****
function print_recipies() {
! global $recipies, $color;
$bgcolor = $color[0];
--- 202,206 ----
function print_recipies() {
! global $recipies, $color, $SPAMHEADER, $SPAMVALUE, $UNSUREVALUE;
$bgcolor = $color[0];
***************
*** 213,220 ****
print("<form method=post action=\"options.php\"><input type=hidden name=rule value=\"$i\">\n");
print("<tr><td align=right valign=top>");
! if ($recipies[$i]['field'] == 'X-Spam-Flag') {
! print('<input type=hidden name=field value="X-Spam-Flag">');
! print('<input type=hidden name=string value="Yes">');
! print(_("If message is marked as") . ' <b>' . _("SPAM") . '</b> ' . _("then") . " ");
} else {
print(_("If") . " ");
--- 215,227 ----
print("<form method=post action=\"options.php\"><input type=hidden name=rule value=\"$i\">\n");
print("<tr><td align=right valign=top>");
! if ($recipies[$i]['field'] == $SPAMHEADER) {
! print('<input type=hidden name=field value="' . $SPAMHEADER . '">');
! if ($recipies[$i]['string'] == $UNSUREVALUE) {
! print('<input type=hidden name=string value="'.$UNSUREVALUE.'">');
! print(_("If message is marked as") . ' <b>' . _("UNSURE") . '</b> ' . _("then") . " ");
! } else {
! print('<input type=hidden name=string value="'.$SPAMVALUE.'">');
! print(_("If message is marked as") . ' <b>' . _("SPAM") . '</b> ' . _("then") . " ");
! }
} else {
print(_("If") . " ");
|