go: add local breach data schema
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
ff68a7dbe3
commit
11de8de558
2
go.mod
2
go.mod
|
@ -16,6 +16,7 @@ require (
|
|||
golang.org/x/crypto v0.6.0
|
||||
golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53
|
||||
golang.org/x/time v0.3.0
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
)
|
||||
|
||||
require (
|
||||
|
@ -47,7 +48,6 @@ require (
|
|||
golang.org/x/sys v0.7.0 // indirect
|
||||
golang.org/x/text v0.9.0 // indirect
|
||||
golang.org/x/tools v0.6.1-0.20230222164832-25d2519c8696 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
lukechampine.com/uint128 v1.2.0 // indirect
|
||||
modernc.org/cc/v3 v3.40.0 // indirect
|
||||
modernc.org/ccgo/v3 v3.16.13 // indirect
|
||||
|
|
1
go.sum
1
go.sum
|
@ -150,6 +150,7 @@ golang.org/x/tools v0.6.1-0.20230222164832-25d2519c8696/go.mod h1:Xwgl3UAJ/d3gWu
|
|||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
// Copyright 2023 wanderer <a_mirre at utb dot cz>
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
package localbreach
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"time"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type BreachDataSchema struct {
|
||||
Name string `yaml:"name" validate:"required,name"`
|
||||
Time time.Time `yaml:"time"`
|
||||
IsVerified bool `yaml:"isVerified"`
|
||||
ContainsPasswords bool `yaml:"containsPasswds"`
|
||||
ContainsHashes bool `yaml:"containsHashes"`
|
||||
HashType string `yaml:"hashType"`
|
||||
HashSalted bool `yaml:"hashSalted"`
|
||||
ContainsUsernames bool `yaml:"containsUsernames"`
|
||||
ContainsEmails bool `yaml:"containsEmails"`
|
||||
Data any `yaml:"data"`
|
||||
}
|
||||
|
||||
// Load loads local breach data.
|
||||
func Load(path string) (*BreachDataSchema, error) {
|
||||
b, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
localBreach, err := loadLocalBreach(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return localBreach, nil
|
||||
}
|
||||
|
||||
func loadLocalBreach(b []byte) (*BreachDataSchema, error) {
|
||||
localBreach := new(BreachDataSchema)
|
||||
|
||||
err := yaml.Unmarshal(b, localBreach)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return localBreach, nil
|
||||
}
|
Loading…
Reference in New Issue