You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
11 KiB

  1. #
  2. # Copyright (C) 2006-2018 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. PKG_NAME:=lighttpd
  9. PKG_VERSION:=1.4.56
  10. PKG_RELEASE:=5
  11. # release candidate ~rcX testing; remove for release
  12. #PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.4.56
  13. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  14. PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
  15. PKG_HASH:=e4ce84cd79e8ae8ba193c7a7cc79c4afba9a076b443ef9f8d4bcd13a3354df77
  16. PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
  17. PKG_LICENSE:=BSD-3-Clause
  18. PKG_LICENSE_FILES:=COPYING
  19. PKG_CPE_ID:=cpe:/a:lighttpd:lighttpd
  20. PKG_INSTALL:=1
  21. PKG_BUILD_DEPENDS:=meson/host
  22. PKG_CONFIG_DEPENDS:=CONFIG_LIGHTTPD_SSL $(patsubst %,CONFIG_PACKAGE_lighttpd-mod-%,$(REBUILD_MODULES))
  23. REBUILD_MODULES=authn_gssapi authn_ldap authn_mysql cml magnet mysql_vhost trigger_b4_dl webdav
  24. include $(INCLUDE_DIR)/package.mk
  25. include ../../devel/meson/meson.mk
  26. define Package/lighttpd/Default
  27. SECTION:=net
  28. CATEGORY:=Network
  29. SUBMENU:=Web Servers/Proxies
  30. URL:=https://www.lighttpd.net/
  31. endef
  32. define Package/lighttpd
  33. $(call Package/lighttpd/Default)
  34. MENU:=1
  35. DEPENDS:=+libnettle +libpcre +libpthread +LIGHTTPD_LOGROTATE:logrotate
  36. TITLE:=A flexible and lightweight web server
  37. endef
  38. define Package/lighttpd/config
  39. config LIGHTTPD_SSL
  40. bool "SSL support"
  41. depends on PACKAGE_lighttpd
  42. default y
  43. help
  44. Implements SSL support in lighttpd (using libopenssl). This
  45. option is enabled by default for backwards compatibility.
  46. Select one TLS module below if you enable the SSL engine in
  47. your lighttpd configuration file.
  48. (mod_gnutls, mod_mbedtls, mod_nss, mod_openssl, mod_wolfssl)
  49. config LIGHTTPD_LOGROTATE
  50. bool "Logrotate support"
  51. depends on PACKAGE_lighttpd
  52. default n
  53. help
  54. It adds support for logrotate functionality.
  55. endef
  56. ifneq ($(strip $(CONFIG_LIGHTTPD_SSL)),)
  57. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-openssl),)
  58. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-mbedtls),)
  59. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-wolfssl),)
  60. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-gnutls),)
  61. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-nss),)
  62. CONFIG_PACKAGE_lighttpd-mod-openssl=m
  63. endif
  64. endif
  65. endif
  66. endif
  67. endif
  68. endif
  69. ifneq ($(CONFIG_PACKAGE_lighttpd-mod-auth),)
  70. ifeq ($(CONFIG_PACKAGE_lighttpd-mod-authn_file),)
  71. CONFIG_PACKAGE_lighttpd-mod-authn_file=m
  72. endif
  73. endif
  74. MESON_ARGS += \
  75. -Dwith_brotli=false \
  76. -Dwith_bzip=false \
  77. -Dwith_dbi=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_dbi)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_dbi),true,false) \
  78. -Dwith_fam=false \
  79. -Dwith_gdbm=$(if $(CONFIG_PACKAGE_lighttpd-mod-trigger_b4_dl),true,false) \
  80. -Dwith_geoip=false \
  81. -Dwith_gnutls=$(if $(CONFIG_PACKAGE_lighttpd-mod-gnutls),true,false) \
  82. -Dwith_krb5=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_gssapi),true,false) \
  83. -Dwith_ldap=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_ldap)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_ldap),true,false) \
  84. -Dwith_libev=false \
  85. -Dwith_libunwind=false \
  86. -Dwith_lua=$(if $(CONFIG_PACKAGE_lighttpd-mod-cml)$(CONFIG_PACKAGE_lighttpd-mod-magnet),true,false) \
  87. -Dwith_maxminddb=$(if $(CONFIG_PACKAGE_lighttpd-mod-maxminddb),true,false) \
  88. -Dwith_mbedtls=$(if $(CONFIG_PACKAGE_lighttpd-mod-mbedtls),true,false) \
  89. -Dwith_memcached=false \
  90. -Dwith_mysql=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_mysql)$(CONFIG_PACKAGE_lighttpd-mod-mysql_vhost)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_mysql),true,false) \
  91. -Dwith_nettle=true \
  92. -Dwith_nss=$(if $(CONFIG_PACKAGE_lighttpd-mod-nss),true,false) \
  93. -Dwith_openssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-openssl),true,false) \
  94. -Dwith_pam=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_pam),true,false) \
  95. -Dwith_pcre=true \
  96. -Dwith_pgsql=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_pgsql),true,false) \
  97. -Dwith_sasl=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_sasl),true,false) \
  98. -Dwith_webdav_locks=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
  99. -Dwith_webdav_props=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
  100. -Dwith_wolfssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-wolfssl),true,false) \
  101. -Dwith_xattr=false \
  102. -Dwith_zlib=$(if $(CONFIG_PACKAGE_lighttpd-mod-deflate),true,false)
  103. BASE_MODULES:=dirlisting indexfile staticfile
  104. define Package/lighttpd/conffiles
  105. /etc/lighttpd/lighttpd.conf
  106. endef
  107. define Package/lighttpd/install
  108. $(INSTALL_DIR) $(1)/etc/lighttpd
  109. $(INSTALL_DATA) ./files/lighttpd.conf $(1)/etc/lighttpd/
  110. $(INSTALL_DATA) $(PKG_BUILD_DIR)/doc/config/conf.d/mime.conf $(1)/etc/lighttpd/
  111. $(INSTALL_DIR) $(1)/etc/lighttpd/conf.d
  112. $(INSTALL_DIR) $(1)/etc/init.d
  113. $(INSTALL_BIN) ./files/lighttpd.init $(1)/etc/init.d/lighttpd
  114. $(INSTALL_DIR) $(1)/usr/lib/lighttpd
  115. for m in $(BASE_MODULES); do \
  116. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$$${m}.so $(1)/usr/lib/lighttpd/ ; \
  117. done
  118. $(INSTALL_DIR) $(1)/usr/sbin
  119. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lighttpd $(1)/usr/sbin/
  120. ifneq ($(strip $(CONFIG_LIGHTTPD_LOGROTATE)),)
  121. $(INSTALL_DIR) $(1)/etc/logrotate.d
  122. $(CP) ./files/lighttpd.logrotate $(1)/etc/logrotate.d/lighttpd.conf
  123. endif
  124. endef
  125. define BuildPlugin
  126. define Package/lighttpd-mod-$(1)
  127. $(call Package/lighttpd/Default)
  128. DEPENDS:=lighttpd
  129. ifneq ($(3),)
  130. DEPENDS+= $(3)
  131. endif
  132. TITLE:=$(2) module
  133. endef
  134. define Package/lighttpd-mod-$(1)/conffiles
  135. /etc/lighttpd/conf.d/$(4)-$(1).conf
  136. endef
  137. ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-$(1)),)
  138. define Package/lighttpd-mod-$(1)/install
  139. $(INSTALL_DIR) $$(1)/usr/lib/lighttpd
  140. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$(1).so $$(1)/usr/lib/lighttpd
  141. $(INSTALL_DIR) $$(1)/etc/lighttpd/conf.d
  142. if [ -f $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf ]; then \
  143. $(CP) $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  144. if ! grep -qF 'mod_$(1)' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf; then \
  145. sed -i "`sed '/^##/ !q' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf | wc -l` i\
  146. server.modules += ( \"mod_$(1)\" )" $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  147. fi \
  148. else \
  149. echo 'server.modules += ( "mod_$(1)" )' > $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  150. fi
  151. endef
  152. endif
  153. $$(eval $$(call BuildPackage,lighttpd-mod-$(1)))
  154. endef
  155. $(eval $(call BuildPackage,lighttpd))
  156. # First, permit redirect from HTTP to HTTPS.
  157. $(eval $(call BuildPlugin,redirect,URL redirection,+PACKAGE_lighttpd-mod-redirect:libpcre,10))
  158. # Next, permit authentication.
  159. $(eval $(call BuildPlugin,auth,Authentication,+PACKAGE_lighttpd-mod-auth:libnettle,20))
  160. $(eval $(call BuildPlugin,authn_dbi,DBI-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_dbi:libnettle +PACKAGE_lighttpd-mod-authn_dbi:libdbi,20))
  161. $(eval $(call BuildPlugin,authn_file,File-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_file:libnettle,20))
  162. $(eval $(call BuildPlugin,authn_gssapi,Kerberos-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_gssapi:krb5-libs,20))
  163. $(eval $(call BuildPlugin,authn_ldap,LDAP-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_ldap:libopenldap,20))
  164. $(eval $(call BuildPlugin,authn_mysql,Mysql-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_mysql:libnettle +PACKAGE_lighttpd-mod-authn_mysql:libmariadb,20))
  165. $(eval $(call BuildPlugin,authn_pam,PAM-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_pam:libpam,20))
  166. $(eval $(call BuildPlugin,authn_sasl,SASL-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_sasl:libsasl2,20))
  167. # Finally, everything else.
  168. $(eval $(call BuildPlugin,access,Access restrictions,,30))
  169. $(eval $(call BuildPlugin,accesslog,Access logging,,30))
  170. $(eval $(call BuildPlugin,alias,Directory alias,,30))
  171. $(eval $(call BuildPlugin,cgi,CGI,,30))
  172. $(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua +PACKAGE_lighttpd-mod-cml:libnettle,30))
  173. $(eval $(call BuildPlugin,deflate,Compress dynamic output,+PACKAGE_lighttpd-mod-deflate:zlib,30))
  174. $(eval $(call BuildPlugin,evasive,Evasive,,30))
  175. $(eval $(call BuildPlugin,evhost,Enhanced Virtual-Hosting,,30))
  176. $(eval $(call BuildPlugin,expire,Expire,,30))
  177. $(eval $(call BuildPlugin,extforward,Extract client,,30))
  178. $(eval $(call BuildPlugin,fastcgi,FastCGI,,30))
  179. $(eval $(call BuildPlugin,flv_streaming,FLV streaming,,30))
  180. $(eval $(call BuildPlugin,gnutls,TLS using gnutls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-gnutls:libgnutls,30))
  181. $(eval $(call BuildPlugin,magnet,Magnet,+PACKAGE_lighttpd-mod-magnet:liblua,30))
  182. $(eval $(call BuildPlugin,maxminddb,MaxMind DB,+PACKAGE_lighttpd-mod-maxminddb:libmaxminddb,30))
  183. $(eval $(call BuildPlugin,mbedtls,TLS using mbedtls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-mbedtls:libmbedtls,30))
  184. $(eval $(call BuildPlugin,nss,TLS using nss,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-nss:libnss,30))
  185. $(eval $(call BuildPlugin,openssl,TLS using openssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-openssl:libopenssl,30))
  186. $(eval $(call BuildPlugin,proxy,Proxy,,30))
  187. $(eval $(call BuildPlugin,rewrite,URL rewriting,+PACKAGE_lighttpd-mod-rewrite:libpcre,30))
  188. $(eval $(call BuildPlugin,rrdtool,RRDtool,,30))
  189. $(eval $(call BuildPlugin,scgi,SCGI,,30))
  190. $(eval $(call BuildPlugin,secdownload,Secure and fast download,+PACKAGE_lighttpd-mod-secdownload:libnettle,30))
  191. $(eval $(call BuildPlugin,setenv,Environment variable setting,,30))
  192. $(eval $(call BuildPlugin,simple_vhost,Simple virtual hosting,,30))
  193. $(eval $(call BuildPlugin,sockproxy,sockproxy,,30))
  194. $(eval $(call BuildPlugin,ssi,SSI,+PACKAGE_lighttpd-mod-ssi:libpcre,30))
  195. $(eval $(call BuildPlugin,staticfile,staticfile,,30))
  196. $(eval $(call BuildPlugin,status,Server status display,,30))
  197. $(eval $(call BuildPlugin,trigger_b4_dl,Trigger before download,+PACKAGE_lighttpd-mod-trigger_b4_dl:libpcre +PACKAGE_lighttpd-mod-trigger_b4_dl:libgdbm,30))
  198. $(eval $(call BuildPlugin,uploadprogress,Upload Progress,,30))
  199. $(eval $(call BuildPlugin,userdir,User directory,,30))
  200. $(eval $(call BuildPlugin,usertrack,User tracking,+PACKAGE_lighttpd-mod-usertrack:libnettle,30))
  201. $(eval $(call BuildPlugin,vhostdb,Virtual Host Database,,30))
  202. $(eval $(call BuildPlugin,vhostdb_dbi,Virtual Host Database (DBI),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_dbi:libdbi,30))
  203. $(eval $(call BuildPlugin,vhostdb_ldap,Virtual Host Database (LDAP),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_ldap:libopenldap,30))
  204. $(eval $(call BuildPlugin,vhostdb_mysql,Virtual Host Database (MariaDB),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_mysql:libmariadb,30))
  205. $(eval $(call BuildPlugin,vhostdb_pgsql,Virtual Host Database (PostgreSQL),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_pgsql:libpq,30))
  206. $(eval $(call BuildPlugin,mysql_vhost,Mysql virtual hosting,lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-mysql_vhost:libmariadb,30))
  207. $(eval $(call BuildPlugin,webdav,WebDAV,+PACKAGE_lighttpd-mod-webdav:libsqlite3 +PACKAGE_lighttpd-mod-webdav:libuuid +PACKAGE_lighttpd-mod-webdav:libxml2,30))
  208. $(eval $(call BuildPlugin,wolfssl,TLS using wolfssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-wolfssl:libwolfssl,30))
  209. $(eval $(call BuildPlugin,wstunnel,Websocket tunneling,+PACKAGE_lighttpd-mod-wstunnel:libnettle,30))