Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion cmd/admin/handlers/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"net/http"
"strings"
"time"
"strconv"

"github.com/jmpsec/osctrl/pkg/config"
"github.com/jmpsec/osctrl/pkg/environments"
Expand Down Expand Up @@ -142,7 +143,12 @@ func toJSONConfigurationService(values []settings.SettingValue) *config.ServiceP
cfg.Service.Listener = v.String
}
if v.Name == settings.JSONPort {
cfg.Service.Port = v.String
// Convert string to int for Port assignment
if portInt, err := strconv.Atoi(v.String); err == nil {
cfg.Service.Port = portInt
} else {
cfg.Service.Port = 0 // or handle error as appropriate
}
}
if v.Name == settings.JSONHost {
cfg.Service.Host = v.String
Expand Down
2 changes: 1 addition & 1 deletion cmd/admin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@ func osctrlAdminService() {
})
}
// Launch HTTP server for admin
serviceListener := flagParams.Service.Listener + ":" + flagParams.Service.Port
serviceListener := flagParams.Service.Listener + ":" + strconv.Itoa(flagParams.Service.Port)
if flagParams.TLS.Termination {
cfg := &tls.Config{
MinVersion: tls.VersionTLS12,
Expand Down
2 changes: 1 addition & 1 deletion cmd/api/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ func osctrlAPIService() {
handlerAuthCheck(http.HandlerFunc(handlersApi.AuditLogsHandler), flagParams.Service.Auth, flagParams.JWT.JWTSecret))
}
// Launch listeners for API server
serviceListener := flagParams.Service.Listener + ":" + flagParams.Service.Port
serviceListener := flagParams.Service.Listener + ":" + strconv.Itoa(flagParams.Service.Port)
if flagParams.TLS.Termination {
cfg := &tls.Config{
MinVersion: tls.VersionTLS12,
Expand Down
4 changes: 2 additions & 2 deletions cmd/cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,9 @@ func init() {
Sources: cli.EnvVars("DB_HOST"),
Destination: &dbConfig.Host,
},
&cli.StringFlag{
&cli.IntFlag{
Name: "db-port",
Value: "5432",
Value: 5432,
Usage: "Backend port to be connected to",
Sources: cli.EnvVars("DB_PORT"),
Destination: &dbConfig.Port,
Expand Down
6 changes: 3 additions & 3 deletions cmd/tls/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,8 @@ func osctrlService() {
prometheusServer := http.NewServeMux()
prometheusServer.Handle("/metrics", promhttp.Handler())
go func() {
log.Info().Msgf("Starting prometheus server at %s:%s", flagParams.Metrics.Listener, flagParams.Metrics.Port)
err := http.ListenAndServe(flagParams.Metrics.Listener+":"+flagParams.Metrics.Port, prometheusServer)
log.Info().Msgf("Starting prometheus server at %s:%d", flagParams.Metrics.Listener, flagParams.Metrics.Port)
err := http.ListenAndServe(flagParams.Metrics.Listener+":"+strconv.Itoa(flagParams.Metrics.Port), prometheusServer)
if err != nil {
log.Fatal().Msgf("Error starting prometheus server: %v", err)
}
Expand Down Expand Up @@ -315,7 +315,7 @@ func osctrlService() {
}

// ////////////////////////////// Everything is ready at this point!
serviceListener := flagParams.Service.Listener + ":" + flagParams.Service.Port
serviceListener := flagParams.Service.Listener + ":" + strconv.Itoa(flagParams.Service.Port)
if flagParams.TLS.Termination {
log.Info().Msg("TLS Termination is enabled")
cfg := &tls.Config{
Expand Down
15 changes: 0 additions & 15 deletions deploy/config/db.json

This file was deleted.

6 changes: 0 additions & 6 deletions deploy/config/jwt.json

This file was deleted.

8 changes: 0 additions & 8 deletions deploy/config/redis.json

This file was deleted.

10 changes: 0 additions & 10 deletions deploy/config/service.json

This file was deleted.

81 changes: 39 additions & 42 deletions deploy/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -203,72 +203,69 @@ function certbot_certificates_nginx() {
}

# Service configuration file generation
# string conf_template
# string conf_destination
# string service_host_port (host|port)
# string service_name
# string listener
# string auth_option
# string logging_option
# string carver_option
# string sudo_command
function configuration_service() {
local __conf=$1
local __dest=$2
local __tlshost=`echo $3 | cut -d"|" -f1`
local __tlsport=`echo $3 | cut -d"|" -f2`
local __service=$4
local __listener=$5
local __auth=$6
local __logging=$7
local __carver=$8
local __sudo=$9

log "Generating $__dest configuration"

cat "$__conf" | sed "s|_SERVICE_PORT|$__tlsport|g" | sed "s|_SERVICE_HOST|$__tlshost|g" | sed "s|_LISTENER|$__listener|g" | sed "s|_SERVICE_NAME|$__service|g" | sed "s|_SERVICE_AUTH|$__auth|g" | sed "s|_SERVICE_LOGGING|$__logging|g" | sed "s|_SERVICE_CARVER|$__carver|g" | $__sudo tee "$__dest"
local __dest=$1
local __host=`echo $2 | cut -d"|" -f1`
local __port=`echo $2 | cut -d"|" -f2`
local __auth=$3
local __logging=$4
local __carver=$5

log "Generating $__dest service configuration"

sudo yq ".service.host = \"$__host\"" -i "$__dest"
sudo yq ".service.port = $__port" -i "$__dest"
sudo yq ".service.auth = \"$__auth\"" -i "$__dest"
sudo yq ".logger.type = \"$__logging\"" -i "$__dest"
sudo yq ".carver.type = \"$__carver\"" -i "$__dest"
}

# DB configuration file generation
# string conf_template
# string conf_destination
# string db_host
# string db_port
# string db_name
# string db_username
# string db_password
function configuration_db() {
local __conf=$1
local __dest=$2
local __dbhost=$3
local __dbport=$4
local __dbname=$5
local __dbuser=$6
local __dbpass=$7
local __sudo=$8

log "Generating $__dest configuration"

cat "$__conf" | sed "s|_DB_HOST|$__dbhost|g" | sed "s|_DB_PORT|$__dbport|g" | sed "s|_DB_NAME|$__dbname|g" | sed "s|_DB_USERNAME|$__dbuser|g" | sed "s|_DB_PASSWORD|$__dbpass|g" | $__sudo tee "$__dest"
local __dest=$1
local __dbhost=$2
local __dbport=$3
local __dbname=$4
local __dbuser=$5
local __dbpass=$6

log "Inserting DB configuration values in $__dest"

sudo yq ".db.host = \"$__dbhost\"" -i "$__dest"
sudo yq ".db.port = $__dbport" -i "$__dest"
sudo yq ".db.name = \"$__dbname\"" -i "$__dest"
sudo yq ".db.user = \"$__dbuser\"" -i "$__dest"
sudo yq ".db.pass = \"$__dbpass\"" -i "$__dest"
}

# Cache configuration file generation
# string conf_template
# string conf_destination
# string cache_host
# string cache_port
# string cache_password
function configuration_cache() {
local __conf=$1
local __dest=$2
local __cachehost=$3
local __cacheport=$4
local __cachepass=$5
local __sudo=$6
local __dest=$1
local __cachehost=$2
local __cacheport=$3
local __cachepass=$4

log "Generating $__dest configuration"
log "Inserting cache configuration values in $__dest"

cat "$__conf" | sed "s|_REDIS_HOST|$__cachehost|g" | sed "s|_REDIS_PORT|$__cacheport|g" | sed "s|_REDIS_PASSWORD|$__cachepass|g" | $__sudo tee "$__dest"
sudo yq ".redis.host = \"$__cachehost\"" -i "$__dest"
sudo yq ".redis.port = $__cacheport" -i "$__dest"
sudo yq ".redis.password = \"$__cachepass\"" -i "$__dest"
}

# Enable service as systemd
Expand Down Expand Up @@ -405,9 +402,9 @@ function set_motd_centos() {
echo "$__centosmotd" | sudo tee -a /etc/profile
}

# Install go 1.25.4 from tgz
function install_go_24() {
local __version="1.25.4"
# Install go 1.25.5 from tgz
function install_go_25() {
local __version="1.25.5"
local __arch="$(uname -i)"
if [[ "$__arch" == "aarch64" ]]; then
__arch="arm64"
Expand Down
58 changes: 24 additions & 34 deletions deploy/provision.sh
Original file line number Diff line number Diff line change
Expand Up @@ -138,18 +138,9 @@ _NAME="osctrl"
TLS_COMPONENT="tls"
ADMIN_COMPONENT="admin"
API_COMPONENT="api"
TLS_CONF="$TLS_COMPONENT.json"
ADMIN_CONF="$ADMIN_COMPONENT.json"
API_CONF="$API_COMPONENT.json"
DB_CONF="db.json"
CACHE_CONF="redis.json"
JWT_CONF="jwt.json"
LOGGER_CONF_ADMIN="logger_admin.json"
LOGGER_CONF_TLS="logger_tls.json"
SERVICE_TEMPLATE="service.json"
DB_TEMPLATE="db.json"
CACHE_TEMPLATE="redis.json"
JWT_TEMPLATE="jwt.json"
TLS_CONF="$TLS_COMPONENT.yml"
ADMIN_CONF="$ADMIN_COMPONENT.yml"
API_CONF="$API_COMPONENT.yml"
SYSTEMD_TEMPLATE="systemd.service"
DEV_HOST="osctrl.dev"

Expand Down Expand Up @@ -434,11 +425,12 @@ package openssl
package tmux
package bc
package rsync
package yq

# Golang
# package golang-go
if ! [ -x "$(command -v go)" ]; then
install_go_24
install_go_25
fi

# Upgrade service
Expand Down Expand Up @@ -618,20 +610,20 @@ else
# PostgreSQL - Backend
if [[ "$POSTGRES" == true ]]; then
if [[ "$DISTRO" == "ubuntu" ]]; then
# Ubuntu 22.04 uses postgresql 14
if [[ "$(lsb_release -r | cut -f2 | cut -d'.' -f1)" == "22" ]]; then
package postgresql-14
# Ubuntu 24.04 uses postgresql 18
if [[ "$(lsb_release -r | cut -f2 | cut -d'.' -f1)" == "24" ]]; then
package postgresql-18
package postgresql-contrib
package postgresql-client-14
package postgresql-client-18
POSTGRES_SERVICE="postgresql"
POSTGRES_PSQL="/usr/lib/postgresql/14/bin/psql"
POSTGRES_PSQL="/usr/lib/postgresql/18/bin/psql"
else
# Assuming we are in Ubuntu 20.04, which uses postgresql 12
# Assuming we are in Ubuntu 22.04, which uses postgresql 14
package postgresql
package postgresql-contrib
package postgresql-client-12
package postgresql-client-14
POSTGRES_SERVICE="postgresql"
POSTGRES_PSQL="/usr/lib/postgresql/12/bin/psql"
POSTGRES_PSQL="/usr/lib/postgresql/14/bin/psql"
fi
# Debian uses postgresql 15
elif [[ "$DISTRO" == "debian" ]]; then
Expand Down Expand Up @@ -666,15 +658,13 @@ else
# Prepare destination and configuration folder
sudo mkdir -p "$DEST_PATH/config"

# Generate DB configuration file for services
configuration_db "$SOURCE_PATH/deploy/config/$DB_TEMPLATE" "$DEST_PATH/config/$DB_CONF" "$_DB_HOST" "$_DB_PORT" "$_DB_NAME" "$_DB_USER" "$_DB_PASS" "sudo"
# Prepare DB configuration values for services
configuration_db "$DEST_PATH/config/$TLS_CONF" "$_DB_HOST" "$_DB_PORT" "$_DB_NAME" "$_DB_USER" "$_DB_PASS"

# Generate Cache configuration file for services
configuration_cache "$SOURCE_PATH/deploy/config/$CACHE_TEMPLATE" "$DEST_PATH/config/$CACHE_CONF" "$_CACHE_HOST" "$_CACHE_PORT" "$_CACHE_PASS" "sudo"
# Prepare Cache configuration values for services
configuration_cache "$DEST_PATH/config/$TLS_CONF" "$_CACHE_HOST" "$_CACHE_PORT" "$_CACHE_PASS"

# Prepare DB logger configuration for services
sudo cp "$DEST_PATH/config/$DB_CONF" "$DEST_PATH/config/$LOGGER_CONF_ADMIN"
sudo cp "$DEST_PATH/config/$DB_CONF" "$DEST_PATH/config/$LOGGER_CONF_TLS"
configuration_service "$DEST_PATH/config/$TLS_CONF" "$_T_HOST|$_T_INT_PORT" "$_T_AUTH" "$_T_LOGGING" "$_T_CARVER"

# JWT configuration
cat "$SOURCE_PATH/deploy/config/$JWT_TEMPLATE" | sed "s|_JWT_SECRET|$_JWT_SECRET|g" | sudo tee "$DEST_PATH/config/$JWT_CONF"
Expand All @@ -693,8 +683,8 @@ else
# Build TLS service
make tls

# Configuration file generation for TLS service
configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$TLS_CONF" "$_T_HOST|$_T_INT_PORT" "$TLS_COMPONENT" "127.0.0.1" "$_T_AUTH" "$_T_LOGGING" "$_T_CARVER" "sudo"
# Prepare configuration values for TLS service
#configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$TLS_CONF" "$_T_HOST|$_T_INT_PORT" "$TLS_COMPONENT" "127.0.0.1" "$_T_AUTH" "$_T_LOGGING" "$_T_CARVER" "sudo"

# Systemd configuration for TLS service
_systemd "osctrl" "osctrl" "osctrl-tls" "$SOURCE_PATH" "$DEST_PATH" "--redis --db --config"
Expand All @@ -704,8 +694,8 @@ else
# Build Admin service
make admin

# Configuration file generation for Admin service
configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$ADMIN_CONF" "$_A_HOST|$_A_INT_PORT" "$ADMIN_COMPONENT" "127.0.0.1" "$_A_AUTH" "$_A_LOGGING" "$_A_CARVER" "sudo"
# Prepare configuration values for Admin service
#configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$ADMIN_CONF" "$_A_HOST|$_A_INT_PORT" "$ADMIN_COMPONENT" "127.0.0.1" "$_A_AUTH" "$_A_LOGGING" "$_A_CARVER" "sudo"

# Prepare data folder
sudo mkdir -p "$DEST_PATH/data"
Expand All @@ -729,8 +719,8 @@ else
# Build API service
make api

# Configuration file generation for API service
configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$API_CONF" "$_P_HOST|$_P_INT_PORT" "$API_COMPONENT" "127.0.0.1" "$_P_AUTH" "$_P_LOGGING" "$_P_CARVER" "sudo"
# Prepare configuration values for API service
#configuration_service "$SOURCE_PATH/deploy/config/$SERVICE_TEMPLATE" "$DEST_PATH/config/$API_CONF" "$_P_HOST|$_P_INT_PORT" "$API_COMPONENT" "127.0.0.1" "$_P_AUTH" "$_P_LOGGING" "$_P_CARVER" "sudo"

# Systemd configuration for API service
_systemd "osctrl" "osctrl" "osctrl-api" "$SOURCE_PATH" "$DEST_PATH" "--redis --db --jwt --config"
Expand Down
Loading
Loading