admin/pki: use symlink instead of DB to associate certificate to team
This commit is contained in:
parent
73eb04bcf0
commit
156a87abc0
4 changed files with 83 additions and 46 deletions
46
admin/pki/team.go
Normal file
46
admin/pki/team.go
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
package pki
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func GetCertificateAssociation(serial uint64) string {
|
||||
return fmt.Sprintf("_AUTH_ID_%0X", serial)
|
||||
}
|
||||
|
||||
func GetAssociations(dirname string) (assocs []string, err error) {
|
||||
if ds, errr := ioutil.ReadDir(dirname); err != nil {
|
||||
return nil, errr
|
||||
} else {
|
||||
for _, d := range ds {
|
||||
if d.Mode() & os.ModeSymlink == os.ModeSymlink {
|
||||
assocs = append(assocs, d.Name())
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func GetTeamSerials(dirname string, id_team int64) (serials []uint64, err error) {
|
||||
// As futher comparaisons will be made with strings, convert it only one time
|
||||
str_tid := fmt.Sprintf("%d", id_team)
|
||||
|
||||
var assocs []string
|
||||
if assocs, err = GetAssociations(dirname); err != nil {
|
||||
return
|
||||
} else {
|
||||
for _, assoc := range assocs {
|
||||
var tid string
|
||||
if tid, err = os.Readlink(path.Join(dirname, assoc)); err == nil && tid == str_tid {
|
||||
if serial, err := strconv.ParseUint(assoc[9:], 16, 64); err == nil {
|
||||
serials = append(serials, serial)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in a new issue