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.

210 lines
9.5 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.55
  10. PKG_RELEASE:=4
  11. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  12. PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
  13. PKG_HASH:=6a0b50e9c9d5cc3d9e48592315c25a2d645858f863e1ccd120507a30ce21e927
  14. PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
  15. PKG_LICENSE:=BSD-3-Clause
  16. PKG_LICENSE_FILES:=COPYING
  17. PKG_CPE_ID:=cpe:/a:lighttpd:lighttpd
  18. PKG_INSTALL:=1
  19. PKG_BUILD_DEPENDS:=meson/host
  20. PKG_CONFIG_DEPENDS:=CONFIG_LIGHTTPD_SSL $(patsubst %,CONFIG_PACKAGE_lighttpd-mod-%,$(REBUILD_MODULES))
  21. REBUILD_MODULES=authn_gssapi authn_ldap authn_mysql cml magnet mysql_vhost trigger_b4_dl webdav
  22. include $(INCLUDE_DIR)/package.mk
  23. # iconv is required for lighttpd's mysql plugin
  24. include $(INCLUDE_DIR)/nls.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:=+LIGHTTPD_SSL:libopenssl +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 required if you enable the SSL engine in your
  46. lighttpd confguration file.
  47. config LIGHTTPD_LOGROTATE
  48. bool "Logrotate support"
  49. depends on PACKAGE_lighttpd
  50. default n
  51. help
  52. It adds support for logrotate functionality.
  53. endef
  54. MESON_ARGS += \
  55. -Dwith_bzip=false \
  56. -Dwith_dbi=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_dbi),true,false) \
  57. -Dwith_fam=false \
  58. -Dwith_gdbm=$(if $(CONFIG_PACKAGE_lighttpd-mod-trigger_b4_dl),true,false) \
  59. -Dwith_geoip=$(if $(CONFIG_PACKAGE_lighttpd-mod-geoip),true,false) \
  60. -Dwith_krb5=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_gssapi),true,false) \
  61. -Dwith_ldap=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_ldap)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_ldap),true,false) \
  62. -Dwith_libev=false \
  63. -Dwith_libunwind=false \
  64. -Dwith_lua=$(if $(CONFIG_PACKAGE_lighttpd-mod-cml)$(CONFIG_PACKAGE_lighttpd-mod-magnet),true,false) \
  65. -Dwith_maxminddb=$(if $(CONFIG_PACKAGE_lighttpd-mod-maxminddb),true,false) \
  66. -Dwith_memcached=false \
  67. -Dwith_mysql=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_mysql)$(CONFIG_PACKAGE_lighttpd-mod-mysql_vhost)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_mysql),true,false) \
  68. -Dwith_openssl=$(if $(CONFIG_LIGHTTPD_SSL),true,false) \
  69. -Dwith_pam=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_pam),true,false) \
  70. -Dwith_pcre=true \
  71. -Dwith_pgsql=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_pgsql),true,false) \
  72. -Dwith_sasl=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_sasl),true,false) \
  73. -Dwith_webdav_locks=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
  74. -Dwith_webdav_props=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
  75. -Dwith_wolfssl=false \
  76. -Dwith_xattr=false \
  77. -Dwith_zlib=$(if $(CONFIG_PACKAGE_lighttpd-mod-compress)$(CONFIG_PACKAGE_lighttpd-mod-deflate),true,false)
  78. BASE_MODULES:=dirlisting indexfile staticfile
  79. ifneq ($(strip $(CONFIG_LIGHTTPD_SSL)),)
  80. BASE_MODULES+= openssl
  81. endif
  82. define Package/lighttpd/conffiles
  83. /etc/lighttpd/lighttpd.conf
  84. endef
  85. define Package/lighttpd/install
  86. $(INSTALL_DIR) $(1)/etc/lighttpd
  87. $(INSTALL_DATA) ./files/lighttpd.conf $(1)/etc/lighttpd/
  88. $(INSTALL_DATA) $(PKG_BUILD_DIR)/doc/config/conf.d/mime.conf $(1)/etc/lighttpd/
  89. $(INSTALL_DIR) $(1)/etc/lighttpd/conf.d
  90. $(INSTALL_DIR) $(1)/etc/init.d
  91. $(INSTALL_BIN) ./files/lighttpd.init $(1)/etc/init.d/lighttpd
  92. $(INSTALL_DIR) $(1)/usr/lib/lighttpd
  93. for m in $(BASE_MODULES); do \
  94. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$$$${m}.so $(1)/usr/lib/lighttpd/ ; \
  95. done
  96. $(INSTALL_DIR) $(1)/usr/sbin
  97. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lighttpd $(1)/usr/sbin/
  98. ifneq ($(strip $(CONFIG_LIGHTTPD_LOGROTATE)),)
  99. $(INSTALL_DIR) $(1)/etc/logrotate.d
  100. $(CP) ./files/lighttpd.logrotate $(1)/etc/logrotate.d/lighttpd.conf
  101. endif
  102. endef
  103. define BuildPlugin
  104. define Package/lighttpd-mod-$(1)
  105. $(call Package/lighttpd/Default)
  106. DEPENDS:=lighttpd
  107. ifneq ($(3),)
  108. DEPENDS+= $(3)
  109. endif
  110. TITLE:=$(2) module
  111. endef
  112. define Package/lighttpd-mod-$(1)/conffiles
  113. /etc/lighttpd/conf.d/$(4)-$(1).conf
  114. endef
  115. ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-$(1)),)
  116. define Package/lighttpd-mod-$(1)/install
  117. $(INSTALL_DIR) $$(1)/usr/lib/lighttpd
  118. $(CP) $(PKG_INSTALL_DIR)/usr/lib/lighttpd/mod_$(1).so $$(1)/usr/lib/lighttpd
  119. $(INSTALL_DIR) $$(1)/etc/lighttpd/conf.d
  120. if [ -f $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf ]; then \
  121. $(CP) $(PKG_BUILD_DIR)/doc/config/conf.d/$(1).conf $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  122. if ! grep -qF 'mod_$(1)' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf; then \
  123. sed -i "`sed '/^##/ !q' $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf | wc -l` i\
  124. server.modules += ( \"mod_$(1)\" )" $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  125. fi \
  126. else \
  127. echo 'server.modules += ( "mod_$(1)" )' > $$(1)/etc/lighttpd/conf.d/$(4)-$(1).conf ; \
  128. fi
  129. endef
  130. endif
  131. $$(eval $$(call BuildPackage,lighttpd-mod-$(1)))
  132. endef
  133. $(eval $(call BuildPackage,lighttpd))
  134. # First, permit redirect from HTTP to HTTPS.
  135. $(eval $(call BuildPlugin,redirect,URL redirection,+PACKAGE_lighttpd-mod-redirect:libpcre,10))
  136. # Next, permit authentication.
  137. $(eval $(call BuildPlugin,auth,Authentication,+PACKAGE_lighttpd-mod-auth:lighttpd-mod-authn_file,20))
  138. $(eval $(call BuildPlugin,authn_file,File-based authentication,,20))
  139. $(eval $(call BuildPlugin,authn_gssapi,Kerberos-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_gssapi:krb5-libs,20))
  140. $(eval $(call BuildPlugin,authn_ldap,LDAP-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_ldap:libopenldap,20))
  141. $(eval $(call BuildPlugin,authn_mysql,Mysql-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_mysql:libmysqlclient,20))
  142. $(eval $(call BuildPlugin,authn_pam,PAM-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_pam:libpam,20))
  143. $(eval $(call BuildPlugin,authn_sasl,SASL-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_sasl:libsasl2,20))
  144. # Finally, everything else.
  145. $(eval $(call BuildPlugin,access,Access restrictions,,30))
  146. $(eval $(call BuildPlugin,accesslog,Access logging,,30))
  147. $(eval $(call BuildPlugin,alias,Directory alias,,30))
  148. $(eval $(call BuildPlugin,cgi,CGI,,30))
  149. #$(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua +PACKAGE_lighttpd-mod-cml:libmemcached,30))
  150. $(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua,30))
  151. $(eval $(call BuildPlugin,compress,Compress output,+PACKAGE_lighttpd-mod-compress:zlib,30))
  152. $(eval $(call BuildPlugin,deflate,Compress dynamic output,+PACKAGE_lighttpd-mod-deflate:zlib,30))
  153. $(eval $(call BuildPlugin,evasive,Evasive,,30))
  154. $(eval $(call BuildPlugin,evhost,Enhanced Virtual-Hosting,,30))
  155. $(eval $(call BuildPlugin,expire,Expire,,30))
  156. $(eval $(call BuildPlugin,extforward,Extract client,,30))
  157. $(eval $(call BuildPlugin,fastcgi,FastCGI,,30))
  158. $(eval $(call BuildPlugin,flv_streaming,FLV streaming,,30))
  159. #$(eval $(call BuildPlugin,geoip,Geolocation,+PACKAGE_lighttpd-mod-geoip:libgeoip,30)) #libgeoip is not in OpenWrt
  160. $(eval $(call BuildPlugin,magnet,Magnet,+PACKAGE_lighttpd-mod-magnet:liblua,30))
  161. $(eval $(call BuildPlugin,maxminddb,MaxMind DB,+PACKAGE_lighttpd-mod-maxminddb:libmaxminddb,30))
  162. $(eval $(call BuildPlugin,mysql_vhost,Mysql virtual hosting,+PACKAGE_lighttpd-mod-mysql_vhost:libmysqlclient,30))
  163. $(eval $(call BuildPlugin,proxy,Proxy,,30))
  164. $(eval $(call BuildPlugin,rewrite,URL rewriting,+PACKAGE_lighttpd-mod-rewrite:libpcre,30))
  165. $(eval $(call BuildPlugin,rrdtool,RRDtool,,30))
  166. $(eval $(call BuildPlugin,scgi,SCGI,,30))
  167. $(eval $(call BuildPlugin,secdownload,Secure and fast download,,30))
  168. $(eval $(call BuildPlugin,setenv,Environment variable setting,,30))
  169. $(eval $(call BuildPlugin,simple_vhost,Simple virtual hosting,,30))
  170. $(eval $(call BuildPlugin,sockproxy,sockproxy,,30))
  171. $(eval $(call BuildPlugin,ssi,SSI,+PACKAGE_lighttpd-mod-ssi:libpcre,30))
  172. $(eval $(call BuildPlugin,staticfile,staticfile,,30))
  173. $(eval $(call BuildPlugin,status,Server status display,,30))
  174. #$(eval $(call BuildPlugin,trigger_b4_dl,Trigger before download,+PACKAGE_lighttpd-mod-trigger_b4_dl:libpcre +PACKAGE_lighttpd-mod-trigger_b4_dl:libgdbm +PACKAGE_lighttpd-mod-trigger_b4_dl:libmemcached,30))
  175. $(eval $(call BuildPlugin,trigger_b4_dl,Trigger before download,+PACKAGE_lighttpd-mod-trigger_b4_dl:libpcre +PACKAGE_lighttpd-mod-trigger_b4_dl:libgdbm,30))
  176. $(eval $(call BuildPlugin,uploadprogress,Upload Progress,,30))
  177. $(eval $(call BuildPlugin,userdir,User directory,,30))
  178. $(eval $(call BuildPlugin,usertrack,User tracking,,30))
  179. $(eval $(call BuildPlugin,vhostdb_dbi,Virtual Host Database (DBI),+PACKAGE_lighttpd-mod-vhostdb_dbi:libdbi,30))
  180. $(eval $(call BuildPlugin,vhostdb_ldap,Virtual Host Database (LDAP),+PACKAGE_lighttpd-mod-vhostdb_ldap:libopenldap,30))
  181. $(eval $(call BuildPlugin,vhostdb_mysql,Virtual Host Database (MariaDB),+PACKAGE_lighttpd-mod-vhostdb_mysql:libmysqlclient,30))
  182. $(eval $(call BuildPlugin,vhostdb_pgsql,Virtual Host Database (PostgreSQL),+PACKAGE_lighttpd-mod-vhostdb_pgsql:libpq,30))
  183. $(eval $(call BuildPlugin,vhostdb,Virtual Host Database,,30))
  184. $(eval $(call BuildPlugin,webdav,WebDAV,+PACKAGE_lighttpd-mod-webdav:libsqlite3 +PACKAGE_lighttpd-mod-webdav:libuuid +PACKAGE_lighttpd-mod-webdav:libxml2,30))
  185. $(eval $(call BuildPlugin,wstunnel,Websocket tunneling,,30))