feat: support export extension info, Close #129
merge pull request #129 from moonD4rk/devpull/131/head
commit
f0e56b11a1
@ -0,0 +1,75 @@ |
||||
package extension |
||||
|
||||
import ( |
||||
"os" |
||||
|
||||
"github.com/tidwall/gjson" |
||||
|
||||
"hack-browser-data/internal/item" |
||||
"hack-browser-data/internal/log" |
||||
"hack-browser-data/internal/utils/fileutil" |
||||
) |
||||
|
||||
type ChromiumExtension []*extension |
||||
|
||||
type extension struct { |
||||
Name string |
||||
Description string |
||||
Version string |
||||
HomepageURL string |
||||
} |
||||
|
||||
const ( |
||||
manifest = "manifest.json" |
||||
) |
||||
|
||||
func (c *ChromiumExtension) Parse(masterKey []byte) error { |
||||
files, err := fileutil.FilesInFolder(item.TempChromiumExtension, manifest) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer os.RemoveAll(item.TempChromiumExtension) |
||||
for _, f := range files { |
||||
file, err := fileutil.ReadFile(f) |
||||
if err != nil { |
||||
log.Error("Failed to read file: %s", err) |
||||
continue |
||||
} |
||||
b := gjson.Parse(file) |
||||
*c = append(*c, &extension{ |
||||
Name: b.Get("name").String(), |
||||
Description: b.Get("description").String(), |
||||
Version: b.Get("version").String(), |
||||
HomepageURL: b.Get("homepage_url").String(), |
||||
}) |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (c *ChromiumExtension) Name() string { |
||||
return "extension" |
||||
} |
||||
|
||||
type FirefoxExtension []*extension |
||||
|
||||
func (f *FirefoxExtension) Parse(masterKey []byte) error { |
||||
s, err := fileutil.ReadFile(item.TempFirefoxExtension) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
defer os.Remove(item.TempFirefoxExtension) |
||||
j := gjson.Parse(s) |
||||
for _, v := range j.Get("addons").Array() { |
||||
*f = append(*f, &extension{ |
||||
Name: v.Get("defaultLocale.name").String(), |
||||
Description: v.Get("defaultLocale.description").String(), |
||||
Version: v.Get("version").String(), |
||||
HomepageURL: v.Get("defaultLocale.homepageURL").String(), |
||||
}) |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func (f *FirefoxExtension) Name() string { |
||||
return "extension" |
||||
} |
Loading…
Reference in new issue