char *inbuf;
size_t inbufdata, inbufsize;
struct qcommand *queue;
- int extended;
+ int extended, isop;
char *nativename;
char *nativenick;
};
} else {
freeargs = 0;
}
- if((newfn = fnetinitconnect(L"dc", args)) != NULL)
+ if((newfn = fnetinitconnect(L"dc", args, NULL)) != NULL)
{
linkfnetnode(newfn);
putfnetnode(newfn);
/* Do nothing for now. */
}
+static void cmd_getpass(struct socket *sk, struct fnetnode *fn, char *cmd, char *args)
+{
+ struct dchub *hub;
+ struct wcspair *arg;
+ char *mbspw;
+
+ hub = fn->data;
+ for(arg = fn->args; arg != NULL; arg = arg->next)
+ {
+ if(!wcscmp(arg->key, L"password"))
+ break;
+ }
+ if((arg == NULL) || ((mbspw = icwcstombs(arg->val, DCCHARSET)) == NULL))
+ {
+ killfnetnode(fn);
+ return;
+ }
+ qstrf(sk, "$MyPass %s|", mbspw);
+ free(mbspw);
+ hubhandleaction(sk, fn, cmd, args);
+}
+
+static void cmd_logedin(struct socket *sk, struct fnetnode *fn, char *cmd, char *args)
+{
+ struct dchub *hub;
+
+ hub = fn->data;
+ hub->isop = 1;
+ hubhandleaction(sk, fn, cmd, args);
+}
+
static void cmd_mynick(struct socket *sk, struct dcpeer *peer, char *cmd, char *args)
{
struct dcexppeer *expect;
{"$To:", cc(cmd_to)},
{"$SR", cc(cmd_sr)},
{"$UserCommand", cc(cmd_usercommand)},
+ {"$GetPass", cc(cmd_getpass)},
+ {"$LogedIn", cc(cmd_logedin)}, /* sic */
{NULL, NULL}
};