Skip to content

Commit fb32a92

Browse files
authored
1135 normalize vulnerability dataset for buff (#1143)
Data set is normalized, embeddings are created for the content, and embeddings are sent to pinecone.
1 parent e1f332d commit fb32a92

File tree

16 files changed

+821
-220
lines changed

16 files changed

+821
-220
lines changed

.idea/dataSources.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/lunasec-monorepo.iml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ require (
8282
github.com/Microsoft/go-winio v0.5.2 // indirect
8383
github.com/ProtonMail/go-crypto v0.0.0-20220824120805-4b6e5c587895 // indirect
8484
github.com/PuerkitoBio/goquery v1.8.0 // indirect
85+
github.com/PullRequestInc/go-gpt3 v1.1.11 // indirect
8586
github.com/ThalesIgnite/crypto11 v1.2.5 // indirect
8687
github.com/acobaugh/osrelease v0.1.0 // indirect
8788
github.com/acomagu/bufpipe v1.0.3 // indirect
@@ -125,6 +126,9 @@ require (
125126
github.com/bmatcuk/doublestar/v4 v4.0.2 // indirect
126127
github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect
127128
github.com/cespare/xxhash/v2 v2.1.2 // indirect
129+
github.com/chromedp/cdproto v0.0.0-20230220211738-2b1ec77315c9 // indirect
130+
github.com/chromedp/chromedp v0.8.7 // indirect
131+
github.com/chromedp/sysutil v1.0.0 // indirect
128132
github.com/cloudflare/circl v1.1.0 // indirect
129133
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect
130134
github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc // indirect
@@ -175,6 +179,9 @@ require (
175179
github.com/go-resty/resty/v2 v2.7.0 // indirect
176180
github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65 // indirect
177181
github.com/go-test/deep v1.0.8 // indirect
182+
github.com/gobwas/httphead v0.1.0 // indirect
183+
github.com/gobwas/pool v0.2.1 // indirect
184+
github.com/gobwas/ws v1.1.0 // indirect
178185
github.com/goccy/go-json v0.9.11 // indirect
179186
github.com/gogo/protobuf v1.3.2 // indirect
180187
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect
@@ -271,6 +278,7 @@ require (
271278
github.com/pelletier/go-toml v1.9.5 // indirect
272279
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
273280
github.com/pierrec/lz4/v4 v4.1.15 // indirect
281+
github.com/pinecone-io/go-pinecone v0.3.0 // indirect
274282
github.com/pmezard/go-difflib v1.0.0 // indirect
275283
github.com/prometheus/client_golang v1.13.0 // indirect
276284
github.com/prometheus/client_model v0.2.0 // indirect

go.sum

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@ github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
260260
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
261261
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
262262
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
263+
github.com/PullRequestInc/go-gpt3 v1.1.11 h1:kZtCbAnUEKfUS50a+0TR2p9rJtz4t57THf5cxN3Ye/o=
264+
github.com/PullRequestInc/go-gpt3 v1.1.11/go.mod h1:F9yzAy070LhkqHS2154/IH0HVj5xq5g83gLTj7xzyfw=
263265
github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
264266
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
265267
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
@@ -542,6 +544,12 @@ github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOo
542544
github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M=
543545
github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E=
544546
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
547+
github.com/chromedp/cdproto v0.0.0-20230220211738-2b1ec77315c9 h1:wMSvdj3BswqfQOXp2R1bJOAE7xIQLt2dlMQDMf836VY=
548+
github.com/chromedp/cdproto v0.0.0-20230220211738-2b1ec77315c9/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=
549+
github.com/chromedp/chromedp v0.8.7 h1:dYOYc5ynTBzwSLOi+1IfgHwPr8r2BqV48l/RC+3OuJ0=
550+
github.com/chromedp/chromedp v0.8.7/go.mod h1:iL+ywnwk3eG3EVXV1ackXBMNzdEh3Ye/KHvQkq1KRKU=
551+
github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic=
552+
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
545553
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
546554
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
547555
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
@@ -1061,8 +1069,14 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V
10611069
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
10621070
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
10631071
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
1072+
github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
1073+
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
10641074
github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
1075+
github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
1076+
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
10651077
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
1078+
github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA=
1079+
github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0=
10661080
github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk=
10671081
github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
10681082
github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA=
@@ -1333,6 +1347,7 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4G
13331347
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
13341348
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
13351349
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
1350+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.2/go.mod h1:lsuH8kb4GlMdSlI4alNIBBSAt5CHJtg3i+0WuN9J5YM=
13361351
github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ=
13371352
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk=
13381353
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w=
@@ -1756,6 +1771,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182aff
17561771
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
17571772
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
17581773
github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY=
1774+
github.com/maxbrunsfeld/counterfeiter/v6 v6.2.3/go.mod h1:1ftk08SazyElaaNvmqAfZWGwJzshjCfBXDLoQtPAMNk=
17591775
github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc=
17601776
github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
17611777
github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg=
@@ -1996,6 +2012,8 @@ github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9F
19962012
github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
19972013
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
19982014
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
2015+
github.com/pinecone-io/go-pinecone v0.3.0 h1:+t0CiYaaA+JN6YM9QRNlvfLEr2kkGzcVEj/xNmSAON4=
2016+
github.com/pinecone-io/go-pinecone v0.3.0/go.mod h1:VdSieE1r4jT3XydjFi+iL5w9qsGRz/x8LxWach2Hnv8=
19992017
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
20002018
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
20012019
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -2155,6 +2173,7 @@ github.com/schollz/progressbar/v3 v3.8.6 h1:QruMUdzZ1TbEP++S1m73OqRJk20ON11m6Wqv
21552173
github.com/schollz/progressbar/v3 v3.8.6/go.mod h1:W5IEwbJecncFGBvuEh4A7HT1nZZ6WNIL2i3qbnI0WKY=
21562174
github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
21572175
github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U=
2176+
github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
21582177
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ=
21592178
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs=
21602179
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg=
@@ -2971,6 +2990,7 @@ golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7w
29712990
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29722991
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29732992
golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2993+
golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29742994
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29752995
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
29762996
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -3146,6 +3166,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK
31463166
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
31473167
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
31483168
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
3169+
golang.org/x/tools v0.0.0-20200301222351-066e0c02454c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
31493170
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
31503171
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
31513172
golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=

lunatrace/bsl/ingest-worker/cmd/ingestworker/main.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@ import (
3535
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/metadata/registry"
3636
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/metadata/replicator"
3737
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/metadata/replicator/npm"
38+
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/openaifx"
39+
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/pineconefx"
3840
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/scanner/licensecheck"
3941
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/scanner/packagejson"
4042
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/vulnerability/affected"
43+
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/vulnerability/process"
4144

4245
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/cmd/ingestworker/license"
4346
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/metadata/ingester"
@@ -56,12 +59,14 @@ func main() {
5659
dbfx.Module,
5760
registry.NPMModule,
5861
ingester.Module,
62+
openaifx.Module,
63+
pineconefx.Module,
5964

6065
fx.Provide(
6166
cwe2.NewCWEIngester,
6267
epss2.NewEPSSIngester,
6368
cisa2.NewCISAKnownVulnIngester,
64-
vulnmanager.NewProcessor,
69+
process.NewProcessor,
6570
),
6671

6772
// todo make a module

lunatrace/bsl/ingest-worker/cmd/ingestworker/vulnerability/vulnerability.go

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,21 @@
1111
package vulnerability
1212

1313
import (
14-
"encoding/json"
15-
"os"
16-
1714
"github.com/rs/zerolog/log"
1815
"github.com/urfave/cli/v2"
1916
"go.uber.org/fx"
2017

2118
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/vulnerability"
2219
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/vulnerability/affected"
20+
"github.com/lunasec-io/lunasec/lunatrace/bsl/ingest-worker/pkg/vulnerability/process"
2321

2422
"github.com/ajvpot/clifx"
2523
)
2624

2725
type Params struct {
2826
fx.In
2927

30-
Processor vulnerability.Processor
28+
Processor process.Processor
3129
Ingester vulnerability.AdvisoryIngester
3230
AffectedIngester affected.Ingester
3331
}
@@ -43,26 +41,44 @@ func NewCommand(p Params) clifx.CommandResult {
4341
Flags: []cli.Flag{
4442
&cli.StringFlag{
4543
Name: "db",
46-
Usage: "Cache database location",
44+
Usage: "Cache database location.",
4745
Required: false,
4846
},
4947
},
5048
Subcommands: []*cli.Command{
5149
{
5250
Name: "cache",
51+
Flags: []cli.Flag{
52+
&cli.StringFlag{
53+
Name: "vuln",
54+
Usage: "Cache specific vulnerability.",
55+
Required: false,
56+
},
57+
},
5358
Action: func(ctx *cli.Context) error {
5459
cache := ctx.String("db")
55-
return p.Processor.ProcessAllVulnerabilities(cache)
60+
vuln := ctx.String("vuln")
61+
return p.Processor.ProcessVulnerabilities(cache, vuln)
5662
},
5763
},
5864
{
59-
Name: "save",
65+
Name: "embedding",
6066
Flags: []cli.Flag{
6167
&cli.StringFlag{
62-
Name: "out",
63-
Usage: "Output file location.",
68+
Name: "vuln",
69+
Usage: "Cache specific vulnerability.",
6470
Required: false,
6571
},
72+
},
73+
Action: func(ctx *cli.Context) error {
74+
cache := ctx.String("db")
75+
vuln := ctx.String("vuln")
76+
return p.Processor.GenerateEmbeddingsForContent(cache, vuln)
77+
},
78+
},
79+
{
80+
Name: "save",
81+
Flags: []cli.Flag{
6682
&cli.BoolFlag{
6783
Name: "markdown",
6884
Usage: "Output in markdown format. Default is json.",
@@ -71,36 +87,11 @@ func NewCommand(p Params) clifx.CommandResult {
7187
},
7288
Usage: "[vulnerability id]",
7389
Action: func(ctx *cli.Context) error {
74-
firstArg := ctx.Args().First()
75-
out := ctx.String("out")
90+
out := ctx.Args().First()
7691
markdown := ctx.Bool("markdown")
7792
cache := ctx.String("db")
7893

79-
if firstArg == "" {
80-
return p.Processor.LoadAndOutputToDir(cache, out, markdown)
81-
}
82-
83-
vuln, err := p.Processor.ProcessVulnerabilityID(firstArg)
84-
if err != nil {
85-
return err
86-
}
87-
content, err := json.MarshalIndent(vuln, "", "\t")
88-
if err != nil {
89-
return err
90-
}
91-
92-
if out != "" {
93-
err = os.WriteFile(out, content, 0644)
94-
if err != nil {
95-
return err
96-
}
97-
} else {
98-
_, err = os.Stdout.Write(content)
99-
if err != nil {
100-
return err
101-
}
102-
}
103-
return nil
94+
return p.Processor.LoadAndOutputToDir(cache, out, markdown)
10495
},
10596
},
10697
},
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright by LunaSec (owned by Refinery Labs, Inc)
2+
//
3+
// Licensed under the Business Source License v1.1
4+
// (the "License"); you may not use this file except in compliance with the
5+
// License. You may obtain a copy of the License at
6+
//
7+
// https://github.com/lunasec-io/lunasec/blob/master/licenses/BSL-LunaTrace.txt
8+
//
9+
// See the License for the specific language governing permissions and
10+
// limitations under the License.
11+
package openaifx
12+
13+
import (
14+
"github.com/rs/zerolog/log"
15+
"go.uber.org/config"
16+
)
17+
18+
type Config struct {
19+
APIKey string `yaml:"api_key"`
20+
}
21+
22+
func NewConfig(provider config.Provider) (config Config, err error) {
23+
value := provider.Get("openai")
24+
25+
err = value.Populate(&config)
26+
if err != nil {
27+
log.Error().
28+
Err(err).
29+
Msg("unable populate openai config")
30+
return
31+
}
32+
return
33+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright by LunaSec (owned by Refinery Labs, Inc)
2+
//
3+
// Licensed under the Business Source License v1.1
4+
// (the "License"); you may not use this file except in compliance with the
5+
// License. You may obtain a copy of the License at
6+
//
7+
// https://github.com/lunasec-io/lunasec/blob/master/licenses/BSL-LunaTrace.txt
8+
//
9+
// See the License for the specific language governing permissions and
10+
// limitations under the License.
11+
package openaifx
12+
13+
import (
14+
"github.com/PullRequestInc/go-gpt3"
15+
"go.uber.org/fx"
16+
_ "gocloud.dev/pubsub/awssnssqs"
17+
)
18+
19+
var Module = fx.Options(
20+
fx.Provide(
21+
NewConfig,
22+
NewOpenAIClient,
23+
),
24+
)
25+
26+
type Params struct {
27+
fx.In
28+
29+
Config
30+
}
31+
32+
type OpenAIClient struct {
33+
p Params
34+
}
35+
36+
func NewOpenAIClient(p Params) gpt3.Client {
37+
return gpt3.NewClient(p.APIKey)
38+
}

0 commit comments

Comments
 (0)