From 527c14194dc954788dcb48e0e2a31c1690dbc266 Mon Sep 17 00:00:00 2001 From: Tobias Mueller Date: Tue, 22 Dec 2009 19:19:05 +0100 Subject: [PATCH] initial checki --- Makefile | 7 + data/Callback.desktop | 10 ++ data/Callback.png | 33 +++++ data/callback.client | 11 ++ data/callback.service | 3 + debian/README.Debian | 6 + debian/changelog | 6 + debian/compat | 1 + debian/control | 26 ++++ debian/copyright | 19 +++ debian/cron.d.ex | 4 + debian/dirs | 2 + debian/emacsen-install.ex | 45 +++++++ debian/emacsen-remove.ex | 15 +++ debian/emacsen-startup.ex | 25 ++++ debian/init.d.ex | 81 ++++++++++++ debian/manpage.1.ex | 59 +++++++++ debian/manpage.sgml.ex | 156 ++++++++++++++++++++++ debian/manpage.xml.ex | 148 +++++++++++++++++++++ debian/menu.ex | 2 + debian/postinst.ex | 41 ++++++ debian/postrm.ex | 39 ++++++ debian/preinst.ex | 37 ++++++ debian/prerm.ex | 40 ++++++ debian/rules | 98 ++++++++++++++ debian/telepathy-callback-default.ex | 10 ++ debian/telepathy-callback.doc-base.EX | 22 ++++ debian/watch.ex | 22 ++++ setup.py | 10 ++ src/SMSListener.py | 229 +++++++++++++++++++++++++++++++++ 30 files changed, 1207 insertions(+) create mode 100644 Makefile create mode 100644 data/Callback.desktop create mode 100644 data/Callback.png create mode 100644 data/callback.client create mode 100644 data/callback.service 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/init.d.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/telepathy-callback-default.ex create mode 100644 debian/telepathy-callback.doc-base.EX create mode 100644 debian/watch.ex create mode 100644 setup.py create mode 100755 src/SMSListener.py diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..24dad88 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +all: + python2.5 setup.py build +clean: + python2.5 setup.py clean --all +install: + python2.5 setup.py install --root $(DESTDIR) + diff --git a/data/Callback.desktop b/data/Callback.desktop new file mode 100644 index 0000000..2206d2c --- /dev/null +++ b/data/Callback.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Categories=Network;InstantMessaging; +Name=Callback +GenericName=Callback +Comment=A Telepathy Callback Client +Version=0.1 +Exec=SMSListener.py +Icon=Callback +Terminal=false +Type=Application diff --git a/data/Callback.png b/data/Callback.png new file mode 100644 index 0000000..a8e2d31 --- /dev/null +++ b/data/Callback.png @@ -0,0 +1,33 @@ +iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgI +fAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3 +Lmlua3NjYXBlLm9yZ5vuPBoAAAUcSURBVFiFtZZdaBRXFMd/d/YziWY3JDG6 +xiomalxqTGsftKKVgoJNwSJIQEugD4VAoSBC2lIw9algH0TwoS9+YFvbWiut +KMZYWijS1tTvJNMkNaSNiY1JTHazm92dnY/bh521sUl2N1EPHGZn5uz5/+65 +9565QkpJrhYKBouBt4AgUGW7AdwG7gA3gW/8qqrlmlPkAhAKBvOAd1CUdz31 +9apryxYcFRU+UVQUQIhiGYkMWH194WRLi1M7ccKHYezzq+p3TwUgFAyuAL52 +bd3am3/w4BLh8VhAEii03QJCQBhwykhkYaypyas3N3cCdX5VDc0ZIBQMFgBn +5506FXHW1KwA7gFFWQY1iJQLkxcueGONjQPADr+qziiiZEn2kbehYdBZU+MD +jgOjQE8Wn0CIb921tRF3bW0l8GEmgRkrEAoGX1TKyxsLL11ajBANwGtAfhbg +tMWA76WmnYzU1lZY9+9v8qtq53SBzgxJqvL27jUQ4iugg1Tpl+UI8BfQLTye +L9w7d9YljhzZAswaYKlSWZkgtbUAfiM1Bb4s4mGg2/7d5QgGR4D1wKfTBWda +AwFl0SITGLTvDauteh9tGwtIVaQLuGt7F9BB28YCq616H6neANDrqKqaADbM +JJKpAjGcTh+pLZYyKZKSyGXuVGf4m5g80iHhducBeTNFZ6pAjxwe/gdY+ShY +Wi0Z4qeLWWV0dIwDt+YC0Ge0tnYBzz96Ynh+BEyB2Cyq74jHHLEZMO2YtNXo +Fy/q/LeOZgVwTzt2bBhYCswHYN21MJKrSCswJVpaASRXWXctbD8JIOUivbl5 +BXBlLgCdZm+vtHp7W4HXH+kIcRlFTAVQREAIObn82+OHDoVlIjHuV9XLswbw +q6oJ3IrU1d0n1YCqABTFarHkVABLigAKaaHVMh5XtKNHtwMHMgwyayvul9Fo +InnmzBXgZaCAP1ZfBWuajmjlp97hBtZHd+8uQcrrflW9PmcAv6oC3I3t3x+T +sdgtYDO7TpuKnNrVFEknu06bwEvJc+c0s6vrBeDjLAPMWgHsw8XY+LZt3YAO +VIJsnxop24ESGY0G4k1NrwCf+FU18sQANkRUjo46kufPq8BylAXq1KjCDmDN +RENDQGraTb+q/p5L7pwAbIvGGhudZk/PBGt+LAHKSHW4fGAxa39ZrJ08WWLc +uFEOnMg1aU5HsrS1HnHXey3fYfe88h/yyjdeKnhufQjDkBPdPy8w2m+8wb2h +TdFA5IO1ByKHnwnAr5+L7vKqPRXK0ANiPf0Jc3BEYdxAxC0UqbtjMkHsVdmz +4U25Mnu2lGX6GE2lhQE9ObakuGrMW1AZzbeMMFZMxxoF8yHE+kgIQf9scs5m +DWCZRA1tXIICwoUQTqQO5iiYYTAiCGkRfWYAwoHb4XJJxVGEEHkgJYoHlPkg +AKUPyPDpfWIAoNThKfNKK4G0okislLALhA+UtbiA4mcGIE3eH+g8LfSJDqQV +ASxMDYyHYI1BfABhmbz31AFEypytqrczoYn4g/6HREbH0DUDywv6UhhfDhNB +R/yna3QLITxCCKcQQmTNnWkbCiEUwEFqtzgBx9u7CmtWLXdeWLYwkVfi0wTA +SNgj/x70xtr/NHYcPzt+m9SZ0LSvBmDIGYSyAaSFJ7urtLS0rLSsdI/b7aqX +IPWE9tnQ0MiXIyMjw7agPlkc0KWU5lwAxP/EHZOuCo9PoWV7euSmDaID5kw6 +OXVCeyrTgpPF0wDSFpe2sAlYM5V9sv0L+K5J22uYpJcAAAAASUVORK5CYII= + diff --git a/data/callback.client b/data/callback.client new file mode 100644 index 0000000..6f787da --- /dev/null +++ b/data/callback.client @@ -0,0 +1,11 @@ +[org.freedesktop.Telepathy.Client] +Interfaces=org.freedesktop.Telepathy.Client.Observer + +[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 0] +org.freedesktop.Telepathy.Channel.Type s=org.freedesktop.Telepathy.Channel.Type.Text +org.freedesktop.Telepathy.Channel.TargetHandleType u=1 + +[org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter 0] +org.freedesktop.Telepathy.Channel.Type s=org.freedesktop.Telepathy.Channel.Type.Text +org.freedesktop.Telepathy.Channel.TargetHandleType u=2 + diff --git a/data/callback.service b/data/callback.service new file mode 100644 index 0000000..3697a7a --- /dev/null +++ b/data/callback.service @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.Telepathy.Client.Callback +Exec=/usr/bin/SMSListener.py diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..5f20dce --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,6 @@ +telepathy-callback for Debian +----------------------------- + + + + -- unknown Sat, 5 Dec 2009 18:57:45 +0530 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..1ca4d6c --- /dev/null +++ b/debian/changelog @@ -0,0 +1,6 @@ +telepathy-callback (0.0.1-1) unstable; urgency=low + + * Initial release (Closes: #nnnn) + + -- unknown Sat, 5 Dec 2009 18:57:45 +0530 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..44ebd0f --- /dev/null +++ b/debian/control @@ -0,0 +1,26 @@ +Source: telepathy-callback +Section: unknown +Priority: extra +Maintainer: Tobias Mueller +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 + +Package: telepathy-callback +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, telepathy +Description: A simple telepathy client that listens + on incoming test messages (SMS) to receive a Target + number. The sender and the target number will be + called and those two calls finally merged. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABmJLR0QA/wD/AP+g + vaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1gURDQoYya0JlwAAAU9J + REFUSMftlL1KA0EUhb/NZl/ggnHQxsJUxt5CUucVJCCkDfgyKdIGG5/A0s5HEBtJ + EdDAQGBgmw0YJmMzgXXYza5CtNkDW9zZw5z7c+ZCgwb/Ai3i9sVl/Bq8RIs4LRK1 + gJDsKvJyNXmJMuYTsMoY1zpgozaABdYArQNPZQ1kfyGU7SpqVwxzAMwABWhgpIwp + 4vWBB+AUWAI3ypjnfEXtPU4bLKx9vErTeCeiRSYF+fTn1j5dp2myE9EiU+DSi3wX + ymeqRQAmZ3EcA5E/fgO6BULT8zhOcrwXoJdrXRa2Lgps2y2odAUcBUIXQdz78YyC + SldAp8b7+bXrIv91qjZBietqCc2DjbAt4b2WxJkyZljVujlwp0U0cPxuLcAIuC+4 + dKxFlsDJarvdAGP/b6hFnDImYs+uG3hbO2AB3Jbsur63tQM+fFx3bzZocEB8AdV2 + gJBZgKTwAAAAAElFTkSuQmCC + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..792b13d --- /dev/null +++ b/debian/copyright @@ -0,0 +1,19 @@ +This package was debianized by Tobias Mueller on +Sat, 5 Dec 2009 18:57:45 +0530. + +Upstream Author: Tobias Mueller + +Copyright: 2009 Tobias Mueller + +License: + +GPL + + +The Debian packaging is (C) 2009, Tobias Mueller and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. + + +# 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..9f3ecc7 --- /dev/null +++ b/debian/cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the telepathy-callback package +# +0 4 * * * root telepathy-callback_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..67a064f --- /dev/null +++ b/debian/emacsen-install.ex @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/telepathy-callback + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=telepathy-callback + +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/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..4f158f8 --- /dev/null +++ b/debian/emacsen-remove.ex @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/telepathy-callback + +FLAVOR=$1 +PACKAGE=telepathy-callback + +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/info/telepathy-callback.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..a1b99a5 --- /dev/null +++ b/debian/emacsen-startup.ex @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50telepathy-callback.el +;; for the Debian telepathy-callback package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The telepathy-callback 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/telepathy-callback"))) +;; If package-dir does not exist, the telepathy-callback 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 'telepathy-callback-mode "telepathy-callback-mode" + "Major mode for editing telepathy-callback files." t) + (add-to-list 'auto-mode-alist '("\\.telepathy-callback$" . telepathy-callback-mode)))) + diff --git a/debian/init.d.ex b/debian/init.d.ex new file mode 100644 index 0000000..b266cc4 --- /dev/null +++ b/debian/init.d.ex @@ -0,0 +1,81 @@ +#! /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 . +# Modified for Debian +# by Ian Murdock . +# +# 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/telepathy-callback +NAME=telepathy-callback +DESC=telepathy-callback + +test -x $DAEMON || exit 0 + +# Include telepathy-callback defaults if available +if [ -f /etc/default/telepathy-callback ] ; then + . /etc/default/telepathy-callback +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + echo "$NAME." + ;; + #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 + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex new file mode 100644 index 0000000..7bf850d --- /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 TELEPATHY-CALLBACK SECTION "December 5, 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 insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +telepathy-callback \- program to do something +.SH SYNOPSIS +.B telepathy-callback +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B telepathy-callback +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBtelepathy-callback\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 +telepathy-callback was written by . +.PP +This manual page was written by unknown , +for the Debian project (but may be used by others). diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex new file mode 100644 index 0000000..913454d --- /dev/null +++ b/debian/manpage.sgml.ex @@ -0,0 +1,156 @@ + 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. + + --> + + + FIRSTNAME"> + SURNAME"> + + December 5, 2009"> + + SECTION"> + muelli@cryptobitch.de"> + + TELEPATHY-CALLBACK"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + 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; + Info format; see below. + + &dhpackage; is a program that... + + + + 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. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but 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. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + + + diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex new file mode 100644 index 0000000..e196473 --- /dev/null +++ b/debian/manpage.xml.ex @@ -0,0 +1,148 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| 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 + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. 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. + +--> + + + FIRSTNAME"> + SURNAME"> + + December 5, 2009"> + + SECTION"> + muelli@cryptobitch.de"> + + TELEPATHY-CALLBACK"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + 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; + Info format; see below. + + &dhpackage; is a program that... + + + + 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. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but 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. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ diff --git a/debian/menu.ex b/debian/menu.ex new file mode 100644 index 0000000..795eb2a --- /dev/null +++ b/debian/menu.ex @@ -0,0 +1,2 @@ +?package(telepathy-callback):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\ + title="telepathy-callback" command="/usr/bin/telepathy-callback" diff --git a/debian/postinst.ex b/debian/postinst.ex new file mode 100644 index 0000000..ef5a1a2 --- /dev/null +++ b/debian/postinst.ex @@ -0,0 +1,41 @@ +#!/bin/sh +# postinst script for telepathy-callback +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# 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..d076e8f --- /dev/null +++ b/debian/postrm.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postrm script for telepathy-callback +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# 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..213144b --- /dev/null +++ b/debian/preinst.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for telepathy-callback +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# 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..4da9699 --- /dev/null +++ b/debian/prerm.ex @@ -0,0 +1,40 @@ +#!/bin/sh +# prerm script for telepathy-callback +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# 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..fefb107 --- /dev/null +++ b/debian/rules @@ -0,0 +1,98 @@ +#!/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 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +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) + #docbook-to-man debian/telepathy-callback.sgml > telepathy-callback.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 + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/telepathy-callback. + $(MAKE) DESTDIR=$(CURDIR)/debian/telepathy-callback install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build 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_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/debian/telepathy-callback-default.ex b/debian/telepathy-callback-default.ex new file mode 100644 index 0000000..dd8a34b --- /dev/null +++ b/debian/telepathy-callback-default.ex @@ -0,0 +1,10 @@ +# Defaults for telepathy-callback initscript +# sourced by /etc/init.d/telepathy-callback +# installed at /etc/default/telepathy-callback by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff --git a/debian/telepathy-callback.doc-base.EX b/debian/telepathy-callback.doc-base.EX new file mode 100644 index 0000000..213becd --- /dev/null +++ b/debian/telepathy-callback.doc-base.EX @@ -0,0 +1,22 @@ +Document: telepathy-callback +Title: Debian telepathy-callback Manual +Author: +Abstract: This manual describes what telepathy-callback is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/telepathy-callback/telepathy-callback.sgml.gz + +Format: postscript +Files: /usr/share/doc/telepathy-callback/telepathy-callback.ps.gz + +Format: text +Files: /usr/share/doc/telepathy-callback/telepathy-callback.text.gz + +Format: HTML +Index: /usr/share/doc/telepathy-callback/html/index.html +Files: /usr/share/doc/telepathy-callback/html/*.html + + diff --git a/debian/watch.ex b/debian/watch.ex new file mode 100644 index 0000000..6e50914 --- /dev/null +++ b/debian/watch.ex @@ -0,0 +1,22 @@ +# 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 +# +#http://www.example.com/downloads.php telepathy-callback-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/telepathy-callback-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/telepathy-callback-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for debscripts >= 2.9 +# http://sf.net/telepathy-callback/telepathy-callback-(.*)\.tar\.gz + + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..20115c4 --- /dev/null +++ b/setup.py @@ -0,0 +1,10 @@ +from distutils.core import setup + +setup(name='Callback', + version='0.0.1', + scripts=['src/SMSListener.py'], + data_files = [ + ('share/pixmaps', ['data/Callback.png']), + ('share/applications/hildon', ['data/Callback.desktop']), + ] + ) diff --git a/src/SMSListener.py b/src/SMSListener.py new file mode 100755 index 0000000..689e486 --- /dev/null +++ b/src/SMSListener.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python +''' +Created on 03.12.2009 + +@author: muelli +''' + +import dbus.glib +import gobject +import logging; logging.basicConfig(level=logging.DEBUG) + +import telepathy +from telepathy.interfaces import CLIENT, \ + CLIENT_OBSERVER, \ + CHANNEL + + +log = logging.getLogger("telepathy-callback") + +sender = None +receiver = None +gsm_connection = None +gsm_account = None + +def is_number(nr): + """Checks whether a given string looks like an international phone + number""" + return True + +def handle_msg(msg, magic="call: ", filter=is_number): + """Handles a message, i.e. check for it containing the message containing + the magic keyword. + Returns the valid number or None + """ + number_candidate = None + if msg.startswith(magic): + number_candidate = msg[len(magic):] + + retval = None + log.debug("Number candidate: %s" % number_candidate) + if number_candidate: + valid_number = filter(msg) + if valid_number: + retval = number_candidate + + return retval + + +def request_call(bus, number): + channel_dispatcher = bus.get_object('org.freedesktop.Telepathy.ChannelDispatcher', + '/org/freedesktop/Telepathy/ChannelDispatcher') + request_args = {'org.freedesktop.Telepathy.Channel.ChannelType:': + dbus.String('org.freedesktop.Telepathy.Channel.Type.StreamedMedia', variant_level=1), + 'org.freedesktop.Telepathy.Channel.TargetHandleType': + dbus.String('Contact', variant_level=1), + 'org.freedesktop.Telepathy.Channel.TargetID': + dbus.String(sender, variant_level=1), + } + # Hopefully, the name of the Handler is correct + channel_request_object_name = channel_dispatcher.CreateChannel(gsm_account, request_args, + dbus.Int64(0), + "org.freedesktop.Telepathy.Client.Callback") + # Stupid DBus Binding don't return an object itself + # FIXME: Check whether the bus_name is correct + channel_request = bus.get_object('org.freedesktop.Telepathy.ChannelRequest', + channel_request_object_name) + log.debug("Returning Channel Request: %s", channel_request) + return channel_request + +def received_message_handler(sender=None, *args, **kwargs): + """Listens on the MessageReceived signal by Telepathy. + Turns out, that most of the application logic landed here instead + of the class created below + """ + print "received_message_handler: %s" % locals() + global receiver + + bus = dbus.SessionBus() + + if isinstance(sender, dbus.Array): + for elem in sender: + if isinstance(elem, dbus.Dictionary): + msg = elem.get(u'content', None) + if msg: + print "Message: %s" % msg + # TODO: Check for Prefix + number = handle_msg(msg) + + if not number == None: + receiver = number + assert sender != None, "Somehow Sender is None, although it should have been set earlier" + + # FIXME: Get connection object + + + # TODO: Get GSM Account +# account_manager = bus.get_object('org.freedesktop.Telepathy.AccountManager', +# '/org/freedesktop/Telepathy/AccountManager') +# accounts = account_manager.ValidAccounts() +# log.debug('Accounts: %s', accounts) + + # TODO: Call Sender + channel_request = request_call(bus, sender) + # TODO: Listen on channel_request signal: Succeeded + def opened_channel(*args, **kwargs): + log.debug("Opened channel. %s", locals()) + + + bus.add_signal_receiver(opened_channel, + "Succeeded" ) + log.debug("msg: %s, %s", channel_request, dir(channel_request)) + channel_request.Proceed() + + # TODO: Call Receiver + channel_request = request_call(bus, receiver) + bus.add_signal_receiver(opened_channel, + "Succeeded" ) + channel_request.Proceed() + + + + + +class Callback(dbus.service.Object, telepathy.server.DBusProperties): + name = 'org.freedesktop.Telepathy.Client.Callback' + def __init__(self, *args): + self.bus = dbus.SessionBus() + bus_name = dbus.service.BusName(Callback.name, bus = self.bus) + dbus.service.Object.__init__(self, bus_name, '/%s' % Callback.name.replace('.', '/')) + + self.log = logging.getLogger("Callback") + + self._interfaces = set() + + telepathy.server.DBusProperties.__init__(self) + + self._implement_property_get(CLIENT, { + 'Interfaces': lambda: [ CLIENT_OBSERVER ], + }) + self._implement_property_get(CLIENT_OBSERVER, { + 'ObserverChannelFilter': lambda: dbus.Array([ + dbus.Dictionary({ + 'org.freedesktop.Telepathy.Channel.ChannelType': dbus.String('org.freedesktop.Telepathy.Channel.Type.Text'), + 'org.freedesktop.Telepathy.Channel.TargetHandleType': dbus.UInt32(1), + }, signature='sv'), + dbus.Dictionary({ + 'org.freedesktop.Telepathy.Channel.ChannelType': dbus.String('org.freedesktop.Telepathy.Channel.Type.Text'), + 'org.freedesktop.Telepathy.Channel.TargetHandleType': dbus.UInt32(2), + }, signature='sv') + + ], signature='a{sv}') + }) + + self.first_call = None + self.second_call = None + + + + def listen(self): + loop = gobject.MainLoop() + loop.run() + + + + @dbus.service.method('org.freedesktop.Telepathy.Client.Observer', + in_signature='ooa(oa{sv})oaoa{sv}', out_signature='') + def ObserveChannels(self, account, connection, channels, dispatch_operation, + requests_satisfied, observer_info): + global sender + global gsm_connection + global gsm_account + + print "Incoming" + print "account %s" % account + print "connection %s" % connection + print "\n\n" + log = file('/tmp/incoming','wa') + log.write( "Incoming channels on %s:" % (connection)) + log.write("Locals: %s" % locals()) + + sender = None + for channel_object, props in channels: + print "Channel: %s" % channel_object + for k, v in props.iteritems(): + print "k: %s :: %s " % (k, v) + print "" + + sender = props['org.freedesktop.Telepathy.Channel.InitiatorID'] + # TODO: Check for SMS + gsm_connection = connection + gsm_account = account + self.bus.add_signal_receiver(received_message_handler, + "MessageReceived" ) + print "\n\n" + log.write( " - %s :: %s" % (props[CHANNEL + '.ChannelType'], + props[CHANNEL + '.TargetID']) + ) + + + print "Sender: %s" % sender + + + @dbus.service.method('org.freedesktop.Telepathy.Client.Handler', + in_signature='ooa(oa{sv})aota{sv}', out_signature='') + def HandleChannels(self, account, connection, channels, + requests_satisfied, user_action_time, handler_info): + self.log.debug("Hndling channels: %s", locals()) + if self.first_call == None: + self.log.debug('first call set') + self.first_call = connection + elif self.second_call == None: + self.second_call = connection + self.log.debug('second call set') + + # TODO: Merge Calls + request_conference = "com.nokia.Telepathy.Channel.Interface.Conference" + conference_service = self.bus.get_object(request_conference) + request_args = [self.first_call, self.second_call] + handles = conference_service.get_dbus_method("AddMemberChannels", request_args) + + + else: + self.log.critical("Handler got called but two calls apparently "\ + "have been initiated: %s %s", + self.first_call, self.second_call) + +if __name__ == '__main__': + myservice = Callback() + myservice.listen() -- 1.7.9.5