case $apache_version in
2.2.*)
AC_MSG_RESULT([$apache_version (ok)])
+ apache_version=2.2
+ ;;
+ 2.4.*)
+ AC_MSG_RESULT([$apache_version (ok)])
+ apache_version=2.4
;;
*)
AC_MSG_RESULT([$apache_version (ignoring)])
AS_HELP_STRING([--with-apache-module-dir], [Apache modules dirs (for tests)]),
apache_module_dirs="$withval",
[apache_prefix=`dirname \`dirname $APACHE_HTTPD\``
- mpm=`$APACHE_HTTPD -V | sed -ne 's/^Server MPM: */-/p' | tr 'A-Z' 'a-z'`
+ mpm=`$APACHE_HTTPD -V -C "ServerName localhost" | sed -ne 's/^Server MPM: */-/p' | tr 'A-Z' 'a-z'`
# This only works with bash, but should fail harmlessly in sh
apache_module_dirs=`echo $apache_prefix/lib{64,}/{apache,apache2,http,http2,httpd}{$mpm,}{/modules,}`])
for dir in $apache_module_dirs; do
if test "$APACHE_HTTPD" != "no" -a -n "$APACHE_MODULE_DIR" -a -n "$APACHE_SSL_MODULE_DIR"; then
AC_DEFINE(HAVE_APACHE, 1, [Whether or not apache can be used for tests])
+ if test $apache_version = 2.2; then
+ AC_DEFINE(HAVE_APACHE_2_2, 1, [Apache is 2.2.x])
+ else
+ AC_DEFINE(HAVE_APACHE_2_4, 1, [Apache is 2.4.x])
+ fi
have_apache=1
if test -z "$APACHE_PHP_MODULE_DIR"; then
MISSING_REGRESSION_TEST_PACKAGES="$MISSING_REGRESSION_TEST_PACKAGES mod_php5"
fi
fi
AM_CONDITIONAL(HAVE_APACHE, test $have_apache = 1)
+AM_CONDITIONAL(HAVE_APACHE_2_2, test $apache_version = 2.2)
+AM_CONDITIONAL(HAVE_APACHE_2_4, test $apache_version = 2.4)
if test "$have_apache" = 1; then
AC_CHECK_PROGS(PHP, php php5)
AC_MSG_RESULT($have_php)
if test "$have_php" = yes; then
- AC_MSG_CHECKING([for xmlrpc-epi-php])
+ AC_MSG_CHECKING([for xmlrpc-php])
if $PHP --rf xmlrpc_server_create | grep -q "does not exist"; then
- have_xmlrpc_epi_php=no
+ have_xmlrpc_php=no
MISSING_REGRESSION_TEST_PACKAGES="$MISSING_REGRESSION_TEST_PACKAGES php-xmlrpc"
else
- have_xmlrpc_epi_php=yes
+ have_xmlrpc_php=yes
fi
- AC_MSG_RESULT($have_xmlrpc_epi_php)
+ AC_MSG_RESULT($have_xmlrpc_php)
fi
fi
AC_SUBST(IF_HAVE_PHP)
-AM_CONDITIONAL(HAVE_XMLRPC_EPI_PHP, test "$have_xmlrpc_epi_php" = yes)
+AM_CONDITIONAL(HAVE_XMLRPC_PHP, test "$have_xmlrpc_php" = yes)
AC_PATH_PROG(CURL, curl, no)
if test "$CURL" != no; then
po/Makefile.in
po/Makefile
tests/Makefile
- tests/httpd.conf
docs/Makefile
docs/reference/Makefile
libsoup/soup-version.h
if HAVE_CURL
CURL_TESTS = forms-test server-auth-test
endif
-if HAVE_XMLRPC_EPI_PHP
+if HAVE_XMLRPC_PHP
XMLRPC_TESTS = xmlrpc-test xmlrpc-server-test
endif
+if HAVE_APACHE
+if HAVE_APACHE_2_2
+httpd_conf_in = httpd.conf.22.in
+else
+httpd_conf_in = httpd.conf.24.in
+endif
+httpd.conf: $(httpd_conf_in)
+ $(AM_V_GEN) sed -e 's,[@]srcdir@,$(srcdir),' \
+ -e 's,[@]builddir@,$(builddir),' \
+ -e 's,[@]APACHE_MODULE_DIR@,$(APACHE_MODULE_DIR),' \
+ -e 's,[@]APACHE_PHP_MODULE_DIR@,$(APACHE_PHP_MODULE_DIR),' \
+ -e 's,[@]APACHE_PHP_MODULE@,$(APACHE_PHP_MODULE),' \
+ -e 's,[@]IF_HAVE_PHP@,$(IF_HAVE_PHP),' \
+ -e 's,[@]APACHE_SSL_MODULE_DIR@,$(APACHE_SSL_MODULE_DIR),' \
+ $< > $@ || rm -f $@
+
+BUILT_SOURCES = httpd.conf
+endif
+
soup-tests.gresource: soup-tests.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/soup-tests.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) $<
EXTRA_DIST = \
htdigest \
htpasswd \
- httpd.conf.in \
+ httpd.conf.22.in \
+ httpd.conf.24.in \
index.txt \
libsoup.supp \
soup-tests.gresource.xml \
xmlrpc-server.php \
$(RESOURCES)
-DISTCLEANFILES = soup-tests.gresource
+DISTCLEANFILES = soup-tests.gresource httpd.conf
if MISSING_REGRESSION_TEST_PACKAGES
check-local: check-TESTS
--- /dev/null
+# http.conf used for testing auth-test
+
+ServerName 127.0.0.1
+Listen 127.0.0.1:47524
+
+PidFile @builddir@/httpd.pid
+DefaultRuntimeDir @builddir@
+DocumentRoot @srcdir@
+
+# The tests shut down apache with "graceful-stop", because that makes
+# it close its listening socket right away. But it seems to sometimes
+# result in apache never fully exiting. This fixes that.
+GracefulShutdownTimeout 1
+
+# Change this to "./error.log" if it's failing and you don't know why
+ErrorLog /dev/null
+
+LoadModule mpm_prefork_module @APACHE_MODULE_DIR@/mod_mpm_prefork.so
+LoadModule alias_module @APACHE_MODULE_DIR@/mod_alias.so
+LoadModule auth_basic_module @APACHE_MODULE_DIR@/mod_auth_basic.so
+LoadModule auth_digest_module @APACHE_MODULE_DIR@/mod_auth_digest.so
+LoadModule authn_core_module @APACHE_MODULE_DIR@/mod_authn_core.so
+LoadModule authn_file_module @APACHE_MODULE_DIR@/mod_authn_file.so
+LoadModule authz_core_module @APACHE_MODULE_DIR@/mod_authz_core.so
+LoadModule authz_host_module @APACHE_MODULE_DIR@/mod_authz_host.so
+LoadModule authz_user_module @APACHE_MODULE_DIR@/mod_authz_user.so
+LoadModule dir_module @APACHE_MODULE_DIR@/mod_dir.so
+LoadModule mime_module @APACHE_MODULE_DIR@/mod_mime.so
+@IF_HAVE_PHP@LoadModule php5_module @APACHE_PHP_MODULE_DIR@/@APACHE_PHP_MODULE@
+LoadModule proxy_module @APACHE_MODULE_DIR@/mod_proxy.so
+LoadModule proxy_http_module @APACHE_MODULE_DIR@/mod_proxy_http.so
+LoadModule proxy_connect_module @APACHE_MODULE_DIR@/mod_proxy_connect.so
+LoadModule ssl_module @APACHE_SSL_MODULE_DIR@/mod_ssl.so
+LoadModule unixd_module @APACHE_SSL_MODULE_DIR@/mod_unixd.so
+
+DirectoryIndex index.txt
+TypesConfig /dev/null
+AddType application/x-httpd-php .php
+Redirect permanent /redirected /index.txt
+
+# Proxy #1: unauthenticated
+Listen 127.0.0.1:47526
+<VirtualHost 127.0.0.1:47526>
+ ProxyRequests On
+ AllowCONNECT 47525
+
+ # Deny proxying by default
+ <Proxy *>
+ Require all denied
+ </Proxy>
+
+ # Allow local http connections
+ <Proxy http://127.0.0.1*>
+ Require all granted
+ </Proxy>
+
+ # Allow CONNECT to local https port
+ <Proxy 127.0.0.1:47525>
+ Require all granted
+ </Proxy>
+
+ # Deny non-proxy requests
+ <Directory />
+ Require all denied
+ </Directory>
+</VirtualHost>
+
+# Proxy #2: authenticated
+Listen 127.0.0.1:47527
+<VirtualHost 127.0.0.1:47527>
+ ProxyRequests On
+ AllowCONNECT 47525
+
+ # Deny proxying by default
+ <Proxy *>
+ Require all denied
+ </Proxy>
+
+ # Allow local http connections with authentication
+ <Proxy http://127.0.0.1:47524*>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require valid-user
+ </Proxy>
+
+ # Allow CONNECT to local https port with authentication
+ <Proxy 127.0.0.1:47525>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require valid-user
+ </Proxy>
+
+ # Fail non-proxy requests
+ <Directory />
+ Require all denied
+ </Directory>
+</VirtualHost>
+
+# Proxy #3: unauthenticatable-to
+Listen 127.0.0.1:47528
+<VirtualHost 127.0.0.1:47528>
+ ProxyRequests On
+ AllowCONNECT 47525
+
+ # Deny proxying by default
+ <Proxy *>
+ Require all denied
+ </Proxy>
+
+ # Allow local http connections with authentication
+ <Proxy http://127.0.0.1:47524*>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require user no-such-user
+ </Proxy>
+
+ # Allow CONNECT to local https port with authentication
+ <Proxy 127.0.0.1:47525>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require user no-such-user
+ </Proxy>
+
+ # Fail non-proxy requests
+ <Directory />
+ Require all denied
+ </Directory>
+</VirtualHost>
+
+
+# SSL setup
+<IfModule mod_ssl.c>
+ Listen 127.0.0.1:47525
+
+ <VirtualHost 127.0.0.1:47525>
+ SSLEngine on
+
+ SSLCertificateFile @srcdir@/test-cert.pem
+ SSLCertificateKeyFile @srcdir@/test-key.pem
+
+ </VirtualHost>
+</IfModule>
+
+
+# Basic auth tests
+Alias /Basic/realm1/realm2/realm1 @srcdir@
+Alias /Basic/realm1/realm2 @srcdir@
+Alias /Basic/realm1/subdir @srcdir@
+Alias /Basic/realm1/not @srcdir@
+Alias /Basic/realm1 @srcdir@
+Alias /Basic/realm12/subdir @srcdir@
+Alias /Basic/realm12 @srcdir@
+Alias /Basic/realm2 @srcdir@
+Alias /Basic/realm3 @srcdir@
+Alias /Basic @srcdir@
+
+<Location /Basic/realm1>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require user user1
+</Location>
+
+<Location /Basic/realm1/not>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require user user2
+</Location>
+
+<Location /Basic/realm12>
+ AuthType Basic
+ AuthName realm12
+ AuthUserFile @srcdir@/htpasswd
+ Require user user1 user2
+</Location>
+
+<Location /Basic/realm1/realm2>
+ AuthType Basic
+ AuthName realm2
+ AuthUserFile @srcdir@/htpasswd
+ Require user user2
+</Location>
+
+<Location /Basic/realm1/realm2/realm1>
+ AuthType Basic
+ AuthName realm1
+ AuthUserFile @srcdir@/htpasswd
+ Require user user1
+</Location>
+
+<Location /Basic/realm2>
+ AuthType Basic
+ AuthName realm2
+ AuthUserFile @srcdir@/htpasswd
+ Require user user2
+</Location>
+
+<Location /Basic/realm3>
+ AuthType Basic
+ AuthName realm3
+ AuthUserFile @srcdir@/htpasswd
+ Require user user3
+</Location>
+
+# Digest auth tests
+Alias /Digest/realm1/realm2/realm1 @srcdir@
+Alias /Digest/realm1/realm2 @srcdir@
+Alias /Digest/realm1/subdir @srcdir@
+Alias /Digest/realm1/expire @srcdir@
+Alias /Digest/realm1/not @srcdir@
+Alias /Digest/realm1 @srcdir@
+Alias /Digest/realm2 @srcdir@
+Alias /Digest/realm3 @srcdir@
+Alias /Digest @srcdir@
+
+<Location /Digest/realm1>
+ AuthType Digest
+ AuthName realm1
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm1 /Digest/realm1/realm2/realm1
+ Require valid-user
+</Location>
+
+<Location /Digest/realm1/expire>
+ AuthType Digest
+ AuthName realm1
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm1 /Digest/realm1/realm2/realm1
+ AuthDigestNonceLifetime 2
+ Require valid-user
+</Location>
+
+<Location /Digest/realm1/not>
+ AuthType Digest
+ AuthName realm1
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm1 /Digest/realm1/realm2/realm1
+ Require user user2
+</Location>
+
+<Location /Digest/realm1/realm2>
+ AuthType Digest
+ AuthName realm2
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm2 /Digest/realm1/realm2
+ Require valid-user
+</Location>
+
+<Location /Digest/realm1/realm2/realm1>
+ AuthType Digest
+ AuthName realm1
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm1 /Digest/realm1/realm2/realm1
+ Require valid-user
+</Location>
+
+<Location /Digest/realm2>
+ AuthType Digest
+ AuthName realm2
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm2 /Digest/realm1/realm2
+ Require valid-user
+</Location>
+
+<Location /Digest/realm3>
+ AuthType Digest
+ AuthName realm3
+ AuthUserFile @srcdir@/htdigest
+ AuthDigestDomain /Digest/realm3
+ Require valid-user
+ # test RFC2069-style Digest
+ AuthDigestQop none
+</Location>
}
static void
-do_range_test (SoupSession *session, const char *uri, gboolean expect_coalesce)
+do_range_test (SoupSession *session, const char *uri,
+ gboolean expect_coalesce, gboolean expect_partial_coalesce)
{
int twelfths = full_response->length / 12;
9 * twelfths, 10 * twelfths + 5,
4 * twelfths, 5 * twelfths,
10 * twelfths - 5, 11 * twelfths,
- expect_coalesce ? 2 : 3);
+ expect_partial_coalesce ? 2 : 3);
if (memcmp (full_response->data, test_response, full_response->length) != 0) {
debug_printf (1, "\nfull_response and test_response don't match\n");
session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL);
debug_printf (1, "1. Testing against apache\n");
- do_range_test (session, "http://127.0.0.1:47524/", FALSE);
+#if HAVE_APACHE_2_2
+ do_range_test (session, "http://127.0.0.1:47524/", FALSE, FALSE);
+#else
+ do_range_test (session, "http://127.0.0.1:47524/", TRUE, FALSE);
+#endif
debug_printf (1, "\n2. Testing against SoupServer\n");
server = soup_test_server_new (FALSE);
soup_server_add_handler (server, NULL, server_handler, NULL, NULL);
base_uri = g_strdup_printf ("http://127.0.0.1:%u/",
soup_server_get_port (server));
- do_range_test (session, base_uri, TRUE);
+ do_range_test (session, base_uri, TRUE, TRUE);
g_free (base_uri);
soup_test_server_quit_unref (server);