14 reporter(char *fmt, ...)
21 vsnprint(buf, sizeof buf, fmt, ap);
22 syslog(0, logfile, "%s tls reports %s", remotesys, buf);
24 fprint(2, "%s: %s tls reports ", argv0, remotesys);
35 fprint(2, "usage: tlssrv [-D] -[aA] [-k keyspec]] [-c cert] [-l logfile] [-r remotesys] cmd [args...]\n");
40 main(int argc, char *argv[])
55 auth = -1; /* authenticate, but dont change user */
58 keyspec = EARGF(usage());
61 cert = EARGF(usage());
64 logfile = EARGF(usage());
67 remotesys = EARGF(usage());
76 conn = (TLSconn*)mallocz(sizeof *conn, 1);
78 sysfatal("out of memory");
83 ai = auth_proxy(0, nil, "proto=p9any role=server %s", keyspec);
85 sysfatal("auth_proxy: %r");
90 if(auth_chuid(ai, nil) < 0)
91 sysfatal("auth_chuid: %r");
93 /* chown network connection */
100 conn->pskID = "p9secret";
101 conn->psk = ai->secret;
102 conn->psklen = ai->nsecret;
106 conn->chain = readcertchain(cert);
107 if(conn->chain == nil)
109 conn->cert = conn->chain->pem;
110 conn->certlen = conn->chain->pemlen;
111 conn->chain = conn->chain->next;
114 if(conn->cert == nil && conn->psklen == 0)
115 sysfatal("no certificate or shared secret");
118 conn->trace = reporter;
120 fd = tlsServer(0, conn);
122 reporter("failed: %r");
134 reporter("can't exec %s: %r", *argv);