Newer
Older
while($i >= 0){
if(isset($ifconfig['INTERFACE'][$main_interface.':'.$i])){
$i++;
} else {
$new_interface = $main_interface.':'.$i;
$i = -1;
}
}
exec('ifconfig '.$new_interface.' '.$to.' netmask '.$this->server_conf['server_netzmaske'].' up &> /dev/null');
$ifconfig['INTERFACE'][$new_interface] = $to;
}
}
}
}
}
}
function quota_dirs(){
global $app;
$content = $app->file->unix_nl($app->file->no_comments('/etc/fstab'));
$lines = explode("\n", $content);
foreach($lines as $line){
$line = trim($line);
$elms = explode("\t", $line);
foreach($elms as $elm){
if(trim($elm) != '') $f[] = $elm;
if(!empty($f) && stristr($f[3], 'userquota') && stristr($f[3], 'groupquota')){
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
$q_dirs[] = trim($f[1]);
}
unset($f);
}
}
if(!empty($q_dirs)){
return $q_dirs;
} else {
return false;
}
}
/**
* Scan the trash for virusses infection
*
*/
function make_trashscan(){
global $app;
//trashscan erstellen
// Template ffnen
$app->tpl->clear_all();
$app->tpl->define( array(table => 'trashscan.master'));
if(!isset($this->server_conf['virusadmin']) || trim($this->server_conf['virusadmin']) == '') $this->server_conf['virusadmin'] = 'admispconfig@localhost';
if(substr($this->server_conf['virusadmin'],0,1) == '#'){
$notify = 'no';
}
// Variablen zuweisen
$app->tpl->assign( array(VIRUSADMIN => $this->server_conf['virusadmin'],
NOTIFICATION => $notify));
$app->tpl->parse(TABLE, table);
$trashscan_text = $app->tpl->fetch();
$datei = '/home/admispconfig/ispconfig/tools/clamav/bin/trashscan';
$app->file->wf($datei, $trashscan_text);
chmod($datei, 0755);
chown($datei,'admispconfig');
chgrp($datei,'admispconfig');
}
/**
* Get the current time
*
*/
function get_time(){
$addr = 'http://www.ispconfig.org/';
$timeout = 1;
$url_parts = parse_url($addr);
$urlHandle = @fsockopen($url_parts['host'], $port, $errno, $errstr, $timeout);
if ($urlHandle){
socket_set_timeout($urlHandle, $timeout);
$urlString = 'GET '.$path." HTTP/1.0\r\nHost: ".$url_parts["host"]."\r\nConnection: Keep-Alive\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
if ($user) $urlString .= 'Authorization: Basic '.base64_encode($user.':'.$pass)."\r\n";
$urlString .= "\r\n";
fputs($urlHandle, $urlString);
$month["Jan"] = '01';
$month["Feb"] = '02';
$month["Mar"] = '03';
$month["Apr"] = '04';
$month["May"] = '05';
$month["Jun"] = '06';
$month["Jul"] = '07';
$month["Aug"] = '08';
$month["Sep"] = '09';
$month["Oct"] = '10';
$month["Nov"] = '11';
$month["Dec"] = '12';
$c = 0;
$l = 0;
$startzeit = time();
while(!feof($urlHandle) && $c < 2 && $l == 0){
$line = trim(fgets($urlHandle,128));
$response .= $line;
$c = time() - $startzeit;
if($line == '' || substr($line, 0, 5) == 'Date:') $l += 1; // nur den Header auslesen
if(substr($line, 0, 5) == 'Date:'){
$parts = explode(' ', $line);
$tag = $parts[2];
$monat = $month[$parts[3]];
$jahr = $parts[4];
list($stunde, $minute, $sekunde) = explode(':', $parts[5]);
$timestamp = mktime($stunde,$minute,$sekunde,$monat,$tag,$jahr);
}
}
@fclose($urlHandle);
return $timestamp;
} else {
@fclose($urlHandle);
return false;
}
}
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
function replaceLine($filename,$search_pattern,$new_line,$strict = 0,$append = 1) {
$lines = @file($filename);
$out = '';
$found = 0;
if(is_array($lines)) {
foreach($lines as $line) {
if($strict == 0) {
if(stristr($line,$search_pattern)) {
$out .= $new_line."\n";
$found = 1;
} else {
$out .= $line;
}
} else {
if(trim($line) == $search_pattern) {
$out .= $new_line."\n";
$found = 1;
} else {
$out .= $line;
}
}
}
}
if($found == 0) {
//* add \n if the last line does not end with \n or \r
if(substr($out,-1) != "\n" && substr($out,-1) != "\r") $out .= "\n";
//* add the new line at the end of the file
if($append == 1) $out .= $new_line."\n";
}
file_put_contents($filename,$out);
}
function removeLine($filename,$search_pattern,$strict = 0) {
if($lines = @file($filename)) {
$out = '';
foreach($lines as $line) {
if($strict == 0) {
if(!stristr($line,$search_pattern)) {
$out .= $line;
}
} else {
if(!trim($line) == $search_pattern) {
$out .= $line;
}
}
}
file_put_contents($filename,$out);
}
}
function maildirmake($maildir_path, $user = '', $subfolder = '') {
global $app;
if($subfolder != '') {
tbrehm
committed
$dir = escapeshellcmd($maildir_path.'/.'.$subfolder);
tbrehm
committed
$dir = escapeshellcmd($maildir_path);
}
if($user != '' && $user != 'root' && $this->is_user($user)) {
tbrehm
committed
$user = escapeshellcmd($user);
// I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
$group = $user;
chown($dir,$user);
chgrp($dir,$group);
$chown_mdsub = true;
$maildirsubs = array('cur','new','tmp');
foreach ($maildirsubs as $mdsub) {
mkdir($dir.'/'.$mdsub, 0700, true);
if ($chown_mdsub) {
chown($dir.'/'.$mdsub, $user);
chgrp($dir.'/'.$mdsub, $group);
}
}
chmod($dir, 0700);
tbrehm
committed
/*
if($user != '' && $this->is_user($user) && $user != 'root') {
tbrehm
committed
$user = escapeshellcmd($user);
// I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
$group = $user;
exec("chown $user:$group $dir $dir_cur $dir_new $dir_tmp");
tbrehm
committed
*/
//* Add the subfolder to the subscriptions and courierimapsubscribed files
if($subfolder != '') {
// Courier
if(!is_file($maildir_path.'/courierimapsubscribed')) {
tbrehm
committed
$tmp_file = escapeshellcmd($maildir_path.'/courierimapsubscribed');
touch($tmp_file);
chmod($tmp_file, 0744);
chown($tmp_file,'vmail');
chgrp($tmp_file,'vmail');
}
$this->replaceLine($maildir_path.'/courierimapsubscribed','INBOX.'.$subfolder,'INBOX.'.$subfolder,1,1);
// Dovecot
if(!is_file($maildir_path.'/subscriptions')) {
tbrehm
committed
$tmp_file = escapeshellcmd($maildir_path.'/subscriptions');
touch($tmp_file);
chmod($tmp_file, 0744);
chown($tmp_file,'vmail');
chgrp($tmp_file,'vmail');
}
$this->replaceLine($maildir_path.'/subscriptions',$subfolder,$subfolder,1,1);
}
$app->log('Created Maildir '.$maildir_path.' with subfolder: '.$subfolder,LOGLEVEL_DEBUG);
}