HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (
-   Tips/Tricks/Mods (
-   -   Webdav + quota access to web's root patch (

krakoukas 5th December 2007 19:20

Webdav + quota access to web's root patch
Here is my contribution for giving a webdav access to ISPconfig web's roots.
It consists in a modification of /root/ispconfig/scripts/lib/config.lib.php (after line 1660 in 2.2.18)

If your ISPconfig server hostname is, for account like you will get access to your webdav account through

You will need a database for webdav user mysql_auth mechanism:
DB: webdav, Table: users (login, pass)


  $mod->tpl->assign( array( FP_RESOURCE_CONFIG => $fp_resource_config,
                      FP_ACCESS_CONFIG => $fp_access_config));
  $mod->tpl->parse(TABLE, table);

  HERE Add webdav ssl access to /web directories
  if ($go_info["server"]["webdav"] == 1) {
  $myserver = trim(shell_exec("hostname -f"), "\r\n");
  $webdav = "
<VirtualHost ".$web["web_ip"].":443>
        ServerName ".$myserver.":443
        ServerAdmin webmaster@".$web["web_domain"]."
        DocumentRoot /var/www/sharedip
        SetEnvIf User-Agent \".*MSIE.*\" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        <IfModule mod_ssl.c>
                NameVirtualHost ".$myserver.":443
                SSLEngine on
                SSLCertificateFile /etc/apache2/ssl/new.cert.cert
                SSLCertificateKeyFile /etc/apache2/ssl/new.cert.key

        foreach ($webs as $web)
        $webdav_root = $mod->system->server_conf["server_path_httpd_root"]."/"."web".$web["doc_id"]."/"."web";
        $my_quota = $web["web_speicher"]."000";
        $webdav .= "Alias /".$web["web_host"].".".$web["web_domain"]." ".$webdav_root;
        $mod->log("Update QUOTA for ".$web["web_host"].".".$web["web_domain"].": ".$web["web_speicher"]." Mo - Webdav access ".$webdav_root);

        $webdav .= "
        <Location /".$web["web_host"].".".$web["web_domain"].">
                DAV On
                AddType text/plain .html
                AddType text/plain .htm
                AddType text/plain .js
                AddType text/plain .css
                AddType text/plain .xml
                AddType text/plain .php
                DAVSATMaxAreaSize ".$my_quota."
                AuthType Basic
                AuthName \"Data Webdav Access\"
                Auth_MySQL_DB webdav
                Auth_MySQL_Password_Table users
                Auth_MySQL_Username_Field login
                Auth_MySQL_Password_Field pass
                Auth_MySQL_Empty_Passwords off
                Auth_MySQL_Encryption_Types PHP_MD5
                        Require user ".$web["web_host"].".".$web["web_domain"]."
$webdav .= "
  $vhost_text = $mod->tpl->fetch();
  // ICI Add Webdav to vhost
  if ($go_info["server"]["webdav"] == 1) $vhost_text .= $webdav;
  } else {
  $vhost_text = "";

It modifies your vhost file if you add : $go_info["server"]["webdav"] = 1;
in /home/admispconfig/ispconfig/lib/

For mod_dav quota and auth_mysql apache2 needs to be patched and right modules have to be loaded and configure:


# Normal Install apache2 and required modules
apt-get install apache2 libapache-mod-dav libapache2-mod-auth-mysql apache2-doc

# Compile quota patched webdav module
cd /usr/src
tar -xvzf httpd-2.0.55.tar.gz
cd httpd-2.0.55
patch -p2 < ../webdav-2.0.55-quota-2.3.txt
./configure --enable-modules=most --enable-mods-shared=all

# Replace mod_dav module with patched one
mv /usr/lib/apache2/modules/ /usr/lib/apache2/modules/
mv /usr/lib/apache2/modules/ /usr/lib/apache2/modules/
cp ./modules/dav/main/.libs/ /usr/lib/apache2/modules/
cp ./modules/dav/fs/.libs/ /usr/lib/apache2/modules/

# Activate apache webdav module
ln -s /etc/apache2/mods-available/dav_fs.conf /etc/apache2/mods-enabled/dav_fs.conf
ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/dav_fs.load
ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/dav.load

# Enable and Configure auth_mysql
ln -s /etc/apache2/mods-available/auth_mysql.load /etc/apache2/mods-enabled/auth_mysql.load
ln -s /etc/apache2/mods-available/auth_mysql.conf /etc/apache2/mods-enabled/auth_mysql.conf

# Give database reference (user/password) for auth_mysql
vi /etc/apache2/mods-available/auth_mysql.conf

Auth_MySQL_Info localhost davdbuser davdbpasswd
/etc/init.d/apache2 restart

For SSL certificate:

cd /etc/apache2/ssl/
openssl req -new > new.cert.csr
# Remove password
openssl rsa -in privkey.pem -out new.cert.key
# Key signing by cert
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 3650
chmod 400 /etc/apache2/ssl/new.cert.key
Now have fun and Enjoy!

PS: If your accounts always have ISPconfig users, you can use sys_user database for mysql_auth, and modify a little this script...

till 29th December 2007 20:34

I've added the patch to the stable and unstable branch of ISPConfig.

krakoukas 2nd January 2008 16:53

Hi, good news!
Did you include apache2 webdav quota patch and module compilation during ispconfig install, or should it be done manually?
Happy New Year to Everyone

radim_h 28th August 2008 00:28

When trying to install
apt-get install libapache2-mod-auth-mysql on Debian Etch, i'm getting message
Package libapache2-mod-auth-mysql is not available, but is referred to by another package.
According this page
it seems that this package is removed from repository. Do you have idea if there is possibility install webdav without it?

till 28th August 2008 11:26

Please take a look at falkos howto for webdav:

He used the libapache2-mod-auth-mysql package from debian lenny successfully on etch.

radim_h 8th September 2008 19:21

well im bit scared on using lenny libraries on my Etch machine as it want to update lot of files (abou 120MB) what do you think about use oldstable ?

EDIT: also dependency problems :(

All times are GMT +2. The time now is 09:10.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.