Fork 0
Bind two libipc-related processes after the creation of a remote connection. Further explanations in the README.
This repository has been archived on 2024-06-18. You can view files and clone it, but cannot push or open issues/pull-requests.
Go to file
Karchnu cb0594fe5a IPCd: working. 2020-11-08 17:51:00 +01:00
src IPCd: working. 2020-11-08 17:51:00 +01:00
tests Test with IPC::Connection -> IPC::Client. 2020-08-24 19:58:43 +02:00
.gitignore Better CLI messages, better comments, cleaner code. 2020-11-04 02:59:42 +01:00
Makefile Fixes close() call on websockets. 2020-05-27 15:01:50 +02:00
README.md readme updated 2020-01-16 17:30:49 +01:00
project.zsh Fixes close() call on websockets. 2020-05-27 15:01:50 +02:00
shard.yml Baguette::Log. 2020-08-28 02:02:19 +02:00


ipcd is a program to handle networking for all other software.


Security is TBD. Currently, only TCPd is implemented, which means no communication security.

ipcd functionalities


ipcd has to filter the connections to local services.



ipcd has to authenticate clients asking for a service.



Central networking management allows for functionalities such as redirections. For example, a local client asking for the authentication can be authenticated with a distant authentication service.




Configuration is yet to be defined.

  • redirection
  • firewall
  • authentication


This program can be used as follow:

# with some static rules
ipcd --allow in authd tls:example.com --deny in * * --allow out pong tls:pong.example.com:9000
ipcd --redirect authd nextversion-authd

usage examples

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:

IPC_NETWORK="authd tls://user@passwd:example.com:9000/authd"
Currently, the ipcd only works with tcp and unix routes.
IPC_NETWORK="pongd tcp://example.com:9000/pongd"


  • v0.1: (current) ipcd (redirections), tcpd

    • ipcd understands URIs (tcp://example.com/service or unix:///service)
    • tcp scheme is understood: ipcd contacts the tcpd service
    • 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,


  • v0.3: websocket scheme for clients, transparently usable through ipcd
  • v0.4: firewall + redirections
  • v0.5: static configuration: default routes, authentication
  • v0.6: tlsd built-in, pre-shared keys
  • v0.7: udpd
  • v1.0: TBD

ipcd explanations

  1. client contacts ipcd

  2. ipcd understand the request from the client then contacts the local service responsible for the communication protocol required

  3. once the distant connection is established (between the two tlsd services for example) ipcd provides a file descriptor to the client

  4. finally, the client can perform requests to the distant service transparently

    during the connection:

    client <-> ipcd <-> tlsd <=> tlsd <-> ipcd <-> service


    client <-> tlsd <=> tlsd <-> server