This document describes the compose contract specification.
circuits:
NAME:
<<CIRCUIT>>
proxies:
NAME:
<<PROXY>>
slaves:
NAME:
<<SLAVE>>circuits:
australia:
<<CIRCUIT>>
china:
<<CIRCUIT>>
proxies:
US:
<<PROXY>>
slaves:
colombia:
<<SLAVE>>
us:
<<SLAVE>>type: basic|master|ssh
network: tcp|EMPTY
address: HOST:PORT|EMPTY
data:
<<NETWORK>>|EMPTY
control:
<<NETWORK>>|EMPTY
auth:
<<AUTH>>|EMPTY
crypto:
<<CRYPTO>>|EMPTY
slaveListener: true|false
listenerFilter:
<<FILTER>>|EMPTY
dialFilter:
<<FILTER>>|EMPTY- Basic listener
type: basic
network: tcp
address: 0.0.0.0:443- Master listener
type: master
data:
type: basic
network: tcp
address: 0.0.0.0:9050
control:
type: basic
network: tcp
address: 10.10.50.10:8000- SSH listener
type: ssh
network: tcp
address: 10.10.50.10:22
auth:
username: sulcud
password: password- Basic listener with TLS
type: basic
type: basic
network: tcp
address: 0.0.0.0:443
crypto:
mode: tls
selfSigned: true- Master with Data coming from Basic and Slave from TLS SSH
type: master
data:
type: basic
network: tcp
address: 0.0.0.0:8000
control:
type: ssh
network: tcp
address: 10.10.50.10:22
auth:
privateKey: /home/admin/id_rsa
crypto:
mode: tls
selfSigned: true
insecureSkipVerify: trueusername: "STRING"|EMPTY
password: "STRING"|EMPTY
privateKey: "STRING"|EMPTY
serverKey: "STRING"|EMPTY- Username and Password
username: sulcud
password: password- Private Key
privateKey: /path/to/private/key- Server key
serverKey: /path/to/server/keymode: tls
selfSigned: true|false
insecureSkipVerify: true|false
cert: /path/to/crt
key: /path/to/key- Self signed key
mode: tls
selfSigned: true- Insecure skip verify
mode: tls
insecureSkipVerify: true- Cert and key from file
mode: tls
cert: /etc/certs/crt
key: /etc/certs/keynetwork: tcp
address: HOST:PORT
listener:
<<NETWORK>>
knots:
- <<KNOT>>network: tcp
address: google.com:443
listener:
type: basic
network: tcp
address: localhost:443
knots:
- type: ssh
network: tcp
address: 10.10.50.10:22
auth:
username: sulcud
password: password
- type: socks5
network: tcp
address: 207.208.10.30:9050type: forward|socks5|ssh
network: tcp
address: HOST:PORT
auth:
<<AUTH>>|EMPTYtype: ssh
network: tcp
address: google.com:22
auth:
username: sulcud
password: passwordwhitelist:
- <<MATCH>>
blacklist:
- <<MATCH>>whitelist:
- <<MATCH>>
blacklist:
- <<MATCH>>host: REGEXP|EMPTY
port: NUMBER|EMPTY
portRange:
from: NUMBER|EMPTY
to: NUMBER|EMPTYhost: "127\\.0\\.0\\.\\d+"
port: 443
portRange:
from: 0
to: 65535- Network
- [Auth method](#Auth method)
type: forward|http|socks5
listener:
<<NETWORK>>
dialer:
<<NETWORK>>|EMPTY
network: tcp|EMPTY
address: HOST:PORT|EMPTY
authMethods:
- <<AUTH_METHOD>>- Forward
type: forward
listener:
type: basic
network: tcp
address: 0.0.0.0:80
network: tcp
address: google.com:80- Socks5 with dialer in SSH server
type: socks5
listener:
type: basic
network: tcp
address: 0.0.0.0:9050
dialer:
type: ssh
network: tcp
address: 10.10.50.10:22
auth:
privateKey: /home/admin/id_rsaraw:
USERNAME: PASSWORDraw:
sulcud: password
shoriwe: passwordmasterNetwork: tcp
masterAddress: HOST:PORT
dialer:
<<NETWORK>>
listener:
<<NETWORK>>|EMPTYmasterNetwork: tcp
masterAddress: 10.10.50.10:9999
dialer:
<<NETWORK>>
listener:
<<NETWORK>>