--- /dev/null
+webdis (0.1.1-2) unstable; urgency=medium
+
+ * Use correct license names in debian/copyright
+ * Document hiredis and jansson libraries
+ * Add autopkgtest support
+ * Update Standards-Version to 3.9.6. No changes required
+
+ -- Andriy Senkovych <jolly_roger@itblog.org.ua> Fri, 24 Oct 2014 22:48:16 +0300
+
+webdis (0.1.1-1) unstable; urgency=low
+
+ * Initial release (Closes: #623528)
+
+ -- Andriy Senkovych <jolly_roger@itblog.org.ua> Mon, 04 Aug 2014 02:10:55 +0300
--- /dev/null
+Source: webdis
+Section: web
+Priority: optional
+Maintainer: Andriy Senkovych <jolly_roger@itblog.org.ua>
+Build-Depends: debhelper (>= 7.0.50~),
+ libevent-dev (>= 1.4.13),
+ libhiredis-dev (>= 0.10),
+ libjansson-dev (>= 1.3),
+ libb64-dev (>= 1.2),
+ libmsgpack-dev,
+ redis-server,
+ python-unittest2,
+ python-msgpack (>= 0.3),
+ net-tools
+Standards-Version: 3.9.6
+Vcs-Git: git://github.com/jollyroger/webdis.git -b debian
+Vcs-Browser: https://github.com/jollyroger/webdis
+Homepage: http://webd.is
+Testsuite: autopkgtest
+
+Package: webdis
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser
+Suggests: redis-server
+Description: simple web server providing an HTTP interface to Redis
+ Webdis is a simple web server providing HTTP interface to Redis. Some features
+ include:
+ * Support for GET and POST requests.
+ * JSON output by default, optional JSONP parameter (?jsonp=myFunction).
+ * Raw Redis 2.0 protocol output with .raw suffix
+ * HTTP 1.1 pipelining (50,000 http requests per second on a desktop Linux
+ machine.)
+ * Restricted commands by IP range (CIDR subnet + mask) or HTTP Basic Auth,
+ returning 403 errors.
+ * Possible Redis authentication in the config file.
+ * Pub/Sub using Transfer-Encoding: chunked, works with JSONP as well. Webdis
+ can be used as a Comet server.
+ * Custom Content-Type using a pre-defined file extension, or with
+ ?type=some/thing.
+ * URL-encoded parameters for binary data or slashes.
+ * Logs, with a configurable verbosity.
+ * Cross-origin XHR, if compiled with libevent2 (for OPTIONS support).
+ * File upload with PUT.
+ * With the JSON output, the return value of INFO is parsed and transformed
+ into an object.
+
+Package: webdis-dbg
+Priority: extra
+Architecture: any
+Section: debug
+Depends: ${misc:Depends}, webdis (= ${binary:Version})
+Description: webdis debugging symbols
+ Webdis is a simple web server providing HTTP interface to Redis.
+ .
+ This package provides debug symbols for webdis.
--- /dev/null
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: webdis
+Upstream-Contact: Nicolas Favre-Félix <n.favrefelix@gmail.com>
+Source: https://github.com/nicolasff/webdis/blob/master/COPYING
+
+Files: *
+Copyright: 2010-2011, Nicolas Favre-Felix <n.favrefelix@gmail.com>
+License: bsd-2-clause
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+ .
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: hiredis/*
+Copyright:
+ 2009-2011, Salvatore Sanfilippo <antirez@gmail.com>
+ 2010-2011, Pieter Noordhuis <pcnoordhuis@gmail.com>
+License: BSD-3-Clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+
+Files: jansson/*
+Copyright: 2009, 2010 Petri Lehtinen <petri@digip.org>
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+Files: debian/*
+Copyright: 2011, Andriy Senkovych <jolly_roger@itblog.org.ua>
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+Files: md5/*
+Copyright: 1999, 2000, 2002, Aladdin Enterprises
+ 1999, 2000, 2002, L. Peter Deutsch <ghost@aladdin.com>
+License: bsd-3-clause
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+ .
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+ .
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+Files: sha1/*
+Copyright: 1998, 2009, Paul E. Jones <paulej@packetizer.com>
+License: FPL
+ This software is licensed as "freeware." Permission to distribute
+ this software in source and binary forms, including incorporation
+ into other products, is hereby granted without a fee. THIS SOFTWARE
+ IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD
+ LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER
+ DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA
+ OR DATA BEING RENDERED INACCURATE.
+
+Files: http-parser/*
+Copyright: 2009, 2010, Ryan Dahl <ry@tinyclouds.org>
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
+
+Files: b64/*
+Copyright: none
+License: public-domain
+ Copyright-Only Dedication (based on United States law)
+ or Public Domain Certification
+ .
+ The person or persons who have associated work with this document (the
+ "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of
+ his knowledge, the work of authorship identified is in the public domain of
+ the country from which the work is published, or (b) hereby dedicates whatever
+ copyright the dedicators holds in the work of authorship identified below (the
+ "Work") to the public domain. A certifier, moreover, dedicates any copyright
+ interest he may have in the associated work, and for these purposes, is
+ described as a "dedicator" below.
+ .
+ A certifier has taken reasonable steps to verify the copyright status of this
+ work. Certifier recognizes that his good faith efforts may not shield him from
+ liability if in fact the work certified is not in the public domain.
+ .
+ Dedicator makes this dedication for the benefit of the public at large and to
+ the detriment of the Dedicator's heirs and successors. Dedicator intends this
+ dedication to be an overt act of relinquishment in perpetuity of all present
+ and future rights under copyright law, whether vested or contingent, in the
+ Work. Dedicator understands that such relinquishment of all rights includes
+ the relinquishment of all rights to enforce (by lawsuit or otherwise) those
+ copyrights in the Work.
+ .
+ Dedicator recognizes that, once placed in the public domain, the Work may be
+ freely reproduced, distributed, transmitted, used, modified, built upon, or
+ otherwise exploited by anyone for any purpose, commercial or non-commercial,
+ and in any way, including by methods that have not yet been invented or
+ conceived.
--- /dev/null
+README.markdown
--- /dev/null
+# ex: set ft=dosini:
+[DEFAULT]
+debian-branch = debian
+upstream-tag = %(version)s
--- /dev/null
+tests.patch
--- /dev/null
+Description: Pass tests with python-msgpack >= 0.3
+ Current test suite pass with python-msgpack v0.2 but fails with python-msgpack
+ v0.3 and later due to changes in the library. Currently Debian ships v0.3
+ for jessie and wheezy-backports.
+Author: Andriy Senkovych <jolly_roger@itblog.org.ua>
+Bug: https://github.com/nicolasff/webdis/issues/92
+Last-Update: 2014-08-03
+diff --git a/tests/basic.py b/tests/basic.py
+index 89d664e..c70babe 100755
+--- a/tests/basic.py
++++ b/tests/basic.py
+@@ -154,7 +154,7 @@ class TestMsgPack(TestWebdis):
+ f = self.query('SET/hello/world.msg')
+ self.assertTrue(f.headers.getheader('Content-Type') == 'application/x-msgpack')
+ obj = msgpack.loads(f.read())
+- self.assertTrue(obj == {'SET': (True, 'OK')})
++ self.assertTrue(obj == {'SET': [True, 'OK']})
+
+ @need_msgpack
+ def test_get(self):
+@@ -180,7 +180,7 @@ class TestMsgPack(TestWebdis):
+ self.query('RPUSH/hello/def')
+ f = self.query('LRANGE/hello/0/-1.msg')
+ obj = msgpack.loads(f.read())
+- self.assertTrue(obj == {'LRANGE': ('abc', 'def')})
++ self.assertTrue(obj == {'LRANGE': ['abc', 'def']})
+
+ @need_msgpack
+ def test_error(self):
+@@ -189,7 +189,7 @@ class TestMsgPack(TestWebdis):
+ obj = msgpack.loads(f.read())
+ self.assertTrue('UNKNOWN' in obj)
+ self.assertTrue(isinstance(obj, dict))
+- self.assertTrue(isinstance(obj['UNKNOWN'], tuple))
++ self.assertTrue(isinstance(obj['UNKNOWN'], list))
+ self.assertTrue(obj['UNKNOWN'][0] == False)
+ self.assertTrue(isinstance(obj['UNKNOWN'][1], str))
+
--- /dev/null
+daemonize yes
+pidfile REDIS_PID
+port 0
+unixsocket REDIS_SOCK
--- /dev/null
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+#export DH_VERBOSE=1
+
+export PREFIX = /usr
+export DESTDIR = $(CURDIR)/debian/tmp
+export CONFDIR = $(DESTDIR)/etc/webdis
+
+CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
+CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+
+# Add CPPFLAGS TO CFLAGS since build system does not know about them.
+CFLAGS += $(CPPFLAGS)
+
+# Objects to be removed from build procedure
+export HIREDIS_OBJ=
+export JANSSON_OBJ=
+export B64_OBJS=
+
+export CFLAGS += -I. -Ihttp-parser
+export LDFLAGS += -levent -pthread -lhiredis -ljansson -lb64
+
+build: build-arch
+build-arch: tests/pubsub tests/websocket
+
+tests/% :
+ $(MAKE) -C tests $*
+
+%:
+ dh $@
+
+override_dh_strip:
+ dh_strip --dbg-package=webdis-dbg
+
+override_dh_auto_clean:
+ $(MAKE) clean
+ $(MAKE) -C tests clean
+
+override_dh_auto_test:
+ifneq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
+ @echo "Skipping check (disabled in DEB_BUILD_OPTIONS)."
+else
+ $(CURDIR)/debian/test.sh $(MAKE) test
+endif
--- /dev/null
+3.0 (quilt)
--- /dev/null
+#!/bin/sh
+# This script runs redis server and webdis server and launches the test
+# suite. It avoids race condition while obtaining a port to listen by
+# binding to random available port. The port is then found via netstat -nlp
+# using PID-file.
+
+TMPDIR=`mktemp -d`
+
+WEBDIS_PID=${TMPDIR}/webdis.pid
+WEBDIS_CONF=${TMPDIR}/webdis.json
+
+REDIS_CONF=${TMPDIR}/redis.conf
+REDIS_PID=${TMPDIR}/redis.pid
+REDIS_SOCK=${TMPDIR}/redis.sock
+
+if [ -n "$WEBDIS_BIN" ] ; then
+ if [ ! -x "$WEBDIS_BIN" ] ; then
+ echo "webdis binary $WEBDIS_BIN is not executable"
+ exit 1
+ fi
+else
+ WEBDIS_BIN="$PWD/webdis"
+fi
+
+set_up() {
+ echo "Generating config files.."
+ sed -e "s|REDIS_SOCK|${REDIS_SOCK}|" -e "s|WEBDIS_PID|${WEBDIS_PID}|" \
+ debian/webdis-test.json > ${WEBDIS_CONF}
+ sed -e "s|REDIS_PID|${REDIS_PID}|" -e "s|REDIS_SOCK|${REDIS_SOCK}|" \
+ debian/redis-test.conf > ${REDIS_CONF}
+
+ echo "Starting redis-server.."
+ /sbin/start-stop-daemon --start --verbose \
+ --pidfile ${REDIS_PID} \
+ --exec `which redis-server` -- ${REDIS_CONF} || return 1
+
+ echo "Starting webdis.."
+ /sbin/start-stop-daemon --start --verbose \
+ --pidfile ${WEBDIS_PID} \
+ --exec $WEBDIS_BIN -- ${WEBDIS_CONF} || return 2
+
+ MATCH_STR="`cat $WEBDIS_PID`\\/webdis"
+ export WEBDIS_PORT=`netstat -ntlp 2>/dev/null| \
+ awk "/$MATCH_STR/ {print \\$4}"|cut -d: -f2`
+ [ "$WEBDIS_PORT" -gt 0 ] || return 3
+ echo webdis is listening on port "$WEBDIS_PORT"
+}
+
+tear_down() {
+ echo "Shutting down webdis.."
+ /sbin/start-stop-daemon --stop --verbose \
+ --retry=TERM/1/KILL/1 \
+ --pidfile ${WEBDIS_PID} \
+ --name webdis
+ echo "Shutting down redis-server.."
+ /sbin/start-stop-daemon --stop --verbose \
+ --retry=TERM/1/KILL/1 \
+ --pidfile ${REDIS_PID} \
+ --name redis-server
+}
+
+if ! set_up ; then
+ echo "Setting up redis/webdis server FAILED."
+ tear_down
+ exit 1
+fi
+
+echo Running test commands: $*
+
+$*
+EXIT_CODE=$?
+
+tear_down
+rm -fR $TMPDIR
+
+exit $EXIT_CODE
--- /dev/null
+Tests: webdis
+Depends: @, redis-server, build-essential, libevent-dev,
+ python-unittest2, python-msgpack, net-tools
+Restrictions: isolation-container, allow-stderr
--- /dev/null
+#!/bin/sh
+set -e
+
+make -C tests
+WEBDIS_BIN=/usr/bin/webdis debian/test.sh make test
--- /dev/null
+version=3
+opts=dversionmangle=s/\+(dfsg|ds)$// \
+ https://github.com/nicolasff/webdis/releases \
+ .*\/([0-9.]+)\.tar\.gz
--- /dev/null
+{
+ "redis_host": "REDIS_SOCK",
+
+ "http_host": "127.0.0.1",
+ "http_port": 0,
+
+ "threads": 2,
+ "pool_size": 5,
+
+ "daemonize": true,
+ "pidfile": "WEBDIS_PID",
+ "websockets": false,
+
+ "database": 0,
+
+ "acl": [
+ {
+ "disabled": ["DEBUG"]
+ },
+
+ {
+ "http_basic_auth": "user:password",
+ "enabled": ["DEBUG"]
+ }
+ ],
+
+ "verbosity": 3,
+ "logfile": "/dev/null"
+}
--- /dev/null
+.TH WEBDIS 1 "August 29, 2013"
+.SH NAME
+webdis \- fast HTTP interface for redis-server(1)
+.SH SYNOPSIS
+.B webdis
+.RI configfile
+.SH DESCRIPTION
+Webdis is a Webdis is a simple HTTP server which forwards commands to Redis and
+sends the reply back using a format of your choice. Accessing
+/COMMAND/arg0/arg1/.../argN[.ext] on Webdis executes the command on Redis and
+returns the response; the reply format can be changed with the optional
+extension (.json, .txt).
+.PP
+.SH OPTIONS
+.IP "configfile"
+Read options from specified configuration file.
+.SH NOTES
+On Debian GNU/Linux systems, \fBwebdis\fP is typically started via the
+\fB/etc/init.d/webdis\fP initscript, not manually. This defaults to using
+\fB/etc/webdis/webdis.json\fP as a configuration file.
+.SH AUTHOR
+\fBwebdis\fP was written by Nicolas Favre-Félix.
+.PP
+This manual page was written by Andriy Senkovych <jolly_roger@itblog.org.ua> for
+the Debian project (but may be used by others).
--- /dev/null
+# Webdis configuration file used at startup.
+CONFFILE="/etc/webdis/webdis.json"
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
--- /dev/null
+/var/log/webdis
--- /dev/null
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: webdis
+# Required-Start: $local_fs $remote_fs
+# Required-Stop: $local_fs $remote_fs
+# Should-Start: redis-server
+# Should-Stop: redis-server
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Starts webdis daemon
+# Description: Starts webdis daemon
+### END INIT INFO
+
+# Author: Andriy Senkovych <jolly_roger@itblog.org.ua>
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="webdis server"
+NAME=webdis
+DAEMON=/usr/bin/$NAME
+PIDDIR=/var/run/$NAME
+PIDFILE=$PIDDIR/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+USER=webdis
+CONFFILE="/etc/webdis/webdis.json"
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ if [ ! -e $PIDDIR ] ; then
+ mkdir $PIDDIR
+ chown webdis: $PIDDIR
+ elif [ ! -d $PIDDIR ] ; then
+ log_action_cont_msg \ $PIDDIR exists but is not a directory
+ return 2
+ fi
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --test \
+ --pidfile $PIDFILE \
+ --user $USER --chuid $USER \
+ --exec $DAEMON > /dev/null \
+ || return 1
+ /sbin/start-stop-daemon --start --quiet \
+ --pidfile $PIDFILE \
+ --user $USER --chuid $USER \
+ --exec $DAEMON -- $CONFFILE $DAEMON_OPTS\
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet \
+ --pidfile $PIDFILE \
+ --user $USER \
+ --retry=TERM/1/KILL/1 \
+ --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo \
+ --pidfile $PIDIFLE \
+ --user $USER \
+ --retry=0/1/KILL/1 \
+ --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) log_end_msg 0 ;;
+ 2) log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) log_end_msg 0 ;;
+ 2) log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
--- /dev/null
+debian/webdis.json /etc/webdis/
+/usr/bin/webdis
--- /dev/null
+{
+ "redis_host": "127.0.0.1",
+
+ "redis_port": 6379,
+ "redis_auth": null,
+
+ "http_host": "127.0.0.1",
+ "http_port": 7379,
+ "threads": 2,
+
+ "daemonize": true,
+ "pidfile": "/var/run/webdis/webdis.pid",
+
+ "database": 0,
+
+ "acl": [
+ {
+ "disabled":["DEBUG"]
+ },
+
+ {
+ "http_basic_auth": "user:password",
+ "enabled": ["DEBUG"]
+ }
+ ],
+
+ "verbosity": 3,
+ "logfile": "/var/log/webdis/webdis.log"
+}
--- /dev/null
+/var/log/webdis/webdis.log {
+ missingok
+ rotate 5
+ weekly
+ size 10M
+ compress
+ notifempty
+ postrotate
+ /usr/bin/killall -HUP webdis
+ endscript
+}
--- /dev/null
+debian/webdis.1
--- /dev/null
+#! /bin/sh
+
+set -e
+WEBDIS_LOG=/var/log/webdis
+
+case "$1" in
+ configure)
+ adduser --system --group \
+ --home /var/lib/webdis \
+ --no-create-home \
+ --gecos "webdis system user" \
+ --disabled-login \
+ --disabled-password webdis
+ if ! dpkg-statoverride --list $WEBDIS_LOG >/dev/null 2>&1 ; then
+ dpkg-statoverride --update --add webdis webdis 0750 $WEBDIS_LOG
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
+
+
--- /dev/null
+#! /bin/sh
+
+set -e
+WEBDIS_LOG=/var/log/webdis
+
+case "$1" in
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear|remove)
+ ;;
+
+ purge)
+ # Since no data is stored in the webdis home directory, the package is
+ # not affected by bug #621833 and thus homedir can be safely removed
+ if dpkg-statoverride --list $WEBDIS_LOG >/dev/null 2>&1 ; then
+ dpkg-statoverride --remove /var/log/webdis
+ fi
+ rm -rf $WEBDIS_LOG
+
+ deluser --system webdis
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+
+esac
+
+#DEBHELPER#
+
+exit 0