github.com/gdamore/mangos@v1.4.0/macat/README.md (about) 1 ## DESCRIPTION 2 3 The **macat** command is a command‐line interface to send and receive data 4 via the 5 [mangos](https://github.com/nanomsg/mangos) implementation of the SP 6 [nanomsg](http://www.nanomsg.org) protocols. It is designed to be suitable 7 for use as a drop‐in replacement for nanocat(1). 8 9 Additionally it has a some extra features, to support mangos' additional 10 capabilities. In particular, it supports SSL/TLS, and has a few flags 11 related to that. 12 13 ## SYNOPSIS 14 macat <*OPTIONS*> 15 16 ## OPTIONS 17 18 * −v,−−verbose 19 > Increase verbosity 20 * −q,−−silent 21 > Decrease verbosity 22 * −−push 23 > Use PUSH socket type 24 * −−pull 25 > Use PULL socket type 26 * −−pub 27 > Use PUB socket type 28 * −−sub 29 > Use SUB socket type 30 * −−req 31 > Use REQ socket type 32 * −−rep 33 > Use REP socket type 34 * −−surveyor 35 > Use SURVEYOR socket type 36 * −−respondent 37 > Use RESPONDENT socket type 38 * −−bus 39 > Use BUS socket type 40 * −−pair 41 > Use PAIR socket type 42 * −−star 43 > Use STAR socket type 44 * −−bind *ADDR* 45 > Bind socket to *ADDR* 46 * −−connect *ADDR* 47 > Connect socket to ADDR 48 * −X,−−bind‐ipc *PATH* 49 > Bind socket to IPC PATH 50 * −x,−−connect‐ipc *PATH* 51 > Connect socket to IPC *PATH* 52 * −L,−−bind‐local *PORT* 53 > Bind socket to TCP localhost *PORT* 54 * −l,−−connect‐local *PORT* 55 > Connect socket to TCP localhost *PORT* 56 * −−subscribe *PREFIX* 57 > Subcribe to *PREFIX* (default is wildcard) 58 * −−recv‐timeout *SEC* 59 > Set receive timeout 60 * −−send‐timeout *SEC* 61 > Set send timeout 62 * −d,−−send‐delay *SEC* 63 > Set initial send delay 64 * −−raw 65 > Raw output, no delimiters 66 * −A,−−ascii 67 > ASCII output, one per line 68 * −Q,−−quoted 69 > Quoted output, one per line 70 * −−msgpack 71 > Msgpacked binay output (see msgpack.org) 72 * −i,−−interval *SEC* 73 > Send DATA every *SEC* seconds 74 * −D,−−data *DATA* 75 > Data to send 76 * −F,−−file *FILE* 77 > Send contents of *FILE* 78 * −−sslv3 79 > Force SSLv3 when using SSL/TLS 80 * −−tlsv1 81 > Force TLSv1.x when using SSL/TLS 82 * −−tlsv1.1 83 > Force TLSv1.0 when using SSL/TLS 84 * −−tlsv1.1 85 > Force TLSv1.1 when using SSL/TLS 86 * −−tlsv1.2 87 > Force TLSv1.2 when using SSL/TLS 88 * −E,−−cert *FILE* 89 > Use certificate in *FILE* for SSL/TLS 90 * −−key *FILE* 91 > Use private key in *FILE* for SSL/TLS 92 * −−cacert *FILE* 93 > Use CA certicate(s) in *FILE* for SSL/TLS 94 * −k,−−insecure 95 > Do not validate TLS/SSL peer certificate 96 * −−help 97 > Show usage message 98 99 ## SSL/TLS DETAILS 100 101 The security model for macat is that authentication should be mutual by 102 default. Therefore, the user should normally supply both a certificate/key 103 (either in a single file, or in separate files with *--key*), and a CA 104 certificate file (perhaps consisting of many certificates) which should have 105 been used to sign the peer's certificate. This is true for **BOTH** client 106 and server. (This is a but unlike traditional HTTPS, where it mutual 107 authentication is the exception rather than the rule.) 108 109 A client can choose to skip verification of the server by supplying 110 the *--insecure* (*-k*) flag instead of the *--cacert* argument. This is not 111 recommended. It can also choose not to authenticate itself to the server 112 by simply not supplying a *--cert* and *--key*. 113 114 The server (the party doing the bind) **MUST** always supply its own 115 certificate. It will normally attempt to authenticate clients, but this 116 can be disabled by supplying *--insecure* or *-k* instead of 117 the *--cacert* argument. 118 119 ## AUTHOR 120 Garrett D’Amore