diff options
| -rw-r--r-- | doList.go | 25 | ||||
| -rw-r--r-- | doVerify.go | 1 | ||||
| -rw-r--r-- | makePackagesFile.go | 33 |
3 files changed, 34 insertions, 25 deletions
@@ -1,30 +1,7 @@ package main -import ( - "os" - - "go.wit.com/lib/config" - "go.wit.com/log" -) - func doList() (string, error) { - os.Chdir(me.pb.BaseDir) + me.pb.SortFilename() footer := me.pb.PrintTable() - log.Info("found so far:", footer) - - var changed bool - for p := range me.pb.IterAll() { - if config.Exists(p.Filename) { - // everything is fine - continue - } - log.Info("deleting missing file from PB", p.Package, p.Filename) - me.pb.Delete(p) - changed = true - } - - if changed { - me.pb.Save() - } return footer, nil } diff --git a/doVerify.go b/doVerify.go index 1be9d7d..c742df9 100644 --- a/doVerify.go +++ b/doVerify.go @@ -103,6 +103,7 @@ func doVerify() (string, error) { return moveToBroken(p) } + // deprecate this and Delete(p) instead? // log.Info("Package", p.Package) if p.Ctime == nil { log.Printf("ctime is nil %-130.130s\n", fullname) diff --git a/makePackagesFile.go b/makePackagesFile.go index c19081d..7c05fea 100644 --- a/makePackagesFile.go +++ b/makePackagesFile.go @@ -2,7 +2,13 @@ package main import ( "bufio" + "crypto/md5" + "crypto/sha1" + "crypto/sha256" "errors" + "fmt" + "io" + "os" "path/filepath" "strings" @@ -14,6 +20,7 @@ import ( ) func populateDebInfo(p *zoopb.Package) error { + // SIMPLE SANITY CHECKS if p.DebInfo != nil { // already added p.DebInfo return nil @@ -27,8 +34,31 @@ func populateDebInfo(p *zoopb.Package) error { if r.Exit != 0 { return errors.New("dpkg returned -1") } + filedata, err := os.Open(fullname) + if err != nil { + return err + } + defer filedata.Close() + // SIMPLE SANITY CHECKS END + + // SHA256 HASH p.DebInfo = new(zoopb.DebInfo) + hMD5 := md5.New() + hSHA1 := sha1.New() + hSHA256 := sha256.New() + + // TeeReader allows writing to multiple hashers at once + multiWriter := io.MultiWriter(hMD5, hSHA1, hSHA256) + if _, err := io.Copy(multiWriter, filedata); err != nil { + return err + } + p.DebInfo.SHA256 = fmt.Sprintf("%x", hSHA256.Sum(nil)) // should be the standard now + p.DebInfo.MD5SUM = fmt.Sprintf("%x", hMD5.Sum(nil)) // probably deprecate + // p.DebInfo.SHA1 = fmt.Sprintf("%x", hSHA1.Sum(nil)) // deprecated + // SHA256 HASH END + + // PARSE "dpkg -I moon-buggy.deb", then exit as we are done starting := true all := strings.Join(r.Stdout, "\n") scanner := bufio.NewScanner(strings.NewReader(all)) @@ -139,12 +169,13 @@ func populateDebInfo(p *zoopb.Package) error { } p.DebInfo.Description = description default: + // This forces me(it could be you!) to fix this parser varname2 := strings.TrimSuffix(varname, ":") log.Printf("UNKNOWN: varname:%s varval:%s varname2=%s\n", varname, varval, varname2) panic("fix mirrors populateDebInfo()") } } - // log.Info("Ran:", cmd, r, err) + // pb.DebInfo should be correctly populated. You can verify these with "mirrors --verify" return nil } |
