void handle_nobody(session_t *sess) { set_nobody() ; set_bind_capabilities(); char cmd; while(1) { //不断的从proto进程读数据 cmd = priv_sock_recv_cmd(sess->nobody_fd); switch (cmd) { case PRIV_SOCK_GET_DATA_SOCK: privop_pasv_get_data_sock(sess); break; case PRIV_SOCK_PASV_ACTIVE: privop_pasv_active(sess); break; case PRIV_SOCK_PASV_LISTEN: privop_pasv_listen(sess); break; case PRIV_SOCK_PASV_ACCEPT: privop_pasv_accept(sess); break; default: fprintf(stderr, "Unkown command\n"); exit(EXIT_FAILURE); } } }
void handle_childcmd(session_t *sess) { // tcp_server("192.168.1.251", 20); // test whether drop_privilege succeed. while (1) { char cmd = priv_sock_recv_cmd(sess->parent_fd); switch (cmd) { case PRIV_SOCK_CHECK: priv_op_check(sess); break; case PRIV_SOCK_CLOSE: priv_op_close(sess); break; case PRIV_SOCK_LISTEN: priv_op_listen(sess); break; case PRIV_SOCK_ACCEPT: priv_op_accept(sess); break; case PRIV_SOCK_GET: priv_op_get(sess); break; default: ERROR_EXIT("handle_childcmd"); } } }