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 .= "----------------------------------------------------------
"; } } */ }