Example #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);
        }
    }
}
Example #2
0
void handle_parent(session_t *sess)
{
	minimize_privilege();	//使nobody用户进程的权限最小,仅仅获得绑定特权端口的权限
	char cmd;
	while (1)
	{
		cmd = priv_sock_get_cmd(sess->parent_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;
		
		}
	}
}
Example #3
0
void handle_nobody(session_t* sess)
{
	
	minimize_privilege();

	char cmd;

	while (1)
	{
		// 获取ftp协议进程传递的消息
		cmd = priv_sock_get_cmd(sess->nobody_fd);
		switch (cmd)
		{
		case PRIV_SOCK_GET_DATA_SOCK:
			privop_port_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;
		}
		
	}
}
Example #4
0
void PrivPar::handle_parent(session_t *sess)
{
	minimize_privace();
	char cmd;
	while (1)
	{
		cmd = priv_sock_get_cmd(sess->parent_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;		
		}
	}
}