forked from poppyred/1.6.x
-
Notifications
You must be signed in to change notification settings - Fork 0
/
exec.cyrus.creatembx.php
executable file
·116 lines (89 loc) · 3.26 KB
/
exec.cyrus.creatembx.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
$GLOBALS["VERBOSE"]=false;
$GLOBALS["AS_ROOT"]=true;
if(preg_match("#--verbose#",implode(" ",$argv))){$GLOBALS["VERBOSE"]=true;$GLOBALS["debug"]=true;ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null);}
$dir=dirname(__FILE__);
include_once($dir.'/ressources/class.templates.inc');
include_once($dir.'/ressources/class.ldap.inc');
include_once($dir.'/ressources/class.users.menus.inc');
include_once($dir.'/ressources/class.artica.inc');
include_once($dir.'/ressources/class.mysql.inc');
include_once($dir.'/ressources/class.ini.inc');
include_once($dir.'/ressources/class.cyrus.inc');
include_once($dir.'/ressources/class.cron.inc');
include_once($dir.'/ressources/class.system.network.inc');
include_once($dir.'/ressources/class.user.inc');
if(posix_getuid()<>0){die("Cannot be used in web server mode\n\n");}
if($argv[1]=="--create-mbx"){CreateMBX($argv[2],$argv[3]);}
if($argv[1]=="--mbx-exists"){IfMailBoxExists($argv[2],$argv[3]);}
function build_progress($text,$pourc){
echo "******************** {$pourc}% $text ********************\n";
$cachefile="/usr/share/artica-postfix/ressources/logs/cyrus.mbx.progress";
$array["POURC"]=$pourc;
$array["TEXT"]=$text;
@file_put_contents($cachefile, serialize($array));
@chmod($cachefile,0755);
}
function IfMailBoxExists($uid){
$GLOBALS["VERBOSE"]=true;$GLOBALS["debug"]=true;ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);
ini_set('error_prepend_string',null);ini_set('error_append_string',null);
$cyr = new cyrus ( );
$RealMailBox=$cyr->IfMailBoxExists($uid);
if($RealMailBox){echo "\n\n *********** FALSE ***********\n";}
}
function CreateMBX($uid,$MailBoxMaxSize=0){
$cyrus=new cyrus();
if(!$cyrus->MailBoxExists($uid)){
build_progress("Check privileges...",10);
if(!checkrights($uid,$MailBoxMaxSize)){
build_progress("{error_creating_mailbox}",110);
return;
}
build_progress("{create_mailbox2}",50);
if(!$cyrus->CreateMailbox($uid,1,50)){
build_progress("{error_creating_mailbox}",110);
return;
}
build_progress("Building privileges",80);
$cyrus=new cyrus();
$cyrus->CreateACLS($uid);
build_progress("{success}",100);
echo $cyrus->cyrus_infos."\n";
return;
}
build_progress("Building privileges",80);
$cyrus=new cyrus();
$cyrus->CreateACLS($uid);
build_progress("$uid: {mailbox_already_exists} {success}",100);
}
function checkrights($uid,$MailBoxMaxSize){
$tpl=new templates();
$user=new user($uid);
$acls[]="[mailbox]";
$acls[]="l=1";
$acls[]="r=1";
$acls[]="s=1";
$acls[]="w=1";
$acls[]="i=1";
$acls[]="p=1";
$acls[]="c=1";
$acls[]="d=1";
$acls[]="a=1";
$user=new user($uid);
build_progress("Max mailbox size: $MailBoxMaxSize MB",10);
$user->MailBoxMaxSize=$MailBoxMaxSize;
$user->MailboxActive="TRUE";
$user->MailboxSecurityParameters=@implode("\n", $acls);
if(!$user->SaveCyrusMailboxesParameters()){
echo $user->ldap_error."\n";
echo "LDAP FAILED....!\n";
return false;
}
if($user->MailboxActive<>"TRUE"){
echo "$uid: Mailbox disabled ($user->MailboxActive\n";
echo "LDAP FAILED....!\n";
return false;
}
echo "$uid: checkrights(): Success...\n";
return true;
}