summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-07 17:21:02 +0200
committerKyren223 <Kyren223@proton.me>2025-01-07 17:21:02 +0200
commit06a15e6c7019e4dbe82ecf9044a5e58849b65861 (patch)
tree2a2398e148c1f3cb889d9654f34e0b4d294ae9ca
parent740bb376209ff3c0590b67d5d1b9b54806ae3557 (diff)
Refactored to better embed the certifcates and also made sure to read at
runtime the server.key instead of containing it in the server's executable using go embed
-rw-r--r--.gitignore3
-rw-r--r--certs/certs.go6
-rw-r--r--certs/server.crt21
-rw-r--r--internal/client/gateway/gateway.go7
-rw-r--r--internal/server/server.go17
5 files changed, 39 insertions, 15 deletions
diff --git a/.gitignore b/.gitignore
index e6a23da..b9e1d2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
-internal/server/certs/
-*.crt
+*.key
*.log
*.db
*.db-shm
diff --git a/certs/certs.go b/certs/certs.go
new file mode 100644
index 0000000..7fa8f54
--- /dev/null
+++ b/certs/certs.go
@@ -0,0 +1,6 @@
+package certs
+
+import _ "embed"
+
+//go:embed server.crt
+var CertPEM []byte
diff --git a/certs/server.crt b/certs/server.crt
new file mode 100644
index 0000000..caf2384
--- /dev/null
+++ b/certs/server.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDbTCCAlWgAwIBAgIUZyvzq7LOxKqTttTRjChoJWOO4pYwDQYJKoZIhvcNAQEL
+BQAwOjEhMB8GCSqGSIb3DQEJARYSa3lyZW4yMjNAcHJvdG9uLm1lMRUwEwYDVQQD
+DAxreXJlbjIyMy5kZXYwHhcNMjQxMDA5MjE1NzQzWhcNMjUxMDA5MjE1NzQzWjA6
+MSEwHwYJKoZIhvcNAQkBFhJreXJlbjIyM0Bwcm90b24ubWUxFTATBgNVBAMMDGt5
+cmVuMjIzLmRldjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK7hd+zT
+kqrn/8EhLEO0uMKKHgfoyczYWTlA9uPFADOsjdzXRLuR/Y3rK0PBE4u55xcjYZSf
+mzJmVHuv1rEFOt634YOoE2UwJd9V2M0p+cD716XIEDNPfVCUe77FoZoYaH1h8QF5
+Mrx2eDH5JZt690F05O39zYzbb7+RlChWlt1kBcmLEZ1GKJeXznbL6lLMh20deYX9
+7oemqYMqP9DFbFeHkubeZ20yQvKW9cOWae9M+IhE9dAa8fm5WdfiDoTdAHfbIawx
+r1OB4YqfXlXler9wAHfHWeCS0KgZCTdghF1h6wtYlwyQZcUuv+dHN7SP7zVo8pOD
+b7NUqjFAMGlNgf0CAwEAAaNrMGkwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwMAYD
+VR0RBCkwJ4IJbG9jYWxob3N0ggsqLmxvY2FsaG9zdIINZWtvLmxvY2FsaG9zdDAd
+BgNVHQ4EFgQUf32SXO976zgO0K/wlgWdyT3EPzcwDQYJKoZIhvcNAQELBQADggEB
+AHVMGCkaZv5eIOQwevfrsEJQo3dNG34om8wBVGS5iQyho0VJZpKZSiQ16yv4x2kc
+UICfVEFcfO/7/hRlA5yLWE/wpeqCgTSgtQ74gvc8D6H26wCznSPj9MIRWxYhSmPM
+YO+7UKqyvFoaKiW4OkqJvCRzrpwr/lbXcGpD47UqT5gRvjJ91ULCHIUt8qDUS6+8
+mEGJAe/xFkiJ6zT0bThlqMaCA4v5g9tHGXzooIZ+YSgTvlWhAM6mVwt34l2rDSOw
+4YNGUJXKCoGpy8U0NteIOOs6HhaslJpKe1mSSxmMQcgBcaf6yBT08mYfQPSsaeOk
+OSoncuVBnT64liAtShpsgTc=
+-----END CERTIFICATE-----
diff --git a/internal/client/gateway/gateway.go b/internal/client/gateway/gateway.go
index a8f4241..9709968 100644
--- a/internal/client/gateway/gateway.go
+++ b/internal/client/gateway/gateway.go
@@ -5,7 +5,6 @@ import (
"crypto/ed25519"
"crypto/tls"
"crypto/x509"
- _ "embed"
"encoding/binary"
"errors"
"log"
@@ -15,15 +14,13 @@ import (
tea "github.com/charmbracelet/bubbletea"
+ "github.com/kyren223/eko/certs"
"github.com/kyren223/eko/internal/client/ui"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
"github.com/kyren223/eko/pkg/snowflake"
)
-//go:embed server.crt
-var certPEM []byte
-
var (
tlsConfig *tls.Config
@@ -42,7 +39,7 @@ type (
func init() {
certPool := x509.NewCertPool()
- if !certPool.AppendCertsFromPEM(certPEM) {
+ if !certPool.AppendCertsFromPEM(certs.CertPEM) {
log.Fatalln("failed to append server certificate")
}
diff --git a/internal/server/server.go b/internal/server/server.go
index f510821..253cef3 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -5,17 +5,18 @@ import (
"crypto/ed25519"
"crypto/rand"
"crypto/tls"
- _ "embed"
"encoding/binary"
"errors"
"fmt"
"io"
"log"
"net"
+ "os"
"strconv"
"sync"
"time"
+ "github.com/kyren223/eko/certs"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/internal/server/api"
"github.com/kyren223/eko/internal/server/session"
@@ -23,19 +24,19 @@ import (
"github.com/kyren223/eko/pkg/snowflake"
)
-//go:embed certs/server.crt
-var certPEM []byte
-
-//go:embed certs/server.key
-var keyPEM []byte
-
var (
nodeId int64 = 0
tlsConfig *tls.Config
)
func init() {
- cert, err := tls.X509KeyPair(certPEM, keyPEM)
+ path := "certs/server.key"
+ keyPEM, err := os.ReadFile(path)
+ if err != nil {
+ log.Fatalln("failed to read certificate key from", path)
+ }
+
+ cert, err := tls.X509KeyPair(certs.CertPEM, keyPEM)
if err != nil {
log.Fatalln("error loading certificate:", err)
}