From e6f4e6a26876590b884ec53f11abe71031ca07d8 Mon Sep 17 00:00:00 2001
From: Leonardo Robol <leo@robol.it>
Date: Fri, 25 Dec 2009 19:44:58 +0100
Subject: [PATCH] Aggiunta pacchettizazione debian

---
 debian/README.Debian                               |   6 +
 debian/changelog                                   |   5 +
 debian/compat                                      |   1 +
 debian/control                                     |  15 ++
 debian/copyright                                   |  44 +++
 debian/cron.d.ex                                   |   4 +
 debian/dirs                                        |   2 +
 debian/docs                                        |   0
 debian/emacsen-install.ex                          |  45 ++++
 debian/emacsen-remove.ex                           |  15 ++
 debian/emacsen-startup.ex                          |  25 ++
 debian/files                                       |   2 +
 debian/init.d.ex                                   | 157 +++++++++++
 debian/init.d.lsb.ex                               | 296 +++++++++++++++++++++
 debian/manpage.1.ex                                |  59 ++++
 debian/manpage.sgml.ex                             | 154 +++++++++++
 debian/manpage.xml.ex                              | 291 ++++++++++++++++++++
 debian/menu.ex                                     |   2 +
 debian/postinst.ex                                 |  39 +++
 debian/postrm.ex                                   |  37 +++
 debian/preinst.ex                                  |  35 +++
 debian/prerm.ex                                    |  38 +++
 debian/rules                                       |  93 +++++++
 debian/snorky.debhelper.log                        |  28 ++
 debian/snorky.default.ex                           |  10 +
 debian/snorky.doc-base.EX                          |  20 ++
 debian/snorky.substvars                            |   1 +
 debian/snorky/DEBIAN/control                       |  13 +
 debian/snorky/DEBIAN/md5sums                       |  11 +
 debian/snorky/usr/local/bin/snorky                 |  37 +++
 .../python2.6/dist-packages/Snorky-0.3.egg-info    |  10 +
 .../lib/python2.6/dist-packages/SnorkyCore.py      | 146 ++++++++++
 .../lib/python2.6/dist-packages/SnorkyCore.pyc     | Bin 0 -> 5021 bytes
 .../local/lib/python2.6/dist-packages/SnorkyGui.py | 112 ++++++++
 .../lib/python2.6/dist-packages/SnorkyGui.pyc      | Bin 0 -> 3424 bytes
 .../usr/local/share/applications/snorky.desktop    |  10 +
 debian/snorky/usr/local/share/pixmaps/snorky.png   | Bin 0 -> 9966 bytes
 debian/snorky/usr/share/doc/snorky/README.Debian   |   6 +
 .../usr/share/doc/snorky/changelog.Debian.gz       | Bin 0 -> 171 bytes
 debian/snorky/usr/share/doc/snorky/copyright       |  44 +++
 debian/watch.ex                                    |  23 ++
 setup.py                                           |  13 +
 snorky.desktop                                     |  10 +
 snorky.png                                         | Bin 0 -> 9966 bytes
 44 files changed, 1859 insertions(+)
 create mode 100644 debian/README.Debian
 create mode 100644 debian/changelog
 create mode 100644 debian/compat
 create mode 100644 debian/control
 create mode 100644 debian/copyright
 create mode 100644 debian/cron.d.ex
 create mode 100644 debian/dirs
 create mode 100644 debian/docs
 create mode 100644 debian/emacsen-install.ex
 create mode 100644 debian/emacsen-remove.ex
 create mode 100644 debian/emacsen-startup.ex
 create mode 100644 debian/files
 create mode 100644 debian/init.d.ex
 create mode 100644 debian/init.d.lsb.ex
 create mode 100644 debian/manpage.1.ex
 create mode 100644 debian/manpage.sgml.ex
 create mode 100644 debian/manpage.xml.ex
 create mode 100644 debian/menu.ex
 create mode 100644 debian/postinst.ex
 create mode 100644 debian/postrm.ex
 create mode 100644 debian/preinst.ex
 create mode 100644 debian/prerm.ex
 create mode 100755 debian/rules
 create mode 100644 debian/snorky.debhelper.log
 create mode 100644 debian/snorky.default.ex
 create mode 100644 debian/snorky.doc-base.EX
 create mode 100644 debian/snorky.substvars
 create mode 100644 debian/snorky/DEBIAN/control
 create mode 100644 debian/snorky/DEBIAN/md5sums
 create mode 100755 debian/snorky/usr/local/bin/snorky
 create mode 100644 debian/snorky/usr/local/lib/python2.6/dist-packages/Snorky-0.3.egg-info
 create mode 100644 debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.py
 create mode 100644 debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.pyc
 create mode 100644 debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.py
 create mode 100644 debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.pyc
 create mode 100644 debian/snorky/usr/local/share/applications/snorky.desktop
 create mode 100644 debian/snorky/usr/local/share/pixmaps/snorky.png
 create mode 100644 debian/snorky/usr/share/doc/snorky/README.Debian
 create mode 100644 debian/snorky/usr/share/doc/snorky/changelog.Debian.gz
 create mode 100644 debian/snorky/usr/share/doc/snorky/copyright
 create mode 100644 debian/watch.ex
 create mode 100644 setup.py
 create mode 100644 snorky.desktop
 create mode 100644 snorky.png

diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..f6c71a6
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,6 @@
+snorky for Debian
+-----------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Leonardo Robol <leo@robol.it>  Fri, 25 Dec 2009 19:35:44 +0100
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..c57b304
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+snorky (0.3-1) unstable; urgency=low
+
+  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>
+
+ -- Leonardo Robol <leo@robol.it>  Fri, 25 Dec 2009 19:35:44 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..627449d
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,15 @@
+Source: snorky
+Section: Network
+Priority: extra
+Maintainer: Leonardo Robol <leo@robol.it>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.8.1
+Homepage: http://poisson.phc.unip.it/~robol/page/2/
+
+Package: snorky
+Architecture: all
+Depends: python-qt4, python-paramiko
+Description: Interfaccia per connettersi a web server dietro firewall
+ Snorky è un piccolo script che permette di connettersi a 
+ web server remote protetti da firewall tramite un  tunnel
+ SSH.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..a4c26e7
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,44 @@
+This package was debianized by:
+
+    Leonardo Robol <leo@robol.it> on Fri, 25 Dec 2009 19:35:44 +0100
+
+It was downloaded from:
+
+    <url://example.com>
+
+Upstream Author(s):
+
+    <put author's name and email here>
+    <likewise for another author>
+
+Copyright:
+
+    <Copyright (C) YYYY Firstname Lastname>
+    <likewise for another author>
+
+License:
+
+    This program 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 3 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 3 can be found in `/usr/share/common-licenses/GPL-3'.
+
+The Debian packaging is:
+
+    Copyright (C) 2009 Leonardo Robol <leo@robol.it>
+
+and is licensed under the GPL version 3, see above.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/cron.d.ex b/debian/cron.d.ex
new file mode 100644
index 0000000..46b4884
--- /dev/null
+++ b/debian/cron.d.ex
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the snorky package
+#
+0 4	* * *	root	[ -x /usr/bin/snorky_maintenance ] && /usr/bin/snorky_maintenance
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..ca882bb
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..e69de29
diff --git a/debian/emacsen-install.ex b/debian/emacsen-install.ex
new file mode 100644
index 0000000..702deed
--- /dev/null
+++ b/debian/emacsen-install.ex
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/snorky
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=snorky
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+#    SITEFLAG="-no-site-file"
+#else
+#    SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+    echo install/${PACKAGE}: install Info links for ${FLAVOR}
+    install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/debian/emacsen-remove.ex b/debian/emacsen-remove.ex
new file mode 100644
index 0000000..b76ee57
--- /dev/null
+++ b/debian/emacsen-remove.ex
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/snorky
+
+FLAVOR=$1
+PACKAGE=snorky
+
+if [ ${FLAVOR} != emacs ]; then
+    if test -x /usr/sbin/install-info-altdir; then
+        echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+        install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/snorky.info.gz
+    fi
+
+    echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+    rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/debian/emacsen-startup.ex b/debian/emacsen-startup.ex
new file mode 100644
index 0000000..eb1703d
--- /dev/null
+++ b/debian/emacsen-startup.ex
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g.  /etc/emacs/site-start.d/50snorky.el
+;; for the Debian snorky package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The snorky package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...).  The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+                           (symbol-name flavor)
+                           "/site-lisp/snorky")))
+;; If package-dir does not exist, the snorky package must have
+;; removed but not purged, and we should skip the setup.
+  (when (file-directory-p package-dir)
+    (setq load-path (cons package-dir load-path))
+    (autoload 'snorky-mode "snorky-mode"
+      "Major mode for editing snorky files." t)
+    (add-to-list 'auto-mode-alist '("\\.snorky$" . snorky-mode))))
+
diff --git a/debian/files b/debian/files
new file mode 100644
index 0000000..3616665
--- /dev/null
+++ b/debian/files
@@ -0,0 +1,2 @@
+snorky_0.3-1_all.deb unknown extra
+snorky_0.3-1_all.deb Network extra
diff --git a/debian/init.d.ex b/debian/init.d.ex
new file mode 100644
index 0000000..c70e024
--- /dev/null
+++ b/debian/init.d.ex
@@ -0,0 +1,157 @@
+#! /bin/sh
+#
+# skeleton	example file to build /etc/init.d/ scripts.
+#		This file should be used to construct scripts for /etc/init.d.
+#
+#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#		Modified for Debian
+#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# Version:	@(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/snorky
+NAME=snorky
+DESC=snorky
+
+test -x $DAEMON || exit 0
+
+LOGDIR=/var/log/snorky
+PIDFILE=/var/run/$NAME.pid
+DODTIME=1                   # Time to wait for the server to die, in seconds
+                            # If this value is set too low you might not
+                            # let some servers to die gracefully and
+                            # 'restart' will not work
+
+# Include snorky defaults if available
+if [ -f /etc/default/snorky ] ; then
+    . /etc/default/snorky
+fi
+
+set -e
+
+running_pid()
+{
+    # Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected child?
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    # Obtain the pid and check it against the binary name
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+force_stop() {
+# Forcefully kill the process
+    [ ! -f "$PIDFILE" ] && return
+    if running ; then
+        kill -15 $pid
+        # Is it really dead?
+        [ -n "$DODTIME" ] && sleep "$DODTIME"s
+        if running ; then
+            kill -9 $pid
+            [ -n "$DODTIME" ] && sleep "$DODTIME"s
+            if running ; then
+                echo "Cannot kill $LABEL (pid=$pid)!"
+                exit 1
+            fi
+        fi
+    fi
+    rm -f $PIDFILE
+    return 0
+}
+
+case "$1" in
+  start)
+        echo -n "Starting $DESC: "
+        start-stop-daemon --start --quiet --pidfile $PIDFILE \
+            --exec $DAEMON -- $DAEMON_OPTS
+        if running ; then
+            echo "$NAME."
+        else
+            echo " ERROR."
+        fi
+        ;;
+  stop)
+        echo -n "Stopping $DESC: "
+        start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+            --exec $DAEMON
+        echo "$NAME."
+        ;;
+  force-stop)
+        echo -n "Forcefully stopping $DESC: "
+        force_stop
+        if ! running ; then
+            echo "$NAME."
+        else
+            echo " ERROR."
+        fi
+        ;;
+  #reload)
+        #
+        # If the daemon can reload its config files on the fly
+        # for example by sending it SIGHUP, do it here.
+        #
+        # If the daemon responds to changes in its config file
+        # directly anyway, make this a do-nothing entry.
+        #
+        # echo "Reloading $DESC configuration files."
+        # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+        #       /var/run/$NAME.pid --exec $DAEMON
+  #;;
+  force-reload)
+        #
+        # If the "reload" option is implemented, move the "force-reload"
+        # option to the "reload" entry above. If not, "force-reload" is
+        # just the same as "restart" except that it does nothing if the
+        # daemon isn't already running.
+        # check wether $DAEMON is running. If so, restart
+        start-stop-daemon --stop --test --quiet --pidfile \
+            /var/run/$NAME.pid --exec $DAEMON \
+            && $0 restart \
+            || exit 0
+        ;;
+  restart)
+    echo -n "Restarting $DESC: "
+        start-stop-daemon --stop --quiet --pidfile \
+            /var/run/$NAME.pid --exec $DAEMON
+        [ -n "$DODTIME" ] && sleep $DODTIME
+        start-stop-daemon --start --quiet --pidfile \
+            /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+        echo "$NAME."
+        ;;
+  status)
+    echo -n "$LABEL is "
+    if running ;  then
+        echo "running"
+    else
+        echo " not running."
+        exit 1
+    fi
+    ;;
+  *)
+    N=/etc/init.d/$NAME
+    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+    echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/debian/init.d.lsb.ex b/debian/init.d.lsb.ex
new file mode 100644
index 0000000..3085dcf
--- /dev/null
+++ b/debian/init.d.lsb.ex
@@ -0,0 +1,296 @@
+#!/bin/sh
+#
+# Example init.d script with LSB support.
+#
+# Please read this init.d carefully and modify the sections to
+# adjust it to the program you want to run.
+#
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+#
+# This is free software; you may 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,
+# or (at your option) any later version.
+#
+# This 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 with
+# the Debian operating system, in /usr/share/common-licenses/GPL;  if
+# not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+#
+### BEGIN INIT INFO
+# Provides:          snorky
+# Required-Start:    $network $local_fs
+# Required-Stop:
+# Should-Start:      $named
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: <Enter a short description of the sortware>
+# Description:       <Enter a long description of the software>
+#                    <...>
+#                    <...>
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/sbin/snorky # Introduce the server's location here
+NAME=#PACKAGE              # Introduce the short server's name here
+DESC=#PACKAGE              # Introduce a short description here
+LOGDIR=/var/log/snorky  # Log directory to use
+
+PIDFILE=/var/run/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS=""          # Additional options given to the server
+
+DIETIME=10              # Time to wait for the server to die, in seconds
+                        # If this value is set too low you might not
+                        # let some servers to die gracefully and
+                        # 'restart' will not work
+
+#STARTTIME=2             # Time to wait for the server to start, in seconds
+                        # If this value is set each time the server is
+                        # started (on start or restart) the script will
+                        # stall to try to determine if it is running
+                        # If it is not set and the server takes time
+                        # to setup a pid file the log message might
+                        # be a false positive (says it did not start
+                        # when it actually did)
+
+LOGFILE=$LOGDIR/$NAME.log  # Server logfile
+#DAEMONUSER=snorky   # Users to run the daemons as. If this value
+                        # is set start-stop-daemon will chuid the server
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+    . /etc/default/$NAME
+fi
+
+# Use this if you want the user to explicitly set 'RUN' in
+# /etc/default/
+#if [ "x$RUN" != "xyes" ] ; then
+#    log_failure_msg "$NAME disabled, please adjust the configuration to your needs "
+#    log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it."
+#    exit 1
+#fi
+
+# Check that the user exists (if we set a user)
+# Does the user exist?
+if [ -n "$DAEMONUSER" ] ; then
+    if getent passwd | grep -q "^$DAEMONUSER:"; then
+        # Obtain the uid and gid
+        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
+        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
+    else
+        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
+        exit 1
+    fi
+fi
+
+
+set -e
+
+running_pid() {
+# Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected server
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running() {
+# Check if the process is running looking at /proc
+# (works for all users)
+
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+start_server() {
+# Start the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            start_daemon -p $PIDFILE $DAEMON $DAEMON_OPTS
+            errcode=$?
+        else
+# if we are using a daemonuser then change the user id
+            start-stop-daemon --start --quiet --pidfile $PIDFILE \
+                        --chuid $DAEMONUSER \
+                        --exec $DAEMON -- $DAEMON_OPTS
+            errcode=$?
+        fi
+        return $errcode
+}
+
+stop_server() {
+# Stop the process using the wrapper
+        if [ -z "$DAEMONUSER" ] ; then
+            killproc -p $PIDFILE $DAEMON
+            errcode=$?
+        else
+# if we are using a daemonuser then look for process that match
+            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+                        --user $DAEMONUSER \
+                        --exec $DAEMON
+            errcode=$?
+        fi
+
+        return $errcode
+}
+
+reload_server() {
+    [ ! -f "$PIDFILE" ] && return 1
+    pid=pidofproc $PIDFILE # This is the daemon's pid
+    # Send a SIGHUP
+    kill -1 $pid
+    return $?
+}
+
+force_stop() {
+# Force the process to die killing it manually
+    [ ! -e "$PIDFILE" ] && return
+    if running ; then
+        kill -15 $pid
+        # Is it really dead?
+        sleep "$DIETIME"s
+        if running ; then
+            kill -9 $pid
+            sleep "$DIETIME"s
+            if running ; then
+                echo "Cannot kill $NAME (pid=$pid)!"
+                exit 1
+            fi
+        fi
+    fi
+    rm -f $PIDFILE
+}
+
+
+case "$1" in
+  start)
+        log_daemon_msg "Starting $DESC " "$NAME"
+        # Check if it's running first
+        if running ;  then
+            log_progress_msg "apparently already running"
+            log_end_msg 0
+            exit 0
+        fi
+        if start_server ; then
+            # NOTE: Some servers might die some time after they start,
+            # this code will detect this issue if STARTTIME is set
+            # to a reasonable value
+            [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
+            if  running ;  then
+                # It's ok, the server started and is running
+                log_end_msg 0
+            else
+                # It is not running after we did start
+                log_end_msg 1
+            fi
+        else
+            # Either we could not start it
+            log_end_msg 1
+        fi
+        ;;
+  stop)
+        log_daemon_msg "Stopping $DESC" "$NAME"
+        if running ; then
+            # Only stop the server if we see it running
+            errcode=0
+            stop_server || errcode=$?
+            log_end_msg $errcode
+        else
+            # If it's not running don't do anything
+            log_progress_msg "apparently not running"
+            log_end_msg 0
+            exit 0
+        fi
+        ;;
+  force-stop)
+        # First try to stop gracefully the program
+        $0 stop
+        if running; then
+            # If it's still running try to kill it more forcefully
+            log_daemon_msg "Stopping (force) $DESC" "$NAME"
+            errcode=0
+            force_stop || errcode=$?
+            log_end_msg $errcode
+        fi
+        ;;
+  restart|force-reload)
+        log_daemon_msg "Restarting $DESC" "$NAME"
+        errcode=0
+        stop_server || errcode=$?
+        # Wait some sensible amount, some server need this
+        [ -n "$DIETIME" ] && sleep $DIETIME
+        start_server || errcode=$?
+        [ -n "$STARTTIME" ] && sleep $STARTTIME
+        running || errcode=$?
+        log_end_msg $errcode
+        ;;
+  status)
+
+        log_daemon_msg "Checking status of $DESC" "$NAME"
+        if running ;  then
+            log_progress_msg "running"
+            log_end_msg 0
+        else
+            log_progress_msg "apparently not running"
+            log_end_msg 1
+            exit 1
+        fi
+        ;;
+  # Use this if the daemon cannot reload
+  reload)
+        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
+        log_warning_msg "cannot re-read the config file (use restart)."
+        ;;
+  # And this if it cann
+  #reload)
+          #
+          # If the daemon can reload its config files on the fly
+          # for example by sending it SIGHUP, do it here.
+          #
+          # If the daemon responds to changes in its config file
+          # directly anyway, make this a do-nothing entry.
+          #
+          # log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+          # if running ; then
+          #    reload_server
+          #    if ! running ;  then
+          # Process died after we tried to reload
+          #       log_progress_msg "died on reload"
+          #       log_end_msg 1
+          #       exit 1
+          #    fi
+          # else
+          #    log_progress_msg "server is not running"
+          #    log_end_msg 1
+          #    exit 1
+          # fi
+                                                                                    #;;
+
+  *)
+        N=/etc/init.d/$NAME
+        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex
new file mode 100644
index 0000000..686752c
--- /dev/null
+++ b/debian/manpage.1.ex
@@ -0,0 +1,59 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH SNORKY SECTION "December 25, 2009"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+snorky \- program to do something
+.SH SYNOPSIS
+.B snorky
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B snorky
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBsnorky\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+snorky was written by <upstream author>.
+.PP
+This manual page was written by Leonardo Robol <leo@robol.it>,
+for the Debian project (and may be used by others).
diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex
new file mode 100644
index 0000000..f16724a
--- /dev/null
+++ b/debian/manpage.sgml.ex
@@ -0,0 +1,154 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
+     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+     less'.  A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+	docbook-to-man $< > $@
+
+
+	The docbook-to-man binary is found in the docbook-to-man package.
+	Please remember that if you create the nroff version in one of the
+	debian/rules file targets (such as build), you will need to include
+	docbook-to-man in your Build-Depends control field.
+
+  -->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+  <!ENTITY dhsurname   "<surname>SURNAME</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>December 25, 2009</date>">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1). -->
+  <!ENTITY dhsection   "<manvolnum>SECTION</manvolnum>">
+  <!ENTITY dhemail     "<email>leo@robol.it</email>">
+  <!ENTITY dhusername  "Leonardo Robol">
+  <!ENTITY dhucpackage "<refentrytitle>SNORKY</refentrytitle>">
+  <!ENTITY dhpackage   "snorky">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+      <arg><option>--example <replaceable>that</replaceable></option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the &gnu;
+      <application>Info</application> format; see below.</para>
+
+    <para><command>&dhpackage;</command> is a program that...</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+
+    <para>These programs follow the usual &gnu; command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <application>Info</application> files.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>-h</option>
+          <option>--help</option>
+        </term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option>
+          <option>--version</option>
+        </term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1>
+    <title>SEE ALSO</title>
+
+    <para>bar (1), baz (1).</para>
+
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the
+      <application>Info</application> system.</para>
+  </refsect1>
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (and may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any
+      later version published by the Free Software Foundation.
+    </para>
+    <para>
+      On Debian systems, the complete text of the GNU General Public
+      License can be found in /usr/share/common-licenses/GPL.
+    </para>
+
+  </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex
new file mode 100644
index 0000000..23dc980
--- /dev/null
+++ b/debian/manpage.xml.ex
@@ -0,0 +1,291 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+
+<!--
+
+`xsltproc -''-nonet \
+          -''-param man.charmap.use.subset "0" \
+          -''-param make.year.ranges "1" \
+          -''-param make.single.year.ranges "1" \
+          /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
+          manpage.xml'
+
+A manual page <package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A typical entry
+in a Makefile or Makefile.am is:
+
+DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP     = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
+
+manpage.1: manpage.xml
+        $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The XSL files are in
+docbook-xsl. A description of the parameters you can use can be found in the
+docbook-xsl-doc-* packages. Please remember that if you create the nroff
+version in one of the debian/rules file targets (such as build), you will need
+to include xsltproc and docbook-xsl in your Build-Depends control field.
+Alternatively use the xmlto command/package. That will also automatically
+pull in xsltproc and docbook-xsl.
+
+Notes for using docbook2x: docbook2x-man does not automatically create the
+AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
+<refsect1> ... </refsect1>.
+
+To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
+read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
+found in the docbook-xsl-doc-html package.
+
+Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
+
+General documentation about man-pages and man-page-formatting:
+man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
+
+-->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "FIRSTNAME">
+  <!ENTITY dhsurname   "SURNAME">
+  <!-- dhusername could also be set to "&firstname; &surname;". -->
+  <!ENTITY dhusername  "Leonardo Robol">
+  <!ENTITY dhemail     "leo@robol.it">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1) and
+       http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
+  <!ENTITY dhsection   "SECTION">
+  <!-- TITLE should be something like "User commands" or similar (see
+       http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
+  <!ENTITY dhtitle     "snorky User Manual">
+  <!ENTITY dhucpackage "SNORKY">
+  <!ENTITY dhpackage   "snorky">
+]>
+
+<refentry>
+  <refentryinfo>
+    <title>&dhtitle;</title>
+    <productname>&dhpackage;</productname>
+    <authorgroup>
+      <author>
+       <firstname>&dhfirstname;</firstname>
+        <surname>&dhsurname;</surname>
+        <contrib>Wrote this manpage for the Debian system.</contrib>
+        <address>
+          <email>&dhemail;</email>
+        </address>
+      </author>
+    </authorgroup>
+    <copyright>
+      <year>2007</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    <legalnotice>
+      <para>This manual page was written for the Debian system
+        (and may be used by others).</para>
+      <para>Permission is granted to copy, distribute and/or modify this
+        document under the terms of the GNU General Public License,
+        Version 2 or (at your option) any later version published by
+        the Free Software Foundation.</para>
+      <para>On Debian systems, the complete text of the GNU General Public
+        License can be found in
+        <filename>/usr/share/common-licenses/GPL</filename>.</para>
+    </legalnotice>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>&dhucpackage;</refentrytitle>
+    <manvolnum>&dhsection;</manvolnum>
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+      <!-- These are several examples, how syntaxes could look -->
+      <arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
+      <arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
+      <arg choice="opt">
+        <group choice="req">
+          <arg choice="plain"><option>-e</option></arg>
+          <arg choice="plain"><option>--example</option></arg>
+        </group>
+        <replaceable class="option">this</replaceable>
+      </arg>
+      <arg choice="opt">
+        <group choice="req">
+          <arg choice="plain"><option>-e</option></arg>
+          <arg choice="plain"><option>--example</option></arg>
+        </group>
+        <group choice="req">
+          <arg choice="plain"><replaceable>this</replaceable></arg>
+          <arg choice="plain"><replaceable>that</replaceable></arg>
+        </group>
+      </arg>
+    </cmdsynopsis>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+      <!-- Normally the help and version options make the programs stop
+           right after outputting the requested information. -->
+      <group choice="opt">
+        <arg choice="plain">
+          <group choice="req">
+            <arg choice="plain"><option>-h</option></arg>
+            <arg choice="plain"><option>--help</option></arg>
+          </group>
+        </arg>
+        <arg choice="plain">
+          <group choice="req">
+            <arg choice="plain"><option>-v</option></arg>
+            <arg choice="plain"><option>--version</option></arg>
+          </group>
+        </arg>
+      </group>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1 id="description">
+    <title>DESCRIPTION</title>
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+    <para>This manual page was written for the Debian distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the GNU <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> format; see below.</para>
+    <para><command>&dhpackage;</command> is a program that...</para>
+  </refsect1>
+  <refsect1 id="options">
+    <title>OPTIONS</title>
+    <para>The program follows the usual GNU command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> files.</para>
+    <variablelist>
+      <!-- Use the variablelist.term.separator and the
+           variablelist.term.break.after parameters to
+           control the term elements. -->
+      <varlistentry>
+        <term><option>-e <replaceable>this</replaceable></option></term>
+        <term><option>--example=<replaceable>that</replaceable></option></term>
+        <listitem>
+          <para>Does this and that.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-h</option></term>
+        <term><option>--help</option></term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option></term>
+        <term><option>--version</option></term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="files">
+    <title>FILES</title>
+    <variablelist>
+      <varlistentry>
+        <term><filename>/etc/foo.conf</filename></term>
+        <listitem>
+          <para>The system-wide configuration file to control the
+            behaviour of <application>&dhpackage;</application>. See
+            <citerefentry>
+              <refentrytitle>foo.conf</refentrytitle>
+              <manvolnum>5</manvolnum>
+            </citerefentry> for further details.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><filename>${HOME}/.foo.conf</filename></term>
+        <listitem>
+          <para>The per-user configuration file to control the
+             behaviour of <application>&dhpackage;</application>. See
+             <citerefentry>
+               <refentrytitle>foo.conf</refentrytitle>
+               <manvolnum>5</manvolnum>
+             </citerefentry> for further details.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="environment">
+    <title>ENVIONMENT</title>
+    <variablelist>
+      <varlistentry>
+        <term><envar>FOO_CONF</envar></term>
+        <listitem>
+          <para>If used, the defined file is used as configuration
+            file (see also <xref linkend="files"/>).</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1 id="diagnostics">
+    <title>DIAGNOSTICS</title>
+    <para>The following diagnostics may be issued
+      on <filename class="devicefile">stderr</filename>:</para>
+    <variablelist>
+      <varlistentry>
+        <term><errortext>Bad configuration file. Exiting.</errortext></term>
+        <listitem>
+          <para>The configuration file seems to contain a broken configuration
+            line. Use the <option>--verbose</option> option, to get more info.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+    <para><command>&dhpackage;</command> provides some return codes, that can
+      be used in scripts:</para>
+    <segmentedlist>
+      <segtitle>Code</segtitle>
+      <segtitle>Diagnostic</segtitle>
+      <seglistitem>
+        <seg><errorcode>0</errorcode></seg>
+        <seg>Program exited successfully.</seg>
+      </seglistitem>
+      <seglistitem>
+        <seg><errorcode>1</errorcode></seg>
+        <seg>The configuration file seems to be broken.</seg>
+      </seglistitem>
+    </segmentedlist>
+  </refsect1>
+  <refsect1 id="bugs">
+    <!-- Or use this section to tell about upstream BTS. -->
+    <title>BUGS</title>
+    <para>The program is currently limited to only work
+      with the <package>foobar</package> library.</para>
+    <para>The upstreams <acronym>BTS</acronym> can be found
+      at <ulink url="http://bugzilla.foo.tld"/>.</para>
+  </refsect1>
+  <refsect1 id="see_also">
+    <title>SEE ALSO</title>
+    <!-- In alpabetical order. -->
+    <para><citerefentry>
+        <refentrytitle>bar</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>baz</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>foo.conf</refentrytitle>
+        <manvolnum>5</manvolnum>
+      </citerefentry></para>
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the <citerefentry>
+        <refentrytitle>info</refentrytitle>
+        <manvolnum>1</manvolnum>
+      </citerefentry> system.</para>
+  </refsect1>
+</refentry>
+
diff --git a/debian/menu.ex b/debian/menu.ex
new file mode 100644
index 0000000..ba9330c
--- /dev/null
+++ b/debian/menu.ex
@@ -0,0 +1,2 @@
+?package(snorky):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
+  title="snorky" command="/usr/bin/snorky"
diff --git a/debian/postinst.ex b/debian/postinst.ex
new file mode 100644
index 0000000..d5a16c2
--- /dev/null
+++ b/debian/postinst.ex
@@ -0,0 +1,39 @@
+#!/bin/sh
+# postinst script for snorky
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/postrm.ex b/debian/postrm.ex
new file mode 100644
index 0000000..da1860d
--- /dev/null
+++ b/debian/postrm.ex
@@ -0,0 +1,37 @@
+#!/bin/sh
+# postrm script for snorky
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/preinst.ex b/debian/preinst.ex
new file mode 100644
index 0000000..97e05b7
--- /dev/null
+++ b/debian/preinst.ex
@@ -0,0 +1,35 @@
+#!/bin/sh
+# preinst script for snorky
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/prerm.ex b/debian/prerm.ex
new file mode 100644
index 0000000..03f840a
--- /dev/null
+++ b/debian/prerm.ex
@@ -0,0 +1,38 @@
+#!/bin/sh
+# prerm script for snorky
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..a650fe0
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,93 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+
+	touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp  
+	dh_testdir
+
+	# Add here commands to compile the package.
+	#	$(MAKE)
+	#	setup.py 
+	#docbook-to-man debian/snorky.sgml > snorky.1
+
+	touch $@
+
+clean: 
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	# $(MAKE) clean
+	python setup.py clean
+
+	dh_clean 
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_prep  
+	dh_installdirs
+
+	# Add here commands to install the package into debian/snorky.
+	python setup.py install --root=$(CURDIR)/debian/snorky
+
+
+# Build architecture-independent files here.
+binary-indep: install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs 
+	dh_installdocs
+	dh_installexamples
+#	dh_install
+#	dh_installmenu
+#	dh_installdebconf
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+#	dh_installinit
+#	dh_installcron
+#	dh_installinfo
+#	dh_installwm
+#	dh_installudev
+#	dh_lintian
+#	dh_undocumented
+	dh_installman
+	dh_link
+	dh_compress
+	dh_fixperms
+#	dh_perl
+#	dh_python
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+# Build architecture-dependent files here.
+binary-arch: install
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/snorky.debhelper.log b/debian/snorky.debhelper.log
new file mode 100644
index 0000000..ce2e461
--- /dev/null
+++ b/debian/snorky.debhelper.log
@@ -0,0 +1,28 @@
+dh_prep
+dh_installdirs
+dh_prep
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
+dh_prep
+dh_installdirs
+dh_installchangelogs
+dh_installdocs
+dh_installexamples
+dh_installman
+dh_link
+dh_compress
+dh_fixperms
+dh_installdeb
+dh_gencontrol
+dh_md5sums
+dh_builddeb
diff --git a/debian/snorky.default.ex b/debian/snorky.default.ex
new file mode 100644
index 0000000..5140da9
--- /dev/null
+++ b/debian/snorky.default.ex
@@ -0,0 +1,10 @@
+# Defaults for snorky initscript
+# sourced by /etc/init.d/snorky
+# installed at /etc/default/snorky by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/debian/snorky.doc-base.EX b/debian/snorky.doc-base.EX
new file mode 100644
index 0000000..4f84318
--- /dev/null
+++ b/debian/snorky.doc-base.EX
@@ -0,0 +1,20 @@
+Document: snorky
+Title: Debian snorky Manual
+Author: <insert document author here>
+Abstract: This manual describes what snorky is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/snorky/snorky.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/snorky/snorky.ps.gz
+
+Format: text
+Files: /usr/share/doc/snorky/snorky.text.gz
+
+Format: HTML
+Index: /usr/share/doc/snorky/html/index.html
+Files: /usr/share/doc/snorky/html/*.html
diff --git a/debian/snorky.substvars b/debian/snorky.substvars
new file mode 100644
index 0000000..abd3ebe
--- /dev/null
+++ b/debian/snorky.substvars
@@ -0,0 +1 @@
+misc:Depends=
diff --git a/debian/snorky/DEBIAN/control b/debian/snorky/DEBIAN/control
new file mode 100644
index 0000000..f52f45f
--- /dev/null
+++ b/debian/snorky/DEBIAN/control
@@ -0,0 +1,13 @@
+Package: snorky
+Version: 0.3-1
+Architecture: all
+Maintainer: Leonardo Robol <leo@robol.it>
+Installed-Size: 124
+Depends: python-qt4, python-paramiko
+Section: Network
+Priority: extra
+Homepage: http://poisson.phc.unip.it/~robol/page/2/
+Description: Interfaccia per connettersi a web server dietro firewall
+ Snorky è un piccolo script che permette di connettersi a
+ web server remote protetti da firewall tramite un  tunnel
+ SSH.
diff --git a/debian/snorky/DEBIAN/md5sums b/debian/snorky/DEBIAN/md5sums
new file mode 100644
index 0000000..c6851a9
--- /dev/null
+++ b/debian/snorky/DEBIAN/md5sums
@@ -0,0 +1,11 @@
+4813cc0393ff2ffaa9a914162124f31c  usr/share/doc/snorky/copyright
+5bf56860ca5e503a473acd79b8618364  usr/share/doc/snorky/changelog.Debian.gz
+651fe5ef1b20a2c87361b780083b571d  usr/share/doc/snorky/README.Debian
+098e13676c7b785045d480d556658a12  usr/local/bin/snorky
+00ca392d045728e30f87a0df87906d2d  usr/local/lib/python2.6/dist-packages/SnorkyGui.py
+f3ffe96550a701ad0e6c2538c617aeb3  usr/local/lib/python2.6/dist-packages/SnorkyCore.pyc
+ff2ab29faaca40458ec6c1949e66236a  usr/local/lib/python2.6/dist-packages/Snorky-0.3.egg-info
+8e7151a78f516f1bd5e8de3dbfc9cdda  usr/local/lib/python2.6/dist-packages/SnorkyGui.pyc
+7f6faf50254de109e318a9ba84ec0ba1  usr/local/lib/python2.6/dist-packages/SnorkyCore.py
+17aa0293296653cc68cfcda6bd26f8a7  usr/local/share/applications/snorky.desktop
+a7f885aea2100694508ed4826a98cd97  usr/local/share/pixmaps/snorky.png
diff --git a/debian/snorky/usr/local/bin/snorky b/debian/snorky/usr/local/bin/snorky
new file mode 100755
index 0000000..e5c0afe
--- /dev/null
+++ b/debian/snorky/usr/local/bin/snorky
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+import sys
+from SnorkyGui import *
+from SnorkyCore import *
+from PyQt4 import QtCore
+
+# Our SSH interface :)
+ssh = SnorkySSH()
+
+# Creating Qt4 App
+app = QtGui.QApplication(sys.argv)
+win = SnorkyMainWin()
+
+# Some function to make Gui interact with Core
+def btnConnectPressed():
+    if(ssh.connected == True):
+        ssh.closeTunnel()
+        win.btnConnect.setText("Connect")
+        win.web.reset()
+    else:
+        user = str(win.qle_username.text())
+        passwd = str(win.qle_passwd.text())
+        host = str(win.qle_host.text())
+        ssh.authenticate(host, user, passwd)
+        port = int(win.qle_port.text())
+        ssh.openTunnel(host, 9998, port)
+        win.web.load_page()
+        win.btnConnect.setText("Disconnect")
+    
+
+
+win.connect(win.btnConnect, QtCore.SIGNAL("clicked()"), btnConnectPressed)
+
+win.show()
+
+sys.exit(app.exec_())
diff --git a/debian/snorky/usr/local/lib/python2.6/dist-packages/Snorky-0.3.egg-info b/debian/snorky/usr/local/lib/python2.6/dist-packages/Snorky-0.3.egg-info
new file mode 100644
index 0000000..ae136ff
--- /dev/null
+++ b/debian/snorky/usr/local/lib/python2.6/dist-packages/Snorky-0.3.egg-info
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: Snorky
+Version: 0.3
+Summary: UNKNOWN
+Home-page: http://www.robol.it/~leonardo/
+Author: Leonardo Robol
+Author-email: leo@robol.it
+License: GPL
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.py b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.py
new file mode 100644
index 0000000..378dd32
--- /dev/null
+++ b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.py
@@ -0,0 +1,146 @@
+## SnorkyCore -- This is the main library of Snorky,
+## aimed to provide the forward over SSH of arbitrary
+## ports. 
+
+import select, SocketServer, threading, paramiko
+
+# Set verbosity (only useful for debugging)
+g_verbose = False
+
+def verbose(string):
+    if(g_verbose):
+        print "=> " + string
+
+class SnorkyHandler(SocketServer.BaseRequestHandler):
+    """The handler for the data exchanged by Snorky and the
+    server on the SSH server contacted by Snorky"""
+    
+    def handle(self):
+        """This the overloaded method the actually handles the data. It is
+        called when the connection is open (and actually it opens the connection
+        to the ssh server!)."""
+        
+        # We first need to try to obtain the forwarded channel
+        try:
+            self.channel = self.transport.open_channel('direct-tcpip',
+                                                       (self.remote_host, self.remote_port),
+                                                       (self.local_host , self.local_port))
+            verbose("Channel opened")
+        except Exception, e:
+            verbose("Unable to open the requested channel (%s)" % e)
+            return
+
+        # Keep the server going :)
+        while(True):
+
+            # Now that we have the channel, we need to build up our handler
+            # Asynchronous reading from the server and the forwarded
+            # channel is necessary
+            r , w, x = select.select([self.request, self.channel], [], [])
+
+            # Check if we need to read a request from the server, and if it is so,
+            # write into the channel
+            if self.request in r:
+                data = self.request.recv(1024)
+                if( len(data) == 0 ):
+                    break # Nothing to do, exit...
+
+                # Ok, transmit on the channel
+                self.channel.send(data)
+
+            # Check if we need to read from forwarded channel
+            if self.channel in r:
+                data = self.channel.recv(1024)
+                if( len(data) == 0 ):
+                        break # Nothing to do
+
+                # Ok, so send to the server!
+                self.request.send(data)
+
+        # Connection complete... so
+        self.channel.close()
+        self.request.close()
+    
+
+class SnorkyForwardServer(SocketServer.ThreadingTCPServer):
+    """This is the server aimed to handle all traffic"""
+    daemon_threads = True
+    allow_reuse_address = True
+        
+
+class SnorkyServerThread(threading.Thread):
+    """The thread running the server"""
+
+    def __init__(self, local_host, local_port, remote_host, remote_port, transport):
+        threading.Thread.__init__(self)
+        self.transport = transport
+        self.remote_host = remote_host
+        self.remote_port = remote_port
+        self.local_host = local_host
+        self.local_port = local_port
+
+    def run(self):
+        """Overloaded run method so that it runs our customized server"""
+
+        # We need to define a new SubHandler with tranport in it!
+        class SnorkySubHandler(SnorkyHandler):
+            transport = self.transport
+            remote_host = self.remote_host
+            remote_port = self.remote_port
+            local_host = self.local_host
+            local_port = self.local_port
+
+        # Start the server
+        self.server = SnorkyForwardServer((self.local_host, self.local_port), SnorkySubHandler)
+        self.server.serve_forever()
+    
+    
+class SnorkySSH():
+    """Provide an abstract interface to the SSH work (forwarding)
+    using the Paramiko library"""
+
+    def __init__(self):
+        # Create the Paramiko Client and tell it we don't bother about
+        # keys...
+        self.SSHClient = paramiko.SSHClient()
+        self.SSHClient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+
+        # Our status
+        self.connected = False
+
+    def authenticate(self, server, username, password):
+        # Check that we are not connected
+        if(self.connected):
+            verbose("We are connected, so doing nothing")
+            return
+        
+        # Try connecting with Paramiko
+        try:
+            self.SSHClient.connect(server, 22, username, password)
+            self.connected = True
+        except Exception, e:
+            verbose("Connection to %s@%s failed" % username, server)
+            self.connected = False
+
+    def openTunnel(self, remote_host, local_port, remote_port):
+        # Check that we are connected
+        if(self.connected == False):
+            verbose("We are not connected, please call SnorkySSH.authenticate() first")
+            return
+        
+        # Get the transport
+        transport = self.SSHClient.get_transport()
+        
+        # Create the server thread
+        self.server_thread = SnorkyServerThread('', local_port, remote_host, remote_port, transport)
+        
+        # Start the server
+        self.server_thread.start()
+
+    def closeTunnel(self):
+        """Disconnect from the remote server"""
+        # Just destroy anything!
+        self.server_thread.server.shutdown()
+        del self.server_thread
+        self.connected = False
+
diff --git a/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.pyc b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bf0626a79dcf2396b6ab947f763b54bbdfb73dde
GIT binary patch
literal 5021
zcmb_f(Q+I|746yCU1?XAC6bh5VM9%j4XYHEr~siTz-32}h)^X|vjQiAs$n$Ks~u}J
zvzhL-EGl|Z3V7fr_yB%{7YaUwA0X%4o}Jy0f}&)t-L3AP?%Un>o_p@?fBb8;|KQ!f
zf0(HHw}ih>P|ROYrTFiuQ>BiYwx^D~*?3DGwPtN!9r;SP)lo;KE%h0ebXAHGPi0GL
zge7ebUMcnQ(XvWA@}Vamy3L2aN|%&wscc0)EH@u+skEok6_xgzp;ex2IJkvVX8*=-
zKk?9HX`$?*n7gQ~Qst`hF!xiX-uz&%@X%3M$XWZwNBxt>!GP;*57kNZLRZJ7(Qc@V
zA!DnoI2oX&q%z+_YiDYzoxDuqd?(M2cP1BhTo&(azq^xW#y*<F$!UC|&CakWtJ90!
zveMg_LfzKl`)HarD&;MCb`^i!)V;V!b6qv&;KANQF>j*M(5fh(YWJuL=sa|HG5Dws
z$2u503BjnW0*ihc+c?lK6O5neG&sHp+)e@JaY8@9&*%yV3(7*442OHOk)$kaoY=*M
zqG&2+8ATNR8=UguDK(toKTasx&RR0!tC4H8rQ2cm%4a+3DyRf#xq?xi6%SO~F01E#
zRo+#ecZo56#Y|7#;f%DchTcan|4BoYf5X?l%K9R6Me43PX{i&K5HR!AZ+&&yQkSUR
zzL?We&%3I8tUMlcMP)!$hkIXk6fE$mw9~G7-cn^pc?X0FXLeO~yZ-9U$G#{HbN)|h
z*te1P$*J;Kp4Ho|(LZLVa~)oKK-`$WihVO97Aj$_yo^)W<xB&5V#xr8n#Os4QDeYO
zrTw>qpW7faVrrTju+6dbe5{?pVdX+6HiP}KK{>(jfbeJpW>!X>#QE$-pe^NC#*Ay=
zytTD$=$mO)LGUA+OtOi&O~3$$h0aBsPR$mEepSTBxeg#hb|z>m{mE1t!j8D*{J}%B
zwVx@t3@`>yTt_7yYpb|0ld`gw`%ywvudyo_sPtKBbu=!GUF^#OI-&Tm`#kT;S8BbM
z6p}4ux1YUC^n{ACbl$^is;zK@&T&m~@cQWT9e00W$uYTh3ydyO+o9l`9K)qD(dc|+
z>FZkRO6qf|U&;hp@g^vUJ3^!2nAgxU+o)96_ilM>-d*puw~o^FeYMniyS?tc=DqH9
z{5SkrYr|jl2D~@?6z&@p@tKYy_#r!IWjf8-rQV__Et4n;H_)CRTUytq&yb2FgoHP{
zt!~S{j-F$)_si-$uF|3KSb|~sHSGCSbQjrEBV4r=>kbK&^F$YiW8lB`v6>U(><lmj
zIGx%8xK04fjYe4__6sRHyvOQ3E27Zym}v~?6_FiRI!=w86>H1$sM1rTqc}|~ZOn~n
z=WE#VDT<+qyB_~p+SuvGDdtel@@4e|n762&Cb-n0yiFxh{f4_R%D7tv)wC!O9G&w!
z-OKiv)r4Ul3Sk&=!9@geImi~A7lGVeBmhSXO-C4);DOixhUFZ@0LE*YXn#Q5Ij@(S
zU~6$dcdr_iS&>;lk2no^n2>-BxiVygcSa*}=3@)<xNL5d>w|R@ay~>67F2MoUi~lO
zO{g61Bs%>C8qhd&ggohwQbX^5aM=>#AZXxE&|gbx7fwBOCEchkgKd=|dLecoTn@!U
z&5t1Tm-8qAL(L+EAy>zU2bSgo-A}6^nHpQ3Wxof~9qcXnwT900c+ce&3C83%yMp;X
zx(+z*gh))-kYtbz<b&>n9eNr^x=aj#Cd!e(w%|Yi)nqc6n})QTti8Tv9zeveQ4D#j
z+t_8_0fQC^iSju*YKCWqB$=9MC_;XvF(Qei94n+?cdzEC*FL304VWi{Oz~*dzQ6o+
zZ@}2GpfO>bO^$u5*&K~mRZ##DAE3;*q}5v%ud4wu-1`C&BtLxz)BiVx0Gpp7W5xSG
zo&pXAypQ=9)j?Ih$Wo20G>DIpawGK!vcl?W6ep4!FfCwWdX9`b7(n~vdl0~uBq38X
zqoISiiqEpsGC*El#npxQ+YGR~+>S?egmk5ZVqCf^{KRpeu0)nX<Rt^)#B&BBqX^MV
z>V2GIhI_kth9GYl2#mJTS!Q@7$t<E%eGyH{JWDPFKu@Q(e43^QZiFg$KhCj;^i(HT
zIu*v7<NXyuzX{PJ9*yT${+f5kPugg4^JNrK%oGh=7ztLnhTBUbPd)JZ-o-cN8(wFU
zl7pd0(9l)8QIt~8iXCL}9m(Q1nZ@%X<X}ll-2t_OwmkR~)v8p1&PSqK9%bKr1NAdN
zpwdC3hHnSptF)wbi_(tqH@kyrhEaESp0*-BKQvDsnqU-XNNpXnFuRe|Eqog-Nla?F
z5~V}thv6es&aEUSJmgGj1Tnf|f>RsY7yvH~-{5SNSM)H+RpTizUDzy%tu7(bFkGuv
z-|Hjm^1Tgj6=CBmUSlVkPV9u&cx@->md_PhOP+*{wP;44{0k_<2rx-)Fkl_Vz_^RR
zVhTQSmN?TrjeUsUH&0O4#(?4%4Km4fY+xd0LJcEqFWzRb6^yb988>7o3EH99g1TNX
z2%o(t@RcTo4+D(MIku{kC&`$NjVrrgC~89jx{L2b&`lVIL4l8mLu58OzeLYP@YcGR
zWzE0mf0<D>G0i!S%W|kn^nZuT%<>xq`1+y#7AF5RGc^)}QB|Hv{^VXNb^P6TH)VVc
z8%Ub*)TZTmA($17-Y7}P`$!%p?(%=e<~3ieBb)rsXnmh&<IO`7YWM?IKSVXRg0!w3
z0z)o8Msa}}`F^k0yWLxJ@|j_W1dzDWuuM+1bxCeW1&3R#1aD|K&`CP{9-te#*JYj6
z$h$(mxik_KbGUm@%aTlhyd=<+Bi+>fgjjy;o=uO*!veJL__$|#<GUN(jeDO1`LZrm

literal 0
HcmV?d00001

diff --git a/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.py b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.py
new file mode 100644
index 0000000..9aa1030
--- /dev/null
+++ b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+## This is the library the provides a gui to Snorky!
+
+
+from PyQt4 import QtGui, QtCore, QtWebKit
+
+class SnorkyWebView(QtWebKit.QWebView):
+    def __init__(self, parent=None):
+        super(SnorkyWebView, self).__init__(parent)
+        
+    def reset(self):
+        self.setHtml("<html>\
+<head>\
+<title>Snorky 0.1</title>\
+<style>\
+body {\
+font-family: \"Trebuchet MS\", Lucida, Sans;\
+}\
+\
+h2 {\
+color: #4444ee;\
+font-size: 14px;\
+}\
+</style>\
+</head>\
+<body>\
+<h2>Come posso usare snorky 0.2?</h2>\
+Inserisci nome utente e password in alto e clicca su connetti, \
+cos&igrave; potrai vedere e/o modificare i file torrent in download su\
+ hugo.robol.it. \
+<h2>Come funziona tutto questo?</h2>\
+Usando il tuo nome utente e la tua password e con l'aiuto di paramiko\
+(e di qualche altra libreria per creare un piccolo server) viene inoltrata\
+la porta 8112 sul server sulla tua porta 8112 locale in modo che la \
+QWebView di qui sotto possa visualizzarla!\
+</body>\
+</html>")
+
+    def load_page(self):
+        self.load(QtCore.QUrl("http://localhost:9998/"))
+
+class SnorkyMainWin(QtGui.QWidget):
+    def __init__(self, parent=None):
+        # Init the parent
+        super(SnorkyMainWin, self).__init__(parent)
+        
+        # Default size
+        self.resize(800,600)
+
+        # Title
+        self.setWindowTitle("Snorky 0.2")
+
+        # Get buttons and similar
+        self.populate()
+
+        # Status
+ 
+    def populate(self):
+        # Out main VBox
+        main_vbox = QtGui.QVBoxLayout()
+        main_vbox.addStretch(1)
+
+        # HBox for user, passwd...
+        passwd_hbox = QtGui.QHBoxLayout()
+        
+        # Username field
+        qla_username = QtGui.QLabel("Username")
+        self.qle_username = QtGui.QLineEdit()
+        passwd_hbox.addWidget(qla_username)
+        passwd_hbox.addWidget(self.qle_username)
+
+        # Password field
+        qla_passwd = QtGui.QLabel("Password")
+        self.qle_passwd = QtGui.QLineEdit()
+        # Hide chars...
+        self.qle_passwd.setEchoMode(2)
+        passwd_hbox.addWidget(qla_passwd)
+        passwd_hbox.addWidget(self.qle_passwd)
+
+        # Host field
+        qla_host = QtGui.QLabel("Host")
+        self.qle_host = QtGui.QLineEdit("hugo.robol.it")
+        passwd_hbox.addWidget(qla_host)
+        passwd_hbox.addWidget(self.qle_host)
+
+        # Port field
+        qla_port = QtGui.QLabel("Port")
+        self.qle_port = QtGui.QLineEdit("8112")
+        passwd_hbox.addWidget(qla_port)
+        passwd_hbox.addWidget(self.qle_port)
+
+        # Connect button
+        self.btnConnect = QtGui.QPushButton("Connect")
+        passwd_hbox.addWidget(self.btnConnect)
+        
+        # Web interface
+        self.web = SnorkyWebView()
+
+        # Progress Bar
+        prgbar = QtGui.QProgressBar()
+        self.connect(self.web, QtCore.SIGNAL("loadProgress( int )") , prgbar.setValue)
+
+        # Put pieces in main_vbox
+        main_vbox.addLayout(passwd_hbox, 0.1)
+        main_vbox.addWidget(prgbar, 0.1)
+        main_vbox.addWidget(self.web, 100)
+        self.web.reset()
+        
+        # Show the boxes
+        self.setLayout(main_vbox)
diff --git a/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.pyc b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8e2edfa01a6cd0e20d34d6835d6654e37e8169cf
GIT binary patch
literal 3424
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

literal 0
HcmV?d00001

diff --git a/debian/snorky/usr/local/share/applications/snorky.desktop b/debian/snorky/usr/local/share/applications/snorky.desktop
new file mode 100644
index 0000000..41dc34c
--- /dev/null
+++ b/debian/snorky/usr/local/share/applications/snorky.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Snorky
+Comment=Show remote web services on exotix firewalled port
+Exec=snorky
+Terminal=false
+Type=Application
+StartupNotify=false
+Categories=GNOME;Network
+Icon=snorky
\ No newline at end of file
diff --git a/debian/snorky/usr/local/share/pixmaps/snorky.png b/debian/snorky/usr/local/share/pixmaps/snorky.png
new file mode 100644
index 0000000000000000000000000000000000000000..842ab444a0d6236665c42636907582cfde19f980
GIT binary patch
literal 9966
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

literal 0
HcmV?d00001

diff --git a/debian/snorky/usr/share/doc/snorky/README.Debian b/debian/snorky/usr/share/doc/snorky/README.Debian
new file mode 100644
index 0000000..f6c71a6
--- /dev/null
+++ b/debian/snorky/usr/share/doc/snorky/README.Debian
@@ -0,0 +1,6 @@
+snorky for Debian
+-----------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Leonardo Robol <leo@robol.it>  Fri, 25 Dec 2009 19:35:44 +0100
diff --git a/debian/snorky/usr/share/doc/snorky/changelog.Debian.gz b/debian/snorky/usr/share/doc/snorky/changelog.Debian.gz
new file mode 100644
index 0000000000000000000000000000000000000000..111b1f04ccd96e5b87496f7a36002f29ff63cc08
GIT binary patch
literal 171
zcmV;c095}UiwFP!000020~L(T3W7isM)y9&2W_-c#=nJT5)^^ZBBB=<?Pf#MT$phP
z-#$B=b5_S0w(l9CNb)$1;EkJPuW1KwM>4~_*Zd6vV2#eGNl6V$nxrFyN6n60jg?u5
zfaY%~hv`M={RrbfJz4M*Gkc5fer=ak9OFW4q<t`M+_Ofbi4XRliJDsAY}FQ7i4zUT
Zgs6~Kbzas*fsIIo2!7xoL!7h#000r?OH2R&

literal 0
HcmV?d00001

diff --git a/debian/snorky/usr/share/doc/snorky/copyright b/debian/snorky/usr/share/doc/snorky/copyright
new file mode 100644
index 0000000..a4c26e7
--- /dev/null
+++ b/debian/snorky/usr/share/doc/snorky/copyright
@@ -0,0 +1,44 @@
+This package was debianized by:
+
+    Leonardo Robol <leo@robol.it> on Fri, 25 Dec 2009 19:35:44 +0100
+
+It was downloaded from:
+
+    <url://example.com>
+
+Upstream Author(s):
+
+    <put author's name and email here>
+    <likewise for another author>
+
+Copyright:
+
+    <Copyright (C) YYYY Firstname Lastname>
+    <likewise for another author>
+
+License:
+
+    This program 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 3 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 3 can be found in `/usr/share/common-licenses/GPL-3'.
+
+The Debian packaging is:
+
+    Copyright (C) 2009 Leonardo Robol <leo@robol.it>
+
+and is licensed under the GPL version 3, see above.
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/watch.ex b/debian/watch.ex
new file mode 100644
index 0000000..d997568
--- /dev/null
+++ b/debian/watch.ex
@@ -0,0 +1,23 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php snorky-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/snorky-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/snorky-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for devscripts >= 2.9
+# http://sf.net/snorky/snorky-(.*)\.tar\.gz
+
+# Uncomment to find new files on GooglePages
+# http://example.googlepages.com/foo.html snorky-(.*)\.tar\.gz
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..4b56615
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,13 @@
+from distutils.core import setup
+
+setup (name='Snorky',
+       version='0.3',
+       author='Leonardo Robol',
+       author_email='leo@robol.it',
+       url='http://www.robol.it/~leonardo/',
+       license='GPL',
+       py_modules=['SnorkyCore', 'SnorkyGui'],
+       data_files=[('bin', ['snorky']),
+                   ('share/applications',['snorky.desktop']),
+                   ('share/pixmaps', ['snorky.png']) ],
+       )
diff --git a/snorky.desktop b/snorky.desktop
new file mode 100644
index 0000000..41dc34c
--- /dev/null
+++ b/snorky.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Snorky
+Comment=Show remote web services on exotix firewalled port
+Exec=snorky
+Terminal=false
+Type=Application
+StartupNotify=false
+Categories=GNOME;Network
+Icon=snorky
\ No newline at end of file
diff --git a/snorky.png b/snorky.png
new file mode 100644
index 0000000000000000000000000000000000000000..842ab444a0d6236665c42636907582cfde19f980
GIT binary patch
literal 9966
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

literal 0
HcmV?d00001

-- 
2.1.4

