From patchwork Wed Dec 12 22:03:16 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charles Manning X-Patchwork-Id: 205666 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id AA0A22C008F for ; Thu, 13 Dec 2012 09:03:42 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 1811427392; Wed, 12 Dec 2012 22:03:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RaKljEWQIg4M; Wed, 12 Dec 2012 22:03:39 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 50FE2274A0; Wed, 12 Dec 2012 22:03:39 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 4D7FD8F74B for ; Wed, 12 Dec 2012 22:03:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id DC36F8C290 for ; Wed, 12 Dec 2012 22:03:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5JKFa70aNXge for ; Wed, 12 Dec 2012 22:03:36 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pb0-f43.google.com (mail-pb0-f43.google.com [209.85.160.43]) by whitealder.osuosl.org (Postfix) with ESMTPS id B52308BF0D for ; Wed, 12 Dec 2012 22:03:36 +0000 (UTC) Received: by mail-pb0-f43.google.com with SMTP id um15so943961pbc.16 for ; Wed, 12 Dec 2012 14:03:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=ikuF47OczixkjPcX34sByzHnHYxFOX0v4/gyCTUdU30=; b=dcUxfLzo7Lf32x/gdquDANpVFdgvGX8eDhXfg3jEYkuFW/qXDeVjeq/u3J4N+416Ic s+tIpdFprhmgdKdqcXpPqTlrVByKabD6WWOuwQe5Pn+PMfR7xonLVZeY1BNl+KhxeNYt 1zSdnEjdqvUJDuxu0xwazY7Uqw2MvnQZWLmdg/KUgmOrBxTdOqNDsCVJjrVwEOQ9pmvG FOXjPCZm1CTo5g4lZ1NbcR2m9Z2+jrlcLRwd9H3N49c4M39gFwmO5uY2HikB/Qrof+yY E6l7uw7zWHfR9jKfl+ZKdILvOonKOvR63M+7sSttxMFr89xH7El9HWHOvMQJP6wy0pOf 4y0Q== Received: by 10.66.85.103 with SMTP id g7mr96244paz.45.1355349816423; Wed, 12 Dec 2012 14:03:36 -0800 (PST) Received: from localhost.localdomain (125-237-130-33.jetstream.xtra.co.nz. [125.237.130.33]) by mx.google.com with ESMTPS id ov4sm9156040pbb.45.2012.12.12.14.03.34 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 12 Dec 2012 14:03:35 -0800 (PST) From: Charles Manning To: buildroot@busybox.net Date: Thu, 13 Dec 2012 11:03:16 +1300 Message-Id: <1355349796-4165-1-git-send-email-cdhmanning@gmail.com> X-Mailer: git-send-email 1.7.1 Subject: [Buildroot] [PATCH] Add package for mongoose web server X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Charles Manning --- package/Config.in | 1 + package/mongoose/Config.in | 13 ++++++ package/mongoose/mongoose-3.3-init-file.patch | 44 ++++++++++++++++++++ package/mongoose/mongoose-3.3-no-auth.patch | 55 +++++++++++++++++++++++++ package/mongoose/mongoose.mk | 38 +++++++++++++++++ 5 files changed, 151 insertions(+), 0 deletions(-) create mode 100644 package/mongoose/Config.in create mode 100644 package/mongoose/mongoose-3.3-init-file.patch create mode 100644 package/mongoose/mongoose-3.3-no-auth.patch create mode 100644 package/mongoose/mongoose.mk diff --git a/package/Config.in b/package/Config.in index 5ba1f05..a3d2590 100644 --- a/package/Config.in +++ b/package/Config.in @@ -603,6 +603,7 @@ source "package/linphone/Config.in" source "package/lrzsz/Config.in" source "package/macchanger/Config.in" source "package/mii-diag/Config.in" +source "package/mongoose/Config.in" source "package/mrouted/Config.in" source "package/msmtp/Config.in" source "package/mutt/Config.in" diff --git a/package/mongoose/Config.in b/package/mongoose/Config.in new file mode 100644 index 0000000..39806f9 --- /dev/null +++ b/package/mongoose/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MONGOOSE + bool "mongoose wen server" + help + Mongoose small web server + + https://github.com/valenok/mongoose + +config BR2_PACKAGE_MONGOOSE_NO_PUT_AUTH + bool "Disable PUT authorization" + depends on BR2_PACKAGE_MONGOOSE + default n + help + Sometimes you don't need PUT authorization. diff --git a/package/mongoose/mongoose-3.3-init-file.patch b/package/mongoose/mongoose-3.3-init-file.patch new file mode 100644 index 0000000..b62e4ca --- /dev/null +++ b/package/mongoose/mongoose-3.3-init-file.patch @@ -0,0 +1,44 @@ +--- /dev/null 2012-12-10 08:42:11.241266044 +1300 ++++ files/mongoose.init 2010-07-28 09:01:23.000000000 +1200 +@@ -0,0 +1,41 @@ ++#!/bin/sh ++# ++# Start/stop the mongoose HTTP server ++# ++ ++set -e ++ ++PATH=/sbin:/bin:/usr/sbin:/usr/bin ++NAME=mongoose ++DESC="Mongoose HTTP server" ++ ++DAEMON=`which mongoose` ++OPTIONS="-max_threads 3 -root /var/www -ports 80" ++ ++[ -e /etc/default/mongoose ] && . /etc/default/mongoose ++ ++case "$1" in ++ start) ++ echo "Starting $DESC:" ++ start-stop-daemon -S -x "$DAEMON" -b -- $OPTIONS ++ echo "$NAME." ++ ;; ++ stop) ++ echo -n "Stopping $DESC: " ++ start-stop-daemon -K -x "$DAEMON" ++ echo "$NAME." ++ ;; ++ restart|force-reload) ++ echo -n "Restarting $DESC: " ++ start-stop-daemon -K -x "$DAEMON" ++ start-stop-daemon -S -x "$DAEMON" -b -- $OPTIONS ++ echo "$NAME." ++ ;; ++ *) ++ N=/etc/init.d/$NAME ++ echo "Usage: $N {start|stop|restart|force-reload}" >&2 ++ exit 1 ++ ;; ++esac ++ ++exit 0 diff --git a/package/mongoose/mongoose-3.3-no-auth.patch b/package/mongoose/mongoose-3.3-no-auth.patch new file mode 100644 index 0000000..a470f5e --- /dev/null +++ b/package/mongoose/mongoose-3.3-no-auth.patch @@ -0,0 +1,55 @@ +From db714636f86d79be33ffe8f2408c8731b5969208 Mon Sep 17 00:00:00 2001 +From: Charles Manning +Date: Mon, 10 Dec 2012 10:14:20 +1300 +Subject: [PATCH] Add NO_PUT_AUTH option to allow put with not authorization + +Sometimes you really don't want the security. + +Signed-off-by: Charles Manning +--- + Makefile | 2 +- + mongoose.c | 8 +++++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 14f986a..ae4755b 100644 +--- a/Makefile ++++ b/Makefile +@@ -17,7 +17,7 @@ all: + # -DSSL_LIB=\"libssl.so.\" - use system versioned SSL shared object + # -DCRYPTO_LIB=\"libcrypto.so.\" - use system versioned CRYPTO so + # -DUSE_LUA - embed Lua in Mongoose (+100kb) +- ++# -DNO_PUT_AUTH - disable authorization for PUT/DELETE + + ########################################################################## + ### UNIX build: linux, bsd, mac, rtems +diff --git a/mongoose.c b/mongoose.c +index 2b5e586..327b419 100644 +--- a/mongoose.c ++++ b/mongoose.c +@@ -64,6 +64,12 @@ + #include + #include + ++#ifdef NO_PUT_AUTH ++static int put_authorization_required = 0; ++#else ++static int put_authorization_required = 1; ++#endif ++ + #if defined(_WIN32) && !defined(__SYMBIAN32__) // Windows specific + #define _WIN32_WINNT 0x0400 // To make it link in VS2005 + #include +@@ -4182,7 +4188,7 @@ static void handle_request(struct mg_connection *conn) { + send_options(conn); + } else if (conn->ctx->config[DOCUMENT_ROOT] == NULL) { + send_http_error(conn, 404, "Not Found", "Not Found"); +- } else if ((!strcmp(ri->request_method, "PUT") || ++ } else if (put_authorization_required && (!strcmp(ri->request_method, "PUT") || + !strcmp(ri->request_method, "DELETE")) && + (conn->ctx->config[PUT_DELETE_PASSWORDS_FILE] == NULL || + is_authorized_for_put(conn) != 1)) { +-- +1.7.1 + diff --git a/package/mongoose/mongoose.mk b/package/mongoose/mongoose.mk new file mode 100644 index 0000000..ef06f41 --- /dev/null +++ b/package/mongoose/mongoose.mk @@ -0,0 +1,38 @@ +# Package for mongoose web server. +# This has been patched with an extension to allow PUT with no authorization. +# +MONGOOSE_VERSION = 3.3 +MONGOOSE_SITE = http://github.com/valenok/mongoose/tarball/master +MONGOOSE_LICENSE = MIT +MONGOOSE_LICENSE_FILES = COPYING +MONGOOSE_INSTALL_STAGING = YES +MONGOOSE_INSTALL_TARGET = YES + +MONGOOSE_OPTIONAL_DEFINES = -DNO_SSL +ifeq ($(BR2_PACKAGE_MONGOOSE_NO_PUT_AUTH),y) +MONGOOSE_OPTIONAL_DEFINES += -DNO_PUT_AUTH +endif + +define MONGOOSE_BUILD_CMDS + $(MAKE) CC="$(TARGET_CC)" LD="$TARGETLD)" -C $(@D) linux COPT="$(MONGOOSE_OPTIONAL_DEFINES)" +endef + +define MONGOOSE_INSTALL_STAGING_CMDS + $(INSTALL) -d $(STAGING_DIR)/sbin + $(INSTALL) -d $(STAGING_DIR)/etc + $(INSTALL) -d $(STAGING_DIR)/etc/init.d + $(INSTALL) -D -m 755 $(@D)/mongoose $(STAGING_DIR)/sbin/mongoose + $(INSTALL) -D -m 755 $(@D)/mongoose.init $(STAGING_DIR)/etc/init.d/mongoose +endef + +define MONGOOSE_INSTALL_TARGET_CMDS + $(INSTALL) -d $(TARGET_DIR)/sbin + $(INSTALL) -d $(TARGET_DIR)/etc + $(INSTALL) -d $(TARGET_DIR)/etc/init.d + $(INSTALL) -D -m 755 $(@D)/mongoose $(TARGET_DIR)/sbin/mongoose + $(INSTALL) -D -m 755 $(@D)/mongoose.init $(TARGET_DIR)/etc/init.d/mongoose +endef + + +$(eval $(generic-package)) +