Archived
3
0

readme + filename convention for diags

This commit is contained in:
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"
for i in *\.diag
DIAG=diag
for i in *\.$DIAG
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}) ]
then

View File

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

View File

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

View File

@ -1,13 +1,13 @@
packetdiag {
colwidth = 64
node_height = 60
node_width = 15
default_fontsize = 16; // default value is 11
// basic header (type then length)
0-7: type\n1 byte [color = "#CCEECC"]
8-23: length\n2 bytes [color = "#CCEECC"]
// payload
24-63: environment variable (one per packet)\nex: REMOTED_URI=tcp://user:pass@host.example.com:9000\nn bytes [color = "#CCCCEE"]
}
packetdiag {
colwidth = 64
node_height = 60
node_width = 15
default_fontsize = 16; // default value is 11
// basic header (type then length)
0-7: type\n1 byte [color = "#CCEECC"]
8-23: length\n2 bytes [color = "#CCEECC"]
// payload
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 {
edge_length = 300;
default_fontsize = 16; // default value is 11
span_height = 8; // default value is 40
node_height = 60; // default value is 40
activation = none;
// Numbering edges automaticaly
autonumber = True;
// Change note color
default_note_color = lightblue;
client [label = "client\nlocal"];
remoted [label = "remoted\nlocal"];
transportd [label = "transportd\n(ex: tcpd)\nlocal"];
transportd2 [label = "transportd\n(ex: tcpd)\nremote"];
remoted2 [label = "remoted\nremote"];
service [label = "service\nremote"];
client -> remoted [label = "service-name (ex: pongd)"];
client -> remoted [label = "REMOTED_VAR=URI
ex: tcp://user:password@example.com:9000", fontsize=13];
client -> remoted [label = "END (mark the end of the options)"
, rightnote = "Remoted: authenticates, authorizes, determines the right transport daemon and
applies forwarding rules", fontsize=13];
remoted -> transportd [label = "connect URI + service name"];
transportd -> transportd2 [label = "connection init
service name + URI"];
transportd2 -> remoted2 [label = "connection request
service name + URI"];
remoted2 -> transportd2 [label = "authorization (yes|no)"];
transportd2 -> transportd [label = "connection established"];
transportd -> remoted [label = "socket"];
remoted -> client [label = "socket"];
client -> service [label = "connection"];
}
diagram {
edge_length = 300;
default_fontsize = 16; // default value is 11
span_height = 8; // default value is 40
node_height = 60; // default value is 40
activation = none;
// Numbering edges automaticaly
autonumber = True;
// Change note color
default_note_color = lightblue;
client [label = "client\nlocal"];
remoted [label = "remoted\nlocal"];
transportd [label = "transportd\n(ex: tcpd)\nlocal"];
transportd2 [label = "transportd\n(ex: tcpd)\nremote"];
remoted2 [label = "remoted\nremote"];
service [label = "service\nremote"];
client -> remoted [label = "service-name (ex: pongd)"];
client -> remoted [label = "REMOTED_VAR=URI
ex: tcp://user:password@example.com:9000", fontsize=13];
client -> remoted [label = "END (mark the end of the options)"
, rightnote = "Remoted: authenticates, authorizes, determines the right transport daemon and
applies forwarding rules", fontsize=13];
remoted -> transportd [label = "connect URI + service name"];
transportd -> transportd2 [label = "connection init
service name + URI"];
transportd2 -> remoted2 [label = "connection request
service name + URI"];
remoted2 -> transportd2 [label = "authorization (yes|no)"];
transportd2 -> transportd [label = "connection established"];
transportd -> remoted [label = "socket"];
remoted -> client [label = "socket"];
client -> service [label = "connection"];
}

View File

@ -1,57 +1,25 @@
# remoted
This service creates a path on the relevent remote location, going through anything network-related: TCP, UDP, HTTP, ...
# TODO
* authorizations
* code the -d option
# Connection
Client -> Remoted: service to contact (ex: pongd)
format: [u8 (action); u16 (length); XXX (options)]
Client -> Remoted: action (connect|listen) + options
format: [u8 (action); u16 (length); XXX (options)]
example 1: action = connect => options = uri (ex: udp://example.com:5000)
format: [u8 (1); u16 (22); udp://example.com:5000]
example 2: action = listen => options = uri (ex: tcp://localhost:9000)
format: [u8 (2); u16 (20); tcp://localhost:9000]
(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
# remoted
This service creates a path on the relevent remote location, going through anything network-related: TCP, UDP, HTTP, ...
# TODO
* authorizations
* code the -d option
### 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