57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package gsaf
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func userFind() string {
|
|
if os.Geteuid() == 0 {
|
|
log.Fatal("Do not run this application as root!")
|
|
}
|
|
if un, err := os.UserHomeDir(); err == nil {
|
|
os.MkdirAll(filepath.Join(un, "i2p"), 0755)
|
|
return un
|
|
}
|
|
return ""
|
|
}
|
|
|
|
var userdir = filepath.Join(userFind(), "/i2p/firefox-profiles")
|
|
|
|
func writeFile(val os.FileInfo, system *fs) ([]byte, error) {
|
|
if !val.IsDir() {
|
|
file, err := system.Open(val.Name())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
sys := bytes.NewBuffer(nil)
|
|
if _, err := io.Copy(sys, file); err != nil {
|
|
return nil, err
|
|
} else {
|
|
return sys.Bytes(), nil
|
|
}
|
|
} else {
|
|
log.Println(filepath.Join(userdir, val.Name()), "ignored", "contents", val.Sys())
|
|
}
|
|
return nil, fmt.Errorf("undefined unpacker error")
|
|
}
|
|
|
|
func WriteBrowser(FS *fs) ([]byte, error) {
|
|
if embedded, err := FS.Readdir(-1); err != nil {
|
|
log.Fatal("Extension error, embedded extension not read.", err)
|
|
} else {
|
|
for _, val := range embedded {
|
|
if val.IsDir() {
|
|
os.MkdirAll(filepath.Join(userdir, val.Name()), val.Mode())
|
|
} else {
|
|
return writeFile(val, FS)
|
|
}
|
|
}
|
|
}
|
|
return nil, nil
|
|
}
|