diff --git a/net/lighttpd/Makefile b/net/lighttpd/Makefile new file mode 100644 index 000000000..c429cc138 --- /dev/null +++ b/net/lighttpd/Makefile @@ -0,0 +1,328 @@ +# +# Copyright (C) 2006-2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=lighttpd +PKG_VERSION:=1.4.30 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=http://download.lighttpd.net/lighttpd/releases-1.4.x +PKG_MD5SUM:=4630517b8342d4ec0a2d61a0a9e05c82 + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/lighttpd/Default + SUBMENU:=Web Servers/Proxies + SECTION:=net + CATEGORY:=Network + URL:=http://www.lighttpd.net/ + MAINTAINER:=W. Michael Petullo +endef + +define Package/lighttpd + $(call Package/lighttpd/Default) + MENU:=1 + DEPENDS:=+LIGHTTPD_SSL:libopenssl +libpcre +libpthread + TITLE:=A flexible and lightweight web server +endef + +define Package/lighttpd/config +config LIGHTTPD_SSL + bool "SSL support" + depends on PACKAGE_lighttpd + default y + help + Implements SSL support in lighttpd (using libopenssl). This + option is required if you enable the SSL engine in your + lighttpd confguration file. +endef + +define Package/lighttpd-mod-access + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Access restrictions module +endef + +define Package/lighttpd-mod-accesslog + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Access logging module +endef + +define Package/lighttpd-mod-alias + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Directory alias module +endef + +define Package/lighttpd-mod-auth + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Authentication module +endef + +define Package/lighttpd-mod-cgi + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=CGI module +endef + +define Package/lighttpd-mod-cml + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Cache Meta Language module +endef + +define Package/lighttpd-mod-compress + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +zlib + TITLE:=Compress output module +endef + +define Package/lighttpd-mod-evasive + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Evasive module +endef + +define Package/lighttpd-mod-evhost + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Exnhanced Virtual-Hosting module +endef + +define Package/lighttpd-mod-expire + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Expire module +endef + +define Package/lighttpd-mod-extforward + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Extract client IP module +endef + +define Package/lighttpd-mod-fastcgi + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=FastCGI module +endef + +define Package/lighttpd-mod-flv-streaming + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=flv streaming module +endef + +define Package/lighttpd-mod-magnet + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=magnet module +endef + +define Package/lighttpd-mod-mysql-vhost + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libmysqlclient + TITLE:=Mysql virtual hosting module +endef + +define Package/lighttpd-mod-proxy + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Proxy module +endef + +define Package/lighttpd-mod-redirect + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libpcre + TITLE:=URL redirection module +endef + +define Package/lighttpd-mod-rewrite + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libpcre + TITLE:=URL rewriting module +endef + +define Package/lighttpd-mod-rrdtool + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=rrdtool module +endef + +define Package/lighttpd-mod-scgi + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=SCGI module +endef + +define Package/lighttpd-mod-secdownload + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Secure and fast download module +endef + +define Package/lighttpd-mod-setenv + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Environment variable setting module +endef + +define Package/lighttpd-mod-simple-vhost + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Simple virtual hosting module +endef + +define Package/lighttpd-mod-ssi + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libpcre + TITLE:=SSI module +endef + +define Package/lighttpd-mod-status + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=Server status display module +endef + +define Package/lighttpd-mod-trigger-b4-dl + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libpcre + TITLE:=Trigger before download module +endef + +define Package/lighttpd-mod-userdir + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=User directory module +endef + +define Package/lighttpd-mod-usertrack + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd + TITLE:=User tracking module +endef + +define Package/lighttpd-mod-webdav + $(call Package/lighttpd/Default) + DEPENDS:=lighttpd +libsqlite3 +libuuid +libxml2 + TITLE:=WebDAV module +endef + +CONFIGURE_ARGS+= \ + --libdir=/usr/lib/lighttpd \ + --sysconfdir=/etc/lighttpd \ + --enable-shared \ + --enable-static \ + --disable-rpath \ + --without-attr \ + --without-bzip2 \ + --without-fam \ + --without-gdbm \ + --without-ldap \ + --without-lua \ + --without-memcache \ + --without-mysql \ + --with-pcre \ + --without-valgrind \ + $(call autoconf_bool,CONFIG_IPV6,ipv6) + +CONFIGURE_VARS+= \ + PCRE_LIB="-lpcre" \ + +ifneq ($(strip $(CONFIG_LIGHTTPD_SSL)),) + CONFIGURE_ARGS+= \ + --with-openssl="$(STAGING_DIR)/usr" +else + CONFIGURE_ARGS+= \ + --without-openssl +endif + +ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-webdav),) + CONFIGURE_ARGS+= \ + --with-webdav-locks \ + --with-webdav-props + # XXX: needed by sqlite3 to prevent segfaults in mod_webdav.so + CONFIGURE_VARS+= \ + LIBS="-lpthread" +else + CONFIGURE_ARGS+= \ + --without-webdav-locks \ + --without-webdav-props +endif + +define Build/Configure +$(call Build/Configure/Default) + # XXX: override pcre (mis)detection by ./configure when cross-compiling + echo "#define HAVE_LIBPCRE 1" >>$(PKG_BUILD_DIR)/config.h + echo "#define HAVE_PCRE_H 1" >>$(PKG_BUILD_DIR)/config.h +endef + +define Package/lighttpd/conffiles +/etc/lighttpd/lighttpd.conf +endef + +define Package/lighttpd/install + $(INSTALL_DIR) $(1)/etc/lighttpd + $(INSTALL_DATA) ./files/lighttpd.conf $(1)/etc/lighttpd/ + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/lighttpd.init $(1)/etc/init.d/lighttpd + $(INSTALL_DIR) $(1)/usr/lib/lighttpd + for m in dirlisting indexfile staticfile; do \ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$$${m}.so $(1)/usr/lib/lighttpd/ ; \ + done + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lighttpd $(1)/usr/sbin/ +endef + +define BuildPlugin + define Package/$(1)/install + [ -z "$(2)" ] || $(INSTALL_DIR) $$(1)/usr/lib/lighttpd + for m in $(2); do \ + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$$$$$$${m}.so $$(1)/usr/lib/lighttpd/ ; \ + done + endef + + $$(eval $$(call BuildPackage,$(1))) +endef + +$(eval $(call BuildPackage,lighttpd)) +$(eval $(call BuildPlugin,lighttpd-mod-access,access)) +$(eval $(call BuildPlugin,lighttpd-mod-accesslog,accesslog)) +$(eval $(call BuildPlugin,lighttpd-mod-alias,alias)) +$(eval $(call BuildPlugin,lighttpd-mod-auth,auth)) +$(eval $(call BuildPlugin,lighttpd-mod-cgi,cgi)) +$(eval $(call BuildPlugin,lighttpd-mod-cml,cml)) +$(eval $(call BuildPlugin,lighttpd-mod-compress,compress)) +$(eval $(call BuildPlugin,lighttpd-mod-evasive,evasive)) +$(eval $(call BuildPlugin,lighttpd-mod-evhost,evhost)) +$(eval $(call BuildPlugin,lighttpd-mod-expire,expire)) +$(eval $(call BuildPlugin,lighttpd-mod-extforward,extforward)) +$(eval $(call BuildPlugin,lighttpd-mod-fastcgi,fastcgi)) +$(eval $(call BuildPlugin,lighttpd-mod-flv-streaming,flv_streaming)) +$(eval $(call BuildPlugin,lighttpd-mod-magnet,magnet)) +$(eval $(call BuildPlugin,lighttpd-mod-proxy,proxy)) +$(eval $(call BuildPlugin,lighttpd-mod-redirect,redirect)) +$(eval $(call BuildPlugin,lighttpd-mod-rewrite,rewrite)) +$(eval $(call BuildPlugin,lighttpd-mod-rrdtool,rrdtool)) +$(eval $(call BuildPlugin,lighttpd-mod-scgi,scgi)) +$(eval $(call BuildPlugin,lighttpd-mod-secdownload,secdownload)) +$(eval $(call BuildPlugin,lighttpd-mod-setenv,setenv)) +$(eval $(call BuildPlugin,lighttpd-mod-simple-vhost,simple_vhost)) +$(eval $(call BuildPlugin,lighttpd-mod-ssi,ssi)) +$(eval $(call BuildPlugin,lighttpd-mod-status,status)) +$(eval $(call BuildPlugin,lighttpd-mod-trigger-b4-dl,trigger_b4_dl)) +$(eval $(call BuildPlugin,lighttpd-mod-userdir,userdir)) +$(eval $(call BuildPlugin,lighttpd-mod-usertrack,usertrack)) +$(eval $(call BuildPlugin,lighttpd-mod-webdav,webdav)) diff --git a/net/lighttpd/files/lighttpd.conf b/net/lighttpd/files/lighttpd.conf new file mode 100644 index 000000000..269f546ee --- /dev/null +++ b/net/lighttpd/files/lighttpd.conf @@ -0,0 +1,231 @@ +# lighttpd configuration file +# +## modules to load +# all other module should only be loaded if really neccesary +# - saves some time +# - saves memory +#server.modules = ( +# "mod_rewrite", +# "mod_redirect", +# "mod_alias", +# "mod_auth", +# "mod_status", +# "mod_setenv", +# "mod_fastcgi", +# "mod_proxy", +# "mod_simple_vhost", +# "mod_cgi", +# "mod_ssi", +# "mod_usertrack", +# "mod_expire", +# "mod_webdav" +#) + +# force use of the "write" backend (closes: #2401) +server.network-backend = "write" + +## a static document-root, for virtual-hosting take look at the +## server.virtual-* options +server.document-root = "/www/" + +## where to send error-messages to +#server.errorlog = "/var/log/lighttpd/error.log" + +## files to check for if .../ is requested +index-file.names = ( "index.html", "default.html", "index.htm", "default.htm" ) + +## mimetype mapping +mimetype.assign = ( + ".pdf" => "application/pdf", + ".class" => "application/octet-stream", + ".pac" => "application/x-ns-proxy-autoconfig", + ".swf" => "application/x-shockwave-flash", + ".wav" => "audio/x-wav", + ".gif" => "image/gif", + ".jpg" => "image/jpeg", + ".jpeg" => "image/jpeg", + ".png" => "image/png", + ".svg" => "image/svg+xml", + ".css" => "text/css", + ".html" => "text/html", + ".htm" => "text/html", + ".js" => "text/javascript", + ".txt" => "text/plain", + ".dtd" => "text/xml", + ".xml" => "text/xml" + ) + +## Use the "Content-Type" extended attribute to obtain mime type if possible +#mimetypes.use-xattr = "enable" + +## send a different Server: header +## be nice and keep it at lighttpd +#server.tag = "lighttpd" + +$HTTP["url"] =~ "\.pdf$" { + server.range-requests = "disable" +} + +## +# which extensions should not be handle via static-file transfer +# +# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi +static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) + +######### Options that are good to be but not neccesary to be changed ####### + +## bind to port (default: 80) +#server.port = 81 + +## bind to localhost (default: all interfaces) +#server.bind = "localhost" + +## error-handler for status 404 +#server.error-handler-404 = "/error-handler.html" +#server.error-handler-404 = "/error-handler.php" + +## to help the rc.scripts +server.pid-file = "/var/run/lighttpd.pid" + + +###### virtual hosts +## +## 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/" + + +## +## Format: .html +## -> ..../status-404.html for 'File not found' +#server.errorfile-prefix = "/www/error-" + +## virtual directory listings +#server.dir-listing = "enable" + +## send unhandled HTTP-header headers to error-log +#debug.dump-unknown-headers = "enable" + +### only root can use these options +# +# chroot() to directory (default: no chroot() ) +#server.chroot = "/" + +## change uid to (default: don't care) +#server.username = "nobody" +# +server.upload-dirs = ( "/tmp" ) + +## change uid to (default: don't care) +#server.groupname = "nobody" + +#### compress module +#compress.cache-dir = "/dev/null/" +#compress.filetype = ("text/plain", "text/html") + +#### proxy module +## read proxy.txt for more info +#proxy.server = ( +# ".php" => ( +# "localhost" => ( +# "host" => "192.168.0.101", +# "port" => 80 +# ) +# ) +#) + +#### fastcgi module +## read fastcgi.txt for more info +#fastcgi.server = ( +# ".php" => ( +# "localhost" => ( +# "socket" => "/tmp/php-fastcgi.socket", +# "bin-path" => "/usr/local/bin/php" +# ) +# ) +#) + +#### CGI module +#cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" ) + +#### SSL engine +#ssl.engine = "enable" +#ssl.pemfile = "server.pem" + +#### status module +#status.status-url = "/server-status" +#status.config-url = "/server-config" + +#### auth module +## read authentification.txt for more info +#auth.backend = "plain" +#auth.backend.plain.userfile = "lighttpd.user" +#auth.backend.plain.groupfile = "lighttpd.group" +#auth.require = ( +# "/server-status" => ( +# "method" => "digest", +# "realm" => "download archiv", +# "require" => "group=www|user=jan|host=192.168.2.10" +# ), +# "/server-info" => ( +# "method" => "digest", +# "realm" => "download archiv", +# "require" => "group=www|user=jan|host=192.168.2.10" +# ) +#) + +#### url handling modules (rewrite, redirect, access) +#url.rewrite = ( "^/$" => "/server-status" ) +#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" ) + +#### both rewrite/redirect support back reference to regex conditional using %n +#$HTTP["host"] =~ "^www\.(.*)" { +# url.redirect = ( "^/(.*)" => "http://%1/$1" ) +#} + +#### expire module +#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes") + +#### ssi +#ssi.extension = ( ".shtml" ) + +#### setenv +#setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" ) +#setenv.add-response-header = ( "X-Secret-Message" => "42" ) + +#### variable usage: +## variable name without "." is auto prefixed by "var." and becomes "var.bar" +#bar = 1 +#var.mystring = "foo" + +## integer add +#bar += 1 +## string concat, with integer cast as string, result: "www.foo1.com" +#server.name = "www." + mystring + var.bar + ".com" +## array merge +#index-file.names = (foo + ".php") + index-file.names +#index-file.names += (foo + ".php") + +#### include +#include /etc/lighttpd/lighttpd-inc.conf +## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf" +#include "lighttpd-inc.conf" + +#### include_shell +#include_shell "echo var.a=1" +## the above is same as: +#var.a=1 + +#### webdav +#$HTTP["url"] =~ "^/webdav($|/)" { +# webdav.activate = "enable" +# webdav.is-readonly = "enable" +# webdav.sqlite-db-name = "/var/run/lighttpd-webdav-lock.db" +#} diff --git a/net/lighttpd/files/lighttpd.init b/net/lighttpd/files/lighttpd.init new file mode 100644 index 000000000..d73a5da98 --- /dev/null +++ b/net/lighttpd/files/lighttpd.init @@ -0,0 +1,16 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006-2011 OpenWrt.org + +SERVICE_USE_PID=1 + +START=50 + +start() { + mkdir -m 0755 -p /var/log/lighttpd + service_start /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf +} + +stop() { + service_stop /usr/sbin/lighttpd +} +