summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/main.go19
-rw-r--r--server/server/server.go8
2 files changed, 19 insertions, 8 deletions
diff --git a/server/main.go b/server/main.go
index 948de08..da8fd91 100644
--- a/server/main.go
+++ b/server/main.go
@@ -2,6 +2,7 @@ package main
import (
"citrons.xyz/talk/server/server"
+ "crypto/tls"
"flag"
"log"
bolt "go.etcd.io/bbolt"
@@ -10,6 +11,8 @@ import (
func main() {
dbFile := flag.String("db", "./talk.db", "database file location")
address := flag.String("listen", ":27508", "address to listen on")
+ certFile := flag.String("cert", "./talk.crt", "tls server certificate (pem)")
+ keyFile := flag.String("key", "./talk.key", "tls private key (pem)")
flag.Parse()
db, err := bolt.Open(*dbFile, 0600, nil)
@@ -18,5 +21,19 @@ func main() {
}
defer db.Close()
- server.Serve(db, *address)
+ cert, err := tls.LoadX509KeyPair(*certFile, *keyFile)
+ if err != nil {
+ log.Fatal(err)
+ }
+ config := &tls.Config {
+ Certificates: []tls.Certificate{ cert },
+ }
+ ln, err := tls.Listen("tcp", *address, config)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer ln.Close()
+
+ log.Print("talk is listening upon ",*address)
+ server.Serve(db, ln)
}
diff --git a/server/server/server.go b/server/server/server.go
index babc7e7..acd390d 100644
--- a/server/server/server.go
+++ b/server/server/server.go
@@ -65,13 +65,7 @@ func (s *server) Data() proto.Object {
return proto.Object {}
}
-func Serve(db *bolt.DB, address string) {
- ln, err := net.Listen("tcp", address)
- if err != nil {
- log.Fatal("Listen: ", err)
- }
- defer ln.Close()
-
+func Serve(db *bolt.DB, ln net.Listener) {
var srv server
srv.requests = make(chan session.Request)
srv.clients = make(chan *session.Session)