readme updated
parent
c302f5df6b
commit
63d2999ccb
56
README.md
56
README.md
|
@ -1,15 +1,15 @@
|
||||||
|
|
||||||
Plumberd is a program to handle networking for all other software.
|
ipcd is a program to handle networking for all other software.
|
||||||
|
|
||||||
# WARNING
|
# WARNING
|
||||||
|
|
||||||
Security is TBD. Currently, only TCPd is implemented, which means no communication security.
|
Security is TBD. Currently, only TCPd is implemented, which means no communication security.
|
||||||
|
|
||||||
# Plumberd functionalities
|
# ipcd functionalities
|
||||||
|
|
||||||
## firewall
|
## firewall
|
||||||
|
|
||||||
`Plumberd` has to filter the connections to local services.
|
`ipcd` has to filter the connections to local services.
|
||||||
|
|
||||||
```Warning
|
```Warning
|
||||||
WIP.
|
WIP.
|
||||||
|
@ -17,7 +17,7 @@ WIP.
|
||||||
|
|
||||||
## authentication
|
## authentication
|
||||||
|
|
||||||
`Plumberd` has to authenticate clients asking for a service.
|
`ipcd` has to authenticate clients asking for a service.
|
||||||
|
|
||||||
```Warning
|
```Warning
|
||||||
WIP.
|
WIP.
|
||||||
|
@ -49,54 +49,60 @@ This program can be used as follow:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# with some static rules
|
# with some static rules
|
||||||
plumberd --allow in authd tls:example.com --deny in * * --allow out pong tls:pong.example.com:9000
|
ipcd --allow in authd tls:example.com --deny in * * --allow out pong tls:pong.example.com:9000
|
||||||
plumberd --redirect authd nextversion-authd
|
ipcd --redirect authd nextversion-authd
|
||||||
```
|
```
|
||||||
|
|
||||||
## usage examples
|
## usage examples
|
||||||
|
|
||||||
`plumberd` is requested each time a client is launched when the right environment variable is used.
|
`ipcd` is requested each time a client is launched when the right environment variable is used.
|
||||||
For example, we want to connect to a distant `authd` service:
|
For example, we want to connect to a distant `authd` service:
|
||||||
|
|
||||||
IPC_NETWORKD="authd tls://user@passwd:example.com:9000/authd"
|
IPC_NETWORK="authd tls://user@passwd:example.com:9000/authd"
|
||||||
|
|
||||||
|
|
||||||
```Warning
|
```Warning
|
||||||
Currently, the plumberd only works with tcp and unix routes.
|
Currently, the ipcd only works with tcp and unix routes.
|
||||||
```
|
```
|
||||||
|
|
||||||
IPC_NETWORKD="pongd tcp://example.com:9000/pongd"
|
IPC_NETWORK="pongd tcp://example.com:9000/pongd"
|
||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
* v0.1: (current) plumberd (redirections), tcpd
|
* v0.1: (current) ipcd (redirections), tcpd
|
||||||
|
|
||||||
* `plumberd` understands URIs (`tcp://example.com/service` or `unix:///service`)
|
* `ipcd` understands URIs (`tcp://example.com/service` or `unix:///service`)
|
||||||
* `tcp` scheme is understood: `plumberd` contacts the `tcpd` service
|
* `tcp` scheme is understood: `ipcd` contacts the `tcpd` service
|
||||||
* `unix` scheme is understood: `plumberd` performs a redirection
|
* `unix` scheme is understood: `ipcd` performs a redirection
|
||||||
|
|
||||||
|
* v0.2: websocketd is up and running, some documentation is available
|
||||||
|
|
||||||
|
* websocketd
|
||||||
|
* IPC services are accessible via WebSockets
|
||||||
|
* `websocketc` is an example of client for it, not requiring libipc
|
||||||
|
* documentation
|
||||||
|
* pongd is a service template, up and running,
|
||||||
|
|
||||||
# Roadmap
|
# Roadmap
|
||||||
|
|
||||||
|
* v0.3: websocket scheme for clients, transparently usable through `ipcd`
|
||||||
* v0.2: webipcd, documentation
|
* v0.4: firewall + redirections
|
||||||
* v0.3: firewall + redirections
|
* v0.5: static configuration: default routes, authentication
|
||||||
* v0.4: static configuration: default routes, authentication
|
* v0.6: tlsd built-in, pre-shared keys
|
||||||
* v0.5: tlsd built-in, pre-shared keys
|
* v0.7: udpd
|
||||||
* v0.6: udpd
|
|
||||||
* v1.0: TBD
|
* v1.0: TBD
|
||||||
|
|
||||||
|
|
||||||
# Plumberd explanations
|
# ipcd explanations
|
||||||
|
|
||||||
1. client contacts `plumberd`
|
1. client contacts `ipcd`
|
||||||
1. `plumberd` understand the request from the client then contacts the local service responsible for the communication protocol required
|
1. `ipcd` understand the request from the client then contacts the local service responsible for the communication protocol required
|
||||||
1. once the distant connection is established (between the two `tlsd` services for example) `plumberd` provides a file descriptor to the client
|
1. once the distant connection is established (between the two `tlsd` services for example) `ipcd` provides a file descriptor to the client
|
||||||
1. finally, the client can perform requests to the distant service transparently
|
1. finally, the client can perform requests to the distant service transparently
|
||||||
|
|
||||||
during the connection:
|
during the connection:
|
||||||
|
|
||||||
client <-> plumberd <-> tlsd <=> tlsd <-> plumberd <-> service
|
client <-> ipcd <-> tlsd <=> tlsd <-> ipcd <-> service
|
||||||
|
|
||||||
then:
|
then:
|
||||||
|
|
||||||
|
|
Reference in New Issue