parent
							
								
									580ff78ad3
								
							
						
					
					
						commit
						46f2610a0a
					
				@ -1,129 +1,116 @@ | 
				
			|||||||
package firefox | 
					package firefox | 
				
			||||||
 | 
					
 | 
				
			||||||
import ( | 
					// type firefox struct {
 | 
				
			||||||
	"fmt" | 
					// 	name           string
 | 
				
			||||||
	"io/fs" | 
					// 	storage        string
 | 
				
			||||||
	"io/ioutil" | 
					// 	profilePath    string
 | 
				
			||||||
	"os" | 
					// 	masterKey      []byte
 | 
				
			||||||
	"path" | 
					// 	items          []item.Item
 | 
				
			||||||
	"path/filepath" | 
					// 	itemPaths      map[item.Item]string
 | 
				
			||||||
	"strings" | 
					// 	multiItemPaths map[string]map[item.Item]string
 | 
				
			||||||
 | 
					// }
 | 
				
			||||||
	"hack-browser-data/internal/browingdata" | 
					//
 | 
				
			||||||
	"hack-browser-data/internal/item" | 
					// // New
 | 
				
			||||||
) | 
					// func New(info *browserInfo, items []item.Item) ([]*firefox, error) {
 | 
				
			||||||
 | 
					// 	f := &firefox{
 | 
				
			||||||
type firefox struct { | 
					// 		browserInfo: info,
 | 
				
			||||||
	name           string | 
					// 		items:       items,
 | 
				
			||||||
	storage        string | 
					// 	}
 | 
				
			||||||
	profilePath    string | 
					// 	multiItemPaths, err := getFirefoxItemAbsPath(f.browserInfo.profilePath, f.items)
 | 
				
			||||||
	masterKey      []byte | 
					// 	if err != nil {
 | 
				
			||||||
	items          []item.Item | 
					// 		if strings.Contains(err.Error(), "profile path is not exist") {
 | 
				
			||||||
	itemPaths      map[item.Item]string | 
					// 			fmt.Println(err)
 | 
				
			||||||
	multiItemPaths map[string]map[item.Item]string | 
					// 			return nil, nil
 | 
				
			||||||
} | 
					// 		}
 | 
				
			||||||
 | 
					// 		panic(err)
 | 
				
			||||||
// New
 | 
					// 	}
 | 
				
			||||||
func New(info *browserInfo, items []item.Item) ([]*firefox, error) { | 
					// 	var firefoxList []*firefox
 | 
				
			||||||
	f := &firefox{ | 
					// 	for name, value := range multiItemPaths {
 | 
				
			||||||
		browserInfo: info, | 
					// 		firefoxList = append(firefoxList, &firefox{
 | 
				
			||||||
		items:       items, | 
					// 			browserInfo: &browserInfo{
 | 
				
			||||||
	} | 
					// 				name:      name,
 | 
				
			||||||
	multiItemPaths, err := getFirefoxItemAbsPath(f.browserInfo.profilePath, f.items) | 
					// 				masterKey: nil,
 | 
				
			||||||
	if err != nil { | 
					// 			},
 | 
				
			||||||
		if strings.Contains(err.Error(), "profile path is not exist") { | 
					// 			items:     items,
 | 
				
			||||||
			fmt.Println(err) | 
					// 			itemPaths: value,
 | 
				
			||||||
			return nil, nil | 
					// 		})
 | 
				
			||||||
		} | 
					// 	}
 | 
				
			||||||
		panic(err) | 
					// 	return firefoxList, nil
 | 
				
			||||||
	} | 
					// }
 | 
				
			||||||
	var firefoxList []*firefox | 
					//
 | 
				
			||||||
	for name, value := range multiItemPaths { | 
					// func getFirefoxItemAbsPath(profilePath string, items []item.Item) (map[string]map[item.Item]string, error) {
 | 
				
			||||||
		firefoxList = append(firefoxList, &firefox{ | 
					// 	var multiItemPaths = make(map[string]map[item.Item]string)
 | 
				
			||||||
			browserInfo: &browserInfo{ | 
					// 	absProfilePath := path.Join(homeDir, filepath.Clean(profilePath))
 | 
				
			||||||
				name:      name, | 
					// 	// TODO: Handle read file error
 | 
				
			||||||
				masterKey: nil, | 
					// 	if !isFileExist(absProfilePath) {
 | 
				
			||||||
			}, | 
					// 		return nil, fmt.Errorf("%s profile path is not exist", absProfilePath)
 | 
				
			||||||
			items:     items, | 
					// 	}
 | 
				
			||||||
			itemPaths: value, | 
					// 	err := filepath.Walk(absProfilePath, firefoxWalkFunc(items, multiItemPaths))
 | 
				
			||||||
		}) | 
					// 	return multiItemPaths, err
 | 
				
			||||||
	} | 
					// }
 | 
				
			||||||
	return firefoxList, nil | 
					//
 | 
				
			||||||
} | 
					// func (f *firefox) CopyItemFileToLocal() error {
 | 
				
			||||||
 | 
					// 	for item, sourcePath := range f.itemPaths {
 | 
				
			||||||
func getFirefoxItemAbsPath(profilePath string, items []item.Item) (map[string]map[item.Item]string, error) { | 
					// 		var dstFilename = item.TempName()
 | 
				
			||||||
	var multiItemPaths = make(map[string]map[item.Item]string) | 
					// 		locals, _ := filepath.Glob("*")
 | 
				
			||||||
	absProfilePath := path.Join(homeDir, filepath.Clean(profilePath)) | 
					// 		for _, v := range locals {
 | 
				
			||||||
	// TODO: Handle read file error
 | 
					// 			if v == dstFilename {
 | 
				
			||||||
	if !isFileExist(absProfilePath) { | 
					// 				err := os.Remove(dstFilename)
 | 
				
			||||||
		return nil, fmt.Errorf("%s profile path is not exist", absProfilePath) | 
					// 				// TODO: Should Continue all iteration error
 | 
				
			||||||
	} | 
					// 				if err != nil {
 | 
				
			||||||
	err := filepath.Walk(absProfilePath, firefoxWalkFunc(items, multiItemPaths)) | 
					// 					return err
 | 
				
			||||||
	return multiItemPaths, err | 
					// 				}
 | 
				
			||||||
} | 
					// 			}
 | 
				
			||||||
 | 
					// 		}
 | 
				
			||||||
func (f *firefox) CopyItemFileToLocal() error { | 
					//
 | 
				
			||||||
	for item, sourcePath := range f.itemPaths { | 
					// 		// TODO: Handle read file name error
 | 
				
			||||||
		var dstFilename = item.TempName() | 
					// 		sourceFile, err := ioutil.ReadFile(sourcePath)
 | 
				
			||||||
		locals, _ := filepath.Glob("*") | 
					// 		if err != nil {
 | 
				
			||||||
		for _, v := range locals { | 
					// 			fmt.Println(err.Error())
 | 
				
			||||||
			if v == dstFilename { | 
					// 		}
 | 
				
			||||||
				err := os.Remove(dstFilename) | 
					// 		err = ioutil.WriteFile(dstFilename, sourceFile, 0777)
 | 
				
			||||||
				// TODO: Should Continue all iteration error
 | 
					// 		if err != nil {
 | 
				
			||||||
				if err != nil { | 
					// 			return err
 | 
				
			||||||
					return err | 
					// 		}
 | 
				
			||||||
				} | 
					// 	}
 | 
				
			||||||
			} | 
					// 	return nil
 | 
				
			||||||
		} | 
					// }
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
		// TODO: Handle read file name error
 | 
					// func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) filepath.WalkFunc {
 | 
				
			||||||
		sourceFile, err := ioutil.ReadFile(sourcePath) | 
					// 	return func(path string, info fs.FileInfo, err error) error {
 | 
				
			||||||
		if err != nil { | 
					// 		for _, v := range items {
 | 
				
			||||||
			fmt.Println(err.Error()) | 
					// 			if info.Name() == v.FileName() {
 | 
				
			||||||
		} | 
					// 				parentDir := getParentDir(path)
 | 
				
			||||||
		err = ioutil.WriteFile(dstFilename, sourceFile, 0777) | 
					// 				if _, exist := multiItemPaths[parentDir]; exist {
 | 
				
			||||||
		if err != nil { | 
					// 					multiItemPaths[parentDir][v] = path
 | 
				
			||||||
			return err | 
					// 				} else {
 | 
				
			||||||
		} | 
					// 					multiItemPaths[parentDir] = map[item.Item]string{v: path}
 | 
				
			||||||
	} | 
					// 				}
 | 
				
			||||||
	return nil | 
					// 			}
 | 
				
			||||||
} | 
					// 		}
 | 
				
			||||||
 | 
					// 		return err
 | 
				
			||||||
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) filepath.WalkFunc { | 
					// 	}
 | 
				
			||||||
	return func(path string, info fs.FileInfo, err error) error { | 
					// }
 | 
				
			||||||
		for _, v := range items { | 
					//
 | 
				
			||||||
			if info.Name() == v.FileName() { | 
					// func getParentDir(absPath string) string {
 | 
				
			||||||
				parentDir := getParentDir(path) | 
					// 	return filepath.Base(filepath.Dir(absPath))
 | 
				
			||||||
				if _, exist := multiItemPaths[parentDir]; exist { | 
					// }
 | 
				
			||||||
					multiItemPaths[parentDir][v] = path | 
					//
 | 
				
			||||||
				} else { | 
					// func (f *firefox) GetMasterKey() ([]byte, error) {
 | 
				
			||||||
					multiItemPaths[parentDir] = map[item.Item]string{v: path} | 
					// 	return f.masterKey, nil
 | 
				
			||||||
				} | 
					// }
 | 
				
			||||||
			} | 
					//
 | 
				
			||||||
		} | 
					// func (f *firefox) GetName() string {
 | 
				
			||||||
		return err | 
					// 	return f.name
 | 
				
			||||||
	} | 
					// }
 | 
				
			||||||
} | 
					//
 | 
				
			||||||
 | 
					// func (f *firefox) GetBrowsingData() []browingdata.Source {
 | 
				
			||||||
func getParentDir(absPath string) string { | 
					// 	var browsingData []browingdata.Source
 | 
				
			||||||
	return filepath.Base(filepath.Dir(absPath)) | 
					// 	for item := range f.itemPaths {
 | 
				
			||||||
} | 
					// 		d := item.NewBrowsingData()
 | 
				
			||||||
 | 
					// 		if d != nil {
 | 
				
			||||||
func (f *firefox) GetMasterKey() ([]byte, error) { | 
					// 			browsingData = append(browsingData, d)
 | 
				
			||||||
	return f.masterKey, nil | 
					// 		}
 | 
				
			||||||
} | 
					// 	}
 | 
				
			||||||
 | 
					// 	return browsingData
 | 
				
			||||||
func (f *firefox) GetName() string { | 
					// }
 | 
				
			||||||
	return f.name | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (f *firefox) GetBrowsingData() []browingdata.Source { | 
					 | 
				
			||||||
	var browsingData []browingdata.Source | 
					 | 
				
			||||||
	for item := range f.itemPaths { | 
					 | 
				
			||||||
		d := item.NewBrowsingData() | 
					 | 
				
			||||||
		if d != nil { | 
					 | 
				
			||||||
			browsingData = append(browsingData, d) | 
					 | 
				
			||||||
		} | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
	return browsingData | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue