[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: -added handbook entries for messenger
From: |
gnunet |
Subject: |
[gnunet] branch master updated: -added handbook entries for messenger |
Date: |
Thu, 18 Mar 2021 22:44:27 +0100 |
This is an automated email from the git hooks/post-receive script.
thejackimonster pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new e185a5565 -added handbook entries for messenger
e185a5565 is described below
commit e185a556536bab6d294a4efa66ce6e36d424e9f8
Author: TheJackiMonster <thejackimonster@gmail.com>
AuthorDate: Thu Mar 18 19:38:11 2021 +0100
-added handbook entries for messenger
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-fixed handbook entries
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-integrating libgnunetmessenger_common into libgnunetmessenger
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-added image to messenger section in handbook
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
doc/handbook/chapters/developer.texi | 215 ++++++++++++++
doc/handbook/chapters/keyconcepts.texi | 25 ++
doc/handbook/chapters/user.texi | 147 ++++++++++
doc/handbook/images/messenger_room.png | Bin 0 -> 76244 bytes
doc/handbook/images/messenger_room.svg | 501 +++++++++++++++++++++++++++++++++
po/POTFILES.in | 22 +-
src/messenger/Makefile.am | 39 +--
7 files changed, 912 insertions(+), 37 deletions(-)
diff --git a/doc/handbook/chapters/developer.texi
b/doc/handbook/chapters/developer.texi
index 8bc8c8005..abd128e3b 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -83,6 +83,7 @@ new chapters, sections or insightful comments.
* REST Subsystem::
* RPS Subsystem::
* TRANSPORT-NG Subsystem::
+* MESSENGER Subsystem::
@end menu
@node Developer Introduction
@@ -9705,3 +9706,217 @@ other peers. The semantics of the backchannel message
are up to the
communicators which use them.
TRANSPORT may fail transmitting backchannel messages, and TRANSPORT will not
attempt to retransmit them.
+
+@cindex MESSENGER Subsystem
+@cindex MESSENGER
+@cindex messenger
+@node MESSENGER Subsystem
+@section MESSENGER Subsystem
+
+The MESSENGER subsystem is responsible for secure end-to-end communication in
+groups of nodes in the GNUnet overlay network. MESSENGER builds on the CADET
+subsystem which provides a reliable and secure end-to-end communication
between
+the nodes inside of these groups.
+
+Additionally to the CADET security benefits, MESSENGER provides following
+properties designed for application level usage:
+
+@itemize @bullet
+@item MESSENGER provides integrity by signing the messages with the users
+ provided ego
+@item MESSENGER adds (optional) forward secrecy by replacing the key pair of
the
+ used ego and signing the propagation of the new one with old one
(chaining
+ egos)
+@item MESSENGER provides verification of a original sender by checking against
+ all used egos from a member which are currently in active use (active
use
+ depends on the state of a member session)
+@item MESSENGER offsers (optional) decentralized message forwarding between all
+ nodes in a group to improve availability and prevent MITM-attacks
+@item MESSENGER handles new connections and disconnections from nodes in the
+ group by reconnecting them preserving an efficient structure for message
+ distribution (ensuring availability and accountablity)
+@item MESSENGER provides replay protection (messages can be uniquely
identified
+ via SHA-512, include a timestamp and the hash of the last message)
+@item MESSENGER allows detection for dropped messages by chaining them
(messages
+ refer to the last message by their hash) improving accountability
+@item MESSENGER allows requesting messages from other peers explicitly to
ensure
+ availibility
+@item MESSENGER provides confidentiality by padding messages to few different
+ sizes (512 bytes, 4096 bytes, 32768 bytes and maximal message size from
+ CADET)
+@item MESSENGER adds (optional) confidentiality with ECDHE to exchange and use
+ symmetric encryption, encrypting with both AES-256 and Twofish but
+ allowing only selected members to decrypt (using the receivers ego for
+ ECDHE)
+@end itemize
+
+Also MESSENGER provides multiple features with privacy in mind:
+
+@itemize @bullet
+@item MESSENGER allows deleting messages from all peers in the group by the
+ original sender (uses the MESSENGER provided verification)
+@item MESSENGER allows using the publically known anonymous ego instead of any
+ unique identifying ego
+@item MESSENGER allows your node to decide between acting as host of the used
+ messaging room (sharing your peer's identity with all nodes in the
group)
+ or acting as guest (sharing your peer's identity only with the nodes you
+ explicitly open a connection to)
+@item MESSENGER handles members independantly of the peer's identity making
+ forwarded messages indistinguishable from directly received ones (
+ complicating the tracking of messages and identifying its origin)
+@item MESSENGER allows names of members being not unique (also names are
+ optional)
+@item MESSENGER does not include information about the selected receiver of an
+ explicitly encrypted message in its header, complicating it for other
+ members to draw conclusions from communication partners
+@end itemize
+
+@menu
+* libgnunetmessenger::
+* Member sessions::
+@end menu
+
+@node libgnunetmessenger
+@subsection libgnunetmessenger
+
+The MESSENGER API (defined in @file{gnunet_messenger_service.h}) allows P2P
+applications built using GNUnet to communicate with specified kinds of messages
+in a group. It provides applications the ability to send and receive encrypted
+messages to any group of peers participating in GNUnet in a decentralized way (
+without even knowing all peers's identities).
+
+MESSENGER delivers messages to other peers in "rooms". A room uses a variable
+amount of CADET "channels" which will all be used for message distribution.
Each
+channel can represent an outgoing connection opened by entering a room with
+@code{GNUNET_MESSENGER_enter_room} or an incoming connection if the room was
+opened before via @code{GNUNET_MESSENGER_open_room}.
+
+@image{images/messenger_room.png}
+
+To enter a room you have to specify the "door" (peer's identity of a peer
which
+has opened the room) and the key of the room (which is identical to a CADET
+"port"). To open a room you have to specify only the key to use. When opening
a
+room you automatically distribute a PEER-message sharing your peer's identity
in
+the room.
+
+Entering or opening a room can also be combined in any order. In any case you
+will automatically get a unique member ID and send a JOIN-message notifying
+others about your entry and your public key from your selected ego.
+
+The ego can be selected by name with the initial
@code{GNUNET_MESSENGER_connect}
+besides setting a (identity-)callback for each change/confirmation of the used
+ego and a (message-)callback which gets called every time a message gets sent
or
+received in the room. Once the identity-callback got called you can check your
+used ego with @code{GNUNET_MESSENGER_get_key} providing only its public key.
The
+function returns NULL if the anonymous ego is used. If the ego should be
+replaced with a newly generated one, you can use
@code{GNUNET_MESSENGER_update}
+to ensure proper chaining of used egos.
+
+Also once the identity-callback got called you can check your used name with
+@code{GNUNET_MESSENGER_get_name} and potentially change or set a name via
+@code{GNUNET_MESSENGER_set_name}. A name is for example required to create a
new
+ego with @code{GNUNET_MESSENGER_update}. Also any change in ego or name will
+automatically be distributed in the room with a NAME- or KEY-message
+respectively.
+
+To send a message a message inside of a room you can use
+@code{GNUNET_MESSENGER_send_message}. If you specify a selected contact as
+receiver, the message gets encrypted automatically and will be sent as
PRIVATE-
+message instead.
+
+To request a potentially missed message or to get a specific message after its
+original call of the message-callback, you can use
+@code{GNUNET_MESSENGER_get_message}. Additionally once a message was
distributed
+to application level and the message-callback got called, you can get the
+contact respresenting a message's sender respectively with
+@code{GNUNET_MESSENGER_get_sender}. This allows getting name and the public
key
+of any sender currently in use with @code{GNUNET_MESSENGER_contact_get_name}
+and @code{GNUNET_MESSENGER_contact_get_key}. It is also possible to iterate
+through all current members of a room with
+@code{GNUNET_MESSENGER_iterate_members} using a callback.
+
+To leave a room you can use @code{GNUNET_MESSENGER_close_room} which will also
+close the rooms connections once all applications on the same peer have left
+the room. Leaving a room will also send a LEAVE-message closing a member
session
+on all connected peers before any connection will be closed. Leaving a room is
+however not required for any application to keep your member session open
+between multiple sessions of the actual application.
+
+Finally, when an application no longer wants to use CADET, it should call
+@code{GNUNET_MESSENGER_disconnect}. You don't have to explicitly close the
used
+rooms or leave them.
+
+Here is a little summary to the kinds of messages you can send manually:
+
+@menu
+* MERGE-message::
+* INVITE-message::
+* TEXT-message::
+* FILE-message::
+* DELETE-message::
+@end menu
+
+@node MERGE-message
+@subsubsection MERGE-message
+
+MERGE-messages will generally be sent automatically to reduce the amount of
+parallel chained messages. This is necessary to close a member session for
+example. You can also send MERGE-messages manually if required to merge two
+chains of messages.
+
+@node INVITE-message
+@subsubsection INVITE-message
+
+INVITE-messages can be used to invite other members in a room to a different
+room, sharing one potential door and the required key to enter the room. This
+kind of message is typically sent as encrypted PRIVATE-message to selected
+members because it doesn't make much sense to invite all members from one room
+to another considering a rooms key doesn't specify its usage.
+
+@node TEXT-message
+@subsubsection TEXT-message
+
+TEXT-messages can be used to send simple text-based messages and should be
+considered as being in readable form without complex decoding. The text has to
+end with a NULL-terminator character and should be in UTF-8 encoding for most
+compatibility.
+
+@node FILE-message
+@subsubsection FILE-message
+
+FILE-messages can be used to share files inside of a room. They do not contain
+the actual file being shared but its original hash, filename, URI to download
+the file and a symmetric key to decrypt the downloaded file.
+
+It is recommended to use the FS subsystem and the FILE-messages in combination.
+
+@node DELETE-message
+@subsubsection DELETE-message
+
+DELETE-messages can be used to delete messages selected with its hash. You can
+also select any custom delay relative to the time of sending the
DELETE-message.
+Deletion will only be processed on each peer in a room if the sender is
+authorized.
+
+The only information of a deleted message which being kept will be the chained
+hashes connecting the message graph for potential traversion. For example the
+check for completion of a member session requires this information.
+
+@node Member sessions
+@subsection Member sessions
+
+A member session is a triple of the room key, the member ID and the public key
+of the member's ego. Member sessions allow that a member can change their ID
or
+their ego once at a time without loosing the ability to delete old messages or
+identifying the original sender of a message. On every change of ID or EGO a
+session will be marked as closed. So every session chain will only contain one
+open session with the current ID and public key.
+
+If a session is marked as closed the MESSENGER service will check from the
first
+message opening a session to its last one closing the session for completion.
If
+a the service can confirm that there is no message still missing which was
sent
+from the closed member session, it will be marked as completed.
+
+A completed member session is not able to verify any incoming message to
ensure
+forward secrecy preventing others from using old stolen egos.
+
diff --git a/doc/handbook/chapters/keyconcepts.texi
b/doc/handbook/chapters/keyconcepts.texi
index eb95dbf78..f429997bf 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -152,6 +152,7 @@ and @pxref{Deniability}.
@menu
* How file-sharing achieves Anonymity::
+* How messaging provides Anonymity::
@end menu
Providing anonymity for users is the central goal for the anonymous
@@ -231,6 +232,30 @@ GAP --- practical anonymous networking. In Proceedings of
Designing Privacy Enhancing Technologies, 2003.
(@uref{https://git.gnunet.org/bibliography.git/plain/docs/aff.pdf,
https://git.gnunet.org/bibliography.git/plain/docs/aff.pdf})
+@cindex How messaging provides Anonymity
+@node How messaging provides Anonymity
+@subsection How messaging provides Anonymity
+
+While the file-sharing tries to achieve anonymity through hiding actions in
+other traffic, the messaging service provides a weaker form of protection
+against identification.
+
+The messaging service allows the use of an anonymous ego for the signing and
+verification process of messages instead of a unique ego. This anonymous ego is
+a publically known key pair which is shared between all peers in GNUnet.
+
+Using this ego only ensures that individual messages alone can't identify its
+sender inside of a messenger room. It should be clarified that the route of
+the traffic for each message can still be tracked to identify the senders peer
+inside of a messenger room if the threat agent controls certain peers hosting
+the room.
+
+Also opening a room in the messenger service will potentially match your peer
+identity with the internal member identity from the messenger service. So
+despite using the anonymous ego you can reveal your peer identity. This means
+to decrease the chance of being identified, it is recommended to enter rooms
but
+you should not open them for others.
+
@cindex Deniability
@node Deniability
@section Deniability
diff --git a/doc/handbook/chapters/user.texi b/doc/handbook/chapters/user.texi
index 5d5d2fe14..a25dd8bd3 100644
--- a/doc/handbook/chapters/user.texi
+++ b/doc/handbook/chapters/user.texi
@@ -28,6 +28,7 @@ always welcome.
* The GNU Name System::
* reclaimID Identity Provider::
* Using the Virtual Public Network::
+* Using the GNUnet Messenger::
@end menu
@node Start and stop GNUnet
@@ -2323,3 +2324,149 @@ service offered by that peer, you can create an IP
tunnel to
that peer by specifying the peer's identity, service name and
protocol (--tcp or --udp) and you will again receive an IP address
that will terminate at the respective peer's service.
+
+@node Using the GNUnet Messenger
+@section Using the GNUnet Messenger
+
+The GNUnet Messenger subsystem allows decentralized message-based
+communication inside of so called rooms. Each room can be hosted by
+a variable amount of peers. Every member of a room has the possibility
+to host the room on its own peer. A peer allows any amount of members
+to join a room. The amount of members in a room is not restricted.
+
+Messages in a room will be distributed between all peers hosting the
+room or being internally (in context of the messenger service) connected
+to a hosting peer. All received or sent messages will be stored on any
+peer locally which is hosting the respective room or is internally
+connected to such a hosting peer.
+
+The Messenger service is built on the CADET subsystem to make internal
+connections between peers using a reliable and encrypted transmission.
+Additionally the service uses a discrete padding to few different sizes.
+So kinds of messages and potential content can't be identified by the
+size of traffic from any attacker being unable to break the encryption
+of the transmission layer.
+
+Another feature is additional end-to-end encryption for selected messages
+which uses the public key of another member (the receiver) to encrypt
+the message. Therefore it is ensured that only the selected member can
+read its content. This will also use additional padding.
+
+@menu
+* Current state::
+* Entering a room::
+* Opening a room::
+* Messaging in a room::
+* Private messaging::
+@end menu
+
+@node Current state
+@subsection Current state
+
+Currently there is only a simplistic CLI application available to use the
+messenger service. You can use this application with the
+@command{gnunet-messenger} command.
+
+This application was designed for testing purposes and it does not provide
+full functionality in the current state. It is planned to replace this CLI
+application in later stages with a fully featured one using a client-side
+library designed for messenger applications.
+
+@node Entering a room
+@subsection Entering a room
+
+You can enter any room by its ROOMKEY and any PEERIDENTITY of a hosting peer.
+Optionally you can provide any IDENTITY which can represent a local ego by
+its name.
+
+@example
+$ gnunet-messenger [-e IDENTITY] -d PEERIDENTITY -r ROOMKEY
+@end example
+
+A PEERIDENTITY gets entered in encoded form. You can get your own peer ID by
+using the @command{gnunet-peerinfo} command:
+
+@example
+$ gnunet-peerinfo -s
+@end example
+
+A ROOMKEY gets entered in readable text form. The service will then hash the
+entered ROOMKEY and use the result as shared secret for transmission through
+the CADET submodule. You can also optionally leave out the '-r' paramter and
+the ROOMKEY to use the zeroed hash instead.
+
+If no IDENTITY is provided you will not send any name to others, you will be
+referred as "anonymous" instead and use the anonymous ego. If you provide any
+IDENTITY a matching ego will be used to sign your messages. If there is no
+matching ego you will use the anonymous ego instead. The provided IDENTITY will
+be distributed as your name for the service in any case.
+
+@node Opening a room
+@subsection Opening a room
+
+You can open any room in a similar way to entering it. You just have to leave
+out the '-d' parameter and the PEERIDENTITY of the hosting peer.
+
+@example
+$ gnunet-messenger [-e IDENTITY] -r ROOMKEY
+@end example
+
+Providing ROOMKEY and IDENTITY is identical to entering a room. Opening a room
+will also make your peer to a host of this room. So others can enter the room
+through your peer if they have the required ROOMKEY and your peer ID.
+
+If you want to use the zeroed hash as shared secret key for the room you can
+also leave it out as well:
+
+@example
+$ gnunet-messenger
+@end example
+
+@node Messaging in a room
+@subsection Messaging in a room
+
+Once joined a room by entering it or opening it you can write text-based
+messages which will be distributed between all internally conntected peers.
All
+sent messages will be displayed in the same way as received messages.
+
+This relates to the internal handling of sent and received messages being
mostly
+identical on application layer. Every handled message will be represented
+visually depending on its kind, content and sender. A sender can usually be
+identified by the encoded member ID or their name.
+
+@example
+[17X37K] * 'anonymous' says: "hey"
+@end example
+
+@node Private messaging
+@subsection Private messaging
+
+As referred in the introduction the service allows sending private messages
with
+additional end-to-end encryption. These messages will be visually represented
+by messages of the kind 'PRIVATE' in case they can't be decrypted with your
used
+ego. Members who can't decrypt the message can potentially only identify its
+sender but they can't identify its receiver.
+
+@example
+[17X37K] ~ message: PRIVATE
+@end example
+
+If they can be decrypted they will appear as their secret message instead
+but marked visually.
+
+@example
+[17X37K] ** 'anonymous' says: "hey"
+@end example
+
+Currently you can only activate sending such encrypted text messages instead
of
+usual text messages by adding the '-p' parameter:
+
+@example
+$ gnunet-messenger [-e IDENTITY] -d PEERIDENTITY -r ROOMKEY -p
+@end example
+
+Notice that you can only send such encrypted messages to members who use an ego
+which is not publically known as the anonymous ego to ensure transparency. If
+any user could decrypt these messages they would not be private. So as receiver
+of such messages the IDENTITY is required and it has to match a local ego.
+
diff --git a/doc/handbook/images/messenger_room.png
b/doc/handbook/images/messenger_room.png
new file mode 100644
index 000000000..8b3590cf8
Binary files /dev/null and b/doc/handbook/images/messenger_room.png differ
diff --git a/doc/handbook/images/messenger_room.svg
b/doc/handbook/images/messenger_room.svg
new file mode 100644
index 000000000..6bd8d425c
--- /dev/null
+++ b/doc/handbook/images/messenger_room.svg
@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="598.63586mm"
+ height="519.30621mm"
+ viewBox="0 0 598.63586 519.30621"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
+ sodipodi:docname="messenger_room.svg"
+ inkscape:export-filename="./messenger_room.png"
+ inkscape:export-xdpi="50"
+ inkscape:export-ydpi="50">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="1617.1523"
+ inkscape:cy="893.76504"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer3"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ fit-margin-top="10"
+ fit-margin-bottom="10"
+ fit-margin-right="10"
+ fit-margin-left="10"
+ lock-margins="true"
+ inkscape:window-width="2560"
+ inkscape:window-height="1376"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline"
+ transform="translate(192.28493,120.40152)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:3.365;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 26.206579,156.45999 97.162749,89.570022 199.7759,120.1979
181.87666,217.7128 89.324169,236.23068 Z"
+ id="path915" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 181.87666,217.7128 66.26913,94.14707"
+ id="path1063" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.665,
5.33;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 309.85632,121.37022 199.7759,120.1979"
+ id="path1065" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 248.9298,18.638951 199.7759,120.1979"
+ id="path1067" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.665;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M -76.608095,107.38658 26.206579,156.45999"
+ id="path1069" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Layer 4"
+ style="display:inline"
+ transform="translate(192.28493,120.40152)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m -137.76937,77.365523 61.161275,30.021057"
+ id="path1225" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M -20.546549,199.60834 26.206579,156.45999"
+ id="path1227" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 58.558255,290.12036 89.324168,236.23068 125.2681,294.74464"
+ id="path1229" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 260.56143,374.91842 -12.41564,-63.05855 67.7611,18.91507"
+ id="path1231" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 237.39119,194.89545 181.87666,217.7128"
+ id="path1233" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 199.7759,120.1979 177.22801,54.184954"
+ id="path1235" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 309.85632,121.37022 61.96594,-12.96636"
+ id="path1237" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 248.9298,18.638951 229.25585,-38.546188"
+ id="path1239" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 55.073787,29.185372 42.088961,60.38465"
+ id="path1241" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.865,
3.73;stroke-dashoffset:0;stroke-opacity:1"
+ d="M -76.608095,107.38658 -138.56518,130.6705"
+ id="path1243" />
+ </g>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(192.28493,120.40152)">
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833"
+ cx="96.685127"
+ cy="88.539452"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-3"
+ cx="195.51556"
+ cy="120.85936"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-5"
+ cx="183.12799"
+ cy="214.72444"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-6"
+ cx="92.202576"
+ cy="236.97336"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-2"
+ cx="26.400755"
+ cy="158.9449"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-3-1"
+ cx="309.42667"
+ cy="120.44005"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-3-2"
+ cx="248.5799"
+ cy="19.344702"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-3-7"
+ cx="-74.235405"
+ cy="107.76899"
+ r="20" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-3-0"
+ cx="249.89246"
+ cy="310.73776"
+ r="20" />
+ <path
+
style="display:inline;fill:none;stroke:#000000;stroke-width:1.865;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 318.33679,228.47452 61.96594,-12.96636"
+ id="path1237-2" />
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.265,
12.53;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
+ id="path833-3-1-8"
+ cx="317.90714"
+ cy="227.54434"
+ r="20" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.82,
5.64;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
+ id="rect1071-62-9"
+ width="28.700562"
+ height="22.81683"
+ x="366.24039"
+ y="204.47328" />
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="315.72601"
+ y="231.38942"
+ id="text1307-7-3-3-94-3"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-6-6"
+ x="315.72601"
+ y="231.38942"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">J</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Layer 3"
+ transform="translate(192.28493,120.40152)">
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071"
+ width="28.700562"
+ height="22.81683"
+ x="41.152424"
+ y="17.00181" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-6"
+ width="28.700562"
+ height="22.81683"
+ x="163.24538"
+ y="40.93095" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-0"
+ width="28.700562"
+ height="22.81683"
+ x="217.0302"
+ y="-48.476658" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-62"
+ width="28.700562"
+ height="22.81683"
+ x="357.75992"
+ y="97.368996" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-61"
+ width="28.700562"
+ height="22.81683"
+ x="221.61465"
+ y="183.89601" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-8"
+ width="28.700562"
+ height="22.81683"
+ x="302.37604"
+ y="319.27646" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-7"
+ width="28.700562"
+ height="22.81683"
+ x="244.56342"
+ y="364.67789" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-9"
+ width="28.700562"
+ height="22.81683"
+ x="43.508121"
+ y="279.02939" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-2"
+ width="28.700562"
+ height="22.81683"
+ x="110.22536"
+ y="283.7334" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-02"
+ width="28.700562"
+ height="22.81683"
+ x="-35.267426"
+ y="187.65363" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-3"
+ width="28.700562"
+ height="22.81683"
+ x="-151.39322"
+ y="66.069321" />
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.82;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.82,
5.64;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
+ id="rect1071-3-7"
+ width="28.700562"
+ height="22.81683"
+ x="-154.87178"
+ y="119.88663" />
+ <g
+ id="g1600"
+ transform="translate(-2.9470331,-51.038598)">
+ <circle
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.78727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="path833-6-5"
+ cx="-161.17276"
+ cy="336.83234"
+ r="12.09027" />
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="-140.58682"
+ y="342.66354"
+ id="text1307"><tspan
+ sodipodi:role="line"
+ id="tspan1305"
+ x="-140.58682"
+ y="342.66354"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">Peer</tspan></text>
+ </g>
+ <g
+ id="g1594"
+ transform="translate(-2.9470331,-54.443235)">
+ <rect
+
style="opacity:0.999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.96946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke
markers fill"
+ id="rect1071-9-9"
+ width="20.044254"
+ height="15.935102"
+ x="-171.19489"
+ y="365.45282" />
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="-140.78059"
+ y="379.28705"
+ id="text1307-7"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6"
+ x="-140.78059"
+ y="379.28705"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">Application</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="90.401619"
+ y="94.499252"
+ id="text1307-7-3"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0"
+ x="90.401619"
+ y="94.499252"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">A</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="189.63115"
+ y="126.74821"
+ id="text1307-7-3-3"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0"
+ x="189.63115"
+ y="126.74821"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">C</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="178.83551"
+ y="220.59999"
+ id="text1307-7-3-3-9"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-2"
+ x="178.83551"
+ y="220.59999"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">F</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="85.772736"
+ y="242.86221"
+ id="text1307-7-3-3-5"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-4"
+ x="85.772736"
+ y="242.86221"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">G</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="19.824577"
+ y="164.8027"
+ id="text1307-7-3-3-0"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-5"
+ x="19.824577"
+ y="164.8027"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">H</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="303.32053"
+ y="126.29786"
+ id="text1307-7-3-3-94"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-6"
+ x="303.32053"
+ y="126.29786"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">D</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="243.4848"
+ y="25.202511"
+ id="text1307-7-3-3-92"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-24"
+ x="243.4848"
+ y="25.202511"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">B</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="247.20479"
+ y="316.59558"
+ id="text1307-7-3-3-7"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-7"
+ x="247.20479"
+ y="316.59558"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">I</tspan></text>
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="-79.01123"
+ y="113.64454"
+ id="text1307-7-3-3-54"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-0-0-8"
+ x="-79.01123"
+ y="113.64454"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">E</tspan></text>
+ <g
+ id="g1589"
+ transform="translate(-4.3496791,-53.330521)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.62782;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.62782,
5.25564;stroke-dashoffset:1.05113;stroke-opacity:1"
+ d="m -176.62134,400.99519 30.89715,0.38084"
+ id="path1521" />
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="-137.64647"
+ y="406.95029"
+ id="text1307-7-2"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-1"
+ x="-137.64647"
+ y="406.95029"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">Inactive</tspan></text>
+ </g>
+ <g
+ id="g1583"
+ transform="translate(-4.3496791,-49.693534)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:2.62782;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.05113;stroke-opacity:1"
+ d="m -176.62134,420.37019 30.89715,0.38084"
+ id="path1521-0" />
+ <text
+ xml:space="preserve"
+
style="font-size:18.1632px;line-height:34.0561px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.340559"
+ x="-138.78186"
+ y="426.42728"
+ id="text1307-7-0"><tspan
+ sodipodi:role="line"
+ id="tspan1305-6-5"
+ x="-138.78186"
+ y="426.42728"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.1632px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.340559">Active</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+
style="font-size:50.8px;line-height:95.25px;font-family:Primer;-inkscape-font-specification:Primer;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="42.997746"
+ y="-77.287262"
+ id="text1604"><tspan
+ sodipodi:role="line"
+ id="tspan1602"
+ x="42.997746"
+ y="-77.287262"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Linux
Libertine Capitals';-inkscape-font-specification:'Linux Libertine
Capitals';stroke-width:0.264583">Room</tspan></text>
+ </g>
+</svg>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b2fa88d73..dbbb68bcc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -207,25 +207,33 @@ src/json/json_mhd.c
src/messenger/gnunet-messenger.c
src/messenger/gnunet-service-messenger.c
src/messenger/gnunet-service-messenger_basement.c
-src/messenger/gnunet-service-messenger_contact.c
+src/messenger/gnunet-service-messenger_ego_store.c
src/messenger/gnunet-service-messenger_handle.c
src/messenger/gnunet-service-messenger_list_handles.c
src/messenger/gnunet-service-messenger_list_messages.c
+src/messenger/gnunet-service-messenger_member.c
+src/messenger/gnunet-service-messenger_member_session.c
+src/messenger/gnunet-service-messenger_member_store.c
src/messenger/gnunet-service-messenger_message_handle.c
src/messenger/gnunet-service-messenger_message_kind.c
src/messenger/gnunet-service-messenger_message_recv.c
src/messenger/gnunet-service-messenger_message_send.c
src/messenger/gnunet-service-messenger_message_store.c
+src/messenger/gnunet-service-messenger_operation.c
+src/messenger/gnunet-service-messenger_operation_store.c
src/messenger/gnunet-service-messenger_room.c
src/messenger/gnunet-service-messenger_service.c
src/messenger/gnunet-service-messenger_tunnel.c
-src/messenger/gnunet-service-messenger_util.c
src/messenger/messenger_api.c
src/messenger/messenger_api_contact.c
+src/messenger/messenger_api_contact_store.c
src/messenger/messenger_api_handle.c
src/messenger/messenger_api_list_tunnels.c
src/messenger/messenger_api_message.c
src/messenger/messenger_api_room.c
+src/messenger/messenger_api_util.c
+src/messenger/testing_messenger_barrier.c
+src/messenger/testing_messenger_setup.c
src/my/my.c
src/my/my_query_helper.c
src/my/my_result_helper.c
@@ -412,6 +420,13 @@ src/testbed/testbed_api_underlay.c
src/testing/gnunet-testing.c
src/testing/list-keys.c
src/testing/testing.c
+src/testing/testing_api_cmd_batch.c
+src/testing/testing_api_cmd_hello_world.c
+src/testing/testing_api_cmd_hello_world_birth.c
+src/testing/testing_api_loop.c
+src/testing/testing_api_trait_cmd.c
+src/testing/testing_api_trait_process.c
+src/testing/testing_api_traits.c
src/topology/friends.c
src/topology/gnunet-daemon-topology.c
src/transport/gnunet-communicator-tcp.c
@@ -508,6 +523,7 @@ src/util/dnsparser.c
src/util/dnsstub.c
src/util/getopt.c
src/util/getopt_helpers.c
+src/util/gnunet-base32.c
src/util/gnunet-config-diff.c
src/util/gnunet-config.c
src/util/gnunet-crypto-tvg.c
@@ -550,7 +566,5 @@ src/vpn/vpn_api.c
src/zonemaster/gnunet-service-zonemaster-monitor.c
src/zonemaster/gnunet-service-zonemaster.c
src/fs/fs_api.h
-src/include/gnunet_identity_service.h
-src/include/gnunet_messenger_service.h
src/testbed/testbed_api.h
src/testbed/testbed_api_operations.h
diff --git a/src/messenger/Makefile.am b/src/messenger/Makefile.am
index 1ebfbe5ed..2bb9ad922 100644
--- a/src/messenger/Makefile.am
+++ b/src/messenger/Makefile.am
@@ -25,35 +25,23 @@ bin_PROGRAMS = \
gnunet-messenger
lib_LTLIBRARIES = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(EXP_LIB)
-libgnunetmessenger_common_la_SOURCES = \
+libgnunetmessenger_la_SOURCES = \
+ messenger_api.c \
messenger_api_ego.h \
messenger_api_contact.c messenger_api_contact.h \
messenger_api_contact_store.c messenger_api_contact_store.h \
messenger_api_message.c messenger_api_message.h \
messenger_api_list_tunnels.c messenger_api_list_tunnels.h \
- messenger_api_util.c messenger_api_util.h
-libgnunetmessenger_common_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la \
- $(top_builddir)/src/cadet/libgnunetcadet.la \
- $(top_builddir)/src/identity/libgnunetidentity.la \
- $(XLIB) \
- $(LTLIBINTL)
-libgnunetmessenger_common_la_LDFLAGS = \
- $(GN_LIB_LDFLAGS) \
- -version-info 0:0:0
-
-libgnunetmessenger_la_SOURCES = \
- messenger_api.c \
+ messenger_api_util.c messenger_api_util.h \
messenger_api_handle.c messenger_api_handle.h \
messenger_api_room.c messenger_api_room.h
libgnunetmessenger_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/cadet/libgnunetcadet.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
- libgnunetmessenger_common.la \
$(XLIB) \
$(LTLIBINTL)
libgnunetmessenger_la_LDFLAGS = \
@@ -63,10 +51,8 @@ libgnunetmessenger_la_LDFLAGS = \
gnunet_messenger_SOURCES = \
gnunet-messenger.c
gnunet_messenger_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
- $(top_builddir)/src/util/libgnunetutil.la \
- $(top_builddir)/src/identity/libgnunetidentity.la
+ $(top_builddir)/src/util/libgnunetutil.la
gnunet_messenger_LDFLAGS = \
$(GN_LIBINTL)
@@ -91,11 +77,10 @@ gnunet_service_messenger_SOURCES = \
gnunet-service-messenger_room.c gnunet-service-messenger_room.h \
gnunet-service-messenger_tunnel.c gnunet-service-messenger_tunnel.h
gnunet_service_messenger_LDADD = \
+ libgnunetmessenger.la \
$(top_builddir)/src/util/libgnunetutil.la \
$(top_builddir)/src/cadet/libgnunetcadet.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
- libgnunetmessenger_common.la \
- libgnunetmessenger.la \
$(GN_LIBINTL)
check_PROGRAMS = \
@@ -121,7 +106,6 @@ endif
test_messenger_api_SOURCES = \
test_messenger.c
test_messenger_api_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testing/libgnunettesting.la \
$(top_builddir)/src/util/libgnunetutil.la
@@ -129,7 +113,6 @@ test_messenger_api_LDADD = \
test_messenger_anonymous_SOURCES = \
test_messenger_anonymous.c
test_messenger_anonymous_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testing/libgnunettesting.la \
$(top_builddir)/src/util/libgnunetutil.la
@@ -139,7 +122,6 @@ test_messenger_sync_client_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_sync_client_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -150,7 +132,6 @@ test_messenger_async_client_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_async_client_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -161,7 +142,6 @@ test_messenger_worst_client_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_worst_client_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -172,7 +152,6 @@ test_messenger_sync_p2p_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_sync_p2p_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -183,7 +162,6 @@ test_messenger_async_p2p_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_async_p2p_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -194,7 +172,6 @@ test_messenger_worst_p2p_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_worst_p2p_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -205,7 +182,6 @@ test_messenger_server_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_server_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -216,7 +192,6 @@ test_messenger_growth_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_growth_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -227,7 +202,6 @@ test_messenger_ring_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_ring_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
@@ -238,7 +212,6 @@ test_messenger_adapt_SOURCES = \
testing_messenger_barrier.c testing_messenger_barrier.h \
testing_messenger_setup.c testing_messenger_setup.h
test_messenger_adapt_LDADD = \
- libgnunetmessenger_common.la \
libgnunetmessenger.la \
$(top_builddir)/src/testbed/libgnunettestbed.la \
$(top_builddir)/src/testing/libgnunettesting.la \
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: -added handbook entries for messenger,
gnunet <=