mirror of
https://github.com/moonD4rk/HackBrowserData
synced 2025-02-25 23:10:55 +00:00
fix: nil browsing data in case error and walkdir instead of walk (#229)
* fix: nil browsing data in case error Signed-off-by: Andrii Ursulenko <a.ursulenko@gmail.com> * fix: ignore walk error, use walkdir instead of walk --------- Signed-off-by: Andrii Ursulenko <a.ursulenko@gmail.com> Co-authored-by: Andrii Ursulenko <a.ursulenko@gmail.com>
This commit is contained in:
parent
a2c3cd1090
commit
ab4d3e14db
@ -87,11 +87,13 @@ func pickFirefox(name, profile string) []Browser {
|
||||
} else {
|
||||
profile = fileutil.ParentDir(profile)
|
||||
}
|
||||
|
||||
if !fileutil.IsDirExists(filepath.Clean(profile)) {
|
||||
log.Noticef("find browser firefox %s failed, profile folder does not exist", v.name)
|
||||
continue
|
||||
}
|
||||
if multiFirefox, err := firefox.New(v.name, v.storage, profile, v.items); err == nil {
|
||||
|
||||
if multiFirefox, err := firefox.New(profile, v.items); err == nil {
|
||||
for _, b := range multiFirefox {
|
||||
log.Noticef("find browser firefox %s success", b.Name())
|
||||
browsers = append(browsers, b)
|
||||
@ -100,8 +102,10 @@ func pickFirefox(name, profile string) []Browser {
|
||||
log.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
return browsers
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -23,18 +23,11 @@ type Firefox struct {
|
||||
|
||||
var ErrProfilePathNotFound = errors.New("profile path not found")
|
||||
|
||||
// New returns a new Firefox instance.
|
||||
func New(name, storage, profilePath string, items []item.Item) ([]*Firefox, error) {
|
||||
f := &Firefox{
|
||||
name: name,
|
||||
storage: storage,
|
||||
profilePath: profilePath,
|
||||
items: items,
|
||||
}
|
||||
multiItemPaths, err := f.getMultiItemPath(f.profilePath, f.items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// New returns new Firefox instances.
|
||||
func New(profilePath string, items []item.Item) ([]*Firefox, error) {
|
||||
multiItemPaths := make(map[string]map[item.Item]string)
|
||||
// ignore walk dir error since it can be produced by a single entry
|
||||
_ = filepath.WalkDir(profilePath, firefoxWalkFunc(items, multiItemPaths))
|
||||
|
||||
firefoxList := make([]*Firefox, 0, len(multiItemPaths))
|
||||
for name, itemPaths := range multiItemPaths {
|
||||
@ -44,13 +37,8 @@ func New(name, storage, profilePath string, items []item.Item) ([]*Firefox, erro
|
||||
itemPaths: itemPaths,
|
||||
})
|
||||
}
|
||||
return firefoxList, nil
|
||||
}
|
||||
|
||||
func (f *Firefox) getMultiItemPath(profilePath string, items []item.Item) (map[string]map[item.Item]string, error) {
|
||||
multiItemPaths := make(map[string]map[item.Item]string)
|
||||
err := filepath.Walk(profilePath, firefoxWalkFunc(items, multiItemPaths))
|
||||
return multiItemPaths, err
|
||||
return firefoxList, nil
|
||||
}
|
||||
|
||||
func (f *Firefox) copyItemToLocal() error {
|
||||
@ -63,8 +51,8 @@ func (f *Firefox) copyItemToLocal() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) filepath.WalkFunc {
|
||||
return func(path string, info fs.FileInfo, err error) error {
|
||||
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) fs.WalkDirFunc {
|
||||
return func(path string, info fs.DirEntry, err error) error {
|
||||
for _, v := range items {
|
||||
if info.Name() == v.FileName() {
|
||||
parentBaseDir := fileutil.ParentBaseDir(path)
|
||||
@ -75,6 +63,7 @@ func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ func Execute() {
|
||||
data, err := b.BrowsingData(isFullExport)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
continue
|
||||
}
|
||||
data.Output(outputDir, b.Name(), outputFormat)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user