X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=main.go;h=f4a4359e677f63e54f5723f6bd06fa5d8fc6a83d;hb=948543909470b983c001f13fb267a64070dd20ae;hp=12a325a93435af81d330f2ff9e844e31da891e13;hpb=168de6871afdd60f2bc1c529170033ef56307d7c;p=gocheese.git
diff --git a/main.go b/main.go
index 12a325a..f4a4359 100644
--- a/main.go
+++ b/main.go
@@ -47,15 +47,17 @@ import (
const (
Version = "3.0.0"
+ UserAgent = "GoCheese/" + Version
HTMLBegin = `
+
Links for %s
`
HTMLEnd = " \n\n"
- HTMLElement = " %s
\n"
+ HTMLElement = " %s\n"
InternalFlag = ".internal"
GPGSigExt = ".asc"
@@ -105,8 +107,9 @@ var (
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)")
@@ -229,6 +232,7 @@ func servePkg(w http.ResponseWriter, r *http.Request, pkgName, filename string)
}
func handler(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Server", UserAgent)
switch r.Method {
case "GET":
var path string
@@ -306,7 +310,11 @@ func main() {
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)
}
@@ -315,6 +323,22 @@ func main() {
}
}()
}
+ 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")