summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.def.h4
-rw-r--r--ratox.121
-rw-r--r--ratox.c43
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;
diff --git a/ratox.1 b/ratox.1
index 5f47d91..9cd4ee5 100644
--- a/ratox.1
+++ b/ratox.1
@@ -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
diff --git a/ratox.c b/ratox.c
index 800f994..9f4c26c 100644
--- a/ratox.c
+++ b/ratox.c
@@ -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);