)
type Argon2iAuthData struct {
- version int
+ salt []byte
+ password []byte
memory uint32
time uint32
+ version int
threads uint8
- salt []byte
- password []byte
}
func (ad Argon2iAuthData) Auth(password string) bool {
if err != nil {
return nil, err
}
- err = os.Chmod(tmp.Name(), os.FileMode(0666&^UmaskCur))
+ err = os.Chmod(tmp.Name(), os.FileMode(0o666&^UmaskCur))
if err != nil {
tmp.Close()
return nil, err
func mkdirForPkg(w http.ResponseWriter, r *http.Request, pkgName string) bool {
path := filepath.Join(Root, pkgName)
if _, err := os.Stat(path); os.IsNotExist(err) {
- if err = os.Mkdir(path, os.FileMode(0777)); err != nil {
+ if err = os.Mkdir(path, os.FileMode(0o777)); err != nil {
log.Println("error", r.RemoteAddr, "mkdir", pkgName, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return false
//go:embed list.tmpl
HTMLReleasesTmplRaw string
HTMLReleasesTmpl = template.Must(template.New("list").Parse(HTMLReleasesTmplRaw))
- KnownExts = []string{".tar.bz2", ".tar.gz", ".whl", ".zip", ".egg",
- ".exe", ".dmg", ".msi", ".rpm", ".deb", ".tgz"}
+ KnownExts = []string{
+ ".tar.bz2", ".tar.gz", ".whl", ".zip", ".egg",
+ ".exe", ".dmg", ".msi", ".rpm", ".deb", ".tgz",
+ }
)
func listRoot(w http.ResponseWriter, r *http.Request) {
continue
}
delete(files, fn)
- digest, err := os.ReadFile(filepath.Join(dirPath, fn))
+ var digest []byte
+ digest, err = os.ReadFile(filepath.Join(dirPath, fn))
if err != nil {
return 0, nil, err
}
fnClean := strings.TrimSuffix(fn, "."+algo)
release := releaseFiles[fnClean]
if release == nil {
- fi, err := entry.Info()
+ var fi fs.FileInfo
+ fi, err = entry.Info()
if err != nil {
return 0, nil, err
}
releaseFiles[fnClean] = release
if entry, exists := files[fnClean]; exists {
if doSize {
- fi, err := entry.Info()
+ var fi fs.FileInfo
+ fi, err = entry.Info()
if err != nil {
return 0, nil, err
}
fd, err := os.OpenFile(
*PasswdPath,
os.O_RDONLY,
- os.FileMode(0666),
+ os.FileMode(0o666),
)
if err != nil {
log.Fatal(err)
fd, err := os.OpenFile(
*PasswdListPath,
os.O_WRONLY|os.O_APPEND,
- os.FileMode(0666),
+ os.FileMode(0o666),
)
if err != nil {
log.Fatal(err)
TLSClientConfig: &tlsConfig,
}
if *PyPICertHash != "" {
- ourDgst, err := hex.DecodeString(*PyPICertHash)
+ var ourDgst []byte
+ ourDgst, err = hex.DecodeString(*PyPICertHash)
if err != nil {
log.Fatal(err)
}
server.SetKeepAlivesEnabled(false)
ln := &UCSPI{}
server.ConnState = connStater
- err := server.Serve(ln)
+ err = server.Serve(ln)
if _, ok := err.(UCSPIAlreadyAccepted); !ok {
log.Fatal(err)
}
}
type User struct {
+ auther Auther
name string
ro bool
- auther Auther
}
func strToAuther(verifier string) (string, Auther, error) {
"errors"
"hash"
"io"
+ "io/fs"
"log"
"net/http"
"net/url"
http.Error(w, "invalid digest provided", http.StatusBadGateway)
return false
}
- var err error
digest, err = hex.DecodeString(digestInfo[1])
if err != nil {
log.Println("error", r.RemoteAddr, "pypi", filename, "invalid digest")
hasher := hasherNew()
hasherBLAKE2b256 := blake2b256New()
hasherSHA256 := sha256.New()
- dst, err := TempFile(dirPath)
+ var dst *os.File
+ dst, err = TempFile(dirPath)
if err != nil {
log.Println("error", r.RemoteAddr, "pypi", filename, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
http.Error(w, "digest mismatch", http.StatusBadGateway)
return false
}
- if digestStored, err := os.ReadFile(path + "." + hashAlgo); err == nil &&
+ if digestStored, errRead := os.ReadFile(path + "." + hashAlgo); errRead == nil &&
!bytes.Equal(digest, digestStored) {
err = errors.New("stored digest mismatch")
log.Println("error", r.RemoteAddr, "pypi", filename, err)
digest = nil
}
if mtimeExists {
- stat, err := os.Stat(path)
+ var stat fs.FileInfo
+ stat, err = os.Stat(path)
if err == nil && !stat.ModTime().Truncate(time.Second).Equal(mtime) {
log.Println(r.RemoteAddr, "pypi", filename, "touch")
if err = os.Chtimes(path, mtime, mtime); err != nil {
}
type ReadResult struct {
- n int
err error
+ n int
}
func (conn *UCSPIConn) Read(b []byte) (int, error) {
c := make(chan ReadResult)
go func() {
n, err := os.Stdin.Read(b)
- c <- ReadResult{n, err}
+ c <- ReadResult{err, n}
}()
select {
case res := <-c:
"encoding/hex"
"io"
"log"
+ "mime/multipart"
"net/http"
"os"
"path/filepath"
if !mkdirForPkg(w, r, pkgName) {
return
}
- src, err := file.Open()
+ var src multipart.File
+ src, err = file.Open()
if err != nil {
log.Println("error", r.RemoteAddr, filename, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer src.Close()
- dst, err := TempFile(dirPath)
+ var dst *os.File
+ dst, err = TempFile(dirPath)
if err != nil {
log.Println("error", r.RemoteAddr, filename, err)
http.Error(w, err.Error(), http.StatusInternalServerError)