HGUpgrade:将src改成操作系统-CPU架构-OEM名称的组合

This commit is contained in:
luoliangyi 2022-07-01 11:02:41 +08:00
parent 1d339e6613
commit 0ca78dc96f
9 changed files with 105 additions and 66 deletions

View File

@ -102,50 +102,51 @@ static void GetMacAddrList(std::vector<std::string> &macList)
pAdapterInfo = nullptr;
#else
DIR *dir = opendir("/sys/class/net");
if (NULL != dir)
if (nullptr != dir)
{
printf("opendir success\n");
struct dirent *ent;
while ((ent = readdir(dir)) != nullptr)
{
if (1)
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
continue;
if (strstr(ent->d_name, "docker") == ent->d_name || strstr(ent->d_name, "sit") == ent->d_name
|| strstr(ent->d_name, "ip6tnl") == ent->d_name || strcmp(ent->d_name, "lo") == 0)
continue;
printf("name %s\n", ent->d_name);
char addrPath[256];
sprintf(addrPath, "/sys/class/net/%s/address", ent->d_name);
FILE *file = fopen(addrPath, "rb");
if (nullptr != file)
{
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
continue;
char mac[1025] = {0};
fread(mac, 1, 1024, file);
if (strstr(ent->d_name, "docker") == ent->d_name || strstr(ent->d_name, "sit") == ent->d_name
|| strstr(ent->d_name, "ip6tnl") == ent->d_name || strcmp(ent->d_name, "lo") == 0)
continue;
printf("name %s\n", ent->d_name);
char addrPath[256];
sprintf(addrPath, "/sys/class/net/%s/address", ent->d_name);
FILE *file = fopen(addrPath, "rb");
if (NULL != file)
int len = (int)strlen(mac);
for (int i = 0; i < len; ++i)
{
char mac[1025] = {0};
fread(mac, 1, 1024, file);
if (strlen(mac) > 0)
{
if (mac[strlen(mac) - 1] == '\n')
mac[strlen(mac) - 1] = '\0';
}
if (strlen(mac) > 0)
{
macList.push_back(mac);
}
printf("mac %s\n", mac);
fclose(file);
if (mac[i] == ':')
mac[i] = '-';
else if (mac[i] == '\n')
mac[i] = '\0';
}
else
if (strlen(mac) > 0)
{
printf("fopen fail\n");
macList.push_back(mac);
}
printf("mac %s\n", mac);
fclose(file);
}
else
{
printf("fopen fail\n");
}
}
@ -198,7 +199,7 @@ static bool Greater(const std::string &str1, const std::string &str2)
}
// type:1表示安装 2表示卸载 src:来源 desc: 说明
static bool PostInfo(int type, const std::string &src, const std::string &desc)
static bool PostInfo(int type, const std::string &desc)
{
curl_global_init(CURL_GLOBAL_ALL);
@ -236,9 +237,55 @@ static bool PostInfo(int type, const std::string &src, const std::string &desc)
std::string version = GetCurrVersion();
std::string osName, archName, oemName;
#if defined(HG_CMP_MSC)
osName = "Windows";
archName = "unknown";
SYSTEM_INFO si;
GetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
archName = "x64";
else if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
archName = "x86";
#else
osName = "Linux";
archName = "unknown";
FILE *fp = popen("system("cat /etc/issue | cut -d\' \' -f1")", "r");
if (nullptr != fp)
{
char buff[1024] = {0};
fread(buff, 1024, 1, fp);
osName = buff;
pclose(fp);
}
fp = popen("system("arch")", "r");
if (nullptr != fp)
{
char buff[1024] = {0};
fread(buff, 1024, 1, fp);
archName = buff;
pclose(fp);
}
#endif
#if defined(OEM_HANWANG)
oemName = "Hanvon";
#elif defined(OEM_LISICHENG)
oemName = "Lanxum";
#else
oemName = "Huago";
#endif
std::string source = osName + "-" + archName + "-" + oemName;
char json[1024];
sprintf(json, "{\"type\":%d, \"mac\":\"%s\", \"localid\":\"%s\", \"v\":\"%s\", \"ref\":\"%s\", \"desc\":\"%s\"}",
type, macList[0].c_str(), md5Str, version.c_str(), src.c_str(), desc.c_str());
type, macList[0].c_str(), md5Str, version.c_str(), source.c_str(), desc.c_str());
struct curl_slist* headers = nullptr;
headers = curl_slist_append(headers, "Content-Type:application/json;charset=UTF-8");
@ -270,14 +317,14 @@ static bool PostInfo(int type, const std::string &src, const std::string &desc)
return ret;
}
bool PostInstallInfo(const std::string &src, const std::string &desc)
bool PostInstallInfo(const std::string &desc)
{
return PostInfo(1, src, desc);
return PostInfo(1, desc);
}
bool PostUninstallInfo(const std::string &src, const std::string &desc)
bool PostUninstallInfo(const std::string &desc)
{
return PostInfo(2, src, desc);
return PostInfo(2, desc);
}
static bool Setup(const std::string& pkgPath)
@ -307,10 +354,10 @@ static bool Setup(const std::string& pkgPath)
return ret;
}
bool Upgrade(const std::string& pkgPath, const std::string &src, const std::string &desc)
bool Upgrade(const std::string& pkgPath, const std::string &desc)
{
bool ret = Setup(pkgPath);
if (ret)
PostInfo(1, src, desc);
PostInfo(1, desc);
return ret;
}

View File

@ -4,12 +4,12 @@
#include <string>
// 上传安装日志
bool PostInstallInfo(const std::string &src, const std::string &desc);
bool PostInstallInfo(const std::string &desc);
// 上传卸载日志
bool PostUninstallInfo(const std::string &src, const std::string &desc);
bool PostUninstallInfo(const std::string &desc);
// 升级安装, 使用之前的安装路径
bool Upgrade(const std::string& pkgPath, const std::string &src, const std::string &desc);
bool Upgrade(const std::string& pkgPath, const std::string &desc);
#endif /* __HGUPGRADE_H__ */

View File

@ -6,7 +6,6 @@
int main(int argc, char *argv[])
{
int type = 0;
std::string src;
std::string desc;
std::string pkgPath;
@ -22,20 +21,18 @@ int main(int argc, char *argv[])
type = 3;
else if (z == strstr(z, "-pkgpath="))
pkgPath = z + strlen("-pkgpath=");
else if (z == strstr(z, "-src="))
src = z + strlen("-src=");
else if (z == strstr(z, "-desc="))
desc = z + strlen("-desc=");
}
if (1 == type)
PostInstallInfo(src, desc);
PostInstallInfo(desc);
else if (2 == type)
PostUninstallInfo(src, desc);
PostUninstallInfo(desc);
else if (3 == type && !pkgPath.empty())
{
QApplication a(argc, argv);
MainWindow w(pkgPath, src, desc);
MainWindow w(pkgPath, desc);
w.show();
a.exec();
}

View File

@ -2,11 +2,10 @@
#include "ui_mainwindow.h"
#include "HGUpgrade.h"
MainWindow::MainWindow(const std::string& pkgPath, const std::string& src, const std::string& desc, QWidget *parent)
MainWindow::MainWindow(const std::string& pkgPath, const std::string& desc, QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_pkgPath(pkgPath)
, m_src(src)
, m_desc(desc)
, m_thread(nullptr)
{
@ -23,7 +22,7 @@ MainWindow::MainWindow(const std::string& pkgPath, const std::string& src, const
MainWindow::~MainWindow()
{
HGBase_CloseThread(m_thread);
m_thread = NULL;
m_thread = nullptr;
delete ui;
}
@ -32,7 +31,7 @@ void MainWindow::ThreadFunc(HGThread thread, HGPointer param)
{
(void)thread;
MainWindow* p = (MainWindow*)param;
Upgrade(p->m_pkgPath, p->m_src, p->m_desc);
Upgrade(p->m_pkgPath, p->m_desc);
emit p->closeWnd();
}

View File

@ -13,7 +13,7 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
MainWindow(const std::string &pkgPath, const std::string& src, const std::string& desc, QWidget *parent = nullptr);
MainWindow(const std::string &pkgPath, const std::string& desc, QWidget *parent = nullptr);
~MainWindow();
signals:
@ -26,7 +26,6 @@ private:
Ui::MainWindow *ui;
std::string m_pkgPath;
std::string m_src;
std::string m_desc;
HGThread m_thread;
};

View File

@ -145,7 +145,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>HGBase.def</ModuleDefinitionFile>
<AdditionalDependencies>gdiplus.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>
@ -171,7 +171,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>HGBase.def</ModuleDefinitionFile>
<AdditionalDependencies>gdiplus.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/LTCG %(AdditionalOptions)</AdditionalOptions>
</Link>
<PostBuildEvent>
@ -196,7 +196,7 @@ copy $(OutDir)HGBase.dll $(SolutionDir)..\..\..\release\win\x86\Release\</Comman
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>HGBase.def</ModuleDefinitionFile>
<AdditionalDependencies>gdiplus.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>
@ -222,7 +222,7 @@ copy $(OutDir)HGBase.dll $(SolutionDir)..\..\..\release\win\x86\Release\</Comman
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<ModuleDefinitionFile>HGBase.def</ModuleDefinitionFile>
<AdditionalDependencies>gdiplus.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>gdiplus.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/LTCG %(AdditionalOptions)</AdditionalOptions>
</Link>
<PostBuildEvent>

View File

@ -28,8 +28,6 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HGWebService", "HGWebService\HGWebService.vcxproj", "{BA4F1937-479E-463C-BB25-0DAC454DB625}"
ProjectSection(ProjectDependencies) = postProject
{F85F4457-1B42-46E7-BA86-F088D6D5994F} = {F85F4457-1B42-46E7-BA86-F088D6D5994F}
{EFAE5F69-A4C2-4A07-8BE6-68714D86BCE2} = {EFAE5F69-A4C2-4A07-8BE6-68714D86BCE2}
{4954F36B-A0A3-4550-9C4E-3B3D210F5CE4} = {4954F36B-A0A3-4550-9C4E-3B3D210F5CE4}
{5D85F2AC-FACD-436C-A67B-E13056DD0C03} = {5D85F2AC-FACD-436C-A67B-E13056DD0C03}
{4909ACEA-80FF-482E-9FA2-5E8534789A82} = {4909ACEA-80FF-482E-9FA2-5E8534789A82}
EndProjectSection

View File

@ -111,7 +111,7 @@
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -131,7 +131,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalOptions>/LTCG %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)upload.cgi $(SolutionDir)..\..\..\release\win\x86\Release\</Command>
@ -149,7 +149,7 @@
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -169,7 +169,7 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalOptions>/LTCG %(AdditionalOptions)</AdditionalOptions>
<AdditionalDependencies>Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)upload.cgi $(SolutionDir)..\..\..\release\win\x64\Release\</Command>

View File

@ -3,7 +3,6 @@
#if defined(HG_CMP_MSC)
#include <shlobj.h>
#include <atlstr.h>
#include <iphlpapi.h>
#else
#include "uuid/uuid.h"
#endif