*
* This file is part of Trivial IP Encryption (TrIPE).
*
- * TrIPE is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * TrIPE is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your
+ * option) any later version.
*
- * TrIPE is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * TrIPE is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
*
* You should have received a copy of the GNU General Public License
- * along with TrIPE; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * along with TrIPE. If not, see <https://www.gnu.org/licenses/>.
*/
/*----- Header files ------------------------------------------------------*/
static void usage(FILE *fp)
{
pquis(fp, "Usage: $ [-DF] [-d DIR] [-b ADDR] [-p PORT] [-n TUNNEL]\n\
- [-U USER] [-G GROUP] [-a SOCKET] [-T TRACE-OPTS]\n\
+ [-U USER] [-G GROUP] [-a SOCKET] [-m MODE] [-T TRACE-OPTS]\n\
[-k PRIV-KEYRING] [-K PUB-KEYRING] [-t KEY-TAG]\n");
}
-K, --pub-keyring=FILE Get public keys from FILE.\n\
-t, --tag=KEYTAG Use private key labelled TAG.\n\
-a, --admin-socket=FILE Use FILE as the adminstration socket.\n\
+-m, --admin-perms=MODE Permissions to set on admin socket [default 600].\n\
" T( "\
-T, --trace=OPTIONS Turn on tracing options.\n\
" ) "\
const char *kr_priv = "keyring", *kr_pub = "keyring.pub";
const char *tag_priv = 0;
const char *csock = SOCKETDIR "/tripesock";
+ int csockmode = 0600;
const char *dir = CONFIGDIR;
const char *p;
unsigned port = TRIPE_PORT;
{ "pub-keyring", OPTF_ARGREQ, 0, 'K' },
{ "tag", OPTF_ARGREQ, 0, 't' },
{ "admin-socket", OPTF_ARGREQ, 0, 'a' },
+ { "admin-perms", OPTF_ARGREQ, 0, 'm' },
#ifndef NTRACE
{ "trace", OPTF_ARGREQ, 0, 'T' },
#endif
{ 0, 0, 0, 0 }
};
- i = mdwopt(argc, argv, "hvuDFU:G:b:n:p:d:k:K:t:a:" T("T:"),
+ i = mdwopt(argc, argv, "hvuDFU:G:b:n:p:d:k:K:t:a:m:" T("T:"),
opts, 0, 0, 0);
if (i < 0)
break;
case 'a':
csock = optarg;
break;
+ case 'm': {
+ char *p;
+ csockmode = strtol(optarg, &p, 8);
+ if (*p) die(EXIT_FAILURE, "bad permissions: `%s'", optarg);
+ } break;
case 't':
tag_priv = optarg;
break;
a_create(STDIN_FILENO, STDOUT_FILENO, af);
}
ps_split(f & f_daemon);
- a_init(csock, u, g);
+ a_init(csock, u, g, csockmode);
u_setugid(u, g);
km_init(kr_priv, kr_pub, tag_priv);
if (f & f_daemon) {