From 4acaeb668ea236ded06157fd312463b5faafbdab Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 13 Sep 2015 17:55:07 +0200 Subject: Implement json config storage (not yet encrypted) --- main.go | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 70f0b53..d0aa33f 100644 --- a/main.go +++ b/main.go @@ -33,19 +33,39 @@ const ( ERREXIT_SERVE = 4 ERREXIT_MOUNT2 = 5 ERREXIT_CIPHERDIR = 6 + ERREXIT_INIT = 7 + ERREXIT_LOADCONF = 8 ) func main() { // Parse command line arguments var debug bool + var init bool flag.BoolVar(&debug, "debug", false, "Enable debug output") + flag.BoolVar(&init, "init", false, "Initialize encrypted directory") flag.Parse() if debug { cryptfs.Debug.Enable() cryptfs.Debug.Printf("Debug output enabled\n") } + if init { + if flag.NArg() != 1 { + fmt.Printf("usage: %s --init CIPHERDIR\n", PROGRAM_NAME) + os.Exit(ERREXIT_USAGE) + } + dir, _ := filepath.Abs(flag.Arg(0)) + filename := filepath.Join(dir, cryptfs.ConfDefaultName) + r := cryptfs.RandBytes(cryptfs.KEY_LEN) + var key [16]byte + copy(key[:], r) + err := cryptfs.CreateConfFile(filename, key) + if err != nil { + fmt.Println(err) + os.Exit(ERREXIT_INIT) + } + os.Exit(0) + } if flag.NArg() < 2 { - fmt.Printf("NArg=%d\n", flag.NArg()) fmt.Printf("usage: %s CIPHERDIR MOUNTPOINT\n", PROGRAM_NAME) os.Exit(ERREXIT_USAGE) } @@ -59,12 +79,17 @@ func main() { os.Exit(ERREXIT_CIPHERDIR) } - var key [16]byte + cfname := filepath.Join(cipherdir, cryptfs.ConfDefaultName) + cf, err := cryptfs.LoadConfFile(cfname) + if err != nil { + fmt.Println(err) + os.Exit(ERREXIT_LOADCONF) + } if USE_CLUEFS { - cluefsFrontend(key, cipherdir, mountpoint) + cluefsFrontend(cf.Key, cipherdir, mountpoint) } else { - pathfsFrontend(key, cipherdir, mountpoint, debug) + pathfsFrontend(cf.Key, cipherdir, mountpoint, debug) } } -- cgit v1.2.3