apache 上的檔案系統 webdav

12/7/11

 

Webdav:

 

webdav 全名是 Web-based Distributed Authoring and Versioning.
它是 HTTP 協定的其中一種擴充來.
我們可以用它來實現在 Web Server 裡上載, 下載及直接修改檔案.

這功能相當實用, 有了它後, 修改檔案就不再需要經 FTP 了.

 

在 Apache2.2 上想啟用此功能, 必先要啟用有關模組

啟用模組:

a2enmod dav
a2enmod dav_fs

# a2enmod 是用來啟用 module 的指令
# dav_fs 是依賴 dav 去提供 webdav 的功能

修改主機設定:

在某個想啟用 Webdav 的 VirtualHost 的 configure file 加入以下內容

############ Webdav Configure ############
    Alias /webdav /var/www/datahunter.org
    <Location /webdav>
        DAV On
        AuthType Basic
        AuthName "webdav"
        AuthUserFile /var/www/pw/webdav.pw
        Require valid-user
    </Location>
################ END ################

建立認證檔:

htpasswd -c /var/www/pw/passwd.dav datahunter
chown datahunter:www-data /var/www/pw/webdav.pw
chmod 640 /var/www/pw/passwd.dav

重開 apache:

/etc/init.d/apache2 force-reload


 

Linux上的 webdav client

cadaver 是 linux console 上的 webdav clinet

安裝:

apt-get install cadaver

用法:

cadaver http://datahunter.org/webdav/
Authentication required for webdav on server `datahunter.org':
Username: datahunter
Password:
dav:/webdav/> 

它的操作方式與 ftp 差不多 ~

支持有以下指令:

 ls         cd         pwd        put        get        mget       mput
 edit       less       mkcol      cat        delete     rmcol      copy
 move       lock       unlock     discover   steal      showlocks  version
 checkin    checkout   uncheckout history    label      propnames  chexec
 propget    propdel    propset    search     set        open       close
 echo       quit       unset      lcd        lls        lpwd       logout
 help       describe   about
Aliases: rm=delete, mkdir=mkcol, mv=move, cp=copy, more=less, quit=exit=bye

 


Window Xp 上的 webdav client

由於 Xp 上的 webdav 有兩個模式存在

1. Microsoft-WebDAV-MiniRedir/5.1.2600
2. Microsoft Data Access Internet Publishing Provider DAV 1.1

只有 方式2 才已正常地用 apache 的 webdav, 方式1 就永遠卡在 login 畫面 -______-

由於在 Xp_Sp3 上要 map driver 已不能用 "#" 或 ":80" 等手段去強制用 方式2 了

所以要在 apache 上下工功才得

apt-get install libapache2-mod-encoding
# encoding 不是 apache 本身有的 module 來

啟用 encoding 及 headers 等 module:

a2enmod encoding
a2enmod headers

在 config file 加入以下設定:

################# Broken WebDAV for Windows XP ###############
#
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS" redirect-carefully
#
<IfModule mod_headers.c>
    Header add MS-Author-Via "DAV"
</IfModule>
#
<IfModule mod_encoding.c>
    EncodingEngine on
    NormalizeUsername on
</IfModule>
#
############################END########################

最後重開 apache:

/etc/init.d/apache2 force-reload

那就可以成功 login 了 ~~

========================================

在中文方面, M$ 的 webdav client 真係唔得

一直都是亂碼, 如果加入以下 config

<IfModule mod_encoding.c>
    EncodingEngine on
    NormalizeUsername on
    SetServerEncoding UTF-8
    DefaultClientEncoding UTF-8 big5 gb18030
    AddClientEncoding "Microsoft-WebDAV*" UTF-8 big5
    AddClientEncoding "cadaver/" UTF-8 big5
</IfModule>

那就可以正常地在 "font-end" 顯示中文,

不過在 putty 及 winscp 就到佢亂碼

Creative Commons license icon Creative Commons license icon