Obsolete
/
libipc-old
Archived
3
0
Fork 0

readme + filename convention for diags

more_to_read
Philippe PITTOLI 2017-09-10 00:30:45 +02:00
parent 42658c5e5f
commit 2487bd6ad9
7 changed files with 113 additions and 136 deletions

8
diags/README.md Normal file
View File

@ -0,0 +1,8 @@
# writing convention
Each diagram filename should be formatted as:
seq-service.diag: message sequence diagram
pkt-service-info.pktdiag: message format
See the currently available files as examples.

View File

@ -7,9 +7,10 @@ fi
echo "font : $FONT" echo "font : $FONT"
for i in *\.diag DIAG=diag
for i in *\.$DIAG
do do
PNG=$(echo ${i} | sed "s/diag$/pdf/") PNG=$(echo ${i} | sed "s/$DIAG$/pdf/")
if [ ! -f ${PNG} ] || [ $(stat -c "%X" ${PNG}) -lt $(stat -c "%X" ${i}) ] if [ ! -f ${PNG} ] || [ $(stat -c "%X" ${PNG}) -lt $(stat -c "%X" ${i}) ]
then then

View File

@ -1,13 +1,13 @@
packetdiag { packetdiag {
colwidth = 64 colwidth = 64
node_height = 60 node_height = 60
node_width = 15 node_width = 15
default_fontsize = 16; // default value is 11 default_fontsize = 16; // default value is 11
// basic header (type then length) // basic header (type then length)
0-7: type\n1 byte [color = "#CCEECC"] 0-7: type\n1 byte [color = "#CCEECC"]
8-23: length\n2 bytes [color = "#CCEECC"] 8-23: length\n2 bytes [color = "#CCEECC"]
// payload // payload
24-63: END\n3 bytes [color = "#CCCCEE"] 24-63: END\n3 bytes [color = "#CCCCEE"]
} }

View File

@ -1,13 +1,13 @@
packetdiag { packetdiag {
colwidth = 64 colwidth = 64
node_height = 60 node_height = 60
node_width = 15 node_width = 15
default_fontsize = 16; // default value is 11 default_fontsize = 16; // default value is 11
// basic header (type then length) // basic header (type then length)
0-7: type\n1 byte [color = "#CCEECC"] 0-7: type\n1 byte [color = "#CCEECC"]
8-23: length\n2 bytes [color = "#CCEECC"] 8-23: length\n2 bytes [color = "#CCEECC"]
// payload // payload
24-63: service name\nn bytes [color = "#CCCCEE"] 24-63: service name\nn bytes [color = "#CCCCEE"]
} }

View File

@ -1,13 +1,13 @@
packetdiag { packetdiag {
colwidth = 64 colwidth = 64
node_height = 60 node_height = 60
node_width = 15 node_width = 15
default_fontsize = 16; // default value is 11 default_fontsize = 16; // default value is 11
// basic header (type then length) // basic header (type then length)
0-7: type\n1 byte [color = "#CCEECC"] 0-7: type\n1 byte [color = "#CCEECC"]
8-23: length\n2 bytes [color = "#CCEECC"] 8-23: length\n2 bytes [color = "#CCEECC"]
// payload // payload
24-63: environment variable (one per packet)\nex: REMOTED_URI=tcp://user:pass@host.example.com:9000\nn bytes [color = "#CCCCEE"] 24-63: environment variable (one per packet)\nex: REMOTED_URI=tcp://user:pass@host.example.com:9000\nn bytes [color = "#CCCCEE"]
} }

View File

@ -1,38 +1,38 @@
diagram { diagram {
edge_length = 300; edge_length = 300;
default_fontsize = 16; // default value is 11 default_fontsize = 16; // default value is 11
span_height = 8; // default value is 40 span_height = 8; // default value is 40
node_height = 60; // default value is 40 node_height = 60; // default value is 40
activation = none; activation = none;
// Numbering edges automaticaly // Numbering edges automaticaly
autonumber = True; autonumber = True;
// Change note color // Change note color
default_note_color = lightblue; default_note_color = lightblue;
client [label = "client\nlocal"]; client [label = "client\nlocal"];
remoted [label = "remoted\nlocal"]; remoted [label = "remoted\nlocal"];
transportd [label = "transportd\n(ex: tcpd)\nlocal"]; transportd [label = "transportd\n(ex: tcpd)\nlocal"];
transportd2 [label = "transportd\n(ex: tcpd)\nremote"]; transportd2 [label = "transportd\n(ex: tcpd)\nremote"];
remoted2 [label = "remoted\nremote"]; remoted2 [label = "remoted\nremote"];
service [label = "service\nremote"]; service [label = "service\nremote"];
client -> remoted [label = "service-name (ex: pongd)"]; client -> remoted [label = "service-name (ex: pongd)"];
client -> remoted [label = "REMOTED_VAR=URI client -> remoted [label = "REMOTED_VAR=URI
ex: tcp://user:password@example.com:9000", fontsize=13]; ex: tcp://user:password@example.com:9000", fontsize=13];
client -> remoted [label = "END (mark the end of the options)" client -> remoted [label = "END (mark the end of the options)"
, rightnote = "Remoted: authenticates, authorizes, determines the right transport daemon and , rightnote = "Remoted: authenticates, authorizes, determines the right transport daemon and
applies forwarding rules", fontsize=13]; applies forwarding rules", fontsize=13];
remoted -> transportd [label = "connect URI + service name"]; remoted -> transportd [label = "connect URI + service name"];
transportd -> transportd2 [label = "connection init transportd -> transportd2 [label = "connection init
service name + URI"]; service name + URI"];
transportd2 -> remoted2 [label = "connection request transportd2 -> remoted2 [label = "connection request
service name + URI"]; service name + URI"];
remoted2 -> transportd2 [label = "authorization (yes|no)"]; remoted2 -> transportd2 [label = "authorization (yes|no)"];
transportd2 -> transportd [label = "connection established"]; transportd2 -> transportd [label = "connection established"];
transportd -> remoted [label = "socket"]; transportd -> remoted [label = "socket"];
remoted -> client [label = "socket"]; remoted -> client [label = "socket"];
client -> service [label = "connection"]; client -> service [label = "connection"];
} }

View File

@ -1,57 +1,25 @@
# remoted # remoted
This service creates a path on the relevent remote location, going through anything network-related: TCP, UDP, HTTP, ... This service creates a path on the relevent remote location, going through anything network-related: TCP, UDP, HTTP, ...
# TODO # TODO
* authorizations * authorizations
* code the -d option * code the -d option
# Connection ### authorizations
Client -> Remoted: service to contact (ex: pongd) The idea is to have a simple configuration file for authentication of remote connections, such as:
format: [u8 (action); u16 (length); XXX (options)] table dynusers # dynamic user table
Client -> Remoted: action (connect|listen) + options clients = { "client123", alice.example.com, john@doe.com }
localclients = { pamuser1, <dynusers> }
format: [u8 (action); u16 (length); XXX (options)]
level1services = { pongd, weather }
example 1: action = connect => options = uri (ex: udp://example.com:5000)
format: [u8 (1); u16 (22); udp://example.com:5000] ifext = enp0s25
pass in on $ifext from any for all to local services $level1services
example 2: action = listen => options = uri (ex: tcp://localhost:9000) pass out on $ifext from local for $localclients to any services $level1services
format: [u8 (2); u16 (20); tcp://localhost:9000]
block all
(optional) Client -> Remoted: options (environement variables)
example: action = options => option = VAR=X
format: [u8 (4); u16 (20); VAR=X]
The client sends all options this way, one at a time.
This sequence of messages is ended with the following message.
Client -> Remoted: END
format: [u8 (5)]
Remoted -> Client: unix socket
In the case the application has environement variables to pass to the remoted service,
### authorizations
The idea is to have a simple configuration file for authentication of remote connections, such as:
table dynusers # dynamic user table
clients = { "client123", alice.example.com, john@doe.com }
localclients = { pamuser1, <dynusers> }
level1services = { pongd, weather }
ifext = enp0s25
pass in on $ifext from any for all to local services $level1services
pass out on $ifext from local for $localclients to any services $level1services
block all