readme + filename convention for diags
parent
42658c5e5f
commit
2487bd6ad9
|
@ -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.
|
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
}
|
|
@ -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"]
|
||||
}
|
|
@ -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"]
|
||||
}
|
|
@ -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"];
|
||||
}
|
|
@ -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
|
||||
|
|
Reference in New Issue