diff options
-rw-r--r-- | config.def.h | 4 | ||||
-rw-r--r-- | ratox.1 | 21 | ||||
-rw-r--r-- | ratox.c | 43 |
3 files changed, 41 insertions, 27 deletions
diff --git a/config.def.h b/config.def.h index 8889236..9ef00c1 100644 --- a/config.def.h +++ b/config.def.h @@ -1,12 +1,12 @@ /* See LICENSE file for copyright and license details. */ -#define DATAFILE ".ratox.tox" /* connection delay in seconds */ #define CONNECTDELAY 4 /* ringing delay in seconds */ #define RINGINGDELAY 16 #define MAXCALLS 8 -static int encryptdatafile = 0; +static char *savefile = ".ratox.tox"; +static int encryptsavefile = 0; static char proxyaddr[] = "localhost"; static uint16_t proxyport = 8080; @@ -1,4 +1,4 @@ -.Dd December 5, 2014 +.Dd December 8, 2014 .Dt RATOX 1 .Os .Sh NAME @@ -9,6 +9,7 @@ .Op Fl 4 | Fl 6 .Op Fl E | Fl e .Op Fl tp +.Op Ar savefile .Sh DESCRIPTION .Nm is a client implementation of the rather popular tox protocol. @@ -22,14 +23,16 @@ Switch to IPv4-only mode. This is the default. .It Fl 6 Switch to IPv6-only mode. .It Fl E -Enable data file encryption. +Enable save file encryption. .It Fl e -Disable data file encryption. +Disable save file encryption. .It Fl t Enable TCP mode. By default, tox operates with UDP and is recommended, as TCP mode implies certain security considerations. .It Fl p Enable TCP SOCKS5 proxy as specified in \fIconfig.h\fR when the package was built. By default when this option is enabled, ratox will use a proxy on \fB127.0.0.1:8080\fR. +.It Ar savefile +Specify the path of the save file to load a profile from or create a new one at. .El .Sh CONFIGURATION .Nm @@ -37,10 +40,16 @@ is configured by modifying \fIconfig.h\fR and recompiling the code. Apart from the command line options there are a few more options that can be tweaked at compile time. .Pp -Encrypting the save file can be done by setting \fBencryptdatafile\fR to \fB1\fR. -You can do this even if your current save file is not encrypted. The next time +You can encrypt/decrypt your save file by setting \fBencryptsavefile\fR to \fB1\fR | \fB0\fR or +specifying +.Fl E +| +.Fl e +respectively. In the former case it will prompt you for a new passphrase, in the latter it will ask you to enter your current passphrase and will then write the save file unencrypted. +.Pp +Trying to load or decrypt an encrypted save file, .Nm -starts it will ask you to supply an encryption passphrase. +will ask you to supply a passphrase. .Sh FILESYSTEM STRUCTURE .Ss Global slots Each of the following global slots contain an \fBin\fR, \fBout\fR and @@ -1004,9 +1004,9 @@ dataload(void) int fd; uint8_t *data, *passphrase2 = NULL; - fd = open(DATAFILE, O_RDONLY); + fd = open(savefile, O_RDONLY); if (fd < 0) { - if (encryptdatafile) { + if (encryptsavefile) { reprompt1: while (readpass("Data : New passphrase > ", &passphrase, &pplen) < 0); while (readpass("Data : Re-enter passphrase > ", &passphrase2, &pp2len) < 0); @@ -1024,7 +1024,7 @@ reprompt1: lseek(fd, 0, SEEK_SET); if (sz == 0) { - weprintf("Data : %s > Empty\n", DATAFILE); + weprintf("Data : %s > Empty\n", savefile); return; } @@ -1033,18 +1033,18 @@ reprompt1: eprintf("malloc:"); if (read(fd, data, sz) != sz) - eprintf("read %s:", DATAFILE); + eprintf("read %s:", savefile); if (tox_is_save_encrypted(data)) { - if (!encryptdatafile) - logmsg("Data : %s > Encrypted, but saving unencrypted\n", DATAFILE); + if (!encryptsavefile) + logmsg("Data : %s > Encrypted, but saving unencrypted\n", savefile); while (readpass("Data : Passphrase > ", &passphrase, &pplen) < 0 || tox_encrypted_load(tox, data, sz, passphrase, pplen) < 0); } else { if (tox_load(tox, data, sz) < 0) - eprintf("Data : %s > Failed to load\n", DATAFILE); - if (encryptdatafile) { - logmsg("Data : %s > Not encrypted, but saving encrypted\n", DATAFILE); + eprintf("Data : %s > Failed to load\n", savefile); + if (encryptsavefile) { + logmsg("Data : %s > Not encrypted, but saving encrypted\n", savefile); reprompt2: while (readpass("Data : New passphrase > ", &passphrase, &pplen) < 0); while (readpass("Data : Re-enter passphrase > ", &passphrase2, &pp2len) < 0); @@ -1068,21 +1068,21 @@ datasave(void) int fd; uint8_t *data; - fd = open(DATAFILE, O_WRONLY | O_TRUNC | O_CREAT , 0666); + fd = open(savefile, O_WRONLY | O_TRUNC | O_CREAT , 0666); if (fd < 0) - eprintf("open %s:", DATAFILE); + eprintf("open %s:", savefile); - sz = encryptdatafile ? tox_encrypted_size(tox) : tox_size(tox); + sz = encryptsavefile ? tox_encrypted_size(tox) : tox_size(tox); data = malloc(sz); if (!data) eprintf("malloc:"); - if (encryptdatafile) + if (encryptsavefile) tox_encrypted_save(tox, data, passphrase, pplen); else tox_save(tox, data); if (write(fd, data, sz) != sz) - eprintf("write %s:", DATAFILE); + eprintf("write %s:", savefile); fsync(fd); free(data); @@ -1943,11 +1943,11 @@ shutdown(void) static void usage(void) { - eprintf("usage: %s [-4|-6] [-E|-e] [-tp]\n" + eprintf("usage: %s [-4|-6] [-E|-e] [-tp] [savefile]\n" " -4\tIPv4 only\n" " -6\tIPv6 only\n" - " -E\tEnable data file encryption\n" - " -e\tDisable data file encryption\n" + " -E\tEnable save file encryption\n" + " -e\tDisable save file encryption\n" " -t\tEnable TCP mode (UDP by default)\n" " -p\tEnable TCP socks5 proxy\n", argv0); } @@ -1962,10 +1962,10 @@ main(int argc, char *argv[]) ipv6 = 1; break; case 'E': - encryptdatafile = 1; + encryptsavefile = 1; break; case 'e': - encryptdatafile = 0; + encryptsavefile = 0; break; case 't': tcpflag = 1; @@ -1977,6 +1977,11 @@ main(int argc, char *argv[]) usage(); } ARGEND; + if (argc > 1) + usage(); + if (argc == 1) + savefile = *argv; + setbuf(stdout, NULL); signal(SIGHUP, initshutdown); |