Skip to content

Commit

Permalink
add url field and env to basic auth
Browse files Browse the repository at this point in the history
  • Loading branch information
tybalex committed Jan 22, 2025
1 parent 424352d commit 7fe644c
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 3 deletions.
60 changes: 59 additions & 1 deletion basic-auth/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ type input struct {
UsernameEnv string `json:"username_env,omitempty"`
PasswordField string `json:"password_field,omitempty"`
PasswordEnv string `json:"password_env,omitempty"`
URLField string `json:"url_field,omitempty"`
URLEnv string `json:"url_env,omitempty"`
Metadata map[string]string
}

Expand All @@ -48,7 +50,21 @@ func main() {
fmt.Println("Error getting credentials:", err)
os.Exit(1)
}
fmt.Printf(`{"env": {"%s": "%s", "%s": "%s"}}`, in.UsernameEnv, username, in.PasswordEnv, password)

var url string
if in.URLField != "" && in.URLEnv != "" {
url, err = getURL(ctx, in)
if err != nil {
fmt.Println("Error getting URL:", err)
os.Exit(1)
}
}

if in.URLEnv != "" {
fmt.Printf(`{"env": {"%s": "%s", "%s": "%s", "%s": "%s"}}`, in.UsernameEnv, username, in.PasswordEnv, password, in.URLEnv, url)
} else {
fmt.Printf(`{"env": {"%s": "%s", "%s": "%s"}}`, in.UsernameEnv, username, in.PasswordEnv, password)
}
}

func getCredentials(ctx context.Context, in input) (string, string, error) {
Expand Down Expand Up @@ -85,7 +101,41 @@ func getCredentials(ctx context.Context, in input) (string, string, error) {
password := gjson.Get(res, in.PasswordField).String()

return username, password, nil
}

func getURL(ctx context.Context, in input) (string, error) {
client, err := gptscript.NewGPTScript()
if err != nil {
fmt.Println("Error creating GPTScript client:", err)
return "", fmt.Errorf("Error creating GPTScript client: %w", err)
}
defer client.Close()

sysPromptIn, err := json.Marshal(sysPromptInput{
Message: in.Message,
Fields: strings.Join([]string{in.UsernameField, in.PasswordField, in.URLField}, ","),
Sensitive: strconv.FormatBool(true),
Metadata: in.Metadata,
})
if err != nil {
return "", fmt.Errorf("Error marshalling sys prompt input: %w", err)
}

run, err := client.Run(ctx, "sys.prompt", gptscript.Options{
Input: string(sysPromptIn),
})
if err != nil {
return "", fmt.Errorf("Error running GPTScript prompt: %w", err)
}

res, err := run.Text()
if err != nil {
return "", fmt.Errorf("Error getting GPTScript response: %w", err)
}

url := gjson.Get(res, in.URLField).String()

return url, nil
}

func getInput() (input, error) {
Expand All @@ -112,6 +162,7 @@ func getInput() (input, error) {
in.ToolDisplayName = cleanField(in.ToolDisplayName, "Basic Auth Credential")
in.UsernameField = cleanField(in.UsernameField, "username")
in.PasswordField = cleanField(in.PasswordField, "password")
in.URLField = cleanField(in.URLField, "")

// Set environment variables and validate
var validEnvPattern = regexp.MustCompile(`^[A-Za-z_][A-Za-z0-9_]*$`)
Expand All @@ -136,6 +187,13 @@ func getInput() (input, error) {
return input{}, err
}

if in.URLField != "" {
in.URLEnv, err = cleanEnv(in.URLEnv, in.URLField)
if err != nil {
return input{}, err
}
}

in.Message = fmt.Sprintf("Enter your %s and %s", in.UsernameField, in.PasswordField)

in.Metadata = map[string]string{
Expand Down
2 changes: 2 additions & 0 deletions basic-auth/tool.gpt
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ Param: username_field: The name of the username field
Param: username_env: The name of the environment variable to set for the captured username
Param: password_field: The name of the password field
Param: password_env: The name of the environment variable to set for the captured password
Param: url_field: The name of the URL field
Param: url_env: The name of the environment variable to set for the captured URL

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool "${GPTSCRIPT_INPUT}"
4 changes: 2 additions & 2 deletions wordpress/credential/tool.gpt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Name: Wordpress Basic Auth Credential
Share Credential: ../../basic-auth as wordpress
with wordpress_site as site_field and
WORDPRESS_SITE as site_env and
with wordpress_site as url_field and
WORDPRESS_SITE as url_env and
wordpress_username as username_field and
WORDPRESS_USERNAME as username_env and
wordpress_password as password_field and
Expand Down

0 comments on commit 7fe644c

Please sign in to comment.