diff options
| -rw-r--r-- | .github/workflows/cd.yml | 42 | ||||
| -rw-r--r-- | .github/workflows/ci.yml | 6 | ||||
| -rw-r--r-- | certs/server.crt | 37 | ||||
| -rw-r--r-- | internal/client/config/config.go | 16 | ||||
| -rw-r--r-- | internal/client/gateway/gateway.go | 11 | ||||
| -rw-r--r-- | internal/server/server.go | 5 |
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) |
