+++ /dev/null
-// Nearly all code is taken from src/cmd/go/internal/auth/netrc.go
-
-package tofuproxy
-
-import (
- "log"
- "os"
- "path/filepath"
- "strings"
-)
-
-func findInNetrc(host string) (string, string) {
- netrcPath, ok := os.LookupEnv("NETRC")
- if !ok {
- homeDir, err := os.UserHomeDir()
- if err != nil {
- log.Fatalln(err)
- }
- netrcPath = filepath.Join(homeDir, ".netrc")
- }
- data, err := os.ReadFile(netrcPath)
- if err != nil {
- if os.IsNotExist(err) {
- return "", ""
- }
- log.Fatalln(err)
- }
- inMacro := false
- var machine, login, password string
- for _, line := range strings.Split(string(data), "\n") {
- if inMacro {
- if line == "" {
- inMacro = false
- }
- continue
- }
- fields := strings.Fields(line)
- i := 0
- for ; i < len(fields)-1; i += 2 {
- switch fields[i] {
- case "machine":
- machine = fields[i+1]
- login = ""
- password = ""
- case "default":
- break
- case "login":
- login = fields[i+1]
- case "password":
- password = fields[i+1]
- case "macdef":
- inMacro = true
- }
- if machine != "" && login != "" && password != "" {
- if machine == host {
- return login, password
- }
- machine, login, password = "", "", ""
- }
- }
- if i < len(fields) && fields[i] == "default" {
- break
- }
- }
- return "", ""
-}