args = NULL;
for(i = 3; i < argc - 1; i += 2)
newwcspair(argv[i], argv[i + 1], &args);
- fn = fnetinitconnect(argv[1], buf, args);
+ fn = fnetinitconnect(argv[1], data->userinfo->name, buf, args);
err = errno;
free(buf);
if(fn == NULL)
sq(sk, 0, L"510", L"No such node", NULL);
return;
}
+ if(wpfind(fn->args, L"locked") && !((data->userinfo->perms & PERM_ADMIN) || !wcscmp(data->userinfo->name, fn->owner)))
+ {
+ sq(sk, 0, L"502", L"This node is locked and you are neither administrator nor its owner", NULL);
+ return;
+ }
killfnetnode(fn);
unlinkfnetnode(fn);
}
} else {
for(peer = fn->peers; peer != NULL; peer = peer->next)
{
- sq(sk, 2 | ((peer->next != NULL)?1:0), L"200", peer->id, peer->nick, NULL);
+ sq(sk, 2 | ((peer->next != NULL)?1:0), L"200", L"%%ls", peer->id, L"%%ls", peer->nick, NULL);
for(i = 0; i < peer->dinum; i++)
{
if(peer->peerdi[i].datum->datatype == FNPD_INT)
sq(sk, 2, peer->peerdi[i].datum->id, buf, NULL);
}
if((peer->peerdi[i].datum->datatype == FNPD_STR) && (peer->peerdi[i].data.str != NULL))
- sq(sk, 2, peer->peerdi[i].datum->id, peer->peerdi[i].data.str, NULL);
+ sq(sk, 2, peer->peerdi[i].datum->id, L"%%ls", peer->peerdi[i].data.str, NULL);
}
sq(sk, 0, NULL);
}
havepriv(PERM_TRANS);
buf1 = swprintf2(L"%lli", bytesdownload);
buf2 = swprintf2(L"%lli", bytesupload);
- sq(sk, 0, L"200", L"%%ls", buf1, L"%%ls", buf2, NULL);
+ sq(sk, 0, L"200", L"down", L"%%ls", buf1, L"up", L"%%ls", buf2, NULL);
free(buf1);
free(buf2);
}
static struct configvar myvars[] =
{
+ /** If true, UI connections will only be accepted from localhost
+ * addresses (127.0.0.1, ::1 or ::ffff:127.0.0.1). Unless you are
+ * completely sure that you know what you are doing, never turn
+ * this off when auth.authless is on. */
{CONF_VAR_BOOL, "onlylocal", {.num = 1}},
+ /** The port number on which to accept UI client connections. */
{CONF_VAR_INT, "port", {.num = 1500}},
+ /** The TOS value to use for UI connections (see the TOS VALUES
+ * section). */
{CONF_VAR_INT, "uitos", {.num = SOCK_TOS_MINDELAY}},
+ /** The name of the filtercmd script (see the FILES section for
+ * lookup information). */
{CONF_VAR_STRING, "filtercmd", {.str = L"dc-filtercmd"}},
{CONF_VAR_END}
};