summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-01-08 23:20:38 +0200
committerKyren223 <Kyren223@proton.me>2025-01-08 23:20:38 +0200
commit576adb547cac5a3484aa1c53881e69bf0f729afd (patch)
treee446da8d683774ef7263338d5b4ef2b5d172c898
parentdbea21d9c3642fce6b25837c2ec5fd704a7e8f2a (diff)
Implemented CD
-rw-r--r--.github/workflows/cd.yml42
-rw-r--r--.github/workflows/ci.yml6
-rw-r--r--certs/server.crt37
-rw-r--r--internal/client/config/config.go16
-rw-r--r--internal/client/gateway/gateway.go11
-rw-r--r--internal/server/server.go5
6 files changed, 83 insertions, 34 deletions
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
new file mode 100644
index 0000000..0c6c58a
--- /dev/null
+++ b/.github/workflows/cd.yml
@@ -0,0 +1,42 @@
+name: continious deployment
+
+on:
+ push:
+ branches: [master]
+
+jobs:
+ cd:
+ name: Deploy
+ runs-on: ubuntu-latest
+ needs: ci
+ timeout-minutes: 5
+
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v4
+
+ - name: Set up Go
+ uses: actions/setup-go@v5
+ with:
+ go-version: "1.23.2"
+
+ - name: Build executable
+ run: GOOS=linux GOARCH=amd64 go build ./cmd/server -o ./eko-server
+
+ - name: Deploy to server
+ uses: easingthemes/ssh-deploy@main
+ with:
+ SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
+ ARGS: "-avz"
+ SOURCE: "eko-server"
+ REMOTE_HOST: eko.kyren.codes
+ REMOTE_USER: website
+ TARGET: "/srv/website"
+ SCRIPT_BEFORE: |
+ whoami
+ ls -al
+ SCRIPT_AFTER: |
+ whoami
+ ls -al
+ echo $RSYNC_STDOUT
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 66462ed..4838878 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,15 +1,13 @@
-name: ci
+name: continious integration
on:
- push:
- branches: [master]
pull_request:
- branches: [master]
jobs:
ci:
name: Tests
runs-on: ubuntu-latest
+ timeout-minutes: 5
steps:
- name: Check out code
diff --git a/certs/server.crt b/certs/server.crt
index caf2384..83830e9 100644
--- a/certs/server.crt
+++ b/certs/server.crt
@@ -1,21 +1,20 @@
-----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=
+MIIDRTCCAi2gAwIBAgIUSsjw1BdLX9LgEQeZ6fgiunaaXm4wDQYJKoZIhvcNAQEL
+BQAwMTEhMB8GCSqGSIb3DQEJARYSa3lyZW4yMjNAcHJvdG9uLm1lMQwwCgYDVQQD
+DANFa28wHhcNMjUwMTA4MTgyNjM3WhcNMzUwMTA2MTgyNjM3WjAxMSEwHwYJKoZI
+hvcNAQkBFhJreXJlbjIyM0Bwcm90b24ubWUxDDAKBgNVBAMMA0VrbzCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMiZnZvOzS+EXwfwwZUaeftPZ8wLUYPz
+ePdVf7t7BIAzjWZqU1i+h90YkCiPZXUjcsuMyHU5D3a5fUFb/zo6C1t6D6ok4ldN
+isWH0QsGu+qwqI6H95h/feJ8l+EGINXYglW0BhAG5vOFX75u/RToSyZxh+xKbyK+
+Vju3RyUf783Fu0P8Zr4XFwwPec5ppPX+yhvpC+VHooKulym89WBqt4U4O4f4fQGC
+q91IgkdofejYrR3NPls+K1wtATldQNm1J6dxuZ7DmZCP3JD7hTB77RjcK/pTa/eC
+mUi6EzgfEmKq4d+6xl0B4ctk49sC90xgCTyMEf6/FyPhcFXgsLRpk1MCAwEAAaNV
+MFMwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwGgYDVR0RBBMwEYIPZWtvLmt5cmVu
+LmNvZGVzMB0GA1UdDgQWBBQjU/eLRbKFFLWLM8oqyfHH51gjATANBgkqhkiG9w0B
+AQsFAAOCAQEAmXQzTahhJ/XR/mYVksrTnXOwBKtVGbCSUiaZKljqWmfulugYZwZT
+UEjPjqbAfF+wmA86nJGnSOXAXuZcOH3Qko7QS54sxIgKmNhscPA/yq+/Sxi8bnK8
+ZUaLwWRs7SMuMsXV6Ftl4251m7Yp6NHDPtKjPr7F4FPiQB7FpDl/xkwoeVkC39YE
+rEdjiwvQv8xiUc3txOSVA8ieFHXjtozwsGkKIodkYXyLxpClTLQhgcLLmoX80+yq
+xJHxBCAz3FyiKeSZHAdAXjEVZHuLaEOBogNPjd2m7rAsOXyzr/c4K/ssgfygamJJ
+HWJfV2omP71TJDJQhaZyZUS9vW/+h4v94Q==
-----END CERTIFICATE-----
diff --git a/internal/client/config/config.go b/internal/client/config/config.go
index daa3d58..0d81405 100644
--- a/internal/client/config/config.go
+++ b/internal/client/config/config.go
@@ -10,16 +10,20 @@ import (
)
type Config struct {
- PrivateKeyPath string `json:"private_key_path"`
- InsertModeTabToSpace bool `json:"insert_mode_tab_to_space"`
- InsertModeSpacesPerTab uint8 `json:"insert_mode_spaces_per_tab"`
+ ServerName string `json:"server_name"`
+ PrivateKeyPath string `json:"private_key_path"`
+ InsertModeTabToSpace bool `json:"insert_mode_tab_to_space"`
+ InsertModeSpacesPerTab uint8 `json:"insert_mode_spaces_per_tab"`
+ InsecureSkipServerVerification bool `json:"insecure_skip_server_verification"`
}
func Default() Config {
return Config{
- PrivateKeyPath: "",
- InsertModeTabToSpace: true,
- InsertModeSpacesPerTab: 4,
+ ServerName: "eko.kyren.codes",
+ PrivateKeyPath: "",
+ InsertModeTabToSpace: true,
+ InsertModeSpacesPerTab: 4,
+ InsecureSkipServerVerification: false,
}
}
diff --git a/internal/client/gateway/gateway.go b/internal/client/gateway/gateway.go
index 11d15bb..38140e8 100644
--- a/internal/client/gateway/gateway.go
+++ b/internal/client/gateway/gateway.go
@@ -15,6 +15,7 @@ import (
tea "github.com/charmbracelet/bubbletea"
"github.com/kyren223/eko/certs"
+ "github.com/kyren223/eko/internal/client/config"
"github.com/kyren223/eko/internal/client/ui"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
@@ -44,9 +45,10 @@ func init() {
}
tlsConfig = &tls.Config{
- RootCAs: certPool,
- ServerName: "localhost",
- MinVersion: tls.VersionTLS12,
+ RootCAs: certPool,
+ ServerName: config.Read().ServerName,
+ MinVersion: tls.VersionTLS12,
+ InsecureSkipVerify: config.Read().InsecureSkipServerVerification,
}
}
@@ -71,7 +73,8 @@ func connect(ctx context.Context, privKey ed25519.PrivateKey) (snowflake.ID, err
errChan := make(chan error, 1)
go func() {
framer = packet.NewFramer()
- connection, err := tls.Dial("tcp4", ":7223", tlsConfig)
+ address := config.Read().ServerName
+ connection, err := tls.Dial("tcp4", address + ":7223", tlsConfig)
if err != nil {
errChan <- err
return
diff --git a/internal/server/server.go b/internal/server/server.go
index 2e5cd7b..e2b2a40 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -30,7 +30,10 @@ var (
)
func init() {
- path := "certs/server.key"
+ path, ok := os.LookupEnv("SERVER_CERT_KEY_FILE")
+ if !ok {
+ path = "certs/server.key"
+ }
keyPEM, err := os.ReadFile(path)
if err != nil {
log.Fatalln("failed to read certificate key from", path)