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"
|
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
|
||||||
|
|
|
@ -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"]
|
||||||
}
|
}
|
|
@ -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"]
|
||||||
}
|
}
|
|
@ -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"]
|
||||||
}
|
}
|
|
@ -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"];
|
||||||
}
|
}
|
|
@ -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
|
|
||||||
|
|
Reference in New Issue