X-Git-Url: http://www.git.cypherpunks.ru/?p=gocheese.git;a=blobdiff_plain;f=main.go;h=417c2c1675c2fc5177bcd4b17de289e7dc6f5163;hp=76f4b8a9908936e14114e45fcf92a2d611eda1f3;hb=60bbf40bfc8b720f176faef55b5403986db86f8c;hpb=db1754452806598545038fb78deae6788cae2af8 diff --git a/main.go b/main.go index 76f4b8a..417c2c1 100644 --- a/main.go +++ b/main.go @@ -46,53 +46,41 @@ import ( const ( Version = "3.0.0" UserAgent = "GoCheese/" + Version - - Warranty = `This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 3 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see .` ) var ( - Root = flag.String("root", "./packages", "Path to packages directory") - Bind = flag.String("bind", "[::]:8080", "Address to bind to") - MaxClients = flag.Int("maxclients", 128, "Maximal amount of simultaneous clients") - DoUCSPI = flag.Bool("ucspi", false, "Work as UCSPI-TCP service") + Root string + Bind = flag.String("bind", DefaultBind, "") + MaxClients = flag.Int("maxclients", DefaultMaxClients, "") + DoUCSPI = flag.Bool("ucspi", false, "") - TLSCert = flag.String("tls-cert", "", "Path to TLS X.509 certificate") - TLSKey = flag.String("tls-key", "", "Path to TLS X.509 private key") + TLSCert = flag.String("tls-cert", "", "") + TLSKey = flag.String("tls-key", "", "") - NoRefreshURLPath = flag.String("norefresh", "/norefresh/", "Non-refreshing URL path") - RefreshURLPath = flag.String("refresh", "/simple/", "Auto-refreshing URL path") - GPGUpdateURLPath = flag.String("gpgupdate", "/gpgupdate/", "GPG forceful refreshing URL path") - JSONURLPath = flag.String("json", "/pypi/", "JSON API URL path") + NoRefreshURLPath = flag.String("norefresh", DefaultNoRefreshURLPath, "") + RefreshURLPath = flag.String("refresh", DefaultRefreshURLPath, "") + GPGUpdateURLPath = flag.String("gpgupdate", DefaultGPGUpdateURLPath, "") + JSONURLPath = flag.String("json", DefaultJSONURLPath, "") - 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") - JSONURL = flag.String("pypi-json", "https://pypi.org/pypi/", "Enable and use specified JSON API upstream URL") + PyPIURL = flag.String("pypi", DefaultPyPIURL, "") + JSONURL = flag.String("pypi-json", DefaultJSONURL, "") + PyPICertHash = flag.String("pypi-cert-hash", "", "") - 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") + PasswdPath = flag.String("passwd", "", "") + PasswdListPath = flag.String("passwd-list", "", "") + PasswdCheck = flag.Bool("passwd-check", false, "") - 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)") - DoVersion = flag.Bool("version", false, "Print version information") - DoWarranty = flag.Bool("warranty", false, "Print warranty information") + LogTimestamped = flag.Bool("log-timestamped", false, "") + FSCK = flag.Bool("fsck", false, "") + DoVersion = flag.Bool("version", false, "") + DoWarranty = flag.Bool("warranty", false, "") Killed bool ) func servePkg(w http.ResponseWriter, r *http.Request, pkgName, filename string) { log.Println(r.RemoteAddr, "get", filename) - path := filepath.Join(*Root, pkgName, filename) + path := filepath.Join(Root, pkgName, filename) if _, err := os.Stat(path); os.IsNotExist(err) { if !refreshDir(w, r, pkgName, filename, false) { return @@ -143,6 +131,7 @@ func handler(w http.ResponseWriter, r *http.Request) { } func main() { + flag.Usage = usage flag.Parse() if *DoWarranty { fmt.Println(Warranty) @@ -162,6 +151,15 @@ func main() { log.SetOutput(os.Stdout) } + if len(flag.Args()) != 1 { + usage() + os.Exit(1) + } + Root = flag.Args()[0] + if _, err := os.Stat(Root); err != nil { + log.Fatalln(err) + } + if *FSCK { if !goodIntegrity() { os.Exit(1) @@ -287,11 +285,9 @@ func main() { log.Println( UserAgent, "ready:", - "root:", *Root, + "root:", Root, "bind:", *Bind, "pypi:", *PyPIURL, - "json:", *JSONURL, - "hr: /", ) if *TLSCert == "" { err = server.Serve(ln)