--- a/.hgignore Mon Jul 18 17:03:15 2011 +0200
+++ b/.hgignore Wed Jul 20 11:38:40 2011 +0200
@@ -2,5 +2,5 @@
^TODO$
^ius-dav-htpasswd.conf$
-^_build
+^_build|blib
^Build$
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/.hgtags Wed Jul 20 11:38:40 2011 +0200
@@ -0,0 +1,1 @@
+460f4d75e40385570f12cc950dc4ed013c4b0793 0.2
--- a/README Mon Jul 18 17:03:15 2011 +0200
+++ b/README Wed Jul 20 11:38:40 2011 +0200
@@ -15,6 +15,8 @@
# perl ./Build.PL && ./Build test && ./Build install
+ * configuration
+
# visudo
[...]
@@ -23,9 +25,12 @@
[...]
- # $EDITOR /etc/apache2/sites-available/ius-dav-htpasswd # see ssl-vhost-apache-example.conf
+ # a2enmod dav_fs
+ # $EDITOR /etc/apache2/sites-available/ius-dav # see ssl-dav-vhost-apache-example.conf
+ # $EDITOR /etc/apache2/sites-available/ius-dav-htpasswd # see ssl-admin-vhost-apache-example.conf
# htpasswd [-c] $PREFIX/etc/ius-dav-htpasswd/htpasswd.admin ius-dav-htpasswd-admin
# htpasswd -c $PREFIX/etc/ius-dav-htpasswd/htpasswd.dav ius-dav-htpasswd-master # when using a master user
- # ln -s /usr/local/bin/ius-dav-htuserexpiry /etc/cron.daily/
+ # ln -s $PREFIX/bin/ius-dav-htuserexpiry /etc/cron.daily/
+ # $EDITOR /path/to/ius-dav-htpasswd.conf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TODO Wed Jul 20 11:38:40 2011 +0200
@@ -0,0 +1,7 @@
+* write documentation for installation on non vhost/without itk
+* check for presence of at least one configuration file?
+* find a better name (passwd something?)
+* dont hardcode configuration snippets
+* move config snippets to /var or /srv?
+* move dav base directory to /var?
+* do actually return the $rc in userexpiry?
--- a/lib/Ius/Dav/Htpasswd.pm Mon Jul 18 17:03:15 2011 +0200
+++ b/lib/Ius/Dav/Htpasswd.pm Wed Jul 20 11:38:40 2011 +0200
@@ -36,7 +36,7 @@
use Exporter;
# set the version for version checking
- $VERSION = 0.1;
+ $VERSION = 0.2;
@ISA = qw(Exporter);
@EXPORT_OK = qw(readconfig mkpasswd useradd userdel userexpiry usage);
@@ -68,7 +68,7 @@
) or die 'Failed to read config!';
$conf->file($_)
for grep -e, map "$_/ius-dav-htpasswd.conf",
- qw(/etc/ius-dav-htpasswd /usr/local/etc/ius-dav-htpasswd ~/.ius-dav-htpasswd ./ius-dav-htpasswd);
+ qw(/etc/ius-dav-htpasswd /usr/local/etc/ius-dav-htpasswd ~/.ius-dav-htpasswd .);
return { $conf->varlist('.') };
}
@@ -139,7 +139,9 @@
AuthName "$user"
AuthUserFile "$htpasswd_file"
Require user $master_user $user
+ Options +Indexes
</Directory>
+# vi:ft=apache
EOC
close C;
@@ -288,13 +290,13 @@
=head1 FILES
-F</etc/dav-htpasswd.conf>
+F</etc/ius-dav-htpasswd/ius-dav-htpasswd.conf>
-F</usr/local/etc/dav-htpasswd.conf>
+F</usr/local/etc/ius-dav-htpasswd/ius-dav-htpasswd.conf>
-F<~/dav-htpasswd.conf>
+F<~/.ius-dav-htpasswd/ius-dav-htpasswd.conf>
-F<./dav-htpasswd.conf>
+F<./ius-dav-htpasswd.conf>
F</srv/dav>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl-admin-vhost-apache-example.conf Wed Jul 20 11:38:40 2011 +0200
@@ -0,0 +1,63 @@
+# replace $PREFIX (usually with /usr or /usr/local)
+<IfModule mod_ssl.c>
+# note that you will need a wildcard certificate if you want namebased virtual
+# hosts + ssl
+<VirtualHost *:443>
+
+ DocumentRoot "$PREFIX/lib/ius-dav-htpasswd/cgi-bin"
+ AssignUserId "ius-dav-htpasswd" "ius-dav-htpasswd"
+
+ ServerAdmin webmaster@localhost
+ ServerName ius-dav-htpasswd.domain.tld
+
+ ErrorLog /var/log/apache2/error.log
+ LogLevel warn
+ CustomLog /var/log/apache2/ius-dav-htpasswd.domain.tld/ssl_access.log combined
+
+ SSLEngine on
+ SSLCertificateFile /etc/ssl/certs/wildcard-certificate.pem
+ SSLCertificateKeyFile /etc/ssl/private/key-for-wildcard-certificate.pem
+
+ # SSL Protocol Adjustments:
+ # The safe and default but still SSL/TLS standard compliant shutdown
+ # approach is that mod_ssl sends the close notify alert but doesn't wait for
+ # the close notify alert from client. When you need a different shutdown
+ # approach you can use one of the following variables:
+ # o ssl-unclean-shutdown:
+ # This forces an unclean shutdown when the connection is closed, i.e. no
+ # SSL close notify alert is send or allowed to received. This violates
+ # the SSL/TLS standard but is needed for some brain-dead browsers. Use
+ # this when you receive I/O errors because of the standard approach where
+ # mod_ssl sends the close notify alert.
+ # o ssl-accurate-shutdown:
+ # This forces an accurate shutdown when the connection is closed, i.e. a
+ # SSL close notify alert is send and mod_ssl waits for the close notify
+ # alert of the client. This is 100% SSL/TLS standard compliant, but in
+ # practice often causes hanging connections with brain-dead browsers. Use
+ # this only for browsers where you know that their SSL implementation
+ # works correctly.
+ # Notice: Most problems of broken clients are also related to the HTTP
+ # keep-alive facility, so you usually additionally want to disable
+ # keep-alive for those clients, too. Use variable "nokeepalive" for this.
+ # Similarly, one has to force some clients to use HTTP/1.0 to workaround
+ # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
+ # "force-response-1.0" for this.
+ BrowserMatch ".*MSIE.*" \
+ nokeepalive ssl-unclean-shutdown \
+ downgrade-1.0 force-response-1.0
+
+ # local cgi scripts
+ <Directory "$PREFIX/lib/ius-dav-htpasswd/cgi-bin">
+ Order Deny,Allow
+ Deny from all
+ Allow from 127.0.0.0/8
+ AuthType "Basic"
+ AuthName "ius-dav-htpasswd"
+ AuthUserFile "/path/to/ius-dav-admin-htpasswd"
+ Require valid-user
+ Options +ExecCGI
+ SetHandler cgi-script
+ </Directory>
+
+</VirtualHost>
+</IfModule>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl-dav-vhost-apache-example.conf Wed Jul 20 11:38:40 2011 +0200
@@ -0,0 +1,58 @@
+# replace $PREFIX (usually with /usr or /usr/local)
+<IfModule mod_ssl.c>
+# note that you will need a wildcard certificate if you want namebased virtual
+# hosts + ssl
+<VirtualHost *:443>
+
+ DocumentRoot "/path/to/dav-base-directory"
+ AssignUserId "ius-dav" "ius-dav"
+
+ ServerAdmin webmaster@localhost
+ ServerName ius-dav.domain.tld
+
+ ErrorLog /var/log/apache2/error.log
+ LogLevel warn
+ CustomLog /var/log/apache2/ius-dav.domain.tld/ssl_access.log combined
+
+ SSLEngine on
+ SSLCertificateFile /etc/ssl/certs/wildcard-certificate.pem
+ SSLCertificateKeyFile /etc/ssl/private/key-for-wildcard-certificate.pem
+
+ # SSL Protocol Adjustments:
+ # The safe and default but still SSL/TLS standard compliant shutdown
+ # approach is that mod_ssl sends the close notify alert but doesn't wait for
+ # the close notify alert from client. When you need a different shutdown
+ # approach you can use one of the following variables:
+ # o ssl-unclean-shutdown:
+ # This forces an unclean shutdown when the connection is closed, i.e. no
+ # SSL close notify alert is send or allowed to received. This violates
+ # the SSL/TLS standard but is needed for some brain-dead browsers. Use
+ # this when you receive I/O errors because of the standard approach where
+ # mod_ssl sends the close notify alert.
+ # o ssl-accurate-shutdown:
+ # This forces an accurate shutdown when the connection is closed, i.e. a
+ # SSL close notify alert is send and mod_ssl waits for the close notify
+ # alert of the client. This is 100% SSL/TLS standard compliant, but in
+ # practice often causes hanging connections with brain-dead browsers. Use
+ # this only for browsers where you know that their SSL implementation
+ # works correctly.
+ # Notice: Most problems of broken clients are also related to the HTTP
+ # keep-alive facility, so you usually additionally want to disable
+ # keep-alive for those clients, too. Use variable "nokeepalive" for this.
+ # Similarly, one has to force some clients to use HTTP/1.0 to workaround
+ # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
+ # "force-response-1.0" for this.
+ BrowserMatch ".*MSIE.*" \
+ nokeepalive ssl-unclean-shutdown \
+ downgrade-1.0 force-response-1.0
+
+ # no access to the webdav base directory is required
+ <Directory "/path/to/dav-base-directory">
+ Order Deny,Allow
+ Deny from all
+ </Directory>
+ # /usr/local/etc/ius-dav-htpasswd or /etc/ius-dav-htpasswd for example
+ Include "/path/to/ius-dav-htpasswd-conf-dir/apache.d/*.conf"
+
+</VirtualHost>
+</IfModule>
--- a/ssl-vhost-apache-example.conf Mon Jul 18 17:03:15 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-# replace $PREFIX (usually with /usr or /usr/local)
-<IfModule mod_ssl.c>
-# note that you will need a wildcard certificate if you want namebased virtual
-# hosts + ssl
-<VirtualHost *:443>
-
- DocumentRoot "$PREFIX/lib/ius-dav-htpasswd/cgi-bin"
- AssignUserId "ius-dav-htpasswd" "ius-dav-htpasswd"
-
- ServerAdmin webmaster@localhost
- ServerName ius-dav-htpasswd.domain.tld
-
- ErrorLog /var/log/apache2/error.log
- LogLevel warn
- CustomLog /var/log/apache2/ius-dav-htpasswd.domain.tld/ssl_access.log combined
-
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/wildcard-certificate.pem
- SSLCertificateKeyFile /etc/ssl/private/key-for-wildcard-certificate.pem
-
- # SSL Protocol Adjustments:
- # The safe and default but still SSL/TLS standard compliant shutdown
- # approach is that mod_ssl sends the close notify alert but doesn't wait for
- # the close notify alert from client. When you need a different shutdown
- # approach you can use one of the following variables:
- # o ssl-unclean-shutdown:
- # This forces an unclean shutdown when the connection is closed, i.e. no
- # SSL close notify alert is send or allowed to received. This violates
- # the SSL/TLS standard but is needed for some brain-dead browsers. Use
- # this when you receive I/O errors because of the standard approach where
- # mod_ssl sends the close notify alert.
- # o ssl-accurate-shutdown:
- # This forces an accurate shutdown when the connection is closed, i.e. a
- # SSL close notify alert is send and mod_ssl waits for the close notify
- # alert of the client. This is 100% SSL/TLS standard compliant, but in
- # practice often causes hanging connections with brain-dead browsers. Use
- # this only for browsers where you know that their SSL implementation
- # works correctly.
- # Notice: Most problems of broken clients are also related to the HTTP
- # keep-alive facility, so you usually additionally want to disable
- # keep-alive for those clients, too. Use variable "nokeepalive" for this.
- # Similarly, one has to force some clients to use HTTP/1.0 to workaround
- # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
- # "force-response-1.0" for this.
- BrowserMatch ".*MSIE.*" \
- nokeepalive ssl-unclean-shutdown \
- downgrade-1.0 force-response-1.0
-
- # local cgi scripts
- <Directory "$PREFIX/lib/ius-dav-htpasswd/cgi-bin">
- Order Deny,Allow
- Deny from all
- Allow from 127.0.0.0/8
- AuthType "Basic"
- AuthName "ius-dav-htpasswd"
- AuthUserFile "/path/to/ius-dav-admin-htpasswd"
- Require valid-user
- SetHandler cgi-script
- </Directory>
-
-</VirtualHost>
-</IfModule>