mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-21 16:38:23 +01:00
40 lines
745 B
Go
40 lines
745 B
Go
// Copyright 2024, Command Line Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package authkey
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
var authkey string
|
|
|
|
const WaveAuthKeyEnv = "WAVETERM_AUTH_KEY"
|
|
const AuthKeyHeader = "X-AuthKey"
|
|
|
|
func ValidateIncomingRequest(r *http.Request) error {
|
|
reqAuthKey := r.Header.Get(AuthKeyHeader)
|
|
if reqAuthKey == "" {
|
|
return fmt.Errorf("no x-authkey header")
|
|
}
|
|
if reqAuthKey != GetAuthKey() {
|
|
return fmt.Errorf("x-authkey header is invalid")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func SetAuthKeyFromEnv() error {
|
|
authkey = os.Getenv(WaveAuthKeyEnv)
|
|
if authkey == "" {
|
|
return fmt.Errorf("no auth key found in environment variables")
|
|
}
|
|
os.Unsetenv(WaveAuthKeyEnv)
|
|
return nil
|
|
}
|
|
|
|
func GetAuthKey() string {
|
|
return authkey
|
|
}
|