This commit is contained in:
@@ -18,8 +18,7 @@ type RetrieveInput struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ListSecret struct {
|
type ListSecret struct {
|
||||||
//RoleId int `db:"RoleId" json:"-"`
|
SecretId int `db:"SecretId"`
|
||||||
SecretId int `db:"SecretId" json:"-"`
|
|
||||||
SafeId int `db:"SafeId"`
|
SafeId int `db:"SafeId"`
|
||||||
DeviceName string `db:"DeviceName"`
|
DeviceName string `db:"DeviceName"`
|
||||||
DeviceCategory string `db:"DeviceCategory"`
|
DeviceCategory string `db:"DeviceCategory"`
|
||||||
|
@@ -9,7 +9,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"reflect"
|
"smt/utils"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
@@ -54,36 +54,6 @@ func (s *Secret) SaveSecret() (*Secret, error) {
|
|||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func printStructContents(s interface{}, indentLevel int) string {
|
|
||||||
var result strings.Builder
|
|
||||||
|
|
||||||
val := reflect.ValueOf(s)
|
|
||||||
|
|
||||||
if val.Kind() == reflect.Ptr {
|
|
||||||
val = val.Elem()
|
|
||||||
}
|
|
||||||
|
|
||||||
typ := val.Type()
|
|
||||||
|
|
||||||
for i := 0; i < val.NumField(); i++ {
|
|
||||||
field := val.Field(i)
|
|
||||||
fieldType := typ.Field(i)
|
|
||||||
|
|
||||||
indent := strings.Repeat("\t", indentLevel)
|
|
||||||
result.WriteString(fmt.Sprintf("%s%s: ", indent, fieldType.Name))
|
|
||||||
|
|
||||||
switch field.Kind() {
|
|
||||||
case reflect.Struct:
|
|
||||||
result.WriteString("\n")
|
|
||||||
result.WriteString(printStructContents(field.Interface(), indentLevel+1))
|
|
||||||
default:
|
|
||||||
result.WriteString(fmt.Sprintf("%v\n", field.Interface()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
func SecretsGetAllowed(s *Secret, userId int) ([]UserSecret, error) {
|
func SecretsGetAllowed(s *Secret, userId int) ([]UserSecret, error) {
|
||||||
// Query based on group
|
// Query based on group
|
||||||
// SELECT users.UserId, users.GroupId, permissions.ReadOnly, permissions.SafeId, safes.SafeName, secrets.* FROM users INNER JOIN groups ON users.GroupId = groups.GroupId INNER JOIN permissions ON groups.GroupId = permissions.GroupId INNER JOIN safes on permissions.SafeId = safes.SafeId INNER JOIN secrets on secrets.SafeId = safes.SafeId WHERE users.UserId = 2
|
// SELECT users.UserId, users.GroupId, permissions.ReadOnly, permissions.SafeId, safes.SafeName, secrets.* FROM users INNER JOIN groups ON users.GroupId = groups.GroupId INNER JOIN permissions ON groups.GroupId = permissions.GroupId INNER JOIN safes on permissions.SafeId = safes.SafeId INNER JOIN secrets on secrets.SafeId = safes.SafeId WHERE users.UserId = 2
|
||||||
@@ -172,7 +142,7 @@ func SecretsGetAllowed(s *Secret, userId int) ([]UserSecret, error) {
|
|||||||
return secretResults, err
|
return secretResults, err
|
||||||
}
|
}
|
||||||
//log.Printf("r: %v\n", r)
|
//log.Printf("r: %v\n", r)
|
||||||
debugPrint := printStructContents(&r, 0)
|
debugPrint := utils.PrintStructContents(&r, 0)
|
||||||
log.Println(debugPrint)
|
log.Println(debugPrint)
|
||||||
|
|
||||||
// Don't decrypt the secrets in the results of this query
|
// Don't decrypt the secrets in the results of this query
|
||||||
|
@@ -6,11 +6,14 @@ import (
|
|||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"crypto/x509/pkix"
|
"crypto/x509/pkix"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"math/big"
|
"math/big"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -183,3 +186,33 @@ func GenerateCerts(tlsCert string, tlsKey string) {
|
|||||||
}
|
}
|
||||||
log.Printf("wrote %s\n", tlsKey)
|
log.Printf("wrote %s\n", tlsKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PrintStructContents(s interface{}, indentLevel int) string {
|
||||||
|
var result strings.Builder
|
||||||
|
|
||||||
|
val := reflect.ValueOf(s)
|
||||||
|
|
||||||
|
if val.Kind() == reflect.Ptr {
|
||||||
|
val = val.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
typ := val.Type()
|
||||||
|
|
||||||
|
for i := 0; i < val.NumField(); i++ {
|
||||||
|
field := val.Field(i)
|
||||||
|
fieldType := typ.Field(i)
|
||||||
|
|
||||||
|
indent := strings.Repeat("\t", indentLevel)
|
||||||
|
result.WriteString(fmt.Sprintf("%s%s: ", indent, fieldType.Name))
|
||||||
|
|
||||||
|
switch field.Kind() {
|
||||||
|
case reflect.Struct:
|
||||||
|
result.WriteString("\n")
|
||||||
|
result.WriteString(PrintStructContents(field.Interface(), indentLevel+1))
|
||||||
|
default:
|
||||||
|
result.WriteString(fmt.Sprintf("%v\n", field.Interface()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.String()
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user