Rename internal "toggledlog" package to "tlog"

tlog is used heavily everywhere and deserves a shorter name.

Renamed using sed magic, without any manual rework:

   find * -type f -exec sed -i 's/toggledlog/tlog/g' {} +
This commit is contained in:
Jakob Unterwurzacher 2016-06-15 23:30:44 +02:00
parent 09e88f31d1
commit 6c3f97399a
25 changed files with 186 additions and 186 deletions

View File

@ -7,7 +7,7 @@ import (
"os/signal"
"syscall"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// The child sends us USR1 if the mount was successful
@ -32,7 +32,7 @@ func forkChild() {
c.Stdin = os.Stdin
err := c.Start()
if err != nil {
toggledlog.Fatal.Printf("forkChild: starting %s failed: %v\n", name, err)
tlog.Fatal.Printf("forkChild: starting %s failed: %v\n", name, err)
os.Exit(1)
}
err = c.Wait()
@ -42,7 +42,7 @@ func forkChild() {
os.Exit(waitstat.ExitStatus())
}
}
toggledlog.Fatal.Printf("forkChild: wait returned an unknown error: %v\n", err)
tlog.Fatal.Printf("forkChild: wait returned an unknown error: %v\n", err)
os.Exit(1)
}
// The child exited with 0 - let's do the same.

View File

@ -7,7 +7,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/contentenc"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
import "os"
@ -84,7 +84,7 @@ func LoadConfFile(filename string, password string) ([]byte, *ConfFile, error) {
// Unmarshal
err = json.Unmarshal(js, &cf)
if err != nil {
toggledlog.Warn.Printf("Failed to unmarshal config file")
tlog.Warn.Printf("Failed to unmarshal config file")
return nil, nil, err
}
@ -135,11 +135,11 @@ func LoadConfFile(filename string, password string) ([]byte, *ConfFile, error) {
cc := cryptocore.New(scryptHash, false, false)
ce := contentenc.New(cc, 4096)
toggledlog.Warn.Enabled = false // Silence DecryptBlock() error messages on incorrect password
tlog.Warn.Enabled = false // Silence DecryptBlock() error messages on incorrect password
key, err := ce.DecryptBlock(cf.EncryptedKey, 0, nil)
toggledlog.Warn.Enabled = true
tlog.Warn.Enabled = true
if err != nil {
toggledlog.Warn.Printf("failed to unlock master key: %s", err.Error())
tlog.Warn.Printf("failed to unlock master key: %s", err.Error())
return nil, nil, fmt.Errorf("Password incorrect.")
}

View File

@ -5,7 +5,7 @@ import (
"testing"
"time"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
func TestLoadV1(t *testing.T) {
@ -35,7 +35,7 @@ func TestLoadV2(t *testing.T) {
func TestLoadV2PwdError(t *testing.T) {
if !testing.Verbose() {
toggledlog.Warn.Enabled = false
tlog.Warn.Enabled = false
}
_, _, err := LoadConfFile("config_test/v2.conf", "wrongpassword")
if err == nil {

View File

@ -8,7 +8,7 @@ import (
"golang.org/x/crypto/scrypt"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@ -32,7 +32,7 @@ func NewScryptKdf(logN int) scryptKdf {
s.N = 1 << ScryptDefaultLogN
} else {
if logN < 10 {
toggledlog.Fatal.Println("Error: scryptn below 10 is too low to make sense. Aborting.")
tlog.Fatal.Println("Error: scryptn below 10 is too low to make sense. Aborting.")
os.Exit(1)
}
s.N = 1 << uint32(logN)

View File

@ -8,7 +8,7 @@ import (
"encoding/hex"
"errors"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// DecryptBlocks - Decrypt a number of blocks
@ -42,12 +42,12 @@ func (be *ContentEnc) DecryptBlock(ciphertext []byte, blockNo uint64, fileId []b
// All-zero block?
if bytes.Equal(ciphertext, be.allZeroBlock) {
toggledlog.Debug.Printf("DecryptBlock: file hole encountered")
tlog.Debug.Printf("DecryptBlock: file hole encountered")
return make([]byte, be.plainBS), nil
}
if len(ciphertext) < be.cryptoCore.IVLen {
toggledlog.Warn.Printf("DecryptBlock: Block is too short: %d bytes", len(ciphertext))
tlog.Warn.Printf("DecryptBlock: Block is too short: %d bytes", len(ciphertext))
return nil, errors.New("Block is too short")
}
@ -64,8 +64,8 @@ func (be *ContentEnc) DecryptBlock(ciphertext []byte, blockNo uint64, fileId []b
plaintext, err := be.cryptoCore.Gcm.Open(plaintext, nonce, ciphertext, aData)
if err != nil {
toggledlog.Warn.Printf("DecryptBlock: %s, len=%d", err.Error(), len(ciphertextOrig))
toggledlog.Debug.Println(hex.Dump(ciphertextOrig))
tlog.Warn.Printf("DecryptBlock: %s, len=%d", err.Error(), len(ciphertextOrig))
tlog.Debug.Println(hex.Dump(ciphertextOrig))
return nil, err
}

View File

@ -1,7 +1,7 @@
package contentenc
import (
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// Contentenc methods that translate offsets between ciphertext and plaintext
@ -35,12 +35,12 @@ func (be *ContentEnc) CipherSizeToPlainSize(cipherSize uint64) uint64 {
}
if cipherSize == HEADER_LEN {
toggledlog.Warn.Printf("cipherSize %d == header size: interrupted write?\n", cipherSize)
tlog.Warn.Printf("cipherSize %d == header size: interrupted write?\n", cipherSize)
return 0
}
if cipherSize < HEADER_LEN {
toggledlog.Warn.Printf("cipherSize %d < header size %d: corrupt file\n", cipherSize, HEADER_LEN)
tlog.Warn.Printf("cipherSize %d < header size %d: corrupt file\n", cipherSize, HEADER_LEN)
return 0
}

View File

@ -7,7 +7,7 @@ import (
"crypto/cipher"
"fmt"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// goGCMWrapper - This wrapper makes sure gocryptfs can be compiled on Go
@ -16,8 +16,8 @@ import (
// compiled on 1.4.
func goGCMWrapper(bc cipher.Block, nonceSize int) (cipher.AEAD, error) {
if nonceSize != 12 {
toggledlog.Warn.Printf("128 bit GCM IVs are not supported by Go 1.4 and lower.")
toggledlog.Warn.Printf("Please use openssl crypto or recompile using a newer Go runtime.")
tlog.Warn.Printf("128 bit GCM IVs are not supported by Go 1.4 and lower.")
tlog.Warn.Printf("Please use openssl crypto or recompile using a newer Go runtime.")
return nil, fmt.Errorf("128 bit GCM IVs are not supported by Go 1.4 and lower")
}
return cipher.NewGCM(bc)

View File

@ -7,7 +7,7 @@ import (
"encoding/hex"
"fmt"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// Get "n" random bytes from /dev/urandom or panic
@ -34,7 +34,7 @@ type nonceGenerator struct {
// Get a random "nonceLen"-byte nonce
func (n *nonceGenerator) Get() []byte {
nonce := RandBytes(n.nonceLen)
toggledlog.Debug.Printf("nonceGenerator.Get(): %s\n", hex.EncodeToString(nonce))
tlog.Debug.Printf("nonceGenerator.Get(): %s\n", hex.EncodeToString(nonce))
if bytes.Equal(nonce, n.lastNonce) {
m := fmt.Sprintf("Got the same nonce twice: %s. This should never happen!", hex.EncodeToString(nonce))
panic(m)

View File

@ -5,7 +5,7 @@ import (
"syscall"
)
import "github.com/rfjakob/gocryptfs/internal/toggledlog"
import "github.com/rfjakob/gocryptfs/internal/tlog"
var preallocWarn sync.Once
@ -24,7 +24,7 @@ func prealloc(fd int, off int64, len int64) (err error) {
// ZFS does not support fallocate which caused gocryptfs to abort
// every write operation: https://github.com/rfjakob/gocryptfs/issues/22
preallocWarn.Do(func() {
toggledlog.Warn.Printf("Warning: The underlying filesystem " +
tlog.Warn.Printf("Warning: The underlying filesystem " +
"does not support fallocate(2). gocryptfs will continue working " +
"but is no longer resistant against out-of-space errors.\n")
})

View File

@ -16,7 +16,7 @@ import (
"github.com/hanwen/go-fuse/fuse/nodefs"
"github.com/rfjakob/gocryptfs/internal/contentenc"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// File - based on loopbackFile in go-fuse/fuse/nodefs/files.go
@ -50,7 +50,7 @@ func NewFile(fd *os.File, writeOnly bool, contentEnc *contentenc.ContentEnc) (no
var st syscall.Stat_t
err := syscall.Fstat(int(fd.Fd()), &st)
if err != nil {
toggledlog.Warn.Printf("NewFile: Fstat on fd %d failed: %v\n", fd.Fd(), err)
tlog.Warn.Printf("NewFile: Fstat on fd %d failed: %v\n", fd.Fd(), err)
return nil, fuse.ToStatus(err)
}
wlock.register(st.Ino)
@ -102,7 +102,7 @@ func (f *file) createHeader() error {
// Prevent partially written (=corrupt) header by preallocating the space beforehand
err := prealloc(int(f.fd.Fd()), 0, contentenc.HEADER_LEN)
if err != nil {
toggledlog.Warn.Printf("ino%d: createHeader: prealloc failed: %s\n", f.ino, err.Error())
tlog.Warn.Printf("ino%d: createHeader: prealloc failed: %s\n", f.ino, err.Error())
return err
}
@ -145,18 +145,18 @@ func (f *file) doRead(off uint64, length uint64) ([]byte, fuse.Status) {
blocks := f.contentEnc.ExplodePlainRange(off, length)
alignedOffset, alignedLength := blocks[0].JointCiphertextRange(blocks)
skip := blocks[0].Skip
toggledlog.Debug.Printf("JointCiphertextRange(%d, %d) -> %d, %d, %d", off, length, alignedOffset, alignedLength, skip)
tlog.Debug.Printf("JointCiphertextRange(%d, %d) -> %d, %d, %d", off, length, alignedOffset, alignedLength, skip)
ciphertext := make([]byte, int(alignedLength))
n, err := f.fd.ReadAt(ciphertext, int64(alignedOffset))
if err != nil && err != io.EOF {
toggledlog.Warn.Printf("read: ReadAt: %s", err.Error())
tlog.Warn.Printf("read: ReadAt: %s", err.Error())
return nil, fuse.ToStatus(err)
}
// Truncate ciphertext buffer down to actually read bytes
ciphertext = ciphertext[0:n]
firstBlockNo := blocks[0].BlockNo
toggledlog.Debug.Printf("ReadAt offset=%d bytes (%d blocks), want=%d, got=%d", alignedOffset, firstBlockNo, alignedLength, n)
tlog.Debug.Printf("ReadAt offset=%d bytes (%d blocks), want=%d, got=%d", alignedOffset, firstBlockNo, alignedLength, n)
// Decrypt it
plaintext, err := f.contentEnc.DecryptBlocks(ciphertext, firstBlockNo, f.header.Id)
@ -164,7 +164,7 @@ func (f *file) doRead(off uint64, length uint64) ([]byte, fuse.Status) {
curruptBlockNo := firstBlockNo + f.contentEnc.PlainOffToBlockNo(uint64(len(plaintext)))
cipherOff := f.contentEnc.BlockNoToCipherOff(curruptBlockNo)
plainOff := f.contentEnc.BlockNoToPlainOff(curruptBlockNo)
toggledlog.Warn.Printf("ino%d: doRead: corrupt block #%d (plainOff=%d, cipherOff=%d)",
tlog.Warn.Printf("ino%d: doRead: corrupt block #%d (plainOff=%d, cipherOff=%d)",
f.ino, curruptBlockNo, plainOff, cipherOff)
return nil, fuse.EIO
}
@ -188,23 +188,23 @@ func (f *file) Read(buf []byte, off int64) (resultData fuse.ReadResult, code fus
f.fdLock.RLock()
defer f.fdLock.RUnlock()
toggledlog.Debug.Printf("ino%d: FUSE Read: offset=%d length=%d", f.ino, len(buf), off)
tlog.Debug.Printf("ino%d: FUSE Read: offset=%d length=%d", f.ino, len(buf), off)
if f.writeOnly {
toggledlog.Warn.Printf("ino%d: Tried to read from write-only file", f.ino)
tlog.Warn.Printf("ino%d: Tried to read from write-only file", f.ino)
return nil, fuse.EBADF
}
out, status := f.doRead(uint64(off), uint64(len(buf)))
if status == fuse.EIO {
toggledlog.Warn.Printf("ino%d: Read failed with EIO, offset=%d, length=%d", f.ino, len(buf), off)
tlog.Warn.Printf("ino%d: Read failed with EIO, offset=%d, length=%d", f.ino, len(buf), off)
}
if status != fuse.OK {
return nil, status
}
toggledlog.Debug.Printf("ino%d: Read: status %v, returning %d bytes", f.ino, status, len(out))
tlog.Debug.Printf("ino%d: Read: status %v, returning %d bytes", f.ino, status, len(out))
return fuse.ReadResultData(out), status
}
@ -246,24 +246,24 @@ func (f *file) doWrite(data []byte, off int64) (uint32, fuse.Status) {
var oldData []byte
oldData, status = f.doRead(o, f.contentEnc.PlainBS())
if status != fuse.OK {
toggledlog.Warn.Printf("ino%d fh%d: RMW read failed: %s", f.ino, f.intFd(), status.String())
tlog.Warn.Printf("ino%d fh%d: RMW read failed: %s", f.ino, f.intFd(), status.String())
return written, status
}
// Modify
blockData = f.contentEnc.MergeBlocks(oldData, blockData, int(b.Skip))
toggledlog.Debug.Printf("len(oldData)=%d len(blockData)=%d", len(oldData), len(blockData))
tlog.Debug.Printf("len(oldData)=%d len(blockData)=%d", len(oldData), len(blockData))
}
// Encrypt
blockOffset, blockLen := b.CiphertextRange()
blockData = f.contentEnc.EncryptBlock(blockData, b.BlockNo, f.header.Id)
toggledlog.Debug.Printf("ino%d: Writing %d bytes to block #%d",
tlog.Debug.Printf("ino%d: Writing %d bytes to block #%d",
f.ino, uint64(len(blockData))-f.contentEnc.BlockOverhead(), b.BlockNo)
// Prevent partially written (=corrupt) blocks by preallocating the space beforehand
err := prealloc(int(f.fd.Fd()), int64(blockOffset), int64(blockLen))
if err != nil {
toggledlog.Warn.Printf("ino%d fh%d: doWrite: prealloc failed: %s", f.ino, f.intFd(), err.Error())
tlog.Warn.Printf("ino%d fh%d: doWrite: prealloc failed: %s", f.ino, f.intFd(), err.Error())
status = fuse.ToStatus(err)
break
}
@ -272,7 +272,7 @@ func (f *file) doWrite(data []byte, off int64) (uint32, fuse.Status) {
_, err = f.fd.WriteAt(blockData, int64(blockOffset))
if err != nil {
toggledlog.Warn.Printf("doWrite: Write failed: %s", err.Error())
tlog.Warn.Printf("doWrite: Write failed: %s", err.Error())
status = fuse.ToStatus(err)
break
}
@ -289,24 +289,24 @@ func (f *file) Write(data []byte, off int64) (uint32, fuse.Status) {
// The file descriptor has been closed concurrently, which also means
// the wlock has been freed. Exit here so we don't crash trying to access
// it.
toggledlog.Warn.Printf("ino%d fh%d: Write on released file", f.ino, f.intFd())
tlog.Warn.Printf("ino%d fh%d: Write on released file", f.ino, f.intFd())
return 0, fuse.EBADF
}
wlock.lock(f.ino)
defer wlock.unlock(f.ino)
toggledlog.Debug.Printf("ino%d: FUSE Write: offset=%d length=%d", f.ino, off, len(data))
tlog.Debug.Printf("ino%d: FUSE Write: offset=%d length=%d", f.ino, off, len(data))
fi, err := f.fd.Stat()
if err != nil {
toggledlog.Warn.Printf("Write: Fstat failed: %v", err)
tlog.Warn.Printf("Write: Fstat failed: %v", err)
return 0, fuse.ToStatus(err)
}
plainSize := f.contentEnc.CipherSizeToPlainSize(uint64(fi.Size()))
if f.createsHole(plainSize, off) {
status := f.zeroPad(plainSize)
if status != fuse.OK {
toggledlog.Warn.Printf("zeroPad returned error %v", status)
tlog.Warn.Printf("zeroPad returned error %v", status)
return 0, status
}
}
@ -356,7 +356,7 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
defer f.fdLock.RUnlock()
if f.released {
// The file descriptor has been closed concurrently.
toggledlog.Warn.Printf("ino%d fh%d: Truncate on released file", f.ino, f.intFd())
tlog.Warn.Printf("ino%d fh%d: Truncate on released file", f.ino, f.intFd())
return fuse.EBADF
}
wlock.lock(f.ino)
@ -367,7 +367,7 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
if newSize == 0 {
err = syscall.Ftruncate(int(f.fd.Fd()), 0)
if err != nil {
toggledlog.Warn.Printf("ino%d fh%d: Ftruncate(fd, 0) returned error: %v", f.ino, f.intFd(), err)
tlog.Warn.Printf("ino%d fh%d: Ftruncate(fd, 0) returned error: %v", f.ino, f.intFd(), err)
return fuse.ToStatus(err)
}
// Truncate to zero kills the file header
@ -379,14 +379,14 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
// the file
fi, err := f.fd.Stat()
if err != nil {
toggledlog.Warn.Printf("ino%d fh%d: Truncate: Fstat failed: %v", f.ino, f.intFd(), err)
tlog.Warn.Printf("ino%d fh%d: Truncate: Fstat failed: %v", f.ino, f.intFd(), err)
return fuse.ToStatus(err)
}
oldSize := f.contentEnc.CipherSizeToPlainSize(uint64(fi.Size()))
{
oldB := float32(oldSize) / float32(f.contentEnc.PlainBS())
newB := float32(newSize) / float32(f.contentEnc.PlainBS())
toggledlog.Debug.Printf("ino%d: FUSE Truncate from %.2f to %.2f blocks (%d to %d bytes)", f.ino, oldB, newB, oldSize, newSize)
tlog.Debug.Printf("ino%d: FUSE Truncate from %.2f to %.2f blocks (%d to %d bytes)", f.ino, oldB, newB, oldSize, newSize)
}
// File size stays the same - nothing to do
@ -419,7 +419,7 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
off, length := b.CiphertextRange()
err = syscall.Ftruncate(int(f.fd.Fd()), int64(off+length))
if err != nil {
toggledlog.Warn.Printf("grow Ftruncate returned error: %v", err)
tlog.Warn.Printf("grow Ftruncate returned error: %v", err)
return fuse.ToStatus(err)
}
}
@ -436,14 +436,14 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
var status fuse.Status
data, status = f.doRead(plainOff, lastBlockLen)
if status != fuse.OK {
toggledlog.Warn.Printf("shrink doRead returned error: %v", err)
tlog.Warn.Printf("shrink doRead returned error: %v", err)
return status
}
}
// Truncate down to last complete block
err = syscall.Ftruncate(int(f.fd.Fd()), int64(cipherOff))
if err != nil {
toggledlog.Warn.Printf("shrink Ftruncate returned error: %v", err)
tlog.Warn.Printf("shrink Ftruncate returned error: %v", err)
return fuse.ToStatus(err)
}
// Append partial block
@ -473,7 +473,7 @@ func (f *file) GetAttr(a *fuse.Attr) fuse.Status {
f.fdLock.RLock()
defer f.fdLock.RUnlock()
toggledlog.Debug.Printf("file.GetAttr()")
tlog.Debug.Printf("file.GetAttr()")
st := syscall.Stat_t{}
err := syscall.Fstat(int(f.fd.Fd()), &st)
if err != nil {
@ -491,7 +491,7 @@ var allocateWarnOnce sync.Once
// Allocate - FUSE call, fallocate(2)
func (f *file) Allocate(off uint64, sz uint64, mode uint32) fuse.Status {
allocateWarnOnce.Do(func() {
toggledlog.Warn.Printf("fallocate(2) is not supported, returning ENOSYS - see https://github.com/rfjakob/gocryptfs/issues/1")
tlog.Warn.Printf("fallocate(2) is not supported, returning ENOSYS - see https://github.com/rfjakob/gocryptfs/issues/1")
})
return fuse.ENOSYS
}
@ -519,7 +519,7 @@ func (f *file) Utimens(a *time.Time, m *time.Time) fuse.Status {
fn := fmt.Sprintf("/proc/self/fd/%d", f.fd.Fd())
err := syscall.UtimesNano(fn, ts)
if err != nil {
toggledlog.Debug.Printf("UtimesNano on %q failed: %v", fn, err)
tlog.Debug.Printf("UtimesNano on %q failed: %v", fn, err)
}
if err == syscall.ENOENT {
// If /proc/self/fd/X did not exist, the actual error is that the file

View File

@ -5,7 +5,7 @@ package fusefrontend
import (
"github.com/hanwen/go-fuse/fuse"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// Will a write to offset "off" create a file hole?
@ -23,7 +23,7 @@ func (f *file) zeroPad(plainSize uint64) fuse.Status {
lastBlockLen := plainSize % f.contentEnc.PlainBS()
missing := f.contentEnc.PlainBS() - lastBlockLen
pad := make([]byte, missing)
toggledlog.Debug.Printf("zeroPad: Writing %d bytes\n", missing)
tlog.Debug.Printf("zeroPad: Writing %d bytes\n", missing)
_, status := f.doWrite(pad, int64(plainSize))
return status
}

View File

@ -17,7 +17,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/contentenc"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/nametransform"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
type FS struct {
@ -49,7 +49,7 @@ func NewFS(args Args) *FS {
}
func (fs *FS) GetAttr(name string, context *fuse.Context) (*fuse.Attr, fuse.Status) {
toggledlog.Debug.Printf("FS.GetAttr('%s')", name)
tlog.Debug.Printf("FS.GetAttr('%s')", name)
if fs.isFiltered(name) {
return nil, fuse.EPERM
}
@ -59,7 +59,7 @@ func (fs *FS) GetAttr(name string, context *fuse.Context) (*fuse.Attr, fuse.Stat
}
a, status := fs.FileSystem.GetAttr(cName, context)
if a == nil {
toggledlog.Debug.Printf("FS.GetAttr failed: %s", status.String())
tlog.Debug.Printf("FS.GetAttr failed: %s", status.String())
return a, status
}
if a.IsRegular() {
@ -91,10 +91,10 @@ func (fs *FS) Open(path string, flags uint32, context *fuse.Context) (fuseFile n
iflags, writeOnly := fs.mangleOpenFlags(flags)
cPath, err := fs.getBackingPath(path)
if err != nil {
toggledlog.Debug.Printf("Open: getBackingPath: %v", err)
tlog.Debug.Printf("Open: getBackingPath: %v", err)
return nil, fuse.ToStatus(err)
}
toggledlog.Debug.Printf("Open: %s", cPath)
tlog.Debug.Printf("Open: %s", cPath)
f, err := os.OpenFile(cPath, iflags, 0666)
if err != nil {
return nil, fuse.ToStatus(err)
@ -213,7 +213,7 @@ var truncateWarnOnce sync.Once
func (fs *FS) Truncate(path string, offset uint64, context *fuse.Context) (code fuse.Status) {
truncateWarnOnce.Do(func() {
toggledlog.Warn.Printf("truncate(2) is not supported, returning ENOSYS - use ftruncate(2)")
tlog.Warn.Printf("truncate(2) is not supported, returning ENOSYS - use ftruncate(2)")
})
return fuse.ENOSYS
}
@ -254,7 +254,7 @@ func (fs *FS) Readlink(path string, context *fuse.Context) (out string, status f
var target string
target, err = fs.decryptPath(cTarget)
if err != nil {
toggledlog.Warn.Printf("Readlink: CBC decryption failed: %v", err)
tlog.Warn.Printf("Readlink: CBC decryption failed: %v", err)
return "", fuse.EIO
}
return target, fuse.OK
@ -262,12 +262,12 @@ func (fs *FS) Readlink(path string, context *fuse.Context) (out string, status f
// Since gocryptfs v0.5 symlinks are encrypted like file contents (GCM)
cBinTarget, err := base64.URLEncoding.DecodeString(cTarget)
if err != nil {
toggledlog.Warn.Printf("Readlink: %v", err)
tlog.Warn.Printf("Readlink: %v", err)
return "", fuse.EIO
}
target, err := fs.contentEnc.DecryptBlock([]byte(cBinTarget), 0, nil)
if err != nil {
toggledlog.Warn.Printf("Readlink: %v", err)
tlog.Warn.Printf("Readlink: %v", err)
return "", fuse.EIO
}
return string(target), fuse.OK
@ -298,7 +298,7 @@ func (fs *FS) Unlink(path string, context *fuse.Context) (code fuse.Status) {
// Delete ".name"
err = nametransform.DeleteLongName(dirfd, cName)
if err != nil {
toggledlog.Warn.Printf("Unlink: could not delete .name file: %v", err)
tlog.Warn.Printf("Unlink: could not delete .name file: %v", err)
}
return fuse.ToStatus(err)
}
@ -308,7 +308,7 @@ func (fs *FS) Unlink(path string, context *fuse.Context) (code fuse.Status) {
}
func (fs *FS) Symlink(target string, linkName string, context *fuse.Context) (code fuse.Status) {
toggledlog.Debug.Printf("Symlink(\"%s\", \"%s\")", target, linkName)
tlog.Debug.Printf("Symlink(\"%s\", \"%s\")", target, linkName)
if fs.isFiltered(linkName) {
return fuse.EPERM
}
@ -322,7 +322,7 @@ func (fs *FS) Symlink(target string, linkName string, context *fuse.Context) (co
var cTarget string
cTarget, err = fs.encryptPath(target)
if err != nil {
toggledlog.Warn.Printf("Symlink: BUG: we should not get an error here: %v", err)
tlog.Warn.Printf("Symlink: BUG: we should not get an error here: %v", err)
return fuse.ToStatus(err)
}
err = os.Symlink(cTarget, cPath)
@ -417,7 +417,7 @@ func (fs *FS) Rename(oldPath string, newPath string, context *fuse.Context) (cod
// If an empty directory is overwritten we will always get ENOTEMPTY as
// the "empty" directory will still contain gocryptfs.diriv.
// Handle that case by removing the target directory and trying again.
toggledlog.Debug.Printf("Rename: Handling ENOTEMPTY")
tlog.Debug.Printf("Rename: Handling ENOTEMPTY")
if fs.Rmdir(newPath, context) == fuse.OK {
err = syscall.Renameat(finalOldDirFd, finalOldPath, finalNewDirFd, finalNewPath)
}

View File

@ -13,7 +13,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/configfile"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/nametransform"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
func (fs *FS) mkdirWithIv(cPath string, mode uint32) error {
@ -32,7 +32,7 @@ func (fs *FS) mkdirWithIv(cPath string, mode uint32) error {
if err != nil {
err2 := syscall.Rmdir(cPath)
if err2 != nil {
toggledlog.Warn.Printf("mkdirWithIv: rollback failed: %v", err2)
tlog.Warn.Printf("mkdirWithIv: rollback failed: %v", err2)
}
}
return err
@ -86,7 +86,7 @@ func (fs *FS) Mkdir(newPath string, mode uint32, context *fuse.Context) (code fu
if origMode != mode {
err = os.Chmod(cPath, os.FileMode(origMode))
if err != nil {
toggledlog.Warn.Printf("Mkdir: Chmod failed: %v", err)
tlog.Warn.Printf("Mkdir: Chmod failed: %v", err)
}
}
@ -114,19 +114,19 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
syscall.O_RDONLY, 0)
if err == syscall.EACCES {
// We need permission to read and modify the directory
toggledlog.Debug.Printf("Rmdir: handling EACCESS")
tlog.Debug.Printf("Rmdir: handling EACCESS")
// TODO use syscall.Fstatat once it is available in Go
var fi os.FileInfo
fi, err = os.Lstat(cPath)
if err != nil {
toggledlog.Debug.Printf("Rmdir: Stat: %v", err)
tlog.Debug.Printf("Rmdir: Stat: %v", err)
return fuse.ToStatus(err)
}
origMode := fi.Mode()
// TODO use syscall.Chmodat once it is available in Go
err = os.Chmod(cPath, origMode|0700)
if err != nil {
toggledlog.Debug.Printf("Rmdir: Chmod failed: %v", err)
tlog.Debug.Printf("Rmdir: Chmod failed: %v", err)
return fuse.ToStatus(err)
}
// Retry open
@ -139,13 +139,13 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
if code != fuse.OK {
err = os.Chmod(cPath, origMode)
if err != nil {
toggledlog.Warn.Printf("Rmdir: Chmod rollback failed: %v", err)
tlog.Warn.Printf("Rmdir: Chmod rollback failed: %v", err)
}
}
}()
}
if err != nil {
toggledlog.Debug.Printf("Rmdir: Open: %v", err)
tlog.Debug.Printf("Rmdir: Open: %v", err)
return fuse.ToStatus(err)
}
dirfd := os.NewFile(uintptr(dirfdRaw), cName)
@ -153,7 +153,7 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
children, err := dirfd.Readdirnames(10)
if err != nil {
toggledlog.Warn.Printf("Rmdir: Readdirnames: %v", err)
tlog.Warn.Printf("Rmdir: Readdirnames: %v", err)
return fuse.ToStatus(err)
}
// If the directory is not empty besides gocryptfs.diriv, do not even
@ -164,7 +164,7 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
// Move "gocryptfs.diriv" to the parent dir as "gocryptfs.diriv.rmdir.XYZ"
tmpName := fmt.Sprintf("gocryptfs.diriv.rmdir.%d", cryptocore.RandUint64())
toggledlog.Debug.Printf("Rmdir: Renaming %s to %s", nametransform.DirIVFilename, tmpName)
tlog.Debug.Printf("Rmdir: Renaming %s to %s", nametransform.DirIVFilename, tmpName)
// The directory is in an inconsistent state between rename and rmdir.
// Protect against concurrent readers.
fs.dirIVLock.Lock()
@ -172,7 +172,7 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
err = syscall.Renameat(int(dirfd.Fd()), nametransform.DirIVFilename,
int(parentDirFd.Fd()), tmpName)
if err != nil {
toggledlog.Warn.Printf("Rmdir: Renaming %s to %s failed: %v",
tlog.Warn.Printf("Rmdir: Renaming %s to %s failed: %v",
nametransform.DirIVFilename, tmpName, err)
return fuse.ToStatus(err)
}
@ -186,14 +186,14 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
err2 := syscall.Renameat(int(parentDirFd.Fd()), tmpName,
int(dirfd.Fd()), nametransform.DirIVFilename)
if err != nil {
toggledlog.Warn.Printf("Rmdir: Rename rollback failed: %v", err2)
tlog.Warn.Printf("Rmdir: Rename rollback failed: %v", err2)
}
return fuse.ToStatus(err)
}
// Delete "gocryptfs.diriv.rmdir.XYZ"
err = syscall.Unlinkat(int(parentDirFd.Fd()), tmpName)
if err != nil {
toggledlog.Warn.Printf("Rmdir: Could not clean up %s: %v", tmpName, err)
tlog.Warn.Printf("Rmdir: Could not clean up %s: %v", tmpName, err)
}
// Delete .name file
if nametransform.IsLongContent(cName) {
@ -205,7 +205,7 @@ func (fs *FS) Rmdir(path string, context *fuse.Context) (code fuse.Status) {
}
func (fs *FS) OpenDir(dirName string, context *fuse.Context) ([]fuse.DirEntry, fuse.Status) {
toggledlog.Debug.Printf("OpenDir(%s)", dirName)
tlog.Debug.Printf("OpenDir(%s)", dirName)
cDirName, err := fs.encryptPath(dirName)
if err != nil {
return nil, fuse.ToStatus(err)
@ -255,7 +255,7 @@ func (fs *FS) OpenDir(dirName string, context *fuse.Context) ([]fuse.DirEntry, f
if isLong == nametransform.LongNameContent {
cNameLong, err := nametransform.ReadLongName(filepath.Join(cDirAbsPath, cName))
if err != nil {
toggledlog.Warn.Printf("Skipping file %q in dir %q: Could not read .name: %v",
tlog.Warn.Printf("Skipping file %q in dir %q: Could not read .name: %v",
cName, cDirName, err)
errorCount++
continue
@ -268,7 +268,7 @@ func (fs *FS) OpenDir(dirName string, context *fuse.Context) ([]fuse.DirEntry, f
name, err := fs.nameTransform.DecryptName(cName, cachedIV)
if err != nil {
toggledlog.Warn.Printf("Skipping invalid name %q in dir %q: %s",
tlog.Warn.Printf("Skipping invalid name %q in dir %q: %s",
cName, cDirName, err)
errorCount++
continue
@ -281,7 +281,7 @@ func (fs *FS) OpenDir(dirName string, context *fuse.Context) ([]fuse.DirEntry, f
if errorCount > 0 && len(plain) == 0 {
// Don't let the user stare on an empty directory. Report that things went
// wrong.
toggledlog.Warn.Printf("All %d entries in directory %q were invalid, returning EIO",
tlog.Warn.Printf("All %d entries in directory %q were invalid, returning EIO",
errorCount, cDirName)
status = fuse.EIO
}

View File

@ -6,7 +6,7 @@ import (
"path/filepath"
"github.com/rfjakob/gocryptfs/internal/configfile"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// isFiltered - check if plaintext "path" should be forbidden
@ -18,7 +18,7 @@ func (fs *FS) isFiltered(path string) bool {
}
// gocryptfs.conf in the root directory is forbidden
if path == configfile.ConfDefaultName {
toggledlog.Info.Printf("The name /%s is reserved when -plaintextnames is used\n",
tlog.Info.Printf("The name /%s is reserved when -plaintextnames is used\n",
configfile.ConfDefaultName)
return true
}
@ -35,7 +35,7 @@ func (fs *FS) getBackingPath(relPath string) (string, error) {
return "", err
}
cAbsPath := filepath.Join(fs.args.Cipherdir, cPath)
toggledlog.Debug.Printf("getBackingPath: %s + %s -> %s", fs.args.Cipherdir, relPath, cAbsPath)
tlog.Debug.Printf("getBackingPath: %s + %s -> %s", fs.args.Cipherdir, relPath, cAbsPath)
return cAbsPath, nil
}
@ -49,7 +49,7 @@ func (fs *FS) encryptPath(plainPath string) (string, error) {
}
fs.dirIVLock.RLock()
cPath, err := fs.nameTransform.EncryptPathDirIV(plainPath, fs.args.Cipherdir)
toggledlog.Debug.Printf("encryptPath '%s' -> '%s' (err: %v)", plainPath, cPath, err)
tlog.Debug.Printf("encryptPath '%s' -> '%s' (err: %v)", plainPath, cPath, err)
fs.dirIVLock.RUnlock()
return cPath, err
}

View File

@ -9,7 +9,7 @@ import (
"strings"
"syscall"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@ -58,7 +58,7 @@ func IsLongContent(cName string) bool {
func ReadLongName(path string) (string, error) {
content, err := ioutil.ReadFile(path + LongNameSuffix)
if err != nil {
toggledlog.Warn.Printf("ReadLongName: %v", err)
tlog.Warn.Printf("ReadLongName: %v", err)
}
return string(content), err
}
@ -67,7 +67,7 @@ func ReadLongName(path string) (string, error) {
func DeleteLongName(dirfd *os.File, hashName string) error {
err := syscall.Unlinkat(int(dirfd.Fd()), hashName+LongNameSuffix)
if err != nil {
toggledlog.Warn.Printf("DeleteLongName: %v", err)
tlog.Warn.Printf("DeleteLongName: %v", err)
}
return err
}
@ -89,14 +89,14 @@ func (n *NameTransform) WriteLongName(dirfd *os.File, hashName string, plainName
fdRaw, err := syscall.Openat(int(dirfd.Fd()), hashName+LongNameSuffix,
syscall.O_WRONLY|syscall.O_CREAT|syscall.O_EXCL, 0600)
if err != nil {
toggledlog.Warn.Printf("WriteLongName: Openat: %v", err)
tlog.Warn.Printf("WriteLongName: Openat: %v", err)
return err
}
fd := os.NewFile(uintptr(fdRaw), hashName+LongNameSuffix)
defer fd.Close()
_, err = fd.Write([]byte(cName))
if err != nil {
toggledlog.Warn.Printf("WriteLongName: Write: %v", err)
tlog.Warn.Printf("WriteLongName: Write: %v", err)
}
return err
}

View File

@ -9,7 +9,7 @@ import (
"syscall"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@ -37,7 +37,7 @@ func ReadDirIV(dir string) (iv []byte, err error) {
func ReadDirIVAt(dirfd *os.File) (iv []byte, err error) {
fdRaw, err := syscall.Openat(int(dirfd.Fd()), DirIVFilename, syscall.O_RDONLY, 0)
if err != nil {
toggledlog.Warn.Printf("ReadDirIVAt: opening %q in dir %q failed: %v",
tlog.Warn.Printf("ReadDirIVAt: opening %q in dir %q failed: %v",
DirIVFilename, dirfd.Name(), err)
return nil, err
}
@ -47,12 +47,12 @@ func ReadDirIVAt(dirfd *os.File) (iv []byte, err error) {
iv = make([]byte, dirIVLen+1)
n, err := fd.Read(iv)
if err != nil {
toggledlog.Warn.Printf("ReadDirIVAt: Read failed: %v", err)
tlog.Warn.Printf("ReadDirIVAt: Read failed: %v", err)
return nil, err
}
iv = iv[0:n]
if len(iv) != dirIVLen {
toggledlog.Warn.Printf("ReadDirIVAt: wanted %d bytes, got %d", dirIVLen, len(iv))
tlog.Warn.Printf("ReadDirIVAt: wanted %d bytes, got %d", dirIVLen, len(iv))
return nil, errors.New("invalid iv length")
}
return iv, nil
@ -66,7 +66,7 @@ func WriteDirIV(dir string) error {
file := filepath.Join(dir, DirIVFilename)
err := ioutil.WriteFile(file, iv, 0400)
if err != nil {
toggledlog.Warn.Printf("WriteDirIV: %v", err)
tlog.Warn.Printf("WriteDirIV: %v", err)
}
return err
}
@ -126,7 +126,7 @@ func (be *NameTransform) DecryptPathDirIV(encryptedPath string, rootDir string)
var wd = rootDir
var plainNames []string
encryptedNames := strings.Split(encryptedPath, "/")
toggledlog.Debug.Printf("DecryptPathDirIV: decrypting %v\n", encryptedNames)
tlog.Debug.Printf("DecryptPathDirIV: decrypting %v\n", encryptedNames)
for _, encryptedName := range encryptedNames {
iv, err := ReadDirIV(wd)
if err != nil {

View File

@ -4,7 +4,7 @@ import (
"io/ioutil"
"regexp"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// filePreferOpenSSL tells us if OpenSSL is faster than Go GCM on this machine.
@ -18,12 +18,12 @@ import (
func filePreferOpenSSL(file string) bool {
ci, err := ioutil.ReadFile(file)
if err != nil {
toggledlog.Warn.Println(err)
tlog.Warn.Println(err)
return true
}
haveAes, err := regexp.Match(`(?m)^flags.*\baes\b`, ci)
if err != nil {
toggledlog.Warn.Println(err)
tlog.Warn.Println(err)
return true
}
return !haveAes

View File

@ -5,12 +5,12 @@ import (
"os/exec"
"testing"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
func TestMain(m *testing.M) {
// Shut up info output
toggledlog.Info.Enabled = false
tlog.Info.Enabled = false
m.Run()
}

View File

@ -9,7 +9,7 @@ import (
"golang.org/x/crypto/ssh/terminal"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@ -40,7 +40,7 @@ func Twice(extpass string) string {
p1 := readPasswordTerminal("Password: ")
p2 := readPasswordTerminal("Repeat: ")
if p1 != p2 {
toggledlog.Fatal.Println("Passwords do not match")
tlog.Fatal.Println("Passwords do not match")
os.Exit(exitCode)
}
return p1
@ -54,12 +54,12 @@ func readPasswordTerminal(prompt string) string {
// terminal.ReadPassword removes the trailing newline
p, err := terminal.ReadPassword(fd)
if err != nil {
toggledlog.Fatal.Printf("Could not read password from terminal: %v\n", err)
tlog.Fatal.Printf("Could not read password from terminal: %v\n", err)
os.Exit(exitCode)
}
fmt.Fprintf(os.Stderr, "\n")
if len(p) == 0 {
toggledlog.Fatal.Println("Password is empty")
tlog.Fatal.Println("Password is empty")
os.Exit(exitCode)
}
return string(p)
@ -68,11 +68,11 @@ func readPasswordTerminal(prompt string) string {
// readPasswordStdin reads a line from stdin
// Exits on read error or empty result.
func readPasswordStdin() string {
toggledlog.Info.Println("Reading password from stdin")
tlog.Info.Println("Reading password from stdin")
p := readLineUnbuffered(os.Stdin)
if len(p) == 0 {
fmt.Fprintf(os.Stderr, "FOOOOOO\n")
toggledlog.Fatal.Println("Got empty password from stdin")
tlog.Fatal.Println("Got empty password from stdin")
os.Exit(exitCode)
}
return p
@ -82,25 +82,25 @@ func readPasswordStdin() string {
// of the output.
// Exits on read error or empty result.
func readPasswordExtpass(extpass string) string {
toggledlog.Info.Println("Reading password from extpass program")
tlog.Info.Println("Reading password from extpass program")
parts := strings.Split(extpass, " ")
cmd := exec.Command(parts[0], parts[1:]...)
cmd.Stderr = os.Stderr
pipe, err := cmd.StdoutPipe()
if err != nil {
toggledlog.Fatal.Printf("extpass pipe setup failed: %v", err)
tlog.Fatal.Printf("extpass pipe setup failed: %v", err)
os.Exit(exitCode)
}
err = cmd.Start()
if err != nil {
toggledlog.Fatal.Printf("extpass cmd start failed: %v", err)
tlog.Fatal.Printf("extpass cmd start failed: %v", err)
os.Exit(exitCode)
}
p := readLineUnbuffered(pipe)
pipe.Close()
cmd.Wait()
if len(p) == 0 {
toggledlog.Fatal.Println("extpass: password is empty")
tlog.Fatal.Println("extpass: password is empty")
os.Exit(exitCode)
}
return p
@ -116,7 +116,7 @@ func readLineUnbuffered(r io.Reader) (l string) {
return l
}
if err != nil {
toggledlog.Fatal.Printf("readLineUnbuffered: %v", err)
tlog.Fatal.Printf("readLineUnbuffered: %v", err)
os.Exit(exitCode)
}
if n == 0 {

View File

@ -1,4 +1,4 @@
package toggledlog
package tlog
import (
"encoding/json"

View File

@ -1,7 +1,7 @@
// +build !go1.5
// = go 1.4 or lower
package toggledlog
package tlog
import (
"log/syslog"

View File

@ -1,7 +1,7 @@
// +build go1.5
// = go 1.5 or higher
package toggledlog
package tlog
import (
"log/syslog"

110
main.go
View File

@ -27,7 +27,7 @@ import (
"github.com/rfjakob/gocryptfs/internal/nametransform"
"github.com/rfjakob/gocryptfs/internal/prefer_openssl"
"github.com/rfjakob/gocryptfs/internal/readpassword"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
const (
@ -59,21 +59,21 @@ var GitVersionFuse = "[version not set - please compile using ./build.bash]"
func initDir(args *argContainer) {
err := checkDirEmpty(args.cipherdir)
if err != nil {
toggledlog.Fatal.Printf("Invalid cipherdir: %v", err)
tlog.Fatal.Printf("Invalid cipherdir: %v", err)
os.Exit(ERREXIT_INIT)
}
// Create gocryptfs.conf
if args.extpass == "" {
toggledlog.Info.Printf("Choose a password for protecting your files.")
tlog.Info.Printf("Choose a password for protecting your files.")
} else {
toggledlog.Info.Printf("Using password provided via -extpass.")
tlog.Info.Printf("Using password provided via -extpass.")
}
password := readpassword.Twice(args.extpass)
creator := toggledlog.ProgramName + " " + GitVersion
creator := tlog.ProgramName + " " + GitVersion
err = configfile.CreateConfFile(args.config, password, args.plaintextnames, args.scryptn, creator)
if err != nil {
toggledlog.Fatal.Println(err)
tlog.Fatal.Println(err)
os.Exit(ERREXIT_INIT)
}
@ -81,12 +81,12 @@ func initDir(args *argContainer) {
// Create gocryptfs.diriv in the root dir
err = nametransform.WriteDirIV(args.cipherdir)
if err != nil {
toggledlog.Fatal.Println(err)
tlog.Fatal.Println(err)
os.Exit(ERREXIT_INIT)
}
}
toggledlog.Info.Printf(toggledlog.ColorGreen + "The filesystem has been created successfully." + toggledlog.ColorReset)
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, "../") {
@ -94,8 +94,8 @@ func initDir(args *argContainer) {
// keep the absolute path.
friendlyPath = args.cipherdir
}
toggledlog.Info.Printf(toggledlog.ColorGrey+"You can now mount it using: %s %s MOUNTPOINT"+toggledlog.ColorReset,
toggledlog.ProgramName, friendlyPath)
tlog.Info.Printf(tlog.ColorGrey+"You can now mount it using: %s %s MOUNTPOINT"+tlog.ColorReset,
tlog.ProgramName, friendlyPath)
os.Exit(0)
}
@ -106,7 +106,7 @@ Usage: %s -init|-passwd [OPTIONS] CIPHERDIR
or %s [OPTIONS] CIPHERDIR MOUNTPOINT
Options:
`, toggledlog.ProgramName, toggledlog.ProgramName)
`, tlog.ProgramName, tlog.ProgramName)
flagSet.PrintDefaults()
}
@ -116,14 +116,14 @@ func loadConfig(args *argContainer) (masterkey []byte, confFile *configfile.Conf
// Check if the file exists at all before prompting for a password
_, err := os.Stat(args.config)
if err != nil {
toggledlog.Fatal.Printf("Config file not found: %v", err)
tlog.Fatal.Printf("Config file not found: %v", err)
os.Exit(ERREXIT_LOADCONF)
}
pw := readpassword.Once(args.extpass)
toggledlog.Info.Println("Decrypting master key")
tlog.Info.Println("Decrypting master key")
masterkey, confFile, err = configfile.LoadConfFile(args.config, pw)
if err != nil {
toggledlog.Fatal.Println(err.Error())
tlog.Fatal.Println(err.Error())
os.Exit(ERREXIT_LOADCONF)
}
@ -133,15 +133,15 @@ func loadConfig(args *argContainer) (masterkey []byte, confFile *configfile.Conf
// changePassword - change the password of config file "filename"
func changePassword(args *argContainer) {
masterkey, confFile := loadConfig(args)
toggledlog.Info.Println("Please enter your new password.")
tlog.Info.Println("Please enter your new password.")
newPw := readpassword.Twice(args.extpass)
confFile.EncryptKey(masterkey, newPw, confFile.ScryptObject.LogN())
err := confFile.WriteFile()
if err != nil {
toggledlog.Fatal.Println(err)
tlog.Fatal.Println(err)
os.Exit(ERREXIT_INIT)
}
toggledlog.Info.Printf("Password changed.")
tlog.Info.Printf("Password changed.")
os.Exit(0)
}
@ -149,7 +149,7 @@ func changePassword(args *argContainer) {
// "gocryptfs v0.3.1-31-g6736212-dirty; on-disk format 2"
func printVersion() {
fmt.Printf("%s %s; on-disk format %d; go-fuse %s\n",
toggledlog.ProgramName, GitVersion, contentenc.CurrentVersion, GitVersionFuse)
tlog.ProgramName, GitVersion, contentenc.CurrentVersion, GitVersionFuse)
}
func main() {
@ -159,7 +159,7 @@ func main() {
// Parse command line arguments
var opensslAuto string
flagSet = flag.NewFlagSet(toggledlog.ProgramName, flag.ExitOnError)
flagSet = flag.NewFlagSet(tlog.ProgramName, flag.ExitOnError)
flagSet.Usage = usageText
flagSet.BoolVar(&args.debug, "d", false, "")
flagSet.BoolVar(&args.debug, "debug", false, "Enable debug output")
@ -199,7 +199,7 @@ func main() {
} else {
args.openssl, err = strconv.ParseBool(opensslAuto)
if err != nil {
toggledlog.Fatal.Printf("Invalid \"-openssl\" setting: %v", err)
tlog.Fatal.Printf("Invalid \"-openssl\" setting: %v", err)
os.Exit(ERREXIT_USAGE)
}
}
@ -209,24 +209,24 @@ func main() {
forkChild() // does not return
}
if args.debug {
toggledlog.Debug.Enabled = true
tlog.Debug.Enabled = true
}
// "-v"
if args.version {
toggledlog.Debug.Printf("openssl=%v\n", args.openssl)
tlog.Debug.Printf("openssl=%v\n", args.openssl)
printVersion()
os.Exit(0)
}
if args.wpanic {
toggledlog.Warn.Wpanic = true
toggledlog.Debug.Printf("Panicing on warnings")
tlog.Warn.Wpanic = true
tlog.Debug.Printf("Panicing on warnings")
}
// Every operation below requires CIPHERDIR. Check that we have it.
if flagSet.NArg() >= 1 {
args.cipherdir, _ = filepath.Abs(flagSet.Arg(0))
err = checkDir(args.cipherdir)
if err != nil {
toggledlog.Fatal.Printf("Invalid cipherdir: %v", err)
tlog.Fatal.Printf("Invalid cipherdir: %v", err)
os.Exit(ERREXIT_CIPHERDIR)
}
} else {
@ -235,26 +235,26 @@ func main() {
}
// "-q"
if args.quiet {
toggledlog.Info.Enabled = false
tlog.Info.Enabled = false
}
// "-config"
if args.config != "" {
args.config, err = filepath.Abs(args.config)
if err != nil {
toggledlog.Fatal.Printf("Invalid \"-config\" setting: %v", err)
tlog.Fatal.Printf("Invalid \"-config\" setting: %v", err)
os.Exit(ERREXIT_INIT)
}
toggledlog.Info.Printf("Using config file at custom location %s", args.config)
tlog.Info.Printf("Using config file at custom location %s", args.config)
} else {
args.config = filepath.Join(args.cipherdir, configfile.ConfDefaultName)
}
// "-cpuprofile"
if args.cpuprofile != "" {
toggledlog.Info.Printf("Writing CPU profile to %s", args.cpuprofile)
tlog.Info.Printf("Writing CPU profile to %s", args.cpuprofile)
var f *os.File
f, err = os.Create(args.cpuprofile)
if err != nil {
toggledlog.Fatal.Println(err)
tlog.Fatal.Println(err)
os.Exit(ERREXIT_INIT)
}
pprof.StartCPUProfile(f)
@ -262,11 +262,11 @@ func main() {
}
// "-memprofile"
if args.memprofile != "" {
toggledlog.Info.Printf("Writing mem profile to %s", args.memprofile)
tlog.Info.Printf("Writing mem profile to %s", args.memprofile)
var f *os.File
f, err = os.Create(args.memprofile)
if err != nil {
toggledlog.Fatal.Println(err)
tlog.Fatal.Println(err)
os.Exit(ERREXIT_INIT)
}
defer func() {
@ -276,19 +276,19 @@ func main() {
}()
}
if args.cpuprofile != "" || args.memprofile != "" {
toggledlog.Info.Printf("Note: You must unmount gracefully, otherwise the profile file(s) will stay empty!\n")
tlog.Info.Printf("Note: You must unmount gracefully, otherwise the profile file(s) will stay empty!\n")
}
// "-openssl"
if args.openssl == false {
toggledlog.Debug.Printf("OpenSSL disabled, using Go GCM")
tlog.Debug.Printf("OpenSSL disabled, using Go GCM")
} else {
toggledlog.Debug.Printf("OpenSSL enabled")
tlog.Debug.Printf("OpenSSL enabled")
}
// Operation flags: init, passwd or mount
// "-init"
if args.init {
if flagSet.NArg() > 1 {
toggledlog.Fatal.Printf("Usage: %s -init [OPTIONS] CIPHERDIR", toggledlog.ProgramName)
tlog.Fatal.Printf("Usage: %s -init [OPTIONS] CIPHERDIR", tlog.ProgramName)
os.Exit(ERREXIT_USAGE)
}
initDir(&args) // does not return
@ -296,7 +296,7 @@ func main() {
// "-passwd"
if args.passwd {
if flagSet.NArg() > 1 {
toggledlog.Fatal.Printf("Usage: %s -passwd [OPTIONS] CIPHERDIR", toggledlog.ProgramName)
tlog.Fatal.Printf("Usage: %s -passwd [OPTIONS] CIPHERDIR", tlog.ProgramName)
os.Exit(ERREXIT_USAGE)
}
changePassword(&args) // does not return
@ -304,17 +304,17 @@ func main() {
// Mount
// Check mountpoint
if flagSet.NArg() != 2 {
toggledlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT", toggledlog.ProgramName)
tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT", tlog.ProgramName)
os.Exit(ERREXIT_USAGE)
}
args.mountpoint, err = filepath.Abs(flagSet.Arg(1))
if err != nil {
toggledlog.Fatal.Printf("Invalid mountpoint: %v", err)
tlog.Fatal.Printf("Invalid mountpoint: %v", err)
os.Exit(ERREXIT_MOUNTPOINT)
}
err = checkDirEmpty(args.mountpoint)
if err != nil {
toggledlog.Fatal.Printf("Invalid mountpoint: %v", err)
tlog.Fatal.Printf("Invalid mountpoint: %v", err)
os.Exit(ERREXIT_MOUNTPOINT)
}
// Get master key
@ -322,13 +322,13 @@ func main() {
var confFile *configfile.ConfFile
if args.masterkey != "" {
// "-masterkey"
toggledlog.Info.Printf("Using explicit master key.")
tlog.Info.Printf("Using explicit master key.")
masterkey = parseMasterKey(args.masterkey)
toggledlog.Info.Printf("THE MASTER KEY IS VISIBLE VIA \"ps -auxwww\", ONLY USE THIS MODE FOR EMERGENCIES.")
tlog.Info.Printf("THE MASTER KEY IS VISIBLE VIA \"ps -auxwww\", ONLY USE THIS MODE FOR EMERGENCIES.")
} else if args.zerokey {
// "-zerokey"
toggledlog.Info.Printf("Using all-zero dummy master key.")
toggledlog.Info.Printf("ZEROKEY MODE PROVIDES NO SECURITY AT ALL AND SHOULD ONLY BE USED FOR TESTING.")
tlog.Info.Printf("Using all-zero dummy master key.")
tlog.Info.Printf("ZEROKEY MODE PROVIDES NO SECURITY AT ALL AND SHOULD ONLY BE USED FOR TESTING.")
masterkey = make([]byte, cryptocore.KeyLen)
} else {
// Load master key from config file
@ -336,17 +336,17 @@ func main() {
printMasterKey(masterkey)
}
// Initialize FUSE server
toggledlog.Debug.Printf("cli args: %v", args)
tlog.Debug.Printf("cli args: %v", args)
srv := initFuseFrontend(masterkey, args, confFile)
toggledlog.Info.Println(toggledlog.ColorGreen + "Filesystem mounted and ready." + toggledlog.ColorReset)
tlog.Info.Println(tlog.ColorGreen + "Filesystem mounted and ready." + tlog.ColorReset)
// We are ready - send USR1 signal to our parent and switch to syslog
if args.notifypid > 0 {
sendUsr1(args.notifypid)
if !args.nosyslog {
toggledlog.Info.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_INFO)
toggledlog.Debug.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_DEBUG)
toggledlog.Warn.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_WARNING)
tlog.Info.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_INFO)
tlog.Debug.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_DEBUG)
tlog.Warn.SwitchToSyslog(syslog.LOG_USER | syslog.LOG_WARNING)
}
}
// Wait for SIGINT in the background and unmount ourselves if we get it.
@ -391,7 +391,7 @@ func initFuseFrontend(key []byte, args argContainer, confFile *configfile.ConfFi
frontendArgs.EMENames = false
}
jsonBytes, _ := json.MarshalIndent(frontendArgs, "", "\t")
toggledlog.Debug.Printf("frontendArgs: %s", string(jsonBytes))
tlog.Debug.Printf("frontendArgs: %s", string(jsonBytes))
finalFs := fusefrontend.NewFS(frontendArgs)
pathFsOpts := &pathfs.PathNodeFsOptions{ClientInodes: true}
@ -407,8 +407,8 @@ func initFuseFrontend(key []byte, args argContainer, confFile *configfile.ConfFi
var mOpts fuse.MountOptions
mOpts.AllowOther = false
if args.allow_other {
toggledlog.Info.Printf(toggledlog.ColorYellow + "The option \"-allow_other\" is set. Make sure the file " +
"permissions protect your data from unwanted access." + toggledlog.ColorReset)
tlog.Info.Printf(tlog.ColorYellow + "The option \"-allow_other\" is set. Make sure the file " +
"permissions protect your data from unwanted access." + tlog.ColorReset)
mOpts.AllowOther = true
// Make the kernel check the file permissions for us
mOpts.Options = append(mOpts.Options, "default_permissions")
@ -421,7 +421,7 @@ func initFuseFrontend(key []byte, args argContainer, confFile *configfile.ConfFi
srv, err := fuse.NewServer(conn.RawFS(), args.mountpoint, &mOpts)
if err != nil {
toggledlog.Fatal.Printf("Mount failed: %v", err)
tlog.Fatal.Printf("Mount failed: %v", err)
os.Exit(ERREXIT_MOUNT)
}
srv.SetDebug(args.fusedebug)
@ -442,8 +442,8 @@ func handleSigint(srv *fuse.Server, mountpoint string) {
<-ch
err := srv.Unmount()
if err != nil {
toggledlog.Warn.Print(err)
toggledlog.Info.Printf("Trying lazy unmount")
tlog.Warn.Print(err)
tlog.Info.Printf("Trying lazy unmount")
cmd := exec.Command("fusermount", "-u", "-z", mountpoint)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

View File

@ -6,7 +6,7 @@ import (
"strings"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// printMasterKey - remind the user that he should store the master key in
@ -26,7 +26,7 @@ func printMasterKey(key []byte) {
}
}
toggledlog.Info.Printf(`
tlog.Info.Printf(`
Your master key is:
%s
@ -35,7 +35,7 @@ If the gocryptfs.conf file becomes corrupted or you ever forget your password,
there is only one hope for recovery: The master key. Print it to a piece of
paper and store it in a drawer.
`, toggledlog.ColorGrey+hChunked+toggledlog.ColorReset)
`, tlog.ColorGrey+hChunked+tlog.ColorReset)
}
// parseMasterKey - Parse a hex-encoded master key that was passed on the command line
@ -44,11 +44,11 @@ func parseMasterKey(masterkey string) []byte {
masterkey = strings.Replace(masterkey, "-", "", -1)
key, err := hex.DecodeString(masterkey)
if err != nil {
toggledlog.Fatal.Printf("Could not parse master key: %v\n", err)
tlog.Fatal.Printf("Could not parse master key: %v\n", err)
os.Exit(1)
}
if len(key) != cryptocore.KeyLen {
toggledlog.Fatal.Printf("Master key has length %d but we require length %d\n", len(key), cryptocore.KeyLen)
tlog.Fatal.Printf("Master key has length %d but we require length %d\n", len(key), cryptocore.KeyLen)
os.Exit(1)
}
return key

View File

@ -4,7 +4,7 @@ import (
"os"
"syscall"
"github.com/rfjakob/gocryptfs/internal/toggledlog"
"github.com/rfjakob/gocryptfs/internal/tlog"
)
// Send signal USR1 to "pid" (usually our parent process). This notifies it
@ -12,11 +12,11 @@ import (
func sendUsr1(pid int) {
p, err := os.FindProcess(pid)
if err != nil {
toggledlog.Warn.Printf("sendUsr1: FindProcess: %v\n", err)
tlog.Warn.Printf("sendUsr1: FindProcess: %v\n", err)
return
}
err = p.Signal(syscall.SIGUSR1)
if err != nil {
toggledlog.Warn.Printf("sendUsr1: Signal: %v\n", err)
tlog.Warn.Printf("sendUsr1: Signal: %v\n", err)
}
}