Exemplo n.º 1
0
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);
        }
    }
}
Exemplo n.º 2
0
Arquivo: process.c Projeto: dcant/zftp
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");
		}
	}
}