⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rightlogin.cpp

📁 实时监控
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		CString str;
		str.Format(IDS_CHNL_FMT, i+1);
		cbb->AddString(str);
	}
}

void fill_combo_inputs(LPCTSTR alias, CComboBox* cbb)
{
	if( !cbb )
		return;
	
	cbb->ResetContent();
	int cnt = get_chnls(alias);
	if( !cnt )
		return;
	ULONG ip;
	USHORT port;
	get_addr(alias,ip,port);
	if(!(check_2000_version(ip,port) ||check_2100_version(ip,port)))
	{
		if(get_chnls(alias) > 8)
			cnt = 9;
	}
	
	for( int i=0; i<cnt; i++ )
	{
		CString str;
		str.Format(IDS_INPUT_FMT, i+1);
		cbb->AddString(str);
	}
}
void get_disk_info(ULONG ip, USHORT port)
{
	CRightLogin* l = CRightLogin::the_one();
    ip_port ipp = ip_port(ip, port);
    channel_info* ci = l->cmgr.find(ipp);
    if( !ci ) return;
	net_get_disk_info(l->net,ip, port);
}

void get_addr(LPCTSTR alias, ULONG& ip, USHORT& port)
{
	CRightLogin* l = CRightLogin::the_one();
	ip_port ipp = l->ipmgr.trans_ip(alias);

	for(int i=0; i<m_station_length; i++) 
	{
		  Remote_Station_setting *p = &m_station[i];
	      if(strcmp(p->name, m_login_client_name)) 
			  continue;

	      if(!strcmp(alias, p->dvrname)) 
		  {	 
		   	ip = net_get_host_by_name(l->net, p->ip);
			port = p->port;

			return ;
		  }  
	}

	ip = ipp.get_ip();
	port = ipp.look_port();
}

void set_net_opt(LPCTSTR alias, DWORD opt, void* stuff, 
				 OPT_SET_CALLEE cb)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);

	net_set_options(l->net, ip, port, (NET_OPTIONS)opt, stuff, cb);
}

void get_net_opt(LPCTSTR alias, DWORD opt, int channel, OPT_GET_CALLEE cb)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);

	ip_port ipp(ip, port);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci ) return;
    if(ci->get_channels() == channel) return;
	
	net_get_options(l->net, ip, port, (NET_OPTIONS)opt, channel, cb);
}

void get_net_opt_file(LPCTSTR alias, byte * m_byte, OPT_GET_CALLEE cb)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);

	ip_port ipp(ip, port);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci ) return;
	
	net_get_options_file(l->net, ip, port, m_byte, cb);
}

void get_net_opt_backup_file(LPCTSTR alias, byte * m_byte, OPT_GET_CALLEE cb)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);
	
	ip_port ipp(ip, port);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci ) return;
	
	net_get_options_backup_file(l->net, ip, port, m_byte, cb);
}

int get_chnls(CString dvrname)
{
	CRightLogin* l = CRightLogin::the_one();

	for( int i=0; i<l->cmgr.count(); i++ )
	{
	    channel_info& ref = l->cmgr[i];
		if(ref.get_dvrname()==dvrname)
		{
          if(ref.logintrue())
			  return ref.get_channels();
		  else return 0;
		}
	}
	return 0;
}

USHORT get_port(ULONG ip)
{
	CRightLogin* l = CRightLogin::the_one();

	for( int i=0; i<l->cmgr.count(); i++ )
	{
	    channel_info& ref = l->cmgr[i];
		if(ref.get_ip() == ip)
			return ref.look_port();
	}
	return 8101;
}

int get_chnls(ULONG ip, USHORT port)
{
	CRightLogin* l = CRightLogin::the_one();
	ip_port ipp(ip, port);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci )
		return 0;
	return ci->get_channels();
}
int get_chnls(LPCTSTR alias)
{
	CRightLogin* l = CRightLogin::the_one();
	ip_port ipp = l->ipmgr.trans_ip(alias);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci )
	{
		CString m_str;
		m_str = alias;
		return get_chnls(m_str);
	}
	return ci->get_channels();
}

bool check_4004_version(ULONG ip, USHORT port)
{
	return check_version(ip, port, priv4VERSION);
}

bool check_4008_version(ULONG ip, USHORT port)
{
	return (check_version(ip, port, priv6008V)||
		check_version(ip, port, priv6008)||
		check_version(ip, port, priv4008VERSION));
}

bool check_16_version(ULONG ip, USHORT port)
{
	return (check_version(ip, port, priv6016)||
		check_version(ip, port, priv6016A8)||
		check_version(ip, port, priv6016V));
}

bool check_2000_version(ULONG ip, USHORT port)
{
	return check_version(ip, port, priv2000VERSION);
}

bool check_2100_version(ULONG ip, USHORT port)
{
	return check_version(ip, port, priv2100VERSION);
}

bool check_version(ULONG ip, USHORT port, PRIVILEGE version)
{
	CRightLogin* l = CRightLogin::the_one();
	ip_port ipp=ip_port(ip,port);
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci ) return false;

	if(ci->privilege() ==  version)
		return true;
	else
		return false;
}

bool check_sel_channel(ULONG ip, USHORT port, int m_channel)
{
   CRightLogin* l = CRightLogin::the_one();
   ip_port ipp=ip_port(ip,port);
   channel_info* ci = l->cmgr.find(ipp);
   if( !ci ) return false;

   if(m_channel == ci->get_channels()) return true;
   else return false;
}
CString get_dvrname(const ip_port& ipp)
{
	CRightLogin* l = CRightLogin::the_one();
	channel_info* ci = l->cmgr.find(ipp);
	if( !ci ) return "";
	return ci->get_dvrname();
}

CString get_alias(const ip_port& ipp)
{
	CRightLogin* l = CRightLogin::the_one();
	return l->ipmgr.get_alias(ipp.get_ip(), ipp.look_port());
}

MSG3(ele_map_open_vedio,  CRightLogin )
{
	ULONG ip = (ULONG) w;
	USHORT port = HSHORT(l);
	SHORT channel = LSHORT(l);

    ULONG temip = ip;
	byte* i = (byte*)&temip;
	byte* p_i = (byte*)&ip;
    p_i[0] = i[3];
	p_i[1] = i[2];
	p_i[2] = i[1];
	p_i[3] = i[0];
    ip_port ipport = ip_port(ip, port);

    open_channel_map_video(ipport, channel-1);
    return true;
}

//对讲
MSG3(on_begin_talk, CRightLogin )
{
	ULONG ip = (ULONG) w;
	USHORT  port = (USHORT) l; 

	check_talk_condition(ip, port, true);

	CToolbarBottom *p = CToolbarBottom::m_ptool;
	p->PostMessage(NTM_CMD_TALKING, 0, 0);
	info_balloon(IDS_BEGIN_TALKING_OK);

	CString m_str;
	m_str.Format(IDS_BEGIN_TALKING_OK);
    write_log_file(m_str);
	return 0;
}   
MSG3(on_fail_talk, CRightLogin)	
{
   ULONG ip = (ULONG) w;
   USHORT port = (USHORT) l;
   check_talk_condition(ip, port, false);

   CToolbarBottom *p = CToolbarBottom::m_ptool;
   p->PostMessage(NTM_CMD_TALKING, 0, 0);

   info_balloon(IDS_REQUEST_TALKING_FAILE);
   return 0;
}

bool start_talk()
{
	CRightLogin* l = CRightLogin::the_one();
	video_channel* p = video_channel::current_sel();
    if(!p) return false;
	if(p->is_video_opened() && !p->is_vod() && !m_talk[p->index()])
	{
		ip_port ipp = p->channel_ip();
	    net_start_talk(l->net, ipp.get_ip(),ipp.look_port(), p->channel_index(), l->m_hWnd);
		return true;
	}
	else 
	{
		AfxMessageBox(IDS_TALK_OPEN_VIDEO);
		return false;
	}
	return false;
	
}
bool CRightLogin::stop_talk(video_channel* p)
{
	if(p->is_video_opened() && !p->is_vod() && m_talk[p->index()])
	{
		ip_port ipp = p->channel_ip();
	    net_stop_talk(net, ipp.get_ip(), ipp.look_port()) ;
		check_talk_condition(ipp.get_ip(), ipp.look_port(), false);
		return true;
	}
	else return false;
    return false;
}

bool stop_talk()
{
	CRightLogin* l = CRightLogin::the_one();
	video_channel* p = video_channel::current_sel();
    if(!p) return false;

    return l->stop_talk(p);
}
bool talk_status()
{
	CRightLogin* l = CRightLogin::the_one();
	video_channel* p = video_channel::current_sel();
    if(!p) return false;

	if(p->is_video_opened() && !p->is_vod())
	{
		return m_talk[p->index()];
	}
	return false;
}

void check_talk_condition(ULONG ip, USHORT port, bool m_bool)
{
   for( int i=0; i<video_channel_count(); i++ )
   {
	  video_channel* p = get_video_channel(i);
	  if(p->is_video_opened() && ip == p->channel_ip().get_ip() && port == p->channel_ip().look_port() && !p->is_vod())
	  {
	    m_talk[p->index()] = m_bool;    
	  }
	}
}


void start_bk(LPCTSTR alias, void* opt, BACKUP_CALLEE cb)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);

	net_start_backup(l->net, ip, port, 
		(TREC_BACKUPTIME*)opt, 
		cb);
}

void stop_bk(LPCTSTR alias)
{
	CRightLogin* l = CRightLogin::the_one();
	ULONG ip;
	USHORT port;
	get_addr(alias, ip, port);

	net_stop_backup(l->net, ip, port) ;
}

PRIVILEGE get_priv(LPCTSTR alias)
{
	CRightLogin* l = CRightLogin::the_one();
	ip_port ipp = l->ipmgr.trans_ip(alias);

	return get_priv(ipp.get_ip(), ipp.look_port());
}

PRIVILEGE get_priv(ULONG ip, USHORT port)
{
	CRightLogin* l = CRightLogin::the_one();
	return net_get_privilege(l->net, ip, port);
}

void send_alarm_output(ULONG ip, USHORT port, int output)
{
	CRightLogin* l = CRightLogin::the_one();
	net_openalarm_output(l->net, ip, port, output);
}


int CRightLogin::get_vod_window_open(ULONG ip, USHORT port)
{
   int m_vod_window_numbers=0;
   for( int i=0; i<video_channel_count(); i++ )
   {
	  video_channel* p = get_video_channel(i);
	  ip_port ipp = p->channel_ip();

	  if(ipp.get_ip() == ip && ipp.look_port() == port)
		if(p->is_vod())
			m_vod_window_numbers++;      
	}
   return m_vod_window_numbers;

}
/*
 *	从CRightVOD传来
 */
//##ModelId=3F90BAB103AE
LRESULT CRightLogin::on_open_vod(WPARAM w, LPARAM l)
{
	video_channel* p=NULL;
	ip_port* ipp = (ip_port*)l;
	ULONG ip = ipp->get_ip();
	USHORT port = ipp->look_port();
    if(get_vod_window_open(ip, port) >= COUNTS_VOD_WINDOWS)
	{
		AfxMessageBox(IDS_MAX_VOD);
		return 0;
	}
	 for(int m=0;m<m_login_dvr_length;m++)
	{
		nt_cmd_login_ok * kk = &m_login_dvr_popedom[m];
		if(kk->ip == ip && kk->port == port)
		{
			if(kk->version)
			{
				p=choosewindowfree();
				break;
			}
			else  
			{
				UpdateData(true);
				p=choosewindow(l);
				break;
			}	
		}
	}
	
	if( p == NULL )	return 0;
    
	net_start_vod(
		net, 
		ipp->get_ip(), 
		ipp->look_port(), 
		(TREC_FILETIME*)w, 
		p->index(),
		p->m_hWnd);
    
	
	return 0;
}

video_channel*CRightLogin::choosewindowfree()
{
  	video_channel* p = video_channel::current_sel();
	if( p->is_video_opened() )
	{
	  p = NULL;
	  for( int i=0; i<video_channel_count(); i++ )
	  {
			video_channel* vc = get_video_channel(i);
			if( vc && !vc->is_video_opened() )
			{
				p = vc;
				break;
			}
	  }
	}
	 return p;
}

video_channel*CRightLogin::choosewindow(LPARAM l)
{
	ip_port* ipp = (ip_port*)l;
	video_channel* p;
	for(int i=0;i<cmgr.count();i++)
	{
	    channel_info& ref = cmgr[i];
		if(!ref.logintrue()) continue;
        if(ipp->get_ip() == ref.get_ip() && ipp->look_port() == ref.look_port())
		{
		  if(ref.get_window()>=0) 
		  {
		    p = get_video_channel(ref.get_window());
			if(p->is_vod()) 
			{
				on_close_vod(p);
				return p;
			}
			else
			{
				if(!p->is_video_opened())
					return p;
			}
		  }
		  p = choosewindowfree();
		  if(!p) return NULL;
		  channel_info ci(ref.get_dvrname(),ref.get_ip(), ref.look_port(), ref.get_channels(), ref.privilege(),TRUE,p->index());
		  cmgr.remove(ref);
		  cmgr.add(ci);
		  return p;	 
		}
	}
	return NULL;
}

void CRightLogin::on_close_vod(video_channel *p)
{
	if(!p || !p->is_vod()) return ;
	ULONG ip = p->channel_ip().get_ip();
	USHORT port = p->channel_ip().look_port();
	int window = p->index();
	
	PostMessage(NTM_CMD_CHANNEL_CLOSED, ip, MAKEDWORD(port, p->channel_index()));
	p->SendMessage(NTM_CMD_CHANNEL_CLOSED, ip, MAKEDWORD(port, p->channel_index()));
	net_stop_vod(net, ip, port, window);
}

//##ModelId=3F90BAB103D6
LRESULT CRightLogin::on_close_vod(WPARAM, LPARAM)
{
	video_channel* p = video_channel::current_sel();
	on_close_vod(p);
	return 0;
}

//##ModelId=3F90BAB20016
LRESULT CRightLogin::on_set_vod_speed(WPARAM w, LPARAM)
{
	video_channel* p = video_channel::current_sel();
	if(!p) p = get_video_channel(0);
	if(!p) return 0;
	net_set_vod_mul_speed(net,p->channel_ip().get_ip(),(VOD_SPEED)w,p->index());
	return 0;
}

//##ModelId=3F90BAB20052
LRESULT CRightLogin::on_local_rec(WPARAM w, LPARAM l)
{
	BOOL begin = LOWORD(w);
	TCHAR drive = HIWORD(w);

	video_channel* vc = (video_channel*)l;

	int group = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -