login();
if(is_a($login, "Exception")) {
logModuleCall(
'zimbrasingle',
__FUNCTION__,
$params,
"Connection test to " . $params['serverip'] . " failed: Cannot login",
$login->getMessage()
);
return array(
'success' => false,
'error' => "Connection test to " . $params['serverip'] . " failed, the error was: " . $login->getMessage(),
);
} else {
return array(
'success' => true,
'error' => '',
);
}
}
function zimbraSingle_UsageUpdate($params)
{
}
function zimbraSingle_ClientArea($params)
{
// error_log(print_r($params,true));
# error_log("CLIENT-AREA");
# $zimbraSingleURL = buildzimbraSingleURL($params);
# $user = $params['username'];
# $result0 = select_query("tblconfiguration","value" , array('setting' => 'Language'));
# $data0 = mysql_fetch_array($result0);
# $lla = ($_SESSION['Language']) ? trim($_SESSION['Language']) : strtolower($data0[0]);
# $slang = array();
# include_once dirname(__FILE__).'/lang/'.$lla.'.php';
# return array(
# 'templatefile' => 'clientside',
# 'vars' => array_merge(array(
# 'url' => $seafileURL,
# 'user' => $user,
# 'mobile1' => $app,
# 'mobile2' => $google,
# 'drivewin' => $driveWin,
# 'winclient' => $winClient,
# 'macclient' => $macClient,
# 'drivemac' => $driveMac,
# 'linClient' => $linClient,
# ), $slang, $params),
# );
}
function zimbraSingle_ClientAreaCustomButtonArray()
{
$buttonarray = array(
"Reset Password" => "ClientPassword",
);
return $buttonarray;
}
function zimbraSingle_ChangePassword($params)
{
# if (strcmp($params['status'],"Active") !== 0) {
# return "Der Dienst ist gesperrt, das Passwort kann daher nicht geändert werden";
# }
# $loginPassword = $params["customfields"]["Passwort"];
# $checkPassword = checkPassword($loginPassword);
# if ($checkPassword != null) {
# return $checkPassword;
# }
# $fieldID = getCustomFieldIDFor($params,"Passwort");
#
# $seafileURL = buildSeafileURL($params);
# $apiuser = getSeafileAdminUser($params);
# $apipass = getSeafileAdminPassword($params);
#
# $seafileAPI = new SeafileAPI($seafileURL,$apiuser,$apipass);
# if ($seafileAPI->login() != true) {
# logModuleCall(
# 'seafile',
# __FUNCTION__,
# $params,
# "Cannot login to " . $seafileURL,
# ""
# );
# return "Login to " . $seafileURL . " fehlgeschlagen. Bitte den Administrator informieren.\n";
# }
#
# $userAccount = $seafileAPI->getAccountByEMail($params['username']);
# if ($userAccount != null) {
# $userAccount->password = $loginPassword;
# try {
# $result = $seafileAPI->updateAccount($userAccount);
# if ($result != true) {
# logModuleCall(
# 'seafile',
# __FUNCTION__,
# $params,
# "Cannot change password for " . $userAccount->email . ": Unknown error",
# ""
# );
# return "Das Passwort konnte nicht aktualisiert werden. Unbekannter Fehler.";
# } else {
# update_query( "tblcustomfieldsvalues",array( "value" => $loginPassword,"updated_at"=> "now()", ),array("id" => $fieldID) );
# logModuleCall(
# 'seafile',
# __FUNCTION__,
# $params,
# "Changed password for " . $userAccount->email,
# ""
# );
# return 'success';
# }
# } catch (Exception $exe) {
# logModuleCall(
# 'seafile',
# __FUNCTION__,
# $params,
# "Cannot change password for " . $userAccount->email . ", the error was " . $exe->getMessage(),
# $exe->getTraceAsString()
# );
# return "Fehler beim Update des Passworts, der Fehler war: " . $exe->getMessage();
# }
# } else {
# logModuleCall(
# 'seafile',
# __FUNCTION__,
# $params,
# "Changed password for " . $userAccount->email,
# ""
# );
# return "Konnte den Account " . $params['username'] . " auf dem Server nicht finden";
# }
}
function zimbraSingle_ClientPassword($params)
{
/* if (strcmp($params['status'],"Active") !== 0) {
return "Der Dienst ist gesperrt, das Passwort kann daher nicht geändert werden";
}
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
if (empty($password1) == true || empty($password2) == true) {
return "Bitte beide Passwörter zuerst ausfüllen";
}
if (strcmp($password1,$password2) !== 0) {
return "Die Passwörter stimmen nicht überein";
}
$checkPassword = checkPassword($password1);
if ($checkPassword != null) {
return $checkPassword;
}
$fieldID = getCustomFieldIDFor($params,"Passwort");
$seafileURL = buildSeafileURL($params);
$apiuser = getSeafileAdminUser($params);
$apipass = getSeafileAdminPassword($params);
$seafileAPI = new SeafileAPI($seafileURL,$apiuser,$apipass);
if ($seafileAPI->login() != true) {
logModuleCall(
'seafile',
__FUNCTION__,
$params,
"Cannot login to " . $seafileURL,
""
);
return "Login to " . $seafileURL . " fehlgeschlagen. Bitte den Administrator informieren.\n";
}
$userAccount = $seafileAPI->getAccountByEMail($params['username']);
if ($userAccount != null) {
$userAccount->password = $password1;
try {
$result = $seafileAPI->updateAccount($userAccount);
if ($result != true) {
return "Das Passwort konnte nicht aktualisiert werden. Unbekannter Fehler.";
} else {
update_query( "tblcustomfieldsvalues",array( "value" => $password1,"updated_at"=> "now()", ),array("id" => $fieldID) );
return 'success';
}
} catch (Exception $exe) {
logModuleCall(
'seafile',
__FUNCTION__,
$params,
"Cannot change password for " . $userAccount->email . ", the error was " . $exe->getMessage(),
$exe->getTraceAsString()
);
return "Fehler beim Update des Passworts, der Fehler war: " . $exe->getMessage();
}
} else {
logModuleCall(
'seafile',
__FUNCTION__,
$params,
"Cannot find the Account " . $params['username'],
""
);
return "Konnte den Account " . $params['username'] . " nicht finden";
} */
}
function zimbraSingle_CreateAccount($params)
{
$response = zimbraSingleCreateAccount($params['customfields']);
if($response) {
return 'success';
}
return 'Error creating account';
}
function zimbraSingle_SuspendAccount($params)
{
$response = zimbraSingleSuspendAccount($params['customfields']);
if($response) {
return 'success';
}
return 'Error suspending account';
}
function zimbraSingle_UnsuspendAccount($params)
{
$response = zimbraSingleUnsuspendAccount($params['customfields']);
if($response) {
return 'success';
}
return 'Error unsuspending account';
}
function zimbraSingle_TerminateAccount($params)
{
return zimbraSingleDeleteAccount($params['customfields']);
}
function zimbraSingle_genUsername($name)
{
/* $namelen = strlen($name);
$result = select_query("tblhosting","COUNT(*)",array("username" => $name));
$data = mysql_fetch_array($result);
$username_exists = $data[0];
$suffix=0;
while ($username_exists > 0) {
$suffix++;
$name = substr($name,0,$namelen).$suffix;
$result = select_query( "tblhosting", "COUNT(*)", array( "username" => $name ) );
$data = mysql_fetch_array($result);
$username_exists = $data[0];
}
return $name; */
}
function zimbraSingle_getCustomFieldIDFor($params, $fieldName)
{
$Client = Client::find($params['userid']);
$clientFields = $Client->customFieldValues;
foreach ($Client->services as $service) {
//print "ServiceID: " . $service->id . " ?= " . $params['serviceid'] . "
";
// print nl2br(print_r($service,true));
if ($service->packageid == $params['packageid']) {
//print " => PackageID found
";
$serviceFields = $service->customFieldValues;
//print nl2br(print_r($serviceFields,true));
foreach ($serviceFields as $field) {
//print " ===> " . $field->customField->fieldName . " : " . $field->id . "";
//print " Field: " . $field->customField->fieldName . " ?= Search Field Name: " . $fieldName . " ? " . strcmp($field->customField->fieldName,$fieldName) . " : " . $field->id . " : " . $field->fieldid . "
";
if (strcmp($field->customField->fieldName, $fieldName) == 0) {
return $field->id;
}
}
}
}
return -1;
/*
**** TESTING METHODS ****
Please do not remove this lines
// run through customfields
foreach($clientFields AS $field){
$HTML .= "Field ".$field->customField->fieldName.": ".$field->value."
";
}
return "";
$HTML .= "Service custom fields";
foreach($Client->services as $service) {
$HTML .= "----------------------------------------------------------
";
$HTML .= nl2br(print_r($service,true));
$HTML .= "----------------------------------------------------------
";
$ServiceFields = $service->customFieldValues;
foreach($ServiceFields as $field) {
//$HTML .= "Service field ".$field->customField->fieldName . ": ".$field->value."
";
//$HTML .= "----------------------------------------------------------
";
//$HTML .= nl2br(print_r($field,true));
//$HTML .= "Service field ".$field->customField->fieldName . "( FieldID: " . $field->fieldid . "/ ID: " . $field->id . "/ RelID:" . $field->relid . ") : " . $field->value . "
";
//$HTML .= "----------------------------------------------------------
";
}
}
*/
}