debian/0000755000000000000000000000000012244733111007164 5ustar debian/libtango-tools.install0000644000000000000000000000004212167063434013515 0ustar usr/bin/tango_admin usr/lib/tango debian/liblog4tango5-dev.install0000644000000000000000000000013012241203261013767 0ustar usr/include/tango/log4tango usr/lib/*/liblog4tango*.so usr/lib/*/pkgconfig/log4tango.pc debian/tango-accesscontrol.install0000644000000000000000000000005112167063434014530 0ustar usr/bin/TangoAccessControl usr/lib/tango debian/tango-common.config0000644000000000000000000000102112167063434012753 0ustar #!/bin/sh CONFIGFILE=/etc/tangorc set -e . /usr/share/debconf/confmodule # Load config file, if it exists. if [ -e $CONFIGFILE ]; then . $CONFIGFILE || true # Store values from config file into # debconf db. db_set tango-common/tango-host "$TANGO_HOST" else if db_fget tango-common/tango-host seen; then if [ "$RET" = "false" ]; then db_set tango-common/tango-host $(hostname -f)":10000" fi fi fi # what is the name of the tango host db_input high tango-common/tango-host || true db_go || true debian/tango-db.prerm0000644000000000000000000000021212167063434011731 0ustar #!/bin/sh set -e #set -x . /usr/share/debconf/confmodule . /usr/share/dbconfig-common/dpkg/prerm.mysql dbc_go tango-db $@ #DEBHELPER# debian/changelog0000644000000000000000000001730512244724217011053 0ustar tango (8.1.2c+dfsg-3) unstable; urgency=low * debian/patches + 0006-fix-upstream-p812_2.patch -- Picca Frédéric-Emmanuel Mon, 25 Nov 2013 20:42:41 +0100 tango (8.1.2c+dfsg-2) unstable; urgency=low * debian/rules - fix for real the build on ubuntu (mismatch between shell and makefile syntax) (LP: #1250534). The -Wl,symbolic-functions LDFLAGS is now stripped for real * debian/patches + 0005-forwarded-upstrean-fix-FTBFS-on-sparc64.patch (Closes: #729163) thanks Aurelien Jarno for the patch -- Picca Frédéric-Emmanuel Wed, 13 Nov 2013 10:22:20 +0100 tango (8.1.2c+dfsg-1) unstable; urgency=low * Imported Upstream version 8.1.2c+dfsg * debian/patch + 0004-fix-upstream-p812_1.diff.patch * Add debconf translation: - Brazilian Portuguese, from Adriano Rafael Gomes (Closes: #721628) -- Picca Frédéric-Emmanuel Mon, 02 Sep 2013 17:53:39 +0200 tango (8.1.2b+dfsg-1) unstable; urgency=low * Imported Upstream version 8.1.2b+dfsg * update repack.local to remove the jzmq part * debian/control - add new binary packages: + liblog4tango5, liblog4tango5-dev, liblog4tango5-dbg - remove binary packages: + liblog4tango4, liblog4tango4-dev, liblog4tango4-dbg * debian/patches - deleted * 0004-upstream-fix-p805_1.patch * 0005-fix-forwaded-upstream-add-LIBZMQ_LIBS-to-libtango.patch * 0006-upstream-fix-p805_2.patch * 0007-upstream-attempt-to-fix-the-powerpc-FTBFS.patch -- Picca Frédéric-Emmanuel Tue, 11 Jun 2013 14:18:05 +0200 tango (8.0.5+dfsg-3) unstable; urgency=low * debian/patches - 0007-upstream-attempt-to-fix-the-powerpc-FTBFS.patch (Added) -- Picca Frédéric-Emmanuel Tue, 28 May 2013 20:16:52 +0200 tango (8.0.5+dfsg-2) unstable; urgency=low * uploaded into unstable -- Picca Frédéric-Emmanuel Tue, 07 May 2013 08:22:11 +0200 tango (8.0.5+dfsg-1) experimental; urgency=low * Imported Upstream version 8.0.5+dfsg * Bump Standards-Version to 3.9.4 (nothing to do) * switch to compat level 9 * debian/control - Add new binary packages libtango8, libtango8-dev, libtango8-dbg - Remove binary packages libtango7, libtango7-dev, libtango7-dbg - Multiarchify: * liblog4tango4, liblog4tango4-dev, liblog4tango4-dbg * libtango8, libtango8-dev, libtango8-dbg * tango-common * debian/patches - refreshed * 0001-debian-fix_database_scripts.patch * 0002-debian-my.cnf.in.patch * 0003-debian-notify_daemon.patch - deleted * 0004-upstream-fix-bug3285674.patch * 0005-upstream-fix-bug3213730.patch * 0006-feature-forwarded-upstream-pkg-config-small-fixes.patch * 0007-upstream-fix-tango-db-start-during-init.patch * 0008-feature-add-jpegmmx-option-to-configure-script.patch * 0009-upstream-fix-bug3339975.patch - new * 0004-upstream-fix-p805_1.patch * 0005-fix-forwaded-upstream-add-LIBZMQ_LIBS-to-libtango.patch * 0006-upstream-fix-p805_2.patch -- Picca Frédéric-Emmanuel Sat, 19 Jan 2013 09:38:26 +0200 tango (7.2.6+dfsg-14) unstable; urgency=low * debian/patch - 0002-debian-my.cnf.in.patch (updated) (Closes: #684332) put the right user in my.cnf using dbconfig-common template engine -- Picca Frédéric-Emmanuel Sat, 15 Sep 2012 08:31:51 +0200 tango (7.2.6+dfsg-13) unstable; urgency=low * Bump Standards-Version to 3.9.3 - use cme (config-edit) to fix the copyright URL * Add debconf translation: - Portuguese, from Pedro Ribeiro, (Closes: #651431) - Polish, from Michał Kułach (Closes: #660097) - Dutch, from Jeroen Schot, (Closes: #660204) - Indone, from Izharul Haq, (Closes: #660100) - Italian, from Beatrice Torracca (Closes: #660761) - Slovak, from Ivan Masár (Closes: #661132) * Build out of the box on squeeze - update Build-Deps - use dpkg-buildflags --export=make instead of configure -- Picca Frédéric-Emmanuel Sun, 11 Dec 2011 15:30:40 +0100 tango (7.2.6+dfsg-12) unstable; urgency=low * remove symbols files (Closes: #635867) * debian/rules - hardening flags activated as we are providing daemons. * debian/patches - 0009-upstream-fix-bug3339975.patch -- Picca Frédéric-Emmanuel Fri, 21 Oct 2011 20:44:03 +0200 tango (7.2.6+dfsg-11) unstable; urgency=low * debian/*.symbols - libtango7 update all arch symbols -- Picca Frédéric-Emmanuel Sat, 17 Sep 2011 09:55:08 +0200 tango (7.2.6+dfsg-10) unstable; urgency=low * debian/*.symbols - log4tango4 updated for all arch - libtango7 add all arch symbols -- Picca Frédéric-Emmanuel Sun, 07 Aug 2011 11:04:08 +0200 tango (7.2.6+dfsg-9) unstable; urgency=low * debian/rules - add DPKG_GENSYMBOLS_CHECK_LEVEL=0 until I completed the symbols files for all arch. * debian/patches - 0008-feature-add-jpegmmx-option-to-configure-script.patch (updated) remove the mmx optimisation for all arch as it FTBFS on amd64. -- Picca Frédéric-Emmanuel Sun, 31 Jul 2011 19:06:33 +0200 tango (7.2.6+dfsg-8) unstable; urgency=low * do not build with mmx optimisation for the i386 arch * debian/patches - 0008-feature-add-jpegmmx-option-to-configure-script.patch (new) * debian/libtango7.symbols - remove all mmx related symbols from the i386 arch -- Picca Frédéric-Emmanuel Sun, 31 Jul 2011 00:07:30 +0200 tango (7.2.6+dfsg-7) unstable; urgency=low * debian/*.symbols - switch to (c++) tag - remove all duplicated lignes with the "uniq" command -- Picca Frédéric-Emmanuel Sat, 30 Jul 2011 21:02:47 +0200 tango (7.2.6+dfsg-6) unstable; urgency=low * debian/liblog4tango4.symbols - try to fix for all arch -- Picca Frédéric-Emmanuel Thu, 28 Jul 2011 22:57:32 +0200 tango (7.2.6+dfsg-5) unstable; urgency=low * switch to compat level 8 * add the symbols files * Add debconf translation: - Spanish, from Camaleón, (Closes: #632950) * debian/copyright fixed using config-edit -- Picca Frédéric-Emmanuel Tue, 19 Jul 2011 16:55:06 +0200 tango (7.2.6+dfsg-4) unstable; urgency=low * debian/patches - 0007-upstream-fix-tango-db-start-during-init.patch (new) -- Picca Frédéric-Emmanuel Mon, 23 May 2011 15:13:04 +0200 tango (7.2.6+dfsg-3) unstable; urgency=low * Bump Standards-Version to 3.9.2 * Add libjs-jquery dependency to avoid embedding jquery.js * Add debconf translations: - Swedish, from Martin Bagge, (closes: #623527) - Russian, from Yuri Kozlov (closes: #623793) - German, from Chris Leick (closes: #623889) - Czech, from Michal Simunek (closes: #624224) - Danish, from Joe Dalton (closes: #624643) - Japanese, from Hideki Yamane (closes: #626378) * Update debconf translation: - French, from Christian Perrier, (closes: #623887) * debian/patches - 0004-upstream-fix-bug3285674.patch (new) - 0005-upstream-fix-bug3213730.patch (new) - 0006-feature-forwarded-upstream-pkg-config-small-fixes.patch (new) -- Picca Frédéric-Emmanuel Sun, 24 Apr 2011 09:57:31 +0200 tango (7.2.6+dfsg-2) unstable; urgency=low * Split tango-common into tango-common and libtango-tools to solve the circular dependency (Closes: #623249) -- Picca Frédéric-Emmanuel Tue, 19 Apr 2011 00:08:55 +0200 tango (7.2.6+dfsg-1) unstable; urgency=low * Initial release (Closes: #400201) -- Picca Frédéric-Emmanuel Tue, 22 Mar 2011 09:24:31 +0100 debian/tango-db.config0000644000000000000000000000055012167063434012056 0ustar #!/bin/sh # config maintainer script for foo-mysql set -e # source debconf stuff . /usr/share/debconf/confmodule # source dbconfig-common shell library, and call the hook function if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then dbc_dbname="tango" dbc_dbuser="tango" . /usr/share/dbconfig-common/dpkg/config.mysql dbc_go tango-db $@ fi debian/copyright0000644000000000000000000000724012167063434011132 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: The Tango team Upstream-Contact: tango@esrf.fr Source: http://ftp.esrf.fr/pub/cs/tango/ Disclaimer: All precompiled java class were removed and the doc/src/layouts directory Files: debian/* Copyright: © 2006-2013, Picca Frédéric-Emmanuel License: LGPL-3+ The Debian packaging information is under the GPL, version 3 or later On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-3'. Files: config/ltmain.sh cpp/log4tango/config/ltmain.sh Copyright: © 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. License: GPL-2+ Files: lib/cpp/client/zmq.hpp Copyright: Copyright (c) 2007-2011 iMatix Corporation License: LGPL-3+ Files: lib/cpp/server/readers_writers_lock.h Copyright: © 1997-1999 AT&T Laboratories Cambridge © 2010, 2011, The Tango team License: LGPL-3+ Files: * Copyright: © 2004-2012, The Tango team License: LGPL-3+ Files: cppserver/* utils/* Copyright: © 2010, 2011, The Tango team License: GPL-3+ License: GPL-2+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. License: GPL-3+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-3'. License: LGPL-3+ Tango is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. . Tango 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 Lesser General Public License for more details. . You should have received a copy of the GNU Lesser General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . On Debian systems, the complete text of the GNU Lesser General Public License can be found in `/usr/share/common-licenses/LGPL-3'. debian/README.Debian0000644000000000000000000000033712167063434011240 0ustar tango for Debian ---------------- To use the Tango system install tango-db and tango-starter. then you can play with the TangoTest device. -- picca frederic Sat, 18 Nov 2006 18:52:07 +0100 debian/tango-db.init.d0000644000000000000000000001151012167063434011774 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: tango-db # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Should-Start: mysql # Should-Stop: mysql # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the tango control system database daemon # Description: Provide the database connection for programmes based on # the tango control system. # X-Start-Before: tango-accesscontrol # X-Stop-After: tango-accesscontrol ### END INIT INFO # Author: Picca Frédéric-Emmanuel PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/tango DESC="Tango Control System - database" NAME=tango-db NAME_REAL=DataBaseds CONFFILE=/etc/tangorc PORT=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $2}'` HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" '{print $2}'` CANON_HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" '{print $2}' | awk -F "." '{print $1}'` DAEMON=/usr/lib/tango/$NAME_REAL PIDFILE=/var/run/$NAME.pid # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started # to start this daemon need a working network if [ $CANON_HOST = "localhost" ] then DAEMON_ARGS="2 -ORBendPoint giop:tcp:$HOST:$PORT" else DAEMON_ARGS="2 -ORBendPoint giop:tcp::$PORT" tango_admin --ping-network 40 || return 2 fi start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. tango_admin --ping-database 6 || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME_REAL RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. sleep 3 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : debian/repack.stub0000755000000000000000000000325112167063434011344 0ustar #!/bin/sh : <<=cut =pod =head1 NAME repack.stub - script to repack upstream tarballs from uscan =head1 INSTRUCTIONS put this in debian/repack.stub and add "debian sh debian/repack.stub" to the end of the line in debian/watch. you will also need to add a version mangle to debian/watch. then create a debian/repack.local. this is a shell script that is sources under "set -e", so be careful to check returns codes. =head1 FUNCTIONS =over 4 =item rm rm is replaced by a function that does some magic ("rm -rv" by default), but also changes MANIFEST if $MANIFEST is 1 =item mv mv is replaced by a function that just does mv (by default), but also changes MANIFEST if $MANIFEST is 1 =item requires_version requires_version is there for future usage for requiring certain versions of the script =back =head1 VARIABLES =over 4 =item SUFFIX defaults to +dfsg what to append to the upstream version =item RM_OPTS defaults to -vrf options to pass to rm =item MANIFEST defaults to 0, set to 1 to turn on. this will manipulate MANIFEST files in CPAN tarballs. =item UP_BASE this is the directory where the upstream source is. =back =cut if [ -z "$REPACK_SH" ]; then if [ -f ../../scripts/repack.sh ]; then REPACK_SH=../../scripts/repack.sh fi if [ -z "$REPACK_SH" ] && which repack.sh > /dev/null; then REPACK_SH=$(which repack.sh) fi fi if [ ! -f "$REPACK_SH" ]; then echo "Couldn't find a repack.sh. please put it in your PATH, put it at ../../scripts/repack.sh, or put it somewhere else and set the REPACK_SH variable" echo "You can get it from http://svn.debian.org/viewsvn/pkg-perl/scripts/repack.sh" exit 1 fi exec "$REPACK_SH" "$@" debian/compat0000644000000000000000000000000212167063434010372 0ustar 9 debian/docs0000644000000000000000000000001412167063434010042 0ustar NEWS README debian/libtango8-doc.install0000644000000000000000000000007212167063434013215 0ustar usr/share/doc/tango/tango.pdf usr/share/doc/libtango8-doc debian/tango-db.postrm0000644000000000000000000000061112167063434012133 0ustar #!/bin/sh set -e if [ -f /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule fi if [ -f /usr/share/dbconfig-common/dpkg/postrm.mysql ]; then . /usr/share/dbconfig-common/dpkg/postrm.mysql dbc_go tango-db $@ fi if [ "$1" = "purge" ]; then rm -f /var/lib/tango/.my.cnf if which ucf >/dev/null 2>&1; then ucf --purge /var/lib/tango/.my.cnf fi fi #DEBHELPER# debian/README.source0000644000000000000000000000042312167063434011352 0ustar The dfsg clean version of this package was produce by removing all the .jar files included in the original upstream source. This package uses quilt to manage all modifications to the upstream source. Please read this file /usr/share/doc/quilt/README.source for instructions debian/patches/0000755000000000000000000000000012244723772010627 5ustar debian/patches/series0000644000000000000000000000033112244723772012041 0ustar 0001-debian-fix_database_scripts.patch 0002-debian-my.cnf.in.patch 0003-debian-notify_daemon.patch 0004-fix-upstream-p812_1.diff.patch 0005-forwarded-upstrean-fix-FTBFS-on-sparc64.patch 0006-fix-upstream-p812_2.patch debian/patches/0002-debian-my.cnf.in.patch0000644000000000000000000000235312244723771015250 0ustar From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Sat, 15 Sep 2012 08:25:42 +0200 Subject: debian/my.cnf.in MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit set the right parameters for the mysql configuration file Signed-off-by: Picca Frédéric-Emmanuel --- cppserver/database/my.cnf.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cppserver/database/my.cnf.in b/cppserver/database/my.cnf.in index 69f574c..a43ae74 100644 --- a/cppserver/database/my.cnf.in +++ b/cppserver/database/my.cnf.in @@ -29,11 +29,11 @@ # MySQL client library initialization. # [client] -#password = [your_password] -#user = [your_user] +user = _DBC_DBUSER_ +password = _DBC_DBPASS_ -port = 3306 -socket = /tmp/mysql.sock +port = 3306 +socket = /var/run/mysqld/mysqld.sock # *** Application-specific options follow here *** @@ -44,7 +44,7 @@ socket = /tmp/mysql.sock # generic configuration options port = 3306 -socket = /tmp/mysql.sock +socket = /var/run/mysqld/mysqld.sock # back_log is the number of connections the operating system can keep in # the listen queue, before the MySQL connection manager thread has debian/patches/0005-forwarded-upstrean-fix-FTBFS-on-sparc64.patch0000644000000000000000000000266112244723772021373 0ustar From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Wed, 13 Nov 2013 16:25:25 +0100 Subject: forwarded upstrean fix FTBFS on sparc64 --- cppserver/database/Makefile.am | 2 +- cppserver/database/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cppserver/database/Makefile.am b/cppserver/database/Makefile.am index 9cf6324..f5e33eb 100644 --- a/cppserver/database/Makefile.am +++ b/cppserver/database/Makefile.am @@ -6,7 +6,7 @@ INCLUDES = $(ORB_INCLUDE_PREFIX) $(LIBZMQ_CFLAGS) \ $(MYSQLCLIENT_CFLAGS) \ $(ZLIB_CPPFLAGS) -AM_CXXFLAGS= -Wall -D_FORTIFY_SOURCE=2 -O1 -fpie +AM_CXXFLAGS= -Wall -D_FORTIFY_SOURCE=2 -O1 -fPIE LDADD = -L$(top_builddir)/lib/cpp/server -ltango -L$(top_builddir)/lib/cpp/log4tango/src \ -llog4tango $(MYSQLCLIENT_LDFLAGS) \ diff --git a/cppserver/database/Makefile.in b/cppserver/database/Makefile.in index b1dc264..54c7597 100644 --- a/cppserver/database/Makefile.in +++ b/cppserver/database/Makefile.in @@ -327,7 +327,7 @@ INCLUDES = $(ORB_INCLUDE_PREFIX) $(LIBZMQ_CFLAGS) \ $(MYSQLCLIENT_CFLAGS) \ $(ZLIB_CPPFLAGS) -AM_CXXFLAGS = -Wall -D_FORTIFY_SOURCE=2 -O1 -fpie +AM_CXXFLAGS = -Wall -D_FORTIFY_SOURCE=2 -O1 -fPIE LDADD = -L$(top_builddir)/lib/cpp/server -ltango -L$(top_builddir)/lib/cpp/log4tango/src \ -llog4tango $(MYSQLCLIENT_LDFLAGS) \ $(MYSQLCLIENT_LIBS) $(ZLIB_LDFLAGS) $(ZLIB_LIBS) $(LIBZMQ_LIBS) debian/patches/0004-fix-upstream-p812_1.diff.patch0000644000000000000000000000512712244723771016500 0ustar From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Tue, 3 Sep 2013 20:10:47 +0200 Subject: fix upstream p812_1.diff --- lib/cpp/server/eventcmds.cpp | 4 +++- lib/cpp/server/pollthread.cpp | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/cpp/server/eventcmds.cpp b/lib/cpp/server/eventcmds.cpp index cb3cc75..2d642cb 100644 --- a/lib/cpp/server/eventcmds.cpp +++ b/lib/cpp/server/eventcmds.cpp @@ -539,8 +539,8 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa (const char *)"DServer::zmq_event_subscription_change"); } - Tango::DevVarLongStringArray *ret_data = new Tango::DevVarLongStringArray(); Tango::Util *tg = Tango::Util::instance(); + Tango::DevVarLongStringArray *ret_data; if (argin->length() == 1) { @@ -561,6 +561,7 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa // It's just the call to help debugging. Returns event configuration // + ret_data = new Tango::DevVarLongStringArray(); ret_data->svalue.length(2); ZmqEventSupplier *ev; @@ -735,6 +736,7 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa // Init data returned by command // + ret_data = new Tango::DevVarLongStringArray(); ret_data->lvalue.length(6); ret_data->svalue.length(2); diff --git a/lib/cpp/server/pollthread.cpp b/lib/cpp/server/pollthread.cpp index bf67011..ffc3fde 100644 --- a/lib/cpp/server/pollthread.cpp +++ b/lib/cpp/server/pollthread.cpp @@ -1038,11 +1038,17 @@ void PollThread::tune_list(bool from_needed, long min_delta) WorkItem wo = *ite; Tango::DevULong64 next_work = ((Tango::DevULong64)wo.wake_up_date.tv_sec * 1000000LL) + (Tango::DevULong64)wo.wake_up_date.tv_usec; + Tango::DevULong64 next_prev; if (next_work < next_tuning) { Tango::DevULong64 prev_obj_work = ((Tango::DevULong64)ite_prev->wake_up_date.tv_sec * 1000000LL) + (Tango::DevULong64)ite_prev->wake_up_date.tv_usec; - Tango::DevULong64 n = (next_work - prev_obj_work) / ((Tango::DevULong64)ite_prev->update * 1000LL); - Tango::DevULong64 next_prev = prev_obj_work + (n * (ite_prev->update * 1000LL)); + if (next_work > prev_obj_work) + { + Tango::DevULong64 n = (next_work - prev_obj_work) / ((Tango::DevULong64)ite_prev->update * 1000LL); + next_prev = prev_obj_work + (n * (ite_prev->update * 1000LL)); + } + else + next_prev = prev_obj_work; wo.wake_up_date.tv_sec = (long)(next_prev / 1000000LL); wo.wake_up_date.tv_usec = (long)(next_prev % 1000000LL); debian/patches/0003-debian-notify_daemon.patch0000644000000000000000000000166112244723771016306 0ustar From: Debian Science Maintainers Date: Tue, 22 Mar 2011 15:25:38 +0100 Subject: debian/notify_daemon --- scripts/notify_daemon.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/notify_daemon.in b/scripts/notify_daemon.in index a610b75..3c8ca1d 100755 --- a/scripts/notify_daemon.in +++ b/scripts/notify_daemon.in @@ -16,8 +16,6 @@ SunOS) KILLALL=pkill esac -BIN_DIR=@prefix@/bin - ulimit -s 2048 #------------------------------------------------------------ @@ -35,12 +33,12 @@ fi echo "TANGO_HOST=$TANGO_HOST" echo "Starting notifd....." -$BIN_DIR/notifd -n -DDeadFilterInterval=300 1>/dev/null 2>/tmp/notifd.err & +notifd -n -DDeadFilterInterval=300 1>/dev/null 2>/tmp/notifd.err & #---- Sleep a bit before write IOR in database sleep 3 -$BIN_DIR/notifd2db +/usr/lib/tango/notifd2db echo "ulimit has been set to:" ulimit -s debian/patches/0001-debian-fix_database_scripts.patch0000644000000000000000000000215112244723771017625 0ustar From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Tue, 22 Mar 2011 15:25:38 +0100 Subject: debian/fix_database_scripts MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit update the database creation script to deal with the debian path Signed-off-by: Picca Frédéric-Emmanuel --- cppserver/database/create_db.sql.in | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cppserver/database/create_db.sql.in b/cppserver/database/create_db.sql.in index 210a335..292d005 100644 --- a/cppserver/database/create_db.sql.in +++ b/cppserver/database/create_db.sql.in @@ -1,12 +1,8 @@ - -CREATE DATABASE @TANGO_DB_NAME@; -USE @TANGO_DB_NAME@; - # # Create all database tables # -source create_db_tables.sql +source /usr/share/tango-db/create_db_tables.sql # # Init the history identifiers @@ -126,5 +122,5 @@ INSERT INTO property_class VALUES ('TangoAccessControl','AllowedAccessCmd',6,'Ge # Load the stored procedures # -source stored_proc.sql +source /usr/share/tango-db/stored_proc.sql debian/patches/0006-fix-upstream-p812_2.patch0000644000000000000000000001225112244723772015571 0ustar From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Mon, 25 Nov 2013 20:41:39 +0100 Subject: fix upstream p812_2 --- lib/cpp/client/api_util.cpp | 4 ++++ lib/cpp/client/event.cpp | 11 ++++++----- lib/cpp/client/eventconsumer.h | 1 + lib/cpp/client/eventkeepalive.cpp | 9 +++++++++ lib/cpp/client/zmqeventconsumer.cpp | 21 ++++++++++++++++----- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/lib/cpp/client/api_util.cpp b/lib/cpp/client/api_util.cpp index 6e38825..3ed6d83 100644 --- a/lib/cpp/client/api_util.cpp +++ b/lib/cpp/client/api_util.cpp @@ -257,6 +257,10 @@ void ApiUtil::create_orb() if (sigaction(SIGPIPE,NULL,&sa) == -1) sa.sa_handler = NULL; +#else + WORD rel = 0x0202; + WSADATA dat; + WSAStartup(rel,&dat); #endif // diff --git a/lib/cpp/client/event.cpp b/lib/cpp/client/event.cpp index 75b8c33..f3fecf1 100644 --- a/lib/cpp/client/event.cpp +++ b/lib/cpp/client/event.cpp @@ -202,12 +202,12 @@ EventConsumer::EventConsumer(ApiUtil *api_ptr) { break; } + } - if (j == env_var_fqdn_prefix.size()) - { - string prefix = "tango://" + vs[i] + '/'; - env_var_fqdn_prefix.push_back(prefix); - } + if (j == env_var_fqdn_prefix.size()) + { + string prefix = "tango://" + vs[i] + '/'; + env_var_fqdn_prefix.push_back(prefix); } #endif } @@ -1441,6 +1441,7 @@ int EventConsumer::connect_event(DeviceProxy *device, new_event_callback.device_idl = 0; } new_event_callback.ctr = 0; + new_event_callback.discarded_event = false; if (zmq_used == true) new_event_callback.endpoint = dvlsa->svalue[1].in(); diff --git a/lib/cpp/client/eventconsumer.h b/lib/cpp/client/eventconsumer.h index f403fb2..20c8604 100644 --- a/lib/cpp/client/eventconsumer.h +++ b/lib/cpp/client/eventconsumer.h @@ -298,6 +298,7 @@ typedef struct event_callback_zmq DevLong device_idl; DevULong ctr; string endpoint; + bool discarded_event; }EventCallBackZmq; typedef struct event_callback: public EventCallBackBase, public EventCallBackZmq diff --git a/lib/cpp/client/eventkeepalive.cpp b/lib/cpp/client/eventkeepalive.cpp index e204fae..2d93241 100644 --- a/lib/cpp/client/eventkeepalive.cpp +++ b/lib/cpp/client/eventkeepalive.cpp @@ -452,6 +452,10 @@ void EventConsumerKeepAliveThread::reconnect_to_zmq_event(EvChanIte &ipos,EventC event_consumer->connect_event_system(d_name,epos->second.attr_name,epos->second.event_name,vs,ipos,ecbs,dd); + const DevVarLongStringArray *dvlsa; + dd >> dvlsa; + epos->second.endpoint = dvlsa->svalue[1].in(); + cout3 << "Reconnected to ZMQ event" << endl; } catch(...) @@ -588,6 +592,11 @@ void *EventConsumerKeepAliveThread::run_undetached(TANGO_UNUSED(void *arg)) { try { + if (notifd_event_consumer == NULL) + { + ApiUtil::instance()->create_notifd_event_consumer(); + notifd_event_consumer = ApiUtil::instance()->get_notifd_event_consumer(); + } notifd_event_consumer->connect_event(vpos->device,vpos->attribute,vpos->event_type, vpos->callback, vpos->ev_queue, diff --git a/lib/cpp/client/zmqeventconsumer.cpp b/lib/cpp/client/zmqeventconsumer.cpp index 8fa8ce0..6ebdfc8 100644 --- a/lib/cpp/client/zmqeventconsumer.cpp +++ b/lib/cpp/client/zmqeventconsumer.cpp @@ -859,6 +859,7 @@ bool ZmqEventConsumer::process_ctrl(zmq::message_t &received_ctrl,zmq::pollitem_ event_sub_sock->setsockopt(ZMQ_RCVHWM,&sub_hwm,sizeof(sub_hwm)); event_sub_sock->connect(endpoint); + if (force_connect == 0) connected_pub.push_back(endpoint); } @@ -935,9 +936,10 @@ bool ZmqEventConsumer::process_ctrl(zmq::message_t &received_ctrl,zmq::pollitem_ vector::iterator pos; pos = find(connected_pub.begin(),connected_pub.end(),endpoint_str); if (pos != connected_pub.end()) + { connected_pub.erase(pos); - - event_sub_sock->disconnect(endpoint); + event_sub_sock->disconnect(endpoint); + } #endif } else @@ -1930,12 +1932,21 @@ void ZmqEventConsumer::push_zmq_event(string &ev_name,unsigned char endian,zmq:: if (missed_event >= 2) { err_missed_event = true; + evt_cb.discarded_event = false; } else if (missed_event == 0) { - map_modification_lock.readerOut(); - return; - } + if (evt_cb.discarded_event == false) + { + evt_cb.discarded_event = true; + map_modification_lock.readerOut(); + return; + } + else + evt_cb.discarded_event = false; + } + else + evt_cb.discarded_event = false; evt_cb.ctr = ds_ctr; debian/mysql/0000755000000000000000000000000012241203261010324 5ustar debian/mysql/8.1.2+dfsg-10000644000000000000000000005353412241203261012004 0ustar DROP PROCEDURE IF EXISTS tango.ds_start; DROP PROCEDURE IF EXISTS tango.import_event; DROP PROCEDURE IF EXISTS tango.import_device; DROP PROCEDURE IF EXISTS tango.class_prop; DROP PROCEDURE IF EXISTS tango.dev_prop; DROP PROCEDURE IF EXISTS tango.class_att_prop; DROP PROCEDURE IF EXISTS tango.get_dev_list; DROP PROCEDURE IF EXISTS tango.dev_att_prop; DROP PROCEDURE IF EXISTS tango.obj_prop; ######################################################### # # # MAIN PROCEDURE # # # # Procedure input parameters: # # 1 - Device server name (executable/inst_name) # # 2 - Host name # # Procedure output parameters: # # 1 - A huge string with several elements and a # # separator set to 0 (binary 0) # # # ######################################################### # # If you change something in these procedures, do not forget # to also change the COMMENT part of the ds_start procedure # CREATE command # DELIMITER | CREATE PROCEDURE tango.ds_start (IN ds_name VARCHAR(255), IN host VARCHAR(255), OUT res_str BLOB) READS SQL DATA COMMENT 'release 1.8' proc: BEGIN DECLARE notifd_event_name VARCHAR(255) DEFAULT 'notifd/factory/'; DECLARE adm_dev_name VARCHAR(255) DEFAULT 'dserver/'; DECLARE done, dev_nb,class_nb INT DEFAULT 0; DECLARE tmp_class,d_name VARCHAR(255); DECLARE dev_list BLOB; DECLARE start,pos INT DEFAULT 1; DECLARE class_nb_pos INT; DECLARE ca_dev_name VARCHAR(255); DECLARE cur_class_list CURSOR FOR SELECT DISTINCT class FROM tango.device WHERE server = ds_name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET adm_dev_name = CONCAT(adm_dev_name,ds_name); # # import admin device # CALL tango.import_device(adm_dev_name,res_str); IF LOCATE('Not Found',res_str) != 0 OR LOCATE('MySQL Error',res_str) != 0 THEN LEAVE proc; END IF; # # import event factory for notification service running on that host # SET notifd_event_name = CONCAT(notifd_event_name,host); CALL tango.import_event(notifd_event_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for event factory'; LEAVE proc; END IF; # # import event channel for this server # CALL tango.import_event(adm_dev_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for DS event channel'; LEAVE proc; END IF; # # Get all class properties for DServer class # CALL tango.class_prop('DServer',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DServer class property(ies)'; LEAVE proc; END IF; # # Get all class properties for Default class # CALL tango.class_prop('Default',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting Default class property(ies)'; LEAVE proc; END IF; # # Get all device properties for admin device # CALL tango.dev_prop(adm_dev_name,res_str); SET done = 0; # # # SET res_str = CONCAT_WS(CHAR(0),res_str,ds_name); SET class_nb_pos = LENGTH(res_str); # # A loop for each class embedded within the server # OPEN cur_class_list; REPEAT FETCH cur_class_list INTO tmp_class; IF NOT done THEN IF tmp_class != 'dserver' THEN SET class_nb = class_nb + 1; CALL tango.class_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.class_att_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) attribute(s) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.get_dev_list(tmp_class,ds_name,res_str,dev_list,dev_nb); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) device list'; CLOSE cur_class_list; LEAVE proc; END IF; # # A loop for each device in the class # WHILE dev_nb > 0 DO SET pos = LOCATE(CHAR(0),dev_list,start); IF pos = 0 THEN SET d_name = SUBSTRING(dev_list,start); ELSE SET d_name = SUBSTRING(dev_list,start,pos-start); SET start = pos + 1; END IF; # select dev_list,d_name,pos,start; CALL tango.dev_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.dev_att_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device attribute property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; SET dev_nb = dev_nb - 1; END WHILE; SET start = 1; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_class_list; SET res_str = INSERT(res_str,class_nb_pos+1,1,CONCAT_WS(CONCAT(class_nb),CHAR(0),CHAR(0))); # # Get service(s) property # SET ca_dev_name = 'Empty'; CALL tango.obj_prop('CtrlSystem',ca_dev_name,res_str); IF ca_dev_name != 'Empty' THEN # # import control access service device # CALL tango.import_device(ca_dev_name,res_str); END IF; END proc| ######################################################### # # # IMPORT EVENT PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_event (IN ev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host VARCHAR(255); DECLARE tmp_ev_name VARCHAR(255); DECLARE tmp_ev_name_canon VARCHAR(255); DECLARE tmp_exp, tmp_pid, dot INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET tmp_ev_name = ev_name; SET tmp_ev_name = REPLACE(tmp_ev_name,'_','\_'); SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name; IF not_found = 1 THEN SET dot = LOCATE('.',tmp_ev_name); IF dot != 0 THEN SET tmp_ev_name_canon = SUBSTRING(tmp_ev_name,1,dot - 1); SET not_found = 0; SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name_canon; IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); END IF; ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; END | ######################################################### # # # IMPORT DEVICE PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_device (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA imp_proc: BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host,tmp_server,tmp_class VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SELECT exported,ior,version,pid,server,host,class INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_server,tmp_host,tmp_class FROM tango.device WHERE name = dev_name; SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,'Not Found'); LEAVE imp_proc; END IF; IF tmp_ior IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_ior); END IF; IF tmp_version IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_version); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_server,tmp_host,CONCAT(tmp_exp)); IF tmp_pid IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,CONCAT(tmp_pid)); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_class); END imp_proc | ######################################################### # # # GET CLASS PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,prop_name_pos INT; DECLARE cur_class CURSOR FOR SELECT name,count,value FROM tango.property_class WHERE class = class_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class; REPEAT FETCH cur_class INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property_device WHERE device = dev_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET CLASS ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_att_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_class_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_class WHERE class = class_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class_att_prop; REPEAT FETCH cur_class_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_att_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_dev_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_device WHERE device = dev_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev_att_prop; REPEAT FETCH cur_dev_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE LIST PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.get_dev_list (IN class_name VARCHAR(255), IN serv VARCHAR(255), INOUT res_str BLOB, OUT d_list TEXT, OUT d_num INT) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE done INT DEFAULT 0; DECLARE nb_dev INT DEFAULT 0; DECLARE class_name_pos INT; DECLARE cur_dev_list CURSOR FOR SELECT DISTINCT name FROM tango.device WHERE class = class_name AND server = serv ORDER BY name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_dev_list; REPEAT FETCH cur_dev_list INTO tmp_name; IF NOT done THEN SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); IF nb_dev = 0 THEN SET d_list = CONCAT_WS("",d_list,tmp_name); ELSE SET d_list = CONCAT_WS(CHAR(0),d_list,tmp_name); END IF; SET nb_dev = nb_dev + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_list; SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(nb_dev),CHAR(0),CHAR(0))); SET d_num = nb_dev; END | ######################################################### # # # GET OBJECT PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.obj_prop (IN obj_name VARCHAR(255),OUT serv_dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE serv_defined INT DEFAULT 0; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property WHERE object = obj_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,obj_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; IF tmp_name = 'Services' THEN SET serv_defined = 1; ELSE SET serv_defined = 0; END IF; END IF; IF serv_defined = 1 THEN IF LOCATE('AccessControl/tango:',tmp_value) != 0 THEN SET serv_dev_name = SUBSTRING(tmp_value,21); IF LOCATE('tango://',serv_dev_name) != 0 THEN SET serv_dev_name = SUBSTRING_INDEX(serv_dev_name,'/',-3); END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | DELIMITER ; USE tango; # # Update entries in the property_class tables for controlled access service # INSERT INTO property_class VALUES('DServer','AllowedAccessCmd',10,'ZMQEventSubscriptionChange',NULL,NULL,NULL); INSERT INTO property_class VALUES('Starter','AllowedAccessCmd',5,'UpdateServerList',NULL,NULL,NULL); debian/mysql/7.2.0~rc1+dfsg-10000644000000000000000000005137212167063434012621 0ustar DROP PROCEDURE IF EXISTS tango.ds_start; DROP PROCEDURE IF EXISTS tango.import_event; DROP PROCEDURE IF EXISTS tango.import_device; DROP PROCEDURE IF EXISTS tango.class_prop; DROP PROCEDURE IF EXISTS tango.dev_prop; DROP PROCEDURE IF EXISTS tango.class_att_prop; DROP PROCEDURE IF EXISTS tango.get_dev_list; DROP PROCEDURE IF EXISTS tango.dev_att_prop; DROP PROCEDURE IF EXISTS tango.obj_prop; ######################################################### # # # MAIN PROCEDURE # # # # Procedure input parameters: # # 1 - Device server name (executable/inst_name) # # 2 - Host name # # Procedure output parameters: # # 1 - A huge string with several elements and a # # separator set to 0 (binary 0) # # # ######################################################### # # If you change something in these procedures, do not forget # to also change the COMMENT part of the ds_start procedure # CREATE command # DELIMITER | CREATE PROCEDURE tango.ds_start (IN ds_name VARCHAR(255), IN host VARCHAR(255), OUT res_str BLOB) READS SQL DATA COMMENT 'release 1.3' proc: BEGIN DECLARE notifd_event_name VARCHAR(255) DEFAULT 'notifd/factory/'; DECLARE adm_dev_name VARCHAR(255) DEFAULT 'dserver/'; DECLARE done, dev_nb,class_nb INT DEFAULT 0; DECLARE tmp_class,d_name VARCHAR(255); DECLARE dev_list BLOB; DECLARE start,pos INT DEFAULT 1; DECLARE class_nb_pos INT; DECLARE ca_dev_name VARCHAR(255); DECLARE cur_class_list CURSOR FOR SELECT DISTINCT class FROM tango.device WHERE server = ds_name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET adm_dev_name = CONCAT(adm_dev_name,ds_name); # # import admin device # CALL tango.import_device(adm_dev_name,res_str); IF LOCATE('Not Found',res_str) != 0 OR LOCATE('MySQL Error',res_str) != 0 THEN LEAVE proc; END IF; # # import event factory for notification service running on that host # SET notifd_event_name = CONCAT(notifd_event_name,host); CALL tango.import_event(notifd_event_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for event factory'; LEAVE proc; END IF; # # import event channel for this server # CALL tango.import_event(adm_dev_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for DS event channel'; LEAVE proc; END IF; # # Get all class properties for DServer class # CALL tango.class_prop('DServer',res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DServer class property(ies)'; LEAVE proc; END IF; # # Get all class properties for Default class # CALL tango.class_prop('Default',res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting Default class property(ies)'; LEAVE proc; END IF; # # Get all device properties for admin device # CALL tango.dev_prop(adm_dev_name,res_str); # # # SET res_str = CONCAT_WS(CHAR(0),res_str,ds_name); SET class_nb_pos = LENGTH(res_str); # # A loop for each class embedded within the server # OPEN cur_class_list; REPEAT FETCH cur_class_list INTO tmp_class; IF NOT done THEN IF tmp_class != 'dserver' THEN SET class_nb = class_nb + 1; CALL tango.class_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.class_att_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) attribute(s) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.get_dev_list(tmp_class,ds_name,res_str,dev_list,dev_nb); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) device list'; CLOSE cur_class_list; LEAVE proc; END IF; # # A loop for each device in the class # WHILE dev_nb > 0 DO SET pos = LOCATE(CHAR(0),dev_list,start); IF pos = 0 THEN SET d_name = SUBSTRING(dev_list,start); ELSE SET d_name = SUBSTRING(dev_list,start,pos-start); SET start = pos + 1; END IF; # select dev_list,d_name,pos,start; CALL tango.dev_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.dev_att_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device attribute property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; SET dev_nb = dev_nb - 1; END WHILE; SET start = 1; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_class_list; SET res_str = INSERT(res_str,class_nb_pos+1,1,CONCAT_WS(CONCAT(class_nb),CHAR(0),CHAR(0))); # # Get service(s) property # SET ca_dev_name = 'Empty'; CALL tango.obj_prop('CtrlSystem',ca_dev_name,res_str); IF ca_dev_name != 'Empty' THEN # # import control access service device # CALL tango.import_device(ca_dev_name,res_str); END IF; END proc| ######################################################### # # # IMPORT EVENT PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_event (IN ev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host VARCHAR(255); DECLARE tmp_ev_name VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET tmp_ev_name = ev_name; SET tmp_ev_name = REPLACE(tmp_ev_name,'_','\_'); SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name; IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; END | ######################################################### # # # IMPORT DEVICE PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_device (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA imp_proc: BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host,tmp_server,tmp_class VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SELECT exported,ior,version,pid,server,host,class INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_server,tmp_host,tmp_class FROM tango.device WHERE name = dev_name; SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,'Not Found'); LEAVE imp_proc; END IF; IF tmp_ior IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_ior); END IF; IF tmp_version IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_version); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_server,tmp_host,CONCAT(tmp_exp)); IF tmp_pid IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,CONCAT(tmp_pid)); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_class); END imp_proc | ######################################################### # # # GET CLASS PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,prop_name_pos INT; DECLARE cur_class CURSOR FOR SELECT name,count,value FROM tango.property_class WHERE class = class_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class; REPEAT FETCH cur_class INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property_device WHERE device = dev_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET CLASS ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_att_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_class_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_class WHERE class = class_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class_att_prop; REPEAT FETCH cur_class_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_att_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_dev_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_device WHERE device = dev_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev_att_prop; REPEAT FETCH cur_dev_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE LIST PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.get_dev_list (IN class_name VARCHAR(255), IN serv VARCHAR(255), INOUT res_str BLOB, OUT d_list TEXT, OUT d_num INT) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE done INT DEFAULT 0; DECLARE nb_dev INT DEFAULT 0; DECLARE class_name_pos INT; DECLARE cur_dev_list CURSOR FOR SELECT name FROM tango.device WHERE class = class_name AND server = serv; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_dev_list; REPEAT FETCH cur_dev_list INTO tmp_name; IF NOT done THEN SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); IF nb_dev = 0 THEN SET d_list = CONCAT_WS("",d_list,tmp_name); ELSE SET d_list = CONCAT_WS(CHAR(0),d_list,tmp_name); END IF; SET nb_dev = nb_dev + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_list; SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(nb_dev),CHAR(0),CHAR(0))); SET d_num = nb_dev; END | ######################################################### # # # GET OBJECT PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.obj_prop (IN obj_name VARCHAR(255),OUT serv_dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE serv_defined INT DEFAULT 0; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property WHERE object = obj_name ORDER BY count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,obj_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; IF tmp_name = 'Services' THEN SET serv_defined = 1; ELSE SET serv_defined = 0; END IF; END IF; IF serv_defined = 1 THEN IF LOCATE('AccessControl/tango:',tmp_value) != 0 THEN SET serv_dev_name = SUBSTRING(tmp_value,21); END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | DELIMITER ; debian/mysql/7.2.6+dfsg-10000644000000000000000000005150712167063434012023 0ustar DROP PROCEDURE IF EXISTS tango.ds_start; DROP PROCEDURE IF EXISTS tango.import_event; DROP PROCEDURE IF EXISTS tango.import_device; DROP PROCEDURE IF EXISTS tango.class_prop; DROP PROCEDURE IF EXISTS tango.dev_prop; DROP PROCEDURE IF EXISTS tango.class_att_prop; DROP PROCEDURE IF EXISTS tango.get_dev_list; DROP PROCEDURE IF EXISTS tango.dev_att_prop; DROP PROCEDURE IF EXISTS tango.obj_prop; ######################################################### # # # MAIN PROCEDURE # # # # Procedure input parameters: # # 1 - Device server name (executable/inst_name) # # 2 - Host name # # Procedure output parameters: # # 1 - A huge string with several elements and a # # separator set to 0 (binary 0) # # # ######################################################### # # If you change something in these procedures, do not forget # to also change the COMMENT part of the ds_start procedure # CREATE command # DELIMITER | CREATE PROCEDURE tango.ds_start (IN ds_name VARCHAR(255), IN host VARCHAR(255), OUT res_str BLOB) READS SQL DATA COMMENT 'release 1.4' proc: BEGIN DECLARE notifd_event_name VARCHAR(255) DEFAULT 'notifd/factory/'; DECLARE adm_dev_name VARCHAR(255) DEFAULT 'dserver/'; DECLARE done, dev_nb,class_nb INT DEFAULT 0; DECLARE tmp_class,d_name VARCHAR(255); DECLARE dev_list BLOB; DECLARE start,pos INT DEFAULT 1; DECLARE class_nb_pos INT; DECLARE ca_dev_name VARCHAR(255); DECLARE cur_class_list CURSOR FOR SELECT DISTINCT class FROM tango.device WHERE server = ds_name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET adm_dev_name = CONCAT(adm_dev_name,ds_name); # # import admin device # CALL tango.import_device(adm_dev_name,res_str); IF LOCATE('Not Found',res_str) != 0 OR LOCATE('MySQL Error',res_str) != 0 THEN LEAVE proc; END IF; # # import event factory for notification service running on that host # SET notifd_event_name = CONCAT(notifd_event_name,host); CALL tango.import_event(notifd_event_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for event factory'; LEAVE proc; END IF; # # import event channel for this server # CALL tango.import_event(adm_dev_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for DS event channel'; LEAVE proc; END IF; # # Get all class properties for DServer class # CALL tango.class_prop('DServer',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DServer class property(ies)'; LEAVE proc; END IF; # # Get all class properties for Default class # CALL tango.class_prop('Default',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting Default class property(ies)'; LEAVE proc; END IF; # # Get all device properties for admin device # CALL tango.dev_prop(adm_dev_name,res_str); SET done = 0; # # # SET res_str = CONCAT_WS(CHAR(0),res_str,ds_name); SET class_nb_pos = LENGTH(res_str); # # A loop for each class embedded within the server # OPEN cur_class_list; REPEAT FETCH cur_class_list INTO tmp_class; IF NOT done THEN IF tmp_class != 'dserver' THEN SET class_nb = class_nb + 1; CALL tango.class_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.class_att_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) attribute(s) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.get_dev_list(tmp_class,ds_name,res_str,dev_list,dev_nb); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) device list'; CLOSE cur_class_list; LEAVE proc; END IF; # # A loop for each device in the class # WHILE dev_nb > 0 DO SET pos = LOCATE(CHAR(0),dev_list,start); IF pos = 0 THEN SET d_name = SUBSTRING(dev_list,start); ELSE SET d_name = SUBSTRING(dev_list,start,pos-start); SET start = pos + 1; END IF; # select dev_list,d_name,pos,start; CALL tango.dev_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.dev_att_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device attribute property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; SET dev_nb = dev_nb - 1; END WHILE; SET start = 1; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_class_list; SET res_str = INSERT(res_str,class_nb_pos+1,1,CONCAT_WS(CONCAT(class_nb),CHAR(0),CHAR(0))); # # Get service(s) property # SET ca_dev_name = 'Empty'; CALL tango.obj_prop('CtrlSystem',ca_dev_name,res_str); IF ca_dev_name != 'Empty' THEN # # import control access service device # CALL tango.import_device(ca_dev_name,res_str); END IF; END proc| ######################################################### # # # IMPORT EVENT PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_event (IN ev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host VARCHAR(255); DECLARE tmp_ev_name VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET tmp_ev_name = ev_name; SET tmp_ev_name = REPLACE(tmp_ev_name,'_','\_'); SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name; IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; END | ######################################################### # # # IMPORT DEVICE PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_device (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA imp_proc: BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host,tmp_server,tmp_class VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SELECT exported,ior,version,pid,server,host,class INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_server,tmp_host,tmp_class FROM tango.device WHERE name = dev_name; SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,'Not Found'); LEAVE imp_proc; END IF; IF tmp_ior IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_ior); END IF; IF tmp_version IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_version); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_server,tmp_host,CONCAT(tmp_exp)); IF tmp_pid IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,CONCAT(tmp_pid)); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_class); END imp_proc | ######################################################### # # # GET CLASS PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,prop_name_pos INT; DECLARE cur_class CURSOR FOR SELECT name,count,value FROM tango.property_class WHERE class = class_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class; REPEAT FETCH cur_class INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property_device WHERE device = dev_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET CLASS ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_att_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_class_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_class WHERE class = class_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class_att_prop; REPEAT FETCH cur_class_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_att_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_dev_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_device WHERE device = dev_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev_att_prop; REPEAT FETCH cur_dev_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE LIST PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.get_dev_list (IN class_name VARCHAR(255), IN serv VARCHAR(255), INOUT res_str BLOB, OUT d_list TEXT, OUT d_num INT) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE done INT DEFAULT 0; DECLARE nb_dev INT DEFAULT 0; DECLARE class_name_pos INT; DECLARE cur_dev_list CURSOR FOR SELECT name FROM tango.device WHERE class = class_name AND server = serv; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_dev_list; REPEAT FETCH cur_dev_list INTO tmp_name; IF NOT done THEN SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); IF nb_dev = 0 THEN SET d_list = CONCAT_WS("",d_list,tmp_name); ELSE SET d_list = CONCAT_WS(CHAR(0),d_list,tmp_name); END IF; SET nb_dev = nb_dev + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_list; SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(nb_dev),CHAR(0),CHAR(0))); SET d_num = nb_dev; END | ######################################################### # # # GET OBJECT PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.obj_prop (IN obj_name VARCHAR(255),OUT serv_dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE serv_defined INT DEFAULT 0; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property WHERE object = obj_name ORDER BY count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,obj_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; IF tmp_name = 'Services' THEN SET serv_defined = 1; ELSE SET serv_defined = 0; END IF; END IF; IF serv_defined = 1 THEN IF LOCATE('AccessControl/tango:',tmp_value) != 0 THEN SET serv_dev_name = SUBSTRING(tmp_value,21); END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | DELIMITER ; debian/mysql/8.0.5+dfsg-10000644000000000000000000005367512167063434012031 0ustar DROP PROCEDURE IF EXISTS tango.ds_start; DROP PROCEDURE IF EXISTS tango.import_event; DROP PROCEDURE IF EXISTS tango.import_device; DROP PROCEDURE IF EXISTS tango.class_prop; DROP PROCEDURE IF EXISTS tango.dev_prop; DROP PROCEDURE IF EXISTS tango.class_att_prop; DROP PROCEDURE IF EXISTS tango.get_dev_list; DROP PROCEDURE IF EXISTS tango.dev_att_prop; DROP PROCEDURE IF EXISTS tango.obj_prop; ######################################################### # # # MAIN PROCEDURE # # # # Procedure input parameters: # # 1 - Device server name (executable/inst_name) # # 2 - Host name # # Procedure output parameters: # # 1 - A huge string with several elements and a # # separator set to 0 (binary 0) # # # ######################################################### # # If you change something in these procedures, do not forget # to also change the COMMENT part of the ds_start procedure # CREATE command # DELIMITER | CREATE PROCEDURE tango.ds_start (IN ds_name VARCHAR(255), IN host VARCHAR(255), OUT res_str BLOB) READS SQL DATA COMMENT 'release 1.8' proc: BEGIN DECLARE notifd_event_name VARCHAR(255) DEFAULT 'notifd/factory/'; DECLARE adm_dev_name VARCHAR(255) DEFAULT 'dserver/'; DECLARE done, dev_nb,class_nb INT DEFAULT 0; DECLARE tmp_class,d_name VARCHAR(255); DECLARE dev_list BLOB; DECLARE start,pos INT DEFAULT 1; DECLARE class_nb_pos INT; DECLARE ca_dev_name VARCHAR(255); DECLARE cur_class_list CURSOR FOR SELECT DISTINCT class FROM tango.device WHERE server = ds_name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET adm_dev_name = CONCAT(adm_dev_name,ds_name); # # import admin device # CALL tango.import_device(adm_dev_name,res_str); IF LOCATE('Not Found',res_str) != 0 OR LOCATE('MySQL Error',res_str) != 0 THEN LEAVE proc; END IF; # # import event factory for notification service running on that host # SET notifd_event_name = CONCAT(notifd_event_name,host); CALL tango.import_event(notifd_event_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for event factory'; LEAVE proc; END IF; # # import event channel for this server # CALL tango.import_event(adm_dev_name,res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR during import_event procedure for DS event channel'; LEAVE proc; END IF; # # Get all class properties for DServer class # CALL tango.class_prop('DServer',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DServer class property(ies)'; LEAVE proc; END IF; # # Get all class properties for Default class # CALL tango.class_prop('Default',res_str); SET done = 0; IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting Default class property(ies)'; LEAVE proc; END IF; # # Get all device properties for admin device # CALL tango.dev_prop(adm_dev_name,res_str); SET done = 0; # # # SET res_str = CONCAT_WS(CHAR(0),res_str,ds_name); SET class_nb_pos = LENGTH(res_str); # # A loop for each class embedded within the server # OPEN cur_class_list; REPEAT FETCH cur_class_list INTO tmp_class; IF NOT done THEN IF tmp_class != 'dserver' THEN SET class_nb = class_nb + 1; CALL tango.class_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.class_att_prop(tmp_class,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) attribute(s) property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.get_dev_list(tmp_class,ds_name,res_str,dev_list,dev_nb); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting DS class(es) device list'; CLOSE cur_class_list; LEAVE proc; END IF; # # A loop for each device in the class # WHILE dev_nb > 0 DO SET pos = LOCATE(CHAR(0),dev_list,start); IF pos = 0 THEN SET d_name = SUBSTRING(dev_list,start); ELSE SET d_name = SUBSTRING(dev_list,start,pos-start); SET start = pos + 1; END IF; # select dev_list,d_name,pos,start; CALL tango.dev_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; CALL tango.dev_att_prop(d_name,res_str); IF LOCATE('MySQL Error',res_str) != 0 THEN SET res_str = 'MySQL ERROR while getting device attribute property(ies)'; CLOSE cur_class_list; LEAVE proc; END IF; SET dev_nb = dev_nb - 1; END WHILE; SET start = 1; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_class_list; SET res_str = INSERT(res_str,class_nb_pos+1,1,CONCAT_WS(CONCAT(class_nb),CHAR(0),CHAR(0))); # # Get service(s) property # SET ca_dev_name = 'Empty'; CALL tango.obj_prop('CtrlSystem',ca_dev_name,res_str); IF ca_dev_name != 'Empty' THEN # # import control access service device # CALL tango.import_device(ca_dev_name,res_str); END IF; END proc| ######################################################### # # # IMPORT EVENT PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_event (IN ev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host VARCHAR(255); DECLARE tmp_ev_name VARCHAR(255); DECLARE tmp_ev_name_canon VARCHAR(255); DECLARE tmp_exp, tmp_pid, dot INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET tmp_ev_name = ev_name; SET tmp_ev_name = REPLACE(tmp_ev_name,'_','\_'); SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name; IF not_found = 1 THEN SET dot = LOCATE('.',tmp_ev_name); IF dot != 0 THEN SET tmp_ev_name_canon = SUBSTRING(tmp_ev_name,1,dot - 1); SET not_found = 0; SELECT exported,ior,version,pid,host INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_host FROM tango.event WHERE name = tmp_ev_name_canon; IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,'Not Found'); END IF; ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,ev_name,tmp_ior,tmp_version,tmp_host,CONCAT(tmp_exp),CONCAT(tmp_pid)); END IF; END | ######################################################### # # # IMPORT DEVICE PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.import_device (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA imp_proc: BEGIN DECLARE tmp_ior TEXT; DECLARE tmp_version VARCHAR(8); DECLARE tmp_host,tmp_server,tmp_class VARCHAR(255); DECLARE tmp_exp, tmp_pid INT; DECLARE not_found INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SELECT exported,ior,version,pid,server,host,class INTO tmp_exp,tmp_ior,tmp_version,tmp_pid,tmp_server,tmp_host,tmp_class FROM tango.device WHERE name = dev_name; SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); IF not_found = 1 THEN SET res_str = CONCAT_WS(CHAR(0),res_str,'Not Found'); LEAVE imp_proc; END IF; IF tmp_ior IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_ior); END IF; IF tmp_version IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_version); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_server,tmp_host,CONCAT(tmp_exp)); IF tmp_pid IS NULL THEN SET res_str = CONCAT_WS(CHAR(0),res_str,''); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,CONCAT(tmp_pid)); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_class); END imp_proc | ######################################################### # # # GET CLASS PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,prop_name_pos INT; DECLARE cur_class CURSOR FOR SELECT name,count,value FROM tango.property_class WHERE class = class_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class; REPEAT FETCH cur_class INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property_device WHERE device = dev_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET CLASS ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.class_att_prop (IN class_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE class_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_class_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_class WHERE class = class_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_class_att_prop; REPEAT FETCH cur_class_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_class_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE ATTRIBUTE PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.dev_att_prop (IN dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name,tmp_attribute VARCHAR(255); DECLARE known_att VARCHAR(255) DEFAULT ''; DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,att_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,att_name_pos,prop_name_pos INT; DECLARE cur_dev_att_prop CURSOR FOR SELECT attribute,name,count,value FROM tango.property_attribute_device WHERE device = dev_name ORDER BY attribute,name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,dev_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev_att_prop; REPEAT FETCH cur_dev_att_prop INTO tmp_attribute,tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_attribute != known_att THEN IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; END IF; SET known_att = tmp_attribute; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_attribute); SET att_name_pos = LENGTH(res_str); SET att_nb = att_nb + 1; SET prop_nb = 0; END IF; IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); IF prop_nb = 0 THEN IF prop_elt_nb < 10 THEN SET att_name_pos = att_name_pos + 2; ELSEIF prop_elt_nb < 100 THEN SET att_name_pos = att_name_pos + 3; ELSE SET att_name_pos = att_name_pos + 4; END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_att_prop; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,att_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); IF prop_nb < 10 THEN SET prop_name_pos = prop_name_pos + 2; ELSEIF prop_nb < 100 THEN SET prop_name_pos = prop_name_pos + 3; ELSE SET prop_name_pos = prop_name_pos + 4; END IF; IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; END IF; IF att_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(att_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | ######################################################### # # # GET DEVICE LIST PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.get_dev_list (IN class_name VARCHAR(255), IN serv VARCHAR(255), INOUT res_str BLOB, OUT d_list TEXT, OUT d_num INT) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE done INT DEFAULT 0; DECLARE nb_dev INT DEFAULT 0; DECLARE class_name_pos INT; DECLARE cur_dev_list CURSOR FOR SELECT DISTINCT name FROM tango.device WHERE class = class_name AND server = serv ORDER BY name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,class_name); SET class_name_pos = LENGTH(res_str); OPEN cur_dev_list; REPEAT FETCH cur_dev_list INTO tmp_name; IF NOT done THEN SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); IF nb_dev = 0 THEN SET d_list = CONCAT_WS("",d_list,tmp_name); ELSE SET d_list = CONCAT_WS(CHAR(0),d_list,tmp_name); END IF; SET nb_dev = nb_dev + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev_list; SET res_str = INSERT(res_str,class_name_pos+1,1,CONCAT_WS(CONCAT(nb_dev),CHAR(0),CHAR(0))); SET d_num = nb_dev; END | ######################################################### # # # GET OBJECT PROPERTIES PROCEDURE # # # ######################################################### CREATE PROCEDURE tango.obj_prop (IN obj_name VARCHAR(255),OUT serv_dev_name VARCHAR(255), INOUT res_str BLOB) READS SQL DATA BEGIN DECLARE tmp_name VARCHAR(255); DECLARE tmp_value TEXT; DECLARE tmp_count INT; DECLARE done,prop_nb,prop_elt_nb INT DEFAULT 0; DECLARE dev_name_pos,prop_name_pos INT; DECLARE serv_defined INT DEFAULT 0; DECLARE cur_dev CURSOR FOR SELECT name,count,value FROM tango.property WHERE object = obj_name ORDER BY name,count; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION SET res_str = CONCAT_WS(CHAR(0),res_str,'MySQL Error'); SET res_str = CONCAT_WS(CHAR(0),res_str,obj_name); SET dev_name_pos = LENGTH(res_str); OPEN cur_dev; REPEAT FETCH cur_dev INTO tmp_name,tmp_count,tmp_value; IF NOT done THEN IF tmp_count = 1 THEN IF prop_elt_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_name); SET prop_name_pos = LENGTH(res_str); SET prop_nb = prop_nb + 1; SET prop_elt_nb = 0; IF tmp_name = 'Services' THEN SET serv_defined = 1; ELSE SET serv_defined = 0; END IF; END IF; IF serv_defined = 1 THEN IF LOCATE('AccessControl/tango:',tmp_value) != 0 THEN SET serv_dev_name = SUBSTRING(tmp_value,21); IF LOCATE('tango://',serv_dev_name) != 0 THEN SET serv_dev_name = SUBSTRING_INDEX(serv_dev_name,'/',-3); END IF; END IF; END IF; SET res_str = CONCAT_WS(CHAR(0),res_str,tmp_value); SET prop_elt_nb = prop_elt_nb + 1; END IF; UNTIL done END REPEAT; CLOSE cur_dev; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,prop_name_pos+1,1,CONCAT_WS(CONCAT(prop_elt_nb),CHAR(0),CHAR(0))); END IF; IF prop_nb != 0 THEN SET res_str = INSERT(res_str,dev_name_pos+1,1,CONCAT_WS(CONCAT(prop_nb),CHAR(0),CHAR(0))); ELSE SET res_str = CONCAT_WS(CHAR(0),res_str,0); END IF; END | DELIMITER ; USE tango; # # Update entries in the property_class tables for controlled access service # INSERT INTO property_class VALUES('Database','AllowedAccessCmd',32,'DbImportEvent',NULL,NULL,NULL); INSERT INTO property_class VALUES('Database','AllowedAccessCmd',33,'DbGetDeviceAlias',NULL,NULL,NULL); INSERT INTO property_class VALUES('Database','AllowedAccessCmd',34,'DbGetCSDbServerList',NULL,NULL,NULL); debian/po/0000755000000000000000000000000012241203261007575 5ustar debian/po/de.po0000644000000000000000000000176212167063434010550 0ustar # German debconf translation of tango. # This file is distributed under the same license as the tango package. # Copyright (C) 2011 Chris Leick . # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-2\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-21 11:08+0100\n" "Last-Translator: Chris Leick \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "TANGO-Rechner:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Bitte geben Sie den Namen des Rechners an, auf dem der TANGO-Datenbankserver " "läuft." debian/po/pt_BR.po0000644000000000000000000000207212241203261011144 0ustar # Debconf translations for tango. # Copyright (C) 2012 THE tango'S COPYRIGHT HOLDER # This file is distributed under the same license as the tango package. # Adriano Rafael Gomes , 2012, 2013. # msgid "" msgstr "" "Project-Id-Version: tango 8.1.2b+dfsg-1\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2013-08-22 11:13-0300\n" "Last-Translator: Adriano Rafael Gomes \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Máquina TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Por favor, especifique o nome da máquina onde o servidor de banco de dados " "do TANGO está executando." debian/po/nl.po0000644000000000000000000000201212167063434010556 0ustar # Dutch translation of tango debconf templates. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the tango package. # Jeroen Schot , 2012. # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-12\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2012-02-17 12:08+0100\n" "Last-Translator: Jeroen Schot \n" "Language-Team: Debian l10n Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "TANGO-computer:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Wat is de naam van de computer waarop de TANGO-databaseserver zich bevindt?" debian/po/id.po0000644000000000000000000000216212167063434010547 0ustar # tango po-debconf translation to Indonesian # Copyright (C) 2010 Software in the Public Interest # This file is distributed under the same license as the tango package. # # Changes: # - Initial translation # Izharul Haq , 2012. # # - Updates # # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-12\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2012-02-16 14:32+0700\n" "Last-Translator: Izharul Haq \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Virtaal 0.6.1\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "TANGO host:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "Tentukan nama host dimana server basis data TANGO sedang berjalan." debian/po/pt.po0000644000000000000000000000200412167063434010571 0ustar # Portuguese debconf messages for the tango package # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the tango package. # Pedro Ribeiro , 2011 # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-12\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-12-06 22:47+0000\n" "Last-Translator: Pedro Ribeiro \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Servidor TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Indique por favor o nome da máquina onde o servidor de base de dados TANGO " "está em execução." debian/po/sv.po0000644000000000000000000000204612167063434010604 0ustar # Translation of Tango debconf template to Swedish # Copyright (C) 2011 Martin Bagge # This file is distributed under the same license as the Tango package. # # Martin Bagge , 2011 msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-21 00:32+0100\n" "Last-Translator: Martin Bagge / brother \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Swedish\n" "X-Poedit-Country: Sweden\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Tango-värd:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "Ange namnet på den värd där databasservern Tango körs." debian/po/it.po0000644000000000000000000000212412167063434010565 0ustar # Italian translation of tango debconf messages. # Copyright (C) 2012, tango package copyright holder. # This file is distributed under the same license as the PACKAGE package. # Beatrice Torracca , 2012. msgid "" msgstr "" "Project-Id-Version: tango\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2012-02-17 17:46+0200\n" "Last-Translator: Beatrice Torracca \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Host TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Specificare il nome dell'host su cui è in esecuzione il server di database " "di TANGO." debian/po/ru.po0000644000000000000000000000224412167063434010602 0ustar # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the tango package. # # Yuri Kozlov , 2011. msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-2\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-23 08:29+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 " "&& n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Узел TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "Укажите имя узла, на котором запущен сервер базы данных TANGO." debian/po/es.po0000644000000000000000000000331412167063434010562 0ustar # tango po-debconf translation to Spanish # Copyright (C) 2010 Software in the Public Interest # This file is distributed under the same license as the tango package. # # Changes: # - Initial translation # Camaleón , 2011 # # - Updates # # # Traductores, si no conocen el formato PO, merece la pena leer la # documentación de gettext, especialmente las secciones dedicadas a este # formato, por ejemplo ejecutando: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Equipo de traducción al español, por favor lean antes de traducir # los siguientes documentos: # # - El proyecto de traducción de Debian al español # http://www.debian.org/intl/spanish/ # especialmente las notas y normas de traducción en # http://www.debian.org/intl/spanish/notas # # - La guía de traducción de po's de debconf: # /usr/share/doc/po-debconf/README-trans # o http://www.debian.org/intl/l10n/po-debconf/README-trans # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-4\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-07-03 18:05+0200\n" "Last-Translator: Camaleón \n" "Language-Team: Debian Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Equipo TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "Especifique el nombre del equipo donde se ejecuta el servidor de base de datos de TANGO." debian/po/pl.po0000644000000000000000000000216112167063434010565 0ustar # Translation of tango debconf templates to Polish. # Copyright (C) 2009 # This file is distributed under the same license as the tango package. # # Michał Kułach , 2012. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2012-02-16 12:52+0100\n" "Last-Translator: Michał Kułach \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Host TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Proszę podać nazwę komputera, na którym uruchomiony jest serwer bazy danych " "TANGO." debian/po/cs.po0000644000000000000000000000204212167063434010555 0ustar # Czech PO debconf template translation of tango. # Copyright (C) 2010 Michal Simunek # This file is distributed under the same license as the tango package. # Michal Simunek , 2011. # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-2\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-26 17:31+0200\n" "Last-Translator: Michal Simunek \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Hostitel pro TANGO" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Zadejte prosím název hostitele, kde běží databázový server TANGO." debian/po/ja.po0000644000000000000000000000202112167063434010537 0ustar # Copyright (C) 2011 Debian Science Maintainers # This file is distributed under the same license as tango package. # Hideki Yamane , 2011. # msgid "" msgstr "" "Project-Id-Version: tango 7.2.6+dfsg-2\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-30 17:26+0900\n" "Last-Translator: Hideki Yamane \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "TANGO のホスト:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "TANGO データベースサーバが動作しているホスト名を指定してください。" debian/po/da.po0000644000000000000000000000170312167063434010537 0ustar # Danish translation tango. # Copyright (C) 2011 tango & nedenstående oversættere. # This file is distributed under the same license as the tango package. # Joe Hansen , 2011. # msgid "" msgstr "" "Project-Id-Version: tango\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-30 17:30+01:00\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "TANGO-vært:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Angiv venligst navnet på værten hvor TANGO-databaseserveren kører." debian/po/POTFILES.in0000644000000000000000000000006112167063434011364 0ustar [type: gettext/rfc822deb] tango-common.templates debian/po/fr.po0000644000000000000000000000240412167063434010561 0ustar # Translation of tango debconf templates to French # Copyright (C) 2008 Picca Frédéric-emmanuel # Copyright (C) 2011 Debian French l10n team # This file is distributed under the same license as the tango package. # # Translators: # Picca Frédéric , 2008. # Christian Perrier , 2011. msgid "" msgstr "" "Project-Id-Version: tango 6.1.1\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2011-04-21 06:48+0200\n" "Last-Translator: Christian Perrier \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Serveur Tango :" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" "Veuillez indiquer le nom de la machine sur laquelle le serveur de bases de " "données de Tango est installé." debian/po/sk.po0000644000000000000000000000172412167063434010573 0ustar # Slovak translation for tango debconf template. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the tango package. # # Ivan Masár , 2012. # msgid "" msgstr "" "Project-Id-Version: tango\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: 2012-02-24 12:44+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "Hostiteľ TANGO:" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "Please specify the name of the host where the TANGO database server is running." msgstr "Prosím, zadajte názov hostiteľa, kde beží databázový server TANGO." debian/po/templates.pot0000644000000000000000000000153212167063434012335 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: tango@packages.debian.org\n" "POT-Creation-Date: 2009-08-12 11:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "TANGO host:" msgstr "" #. Type: string #. Description #: ../tango-common.templates:1001 msgid "" "Please specify the name of the host where the TANGO database server is " "running." msgstr "" debian/repack.local0000644000000000000000000000015512241203261011441 0ustar MANIFEST=0 SUFFIX=+dfsg rm lib/java/*.jar rm lib/java/jzmq/*.cpp rm lib/java/jzmq/*.h* rm -rf doc/src/layoutsdebian/liblog4tango5.install0000644000000000000000000000003412241203261013216 0ustar usr/lib/*/liblog4tango.so.* debian/libtango8-dev.install0000644000000000000000000000014012167063434013222 0ustar usr/include/tango/*.* usr/include/tango/idl usr/lib/*/libtango*.so usr/lib/*/pkgconfig/tango.pc debian/watch0000644000000000000000000000016412241203261010211 0ustar version=3 opts=dversionmangle=s/.dfsg// \ http://sf.net/tango-cs/tango-(.*)\.tar\.gz \ debian sh debian/repack.stub debian/liblog4tango5-doc.install0000644000000000000000000000011512241203261013761 0ustar usr/share/doc/log4tango/log4tango-*/api usr/share/doc/liblog4tango5-doc/html debian/tango-starter.install0000644000000000000000000000014212167063434013353 0ustar usr/bin/Starter usr/lib/tango usr/bin/notify_daemon usr/lib/tango usr/bin/notifd2db usr/lib/tango debian/tango-common.postinst0000644000000000000000000000166412167063434013406 0ustar #!/bin/sh CONFIGFILE=/etc/tangorc set -e . /usr/share/debconf/confmodule # Generate config file, if it doesn't exist. # An alternative is to copy in a template # file from elsewhere. if [ ! -e $CONFIGFILE ]; then echo "# Config file for my package" > $CONFIGFILE echo "TANGO_HOST=" >> $CONFIGFILE fi # Substitute in the values from the debconf db. # There are obvious optimizations possible here. # The cp before the sed ensures we do not mess up # the config file's ownership and permissions. db_get tango-common/tango-host TANGO_HOST=$RET cp -a -f $CONFIGFILE $CONFIGFILE.tmp # If the admin deleted or commented some variables but then set # them via debconf, (re-)add them to the conffile. test -z "$TANGO_HOST" || grep -Eq '^ *TANGO_HOST=' $CONFIGFILE || \ echo "TANGO_HOST=" >> $CONFIGFILE sed -e "s/^ *TANGO_HOST=.*/TANGO_HOST=$TANGO_HOST/" \ < $CONFIGFILE > $CONFIGFILE.tmp mv -f $CONFIGFILE.tmp $CONFIGFILE #DEBHELPER# debian/control0000644000000000000000000003030712241203261010565 0ustar Source: tango Maintainer: Debian Science Maintainers Uploaders: Picca Frédéric-Emmanuel Section: science Priority: extra Build-Depends: debhelper (>= 9), dh-autoreconf, doxygen, libcos4-dev, libmysqlclient-dev, libzmq3-dev (>= 3.2.2), po-debconf Standards-Version: 3.9.4 Vcs-Browser: http://git.debian.org/?p=debian-science/packages/tango.git Vcs-Git: git://git.debian.org/git/debian-science/packages/tango.git Homepage: http://www.tango-controls.org Package: liblog4tango5 Architecture: any Multi-Arch: same Section: libs Depends: ${misc:Depends}, ${shlibs:Depends} Pre-Depends: ${misc:Pre-Depends} Description: logging for TANGO - shared library Log for TANGO is a library of C++ classes for flexible logging to files, syslog and other destinations. It is modeled after the Log for C++ library (http://jakarta.apache.org/log4j/), staying as close to their API as is reasonable. . This package contains the files necessary for running applications that use the log4tango5 library. Package: liblog4tango5-dev Architecture: any Multi-Arch: same Section: libdevel Depends: ${misc:Depends}, liblog4tango5 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Conflicts: liblog4tango4-dev Description: logging for TANGO - development library Log for TANGO is a library of C++ classes for flexible logging to files, syslog and other destinations. It is modeled after the Log for C++ library (http://jakarta.apache.org/log4j/), staying as close to their API as is reasonable. . This package contains the log4tango5 development files. Package: liblog4tango5-dbg Architecture: any Multi-Arch: same Section: debug Depends: ${misc:Depends}, liblog4tango5 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Description: logging for TANGO - debug library Log for TANGO is a library of C++ classes for flexible logging to files, syslog and other destinations. It is modeled after the Log for C++ library (http://jakarta.apache.org/log4j/), staying as close to their API as is reasonable. . This package contains the debugging symbol for liblog4tango5. Package: liblog4tango5-doc Architecture: all Section: doc Depends: ${misc:Depends}, libjs-jquery Description: logging for TANGO - documentation Log for TANGO is a library of C++ classes for flexible logging to files, syslog and other destinations. It is modeled after the Log for C++ library (http://jakarta.apache.org/log4j/), staying as close to their API as is reasonable. . This package contains the documentation of the log4tango5 library. Package: libtango8 Architecture: any Multi-Arch: same Section: libs Depends: ${misc:Depends}, ${shlibs:Depends}, tango-common Pre-Depends: ${misc:Pre-Depends} Description: TANGO distributed control system - shared library TANGO is an object-oriented distributed control system using CORBA. In TANGO all objects are representations of devices, which can be on the same computer or distributed over a network. Communication between devices uses CORBA and can be synchronous, asynchronous or event driven. . The object model in TANGO supports methods, attributes and properties. TANGO provides an API which hides all the details of network access and provides object browsing, discovery, and security features. Permanent data is stored in a MySQL database. . TANGO is being actively developed as a collaborative effort between the ESRF (www.esrf.eu), Soleil (synchrotron-soleil.fr), Alba (www.cells.es), and Elettra institutes (www.elettra.trieste.it). . This package contains the files necessary for running TANGO applications. Package: libtango8-dev Architecture: any Multi-Arch: same Section: libdevel Depends: ${misc:Depends}, libcos4-dev, liblog4tango5-dev, libtango8 (= ${binary:Version}), libzmq3-dev Pre-Depends: ${misc:Pre-Depends} Conflicts: libtango7-dev Description: TANGO distributed control system - development library TANGO is an object-oriented distributed control system using CORBA. In TANGO all objects are representations of devices, which can be on the same computer or distributed over a network. Communication between devices uses CORBA and can be synchronous, asynchronous or event driven. . The object model in TANGO supports methods, attributes and properties. TANGO provides an API which hides all the details of network access and provides object browsing, discovery, and security features. Permanent data is stored in a MySQL database. . TANGO is being actively developed as a collaborative effort between the ESRF (www.esrf.eu), Soleil (synchrotron-soleil.fr), Alba (www.cells.es), and Elettra institutes (www.elettra.trieste.it). . This package contains the tango8 development files. Package: libtango8-dbg Architecture: any Multi-Arch: same Section: debug Depends: ${misc:Depends}, libtango8 (= ${binary:Version}) Pre-Depends: ${misc:Pre-Depends} Description: TANGO distributed control system - debug library TANGO is an object-oriented distributed control system using CORBA. In TANGO all objects are representations of devices, which can be on the same computer or distributed over a network. Communication between devices uses CORBA and can be synchronous, asynchronous or event driven. . The object model in TANGO supports methods, attributes and properties. TANGO provides an API which hides all the details of network access and provides object browsing, discovery, and security features. Permanent data is stored in a MySQL database. . TANGO is being actively developed as a collaborative effort between the ESRF (www.esrf.eu), Soleil (synchrotron-soleil.fr), Alba (www.cells.es), and Elettra institutes (www.elettra.trieste.it). . This package contains the debugging symbols for tango8. Package: libtango8-doc Architecture: all Section: doc Depends: ${misc:Depends} Description: TANGO distributed control system - documentation TANGO is an object-oriented distributed control system using CORBA. In TANGO all objects are representations of devices, which can be on the same computer or distributed over a network. Communication between devices uses CORBA and can be synchronous, asynchronous or event driven. . The object model in TANGO supports methods, attributes and properties. TANGO provides an API which hides all the details of network access and provides object browsing, discovery, and security features. Permanent data is stored in a MySQL database. . TANGO is being actively developed as a collaborative effort between the ESRF (www.esrf.eu), Soleil (synchrotron-soleil.fr), Alba (www.cells.es), and Elettra institutes (www.elettra.trieste.it). . This package contains the documentation for the libtango8 library. Package: libtango-tools Architecture: any Section: net Depends: ${misc:Depends}, ${shlibs:Depends} Replaces: tango-common (<< 7.2.6+dfsg-2) Description: TANGO distributed control system - common executable files This package provides shared files for the TANGO distributed control system, and sets up the required infrastructure. Package: tango-common Architecture: all Multi-Arch: foreign Section: net Depends: ${misc:Depends}, adduser Description: TANGO distributed control system - common files This package provides shared files for the TANGO distributed control system, and sets up the required infrastructure. It is for now an empty package Package: tango-db Architecture: any Section: net Depends: ${misc:Depends}, ${shlibs:Depends}, dbconfig-common, libtango-tools, lsb-base Recommends: mysql-client Description: TANGO distributed control system - database server TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package provides a TANGO database server using MySQL. Package: tango-db-dbg Architecture: any Section: debug Depends: ${misc:Depends}, tango-db (= ${binary:Version}) Description: TANGO distributed control system - database debug TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package contains the debugging symbols for tango-db. Package: tango-starter Architecture: any Section: net Depends: ${misc:Depends}, ${shlibs:Depends}, libtango-tools, lsb-base Suggests: omninotify Description: TANGO distributed control system - starter server TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package provides a TANGO device control server. It can start, stop, or report the status of other TANGO components. Package: tango-starter-dbg Architecture: any Section: debug Depends: ${misc:Depends}, tango-starter (= ${binary:Version}) Description: TANGO distributed control system - starter debug TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package contains the debugging symbols for tango-starter. Package: tango-accesscontrol Architecture: any Section: net Depends: ${misc:Depends}, ${shlibs:Depends}, libtango-tools, lsb-base, tango-db, tango-starter Description: TANGO distributed control system - accesscontrol server TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package provides a TANGO accesscontrol server. It can be used to manage the users and IP addresses that are permitted to access TANGO devices. Package: tango-accesscontrol-dbg Architecture: any Section: debug Depends: ${misc:Depends}, tango-accesscontrol (= ${binary:Version}) Description: TANGO distributed control system - accesscontrol debug TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package contains the debugging symbols for tango-accesscontrol. Package: tango-test Architecture: any Section: net Depends: ${misc:Depends}, ${shlibs:Depends}, tango-starter Description: TANGO distributed control system - test device TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package provides a TANGO device which implements all TANGO attribute types, and can be used for testing the installation. Package: tango-test-dbg Architecture: any Section: debug Depends: ${misc:Depends}, tango-test (= ${binary:Version}) Description: TANGO distributed control system - test debug TANGO is an object oriented distributed control system. It allows communication between TANGO device processes running on the same computer or distributed over the network. These processes can provide services to the control system all over the network, such as hardware control or data processing. . This package contains the debugging symbols for tango-test. debian/tango-common.preinst0000644000000000000000000000221612167063434013201 0ustar #!/bin/sh DATADIR=/var/lib/tango #DEBHELPER# # If we use NIS then errors should be tolerated. It's up to the # user to ensure that the tango user is correctly setup. # Beware that there are two ypwhich one of them needs the 2>/dev/null! if test -n "`which ypwhich 2>/dev/null`" && ypwhich >/dev/null 2>&1; then set +e fi # # Now we have to ensure the following state: # /etc/passwd: tango:x:100:101:Tango Server:/var/lib/tango:/bin/false # /etc/group: tango:x:101: # # Sadly there could any state be present on the system so we have to # modify everything carefully i.e. not doing a chown before creating # the user etc... # # creating tango group if he isn't already there if ! getent group tango >/dev/null; then # Adding system group: tango. addgroup --system tango >/dev/null fi # creating tango user if he isn't already there if ! getent passwd tango >/dev/null; then # Adding system user: tango. adduser \ --system \ --ingroup tango \ --home $DATADIR \ --gecos "Tango Server" \ --shell /bin/false \ tango >/dev/null fi # end of NIS tolerance zone set -e debian/libtango8.install0000644000000000000000000000003012167063434012444 0ustar usr/lib/*/libtango.so.* debian/liblog4tango5-doc.links0000644000000000000000000000013212241203261013432 0ustar /usr/share/javascript/jquery/jquery.js /usr/share/doc/liblog4tango5-doc/html/api/jquery.jsdebian/tango-starter.init.d0000644000000000000000000001154112167063434013077 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: tango-starter # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Should-Start: tango-db # Should-Stop: tango-db # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the tango control system starter daemon # Description: Provide a tango control system to start and stop other # tango control system devices. ### END INIT INFO # Author: Picca Frédéric-Emmanuel PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/tango DESC="Tango Control System - starter" NAME=tango-starter NAME_REAL=Starter CONFFILE=/etc/tangorc CANON_HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" '{print $2}' | awk -F "." '{print $1}'` DAEMON=/usr/lib/tango/$NAME_REAL DAEMON_ARGS=`hostname` PIDFILE=/var/run/$NAME.pid TAC_DEVICE=sys/access_control/1 # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started # first check for a running tango-database and if [ $CANON_HOST != "localhost" ] then tango_admin --ping-network 40 || return 2 fi tango_admin --ping-database 6 || return 2 # check if tac is enabled tango_admin --tac-enabled || tango_admin --ping-device $TAC_DEVICE 3 || return 2 # register the tango-starter if necessary tango_admin --check-device tango/admin/`hostname` || tango_admin --add-server Starter/`hostname` Starter tango/admin/`hostname` || return 2 start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME_REAL RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : debian/tango-common.templates0000644000000000000000000000026312167063434013513 0ustar Template: tango-common/tango-host Type: string Default: localhost:10000 _Description: TANGO host: Please specify the name of the host where the TANGO database server is running. debian/rules0000755000000000000000000000512412241203261010241 0ustar #!/usr/bin/make -f BUILDROOT=build PACKAGE := $(shell dpkg-parsechangelog | sed -n 's/^Source: //p') VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)+.*/\1/p') FULLDEBVERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*-.*\)/\1/p') CONFIGURE_OPTS := --with-omni=/usr --disable-dbcreate --disable-java --with-doxygen --disable-jpegmmx export DEB_LDFLAGS_MAINT_STRIP = -Wl,-Bsymbolic-functions sql: ./configure $(CONFIGURE_OPTS) # use this target to generate the dbconfig-common upgrade script once the debian/changelog is ok cat cppserver/database/stored_proc.sql\ cppserver/database/update_db.sql > debian/mysql/$(FULLDEBVERSION) $(MAKE) distclean override_dh_auto_configure: dh_auto_configure -- $(CONFIGURE_OPTS) override_dh_auto_install: dh_auto_install --destdir="$(CURDIR)/debian/tmp/" # install dbconfig-common scripts install -d debian/tmp/usr/share/dbconfig-common/data/tango-db/install install -p -m 644 $(CURDIR)/$(BUILDROOT)/cppserver/database/create_db.sql debian/tmp/usr/share/dbconfig-common/data/tango-db/install/mysql install -d debian/tmp/usr/share/dbconfig-common/data/tango-db/upgrade/mysql install -p -m 644 debian/mysql/* debian/tmp/usr/share/dbconfig-common/data/tango-db/upgrade/mysql # install scripts used during the configuration install -d debian/tmp/usr/share/tango-db install -p -m 644 $(CURDIR)/$(BUILDROOT)/cppserver/database/create_db_tables.sql debian/tmp/usr/share/tango-db/create_db_tables.sql install -p -m 644 $(CURDIR)/$(BUILDROOT)/cppserver/database/stored_proc.sql debian/tmp/usr/share/tango-db/stored_proc.sql install -p -m 600 $(CURDIR)/$(BUILDROOT)/cppserver/database/my.cnf debian/tmp/usr/share/tango-db/my.cnf override_dh_strip: dh_strip -plibtango8 --dbg-package=libtango8-dbg dh_strip -pliblog4tango5 --dbg-package=liblog4tango5-dbg dh_strip -ptango-db --dbg-package=tango-db-dbg dh_strip -ptango-starter --dbg-package=tango-starter-dbg dh_strip -ptango-accesscontrol --dbg-package=tango-accesscontrol-dbg dh_strip -ptango-test --dbg-package=tango-test-dbg dh_strip -a -Nlibtango8 -Nliblog4tango5 -Ntango-db -Ntango-starter -Ntango-accesscontrol -Ntango-test override_dh_installinit: # the tango-accesscontrol device must be started after the tango-db. dh_installinit -ptango-accesscontrol --update-rcd-params="defaults 25" # the tango-starter device must be started after the tango-db and the tango-accesscontrol. dh_installinit -ptango-starter --update-rcd-params="defaults 30" dh_installinit -a -Ntango-accesscontrol -Ntango-starter %: dh $@ --builddirectory=$(BUILDROOT) --with autoreconf .PHONY: get-orig-source debian/todo0000644000000000000000000000603512167063434010070 0ustar - ask the ESRf if they want tango7 + tango8 // installation for production - compilation / execution - add the diff --git a/lib/cpp/log4tango/Makefile.am b/lib/cpp/log4tango/Makefile.am index e0231d5..3d0ea84 100644 --- a/lib/cpp/log4tango/Makefile.am +++ b/lib/cpp/log4tango/Makefile.am @@ -1,5 +1,7 @@ SUBDIRS = config src include tests +ACLOCAL_AMFLAGS = -I m4 + if DOC SUBDIRS += doc endif @@ -20,7 +22,7 @@ EXTRA_DIST = log4tango.pc.in \ m4/PETI_PEDANTIC_GCC.m4 \ m4/AC_FUNC_SNPRINTF.m4 \ m4/AC_C_INT64_T.m4 - + pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = log4tango.pc - what about the configure check for zeromq but require zmq.hpp ? - what about Alessio patches for precise. - what about the upgrade tango db etc... j'ai mis une rule qui permet de generer ces scripts. - doxygen -u pour upgrader le fichier de configuration voir quelles version minimum de doxygen doit être supporté. - il y a des warning avec gcc4.7 et log4tango In file included from ../../../../../lib/cpp/log4tango/src/StringUtil.cpp:47:0: ../../../../../lib/cpp/log4tango/src/snprintf.c: In function 'int portable_vsnprintf(char*, size_t, const char*, va_list)': ../../../../../lib/cpp/log4tango/src/snprintf.c:957:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../../../../../lib/cpp/log4tango/src/snprintf.c:974:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../../../../../lib/cpp/log4tango/src/snprintf.c:983:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../../../../../lib/cpp/log4tango/src/snprintf.c:994:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] ../../../../../lib/cpp/log4tango/src/snprintf.c:1006:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] /usr/bin/doxygen warning: Tag `SHOW_DIRECTORIES' at line 473 of file Doxyfile has become obsolete. To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u" warning: Tag `HTML_ALIGN_MEMBERS' at line 802 of file Doxyfile has become obsolete. To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u" /home/picca/Debian/main/tango/tango/lib/cpp/log4tango/include/log4tango/LoggerStream.hh:92: warning: argument 'i' of command @param is not found in the argument list of log4tango::LoggerStream::operator<<(LOG4TANGO_UNUSED(LogInitiator &i)) /home/picca/Debian/main/tango/tango/lib/cpp/log4tango/include/log4tango/LoggerStream.hh:102: warning: argument 's' of command @param is not found in the argument list of log4tango::LoggerStream::operator<<(LOG4TANGO_UNUSED(LogSeparator &s)) /home/picca/Debian/main/tango/tango/lib/cpp/log4tango/include/log4tango/LoggerStream.hh:112: warning: argument 'endoflog' of command @param is not found in the argument list of log4tango::LoggerStream::operator<<(LOG4TANGO_UNUSED(ls_terminator endoflog)) - les pkgconfig files - fichier pas nettoyé pogo/templates/cpp/Makefiledebian/tango-db.postinst0000644000000000000000000000055112167063434012475 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule . /usr/share/dbconfig-common/dpkg/postinst.mysql # Create the .my.cnf file dbc_generate_include="template:/var/lib/tango/.my.cnf" dbc_generate_include_args="-o template_infile=/usr/share/tango-db/my.cnf" dbc_generate_include_owner="tango:tango" dbc_generate_include_perms="600" dbc_go tango-db $@ #DEBHELPER# debian/tango-test.install0000644000000000000000000000004012167063434012643 0ustar usr/bin/TangoTest usr/lib/tango debian/source/0000755000000000000000000000000012167063434010474 5ustar debian/source/format0000644000000000000000000000001412167063434011702 0ustar 3.0 (quilt) debian/tango-db.install0000644000000000000000000000011612167063434012255 0ustar usr/bin/DataBaseds usr/lib/tango usr/share/tango-db usr/share/dbconfig-common debian/tango-accesscontrol.init.d0000644000000000000000000001105412167063434014254 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: tango-accesscontrol # Required-Start: $remote_fs $syslog tango-db # Required-Stop: $remote_fs $syslog tango-db # Should-Start: mysql # Should-Stop: mysql # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the tango control system accesscontrol daemon # Description: Provide a tango control system accesscontrol daemon # that enforce the tango security policy. ### END INIT INFO # Author: Picca Frédéric-Emmanuel PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/tango DESC="Tango Control System - accesscontrol" NAME=tango-accesscontrol NAME_REAL=TangoAccessControl CONFFILE=/etc/tangorc CANON_HOST=`grep TANGO_HOST $CONFFILE | awk -F ":" '{print $1}' | awk -F "=" '{print $2}' | awk -F "." '{print $1}'` DAEMON=/usr/lib/tango/$NAME_REAL DAEMON_ARGS="1" PIDFILE=/var/run/$NAME.pid # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started if [ $CANON_HOST != "localhost" ] then tango_admin --ping-network 4 || return 2 fi export SUPER_TANGO=true tango_admin --ping-database 6 || return 2 start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --chuid tango:tango --background \ --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/5/KILL/5 --pidfile $PIDFILE --exec $DAEMON RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/5/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : debian/tango-common.postrm0000644000000000000000000000036112167063434013040 0ustar #!/bin/sh set -e if [ "$1" = "purge" ]; then rm -f /etc/tangorc if which ucf >/dev/null 2>&1; then ucf --purge /etc/tangorc fi if which ucfr >/dev/null; then ucfr --purge tango-common /etc/tangorc fi fi #DEBHELPER#