Howto to intercommunicate processes in different(remote) machines through DBus
Introduction
In this post I’m going to try to connect two processes in different machines through DBus. The method is a little bit complex, so be patient if you try.
Also is to advert that this has been the result of 3 days of tests (reference1). So maybe this method may be improved with time and use reference2.
Tools (The actors)
- dbus
- gabriel
- socat
- libssh
- SSH
- your apps
Debian official packages are dbus libssh-2 socat
gabriel is not part of Debian yet (but I’ve build one for myself)
Knowledge (Actors curriculum)
In this section I will describe the basics about the tools we are going to use.
DBus. Extracted from DBus page:
D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a “single instance” application or daemon, and to launch applications and daemons on demand when their services are needed.
D-Bus supplies both a system daemon (for events such as “new hardware device added” or “printer queue changed”) and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, or through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories.
Gabriel is a simple utility to enable D-Bus clients to connect to a D-Bus daemon running on a remote machine, through SSH.
This is the main piece of this puzzle. If you are interested in understanding how it works you should take a look at socat and libssh. As I’ve had to take a look at code, and make some modifications, you should read it as a punishment.
Extracted from socat man page:
socat - Multipurpose relay (SOcket CAT)
socat is a command line based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (see address types), and because lots of address options may be applied to the streams, socat can be used for many different purposes. It might be one of the tools that one ‘has already needed´.
Libssh. Extracted from libssh page:
The SSH library was designed to be used by programmers needing a working SSH implementation by the mean of a library. The complete control of the client is made by the programmer. With libssh, you can remotely execute programs, transfer files, use a secure and transparent tunnel for your remote programs. With its Secure FTP implementation, you can play with remote files easily, without third-party programs others than libcrypto (from openssl).
You should know about SSH and about your application.
Architecture
Local host will run gabriel and your application.
Remove host will need a running SSH server, a running dbus server and will need socat installed and ready to use.
We need to run gabriel, that will act as a server that will connect our host to the remote host through SSH. After that gabriel will use this SSH connection to intercommunicate our local application with remote DBus applications by using socat.
Howto (Main action)
At the moment I’ve only achieved to connect a process using session-bus, I’m still testing until I get connection through system-bus which was my initial purpose.
After reading next information, you will be able to connect using session bus and system bus.
As I commented somewhere else, I’ve made some modifications on gabriel code. I needed some common parameters as SSH port (my virtualbox testing environment ), better help explanations or add a verbose output.
Gabriel establish a connection with the remote SSH and by socat commands it communicates with the remote DBus “environment”. You should administrate SSH parameters and Dbus parameters to gabriel.
user@machine:~/svn/gabriel/gabriel$ src/gabriel –help
Usage:
gabriel [OPTION...] - Gabriel
Help Options:
-?, –help Show help options
Application Options:
-h, –host=HOSTNAME Hostname or IP of the remote host
-p, –port-ssh=PORT-SSH SSH port on the remote host
-u, –username=USERNAME SSH username on the remote host
-w, –password=PASSWORD SSH password on the remote host
-m, –method=DBUS_TRANSPORT_METHOD The D-Bus transport method to use (TCP, UNIX, abstract-UNIX)
-b, –bind=HOSTNAME The bind-address to listen for D-Bus client connections on
-d, –bus-address=BUS_ADDRESS The DBus session bus address of the remote D-Bus daemon
-t, –port-tcp=PORT-TCP The TCP port to listen for DBus client connections on
-v, –verbose=VERBOSE Set verbosity level (3, 2, 1, 0, -1)=(packet,protocol,functions,important,none)
We have to put special attention to -d, –bus-address=BUS_ADDRESS because this info must be gotten from the REMOTE machine.
That address is the one used by processes to communicate through DBUS. It’s something “internal” and automatically done when you use DBus API/library. I’m going to show you where to get it.
DBUS_SESSION_BUS_ADDRESS, DBUS_SYSTEM_BUS_ADDRESS, DBUS_SYSTEM_BUS_DEFAULT_ADDRESS
Again, this info should be gotten from REMOTE machine.
At the moment I don’t know any nice command where to get this info.
We have two main options of DBus buses. System and Session (more info in DBus page).
If you need SESSION bus address, you can choose what it better fits you:
- You can can get it from process environment
- You can stole it from any other process suspicious from being involved in DBus activities…
- You can create your own dbus-daemon (which, actually, I don’t know if it uses it’s own BUS_ADDRESS)
If you need SYSTEM bus address, you can choose what it better fits you:
- You can can get it from process environment. If it’s not defined, take a look at /etc/dbus-1/system.conf where you should locate a string like <listen>unix:path=/var/run/dbus/system_bus_socket</listen>
- You can stole it from any other process suspicious from being involved in DBus activities…
Examples:
// C++ code
#include <stdio.h>
#include <stdlib.h>
char * env;
// env = getenv (”DBUS_SESSION_BUS_ADDRESS”);
env = getenv (”DBUS_SYSTEM_BUS_ADDRESS”);
if (env!=NULL){
cout << env << endl;
}
user@REMOTE-machine:~ $ grep -z BUS_ADDRESS /proc/2047/environ
HALD_RUNNER_DBUS_ADDRESS=unix:abstract=/var/run/hald/dbus-bonbZtoykd,guid=8b5aff565de0dc7c467fef414832dd98
This command gives you a dbus-daemon in your session with the one you can contact.
user@REMOTE-machine:~ $ dbus-daemon –session –print-address
unix:abstract=/tmp/dbus-j2npbTXDwD,guid=d69f66d43e354de5733e4a1a48335bd6
user@REMOTE-machine:~ $ grep unix /etc/dbus-1/system.conf
<listen>unix:path=/var/run/dbus/system_bus_socket</listen>
Howto (Main action): Back to local host
Those ugly unix:stri:ngs/asdkaj/numbers we have seen is what we need for -d, –bus-address=BUS_ADDRESS.
See a session example:
user@machine:~/svn/gabriel/gabriel$ src/gabriel -h localhost -p 2222 -d unix:abstract=/tmp/dbus-j2npbTXDwD,guid=d69f66d43e354de5733e4a1a48335bd6
Listening to D-Bus clients on: “unix:abstract=/tmp/gabriel”
bla ble blu bla
See a system example:
user@machine:~/svn/gabriel/gabriel$ src/gabriel -h localhost -p 2222 -d unix:path=/var/run/dbus/system_bus_socket
Listening to D-Bus clients on: “unix:abstract=/tmp/gabriel”
bla ble blu bla
The moment we have or gabriel server running we (may have nothing) need to set DBUS_XXX_BUS_ADDRESS. Many apps would use, or have, this environment variable to connect to a DBus instance and intercommunicate with other process.
This is is easy, DBUS_XXX_BUS_ADDRESS should be the address gabriel shows few instants after being launched.
When we have defined this environment variable (in command line) we can execute our app, and it will happily communicate with the remote DBus world.
Example:
user@machine:~/svn/dbusmm/trunk/examples/glib$ export DBUS_SESSION_BUS_ADDRESS=”unix:abstract=/tmp/gabriel”
user@machine:~/svn/dbusmm/trunk/examples/glib$ ./dbus-browser
dbus-browser is a program that uses a session bus.
Curiosity: DBus protocol messages interchanged
Modifying a couple of lines in gabriel can let you see DBus raw protocol messages. It’s a didactic info.
If you enable verbose code at least at level 2, you will get raw DBus protocol messages.
My modifications and hacks
Code will be publish under GLKM project page.
Links and references
- dbus site
- gabriel site
- socat site
- libssh site
- reference 1. (informational note, it had implied jumping into gabriel, libssh, and dbus code and testing with a virtualbox machine)
- reference 2. (personal note, take a look at “Securing traffic between two socat instances using SSL” article in socat page)
“Le mètre cube de sperme” by Philippe Meste
SPERMCUBE, it’s… collecting 1 cubic meter of sperm preserved frozen in a transparent cube. A collective artwork, international, open to all, universal. PARTICIPATE!
If you think you’re prepared, click to read more… (Continuar leyendo…)
Etiquetas: arte, donor, esperma, philippe meste, shareholder, spermcube, sperme, websiteGoogle daily traffic patterns
Weeks ago I watch a talk, starring Robert Love and Google and Open Source.
What it was funny was the moment he showed some Google daily traffic patterns. He, as part of the audience, suggested the siesta was maybe responsible of that pattern in Spain.
Well, Spain is now more cosmopolitan and very few people take siesta daily. Although many people take more than one hour at midday meal. I think this is a most real explanation.
It should have been better comparing U.S.A. and Europe. Don’t you think?
Etiquetas: daily traffic patterns, google, open source, robert love, siesta, spain60 años
Lo siento por algunos, pero no puedo usar más palabras.
Enlace al vídeo conmemorativo 60 aniversario del club de baloncesto Estudiantes.
Durante el descanso del partido del pasado fin de semana, 3 de febrero, se visionó en las pantallas, por sorpresa, para algunos como yo, este vídeo. Una sonora ovación tuvo lugar a su finalización.
Yo soy de los que se quiere comprar el libro conmemorativo del 60 aniversario para leerlo y conservarlo junto alguna de mis “intifadas”, del gigantes de la copa del rey y de un ejemplar de los que se repartían en el palacio en el que sale en portada mijailov….
Etiquetas: 60 años, 60 años historia, aniversario estudiantes, conmemoracion 60 aniversario, Estudiantes, historia estudiantesPerdidos. Lost. Descargas de capítulos de la 4ª Temporada
Otro año más, la serie continua.
Esta serie que tiene algo. Uno no sabe qué, pero lo tiene. Te engancha. A pesar de que a mí cada vez me cuesta más engancharme a la puta mierda de la televisión que se emite en las horas que a mi me apetecería ver. Pese a ello, Perdidos puede conmigo y me hace olvidar la basura que me hace pensar tan mal de los que ven la tele y los que la programan.
Poco a poco iremos desvelando, mediante cada capítulo, las sorpresas que nos tienen reservadas los cabrones que llevan a cabo esta serie. Porque son unos cabrones :D.
Gracias a los avisos de lostzilla puedo ir avanzando los nombres de los primeros capítulos de esta cuarta temporada. Gracia a ellos disponemos de subtítulos.
~ Cuarta Temporada/Fourth Season ~
Aquí los enlaces a los vídeos. Con las voces en inglés. Podéis descargar los vídeos ya con vuestro programa P2P favorito.
- Perdidos - Lost - Episodio 04 x 01: The beginning of the End (El principio del fin).HDTV.XOR.avi
- Perdidos - Lost - Episodio 04 x 02: Confirmed dead (Muerte confirmada).HDTV.XOR.avi
- Perdidos - Lost - Episodio 04 x 03: The Economist (El economista).HDTV.XOR.avi
- Perdidos - Lost - Episodio 04 x 04: Eggtown.HDTV.XOR.avi
- Perdidos - Lost - Episodio 04 x 05: The constant (La constante).avi
- Perdidos - Lost - Episodio 04 x 06: The other woman (La otra mujer).avi
- Perdidos - Lost - Episodio 04 x 07: Ji Yeon.HDTV.DOT.avi
- Perdidos - Lost - Episodio 04 x 08: Meet Kevin Johnson (Conoce a Kevin Johnson).HDTV.DOT.avi
- Perdidos - Lost - Episodio 04 x 09: The shape of things to come (Lo que queda por venir).HDTV.2HD.avi
- Perdidos - Lost - Episodio 04×10: Something nice back home (Algo agradable allá en casa).avi
- Perdidos - Lost - Episodio 04×11: Cabin Fever (Claustrofobia).HDTV.2HD.avi
- Perdidos - Lost - Episodio 04 x 12: There’s no place like home I (Como en casa en ningún sitio I).HDTV.FOV.avi
- Perdidos - Lost - Episodio 04×13 y 04×14: There’s no place like home II (Como en casa en ningún sitio II y III).HDTV.2HD.avi
~ Cuarta Temporada. Los subtítulos/The subtitles. ~
Aquí los enlaces a los subtítulos en inglés y en español. Porque para gustos se hicieron los colores.
- Perdidos - Lost - Episodio 04 x 01: The beginning of the End (El principio del fin).HDTV.XOR.english.srt
- Perdidos - Lost - Episodio 04 x 01: The beginning of the End (El principio del fin).HDTV.XOR.español.srt
- Perdidos - Lost - Episodio 04 x 02: Confirmed dead (Muerte confirmada).HDTV.XOR.english.srt
- Perdidos - Lost - Episodio 04 x 02: Confirmed dead (Muerte confirmada).HDTV.XOR.español.srt
- Perdidos - Lost - Episodio 04 x 03: The Economist (El economista).HDTV.XOR.english.srt
- Perdidos - Lost - Episodio 04 x 03: The Economist (El economista).HDTV.XOR.español.srt
- Perdidos - Lost - Episodio 04 x 04: Eggtown.HDTV.XOR.english.srt
- Perdidos - Lost - Episodio 04 x 04: Eggtown.HDTV.XOR.español.srt
- Perdidos - Lost - Episodio 04 x 05: The constant (La constante).HDTV.2HD.english.srt
- Perdidos - Lost - Episodio 04 x 05: The constant (La constante).HDTV.2HD.español.srt
- Perdidos - Lost - Episodio 04 x 06: The other woman (La otra mujer).PROPER-FoV.HDTV.english.srt
- Perdidos - Lost - Episodio 04 x 06: The other woman (La otra mujer).PROPER-FoV.HDTV.español.srt
- Perdidos - Lost - Episodio 04 x 07: Ji Yeon.english.HDTV.DOT.srt
- Perdidos - Lost - Episodio 04 x 07: Ji Yeon.español.HDTV.DOT.srt
- Perdidos - Lost - Episodio 04 x 08: Meet Kevin Johnson (Conoce a Kevin Johnson).english.srt
- Perdidos - Lost - Episodio 04 x 08: Meet Kevin Johnson (Conoce a Kevin Johnson).español.srt
- Perdidos - Lost - Episodio 04 x 09: The shape of things to come (Lo que queda por venir).HDTV.2HD.español.srt
- Perdidos - Lost - Episodio 04 x 09: The shape of things to come (Lo que queda por venir).HDTV.2HD.english.srt
- Perdidos - Lost - Episodio 04×10: Something nice back home (Algo agradable allá en
casa).español.srt - Perdidos - Lost - Episodio 04×10: Something nice back home (Algo agradable allá en
casa).english.srt - Perdidos - Lost - Episodio 04×11: Cabin Fever (Claustrofobia).HDTV.2HD.español.srt
- Perdidos - Lost - Episodio 04×11: Cabin Fever (Claustrofobia).HDTV.2HD.english.srt
- Perdidos - Lost - Episodio 04 x 12: There’s no place like home I (Como en casa en ningun sitio I).HDTV.FOV.english.srt
- Perdidos - Lost - Episodio 04 x 12: There’s no place like home I (Como en casa en ningun sitio I).HDTV.FOV.español.srt
- Perdidos - Lost - Episodio 04×13 y 04×14: There’s no place like home II (Como en casa en ningún sitio II y III).HDTV.2HD.english.srt
- Perdidos - Lost - Episodio 04×13 y 04×14: There’s no place like home II (Como en casa en ningún sitio II y III).HDTV.2HD.español.srt
Referencias y enlaces:
- www.lostzilla.net (información y subtítulos gracias a ellos)
www.foroperdidos.com- hilo del foro de lost 4º temporada en tusseries.com
El Hierro empieza su conversión en isla con 100% energías renovables
Tras cerca de una década en despachos y estudios de ingeniería, el proyecto para transformar la isla canaria de El Hierro en un lugar autosuficiente que pueda abastecerse de energía 100% renovable se ha puesto por fin en marcha. La inminente adjudicación del parque eólico marca el comienzo de un conjunto de obras valoradas en 54 millones de euros que deben garantizar el suministro de electricidad ‘limpia’ a sus 10.600 habitantes para el año 2010.
[...]
La obra principal consta de dos elementos: un pequeño parque eólico de 10 megavatios (MW) de potencia y dos grandes depósitos de agua construidos a diferentes alturas (con una diferencia de 700 metros de desnivel). La pega de los aerogeneradores es que puede que no haya viento cuando se requiera la electricidad o, al contrario, que las palas se muevan justamente cuando menos se necesite. La idea consiste en aprovechar la energía eólica que no se vaya a consumir para bombear agua al tanque superior desde el inferior. De esta forma, se puede disponer de electricidad de forma inmediata y continuada con sólo abrir la salida del depósito superior para crear una corriente hacia abajo que sea aprovechada por varias turbinas.
“Se trata de almacenar agua en altura para dejarla caer cuando no haya viento y se necesite electricidad”, simplifica Piernavieja, que indica que en caso de necesidad los 500.000 m3 de capacidad del tanque superior (ubicado dentro de un cráter impermeabilizado) permitirían garantizar el suministro de luz de toda la isla durante una semana. “Explicarlo es fácil, pero crear un sistema aislado como este todo renovable no resulta tan sencillo, pues no existe precedente”.
La idea de que esta isla de 278 km2 hoy en día completamente dependiente del petróleo consiguiese autoabastecerse sólo con energías ‘limpias’ surgió allá por el año 1997 dentro de un plan de desarrollo sostenible elaborado por el Cabildo. Como detalla este técnico del ITC, luego el proyecto fue tomando cuerpo al entrar en un programa europeo para promover el uso de 100% de energías renovables entre distintas islas del continente. Este es el caso de Samso, una pequeña ínsula danesa de cerca de 4.000 habitantes que ya consiguió este objetivo. “Lo nuestro es más complicado, porque Samso no deja de estar conectada al continente con un cable por si le falla el suministro”, recalca el canario. El Hierro estará aislada.
[...]
Claro que esto no bastaría para poder prescindir por completo de los combustibles fósiles y que los petroleros que ahora abastecen a las islas canarias dejasen de llegar un día a El Hierro. Para ello, se necesitaría suplir también el carburante con el que se rellena el depósito de los coches, una cuestión que el ITC trata de resolver a partir de distintas alternativas que estudia en estos momentos: hidrógeno, biogás, biocarburantes…
“Esperamos tener listo para mayo un coche de hidrógeno”, adelanta el técnico canario, que asegura que reciben muchas visitas de otras islas del mundo para conocer el proyecto. “Somos un laboratorio energético”.
Referencias y enlaces
- El Hierro será la primera isla del mundo que se abastecerá al 100% con energías renovables
- La noticia integra es de [soitu.es] El Hierro empieza su conversión en isla con 100% energías renovables
A la venta por Internet las entradas de la ‘Final Four’ de Madrid 2008
Las entradas para la ‘Final Four’ de la Euroliga, que se disputará en el Palacio de los Deportes de la Comunidad de Madrid, del 2 al 4 de mayo, se podrán adquirir desde este martes a través del web de la competición.
Los precios oscilan entre 116 y 580 euros (gastos de gestión no incluidos), e incluyen los cuatro encuentros: las dos semifinales, el partido por el tercer puesto y la final. No se van a vender entradas para un sólo día.
Las entradas estarán disponibles en tiempo real gracias al servicio de entradas.com y los aficionados podrán elegir los asientos deseados y pagarlos en el momento.
Una vez realizado el desembolso, los seguidores tendrán la opción de recibirlas por servicio de mensajería o recogerlas en el propio pabellón; bien en las terminales instaladas por el servicio de entradas.com’, a partir del 1 de abril, o en las taquillas del recinto, desde el 28 de abril.
Calendario y horarios
Semifinal
| Viernes, 2 de Mayo de 2008 |
|---|
| Semifinal (18.00h.) |
| Semifinal (21.00h.) |
Final
| Domingo, 4 de Mayo de 2008 |
|---|
| Tercer y cuarto puesto (18.00h.) |
| Final (21.00h.) |
Referencias y enlaces
- Salen a la venta por Internet las entradas de la ‘Final Four’ de la Euroliga
- Final Four página web para la venta de entradas
- Final Four, Madrid 2008
Copa del Rey de Vitoria 2008: Calendario y horarios
Aquí os presento los horarios y retransmisiones para las cuatro jornadas de la Copa del Rey, que se disputará en Vitoria del 7 al 10 de febrero.
El pabellón en que se disputarán todos los partidos es el del equipo vitoriano, el Fernando Buesa Arena.
Cuartos de final
| Jueves, 7 de febrero de 2008 |
|---|
| C: TAU Vitoria 78 - 71 Unicaja Málaga (19.00h., FORTA) |
| B: Bilbao Basket 70 - 69 FC Barcelona (21.30h., TVE) |
| Viernes, 8 de febrero de 2008 |
| A: DKV Joventut 84 - 59 Pamesa Valencia (17.45h., FORTA) |
| D: Real Madrid 73 - 60 Girona (20.00h., TVE) |
Semifinal
| Sábado, 9 de febrero de 2008 |
|---|
| TAU Vitoria 68 - 66 Bilbao Basket (17.30h., FORTA) |
| DKV Joventut 81 - 76 Real Madrid (20.00h., TVE) |
Final
| Domingo, 10 de febrero de 2008 |
|---|
| TAU Vitoria 80 - 82 DKV Joventut (18.00h., TVE) |
DKV Joventut CAMPEÓN
Rudy Fernández MVP
Referencias y enlaces:
- Compra de abonos y entradas
- Toda la información oficial sobre la Copa del Rey 2008
- Fernando Buesa Arena
Estos son los resultados para ...










Últimos comentarios