php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2011, 05:54  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Sag mal was ist das für ein WebDAV auf dem Ziel-Host ? ( Den du übrigens immernoch nicht rauseditiert hast im Startpost *zum testen ausgeliehen hat* )

Insofern da SabreDAV läuft ( als Beispiel ) kommste mit der Klasse die du da hast nicht weit, allein das ( falsche ) Authentificate landet da schon im trash ( 400 )..

Ich weiß zwar das man so gut wie alles aus der Server-Sig rausradieren kann, aber ich geh von 2 Möglichkeiten bei dem Host aus:
- Kein WebDAV drauf
- WebDAV auf einem anderen Authentication Niveau oder auf bestimmte Client-Signaturen limitiert.

Ich hab hier im LAN 2 verschiedene Versionen von WebDAV laufen, zum einen DAV/2 und SabreDAV.

PHP-Code:
require('webdav.lib.php');
   
   
$webdav = new webdav~client('localhost'80);
   
   class 
logger implements webdav~iErrorObserver {
      function 
updateException $exception ) {
         if ( 
$exception instanceof webdav~logentry )
            echo 
$exception->getTimestamp().' > '.$exception->getMessage()."\r\n";
      }
   }
   
   
$webdav->errors->setLogHandler(new logger);
   
   
ini_set('max_execution_time'5);
   
   
$webdav->connect('testuser''test''/dav/'); 
Code:
1316403594 > n::dav WebDAV PHP Client Library; v1.0.0-alpha
1316403594 > connecting to [localhost] on port 80
1316403594 > done.
1316403594 > WebDAV Connection established. Keep-alive: yes
1316403594 > Authentification-Capture for Commands generated.
1316403594 > Executing: commands\getDirectory
1316403594 > Receiving answer form Host with status-code [200].
Im Gegenzug dein Host:

PHP-Code:
require('webdav.lib.php');
   
   
$webdav = new webdav~client('ssl://*.*.de'443);
   
   class 
logger implements webdav~iErrorObserver {
      function 
updateException $exception ) {
         if ( 
$exception instanceof webdav~logentry )
            echo 
$exception->getTimestamp().' > '.$exception->getMessage()."\r\n";
      }
   }
   
   
$webdav->errors->setLogHandler(new logger);
   
   
ini_set('max_execution_time'5);
   
   
$webdav->connect('testuser''test''/default/'); 
Code:
1316403720 > n::dav WebDAV PHP Client Library; v1.0.0-alpha
1316403720 > connecting to [ssl://*.*.de] on port 443
1316403721 > done.
1316403721 > WebDAV Connection established. Keep-alive: yes
1316403721 > Authentification-Capture for Commands generated.
1316403721 > Executing: commands\getDirectory
1316403721 > Receiving answer form Host with status-code [400].
1316403721 > Connected Device does not implement WebDAV-Features. Connection closed.
und nen SabreDAV-Host ( damit du auch was zum testen hast, einer der im Netz steht )

PHP-Code:
require('webdav.lib.php');
   
   
$webdav = new webdav~client('demo.sabredav.org'80);
   
   class 
logger implements webdav~iErrorObserver {
      function 
updateException $exception ) {
         if ( 
$exception instanceof webdav~logentry )
            echo 
$exception->getTimestamp().' > '.$exception->getMessage()."\r\n";
      }
   }
   
   
$webdav->errors->setLogHandler(new logger);
   
   
ini_set('max_execution_time'5);
   
   
$webdav->connect('testuser''test''/default/'); 
Code:
1316404809 > n::dav WebDAV PHP Client Library; v1.0.0-alpha
1316404809 > connecting to [demo.sabredav.org] on port 80
1316404809 > done.
1316404809 > WebDAV Connection established. Keep-alive: yes
1316404809 > Authentification-Capture for Commands generated.
1316404809 > Executing: commands\getDirectory
1316404810 > Receiving answer form Host with status-code [401].
1316404810 > Connected Device rejects authorization method. I am unauthorized, connection closed.
Plug-Pattern zum eingrenzen was ich da sende:

bootstrap, shifted
PHP-Code:
   interface iClientPattern {
      const 
BASIC_REQUEST_HTTP 
         
'{method} {path} {protocol}';
      
      const 
BASIC_REQUEST_HOST 
         
'Host: {server}';
      
      const 
BASIC_REQUEST_USERAGENT 
         
'User-Agent: n::dav webdav php client library; V1.0.0-alpha';
      
      const 
BASIC_REQUEST_BASICAUTH 
         
'Authorization: Basic {base64(user:pass)}';
   } 
getDirectory
PHP-Code:
<?php

   namespace webdav
~commands;

   class 
getDirectory extends ~webdav~abstractCommand {
   
      public
         function 
__constructauthenticate $auth$path ) {
         
            
$pre_head = (string)$auth;
            
$pre_head str_replace('{METHOD}''PROPFIND'$pre_head);
            
$pre_head str_replace('{path}'$path$pre_head);
            
            
$lines = array();
            
$lines[] = $pre_head;
            
$lines[] = 'Depth: 1';
            
$lines[] = 'Content-type: text/xml';
            
            
$xml[] = '<?xml version="1.0" encoding="utf-8" ?>';
            
$xml[] = '<A:propfind xmlns:A="DAV:">';
            
$xml[] = '   <A:allprop/>';
            
$xml[] = '</A:propfind>';
            
            
$content join("\r\n",$xml);
            
$length strlen($content);
            
            
$lines[] = 'Content-length: '.$length;
            
            
$this->setCommand(array(join("\r\n"$lines), $content), "\r\n\r\n");
         
         }
   
   } 
?>
rfc-kompatibel, nur reagiert der ( dein ) host nicht als wär' dort DAV installiert. Erwarten würde ich ein Unauthorized oder sonstwas, aber der rührt sich da herzlich wenig.

Achja, hier die ganzen Backslashes: \\\\\\\\\\\\\\\\\ hab die stellen wo die hingehörn mit nem ~ markiert :P

Falls sich wer wundert, nein die Command-Klassen bleiben nicht so *g*
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (19.09.2011 um 06:06 Uhr). Grund: SabreDAV-Host hinzugefügt.
tr0y ist gerade online   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.09.2011, 10:44  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

thx für Dein Engagement.

Hab dort angerufen.

Die stellen die Verbingung wohl per Java her.

Und verwenden dabei:
http://jakarta.apache.org/slide/ - most-recent-2.Orc1

Kenn mich leider nicht so gut aus in Java.

Vielleicht kannst daraus irgendwelche Infos rausziehn.
Vor allem würd mich eben interessieren warum die Prüfmethoden
der von mir getesteten PHP-Klassen ergeben, daß es sich nicht um einen
webdav-Server handelt.

So was wär natürlich auch toll:
http://php-webdav.pureftpd.org/project/php-webdav

PHP-Code:
webdav_connect('http://webdav.example.com/dav''davuser''davpassword');
$a webdav_get('/my/nice/object.txt');
webdav_put('/your/nice/thing.txt'$data);
webdav_unlink('/unwanted_resource.txt');
webdav_rename('/dir/old_name''/dir/new_name');
webdav_copy('/dir/orig_dir''/dir/new_dir'TRUE);
webdav_close(); 
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

Geändert von Koala (20.09.2011 um 11:00 Uhr).
Koala ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SoapClient -> Ändern der Request Struktur, sinnvoll, möglich? Nico PHP-Fortgeschrittene 6 13.05.2011 12:17
[Erledigt] Mehrere DIV Container mit einem Klick ändern (mit mehreren Request Aufrufe Lebenssonde JavaScript, Ajax und mehr 11 26.08.2010 09:01
curl request ohne antwort abzuwarten devil13 PHP-Fortgeschrittene 9 04.08.2010 16:31
NUSOAP Request und Problem mit assoziativen Arrays tuxnisi PHP-Fortgeschrittene 2 11.04.2010 15:31
[Erledigt] leeres request trotz übergebenen Daten AJAX mupilz JavaScript, Ajax und mehr 6 06.04.2010 06:55
WebDAV root66 PHP-Fortgeschrittene 1 18.03.2010 18:32
http_class verwenden hans213 PHP Tipps 2009 27 15.01.2010 03:07
WebDAV Auth Digest dunst0 Server, Hosting und Workstations 1 17.09.2009 22:52
[Erledigt] AJAX interpretRequest läuft nur mit alert() Buschdieb JavaScript, Ajax und mehr 14 26.08.2009 14:04
WebDav vs. FTP Thalo Off-Topic Diskussionen 4 10.07.2009 00:15
Lauftext nach ajax request ?!?! 8eww JavaScript, Ajax und mehr 11 25.04.2009 12:41
GET Request in Datei speichern noreux PHP Tipps 2008 5 11.11.2008 20:09
[Erledigt] PHP5: Request Parameter werden nicht korrekt ausgegeben dmecir PHP Tipps 2008 11 20.08.2008 17:37
[Erledigt] HTTP Request absetzen und Antwort auswerten PHP-Fortgeschrittene 1 02.07.2005 13:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php curl -x propfind, webdav sabredav howto deutsch, sabredav log operation, sabredav base64, pureftpd keep alive, sabredav authorisation, php webdav client https, ajax request landet im falschen div, php curl webdav, demo.sabredav.org unauthorised, sabredav 401 unauthorized, php webdav_connect port, webdav_connect php port, webdav_connect, sabredav exception not authenticated, sabredav tutorial deutsch, webdav propfind bad request, webdav bad request sabredav, sabredav propfind webdav, sabredav webdav client

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum