From ac0a5f82503c35b878517a07a728cbddc2196cd5 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Mon, 9 Mar 2009 21:54:11 +0000 Subject: [PATCH] [package] add spawn-fcgi, thanks to Raphael Huck (#4738) SVN-Revision: 14824 --- net/spawn-fcgi/Makefile | 41 +++++++++++++ .../100-spawn-fcgi_new_opt_directory.patch | 60 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 net/spawn-fcgi/Makefile create mode 100644 net/spawn-fcgi/patches/100-spawn-fcgi_new_opt_directory.patch diff --git a/net/spawn-fcgi/Makefile b/net/spawn-fcgi/Makefile new file mode 100644 index 0000000000..ed00dafa7a --- /dev/null +++ b/net/spawn-fcgi/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2006-2009 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id: $ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=spawn-fcgi +PKG_VERSION:=1.6.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://www.lighttpd.net/download/ +PKG_MD5SUM:=06fcafdb87aeb5dc9b8f0f91632ae748 + +PKG_FIXUP = libtool +PKG_INSTALL = 1 + +include $(INCLUDE_DIR)/package.mk + +define Package/spawn-fcgi + SUBMENU:=Web + SECTION:=net + CATEGORY:=Network + TITLE:=Tool to spawn fastcgi applications + URL:=http://www.lighttpd.net/ +endef + +define Package/spawn-fcgi/description + spawn-fcgi is used to spawn fastcgi applications +endef + +define Package/spawn-fcgi/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/spawn-fcgi $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,spawn-fcgi)) diff --git a/net/spawn-fcgi/patches/100-spawn-fcgi_new_opt_directory.patch b/net/spawn-fcgi/patches/100-spawn-fcgi_new_opt_directory.patch new file mode 100644 index 0000000000..53d149323d --- /dev/null +++ b/net/spawn-fcgi/patches/100-spawn-fcgi_new_opt_directory.patch @@ -0,0 +1,60 @@ +diff -pruN spawn-fcgi-1.6.0.orig/src/spawn-fcgi.c spawn-fcgi-1.6.0/src/spawn-fcgi.c +--- spawn-fcgi-1.6.0.orig/src/spawn-fcgi.c 2009-03-05 16:43:00.160440493 +0100 ++++ spawn-fcgi-1.6.0/src/spawn-fcgi.c 2009-03-05 16:55:17.840995588 +0100 +@@ -59,7 +59,7 @@ + typedef int socklen_t; + #endif + +-static int fcgi_spawn_connection(char *appPath, char **appArgv, char *addr, unsigned short port, const char *unixsocket, int fork_count, int child_count, int pid_fd, int nofork) { ++static int fcgi_spawn_connection(char *appPath, const char *fcgi_dir, char **appArgv, char *addr, unsigned short port, const char *unixsocket, int fork_count, int child_count, int pid_fd, int nofork) { + int fcgi_fd; + int socket_type, status, rc = 0; + struct timeval tv = { 0, 100 * 1000 }; +@@ -206,6 +206,11 @@ static int fcgi_spawn_connection(char *a + strcat(b, appPath); + + /* exec the cgi */ ++ if (fcgi_dir) { ++ if (chdir(fcgi_dir) != 0) { ++ exit(errno); ++ } ++ } + execl("/bin/sh", "sh", "-c", b, (char *)NULL); + } + +@@ -347,6 +352,7 @@ static void show_help () { + "\n" \ + "Options:\n" \ + " -f filename of the fcgi-application (ignored if is given)\n" \ ++" -d chdir to directory before spawning\n" \ + " -a bind to ip address\n" \ + " -p bind to tcp-port\n" \ + " -s bind to unix-domain socket\n" \ +@@ -367,7 +373,7 @@ static void show_help () { + + + int main(int argc, char **argv) { +- char *fcgi_app = NULL, *changeroot = NULL, *username = NULL, ++ char *fcgi_app = NULL, *fcgi_dir = NULL, *changeroot = NULL, *username = NULL, + *groupname = NULL, *unixsocket = NULL, *pid_file = NULL, + *addr = NULL; + char **fcgi_app_argv = { NULL }; +@@ -386,9 +392,10 @@ int main(int argc, char **argv) { + + i_am_root = (getuid() == 0); + +- while (-1 != (o = getopt(argc, argv, "c:f:g:?hna:p:u:vC:F:s:P:"))) { ++ while (-1 != (o = getopt(argc, argv, "c:f:d:g:?hna:p:u:vC:F:s:P:"))) { + switch(o) { + case 'f': fcgi_app = optarg; break; ++ case 'd': fcgi_dir = optarg; break; + case 'a': addr = optarg;/* ip addr */ break; + case 'p': port = strtol(optarg, NULL, 10);/* port */ break; + case 'C': child_count = strtol(optarg, NULL, 10);/* */ break; +@@ -507,5 +514,5 @@ int main(int argc, char **argv) { + } + } + +- return fcgi_spawn_connection(fcgi_app, fcgi_app_argv, addr, port, unixsocket, fork_count, child_count, pid_fd, nofork); ++ return fcgi_spawn_connection(fcgi_app, fcgi_dir, fcgi_app_argv, addr, port, unixsocket, fork_count, child_count, pid_fd, nofork); + } -- 2.30.2