From 72efa5c9b18fb321e3de411c785e18b3c379d4b9 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Tue, 20 Sep 2016 19:59:08 +0200 Subject: main: move initDir into its own file --- init_dir.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 init_dir.go (limited to 'init_dir.go') diff --git a/init_dir.go b/init_dir.go new file mode 100644 index 0000000..11abe50 --- /dev/null +++ b/init_dir.go @@ -0,0 +1,56 @@ +package main + +import ( + "os" + "path/filepath" + "strings" + + "github.com/rfjakob/gocryptfs/internal/configfile" + "github.com/rfjakob/gocryptfs/internal/nametransform" + "github.com/rfjakob/gocryptfs/internal/readpassword" + "github.com/rfjakob/gocryptfs/internal/tlog" +) + +// initDir initializes an empty directory for use as a gocryptfs cipherdir. +func initDir(args *argContainer) { + err := checkDirEmpty(args.cipherdir) + if err != nil { + tlog.Fatal.Printf("Invalid cipherdir: %v", err) + os.Exit(ERREXIT_INIT) + } + + // Create gocryptfs.conf + if args.extpass == "" { + tlog.Info.Printf("Choose a password for protecting your files.") + } else { + tlog.Info.Printf("Using password provided via -extpass.") + } + password := readpassword.Twice(args.extpass) + creator := tlog.ProgramName + " " + GitVersion + err = configfile.CreateConfFile(args.config, password, args.plaintextnames, args.scryptn, creator) + if err != nil { + tlog.Fatal.Println(err) + os.Exit(ERREXIT_INIT) + } + + if !args.plaintextnames { + // Create gocryptfs.diriv in the root dir + err = nametransform.WriteDirIV(args.cipherdir) + if err != nil { + tlog.Fatal.Println(err) + os.Exit(ERREXIT_INIT) + } + } + + tlog.Info.Printf(tlog.ColorGreen + "The filesystem has been created successfully." + tlog.ColorReset) + wd, _ := os.Getwd() + friendlyPath, _ := filepath.Rel(wd, args.cipherdir) + if strings.HasPrefix(friendlyPath, "../") { + // A relative path that starts with "../" is pretty unfriendly, just + // keep the absolute path. + friendlyPath = args.cipherdir + } + tlog.Info.Printf(tlog.ColorGrey+"You can now mount it using: %s %s MOUNTPOINT"+tlog.ColorReset, + tlog.ProgramName, friendlyPath) + os.Exit(0) +} -- cgit v1.2.3