* OpenAI LUT * github LUT * cleanup * add test * update * update * update openai * update * Add Analyze interface to Twilio (#3128) * Add Analyze interface to Twilio * add readme
95 lines
3.5 KiB
Go
95 lines
3.5 KiB
Go
package openai
|
|
|
|
import (
|
|
"github.com/trufflesecurity/trufflehog/v3/pkg/analyzer/analyzers"
|
|
)
|
|
|
|
type OpenAIScope struct {
|
|
ReadTests []analyzers.HttpStatusTest
|
|
WriteTests []analyzers.HttpStatusTest
|
|
Endpoints []string
|
|
ReadPermission Permission
|
|
WritePermission Permission
|
|
}
|
|
|
|
func (s *OpenAIScope) RunTests(key string) error {
|
|
headers := map[string]string{
|
|
"Authorization": "Bearer " + key,
|
|
"Content-Type": "application/json",
|
|
}
|
|
for i := range s.ReadTests {
|
|
test := &s.ReadTests[i]
|
|
if err := test.RunTest(headers); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
for i := range s.WriteTests {
|
|
test := &s.WriteTests[i]
|
|
if err := test.RunTest(headers); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var SCOPES = []OpenAIScope{
|
|
{
|
|
ReadTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/models", Method: "GET", Valid: []int{200}, Invalid: []int{403}, Type: analyzers.READ, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/models"},
|
|
ReadPermission: ModelsRead,
|
|
},
|
|
{
|
|
WriteTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/images/generations", Method: "POST", Payload: POST_PAYLOAD, Valid: []int{400}, Invalid: []int{401}, Type: analyzers.WRITE, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/audio", "/v1/chat/completions", "/v1/embeddings", "/v1/images", "/v1/moderations"},
|
|
WritePermission: ModelCapabilitiesWrite,
|
|
},
|
|
{
|
|
ReadTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/assistants", Method: "GET", Valid: []int{400}, Invalid: []int{401}, Type: analyzers.READ, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
WriteTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/assistants", Method: "POST", Payload: POST_PAYLOAD, Valid: []int{400}, Invalid: []int{401}, Type: analyzers.WRITE, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/assistants"},
|
|
ReadPermission: AssistantsRead,
|
|
WritePermission: AssistantsWrite,
|
|
},
|
|
{
|
|
ReadTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/threads/1", Method: "GET", Valid: []int{400}, Invalid: []int{401}, Type: analyzers.READ, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
WriteTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/threads", Method: "POST", Payload: POST_PAYLOAD, Valid: []int{400}, Invalid: []int{401}, Type: analyzers.WRITE, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/threads"},
|
|
ReadPermission: ThreadsRead,
|
|
WritePermission: ThreadsWrite,
|
|
},
|
|
{
|
|
ReadTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/fine_tuning/jobs", Method: "GET", Valid: []int{200}, Invalid: []int{401}, Type: analyzers.READ, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
WriteTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/fine_tuning/jobs", Method: "POST", Payload: POST_PAYLOAD, Valid: []int{400}, Invalid: []int{401}, Type: analyzers.WRITE, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/fine_tuning"},
|
|
ReadPermission: FineTuningRead,
|
|
WritePermission: FineTuningWrite,
|
|
},
|
|
{
|
|
ReadTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/files", Method: "GET", Valid: []int{200}, Invalid: []int{401}, Type: analyzers.READ, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
WriteTests: []analyzers.HttpStatusTest{
|
|
{URL: BASE_URL + "/v1/files", Method: "POST", Payload: POST_PAYLOAD, Valid: []int{415}, Invalid: []int{401}, Type: analyzers.WRITE, Status: analyzers.PermissionStatus{}},
|
|
},
|
|
Endpoints: []string{"/v1/files"},
|
|
ReadPermission: FilesRead,
|
|
WritePermission: FilesWrite,
|
|
},
|
|
}
|