void mgt_cli_setup(int fdi, int fdo, int verbose, const char *ident, mgt_cli_close_f *closefunc, void *priv) { struct cli *cli; struct vev *ev; (void)ident; (void)verbose; cli = VCLS_AddFd(mgt_cls, fdi, fdo, closefunc, priv); cli->ident = strdup(ident); if (fdi != 0 && secret_file != NULL) { cli->auth = MCF_NOAUTH; mgt_cli_challenge(cli); } else { cli->auth = MCF_AUTH; mcf_banner(cli, NULL, NULL); } AZ(VSB_finish(cli->sb)); (void)VCLI_WriteResult(fdo, cli->result, VSB_data(cli->sb)); ev = vev_new(); AN(ev); ev->name = cli->ident; ev->fd = fdi; ev->fd_flags = EV_RD; ev->callback = mgt_cli_callback2; ev->priv = cli; AZ(vev_add(mgt_evb, ev)); }
void mgt_cli_setup(int fdi, int fdo, int auth, const char *ident, mgt_cli_close_f *closefunc, void *priv) { struct cli *cli; struct vev *ev; cli = VCLS_AddFd(mgt_cls, fdi, fdo, closefunc, priv); REPLACE(cli->ident, ident); if (!auth && secret_file != NULL) { cli->auth = MCF_NOAUTH; mgt_cli_challenge(cli); } else { cli->auth = MCF_AUTH; mcf_banner(cli, NULL, NULL); } AZ(VSB_finish(cli->sb)); (void)VCLI_WriteResult(fdo, cli->result, VSB_data(cli->sb)); ev = VEV_Alloc(); AN(ev); ev->name = cli->ident; ev->fd = fdi; ev->fd_flags = VEV__RD; ev->callback = mgt_cli_callback2; ev->priv = cli; AZ(VEV_Start(mgt_evb, ev)); }
void CLI_Run(void) { int i; add_check = 1; AN(VCLS_AddFd(cls, heritage.cli_in, heritage.cli_out, NULL, NULL)); do { i = VCLS_Poll(cls, -1); } while(i > 0); VSL(SLT_CLI, 0, "EOF on CLI connection, worker stops"); }