// CProjectBuilderDlg.cpp: 实现文件
|
//
|
|
#include "common/pch.h"
|
#include "CProjectBuilderDlg.h"
|
#include "afxdialogex.h"
|
#include "resource.h"
|
#include <regex>
|
#include "../common/StringUtil.h"
|
#include "../common/ProjectBuildNetworkApi.h"
|
#include "../common/JsonUtil.h"
|
#include "SSHUtil.h"
|
#include <iostream>
|
#include <filesystem>
|
#include <thread>
|
|
|
|
|
// CProjectBuilderDlg 对话框
|
|
IMPLEMENT_DYNAMIC(CProjectBuilderDlg, CDialogEx)
|
int IDS[MAX_PROJECT_COUNT][2] = {
|
{IDC_BUTTON_SAVE_1,IDC_BUTTON_BUILD_1},
|
{IDC_BUTTON_SAVE_2,IDC_BUTTON_BUILD_2},
|
{IDC_BUTTON_SAVE_3,IDC_BUTTON_BUILD_3},
|
{IDC_BUTTON_SAVE_4,IDC_BUTTON_BUILD_4},
|
{IDC_BUTTON_SAVE_5,IDC_BUTTON_BUILD_5},
|
{IDC_BUTTON_SAVE_6,IDC_BUTTON_BUILD_6},
|
{IDC_BUTTON_SAVE_7,IDC_BUTTON_BUILD_7},
|
{IDC_BUTTON_SAVE_8,IDC_BUTTON_BUILD_8}
|
};
|
|
|
CProjectBuilderDlg::CProjectBuilderDlg(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DIALOG_PROJECT_BUILDER, pParent)
|
{
|
|
}
|
|
CProjectBuilderDlg::~CProjectBuilderDlg()
|
{
|
}
|
|
void CProjectBuilderDlg::saveProjectBuildInfo(int index)
|
{
|
ProjectBuildInfo* buildInfo = getProjectBuildInfo(index);
|
if (buildInfo != nullptr) {
|
ConfigUtil::setProjectBuildInfo(buildInfo, index);
|
MessageBox(L"保存成功", L"提示");
|
}
|
}
|
|
void CProjectBuilderDlg::createLabel(CStatic* label, CString text, CRect rect)
|
{
|
label->Create(
|
text, // 文本
|
WS_CHILD | WS_VISIBLE | SS_LEFT, // 样式
|
rect,
|
this);
|
label->SetFont(GetFont());
|
|
}
|
|
void CProjectBuilderDlg::createBtn(CButton* btn, CString text, CRect rect, UINT id)
|
{
|
btn->Create(
|
text, // 文本
|
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, // 样式
|
rect,
|
this,
|
id);
|
btn->SetFont(GetFont());
|
}
|
|
void CProjectBuilderDlg::createEdit(CEdit* edit, CRect rect, UINT id)
|
{
|
edit->Create(
|
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
|
rect, // 位置和大小
|
this,
|
id
|
);
|
edit->SetFont(GetFont());
|
}
|
|
void CProjectBuilderDlg::createProjectView(ProjectControls& controls,int index, int start_x,int start_y)
|
{
|
UINT start_id = 10000;
|
CStatic *nameLabel=new CStatic(), *dirLabel = new CStatic(), *scriptFileLabel = new CStatic(), *outputDirLabel = new CStatic(), *outputFileLabel = new CStatic(), *targetServerIPLabel = new CStatic(), *targetServerPortLabel = new CStatic(), *targetServerUserNameLabel = new CStatic(), *targetServerPwdLabel = new CStatic(), *targetServerDirLabel = new CStatic(), * targetAppFileLabel = new CStatic(), * targetAppRestartFileLabel = new CStatic();
|
CEdit *nameEdit=new CEdit(), *dirEdit = new CEdit(), *scriptFileEdit = new CEdit(), *outputDirEdit = new CEdit(), *outputFileEdit = new CEdit(), *targetServerIPEdit = new CEdit(), *targetServerPortEdit = new CEdit(), *targetServerUserNameEdit = new CEdit(), *targetServerPwdEdit = new CEdit(), *targetServerDirEdit = new CEdit(), * targetAppFileEdit = new CEdit(), *targetAppRestartFileEdit = new CEdit();
|
CButton* saveBtn=new CButton(), * buildBtn = new CButton();
|
CButton*groupBox=new CButton();
|
CStatic *msgLabel = new CStatic();
|
INT EDIT_HEIGHT = 23, LABEL_HEIGHT = 14, BUTTON_HEIGHT = 25;
|
INT LINE_SPACE = 8;
|
CString title = CString("项目");
|
title.Append(to_wstring(index + 1).c_str());
|
groupBox->Create(
|
title, // 标题文本
|
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, // 样式
|
CRect(CPoint(start_x - 10, start_y-15), CSize(550, 210)), // 位置和大小 (left, top, right, bottom)
|
this,
|
start_id++
|
);
|
|
groupBox->SetFont(GetFont());
|
int x = start_x, y = start_y;
|
createLabel(nameLabel, L"项目名称:", CRect(CPoint(x,y+(EDIT_HEIGHT - LABEL_HEIGHT)/2), CSize(65, LABEL_HEIGHT)));
|
createEdit(nameEdit, CRect(CPoint(x + 65, y), CSize(100, EDIT_HEIGHT)), start_id++);
|
x = start_x + 180;
|
createLabel(dirLabel, L"项目目录:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(65, LABEL_HEIGHT)));
|
createEdit(dirEdit, CRect(CPoint(x + 65, y), CSize(280, EDIT_HEIGHT)), start_id++);
|
|
x = start_x;
|
y += EDIT_HEIGHT + LINE_SPACE;
|
createLabel(scriptFileLabel, L"脚本文件:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(65, LABEL_HEIGHT)));
|
createEdit(scriptFileEdit, CRect(CPoint(x + 65, y), CSize(100, EDIT_HEIGHT)), start_id++);
|
|
x += 180;
|
createLabel(outputDirLabel, L"输出目录:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(65, LABEL_HEIGHT)));
|
createEdit(outputDirEdit, CRect(CPoint(x + 65, y), CSize(100, EDIT_HEIGHT)), start_id++);
|
|
x += 180;
|
createLabel(outputFileLabel, L"输出文件:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(65, LABEL_HEIGHT)));
|
createEdit(outputFileEdit, CRect(CPoint(x + 65, y), CSize(100, EDIT_HEIGHT)), start_id++);
|
|
x = start_x;
|
y += EDIT_HEIGHT + LINE_SPACE;
|
createLabel(targetServerIPLabel, L"目标服务器IP:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(85, LABEL_HEIGHT)));
|
createEdit(targetServerIPEdit, CRect(CPoint(x + 85, y), CSize(85, EDIT_HEIGHT)), start_id++);
|
|
x += 90 + 80 + 5;
|
createLabel(targetServerPortLabel, L"目标服务器PORT:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(100, LABEL_HEIGHT)));
|
createEdit(targetServerPortEdit, CRect(CPoint(x + 100, y), CSize(50, EDIT_HEIGHT)), start_id++);
|
x += 100 + 50 + 5;
|
createLabel(targetServerUserNameLabel, L"目标服务器用户名:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(110, LABEL_HEIGHT)));
|
createEdit(targetServerUserNameEdit, CRect(CPoint(x + 110, y), CSize(85, EDIT_HEIGHT)), start_id++);
|
|
x = start_x;
|
y += EDIT_HEIGHT + LINE_SPACE;
|
createLabel(targetServerPwdLabel, L"目标服务器密码:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(100, LABEL_HEIGHT)));
|
createEdit(targetServerPwdEdit, CRect(CPoint(x + 100, y), CSize(100, EDIT_HEIGHT)), start_id++);
|
targetServerPwdEdit->SetPasswordChar('*');
|
x += 100 + 100 + 5;
|
createLabel(targetServerDirLabel, L"目标服务器目录:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(100, LABEL_HEIGHT)));
|
createEdit(targetServerDirEdit, CRect(CPoint(x + 100, y), CSize(220, EDIT_HEIGHT)), start_id++);
|
controls.editName = nameEdit;
|
|
y += EDIT_HEIGHT + LINE_SPACE;
|
x = start_x;
|
|
createLabel(targetAppFileLabel, L"应用文件:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(100, LABEL_HEIGHT)));
|
createEdit(targetAppFileEdit, CRect(CPoint(x + 100, y), CSize(150, EDIT_HEIGHT)), start_id++);
|
targetServerPwdEdit->SetPasswordChar('*');
|
x += 100 + 150 + 5;
|
createLabel(targetAppRestartFileLabel, L"应用重启脚本:", CRect(CPoint(x, y + (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(100, LABEL_HEIGHT)));
|
createEdit(targetAppRestartFileEdit, CRect(CPoint(x + 100, y), CSize(170, EDIT_HEIGHT)), start_id++);
|
|
|
|
x = start_x;
|
y += EDIT_HEIGHT + LINE_SPACE;
|
createLabel(msgLabel, L"", CRect(CPoint(x, y+ (EDIT_HEIGHT - LABEL_HEIGHT) / 2), CSize(360, BUTTON_HEIGHT)));
|
|
x += 525 - 80;
|
createBtn(buildBtn, L"编译并上传", CRect(CPoint(x, y), CSize(80, BUTTON_HEIGHT)), IDS[index][1]);
|
|
x -= 80;
|
|
createBtn(saveBtn, L"保存", CRect(CPoint(x, y), CSize(60, BUTTON_HEIGHT)), IDS[index][0]);
|
|
controls.labels.push_back(nameLabel);
|
controls.labels.push_back(dirLabel);
|
controls.labels.push_back(outputDirLabel);
|
controls.labels.push_back(outputFileLabel);
|
controls.labels.push_back(scriptFileLabel);
|
controls.labels.push_back(targetServerDirLabel);
|
controls.labels.push_back(targetServerIPLabel);
|
controls.labels.push_back(targetServerPortLabel);
|
controls.labels.push_back(targetServerPwdLabel);
|
controls.labels.push_back(targetServerUserNameLabel);
|
|
controls.editName = nameEdit;
|
controls.editDir = dirEdit;
|
controls.editOutputDir = outputDirEdit;
|
controls.editOutputFile = outputFileEdit;
|
controls.editScriptFile = scriptFileEdit;
|
controls.editTargetServerDir = targetServerDirEdit;
|
controls.editTargetServerIP = targetServerIPEdit;
|
controls.editTargetServerPort = targetServerPortEdit;
|
controls.editTargetServerPwd = targetServerPwdEdit;
|
controls.editTargetServerUserName = targetServerUserNameEdit;
|
controls.editTargetAppFile = targetAppFileEdit;
|
controls.editTargetAppRestartFile = targetAppRestartFileEdit;
|
controls.btnBuild = buildBtn;
|
controls.btnSave = saveBtn;
|
controls.labelMsg = msgLabel;
|
}
|
|
void CProjectBuilderDlg::buildProject(ServerInfo* buildServer, ProjectBuildInfo* info, ProjectControls controls,string cacheDir, CProjectBuilderDlg* context)
|
{
|
string cmd = "cd ";
|
cmd.append(info->dir).append(" && ").append("rm -rf ").append(info->outputDir).append(" && ").append(info->scriptFile);
|
try {
|
controls.labelMsg->SetWindowText(_T("准备编译..."));
|
SSHServer buildSSHServer = SSHServer({ buildServer->ip, buildServer->port, buildServer->userName, buildServer->pwd });
|
SSHUtil::excuteCmd(cmd, buildSSHServer);
|
controls.labelMsg->SetWindowText(_T("编译完成,准备下载文件..."));
|
string cacheFile = string(cacheDir.c_str()).append("/").append(info->outputFile);
|
// 删除本地文件
|
DeleteFileA(cacheFile.c_str());
|
|
Sleep(100);
|
string remotePath = string(info->dir.c_str()).append("/").append(info->outputDir.c_str()).append("/").append(info->outputFile.c_str());
|
SSHUtil::downloadFile(remotePath, cacheFile, buildSSHServer);
|
controls.labelMsg->SetWindowText(_T("文件下载完成!准备上传目标服务器"));
|
|
|
SSHServer targetSSHServer = SSHServer({ info->targetServer.ip,info->targetServer.port, info->targetServer.userName, info->targetServer.pwd });
|
// 杀死原有应用
|
cmd = string("pkill -f ").append(info->outputFile);
|
SSHUtil::excuteCmd(cmd, targetSSHServer);
|
controls.labelMsg->SetWindowText(_T("结束目标进程成功!准备删除应用"));
|
// 上传应用
|
|
string remoteAppFile = string(info->targetDir).append("/").append(info->targetAppFile);
|
|
cmd = string("rm -rf ").append(remoteAppFile);
|
SSHUtil::excuteCmd(cmd, targetSSHServer);
|
controls.labelMsg->SetWindowText(_T("删除应用成功!准备上传文件"));
|
|
SSHUtil::uploadFile(remoteAppFile, cacheFile, targetSSHServer, [controls](uint64_t transferred, uint64_t total) {
|
double percent = (double)transferred / total * 100;
|
CString progressText = L"上传进度:";
|
progressText.Append(CString(StringUtil::to_string(percent).c_str()));
|
progressText.Append(L"%");
|
controls.labelMsg->SetWindowText(progressText);
|
});
|
|
controls.labelMsg->SetWindowText(L"上传完成,准备授权应用!");
|
// 应用授权
|
cmd = string("chmod 777 ").append(remoteAppFile);
|
SSHUtil::excuteCmd(cmd, targetSSHServer);
|
|
controls.labelMsg->SetWindowText(L"应用授权完成,准备重启应用!");
|
// TODO 重启进程
|
cmd = string("cd ").append(info->targetDir).append(" && ").append(info->targetAppRestartFile);
|
SSHUtil::excuteCmd(cmd, targetSSHServer);
|
controls.labelMsg->SetWindowText(L"应用重启完成!");
|
context->MessageBox(L"任务完成", L"提示");
|
}
|
catch (string msg) {
|
context->MessageBox(CString(msg.c_str()), _T("错误"), MB_OK | MB_ICONERROR);
|
}
|
}
|
|
void CProjectBuilderDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CProjectBuilderDlg, CDialogEx)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_SERVER_SAVE, &CProjectBuilderDlg::OnBnClickedButtonBuildServerSave)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_1, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_2, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_3, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_4, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_5, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_6, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_7, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_BUILD_8, &CProjectBuilderDlg::OnBnClickedButtonBuild)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_1, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_2, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_3, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_4, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_5, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_6, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_7, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_8, &CProjectBuilderDlg::OnBnClickedButtonSave)
|
ON_BN_CLICKED(IDC_BUTTON_SAVE_LOCAL_SETTINGS, &CProjectBuilderDlg::OnBnClickedButtonSaveLocalSettings)
|
ON_BN_CLICKED(IDC_BUTTON_TEST1, &CProjectBuilderDlg::OnBnClickedTest1)
|
|
|
END_MESSAGE_MAP()
|
|
|
// CProjectBuilderDlg 消息处理程序
|
|
bool CProjectBuilderDlg::validateIPv4(const std::string& ip) {
|
std::regex ipv4_regex("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$");
|
return std::regex_match(ip, ipv4_regex);
|
}
|
|
ProjectBuildInfo* CProjectBuilderDlg::getProjectBuildInfo(int index)
|
{
|
list<ProjectControls>::iterator it = projectControlsList.begin();
|
advance(it, index);
|
ProjectControls projectControls = *it;
|
CString name, dir, scriptFile, outputDir, outputFile, targetServerIP, targetServerPort, targetServerUserName, targetServerPwd, targetServerDir, targetAppFile, targetAppRestartFile;
|
projectControls.editName->GetWindowText(name);
|
projectControls.editDir->GetWindowText(dir);
|
projectControls.editScriptFile->GetWindowText(scriptFile);
|
projectControls.editOutputFile->GetWindowText(outputFile);
|
projectControls.editOutputDir->GetWindowText(outputDir);
|
projectControls.editTargetServerIP->GetWindowText(targetServerIP);
|
projectControls.editTargetServerPort->GetWindowText(targetServerPort);
|
projectControls.editTargetServerUserName->GetWindowText(targetServerUserName);
|
projectControls.editTargetServerPwd->GetWindowText(targetServerPwd);
|
projectControls.editTargetServerDir->GetWindowText(targetServerDir);
|
projectControls.editTargetAppFile->GetWindowText(targetAppFile);
|
projectControls.editTargetAppRestartFile->GetWindowText(targetAppRestartFile);
|
|
if (!validateIPv4(StringUtil::cstring2String(targetServerIP))) {
|
AfxMessageBox(L"IP格式错误");
|
return nullptr;
|
}
|
|
std::regex pattern("^[1-9]\\d*$");
|
if (!std::regex_match(StringUtil::cstring2String(targetServerPort), std::regex("^[1-9]\\d*$"))) {
|
AfxMessageBox(L"PORT格式错误");
|
return nullptr;
|
}
|
|
|
ProjectBuildInfo* buildInfo = new ProjectBuildInfo();
|
buildInfo->name = StringUtil::cstring2String(name);
|
buildInfo->dir = StringUtil::cstring2String(dir);
|
buildInfo->scriptFile = StringUtil::cstring2String(scriptFile);
|
buildInfo->outputDir = StringUtil::cstring2String(outputDir);
|
buildInfo->outputFile = StringUtil::cstring2String(outputFile);
|
buildInfo->targetServer.ip = StringUtil::cstring2String(targetServerIP);
|
buildInfo->targetServer.port = _ttoi(targetServerPort);
|
buildInfo->targetServer.userName = StringUtil::cstring2String(targetServerUserName);
|
buildInfo->targetServer.pwd = StringUtil::cstring2String(targetServerPwd);
|
buildInfo->targetDir = StringUtil::cstring2String(targetServerDir);
|
buildInfo->targetAppFile = StringUtil::cstring2String(targetAppFile);
|
buildInfo->targetAppRestartFile = StringUtil::cstring2String(targetAppRestartFile);
|
|
|
return buildInfo;
|
}
|
|
|
void CProjectBuilderDlg::OnBnClickedButtonBuildServerSave()
|
{
|
CString ip, port, username, password;
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_IP))->GetWindowText(ip);
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_PORT))->GetWindowText(port);
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_USERNAME))->GetWindowText(username);
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_PASSWORD))->GetWindowText(password);
|
|
if (!validateIPv4(StringUtil::cstring2String(ip))) {
|
AfxMessageBox(L"IP格式错误");
|
return;
|
}
|
|
std::regex pattern("^[1-9]\\d*$");
|
if (!std::regex_match(StringUtil::cstring2String(port), pattern)) {
|
AfxMessageBox(L"PORT格式错误");
|
return;
|
}
|
ServerInfo* buildServer = new ServerInfo();
|
buildServer->ip = StringUtil::cstring2String(ip);
|
buildServer->port = _ttoi(port);
|
buildServer->userName = StringUtil::cstring2String(username);
|
buildServer->pwd = StringUtil::cstring2String(password);
|
ConfigUtil::setBuildServer(buildServer);
|
MessageBox(L"保存成功", L"提示");
|
}
|
|
|
void CProjectBuilderDlg::OnBnClickedButtonBuild()
|
{
|
UINT nID = (UINT)GetCurrentMessage()->wParam;
|
ProjectControls controls;
|
int index = 0;
|
for (list<ProjectControls>::iterator e = projectControlsList.begin(); e != projectControlsList.end(); e++) {
|
if ((*e).btnBuild->GetDlgCtrlID() == nID) {
|
controls = *e;
|
break;
|
}
|
index++;
|
}
|
ServerInfo* buildServer = ConfigUtil::getBuildServer();
|
if (buildServer == nullptr) {
|
AfxMessageBox(_T("编译服务器为空值"));
|
return;
|
}
|
|
string cacheDir = ConfigUtil::getLocalCacheDir();
|
if (cacheDir.empty()) {
|
AfxMessageBox(_T("本地缓存文件夹为空"));
|
return;
|
}
|
|
ProjectBuildInfo *info = getProjectBuildInfo(index);
|
|
std::thread t1(buildProject, buildServer, info, controls, cacheDir, this);
|
t1.detach();
|
}
|
|
|
void CProjectBuilderDlg::OnBnClickedButtonSave()
|
{
|
UINT nID = (UINT)GetCurrentMessage()->wParam;
|
int index = 0;
|
for (list<ProjectControls>::iterator e = projectControlsList.begin(); e != projectControlsList.end(); e++) {
|
if ((*e).btnSave->GetDlgCtrlID() == nID) {
|
break;
|
}
|
index++;
|
}
|
|
saveProjectBuildInfo(index);
|
}
|
|
void CProjectBuilderDlg::OnBnClickedButtonSaveLocalSettings()
|
{
|
//保存本地设置
|
CString localCacheDir;
|
((CEdit *) GetDlgItem(IDC_EDIT_LOCAL_CACHE_DIR))->GetWindowText(localCacheDir);
|
ConfigUtil::setLocalCacheDir(StringUtil::cstring2String( localCacheDir));
|
MessageBox(_T("保存成功"));
|
}
|
|
void CProjectBuilderDlg::OnBnClickedTest1()
|
{
|
// 测试
|
try {
|
SSHUtil::downloadFile("/home/userzjj/testFile", "D:/文件传输/交易/cache/gp_server_test", SSHServer({ "192.168.84.126",22, "root","Yeshi2016@" }));
|
}
|
catch (string msg) {
|
AfxMessageBox(CString(msg.c_str()));
|
}
|
}
|
|
|
BOOL CProjectBuilderDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_PASSWORD))->SetPasswordChar('*');
|
|
ServerInfo* buildServer = ConfigUtil::getBuildServer();
|
if (buildServer != nullptr) {
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_IP))->SetWindowText(CString(buildServer->ip.c_str()));
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_PORT))->SetWindowText(CString(to_wstring(buildServer->port).c_str()));
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_USERNAME))->SetWindowText(CString(buildServer->userName.c_str()));
|
((CEdit*)GetDlgItem(IDC_EDIT_BUILD_SERVER_PASSWORD))->SetWindowText(CString(buildServer->pwd.c_str()));
|
delete buildServer;
|
}
|
|
string localCacheDir = ConfigUtil::getLocalCacheDir();
|
|
((CEdit*)GetDlgItem(IDC_EDIT_LOCAL_CACHE_DIR))->SetWindowTextW(CString(localCacheDir.c_str()));
|
|
|
INT x[] = { 20, 600 };
|
int start_y = 190;
|
|
for (int i = 0;i < 4;i++) {
|
if (i % 2 == 0) {
|
start_y += (i / 2) * 200 + 20;
|
}
|
ProjectControls controls = {};
|
createProjectView(controls,i, x[i%2], start_y);
|
projectControlsList.push_back(controls);
|
}
|
|
for (int i = 0;i < MAX_PROJECT_COUNT;i++) {
|
ProjectBuildInfo* buildServer = ConfigUtil::getProjectBuildInfo(i);
|
if (buildServer == nullptr) {
|
continue;
|
}
|
if (i + 1 >= projectControlsList.size()) {
|
break;
|
}
|
|
list<ProjectControls>::iterator e = projectControlsList.begin();
|
advance(e, i);
|
ProjectControls controls = *e;
|
controls.editName->SetWindowTextW(CString(buildServer->name.c_str()));
|
controls.editDir->SetWindowTextW(CString(buildServer->dir.c_str()));
|
controls.editOutputDir->SetWindowTextW(CString(buildServer->outputDir.c_str()));
|
controls.editOutputFile->SetWindowTextW(CString(buildServer->outputFile.c_str()));
|
controls.editScriptFile->SetWindowTextW(CString(buildServer->scriptFile.c_str()));
|
controls.editTargetServerIP->SetWindowTextW(CString(buildServer->targetServer.ip.c_str()));
|
controls.editTargetServerPort->SetWindowTextW(CString(to_wstring(buildServer->targetServer.port).c_str()));
|
controls.editTargetServerPwd->SetWindowTextW(CString(buildServer->targetServer.pwd.c_str()));
|
controls.editTargetServerUserName->SetWindowTextW(CString(buildServer->targetServer.userName.c_str()));
|
controls.editTargetServerDir->SetWindowTextW(CString(buildServer->targetDir.c_str()));
|
controls.editTargetAppFile->SetWindowTextW(CString(buildServer->targetAppFile.c_str()));
|
controls.editTargetAppRestartFile->SetWindowTextW(CString(buildServer->targetAppRestartFile.c_str()));
|
}
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|