diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /www-servers/lighttpd | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'www-servers/lighttpd')
19 files changed, 2097 insertions, 0 deletions
diff --git a/www-servers/lighttpd/Manifest b/www-servers/lighttpd/Manifest new file mode 100644 index 000000000000..85fc0ff8d24d --- /dev/null +++ b/www-servers/lighttpd/Manifest @@ -0,0 +1 @@ +DIST lighttpd-1.4.35.tar.bz2 665955 SHA256 4a71c1f6d8af41ed894b507720c4c17184dc320590013881d5170ca7f15c5bf7 SHA512 13f8562fb735964fe7ef1b127a15c43907f34be70b6bd2dd4ba61b59275d7c2a8d9a7947ff1a4d7cc5fd7efd309fc66b7de6d954b59424f814ea2eb98fd876b9 WHIRLPOOL edbeb94ae29475be398e9281135fc43f915be68c5836ae3da302f7c94c3af19eeca601cedc9bfe59d552f45c6248a945b2de725613de395087e4e195efe9a62e diff --git a/www-servers/lighttpd/files/conf/lighttpd.conf b/www-servers/lighttpd/files/conf/lighttpd.conf new file mode 100644 index 000000000000..1c69581a192c --- /dev/null +++ b/www-servers/lighttpd/files/conf/lighttpd.conf @@ -0,0 +1,330 @@ +############################################################################### +# Default lighttpd.conf for Gentoo. +# $Id$ +############################################################################### + +# {{{ variables +var.basedir = "/var/www/localhost" +var.logdir = "/var/log/lighttpd" +var.statedir = "/var/lib/lighttpd" +# }}} + +# {{{ modules +# At the very least, mod_access and mod_accesslog should be enabled. +# All other modules should only be loaded if necessary. +# NOTE: the order of modules is important. +server.modules = ( +# "mod_rewrite", +# "mod_redirect", +# "mod_alias", + "mod_access", +# "mod_cml", +# "mod_trigger_b4_dl", +# "mod_auth", +# "mod_status", +# "mod_setenv", +# "mod_proxy", +# "mod_simple_vhost", +# "mod_evhost", +# "mod_userdir", +# "mod_compress", +# "mod_ssi", +# "mod_usertrack", +# "mod_expire", +# "mod_secdownload", +# "mod_rrdtool", +# "mod_webdav", + "mod_accesslog" +) +# }}} + +# {{{ includes +include "mime-types.conf" +# fcgi and cgi are included below +# }}} + +# {{{ server settings +server.username = "lighttpd" +server.groupname = "lighttpd" + +server.document-root = var.basedir + "/htdocs" +server.pid-file = "/var/run/lighttpd.pid" + +server.errorlog = var.logdir + "/error.log" +# log errors to syslog instead +# server.errorlog-use-syslog = "enable" + +server.indexfiles = ("index.php", "index.html", + "index.htm", "default.htm") + +# server.tag = "lighttpd" + +server.follow-symlink = "enable" + +# event handler (defaults to "poll") +# see performance.txt +# +# for >= linux-2.4 +# server.event-handler = "linux-rtsig" +# for >= linux-2.6 +# server.event-handler = "linux-sysepoll" +# for FreeBSD +# server.event-handler = "freebsd-kqueue" + +# chroot to directory (defaults to no chroot) +# server.chroot = "/" + +# bind to port (defaults to 80) +# server.port = 81 + +# bind to name (defaults to all interfaces) +# server.bind = "grisu.home.kneschke.de" + +# error-handler for status 404 +# server.error-handler-404 = "/error-handler.html" +# server.error-handler-404 = "/error-handler.php" + +# Format: <errorfile-prefix><status-code>.html +# -> ..../status-404.html for 'File not found' +# server.errorfile-prefix = var.basedir + "/error/status-" + +# FAM support for caching stat() calls +# requires that lighttpd be built with USE=fam +# server.stat-cache-engine = "fam" + +# If lighttpd was build with IPv6 support, and you would like to listen on IPv6, +# uncomment the following: +# server.use-ipv6 = "enable" + +# }}} + +# {{{ mod_staticfile + +# which extensions should not be handled via static-file transfer +# (extensions that are usually handled by mod_cgi, mod_fastcgi, etc). +static-file.exclude-extensions = (".php", ".pl", ".cgi", ".fcgi") +# }}} + +# {{{ mod_accesslog +accesslog.filename = var.logdir + "/access.log" +# }}} + +# {{{ mod_dirlisting +# enable directory listings +# dir-listing.activate = "enable" +# +# don't list hidden files/directories +# dir-listing.hide-dotfiles = "enable" +# +# use a different css for directory listings +# dir-listing.external-css = "/path/to/dir-listing.css" +# +# list of regular expressions. files that match any of the +# specified regular expressions will be excluded from directory +# listings. +# dir-listing.exclude = ("^\.", "~$") +# }}} + +# {{{ mod_access +# see access.txt + +url.access-deny = ("~", ".inc") +# }}} + +# {{{ mod_userdir +# see userdir.txt +# +# userdir.path = "public_html" +# userdir.exclude-user = ("root") +# }}} + +# {{{ mod_ssi +# see ssi.txt +# +# ssi.extension = (".shtml") +# }}} + +# {{{ mod_ssl +# see ssl.txt +# +# ssl.engine = "enable" +# ssl.pemfile = "server.pem" +# }}} + +# {{{ mod_status +# see status.txt +# +# status.status-url = "/server-status" +# status.config-url = "/server-config" +# }}} + +# {{{ mod_simple_vhost +# see simple-vhost.txt +# +# If you want name-based virtual hosting add the next three settings and load +# mod_simple_vhost +# +# document-root = +# virtual-server-root + virtual-server-default-host + virtual-server-docroot +# or +# virtual-server-root + http-host + virtual-server-docroot +# +# simple-vhost.server-root = "/home/weigon/wwwroot/servers/" +# simple-vhost.default-host = "grisu.home.kneschke.de" +# simple-vhost.document-root = "/pages/" +# }}} + +# {{{ mod_compress +# see compress.txt +# +# compress.cache-dir = var.statedir + "/cache/compress" +# compress.filetype = ("text/plain", "text/html") +# }}} + +# {{{ mod_proxy +# see proxy.txt +# +# proxy.server = ( ".php" => +# ( "localhost" => +# ( +# "host" => "192.168.0.101", +# "port" => 80 +# ) +# ) +# ) +# }}} + +# {{{ mod_auth +# see authentication.txt +# +# auth.backend = "plain" +# auth.backend.plain.userfile = "lighttpd.user" +# auth.backend.plain.groupfile = "lighttpd.group" + +# auth.backend.ldap.hostname = "localhost" +# auth.backend.ldap.base-dn = "dc=my-domain,dc=com" +# auth.backend.ldap.filter = "(uid=$)" + +# auth.require = ( "/server-status" => +# ( +# "method" => "digest", +# "realm" => "download archiv", +# "require" => "user=jan" +# ), +# "/server-info" => +# ( +# "method" => "digest", +# "realm" => "download archiv", +# "require" => "valid-user" +# ) +# ) +# }}} + +# {{{ mod_rewrite +# see rewrite.txt +# +# url.rewrite = ( +# "^/$" => "/server-status" +# ) +# }}} + +# {{{ mod_redirect +# see redirect.txt +# +# url.redirect = ( +# "^/wishlist/(.+)" => "http://www.123.org/$1" +# ) +# }}} + +# {{{ mod_evhost +# define a pattern for the host url finding +# %% => % sign +# %0 => domain name + tld +# %1 => tld +# %2 => domain name without tld +# %3 => subdomain 1 name +# %4 => subdomain 2 name +# +# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/" +# }}} + +# {{{ mod_expire +# expire.url = ( +# "/buggy/" => "access 2 hours", +# "/asdhas/" => "access plus 1 seconds 2 minutes" +# ) +# }}} + +# {{{ mod_rrdtool +# see rrdtool.txt +# +# rrdtool.binary = "/usr/bin/rrdtool" +# rrdtool.db-name = var.statedir + "/lighttpd.rrd" +# }}} + +# {{{ mod_setenv +# see setenv.txt +# +# setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" ) +# setenv.add-response-header = ( "X-Secret-Message" => "42" ) +# }}} + +# {{{ mod_trigger_b4_dl +# see trigger_b4_dl.txt +# +# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db" +# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" ) +# trigger-before-download.trigger-url = "^/trigger/" +# trigger-before-download.download-url = "^/download/" +# trigger-before-download.deny-url = "http://127.0.0.1/index.html" +# trigger-before-download.trigger-timeout = 10 +# }}} + +# {{{ mod_cml +# see cml.txt +# +# don't forget to add index.cml to server.indexfiles +# cml.extension = ".cml" +# cml.memcache-hosts = ( "127.0.0.1:11211" ) +# }}} + +# {{{ mod_webdav +# see webdav.txt +# +# $HTTP["url"] =~ "^/dav($|/)" { +# webdav.activate = "enable" +# webdav.is-readonly = "enable" +# } +# }}} + +# {{{ extra rules +# +# set Content-Encoding and reset Content-Type for browsers that +# support decompressing on-thy-fly (requires mod_setenv) +# $HTTP["url"] =~ "\.gz$" { +# setenv.add-response-header = ("Content-Encoding" => "x-gzip") +# mimetype.assign = (".gz" => "text/plain") +# } + +# $HTTP["url"] =~ "\.bz2$" { +# setenv.add-response-header = ("Content-Encoding" => "x-bzip2") +# mimetype.assign = (".bz2" => "text/plain") +# } +# +# }}} + +# {{{ debug +# debug.log-request-header = "enable" +# debug.log-response-header = "enable" +# debug.log-request-handling = "enable" +# debug.log-file-not-found = "enable" +# }}} + +# {{{ cgi includes +# uncomment for cgi support +# include "mod_cgi.conf" +# uncomment for php/fastcgi support +# include "mod_fastcgi.conf" +# }}} + +# vim: set ft=conf foldmethod=marker et : diff --git a/www-servers/lighttpd/files/conf/mime-types.conf b/www-servers/lighttpd/files/conf/mime-types.conf new file mode 100644 index 000000000000..4d083e3abec7 --- /dev/null +++ b/www-servers/lighttpd/files/conf/mime-types.conf @@ -0,0 +1,79 @@ +############################################################################### +# Default mime-types.conf for Gentoo. +# include'd from lighttpd.conf. +# $Id$ +############################################################################### + +# {{{ mime types +mimetype.assign = ( + ".svg" => "image/svg+xml", + ".svgz" => "image/svg+xml", + ".pdf" => "application/pdf", + ".sig" => "application/pgp-signature", + ".spl" => "application/futuresplash", + ".class" => "application/octet-stream", + ".ps" => "application/postscript", + ".torrent" => "application/x-bittorrent", + ".dvi" => "application/x-dvi", + ".gz" => "application/x-gzip", + ".pac" => "application/x-ns-proxy-autoconfig", + ".swf" => "application/x-shockwave-flash", + ".tar.gz" => "application/x-tgz", + ".tgz" => "application/x-tgz", + ".tar" => "application/x-tar", + ".zip" => "application/zip", + ".dmg" => "application/x-apple-diskimage", + ".mp3" => "audio/mpeg", + ".m3u" => "audio/x-mpegurl", + ".wma" => "audio/x-ms-wma", + ".wax" => "audio/x-ms-wax", + ".ogg" => "application/ogg", + ".wav" => "audio/x-wav", + ".gif" => "image/gif", + ".jpg" => "image/jpeg", + ".jpeg" => "image/jpeg", + ".png" => "image/png", + ".xbm" => "image/x-xbitmap", + ".xpm" => "image/x-xpixmap", + ".xwd" => "image/x-xwindowdump", + ".css" => "text/css", + ".html" => "text/html", + ".htm" => "text/html", + ".js" => "text/javascript", + ".asc" => "text/plain", + ".c" => "text/plain", + ".h" => "text/plain", + ".cc" => "text/plain", + ".cpp" => "text/plain", + ".hh" => "text/plain", + ".hpp" => "text/plain", + ".conf" => "text/plain", + ".log" => "text/plain", + ".text" => "text/plain", + ".txt" => "text/plain", + ".diff" => "text/plain", + ".patch" => "text/plain", + ".ebuild" => "text/plain", + ".eclass" => "text/plain", + ".rtf" => "application/rtf", + ".bmp" => "image/bmp", + ".tif" => "image/tiff", + ".tiff" => "image/tiff", + ".ico" => "image/x-icon", + ".dtd" => "text/xml", + ".xml" => "text/xml", + ".mpeg" => "video/mpeg", + ".mpg" => "video/mpeg", + ".mov" => "video/quicktime", + ".qt" => "video/quicktime", + ".avi" => "video/x-msvideo", + ".asf" => "video/x-ms-asf", + ".asx" => "video/x-ms-asf", + ".wmv" => "video/x-ms-wmv", + ".bz2" => "application/x-bzip", + ".tbz" => "application/x-bzip-compressed-tar", + ".tar.bz2" => "application/x-bzip-compressed-tar" + ) +# }}} + +# vim: set ft=conf foldmethod=marker et : diff --git a/www-servers/lighttpd/files/conf/mod_cgi.conf b/www-servers/lighttpd/files/conf/mod_cgi.conf new file mode 100644 index 000000000000..306f927f0791 --- /dev/null +++ b/www-servers/lighttpd/files/conf/mod_cgi.conf @@ -0,0 +1,33 @@ +############################################################################### +# mod_cgi.conf +# include'd by lighttpd.conf. +# $Id$ +############################################################################### + +# +# see cgi.txt for more information on using mod_cgi +# + +server.modules += ("mod_cgi") + +# NOTE: this requires mod_alias +alias.url = ( + "/cgi-bin/" => var.basedir + "/cgi-bin/" +) + +# +# Note that you'll also want to enable the +# cgi-bin alias via mod_alias (above). +# + +$HTTP["url"] =~ "^/cgi-bin/" { + # disable directory listings + dir-listing.activate = "disable" + # only allow cgi's in this directory + cgi.assign = ( + ".pl" => "/usr/bin/perl", + ".cgi" => "/usr/bin/perl" + ) +} + +# vim: set ft=conf foldmethod=marker et : diff --git a/www-servers/lighttpd/files/conf/mod_fastcgi.conf b/www-servers/lighttpd/files/conf/mod_fastcgi.conf new file mode 100644 index 000000000000..fe1c84fece6b --- /dev/null +++ b/www-servers/lighttpd/files/conf/mod_fastcgi.conf @@ -0,0 +1,17 @@ +############################################################################### +# mod_fastcgi.conf +# include'd by lighttpd.conf. +# $Id$ +############################################################################### + +server.modules += ("mod_fastcgi") +fastcgi.server = ( ".php" => + ( "localhost" => + ( + "socket" => "/var/run/lighttpd/lighttpd-fastcgi-php-" + PID + ".socket", + "bin-path" => "/usr/bin/php-cgi" + ) + ) + ) + +# vim: set ft=conf foldmethod=marker et : diff --git a/www-servers/lighttpd/files/conf/mod_fastcgi.conf-1.4.13-r2 b/www-servers/lighttpd/files/conf/mod_fastcgi.conf-1.4.13-r2 new file mode 100644 index 000000000000..fe1c84fece6b --- /dev/null +++ b/www-servers/lighttpd/files/conf/mod_fastcgi.conf-1.4.13-r2 @@ -0,0 +1,17 @@ +############################################################################### +# mod_fastcgi.conf +# include'd by lighttpd.conf. +# $Id$ +############################################################################### + +server.modules += ("mod_fastcgi") +fastcgi.server = ( ".php" => + ( "localhost" => + ( + "socket" => "/var/run/lighttpd/lighttpd-fastcgi-php-" + PID + ".socket", + "bin-path" => "/usr/bin/php-cgi" + ) + ) + ) + +# vim: set ft=conf foldmethod=marker et : diff --git a/www-servers/lighttpd/files/lighttpd-1.4.29-mod_uploadprogress.patch b/www-servers/lighttpd/files/lighttpd-1.4.29-mod_uploadprogress.patch new file mode 100644 index 000000000000..c99886af1e7b --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd-1.4.29-mod_uploadprogress.patch @@ -0,0 +1,738 @@ +diff -Nru lighttpd-1.4.22.orig/src/connections.c lighttpd-1.4.22/src/connections.c +--- lighttpd-1.4.22.orig/src/connections.c 2009-02-19 14:15:14.000000000 +0100 ++++ lighttpd-1.4.28/src/connections.c 2009-04-22 17:45:20.000000000 +0200 +@@ -1401,11 +1401,15 @@ + if (http_request_parse(srv, con)) { + /* we have to read some data from the POST request */ + ++ plugins_call_handle_request_end(srv, con); ++ + connection_set_state(srv, con, CON_STATE_READ_POST); + + break; + } + ++ plugins_call_handle_request_end(srv, con); ++ + connection_set_state(srv, con, CON_STATE_HANDLE_REQUEST); + + break; +diff -Nru lighttpd-1.4.22.orig/src/Makefile.am lighttpd-1.4.22/src/Makefile.am +--- lighttpd-1.4.22.orig/src/Makefile.am 2009-02-19 14:15:14.000000000 +0100 ++++ lighttpd-1.4.28/src/Makefile.am 2009-04-22 17:46:34.000000000 +0200 +@@ -246,6 +246,11 @@ + mod_accesslog_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined + mod_accesslog_la_LIBADD = $(common_libadd) + ++lib_LTLIBRARIES += mod_uploadprogress.la ++mod_uploadprogress_la_SOURCES = mod_uploadprogress.c ++mod_uploadprogress_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined ++mod_uploadprogress_la_LIBADD = $(common_libadd) ++ + + hdr = server.h buffer.h network.h log.h keyvalue.h \ + response.h request.h fastcgi.h chunk.h \ +diff -Nru lighttpd-1.4.22.orig/src/plugin.c lighttpd-1.4.22/src/plugin.c +--- lighttpd-1.4.22.orig/src/plugin.c 2009-02-19 14:15:14.000000000 +0100 ++++ lighttpd-1.4.28/src/plugin.c 2009-04-22 17:45:20.000000000 +0200 +@@ -34,6 +34,7 @@ + PLUGIN_FUNC_UNSET, + PLUGIN_FUNC_HANDLE_URI_CLEAN, + PLUGIN_FUNC_HANDLE_URI_RAW, ++ PLUGIN_FUNC_HANDLE_REQUEST_END, + PLUGIN_FUNC_HANDLE_REQUEST_DONE, + PLUGIN_FUNC_HANDLE_CONNECTION_CLOSE, + PLUGIN_FUNC_HANDLE_TRIGGER, +@@ -262,6 +263,7 @@ + + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_URI_CLEAN, handle_uri_clean) + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_URI_RAW, handle_uri_raw) ++PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_REQUEST_END, handle_request_end) + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_REQUEST_DONE, handle_request_done) + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_CONNECTION_CLOSE, handle_connection_close) + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_SUBREQUEST, handle_subrequest) +@@ -389,6 +391,7 @@ + + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_URI_CLEAN, handle_uri_clean); + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_URI_RAW, handle_uri_raw); ++ PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_REQUEST_END, handle_request_end); + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_REQUEST_DONE, handle_request_done); + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_CONNECTION_CLOSE, handle_connection_close); + PLUGIN_TO_SLOT(PLUGIN_FUNC_HANDLE_TRIGGER, handle_trigger); +diff -Nru lighttpd-1.4.22.orig/src/plugin.h lighttpd-1.4.22/src/plugin.h +--- lighttpd-1.4.22.orig/src/plugin.h 2009-02-19 14:15:14.000000000 +0100 ++++ lighttpd-1.4.28/src/plugin.h 2009-04-22 17:45:20.000000000 +0200 +@@ -42,12 +42,12 @@ + handler_t (* handle_uri_clean) (server *srv, connection *con, void *p_d); /* after uri is set */ + handler_t (* handle_docroot) (server *srv, connection *con, void *p_d); /* getting the document-root */ + handler_t (* handle_physical) (server *srv, connection *con, void *p_d); /* mapping url to physical path */ ++ handler_t (* handle_request_end) (server *srv, connection *con, void *p_d); /* a handler for the request content */ + handler_t (* handle_request_done) (server *srv, connection *con, void *p_d); /* at the end of a request */ + handler_t (* handle_connection_close)(server *srv, connection *con, void *p_d); /* at the end of a connection */ + handler_t (* handle_joblist) (server *srv, connection *con, void *p_d); /* after all events are handled */ + + +- + handler_t (* handle_subrequest_start)(server *srv, connection *con, void *p_d); + + /* when a handler for the request +@@ -68,6 +68,7 @@ + handler_t plugins_call_handle_uri_clean(server *srv, connection *con); + handler_t plugins_call_handle_subrequest_start(server *srv, connection *con); + handler_t plugins_call_handle_subrequest(server *srv, connection *con); ++handler_t plugins_call_handle_request_end(server *srv, connection *con); + handler_t plugins_call_handle_request_done(server *srv, connection *con); + handler_t plugins_call_handle_docroot(server *srv, connection *con); + handler_t plugins_call_handle_physical(server *srv, connection *con); +diff -Nru lighttpd-1.4.22.orig/src/mod_uploadprogress.c lighttpd-1.4.22/src/mod_uploadprogress.c +--- lighttpd-1.4.22.orig/src/mod_uploadprogress.c 1970-01-01 01:00:00.000000000 +0100 ++++ lighttpd-1.4.28/src/mod_uploadprogress.c 2009-04-22 17:32:38.000000000 +0200 +@@ -0,0 +1,648 @@ ++#include <ctype.h> ++#include <stdlib.h> ++#include <string.h> ++ ++#include "base.h" ++#include "log.h" ++#include "buffer.h" ++ ++#include "plugin.h" ++ ++#include "response.h" ++#include "stat_cache.h" ++ ++#define CONFIG_UPLOAD_PROGRESS_URL "upload-progress.progress-url" ++#define CONFIG_UPLOAD_PROGRESS_TIMEOUT "upload-progress.remove-timeout" ++#define CONFIG_UPLOAD_PROGRESS_DEBUG "upload-progress.debug" ++ ++#define SAFE_BUF_STR(x) x && x->ptr ? x->ptr : "(null)" ++ ++/** ++ * uploadprogress for lighttpd ++ * ++ * Initial: Jan Kneschke <jan@kneschke.de> ++ * Timeout+Status addon: Bjoern Kalkbrenner <terminar@cyberphoria.org> [20070112] ++ * ++ * Ported to Lighttpd 1.4.22 by Radek Senfeld <rush@logic.cz> ++ * ++ * Backport based on revision 2369 ++ * http://redmine.lighttpd.net/projects/lighttpd/repository/changes/trunk/src/mod_uploadprogress.c ++ * ++ * the timeout is used to keep in the status information intact even if the parent ++ * connection is gone already ++ * ++ */ ++ ++typedef struct { ++ buffer *tracking_id; ++ connection *con; ++ ++ time_t timeout; ++ int status; ++ off_t size; ++} connection_map_entry; ++ ++typedef struct { ++ connection_map_entry **ptr; ++ ++ size_t used; ++ size_t size; ++} connection_map; ++ ++/* plugin config for all request/connections */ ++ ++typedef struct { ++ buffer *progress_url; ++ unsigned short debug; ++ unsigned short remove_timeout; ++} plugin_config; ++ ++typedef struct { ++ PLUGIN_DATA; ++ ++ connection_map *con_map; ++ ++ buffer *tmp_buf; /** used as temporary buffer for extracting the tracking id */ ++ ++ plugin_config **config_storage; ++ ++ plugin_config conf; ++} plugin_data; ++ ++/** ++ * ++ * connection maps ++ * ++ */ ++ ++/* init the plugin data */ ++static connection_map *connection_map_init() { ++ connection_map *cm; ++ ++ cm = calloc(1, sizeof(*cm)); ++ ++ return cm; ++} ++ ++static void connection_map_free(connection_map *cm) { ++ size_t i; ++ for (i = 0; i < cm->size; i++) { ++ connection_map_entry *cme = cm->ptr[i]; ++ ++ if (!cme) break; ++ ++ if (cme->tracking_id) { ++ buffer_free(cme->tracking_id); ++ } ++ free(cme); ++ } ++ ++ free(cm); ++} ++ ++static connection_map_entry *connection_map_insert(connection_map *cm, buffer *tracking_id, connection *con) { ++ connection_map_entry *cme; ++ size_t i; ++ ++ if (cm->size == 0) { ++ cm->size = 16; ++ cm->ptr = malloc(cm->size * sizeof(*(cm->ptr))); ++ for (i = 0; i < cm->size; i++) { ++ cm->ptr[i] = NULL; ++ } ++ } else if (cm->used == cm->size) { ++ cm->size += 16; ++ cm->ptr = realloc(cm->ptr, cm->size * sizeof(*(cm->ptr))); ++ for (i = cm->used; i < cm->size; i++) { ++ cm->ptr[i] = NULL; ++ } ++ } ++ ++ if (cm->ptr[cm->used]) { ++ /* is already alloced, just reuse it */ ++ cme = cm->ptr[cm->used]; ++ } else { ++ cme = malloc(sizeof(*cme)); ++ cme->tracking_id = buffer_init(); ++ } ++ cme->timeout = 0; ++ cme->status = 0; ++ buffer_copy_string_buffer(cme->tracking_id, tracking_id); ++ cme->con = con; ++ ++ cm->ptr[cm->used++] = cme; ++ ++ return cme; ++} ++ ++static connection_map_entry *connection_map_get_connection_entry(connection_map *cm, buffer *tracking_id) { ++ size_t i; ++ ++ for (i = 0; i < cm->used; i++) { ++ connection_map_entry *cme = cm->ptr[i]; ++ ++ if (buffer_is_equal(cme->tracking_id, tracking_id)) { ++ /* found connection */ ++ return cme; ++ } ++ } ++ return NULL; ++} ++ ++static void connection_map_remove_connection(connection_map *cm, size_t i) { ++ connection_map_entry *cme = cm->ptr[i]; ++ ++ buffer_reset(cme->tracking_id); ++ cme->timeout=0; ++ cme->status=0; ++ ++ cm->used--; ++ ++ /* swap positions with the last entry */ ++ if (cm->used) { ++ cm->ptr[i] = cm->ptr[cm->used]; ++ cm->ptr[cm->used] = cme; ++ } ++} ++ ++/** ++ * remove dead tracking IDs ++ * ++ * uploadprogress.remove-timeout sets a grace-period in which the ++ * connection status is still known even of the connection is already ++ * being removed ++ * ++ */ ++static void connection_map_clear_timeout_connections(connection_map *cm) { ++ size_t i; ++ time_t now_t = time(NULL); ++ ++ for (i = 0; i < cm->used; i++) { ++ connection_map_entry *cme = cm->ptr[i]; ++ ++ if (cme->timeout != 0 && cme->timeout < now_t) { ++ /* found connection */ ++ connection_map_remove_connection(cm, i); ++ } ++ } ++} ++ ++/** ++ * extract the tracking-id from the parameters ++ * ++ * for POST requests it is part of the request headers ++ * for GET requests ... too ++ */ ++static buffer *get_tracking_id(plugin_data *p, server *srv, connection *con) { ++ data_string *ds; ++ buffer *b = NULL; ++ char *qstr=NULL; ++ size_t i; ++ ++ /* the request has to contain a 32byte ID */ ++ if (NULL == (ds = (data_string *)array_get_element(con->request.headers, "X-Progress-ID"))) { ++ char *amp = NULL; ++ ++ /* perhaps the POST request is using the querystring to pass the X-Progress-ID */ ++ if (buffer_is_empty(con->uri.query)) { ++ /* ++ * con->uri.query will not be parsed out if a 413 error happens ++ */ ++ if (NULL != (qstr = strchr(con->request.uri->ptr, '?'))) { ++ /** extract query string from request.uri */ ++ buffer_copy_string(con->uri.query, qstr + 1); ++ } else { ++ return NULL; ++ } ++ } ++ ++ /** split the query-string and extract the X-Progress-ID */ ++ do { ++ char *eq = NULL; ++ char *start = amp ? amp + 1 : con->uri.query->ptr; ++ ++ amp = strchr(start, '&'); ++ ++ /* check the string between start and amp for = */ ++ ++ if (amp) { ++ buffer_copy_string_len(p->tmp_buf, start, amp - start); ++ } else { ++ buffer_copy_string(p->tmp_buf, start); ++ } ++ ++ eq = strchr(p->tmp_buf->ptr, '='); ++ ++ if (eq) { ++ *eq = '\0'; ++ ++ if (0 == strcmp(p->tmp_buf->ptr, "X-Progress-ID")) { ++ size_t key_len = sizeof("X-Progress-ID") - 1; ++ size_t var_len = p->tmp_buf->used - 1; ++ /* found */ ++ ++ buffer_copy_string_len(p->tmp_buf, start + key_len + 1, var_len - key_len - 1); ++ ++ b = p->tmp_buf; ++ ++ break; ++ } ++ } ++ } while (amp); ++ ++ if (!b) return NULL; ++ } else { ++ /* request header was found, use it */ ++ b = ds->value; ++ } ++ ++ if (b->used != 32 + 1) { ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "sds", "the Progress-ID has to be 32 characters long, got", b->used - 1, "characters"); ++ return NULL; ++ } ++ ++ for (i = 0; i < b->used - 1; i++) { ++ char c = b->ptr[i]; ++ ++ if (!light_isxdigit(c)) { ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "sds", "only hex-digits are allowed (0-9 + a-f): (ascii:", c, ")"); ++ return NULL; ++ } ++ } ++ ++ return b; ++} ++ ++/* init the plugin data */ ++INIT_FUNC(mod_uploadprogress_init) { ++ plugin_data *p; ++ ++ p = calloc(1, sizeof(*p)); ++ ++ p->con_map = connection_map_init(); ++ p->tmp_buf = buffer_init(); ++ ++ return p; ++} ++ ++/* detroy the plugin data */ ++FREE_FUNC(mod_uploadprogress_free) { ++ plugin_data *p = p_d; ++ ++ UNUSED(srv); ++ ++ if (!p) return HANDLER_GO_ON; ++ ++ if (p->config_storage) { ++ size_t i; ++ for (i = 0; i < srv->config_context->used; i++) { ++ plugin_config *s = p->config_storage[i]; ++ ++ buffer_free(s->progress_url); ++ s->remove_timeout=0; ++ ++ free(s); ++ } ++ free(p->config_storage); ++ } ++ ++ connection_map_free(p->con_map); ++ buffer_free(p->tmp_buf); ++ ++ free(p); ++ ++ return HANDLER_GO_ON; ++} ++ ++/* handle plugin config and check values */ ++ ++SETDEFAULTS_FUNC(mod_uploadprogress_set_defaults) { ++ plugin_data *p = p_d; ++ size_t i = 0; ++ ++ config_values_t cv[] = { ++ { CONFIG_UPLOAD_PROGRESS_URL, NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 0 */ ++ { CONFIG_UPLOAD_PROGRESS_TIMEOUT, NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 1 */ ++ { CONFIG_UPLOAD_PROGRESS_DEBUG, NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 2 */ ++ { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET } ++ }; ++ ++ if (!p) return HANDLER_ERROR; ++ ++ p->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *)); ++ ++ for (i = 0; i < srv->config_context->used; i++) { ++ plugin_config *s; ++ ++ s = calloc(1, sizeof(plugin_config)); ++ s->progress_url = buffer_init(); ++ s->remove_timeout = 60; ++ s->debug = 0; ++ ++ cv[0].destination = s->progress_url; ++ cv[1].destination = &(s->remove_timeout); ++ cv[2].destination = &(s->debug); ++ ++ p->config_storage[i] = s; ++ ++ if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) { ++ return HANDLER_ERROR; ++ } ++ } ++ ++ return HANDLER_GO_ON; ++} ++ ++#define PATCH_OPTION(x) \ ++ p->conf.x = s->x; ++static int mod_uploadprogress_patch_connection(server *srv, connection *con, plugin_data *p) { ++ size_t i, j; ++ plugin_config *s = p->config_storage[0]; ++ ++ PATCH_OPTION(progress_url); ++ PATCH_OPTION(remove_timeout); ++ PATCH_OPTION(debug); ++ ++ /* skip the first, the global context */ ++ for (i = 1; i < srv->config_context->used; i++) { ++ data_config *dc = (data_config *)srv->config_context->data[i]; ++ s = p->config_storage[i]; ++ ++ /* condition didn't match */ ++ if (!config_check_cond(srv, con, dc)) continue; ++ ++ /* merge config */ ++ for (j = 0; j < dc->value->used; j++) { ++ data_unset *du = dc->value->data[j]; ++ ++ if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_UPLOAD_PROGRESS_URL))) { ++ PATCH_OPTION(progress_url); ++ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_UPLOAD_PROGRESS_TIMEOUT))) { ++ PATCH_OPTION(remove_timeout); ++ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN(CONFIG_UPLOAD_PROGRESS_DEBUG))) { ++ PATCH_OPTION(debug); ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++/** ++ * ++ * the idea: ++ * ++ * for the first request we check if it is a post-request ++ * ++ * if no, move out, don't care about them ++ * ++ * if yes, take the connection structure and register it locally ++ * in the progress-struct together with an session-id (md5 ... ) ++ * ++ * if the connections closes, cleanup the entry in the progress-struct ++ * ++ * a second request can now get the info about the size of the upload, ++ * the received bytes ++ * ++ */ ++ ++URIHANDLER_FUNC(mod_uploadprogress_uri_handler) { ++ plugin_data *p = p_d; ++ buffer *tracking_id; ++ buffer *b; ++ connection_map_entry *post_con_entry = NULL; ++ connection_map_entry *map_con_entry = NULL; ++ ++ if (buffer_is_empty(con->uri.path)) return HANDLER_GO_ON; ++ ++ /* no progress URL set, ignore request */ ++ if (buffer_is_empty(p->conf.progress_url)) return HANDLER_GO_ON; ++ ++ switch(con->request.http_method) { ++ case HTTP_METHOD_POST: ++ /** ++ * a POST request is the UPLOAD itself ++ * ++ * get the unique tracker id ++ */ ++ if (NULL == (tracking_id = get_tracking_id(p, srv, con))) { ++ return HANDLER_GO_ON; ++ } ++ ++ if (NULL == (map_con_entry = connection_map_get_connection_entry(p->con_map, tracking_id))) { ++ connection_map_insert(p->con_map, tracking_id, con); ++ ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "ss", "POST: connection is new, registered:", SAFE_BUF_STR(tracking_id)); ++ } else { ++ map_con_entry->timeout = 0; ++ map_con_entry->status = 0; ++ ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "ss", "POST: connection is known, id:", SAFE_BUF_STR(tracking_id)); ++ } ++ ++ return HANDLER_GO_ON; ++ case HTTP_METHOD_GET: ++ /** ++ * the status request for the current connection ++ */ ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "ssss", "(uploadprogress) urls", SAFE_BUF_STR(con->uri.path), "==", SAFE_BUF_STR(p->conf.progress_url)); ++ ++ if (!buffer_is_equal(con->uri.path, p->conf.progress_url)) { ++ return HANDLER_GO_ON; ++ } ++ ++ /* get the tracker id */ ++ if (NULL == (tracking_id = get_tracking_id(p, srv, con))) { ++ return HANDLER_GO_ON; ++ } ++ ++ buffer_reset(con->physical.path); ++ ++ con->file_started = 1; ++ con->http_status = 200; ++ con->file_finished = 1; ++ ++ /* send JSON content */ ++ ++ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("text/javascript")); ++ ++ /* just an attempt the force the IE/proxies to NOT cache the request */ ++ response_header_overwrite(srv, con, CONST_STR_LEN("Pragma"), CONST_STR_LEN("no-cache")); ++ response_header_overwrite(srv, con, CONST_STR_LEN("Expires"), CONST_STR_LEN("Thu, 19 Nov 1981 08:52:00 GMT")); ++ response_header_overwrite(srv, con, CONST_STR_LEN("Cache-Control"), ++ CONST_STR_LEN("no-store, no-cache, must-revalidate, post-check=0, pre-check=0")); ++ ++ b = chunkqueue_get_append_buffer(con->write_queue); ++ ++ /* get the connection */ ++ if (NULL == (post_con_entry = connection_map_get_connection_entry(p->con_map, tracking_id))) { ++ /** ++ * looks like we don't know the tracking id yet, GET and POST out of sync ? */ ++ buffer_append_string_len(b, CONST_STR_LEN("{ \"state\" : \"unknown\" }\r\n")); ++ con->response.content_length += b->used - 1; ++ ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "ssss", "connection unknown:", SAFE_BUF_STR(tracking_id), ", sending:", SAFE_BUF_STR(b)); ++ ++ return HANDLER_FINISHED; ++ } ++ ++ buffer_copy_string_len(b, CONST_STR_LEN("{ \"state\" : ")); ++ ++ if (post_con_entry->status == 413) { ++ /* the upload was too large */ ++ buffer_append_string_len(b, CONST_STR_LEN("\"error\", \"status\" : 413")); ++ } else if (post_con_entry->con == NULL) { ++ /* the connection is already gone */ ++ buffer_append_string_len(b, CONST_STR_LEN("\"done\", \"size\" : ")); ++ buffer_append_off_t(b, post_con_entry->size); ++ } else { ++ /* the upload is already done, but the connection might be still open */ ++ buffer_append_string(b, post_con_entry->con->state == CON_STATE_READ_POST ? "\"uploading\"" : "\"done\""); ++ buffer_append_string_len(b, CONST_STR_LEN(", \"received\" : ")); ++ buffer_append_off_t(b, post_con_entry->con->bytes_read); ++ buffer_append_string_len(b, CONST_STR_LEN(", \"size\" : ")); ++ buffer_append_off_t(b, post_con_entry->con->request.content_length); ++ } ++ buffer_append_string_len(b, CONST_STR_LEN("}\r\n")); ++ con->response.content_length += b->used - 1; ++ ++ if (p->conf.debug) log_error_write(srv, __FILE__, __LINE__, "ssss", "connection is known:", SAFE_BUF_STR(tracking_id), ", sending:", SAFE_BUF_STR(b)); ++ ++ return HANDLER_FINISHED; ++ default: ++ break; ++ } ++ ++ return HANDLER_GO_ON; ++} ++ ++/** ++ * check for POST request ++ */ ++CONNECTION_FUNC(mod_uploadprogress_request_end) { ++ plugin_data *p = p_d; ++ ++ buffer *tracking_id; ++ connection_map_entry *map_con_entry = NULL; ++ ++ UNUSED(srv); ++ ++ /* no request URL, ignore request */ ++ if (buffer_is_empty(con->request.uri)) return HANDLER_GO_ON; ++ ++ mod_uploadprogress_patch_connection(srv, con, p); ++ ++ /* ++ * we only want to process the upload (POST request) ++ */ ++ if (con->request.http_method != HTTP_METHOD_POST) { ++ return HANDLER_GO_ON; ++ } ++ ++ if (p->conf.debug) { ++ log_error_write(srv, __FILE__, __LINE__, "sxsdsd", "request_end: con=", (void *) con, ", http_method=", con->request.http_method, ", http_status=", con->http_status); ++ } ++ ++ /* get the tracker id */ ++ if (NULL == (tracking_id = get_tracking_id(p, srv, con))) { ++ return HANDLER_GO_ON; ++ } ++ ++ if (NULL == (map_con_entry = connection_map_get_connection_entry(p->con_map, tracking_id))) { ++ /** ++ * in case the request parser meant the request was too large the URI handler won't ++ * get called. Insert the connection mapping here ++ */ ++ if (NULL == (map_con_entry = connection_map_insert(p->con_map, tracking_id, con))) { ++ return HANDLER_GO_ON; ++ } ++ } ++ ++ /* ok, found our entries, setting status */ ++ map_con_entry->status = con->http_status; ++ ++ return HANDLER_GO_ON; ++} ++ ++/** ++ * remove the parent connection from the connection mapping ++ * when it got closed ++ * ++ * keep the mapping active for a while to send a valid final status ++ */ ++CONNECTION_FUNC(mod_uploadprogress_request_done) { ++ plugin_data *p = p_d; ++ buffer *tracking_id; ++ connection_map_entry *cm = NULL; ++ ++ UNUSED(srv); ++ ++ if (buffer_is_empty(con->request.uri)) return HANDLER_GO_ON; ++ ++ /* ++ * only need to handle the upload request. ++ */ ++ if (con->request.http_method != HTTP_METHOD_POST) { ++ return HANDLER_GO_ON; ++ } ++ ++ if (NULL == (tracking_id = get_tracking_id(p, srv, con))) { ++ return HANDLER_GO_ON; ++ } ++ ++ if (p->conf.debug) { ++ log_error_write(srv, __FILE__, __LINE__, "sssd", "upload is done, moving tracking-id to backlog: tracking-id=", SAFE_BUF_STR(tracking_id), ", http_status=", con->http_status); ++ } ++ ++ /* ++ * set timeout on the upload's connection_map_entry. ++ */ ++ if (NULL == (cm = connection_map_get_connection_entry(p->con_map, tracking_id))) { ++ if (p->conf.debug) { ++ log_error_write(srv, __FILE__, __LINE__, "sss", "tracking ID", SAFE_BUF_STR(tracking_id), "not found, can't set timeout"); ++ } ++ return HANDLER_GO_ON; ++ } ++ ++ /* save request size to be able to report it even when cm->con == NULL */ ++ cm->size = con->request.content_length; ++ ++ cm->timeout = time(NULL) + p->conf.remove_timeout; ++ cm->con = NULL; /* con becomes invalid very soon */ ++ ++ return HANDLER_GO_ON; ++} ++ ++/** ++ * remove dead connections once in while ++ */ ++TRIGGER_FUNC(mod_uploadprogress_trigger) { ++ plugin_data *p = p_d; ++ ++ if ((srv->cur_ts % 10) != 0) return HANDLER_GO_ON; ++ ++ connection_map_clear_timeout_connections(p->con_map); ++ ++ return HANDLER_GO_ON; ++} ++ ++ ++/* this function is called at dlopen() time and inits the callbacks */ ++ ++int mod_uploadprogress_plugin_init(plugin *p) { ++ p->version = LIGHTTPD_VERSION_ID; ++ p->name = buffer_init_string("uploadprogress"); ++ ++ p->init = mod_uploadprogress_init; ++ p->handle_uri_clean = mod_uploadprogress_uri_handler; ++ p->handle_request_end = mod_uploadprogress_request_end; ++ p->handle_request_done = mod_uploadprogress_request_done; ++// p->connection_reset = mod_uploadprogress_request_done; ++ p->set_defaults = mod_uploadprogress_set_defaults; ++ p->cleanup = mod_uploadprogress_free; ++ p->handle_trigger = mod_uploadprogress_trigger; ++ ++ p->data = NULL; ++ ++ return 0; ++} diff --git a/www-servers/lighttpd/files/lighttpd-1.4.31-automake-1.12.patch b/www-servers/lighttpd/files/lighttpd-1.4.31-automake-1.12.patch new file mode 100644 index 000000000000..eb3119fa01f7 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd-1.4.31-automake-1.12.patch @@ -0,0 +1,21 @@ +http://bugs.gentoo.org/420599 + +--- configure.ac ++++ configure.ac +@@ -14,6 +14,8 @@ + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) + + dnl Checks for programs. ++m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) ++ + AC_PROG_CC + AM_PROG_CC_C_O + AC_PROG_LD +@@ -39,7 +41,6 @@ + AC_EXEEXT + + dnl more automake stuff +-AM_C_PROTOTYPES + + dnl libtool + AC_DISABLE_STATIC diff --git a/www-servers/lighttpd/files/lighttpd-1.4.33-fix-ipv6-build.patch b/www-servers/lighttpd/files/lighttpd-1.4.33-fix-ipv6-build.patch new file mode 100644 index 000000000000..24acc81e8099 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd-1.4.33-fix-ipv6-build.patch @@ -0,0 +1,21 @@ +Gentoo bug: +https://bugs.gentoo.org/show_bug.cgi?id=486426 + +Upstream bug: +http://redmine.lighttpd.net/issues/2515 + +Upstream Commit: +http://redmine.lighttpd.net/projects/lighttpd/repository/revisions/2911 + +Index: src/mod_extforward.c +=================================================================== +--- src/mod_extforward.c (revision 2909) ++++ src/mod_extforward.c (working copy) +@@ -439,7 +439,6 @@ + #ifdef HAVE_IPV6 + ipstr_to_sockaddr(srv, real_remote_addr, &sock); + #else +- UNUSED(addrs_left); + sock.ipv4.sin_addr.s_addr = inet_addr(real_remote_addr); + sock.plain.sa_family = (sock.ipv4.sin_addr.s_addr == 0xFFFFFFFF) ? AF_UNSPEC : AF_INET; + #endif diff --git a/www-servers/lighttpd/files/lighttpd.confd b/www-servers/lighttpd/files/lighttpd.confd new file mode 100644 index 000000000000..f3afb07a58e1 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.confd @@ -0,0 +1,12 @@ +# /etc/conf.d/lighttpd + +# Location of a shell used by the 'include_shell' directive +# in the lighttpd's configuration file +#export SHELL="/bin/bash" + +# Location of the lighttpd configuration file +LIGHTTPD_CONF="/etc/lighttpd/lighttpd.conf" + +# Location of the lighttpd pid file +LIGHTTPD_PID="$(/usr/bin/awk '/^server.pid-file/{s=$3};{sub("\"","",s)};END{print s}' ${LIGHTTPD_CONF})" + diff --git a/www-servers/lighttpd/files/lighttpd.initd b/www-servers/lighttpd/files/lighttpd.initd new file mode 100644 index 000000000000..23c0983fd77c --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.initd @@ -0,0 +1,73 @@ +#!/sbin/runscript +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +extra_started_commands="reload graceful" + +depend() { + need net + use mysql logger spawn-fcgi ldap slapd netmount dns + after famd + after sshd +} + +checkconfig() { + if [ ! -f "${LIGHTTPD_CONF}" ] ; then + ewarn "${LIGHTTPD_CONF} does not exist." + return 1 + fi + + if [ -z "${LIGHTTPD_PID}" ] ; then + ewarn "server.pid-file variable in ${LIGHTTPD_CONF}" + ewarn "is not set. Falling back to lighttpd.pid" + LIGHTTPD_PID="/run/lighttpd.pid" + fi + /usr/sbin/lighttpd -t -f ${LIGHTTPD_CONF} >/dev/null +} + +start() { + checkconfig || return 1 + checkpath -d -q -m 0750 -o lighttpd:lighttpd /run/lighttpd/ + + ebegin "Starting lighttpd" + start-stop-daemon --start --quiet --exec /usr/sbin/lighttpd \ + --pidfile "${LIGHTTPD_PID}" -- -f "${LIGHTTPD_CONF}" + eend $? +} + +stop() { + local rv=0 + ebegin "Stopping lighttpd" + start-stop-daemon --stop --quiet --pidfile "${LIGHTTPD_PID}" + eend $? +} + +reload() { + if ! service_started "${SVCNAME}" ; then + eerror "${SVCNAME} isn't running" + return 1 + fi + checkconfig || return 1 + + ebegin "Re-opening lighttpd log files" + start-stop-daemon --quiet --pidfile "${LIGHTTPD_PID}" \ + --signal HUP + eend $? +} + +graceful() { + if ! service_started "${SVCNAME}" ; then + eerror "${SVCNAME} isn't running" + return 1 + fi + checkconfig || return 1 + + ebegin "Gracefully stopping lighttpd" + start-stop-daemon --quiet --pidfile "${LIGHTTPD_PID}" \ + --signal INT + if eend $? ; then + rm -f "${LIGHTTPD_PID}" + start + fi +} diff --git a/www-servers/lighttpd/files/lighttpd.logrotate b/www-servers/lighttpd/files/lighttpd.logrotate new file mode 100644 index 000000000000..ef9dcc082e06 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.logrotate @@ -0,0 +1,17 @@ +# $Id$ +# lighttpd logrotate script for Gentoo + +/var/log/lighttpd/*.log { + daily + missingok + copytruncate + rotate 7 + compress + notifempty + sharedscripts + postrotate + if [ -f /var/run/lighttpd.pid ]; then \ + /etc/init.d/lighttpd reload > /dev/null 2>&1 || true ; \ + fi; + endscript +} diff --git a/www-servers/lighttpd/files/lighttpd.logrotate-r1 b/www-servers/lighttpd/files/lighttpd.logrotate-r1 new file mode 100644 index 000000000000..724ff049d3c9 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.logrotate-r1 @@ -0,0 +1,16 @@ +# $Id$ +# lighttpd logrotate script for Gentoo + +/var/log/lighttpd/*.log { + daily + missingok + copytruncate + rotate 7 + compress + notifempty + sharedscripts + postrotate + test -e /run/openrc/softlevel && /etc/init.d/lighttpd reload 1>/dev/null || true + test -e /run/systemd/system && systemctl reload lighttpd.service || true + endscript +} diff --git a/www-servers/lighttpd/files/lighttpd.service b/www-servers/lighttpd/files/lighttpd.service new file mode 100644 index 000000000000..f5f5be757626 --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Lightning Fast Webserver With Light System Requirements +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/www-servers/lighttpd/files/lighttpd.tmpfiles.conf b/www-servers/lighttpd/files/lighttpd.tmpfiles.conf new file mode 100644 index 000000000000..325ab13d839c --- /dev/null +++ b/www-servers/lighttpd/files/lighttpd.tmpfiles.conf @@ -0,0 +1 @@ +d /var/run/lighttpd 0750 lighttpd lighttpd -
\ No newline at end of file diff --git a/www-servers/lighttpd/lighttpd-1.4.35-r1.ebuild b/www-servers/lighttpd/lighttpd-1.4.35-r1.ebuild new file mode 100644 index 000000000000..20b92854a018 --- /dev/null +++ b/www-servers/lighttpd/lighttpd-1.4.35-r1.ebuild @@ -0,0 +1,227 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" +inherit base autotools eutils depend.php readme.gentoo user systemd + +DESCRIPTION="Lightweight high-performance web server" +HOMEPAGE="http://www.lighttpd.net/" +SRC_URI="http://download.lighttpd.net/lighttpd/releases-1.4.x/${P}.tar.bz2" + +LICENSE="BSD GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="bzip2 doc fam gdbm ipv6 kerberos ldap libev lua minimal mmap memcache mysql pcre php rrdtool selinux ssl test uploadprogress webdav xattr zlib" + +REQUIRED_USE="kerberos? ( ssl )" + +CDEPEND=" + bzip2? ( app-arch/bzip2 ) + fam? ( virtual/fam ) + gdbm? ( sys-libs/gdbm ) + ldap? ( >=net-nds/openldap-2.1.26 ) + libev? ( >=dev-libs/libev-4.01 ) + lua? ( >=dev-lang/lua-5.1 ) + memcache? ( dev-libs/libmemcache ) + mysql? ( >=virtual/mysql-4.0 ) + pcre? ( >=dev-libs/libpcre-3.1 ) + php? ( dev-lang/php[cgi] ) + rrdtool? ( net-analyzer/rrdtool ) + ssl? ( >=dev-libs/openssl-0.9.7[kerberos?] ) + webdav? ( + dev-libs/libxml2 + >=dev-db/sqlite-3 + sys-fs/e2fsprogs + ) + xattr? ( kernel_linux? ( sys-apps/attr ) ) + zlib? ( >=sys-libs/zlib-1.1 )" + +DEPEND="${CDEPEND} + virtual/pkgconfig + doc? ( dev-python/docutils ) + test? ( + virtual/perl-Test-Harness + dev-libs/fcgi + )" + +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-apache ) +" + +# update certain parts of lighttpd.conf based on conditionals +update_config() { + local config="${D}/etc/lighttpd/lighttpd.conf" + + # enable php/mod_fastcgi settings + use php && { sed -i -e 's|#.*\(include.*fastcgi.*$\)|\1|' ${config} || die; } + + # enable stat() caching + use fam && { sed -i -e 's|#\(.*stat-cache.*$\)|\1|' ${config} || die; } + + # automatically listen on IPv6 if built with USE=ipv6. Bug #234987 + use ipv6 && { sed -i -e 's|# server.use-ipv6|server.use-ipv6|' ${config} || die; } +} + +# remove non-essential stuff (for USE=minimal) +remove_non_essential() { + local libdir="${D}/usr/$(get_libdir)/${PN}" + + # text docs + use doc || rm -fr "${D}"/usr/share/doc/${PF}/txt + + # non-essential modules + rm -f \ + ${libdir}/mod_{compress,evhost,expire,proxy,scgi,secdownload,simple_vhost,status,setenv,trigger*,usertrack}.* + + # allow users to keep some based on USE flags + use pcre || rm -f ${libdir}/mod_{ssi,re{direct,write}}.* + use webdav || rm -f ${libdir}/mod_webdav.* + use mysql || rm -f ${libdir}/mod_mysql_vhost.* + use lua || rm -f ${libdir}/mod_{cml,magnet}.* + use rrdtool || rm -f ${libdir}/mod_rrdtool.* + use zlib || rm -f ${libdir}/mod_compress.* +} + +pkg_setup() { + if ! use pcre ; then + ewarn "It is highly recommended that you build ${PN}" + ewarn "with perl regular expressions support via USE=pcre." + ewarn "Otherwise you lose support for some core options such" + ewarn "as conditionals and modules such as mod_re{write,direct}" + ewarn "and mod_ssi." + fi + if use mmap; then + ewarn "You have enabled the mmap option. This option may allow" + ewarn "local users to trigger SIGBUG crashes. Use this option" + ewarn "with EXTRA care." + fi + enewgroup lighttpd + enewuser lighttpd -1 -1 /var/www/localhost/htdocs lighttpd + + DOC_CONTENTS="IPv6 migration guide:\n + http://redmine.lighttpd.net/projects/lighttpd/wiki/IPv6-Config" +} + +src_prepare() { + base_src_prepare + #dev-python/docutils installs rst2html.py not rst2html + sed -i -e 's|\(rst2html\)|\1.py|g' doc/outdated/Makefile.am || \ + die "sed doc/Makefile.am failed" + # Experimental patch for progress bar. Bug #380093 + if use uploadprogress; then + epatch "${FILESDIR}"/${PN}-1.4.29-mod_uploadprogress.patch + fi + eautoreconf +} + +src_configure() { + econf --libdir=/usr/$(get_libdir)/${PN} \ + --enable-lfs \ + $(use_enable ipv6) \ + $(use_enable mmap) \ + $(use_with bzip2) \ + $(use_with fam) \ + $(use_with gdbm) \ + $(use_with kerberos kerberos5) \ + $(use_with ldap) \ + $(use_with libev) \ + $(use_with lua) \ + $(use_with memcache) \ + $(use_with mysql) \ + $(use_with pcre) \ + $(use_with ssl openssl) \ + $(use_with webdav webdav-props) \ + $(use_with webdav webdav-locks) \ + $(use_with xattr attr) \ + $(use_with zlib) +} + +src_compile() { + emake + + if use doc ; then + einfo "Building HTML documentation" + cd doc || die + emake html + fi +} + +src_test() { + if [[ ${EUID} -eq 0 ]]; then + default_src_test + else + ewarn "test skipped, please re-run as root if you wish to test ${PN}" + fi +} + +src_install() { + emake DESTDIR="${D}" install + + # init script stuff + newinitd "${FILESDIR}"/lighttpd.initd lighttpd + newconfd "${FILESDIR}"/lighttpd.confd lighttpd + use fam && has_version app-admin/fam && \ + { sed -i 's/after famd/need famd/g' "${D}"/etc/init.d/lighttpd || die; } + + # configs + insinto /etc/lighttpd + doins "${FILESDIR}"/conf/lighttpd.conf + doins "${FILESDIR}"/conf/mime-types.conf + doins "${FILESDIR}"/conf/mod_cgi.conf + doins "${FILESDIR}"/conf/mod_fastcgi.conf + + # update lighttpd.conf directives based on conditionals + update_config + + # docs + dodoc AUTHORS README NEWS doc/scripts/*.sh + newdoc doc/config//lighttpd.conf lighttpd.conf.distrib + use ipv6 && readme.gentoo_create_doc + + use doc && dohtml -r doc/* + + docinto txt + dodoc doc/outdated/*.txt + + # logrotate + insinto /etc/logrotate.d + newins "${FILESDIR}"/lighttpd.logrotate-r1 lighttpd + + keepdir /var/l{ib,og}/lighttpd /var/www/localhost/htdocs + fowners lighttpd:lighttpd /var/l{ib,og}/lighttpd + fperms 0750 /var/l{ib,og}/lighttpd + + #spawn-fcgi may optionally be installed via www-servers/spawn-fcgi + rm -f "${D}"/usr/bin/spawn-fcgi "${D}"/usr/share/man/man1/spawn-fcgi.* + + use minimal && remove_non_essential + + systemd_dounit "${FILESDIR}/${PN}.service" + systemd_dotmpfilesd "${FILESDIR}/${PN}.tmpfiles.conf" +} + +pkg_postinst () { + use ipv6 && readme.gentoo_print_elog + + if [[ -f ${ROOT}etc/conf.d/spawn-fcgi.conf ]] ; then + einfo "spawn-fcgi is now provided by www-servers/spawn-fcgi." + einfo "spawn-fcgi's init script configuration is now located" + einfo "at /etc/conf.d/spawn-fcgi." + fi + + if [[ -f ${ROOT}etc/lighttpd.conf ]] ; then + elog "Gentoo has a customized configuration," + elog "which is now located in /etc/lighttpd. Please migrate your" + elog "existing configuration." + fi + + if use uploadprogress; then + elog "WARNING! mod_uploadprogress is a backported module from the" + elog "1.5x-branch, which is not considered stable yet. Please go to" + elog "http://redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress" + elog "for more information. This configuration also is NOT supported" + elog "by upstream, so please refrain from reporting bugs. You have" + elog "been warned!" + fi +} diff --git a/www-servers/lighttpd/lighttpd-1.4.35-r2.ebuild b/www-servers/lighttpd/lighttpd-1.4.35-r2.ebuild new file mode 100644 index 000000000000..6c3f07724fc8 --- /dev/null +++ b/www-servers/lighttpd/lighttpd-1.4.35-r2.ebuild @@ -0,0 +1,227 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" +inherit base autotools eutils depend.php readme.gentoo user systemd + +DESCRIPTION="Lightweight high-performance web server" +HOMEPAGE="http://www.lighttpd.net/" +SRC_URI="http://download.lighttpd.net/lighttpd/releases-1.4.x/${P}.tar.bz2" + +LICENSE="BSD GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd" +IUSE="bzip2 doc fam gdbm ipv6 kerberos ldap libev lua minimal mmap memcache mysql pcre php rrdtool selinux ssl test uploadprogress webdav xattr zlib" + +REQUIRED_USE="kerberos? ( ssl )" + +CDEPEND=" + bzip2? ( app-arch/bzip2 ) + fam? ( virtual/fam ) + gdbm? ( sys-libs/gdbm ) + ldap? ( >=net-nds/openldap-2.1.26 ) + libev? ( >=dev-libs/libev-4.01 ) + lua? ( >=dev-lang/lua-5.1:= ) + memcache? ( dev-libs/libmemcache ) + mysql? ( >=virtual/mysql-4.0 ) + pcre? ( >=dev-libs/libpcre-3.1 ) + php? ( dev-lang/php:=[cgi] ) + rrdtool? ( net-analyzer/rrdtool ) + ssl? ( >=dev-libs/openssl-0.9.7:=[kerberos?] ) + webdav? ( + dev-libs/libxml2 + >=dev-db/sqlite-3 + sys-fs/e2fsprogs + ) + xattr? ( kernel_linux? ( sys-apps/attr ) ) + zlib? ( >=sys-libs/zlib-1.1 )" + +DEPEND="${CDEPEND} + virtual/pkgconfig + doc? ( dev-python/docutils ) + test? ( + virtual/perl-Test-Harness + dev-libs/fcgi + )" + +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-apache ) +" + +# update certain parts of lighttpd.conf based on conditionals +update_config() { + local config="${D}/etc/lighttpd/lighttpd.conf" + + # enable php/mod_fastcgi settings + use php && { sed -i -e 's|#.*\(include.*fastcgi.*$\)|\1|' ${config} || die; } + + # enable stat() caching + use fam && { sed -i -e 's|#\(.*stat-cache.*$\)|\1|' ${config} || die; } + + # automatically listen on IPv6 if built with USE=ipv6. Bug #234987 + use ipv6 && { sed -i -e 's|# server.use-ipv6|server.use-ipv6|' ${config} || die; } +} + +# remove non-essential stuff (for USE=minimal) +remove_non_essential() { + local libdir="${D}/usr/$(get_libdir)/${PN}" + + # text docs + use doc || rm -fr "${D}"/usr/share/doc/${PF}/txt + + # non-essential modules + rm -f \ + ${libdir}/mod_{compress,evhost,expire,proxy,scgi,secdownload,simple_vhost,status,setenv,trigger*,usertrack}.* + + # allow users to keep some based on USE flags + use pcre || rm -f ${libdir}/mod_{ssi,re{direct,write}}.* + use webdav || rm -f ${libdir}/mod_webdav.* + use mysql || rm -f ${libdir}/mod_mysql_vhost.* + use lua || rm -f ${libdir}/mod_{cml,magnet}.* + use rrdtool || rm -f ${libdir}/mod_rrdtool.* + use zlib || rm -f ${libdir}/mod_compress.* +} + +pkg_setup() { + if ! use pcre ; then + ewarn "It is highly recommended that you build ${PN}" + ewarn "with perl regular expressions support via USE=pcre." + ewarn "Otherwise you lose support for some core options such" + ewarn "as conditionals and modules such as mod_re{write,direct}" + ewarn "and mod_ssi." + fi + if use mmap; then + ewarn "You have enabled the mmap option. This option may allow" + ewarn "local users to trigger SIGBUG crashes. Use this option" + ewarn "with EXTRA care." + fi + enewgroup lighttpd + enewuser lighttpd -1 -1 /var/www/localhost/htdocs lighttpd + + DOC_CONTENTS="IPv6 migration guide:\n + http://redmine.lighttpd.net/projects/lighttpd/wiki/IPv6-Config" +} + +src_prepare() { + base_src_prepare + #dev-python/docutils installs rst2html.py not rst2html + sed -i -e 's|\(rst2html\)|\1.py|g' doc/outdated/Makefile.am || \ + die "sed doc/Makefile.am failed" + # Experimental patch for progress bar. Bug #380093 + if use uploadprogress; then + epatch "${FILESDIR}"/${PN}-1.4.29-mod_uploadprogress.patch + fi + eautoreconf +} + +src_configure() { + econf --libdir=/usr/$(get_libdir)/${PN} \ + --enable-lfs \ + $(use_enable ipv6) \ + $(use_enable mmap) \ + $(use_with bzip2) \ + $(use_with fam) \ + $(use_with gdbm) \ + $(use_with kerberos kerberos5) \ + $(use_with ldap) \ + $(use_with libev) \ + $(use_with lua) \ + $(use_with memcache) \ + $(use_with mysql) \ + $(use_with pcre) \ + $(use_with ssl openssl) \ + $(use_with webdav webdav-props) \ + $(use_with webdav webdav-locks) \ + $(use_with xattr attr) \ + $(use_with zlib) +} + +src_compile() { + emake + + if use doc ; then + einfo "Building HTML documentation" + cd doc || die + emake html + fi +} + +src_test() { + if [[ ${EUID} -eq 0 ]]; then + default_src_test + else + ewarn "test skipped, please re-run as root if you wish to test ${PN}" + fi +} + +src_install() { + emake DESTDIR="${D}" install + + # init script stuff + newinitd "${FILESDIR}"/lighttpd.initd lighttpd + newconfd "${FILESDIR}"/lighttpd.confd lighttpd + use fam && has_version app-admin/fam && \ + { sed -i 's/after famd/need famd/g' "${D}"/etc/init.d/lighttpd || die; } + + # configs + insinto /etc/lighttpd + doins "${FILESDIR}"/conf/lighttpd.conf + doins "${FILESDIR}"/conf/mime-types.conf + doins "${FILESDIR}"/conf/mod_cgi.conf + doins "${FILESDIR}"/conf/mod_fastcgi.conf + + # update lighttpd.conf directives based on conditionals + update_config + + # docs + dodoc AUTHORS README NEWS doc/scripts/*.sh + newdoc doc/config//lighttpd.conf lighttpd.conf.distrib + use ipv6 && readme.gentoo_create_doc + + use doc && dohtml -r doc/* + + docinto txt + dodoc doc/outdated/*.txt + + # logrotate + insinto /etc/logrotate.d + newins "${FILESDIR}"/lighttpd.logrotate-r1 lighttpd + + keepdir /var/l{ib,og}/lighttpd /var/www/localhost/htdocs + fowners lighttpd:lighttpd /var/l{ib,og}/lighttpd + fperms 0750 /var/l{ib,og}/lighttpd + + #spawn-fcgi may optionally be installed via www-servers/spawn-fcgi + rm -f "${D}"/usr/bin/spawn-fcgi "${D}"/usr/share/man/man1/spawn-fcgi.* + + use minimal && remove_non_essential + + systemd_dounit "${FILESDIR}/${PN}.service" + systemd_dotmpfilesd "${FILESDIR}/${PN}.tmpfiles.conf" +} + +pkg_postinst () { + use ipv6 && readme.gentoo_print_elog + + if [[ -f ${ROOT}etc/conf.d/spawn-fcgi.conf ]] ; then + einfo "spawn-fcgi is now provided by www-servers/spawn-fcgi." + einfo "spawn-fcgi's init script configuration is now located" + einfo "at /etc/conf.d/spawn-fcgi." + fi + + if [[ -f ${ROOT}etc/lighttpd.conf ]] ; then + elog "Gentoo has a customized configuration," + elog "which is now located in /etc/lighttpd. Please migrate your" + elog "existing configuration." + fi + + if use uploadprogress; then + elog "WARNING! mod_uploadprogress is a backported module from the" + elog "1.5x-branch, which is not considered stable yet. Please go to" + elog "http://redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress" + elog "for more information. This configuration also is NOT supported" + elog "by upstream, so please refrain from reporting bugs. You have" + elog "been warned!" + fi +} diff --git a/www-servers/lighttpd/lighttpd-1.4.35.ebuild b/www-servers/lighttpd/lighttpd-1.4.35.ebuild new file mode 100644 index 000000000000..ef3f07e4c96e --- /dev/null +++ b/www-servers/lighttpd/lighttpd-1.4.35.ebuild @@ -0,0 +1,227 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="4" +inherit base autotools eutils depend.php readme.gentoo user systemd + +DESCRIPTION="Lightweight high-performance web server" +HOMEPAGE="http://www.lighttpd.net/" +SRC_URI="http://download.lighttpd.net/lighttpd/releases-1.4.x/${P}.tar.bz2" + +LICENSE="BSD GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="bzip2 doc fam gdbm ipv6 kerberos ldap libev lua minimal mmap memcache mysql pcre php rrdtool selinux ssl test uploadprogress webdav xattr zlib" + +REQUIRED_USE="kerberos? ( ssl )" + +CDEPEND=" + bzip2? ( app-arch/bzip2 ) + fam? ( virtual/fam ) + gdbm? ( sys-libs/gdbm ) + ldap? ( >=net-nds/openldap-2.1.26 ) + libev? ( >=dev-libs/libev-4.01 ) + lua? ( >=dev-lang/lua-5.1 ) + memcache? ( dev-libs/libmemcache ) + mysql? ( >=virtual/mysql-4.0 ) + pcre? ( >=dev-libs/libpcre-3.1 ) + php? ( dev-lang/php[cgi] ) + rrdtool? ( net-analyzer/rrdtool ) + ssl? ( >=dev-libs/openssl-0.9.7[kerberos?] ) + webdav? ( + dev-libs/libxml2 + >=dev-db/sqlite-3 + sys-fs/e2fsprogs + ) + xattr? ( kernel_linux? ( sys-apps/attr ) ) + zlib? ( >=sys-libs/zlib-1.1 )" + +DEPEND="${CDEPEND} + virtual/pkgconfig + doc? ( dev-python/docutils ) + test? ( + virtual/perl-Test-Harness + dev-libs/fcgi + )" + +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-apache ) +" + +# update certain parts of lighttpd.conf based on conditionals +update_config() { + local config="${D}/etc/lighttpd/lighttpd.conf" + + # enable php/mod_fastcgi settings + use php && { sed -i -e 's|#.*\(include.*fastcgi.*$\)|\1|' ${config} || die; } + + # enable stat() caching + use fam && { sed -i -e 's|#\(.*stat-cache.*$\)|\1|' ${config} || die; } + + # automatically listen on IPv6 if built with USE=ipv6. Bug #234987 + use ipv6 && { sed -i -e 's|# server.use-ipv6|server.use-ipv6|' ${config} || die; } +} + +# remove non-essential stuff (for USE=minimal) +remove_non_essential() { + local libdir="${D}/usr/$(get_libdir)/${PN}" + + # text docs + use doc || rm -fr "${D}"/usr/share/doc/${PF}/txt + + # non-essential modules + rm -f \ + ${libdir}/mod_{compress,evhost,expire,proxy,scgi,secdownload,simple_vhost,status,setenv,trigger*,usertrack}.* + + # allow users to keep some based on USE flags + use pcre || rm -f ${libdir}/mod_{ssi,re{direct,write}}.* + use webdav || rm -f ${libdir}/mod_webdav.* + use mysql || rm -f ${libdir}/mod_mysql_vhost.* + use lua || rm -f ${libdir}/mod_{cml,magnet}.* + use rrdtool || rm -f ${libdir}/mod_rrdtool.* + use zlib || rm -f ${libdir}/mod_compress.* +} + +pkg_setup() { + if ! use pcre ; then + ewarn "It is highly recommended that you build ${PN}" + ewarn "with perl regular expressions support via USE=pcre." + ewarn "Otherwise you lose support for some core options such" + ewarn "as conditionals and modules such as mod_re{write,direct}" + ewarn "and mod_ssi." + fi + if use mmap; then + ewarn "You have enabled the mmap option. This option may allow" + ewarn "local users to trigger SIGBUG crashes. Use this option" + ewarn "with EXTRA care." + fi + enewgroup lighttpd + enewuser lighttpd -1 -1 /var/www/localhost/htdocs lighttpd + + DOC_CONTENTS="IPv6 migration guide:\n + http://redmine.lighttpd.net/projects/lighttpd/wiki/IPv6-Config" +} + +src_prepare() { + base_src_prepare + #dev-python/docutils installs rst2html.py not rst2html + sed -i -e 's|\(rst2html\)|\1.py|g' doc/outdated/Makefile.am || \ + die "sed doc/Makefile.am failed" + # Experimental patch for progress bar. Bug #380093 + if use uploadprogress; then + epatch "${FILESDIR}"/${PN}-1.4.29-mod_uploadprogress.patch + fi + eautoreconf +} + +src_configure() { + econf --libdir=/usr/$(get_libdir)/${PN} \ + --enable-lfs \ + $(use_enable ipv6) \ + $(use_enable mmap) \ + $(use_with bzip2) \ + $(use_with fam) \ + $(use_with gdbm) \ + $(use_with kerberos kerberos5) \ + $(use_with ldap) \ + $(use_with libev) \ + $(use_with lua) \ + $(use_with memcache) \ + $(use_with mysql) \ + $(use_with pcre) \ + $(use_with ssl openssl) \ + $(use_with webdav webdav-props) \ + $(use_with webdav webdav-locks) \ + $(use_with xattr attr) \ + $(use_with zlib) +} + +src_compile() { + emake + + if use doc ; then + einfo "Building HTML documentation" + cd doc || die + emake html + fi +} + +src_test() { + if [[ ${EUID} -eq 0 ]]; then + default_src_test + else + ewarn "test skipped, please re-run as root if you wish to test ${PN}" + fi +} + +src_install() { + emake DESTDIR="${D}" install + + # init script stuff + newinitd "${FILESDIR}"/lighttpd.initd lighttpd + newconfd "${FILESDIR}"/lighttpd.confd lighttpd + use fam && has_version app-admin/fam && \ + { sed -i 's/after famd/need famd/g' "${D}"/etc/init.d/lighttpd || die; } + + # configs + insinto /etc/lighttpd + doins "${FILESDIR}"/conf/lighttpd.conf + doins "${FILESDIR}"/conf/mime-types.conf + doins "${FILESDIR}"/conf/mod_cgi.conf + doins "${FILESDIR}"/conf/mod_fastcgi.conf + + # update lighttpd.conf directives based on conditionals + update_config + + # docs + dodoc AUTHORS README NEWS doc/scripts/*.sh + newdoc doc/config//lighttpd.conf lighttpd.conf.distrib + use ipv6 && readme.gentoo_create_doc + + use doc && dohtml -r doc/* + + docinto txt + dodoc doc/outdated/*.txt + + # logrotate + insinto /etc/logrotate.d + newins "${FILESDIR}"/lighttpd.logrotate lighttpd + + keepdir /var/l{ib,og}/lighttpd /var/www/localhost/htdocs + fowners lighttpd:lighttpd /var/l{ib,og}/lighttpd + fperms 0750 /var/l{ib,og}/lighttpd + + #spawn-fcgi may optionally be installed via www-servers/spawn-fcgi + rm -f "${D}"/usr/bin/spawn-fcgi "${D}"/usr/share/man/man1/spawn-fcgi.* + + use minimal && remove_non_essential + + systemd_dounit "${FILESDIR}/${PN}.service" + systemd_dotmpfilesd "${FILESDIR}/${PN}.tmpfiles.conf" +} + +pkg_postinst () { + use ipv6 && readme.gentoo_print_elog + + if [[ -f ${ROOT}etc/conf.d/spawn-fcgi.conf ]] ; then + einfo "spawn-fcgi is now provided by www-servers/spawn-fcgi." + einfo "spawn-fcgi's init script configuration is now located" + einfo "at /etc/conf.d/spawn-fcgi." + fi + + if [[ -f ${ROOT}etc/lighttpd.conf ]] ; then + elog "Gentoo has a customized configuration," + elog "which is now located in /etc/lighttpd. Please migrate your" + elog "existing configuration." + fi + + if use uploadprogress; then + elog "WARNING! mod_uploadprogress is a backported module from the" + elog "1.5x-branch, which is not considered stable yet. Please go to" + elog "http://redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress" + elog "for more information. This configuration also is NOT supported" + elog "by upstream, so please refrain from reporting bugs. You have" + elog "been warned!" + fi +} diff --git a/www-servers/lighttpd/metadata.xml b/www-servers/lighttpd/metadata.xml new file mode 100644 index 000000000000..c2f3a89122a6 --- /dev/null +++ b/www-servers/lighttpd/metadata.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer> + <email>wired@gentoo.org</email> + <name>Alex Alexander</name> + </maintainer> + <maintainer> + <email>hwoarang@gentoo.org</email> + <name>Markos Chandras</name> + </maintainer> + <longdescription lang="en"> + lighttpd a secure, fast, compliant and very flexible web-server + which has been optimized for high-performance environments. It has a very + low memory footprint compared to other webservers and takes care of cpu-load. + Its advanced feature-set (FastCGI, CGI, Auth, Output-Compression, + URL-Rewriting and many more) make lighttpd the perfect webserver-software + for every server that is suffering load problems. + </longdescription> + <use> + <flag name='libev'>Enable fdevent handler</flag> + <flag name='memcache'>Enable memcache support for mod_cml and + mod_trigger_b4_dl</flag> + <flag name='mmap'>Use mmap with files owned by lighttpd. This is a dangerous option as it may allow local users to trigger SIGBUS crashes.</flag> + <flag name='rrdtool'>Enable rrdtool support via mod_rrdtool</flag> + <flag name='uploadprogress'>Apply experimental patch for upload progress module</flag> + <flag name='webdav'>Enable webdav properties</flag> + </use> +</pkgmetadata> + |