From: Ivan Kohler Date: Wed, 7 Aug 2013 08:24:52 +0000 (-0700) Subject: apache 2.4 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=a9e7226724fb8eba367f8d4781ddec1ac4cf97d6 apache 2.4 --- diff --git a/FS/FS/AuthCookieHandler24.pm b/FS/FS/AuthCookieHandler24.pm new file mode 100644 index 000000000..fa24890cc --- /dev/null +++ b/FS/FS/AuthCookieHandler24.pm @@ -0,0 +1,46 @@ +package FS::AuthCookieHandler24; +use base qw( Apache2::AuthCookie ); + +use strict; +use FS::UID qw( adminsuidsetup preuser_setup ); +use FS::CurrentUser; +use FS::Auth; + +sub authen_cred { + my( $self, $r, $username, $password ) = @_; + + preuser_setup(); + + my $info = {}; + + unless ( FS::Auth->authenticate($username, $password, $info) ) { + warn "failed auth $username from ". $r->useragent_ip. "\n"; + return undef; + } + + warn "authenticated $username from ". $r->useragent_ip. "\n"; + + FS::CurrentUser->load_user( $username, + 'autocreate' => FS::Auth->auth_class->autocreate, + %$info, + ); + + FS::CurrentUser->new_session; +} + +sub authen_ses_key { + my( $self, $r, $sessionkey ) = @_; + + preuser_setup(); + + my $curuser = FS::CurrentUser->load_user_session( $sessionkey ); + + unless ( $curuser ) { + warn "bad session $sessionkey from ". $r->useragent_ip. "\n"; + return undef; + } + + $curuser->username; +} + +1; diff --git a/FS/MANIFEST b/FS/MANIFEST index 7e61868a9..803c521db 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -27,6 +27,7 @@ bin/freeside-torrus-srvderive FS.pm FS/AccessRight.pm FS/AuthCookieHandler.pm +FS/AuthCookieHandler24.pm FS/Auth/external.pm FS/Auth/internal.pm FS/Auth/legacy.pm @@ -707,3 +708,13 @@ FS/part_pkg_currency.pm t/part_pkg_currency.t FS/cust_payby.pm t/cust_payby.t +FS/vend_main.pm +t/vend_main.t +FS/vend_class.pm +t/vend_class.t +FS/vend_bill.pm +t/vend_bill.t +FS/vend_pay.pm +t/vend_pay.t +FS/vend_bill_pay.pm +t/vend_bill_pay.t diff --git a/Makefile b/Makefile index 6ad9f8cc1..7cf669870 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,11 @@ MASONDATA = ${FREESIDE_CACHE}/masondata #package maintainers DIST_CONF = ${FREESIDE_CONF}/default_conf +#mod_perl v2 1.999_22 on Apache 2.0 through 2.3 (Debian ancient through 7.x) +#APACHE_VERSION=2 +#Apache 2.4 (Debian 8.x) +APACHE_VERSION=2.4 + #deb FREESIDE_DOCUMENT_ROOT = /var/www/freeside #redhat, fedora, mandrake @@ -65,8 +70,11 @@ HTTPD_RESTART = /etc/init.d/apache2 restart #HTTPD_RESTART = /usr/local/apache/bin/apachectl stop; sleep 10; /usr/local/apache/bin/apachectl startssl #(an include directory, not a file, "Include /etc/apache/conf.d" in httpd.conf) +#debian unstable/8.0+, apache2.4 +APACHE_CONF = /etc/apache2/conf-available #deb (3.1+), apache2 -APACHE_CONF = /etc/apache2/conf.d +#APACHE_CONF = /etc/apache2/conf.d + INSSERV_OVERRIDE = /etc/insserv/overrides FREESIDE_RESTART = ${INIT_FILE} restart @@ -267,7 +275,7 @@ install-init: install-apache: [ -e ${APACHE_CONF}/freeside-base.conf ] && rm ${APACHE_CONF}/freeside-base.conf || true [ -d ${APACHE_CONF} ] && \ - ( install -o root -m 755 htetc/freeside-base2.conf ${APACHE_CONF} && \ + ( install -o root -m 755 htetc/freeside-base${APACHE_VERSION}.conf ${APACHE_CONF} && \ ( [ ${RT_ENABLED} -eq 1 ] && install -o root -m 755 htetc/freeside-rt.conf ${APACHE_CONF} || true ) && \ ( [ ${TORRUS_ENABLED} -eq 1 ] && install -o root -m 755 htetc/freeside-torrus.conf ${APACHE_CONF} || true ) && \ perl -p -i -e "\ @@ -276,6 +284,9 @@ install-apache: s'%%%MASON_HANDLER%%%'${MASON_HANDLER}'g; \ " ${APACHE_CONF}/freeside-*.conf \ ) || true + [ -d ${APACHE_CONF} ] && [ -x /usr/sbin/a2enconf ] && ( /usr/sbin/a2enconf freeside-base${APACHE_VERSION} ) || true + [ -d ${APACHE_CONF} ] && [ ${APACHE_VERSION} = '2.4' ] && [ -x /usr/sbin/a2disconf ] && ( /usr/sbin/a2disconf freeside-base2 ) || true + [ -d ${APACHE_CONF} ] && [ -x /usr/sbin/a2enconf ] && [ ${RT_ENABLED} -eq 1 ] && ( /usr/sbin/a2enconf freeside-rt ) || true [ -d ${INSSERV_OVERRIDE} ] && [ -x /sbin/insserv ] && ( install -o root -m 755 init.d/insserv-override-apache2 ${INSSERV_OVERRIDE}/apache2 && insserv -d ) || true install-selfservice: diff --git a/htetc/freeside-base2.4.conf b/htetc/freeside-base2.4.conf new file mode 100644 index 000000000..c4e93f839 --- /dev/null +++ b/htetc/freeside-base2.4.conf @@ -0,0 +1,74 @@ +PerlModule Apache2::compat + +#PerlModule Apache::DBI + +PerlModule HTML::Mason +PerlSetVar MasonArgsMethod CGI +PerlModule HTML::Mason::ApacheHandler + +PerlChildInitHandler "sub { srand }" + +PerlRequire "%%%MASON_HANDLER%%%" + +#Locale::SubCountry +# +AddDefaultCharset UTF-8 + +PerlModule FS::AuthCookieHandler24 +PerlAddAuthzProvider user FS::AuthCookieHandler24->authz_handler + +#XXX need to also work properly for installs w/o /freeside/ in path +PerlSetVar FreesideLoginScript /freeside/loginout/login.html + +#PerlSetVar FreesideEverSecure 1 +PerlSetVar FreesideHttpOnly 1 + + + + #work around Apache2::AuthCookie vs. mod_dir + DirectoryIndex disabled + Options -Indexes + #XXX need to also work properly for installs w/o /freeside/ in path + RewriteEngine On + RewriteBase /freeside/ + RewriteRule ^/?$ /freeside/index.html [L,R=301] + + AuthName Freeside + AuthType FS::AuthCookieHandler24 + PerlAuthenHandler FS::AuthCookieHandler24->authenticate + require valid-user + + + SetHandler perl-script + PerlHandler HTML::Mason + + + + + + AuthName Freeside + AuthType FS::AuthCookieHandler24 + SetHandler perl-script + PerlHandler FS::AuthCookieHandler24->login + + + + + Satisfy any + + + + + + Satisfy any + + + + + SetHandler perl-script + PerlHandler HTML::Mason + + + + Satisfy any +