x

package
v0.0.0-...-f1a780f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DEBUG bool = false

	C_ADMIN     string = "admin"
	C_ENV_LIST  string = "envlist"
	C_TYPE_ENV  string = "env"
	C_TYPE_HOST string = "host"
	C_PARENT    string = "parent"

	C_SUCCESS string = "✅"
	C_FAILED  string = "❌"
	C_STARTED string = "🌐"

	C_STATE_VALID       string = "valid"
	C_STATE_LOCKED      string = "locked"
	C_STATE_TERMINATED  string = "termnd"
	C_STATE_MAINTENANCE string = "maint"

	C_RespHeader string = "application/json"
	C_Secret     string = "XXXXXXX"

	ERR_JsonConvertData      string = "ERR: Error converting LockData to JSON."
	ERR_NoNameSpecified      string = "ERR: No 'name' parameter specified."
	ERR_NoTypeSpecified      string = "ERR: No 'type' parameter specified."
	ERR_NoUserSpecified      string = "ERR: No 'user' parameter specified."
	ERR_NoTokenSpecified     string = "ERR: No 'token' parameter specified."
	ERR_WrongTypeSpecified   string = "ERR: Wrong 'type' specified, must be 'env' or 'host'."
	ERR_IllegalUser          string = "ERR: Illegal user."
	ERR_CannotDeleteUser     string = "ERR: User setup failed."
	ERR_EnvLockFail          string = "ERR: Environment lock unsuccesful."
	ERR_EnvCreationFail      string = "ERR: Creating a new enviromnent failed."
	ERR_EnvUnlockFail        string = "ERR: Environment unlock failed."
	ERR_EnvSetMaintFailFail  string = "ERR: Environment maintenance set failed."
	ERR_EnvSetTermFail       string = "ERR: Environment termination failed."
	ERR_ParentEnvNil         string = "ERR: Parent env not defined, admin can add it."
	ERR_HostLockFail         string = "ERR: Host lock unsuccesful."
	ERR_ParentEnvLockFail    string = "ERR: Parent environment is locked, cannot lock host."
	ERR_HostUnlockFail       string = "ERR: Host unlock failed."
	ERR_InvalidDateSpecified string = "ERR: Invalid 'lastday' specified, format is: YYYYMMDD."
	ERR_NoAdminPresent       string = "ERR: No 'admin' user present, cannot continue."
	ERR_LockedHostsInEnv     string = "ERR: Locked hosts in env, it cannot be locked."
	ERR_UserExists           string = "ERR: User already exists."
	ERR_UserSetupFailed      string = "ERR: Cannot setup user."
	ERR_LockedByAnotherUser  string = "ERR: This entity is locked by another user !!!"

	OK_UserPurged          string = "OK: User purged."
	OK_EnvCreated          string = "OK: Environment created."
	OK_EnvUnlocked         string = "OK: Environment unlocked."
	OK_EnvLocked           string = "OK: Environment locked successfully."
	OK_EnvSetToMaintenance string = "OK: Environment is in maintenance mode now."
	OK_EnvSetToTerminate   string = "OK: Environment terminated."
	OK_HostUnlocked        string = "OK: Host has been unlocked succesfully."
	OK_HostLocked          string = "OK: Host has been locked succesfully."

	C_HTTP_OK          = 0    // default no-error state
	C_TLS_ENABLED bool = true // serve TLS with self-signed cert?

)
View Source
const (
	C_CERT_BASEPATH string = "/dev/shm/"
)

Variables

View Source
var (
	RConn *redis.Client // global Redis connection

)

Functions

func CryptString

func CryptString(plain string) string

Wants: a plain string

Returns: sha1 hash of input string

func EnvCreate

func EnvCreate(envName string) bool

func EnvLock

func EnvLock(c *LockData, res *WebResponse) bool

Wants: filled LockData

Returns: `true` if everything went fine

func EnvMaintenance

func EnvMaintenance(envName string) bool

func EnvTerminate

func EnvTerminate(envName string) bool

func EnvUnlock

func EnvUnlock(envName string) bool

func ExpireEntity

func ExpireEntity(entity string, expireAt string) bool

Wants: `env|host:name` key in Redis, expire date in YYYYMMDD

Returns: `true` on success

func GetEnvFromHost

func GetEnvFromHost(hostName string) string

Wants: hostname

Returns: first tag from full hostname by separator character list

func GetTimeFromNow

func GetTimeFromNow(yyyymmdd string) time.Duration

Wants: a string containing a date in YYYYMMDD format

Returns: time from now till the last second of YYYYMMMDD specified date

func HostLock

func HostLock(c *LockData, res *WebResponse) bool

Wants: filled LockData

Returns: `true` if everything went fine

func HostUnlock

func HostUnlock(hostName string) bool

func IsEnvContainsHosts

func IsEnvContainsHosts(envName string) bool

func IsExistingUser

func IsExistingUser(userName string) bool

Wants: username

Returns: `true` if user exists

func IsHostLocked

func IsHostLocked(hostName string) bool

func IsValidDate

func IsValidDate(dateParam string) bool

Wants: a string with YYYYMMDD date

Returns: `true` if that date is a valid date

func IsValidUser

func IsValidUser(userName string, userToken string) bool

Wants: username, usertoken

Returns: `true` if user is valid (password is matching)

func REntityDelete

func REntityDelete(enType string, enName string) bool

func RFillJsonStats

func RFillJsonStats(r *Stats)

func RGetHostsInEnv

func RGetHostsInEnv(envName string) []string

func RGetSingle

func RGetSingle(key string, field string) any

func RLockSetter

func RLockSetter(c *LockData) bool

Do not forget to fill x.LockData before function call!

Returns `true` on successful run.

func RScanKeys

func RScanKeys(matchPattern string) []string

matchPattern should be C_TYPE_ENV or C_TYPE_HOST

func RSetExpire

func RSetExpire(key string, expire time.Duration) bool

Usually key := 'entityType:entityName'

func RSetSingle

func RSetSingle(key string, field string, value any, lastDay time.Duration) bool

func ServeTLS

func ServeTLS(r *chi.Mux)

Types

type LockData

type LockData struct {
	Type    string `json:"type"`
	Name    string `json:"name"`
	Parent  string `json:"parent"`
	State   string `json:"state"`
	LastDay string `json:"lastday"`
	User    string `json:"user"`
	Token   string `json:"token"`
	HttpErr int    `json:"httperr"`
}

func RLockGetter

func RLockGetter(key string) *LockData

Usually key := 'entityType:entityName'

type RichErrorStatus

type RichErrorStatus struct {
	IsError      bool
	HttpErrCode  int
	ErrorMessage string
}

func EnvLockStatus

func EnvLockStatus(envName string) *RichErrorStatus

Wants: environment name

Returns: Specific RichErrorStatus

func ValidateType

func ValidateType(t string) *RichErrorStatus

Wants: a string which should be C_TYPE_ENV or C_TYPE_HOST

Returns: Specific RichErrorStatus

type Stats

type Stats struct {
	ValidEnvs   []string `json:"validenvs"`
	LockedEnvs  []string `json:"lockedenvs"`
	MaintEnvs   []string `json:"maintenvs"`
	TermdEnvs   []string `json:"termdenvs"`
	LockedHosts []string `json:"lockedhosts"`
}

type WebResponse

type WebResponse struct {
	Success  bool     `json:"success"`
	Messages []string `json:"messages"`
	Type     string   `json:"type"`
	Name     string   `json:"name"`
	Parent   string   `json:"parent"`
	State    string   `json:"state"`
	LastDay  string   `json:"lastday"`
	User     string   `json:"user"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL