HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (http://www.howtoforge.com/forums/index.php)
-   Tips/Tricks/Mods (http://www.howtoforge.com/forums/forumdisplay.php?f=19)
-   -   Webdav + quota access to web's root patch (http://www.howtoforge.com/forums/showthread.php?t=18066)

krakoukas 5th December 2007 18: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 www.mydomain.com, for account like userhost.userdomain.com you will get access to your webdav account through https://www.mydomain.com/userhost.userdomain.com/

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

Code:

 
  $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
        </IfModule>
        ";

        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
                <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                        Require user ".$web["web_host"].".".$web["web_domain"]."
                </Limit>
        </Location>";
  }
$webdav .= "
</VirtualHost>";
}
  if(!empty($webs)){
  $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/config.inc.php

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

Quote:

# 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
wget http://leche.goodcrew.ne.jp/webdav/w...-quota-2.3.txt
wget http://archive.apache.org/dist/httpd...-2.0.55.tar.gz
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
make

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

# 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
Quote:

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

For SSL certificate:
Quote:

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 19:34

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

krakoukas 2nd January 2008 15: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 27th August 2008 23: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
http://forums.debian.net/viewtopic.p...f9c3953a5e9acd
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 10:26

Please take a look at falkos howto for webdav:

http://www.howtoforge.com/setting-up...e2-debian-etch

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

radim_h 8th September 2008 18: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 11:09.

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