Skip to content

Commit

Permalink
Restrict database tables
Browse files Browse the repository at this point in the history
  • Loading branch information
tknie committed Oct 12, 2024
1 parent ee922b8 commit 1937ab9
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 15 deletions.
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ require (
github.com/tknie/goheif v0.0.0-20240128173714-9840945571ae
github.com/tknie/log v0.0.0-20231006083545-fabe25f4fb0e
github.com/tknie/services v0.0.0-20240921190600-dfa536a8eb7c
go.opentelemetry.io/otel v1.30.0
go.opentelemetry.io/otel/metric v1.30.0
go.opentelemetry.io/otel/trace v1.30.0
go.opentelemetry.io/otel v1.31.0
go.opentelemetry.io/otel/metric v1.31.0
go.opentelemetry.io/otel/trace v1.31.0
go.uber.org/multierr v1.11.0
gopkg.in/yaml.v3 v3.0.1
)
Expand Down Expand Up @@ -61,7 +61,7 @@ require (
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd
github.com/segmentio/asm v1.2.0 // indirect
github.com/tknie/errorrepo v0.0.0-20240912184714-682ebdc389d9
github.com/tknie/flynn v0.0.0-20241010184746-cc22d3c76b7b
github.com/tknie/flynn v0.0.0-20241012080150-14eaf0a66048
github.com/tknie/pam v0.0.0-20221009204632-bfcf495c828d // indirect
go.uber.org/zap v1.27.0
golang.org/x/crypto v0.28.0 // indirect
Expand Down
8 changes: 8 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ github.com/tknie/flynn v0.0.0-20241010182905-cea3702a93cd h1:XJxqhfLLyDqF23MEwkJ
github.com/tknie/flynn v0.0.0-20241010182905-cea3702a93cd/go.mod h1:PT0KLQe23svgmu9JcuBqVCpY2Gq77vL/nGztgmyT7/Y=
github.com/tknie/flynn v0.0.0-20241010184746-cc22d3c76b7b h1:GM5W9oUnncCPn7+CL26V21N1NhUHNgCwX+w2EP1hNsg=
github.com/tknie/flynn v0.0.0-20241010184746-cc22d3c76b7b/go.mod h1:PT0KLQe23svgmu9JcuBqVCpY2Gq77vL/nGztgmyT7/Y=
github.com/tknie/flynn v0.0.0-20241012080150-14eaf0a66048 h1:dEG16Gb4vFQocfwLYURotHNOcplCkNGF6khWUB5vL0o=
github.com/tknie/flynn v0.0.0-20241012080150-14eaf0a66048/go.mod h1:PT0KLQe23svgmu9JcuBqVCpY2Gq77vL/nGztgmyT7/Y=
github.com/tknie/goheif v0.0.0-20240128173714-9840945571ae h1:EY2CEji+jwHG16tP0kOfuw2V8M5naCyWp7VqADAEO/E=
github.com/tknie/goheif v0.0.0-20240128173714-9840945571ae/go.mod h1:dVvJAEmU8sloNLQh1wq2+GPwxa/9gg3VXuK/FO8eGX4=
github.com/tknie/log v0.0.0-20231006083545-fabe25f4fb0e h1:aNgWs7XTC4vcIcmzQT496neJexEvjx0Kv2/ho2xUlgo=
Expand All @@ -189,10 +191,16 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
Expand Down
17 changes: 10 additions & 7 deletions server/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ package server

import (
"embed"
"os"
"strconv"
"sync"
"time"
Expand Down Expand Up @@ -194,12 +195,13 @@ type Directory struct {

// Database database
type Database struct {
Driver string `yaml:"driver"`
User string `yaml:"user,omitempty"`
Password string `yaml:"password,omitempty"`
Target string `yaml:"target,omitempty"`
Table string `yaml:"table,omitempty"`
Enabled bool `yaml:"enabled,omitempty"`
Driver string `yaml:"driver"`
User string `yaml:"user,omitempty"`
Password string `yaml:"password,omitempty"`
Target string `yaml:"target,omitempty"`
Table string `yaml:"table,omitempty"`
Tables []string `yaml:"tables,omitempty"`
Enabled bool `yaml:"enabled,omitempty"`
}

// Viewer containing server config
Expand Down Expand Up @@ -233,8 +235,9 @@ func LoadedConfig() {

// String representation of Database instance
func (db *Database) String() string {
ref, p, err := common.NewReference(db.Target)
ref, p, err := common.NewReference(os.ExpandEnv(db.Target))
if err != nil {
log.Log.Debugf("Parse error target: %v", db.Target)
return "<Error: " + err.Error() + ">"
}
if db.Password == "" {
Expand Down
15 changes: 11 additions & 4 deletions server/mapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"crypto/md5"
"fmt"
"os"
"slices"
"strings"
"time"

Expand Down Expand Up @@ -66,15 +67,18 @@ func Handles(dm *Database) (*common.Reference, error) {
target := os.ExpandEnv(dm.Target)
ref, _, err := common.NewReference(target)
if err != nil {
return nil, fmt.Errorf("error parsing target <%s>: %s", dm.Target, err)
return nil, fmt.Errorf("error parsing target <%s>: %s -> %s", dm.Target, err, target)
}
log.Log.Debugf("Register database handler")
log.Log.Debugf("Register database handler %#v", dm)
_, err = flynn.Handler(ref, os.ExpandEnv(dm.Password))
if err != nil {
services.ServerMessage("Error registering database <%s>: %v", dm.Target, err)
return nil, fmt.Errorf("error registering database")
}
dbList[dHash] = ref
for i := 0; i < len(dm.Tables); i++ {
dm.Tables[i] = strings.ToLower(dm.Tables[i])
}
services.ServerMessage("Registered database driver=%s to %s:%d/%s",
dm.Driver, ref.Host, ref.Port, ref.Database)
return ref, nil
Expand All @@ -89,6 +93,7 @@ func initTableOfDatabases() {
func loadTableOfDatabases() {
log.Log.Debugf("Refreshing database list")
for _, dm := range Viewer.Database.DatabaseAccess.Database {
log.Log.Debugf("Access database %#v", dm)
//u := dm.URL
//m := regexp.MustCompile(`(?m):[^:]*@`)
//m := regexp.MustCompile(`(?m)\${[^{]*PASS[^}]*}`)
Expand All @@ -106,8 +111,10 @@ func loadTableOfDatabases() {
services.ServerMessage("Found table on different databases: [%s]", s)
}
} else {
newDatabases = append(newDatabases, s)
dbDictionary[s] = id
if len(dm.Tables) == 0 || slices.Contains(dm.Tables, strings.ToLower(table)) {
newDatabases = append(newDatabases, s)
dbDictionary[s] = id
}
}
}
if len(newDatabases) > 0 {
Expand Down

0 comments on commit 1937ab9

Please sign in to comment.