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 0000000..bf0626a Binary files /dev/null and b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyCore.pyc differ 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ì 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 0000000..8e2edfa Binary files /dev/null and b/debian/snorky/usr/local/lib/python2.6/dist-packages/SnorkyGui.pyc differ 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 0000000..842ab44 Binary files /dev/null and b/debian/snorky/usr/local/share/pixmaps/snorky.png differ 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 0000000..111b1f0 Binary files /dev/null and b/debian/snorky/usr/share/doc/snorky/changelog.Debian.gz differ 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 0000000..842ab44 Binary files /dev/null and b/snorky.png differ