Password authentication is required for packages uploading. Passwords
are dynamically changed through the FIFO file. You have to create it and
-use in @option{-passwd} option:
+use in @option{-passwd} option. Optionally, to list currently present
+logins use another FIFO and @option{-passwd-list} option:
@example
-$ mkfifo passwd
-$ gocheese -passwd passwd ...
+$ mkfifo passwd passwd-list
+$ gocheese -passwd passwd -passwd-list passwd-list ...
@end example
Then you must feed it newline-separated records in following format:
pypiURL = flag.String("pypi", "https://pypi.org/simple/", "Upstream (PyPI) URL")
pypiCertHash = flag.String("pypi-cert-hash", "", "Authenticate upstream by its X.509 certificate's SPKI SHA256 hash")
- passwdPath = flag.String("passwd", "", "Path to FIFO for upload authentication")
- passwdCheck = flag.Bool("passwd-check", false, "Run password checker")
+ passwdPath = flag.String("passwd", "", "Path to FIFO for upload authentication")
+ passwdListPath = flag.String("passwd-list", "", "Path to FIFO for login listing")
+ passwdCheck = flag.Bool("passwd-check", false, "Run password checker")
logTimestamped = flag.Bool("log-timestamped", false, "Prepend timestmap to log messages")
fsck = flag.Bool("fsck", false, "Check integrity of all packages (errors are in stderr)")
if *passwdPath != "" {
go func() {
for {
- fd, err := os.OpenFile(*passwdPath, os.O_RDONLY, os.FileMode(0666))
+ fd, err := os.OpenFile(
+ *passwdPath,
+ os.O_RDONLY,
+ os.FileMode(0666),
+ )
if err != nil {
log.Fatalln(err)
}
}
}()
}
+ if *passwdListPath != "" {
+ go func() {
+ for {
+ fd, err := os.OpenFile(
+ *passwdListPath,
+ os.O_WRONLY|os.O_APPEND,
+ os.FileMode(0666),
+ )
+ if err != nil {
+ log.Fatalln(err)
+ }
+ passwdLister(fd)
+ fd.Close()
+ }
+ }()
+ }
if (*tlsCert != "" && *tlsKey == "") || (*tlsCert == "" && *tlsKey != "") {
log.Fatalln("Both -tls-cert and -tls-key are required")
}
return isGood
}
+
+func passwdLister(fd *os.File) {
+ PasswordsM.RLock()
+ logins := make([]string, 0, len(Passwords))
+ for login := range Passwords {
+ logins = append(logins, login)
+ }
+ PasswordsM.RUnlock()
+ for _, login := range logins {
+ fd.WriteString(login + "\n")
+ }
+}