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");
88 if(auth_chuid(ai, nil) < 0)
89 sysfatal("auth_chuid: %r");
91 conn->pskID = "p9secret";
92 conn->psk = ai->secret;
93 conn->psklen = ai->nsecret;
97 conn->chain = readcertchain(cert);
98 if(conn->chain == nil)
100 conn->cert = conn->chain->pem;
101 conn->certlen = conn->chain->pemlen;
102 conn->chain = conn->chain->next;
105 if(conn->cert == nil && conn->psklen == 0)
106 sysfatal("no certificate or shared secret");
109 conn->trace = reporter;
111 fd = tlsServer(0, conn);
113 reporter("failed: %r");
125 reporter("can't exec %s: %r", *argv);