Compare commits

...

2 Commits

Author SHA1 Message Date
c5100b35bf bugfixes 2018-08-02 12:02:04 -06:00
9c17248bfa update docs 2018-08-02 11:33:47 -06:00
3 changed files with 18 additions and 14 deletions

View File

@ -83,6 +83,7 @@ func handleTelnetConn(bufConn bufferedConn) {
email = strings.TrimSpace(msg)
emailParts := strings.Split(email, "@")
if 2 != len(emailParts) {
email = ""
fmt.Fprintf(bufConn, "Email: ")
continue
}

View File

@ -10,7 +10,6 @@ import (
"encoding/base64"
"flag"
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
@ -42,13 +41,13 @@ type ConfMailer struct {
// So we can peek at net.Conn, which we can't do natively
// https://stackoverflow.com/questions/51472020/how-to-get-the-size-of-available-tcp-data
type bufferedConn struct {
r *bufio.Reader
rout io.Reader // See https://github.com/polvi/sni/blob/master/sni.go#L135
r *bufio.Reader
//rout *io.Reader // See https://github.com/polvi/sni/blob/master/sni.go#L135
net.Conn
}
func newBufferedConn(c net.Conn) bufferedConn {
return bufferedConn{bufio.NewReader(c), nil, c}
return bufferedConn{bufio.NewReader(c), c}
}
func (b bufferedConn) Peek(n int) ([]byte, error) {
@ -60,9 +59,11 @@ func (b bufferedConn) Buffered() int {
}
func (b bufferedConn) Read(p []byte) (int, error) {
if b.rout != nil {
return b.rout.Read(p)
}
/*
if b.rout != nil {
return b.rout.Read(p)
}
*/
return b.r.Read(p)
}
@ -166,6 +167,9 @@ func muxTcp(conn bufferedConn) {
}
if "" == protocol {
// Throw away the first bytes
b := make([]byte, 4096)
conn.Read(b)
fmt.Fprintf(conn, "\n\nWelcome to Sample Chat! You're not an HTTP client, assuming Telnet.\nYou must authenticate via email to participate\n\nEmail: ")
wantsServerHello <- conn
return

View File

@ -10,7 +10,7 @@
<li>
<h3>POST /api/sessions
<br>
<code>{"sub":"<strong><em>jon@example.com</em></strong>"}</code>
<code>{"sub":"<strong><em>&lt;email&gt;</em></strong>"}</code>
</h3>
<pre><code># Ask for an auth code (swap sub)
@ -21,9 +21,9 @@ curl -X POST http://localhost:4080/api/sessions \
</li>
<li>
<h3>POST /api/sessions/<strong><em>id</em></strong>
<h3>POST /api/sessions/<strong><em>&lt;id&gt;</em></strong>
<br>
<code>{"otp":"<strong><em>auth-code</em></strong>"}</code>
<code>{"otp":"<strong><em>&lt;auth-code&gt;</em></strong>"}</code>
</h3>
<pre><code># Validate auth code (swap session id, sub, and otp)
@ -39,8 +39,8 @@ curl -X POST http://localhost:4080/api/sessions/<strong><em>xyz</em></strong> \
<li>
<h3>POST /api/rooms/general
<br>
<code>Authorization: Bearer <strong><em>api-token</em></strong>
<br>{"message":"<strong><em>Hello, World!</em></strong>"}</code>
<code>Authorization: Bearer <strong><em>&lt;api-token&gt;</em></strong>
<br>{"message":"<strong><em>&lt;msg&gt;</em></strong>"}</code>
</h3>
<pre><code># Post a message (swap api-token)
@ -54,8 +54,7 @@ curl -X POST http://localhost:4080/api/rooms/general \
<li>
<h3>GET /api/rooms/general
<br>
<code>Authorization: Bearer <strong><em>api-token</em></strong>
<br>{"message":"<strong><em>Hello, World!</em></strong>"}</code>
<code>Authorization: Bearer <strong><em>&lt;api-token&gt;</em></strong></code>
</h3>
<pre><code># Get a room's messages (swap api-token, since unix-epoch)