📄 serverpatch.cpp
字号:
char temp[ 0xff ];
int si = pView->m_nCurServerSet; //ServerIndex(si)
if(si < 0) return;
ServerInfo *pInfo = NULL;
for(int i=0; i< m_pApp->m_ServerSetInfo[ si ].nServerNum ; i++)
{
pInfo = &m_pApp->m_ServerInfo[si][i];
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = pInfo->MapName;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = pInfo->Port;
c_SelectList.InsertItem(&item);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = _itoa(pInfo->Port, temp, 10);
c_SelectList.SetItem(&item);
//泅犁 惑怕
sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = temp;
c_SelectList.SetItem(&item);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
switch(pInfo->ServerType)
{
case SERVER_TYPE_PROXY: item.pszText = "PROXY"; break;
case SERVER_TYPE_AGENT: item.pszText = "AGENT"; break;
case SERVER_TYPE_DBDEMON: item.pszText = "DBDEMON"; break;
case SERVER_TYPE_MAP: item.pszText = "MAP"; break;
}
c_SelectList.SetItem(&item);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = pInfo->MachineName;
c_SelectList.SetItem(&item);
//Machine
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = pInfo->Ip;
c_SelectList.SetItem(&item);
}
CountConnectServer();
}
void CServerPatch::OnRight()
{
// TODO: Add your control notification handler code here
int nItem,port,i=0,count=0;
LVITEM item;
char str[128];
count = c_AllList.GetItemCount();
while(count > 0)
{
nItem = c_AllList.GetNextItem( -1, LVNI_SELECTED );
if( nItem < 0 ) break;
port = atoi(c_AllList.GetItemText(nItem,1));
i = c_SelectList.GetItemCount();
c_AllList.GetItemText(nItem,0,str,128);
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = str;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = port;
c_SelectList.InsertItem(&item);
c_AllList.GetItemText(nItem,1,str,128);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = str;
c_SelectList.SetItem(&item);
c_AllList.GetItemText(nItem,2,str,128);
//泅犁 惑怕
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = str;
c_SelectList.SetItem(&item);
c_AllList.GetItemText(nItem,3,str,128);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
item.pszText = str;
c_SelectList.SetItem(&item);
c_AllList.GetItemText(nItem,4,str,128);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = str;
c_SelectList.SetItem(&item);
c_AllList.GetItemText(nItem,5,str,128);
//Ip
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = str;
c_SelectList.SetItem(&item);
//盖 关栏肺 胶农费官 捞悼..
POINT point;
CHeaderCtrl* pHeader = (CHeaderCtrl*)c_SelectList.GetDlgItem(0);
RECT rect;
pHeader->GetClientRect( &rect );
int header = rect.bottom;
c_SelectList.GetItemPosition(i, &point);
c_SelectList.Scroll(CSize(0, point.y - header));
c_AllList.DeleteItem(nItem);
count--;
}
CountConnectServer();
}
void CServerPatch::OnLeft()
{
int nItem,port,i=0,count=0;
LVITEM item;
char str[128];
count = c_SelectList.GetItemCount();
while(count > 0)
{
nItem = c_SelectList.GetNextItem( -1, LVNI_SELECTED );
if( nItem < 0 ) break;
port = atoi(c_SelectList.GetItemText(nItem,1));
i = c_AllList.GetItemCount();
c_SelectList.GetItemText(nItem,0,str,128);
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = str;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = port;
c_AllList.InsertItem(&item);
c_SelectList.GetItemText(nItem,1,str,128);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = str;
c_AllList.SetItem(&item);
c_SelectList.GetItemText(nItem,2,str,128);
//泅犁 惑怕
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = str;
c_AllList.SetItem(&item);
c_SelectList.GetItemText(nItem,3,str,128);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
item.pszText = str;
c_AllList.SetItem(&item);
c_SelectList.GetItemText(nItem,4,str,128);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = str;
c_AllList.SetItem(&item);
c_SelectList.GetItemText(nItem,5,str,128);
//Ip
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = str;
c_AllList.SetItem(&item);
//盖 关栏肺 胶农费官 捞悼..
POINT point;
CHeaderCtrl* pHeader = (CHeaderCtrl*)c_AllList.GetDlgItem(0);
RECT rect;
pHeader->GetClientRect( &rect );
int header = rect.bottom;
c_AllList.GetItemPosition(i, &point);
c_AllList.Scroll(CSize(0, point.y - header));
c_SelectList.DeleteItem(nItem);
count--;
}
CountConnectServer();
}
void CServerPatch::OnLeftAll()
{
// TODO: Add your control notification handler code here
c_AllList.DeleteAllItems();
c_SelectList.DeleteAllItems();
//m_pApp = (CRMToolApp*)AfxGetApp(); //App努贰胶 器牢磐 悸泼
CServerView* pView = (CServerView*)GetParent();
LVITEM item;
char temp[ 0xff ];
int si = pView->m_nCurServerSet; //ServerIndex(si)
if(si < 0) return;
ServerInfo *pInfo = NULL;
for(int i=0; i< m_pApp->m_ServerSetInfo[ si ].nServerNum ; i++)
{
pInfo = &m_pApp->m_ServerInfo[si][i];
//辑滚疙
item.mask = LVIF_TEXT | LVIF_PARAM;
item.pszText = pInfo->MapName;
item.iItem = i; //青锅龋
item.iSubItem = 0; //凯锅龋
item.lParam = pInfo->Port;
c_AllList.InsertItem(&item);
//Port 锅龋
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = _itoa(pInfo->Port, temp, 10);
c_AllList.SetItem(&item);
//泅犁 惑怕
sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
item.mask = LVIF_TEXT;
item.iSubItem = 2;
item.pszText = temp;
c_AllList.SetItem(&item);
//辑滚鸥涝
item.mask = LVIF_TEXT;
item.iSubItem = 3;
switch(pInfo->ServerType)
{
case SERVER_TYPE_PROXY: item.pszText = "PROXY"; break;
case SERVER_TYPE_AGENT: item.pszText = "AGENT"; break;
case SERVER_TYPE_DBDEMON: item.pszText = "DBDEMON"; break;
case SERVER_TYPE_MAP: item.pszText = "MAP"; break;
}
c_AllList.SetItem(&item);
//System
item.mask = LVIF_TEXT;
item.iSubItem = 4;
item.pszText = pInfo->MachineName;
c_AllList.SetItem(&item);
//Machine
item.mask = LVIF_TEXT;
item.iSubItem = 5;
item.pszText = pInfo->Ip;
c_AllList.SetItem(&item);
}
CountConnectServer();
}
void CServerPatch::OnShutDown()
{
if( !RIGHT(MASK_11) ) return;
// TODO: Add your control notification handler code here
CServerView *pView = (CServerView*)GetParent();
_ASSERTE( pView != NULL );
if( pView->m_bIsUMS == true)
{
AfxMessageBox( "Release Check box [UMS] " );
return;
}
UpdateData(true);
if(m_nRadioShutDown == 4 && c_SelectList.GetItemCount() == 0)
{
MessageBox("Select Servers To Down!","Serverdown");
return;
}
if(MessageBox("Are You sure to Serverdown?","Serverdown",MB_YESNO) == IDNO)
return;
else
MessageBox("Please Check (X)mark!","Serverdown",MB_YESNO);
int count = 0;
PACKET_SHUTDOWN_SUBSERVER packet(0); //0锅捞 Proxy, 1锅捞 Agent, 2锅捞 DBDemon, 3锅捞 Map
switch(m_nRadioShutDown)
{
case 0: //Map
{
packet.bServerType = 3;
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
#ifdef RM_LOG_MODE
CString str; str.Format("ServerPatch :: Shutdown Server! -> Server: Map");
m_pApp->LogServer(pView->m_nCurServerSet, str);
#endif
}
break;
case 1: //Agent
{
packet.bServerType = 1;
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
#ifdef RM_LOG_MODE
CString str; str.Format("ServerPatch :: Shutdown Server! -> Server: Agent");
m_pApp->LogServer(pView->m_nCurServerSet, str);
#endif
}
break;
case 2: //DBDemon
{
packet.bServerType = 2;
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
#ifdef RM_LOG_MODE
CString str; str.Format("ServerPatch :: Shutdown Server! -> Server: DBDemon");
m_pApp->LogServer(pView->m_nCurServerSet, str);
#endif
}
break;
case 3: //Proxy
{
packet.bServerType = 0;
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
MessageBox("Proxy server is Down. You cann't Get a Infomation of servers."
"Please Reconnect to [Connect]button","Proxy down",MB_OK);
//Connect Button 劝己拳
pView->m_szConnectInfo = "Disconnected";
pView->UpdateData(FALSE);
pView->c_ProxyConnect.EnableWindow(TRUE);
//X钎 钎矫
pView->m_ServerStatusDlg.RefreshSomeItem(3001, FALSE);
pView->m_ServerControlDlg.RefreshSomeItem(3001, FALSE);
RefreshSomeItem(3001, FALSE);
//Proxy 沥焊 官操绊..
for(int i=0; i< m_pApp->m_ServerSetInfo[ pView->m_nCurServerSet ].nServerNum; i++)
{
if(m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].Port == 3001)
{
m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].dwStatus = 0;
m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].dwNumOfUser = 0;
break;
}
}
#ifdef RM_LOG_MODE
CString str; str.Format("ServerPatch :: Shutdown Server! -> Server: Proxy");
m_pApp->LogServer(pView->m_nCurServerSet, str);
#endif
}
break;
case 4: //Selected
{
char str[128];
char packet2[ 0xff ]; memset(packet2,0,0xff);
int offset = 3;
count = c_SelectList.GetItemCount();
packet2[0] = PTCL_RM;
packet2[1] = MSG_RM_SHUTDOWN_SERVER;
packet2[2] = (char)count;
for(int i=0 ; i<count ; i++)
{
c_SelectList.GetItemText(i, 3, str, 128);
if(strcmp(str,"PROXY"))
{
c_SelectList.GetItemText(i, 1, str, 128);
WORD wPort = (WORD)atoi(str);
memcpy(packet2 + offset, &wPort, sizeof(WORD));
offset += sizeof(WORD);
}
else
{
packet.bServerType = 0;
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
}
}
g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], packet2, offset);
#ifdef RM_LOG_MODE
CString str2; str2.Format("ServerPatch :: Shutdown Server!(Applied: %d) -> Server:%d", count, m_nRadioShutDown);
m_pApp->LogServer(pView->m_nCurServerSet, str2);
#endif
}
break;
}
}
void CServerPatch::OnServerExecute()
{
// TODO: Add your control notification handler code here
if( !RIGHT(MASK_12) ) return;
if(MessageBox("Select Servers To Execute.","Server Execute",MB_YESNO) == IDNO)
return;
else
MessageBox("Please Check (O)mark!","Server Execute",MB_YESNO);
UpdateData(TRUE);
CServerView *pView = (CServerView*)GetParent();
CString szTemp, szTemp2;
szTemp = m_pApp->m_szDownloadPath[ pView->m_nCurServerSet ];
char drive = szTemp.GetAt(0);
szTemp2 = szTemp.Mid(3, szTemp.GetLength() - 3);
//促弗累诀甸肺 牢秦 老何 Listener狼 促款肺靛 版肺啊 函版登菌阑 啊瓷己捞 乐栏骨肺 老褒利栏肺 嘎苗林磊..
PACKET_SET_DOWNLOAD_PATH packet(drive, szTemp2.GetBuffer(szTemp2.GetLength()));
g_pNet->Send(GetConnection(),(char*)&packet, packet.GetPacketSize());
char str[128];
char packet2[ 0xff ]; memset(packet2,0,0xff);
int count = c_SelectList.GetItemCount();
int filelen = m_szExeName.GetLength();
packet2[0] = PTCL_RM;
packet2[1] = MSG_RM_EXECUTE_SERVER;
packet2[2] = (char)filelen;
memcpy(packet2+3, m_szExeName.GetBuffer( filelen ), filelen);
packet2[ 3 + filelen ] = (char)count;
int offset = 4 + filelen;
for(int i=0 ; i<count ; i++)
{
c_SelectList.GetItemText(i, 3, str, 128);
//橇废矫 辑滚肺狼 楷搬捞 酒匆 版快
if(strcmp(str,"PROXY"))
{
c_SelectList.GetItemText(i, 3, str, 128);
if(!strcmp("PROXY",str))
packet2[ offset ] = 0;
else if(!strcmp("AGENT",str))
packet2[ offset ] = 1;
else if(!strcmp("DBDEMON",str))
packet2[ offset ] = 2;
else if(!strcmp("MAP",str))
packet2[ offset ] = 3;
offset += 1;
c_SelectList.GetItemText(i, 1, str, 128);
WORD wPort = (WORD)atoi(str);
memcpy(packet2 + offset, &wPort, sizeof(WORD));
offset += sizeof(WORD);
}
else //Proxy 辑滚牢 版快
{
CServerView *pView = (CServerView*)GetParent();
//Proxy Listener俊 流立 立加
//g_pFt->CloseClientSocket();
if(!g_pFt->Connect(m_pApp->m_ProxyIp[ pView->m_nCurServerSet ], LISTENER_CONNECT_PORT))
{
MessageBox("Can not connect to ProxyListener!","Error");
continue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -