nach Tagen des bastelns und irrens und fluchens...
Manche Server benötigen wohl einen zweifachen Redirect beim einloggen für ActiveSync. Da ich keine Lust habe das 5000ste Konto für irgendein Wiki zu erstellen, bitte fügt das jemand für mich hinzu, danke!
Man muss mehrere Sachen anpassen.
.htaccess im root
- Code: Select all
RewriteEngine On
RewriteRule ^Microsoft-Server-ActiveSync(.*) index.php$1 [E=ACTIVESYNC:true,E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
Core.php unter \Tinebase muss im ActiveSync API Bereich etwa ab Zeile 173 geändert werden:
- Code: Select all
/**************************** ActiveSync API ****************************
* RewriteRule ^/Microsoft-Server-ActiveSync(.*) /index.php?frontend=activesync [E=REMOTE_USER:%{HTTP:Authorization},L,QSA]
*/
} elseif((isset($_SERVER['REDIRECT_REDIRECT_ACTIVESYNC']) && $_SERVER['REDIRECT_REDIRECT_ACTIVESYNC'] == 'true') ||
(isset($_REQUEST['frontend']) && $_REQUEST['frontend'] == 'activesync')) {
$server = new ActiveSync_Server_Http();
Die Http.php unter \ActiveSync\Server muss dementsprechend etwa ab Zeile 56 geändert (doppelten Redirect einfügen) werden:
- Code: Select all
// when used with (f)cgi no PHP_AUTH* variables are available without defining a special rewrite rule
if(!isset($_SERVER['PHP_AUTH_USER'])) {
// "Basic didhfiefdhfu4fjfjdsa34drsdfterrde..."
if (isset($_SERVER["REMOTE_USER"])) {
$basicAuthData = base64_decode(substr($_SERVER["REMOTE_USER"], 6));
} elseif (isset($_SERVER["REDIRECT_REDIRECT_REMOTE_USER"])) {
$basicAuthData = base64_decode(substr($_SERVER["REDIRECT_REDIRECT_REMOTE_USER"], 6));
} elseif (isset($_SERVER["Authorization"])) {
$basicAuthData = base64_decode(substr($_SERVER["Authorization"], 6));
} elseif (isset($_SERVER["HTTP_AUTHORIZATION"])) {
$basicAuthData = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6));
}
Jetzt funktioniert es!


