From 219d288226445fc2a4dc992a95fe9d8d8375890a Mon Sep 17 00:00:00 2001 From: Dan Fuhry Date: Sun, 14 Jan 2024 20:00:32 -0500 Subject: [PATCH] Make some other constants overrideable --- Makefile | 36 +++++++++++++------- constants/constants.go | 14 ++++++-- grpc/acl/acl_yaml.go | 3 +- metrics/metricbus/constants.go | 6 ++-- metrics/metricbus/internal/dbus_interface.go | 2 +- metrics/metricbus/internal/server.go | 4 +-- metrics/metricbus/mbclient/conn.go | 4 +-- 7 files changed, 45 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 1978c74..0251cc0 100644 --- a/Makefile +++ b/Makefile @@ -10,22 +10,32 @@ SD_DOMAIN := v.$(ROOT_DOMAIN) WEB_SERVICES_DOMAIN := $(ROOT_DOMAIN) MACHINES_HOST := machines.$(WEB_SERVICES_DOMAIN) MACHINES_MQTT_TOPIC := machines/events -ROOT_CA_NAME := FooCorp Root -INT_CA_NAME := FooCorp Intermediate mTLS -DEVICE_TRUST_TOKEN_NAME := FooCorp Device Trust +DBUS_PREFIX := dev.fuhry.runtime +DBUS_PATH := /$(subst .,/,$(DBUS_PREFIX)) +ORG_NAME := FooCorp +ORG_SLUG := runtime +SYSTEM_CONF_DIR := /etc/$(ORG_SLUG) +ROOT_CA_NAME := $(ORG_NAME) Root +INT_CA_NAME := $(ORG_NAME) Intermediate mTLS +DEVICE_TRUST_TOKEN_NAME := $(ORG_NAME) Device Trust LDFLAGS := -LDFLAGS += -X=go.fuhry.dev/runtime/constants.RootDomain=$(ROOT_DOMAIN) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.DefaultRegion=$(DEFAULT_REGION) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.DefaultHostDomain=$(DEFAULT_HOST_DOMAIN) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.SDDomain=$(SD_DOMAIN) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.WebServicesDomain=$(WEB_SERVICES_DOMAIN) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.MachinesHost=$(MACHINES_HOST) -LDFLAGS += -X=go.fuhry.dev/runtime/constants.MachinesMqttTopic=$(MACHINES_MQTT_TOPIC) -#LDFLAGS += -X="go.fuhry.dev/runtime/constants.RootCAName=$(ROOT_CA_NAME)" -#LDFLAGS += -X="go.fuhry.dev/runtime/constants.IntCAName=$(INT_CA_NAME)" -#LDFLAGS += -X="go.fuhry.dev/runtime/constants.DeviceTrustTokenName=$(DEVICE_TRUST_TOKEN_NAME)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.RootDomain=$(ROOT_DOMAIN)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.DefaultRegion=$(DEFAULT_REGION)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.DefaultHostDomain=$(DEFAULT_HOST_DOMAIN)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.SDDomain=$(SD_DOMAIN)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.WebServicesDomain=$(WEB_SERVICES_DOMAIN)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.MachinesHost=$(MACHINES_HOST)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.MachinesMqttTopic=$(MACHINES_MQTT_TOPIC)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.DbusPrefix=$(DBUS_PREFIX)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.DbusPath=$(DBUS_PATH)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.OrgName=$(ORG_NAME)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.OrgSlug=$(ORG_SLUG)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.SystemConfDir=$(SYSTEM_CONF_DIR)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.RootCAName=$(ROOT_CA_NAME)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.IntCAName=$(INT_CA_NAME)" +LDFLAGS += -X "go.fuhry.dev/runtime/constants.DeviceTrustTokenName=$(DEVICE_TRUST_TOKEN_NAME)" define GOPROG_template = GOMAINS += $(1)/$(2) diff --git a/constants/constants.go b/constants/constants.go index 05d1e7f..9728045 100644 --- a/constants/constants.go +++ b/constants/constants.go @@ -1,5 +1,7 @@ package constants +import "strings" + var ( RootDomain = "fuhry.dev" DefaultRegion = "hq" @@ -8,8 +10,14 @@ var ( WebServicesDomain = RootDomain MachinesHost = "machines." + WebServicesDomain MachinesMqttTopic = "machines/events" + DbusPrefix = "dev.fuhry.runtime" + DbusPath = "/" + strings.ReplaceAll(DbusPrefix, ".", "/") + + OrgName = "FooCorp" + OrgSlug = "runtime" + SystemConfDir = "/etc/" + OrgSlug - RootCAName = "FooCorp Root" - IntCAName = "FooCorp Intermediate mTLS" - DeviceTrustTokenName = "FooCorp Device Trust" + RootCAName = OrgName + " Root" + IntCAName = OrgName + " Intermediate mTLS" + DeviceTrustTokenName = OrgName + " Device Trust" ) diff --git a/grpc/acl/acl_yaml.go b/grpc/acl/acl_yaml.go index 53ed632..648ef44 100644 --- a/grpc/acl/acl_yaml.go +++ b/grpc/acl/acl_yaml.go @@ -7,6 +7,7 @@ import ( "path" "strings" + "go.fuhry.dev/runtime/constants" "go.fuhry.dev/runtime/mtls" "go.fuhry.dev/runtime/utils/log" "gopkg.in/yaml.v3" @@ -42,7 +43,7 @@ type aclYaml struct { var aclSearchPaths = []string{ ".", - "/etc/runtime/grpc", + path.Join(constants.SystemConfDir, "grpc"), } func TryLoadAcl(serverId mtls.Identity) ACLChecker { diff --git a/metrics/metricbus/constants.go b/metrics/metricbus/constants.go index 3bdf05e..94f7f55 100644 --- a/metrics/metricbus/constants.go +++ b/metrics/metricbus/constants.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/godbus/dbus/v5" + "go.fuhry.dev/runtime/constants" ) type MetricType uint @@ -21,8 +22,9 @@ const ( ErrMetricNotFound ) -const DbusServiceName = "dev.fuhry.runtime.metrics.MetricCollector.v1" -const DbusServicePath = "/dev/fuhry/runtime/metrics/MetricCollector" +var DbusServiceName = constants.DbusPrefix + ".metrics.MetricCollector.v1" +var DbusServicePath = constants.DbusPath + "/metrics/MetricCollector" + const SingletonInstanceDiscriminator = "GLOBAL" type KV map[string]string diff --git a/metrics/metricbus/internal/dbus_interface.go b/metrics/metricbus/internal/dbus_interface.go index d5fffd0..58e25d7 100644 --- a/metrics/metricbus/internal/dbus_interface.go +++ b/metrics/metricbus/internal/dbus_interface.go @@ -21,7 +21,7 @@ func DbusConn() (*dbus.Conn, error) { return dbus.ConnectSystemBus() } -const dbusInterface = ` +var dbusInterface = ` diff --git a/metrics/metricbus/internal/server.go b/metrics/metricbus/internal/server.go index 8c51d60..8700142 100644 --- a/metrics/metricbus/internal/server.go +++ b/metrics/metricbus/internal/server.go @@ -163,8 +163,8 @@ func (s *mbServer) Start(ctx context.Context) error { s.log.V(2).Notice("Connected to D-Bus") - dbusConn.Export(s.servicer, metricbus.DbusServicePath, metricbus.DbusServiceName) - dbusConn.Export(introspect.Introspectable(dbusInterface), metricbus.DbusServicePath, "org.fredesktop.DBus.Introspectable") + dbusConn.Export(s.servicer, dbus.ObjectPath(metricbus.DbusServicePath), metricbus.DbusServiceName) + dbusConn.Export(introspect.Introspectable(dbusInterface), dbus.ObjectPath(metricbus.DbusServicePath), "org.fredesktop.DBus.Introspectable") reply, err := dbusConn.RequestName(metricbus.DbusServiceName, dbus.NameFlagDoNotQueue) if err != nil { diff --git a/metrics/metricbus/mbclient/conn.go b/metrics/metricbus/mbclient/conn.go index 80e8e93..2065ccd 100644 --- a/metrics/metricbus/mbclient/conn.go +++ b/metrics/metricbus/mbclient/conn.go @@ -17,7 +17,7 @@ var globalDbusConnOnce sync.Once var globalDbusMetricBusObj dbus.BusObject var globalDbusMetricBusObjMu sync.Mutex -const metricBusApiPrefix = metricbus.DbusServiceName +var metricBusApiPrefix = metricbus.DbusServiceName type metricBusLowLevelClient struct { ctx context.Context @@ -59,7 +59,7 @@ func metricBusDbusObject(ctx context.Context) (dbus.BusObject, error) { if globalDbusMetricBusObj == nil { conn := mustGlobalDbusConn(ctx) - globalDbusMetricBusObj = conn.Object(metricBusApiPrefix, metricbus.DbusServicePath) + globalDbusMetricBusObj = conn.Object(metricBusApiPrefix, dbus.ObjectPath(metricbus.DbusServicePath)) if globalDbusMetricBusObj == nil { log.Default().Errorf("failed to get BusObject") -- 2.50.1