...
 
Commits (3)
    https://gitcode.net/netsecsp/ahttp/-/commit/2bbb62ebd3246fccae64d876e55993fb831ac01f 1.4.4-20230318 2023-03-21T17:38:56+08:00 netsecsp netsecsp@hotmail.com https://gitcode.net/netsecsp/ahttp/-/commit/816dfaed00137614a232ff68e0160a7607d8ff9d 1.4.5-20230327 2023-03-27T11:43:36+08:00 netsecsp netsecsp@hotmail.com https://gitcode.net/netsecsp/ahttp/-/commit/a9c7f931aed293464ac6d578958779443e16fd31 1.4.5-20230327 2023-03-27T13:22:56+08:00 netsecsp netsecsp@hotmail.com
2023-03-18 ahttp 集成asynframe-sdk_v1.4.4-20230318 https://github.com/netsecsp/asynframe
2023-03-27 ahttp 集成asynframe-sdk_v1.4.5-20230327 https://github.com/netsecsp/asynframe
> asynframe-sdk_v1.4.4-20230318.zip is from https://github.com/netsecsp/asynframe
> asynframe-sdk_v1.4.5-20230327.zip is from https://github.com/netsecsp/asynframe
# ahttpclient.exe
# ahttp.exe
> supports IPv4/IPv6 http/https client program under windows
1. support ftp/http and socks4/4a/5 proxy
......
......@@ -11,7 +11,7 @@ log4cplus.appender.STDOUT.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S,%q} [%-5
# ROLLING_LOG_FILE #
#######################################################################
log4cplus.appender.ROLLING_LOG_FILE=log4cplus::RollingFileAppender
log4cplus.appender.ROLLING_LOG_FILE.File=ahttpclient.log
log4cplus.appender.ROLLING_LOG_FILE.File=ahttp.log
log4cplus.appender.ROLLING_LOG_FILE.MaxFileSize=10240KB
log4cplus.appender.ROLLING_LOG_FILE.MaxBackupIndex=5
# Truncate 'test' if it aleady exists.
......
......@@ -60,7 +60,7 @@ IDR_Application ICON DISCARDABLE "exe_ahttp.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,4,4,4
FILEVERSION 1,4,5,5
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -78,7 +78,7 @@ BEGIN
BEGIN
VALUE "CompanyName", "http://ahttp.sf.net"
VALUE "FileDescription", "ahttpclient"
VALUE "FileVersion", "1, 4, 4, 4"
VALUE "FileVersion", "1, 4, 5, 5"
VALUE "InternalName", "ahttpclient"
VALUE "LegalCopyright", "Copyright (c) netsecsp 2012-2032"
VALUE "OriginalFilename", "ahttpclient.exe"
......
......@@ -65,12 +65,13 @@ static void ShowUsage(std::string name)
if( i != std::string::npos )
name.erase(0, i + 1);
printf(" Usage: %s [-4|6] [-s tls/1.0] [-referurl URL] [-u PROXYURL] [-c OFFSET] [-o FILE] http[s]://[user:password@]host[:port]/path/file\n", name.c_str());
printf(" Usage: %s [-4|6] [-s tls/1.0] [-check-certificate] [-referurl URL] [-u PROXYURL] [-c OFFSET] [-o FILE] http[s]://[user:password@]host[:port]/path/file\n", name.c_str());
printf("Options:\n");
printf(" -4 Enforce IPv4\n");
printf(" -6 Enforce IPv6\n");
printf(" -s use TLS or SSL\n");
printf(" -referurl use refer url\n");
printf(" -s use TLS or SSL\n");
printf(" -check-certificate\n");
printf(" -u use proxy url, protocol://[user:password@]host[:port]/ver?params\n");
printf(" -c continue-at OFFSET Resumed transfer OFFSET\n");
printf(" -o save FILE\n");
......
......@@ -49,7 +49,7 @@ HRESULT CHttpDownloader::OnQueryResult( uint64_t lParam1, uint64_t lParam2, IUnk
((IKeyvalSetter*)objects[0])->Get(STRING_from_string(";context"), 0, 0, &c);
if( d.m_val.rfind("cert.verify") != std::string::npos )
{// cert.verify
return ((ISsl*)lParam2)->VerifyPeerCertificate(*(handle*)c.m_val.ptr, 0x1000);
return m_nochkcert? S_OK : ((ISsl*)lParam2)->VerifyPeerCertificate(*(handle*)c.m_val.ptr, 0x1000);
}
return E_NOTIMPL;
}
......@@ -59,12 +59,14 @@ HRESULT CHttpDownloader::OnQueryResult( uint64_t lParam1, uint64_t lParam2, IUnk
uint32_t bCompleted;
((IAsynIoOperation*)objects[0])->GetCompletedResult(0, 0, &bCompleted);
#ifdef _DEBUG
if( m_datasize != _UI64_MAX ) m_datasize -= lParam2;
if( m_datasize != _UI64_MAX )
printf("transmit: %I64d/%I64d/%d\n", lParam2, m_datasize, bCompleted);
else
printf("transmit: %I64d/%d\n", lParam2, bCompleted);
#endif
if( bCompleted ) m_datasize = 0; //mark download complete
return m_datasize != 0? S_OK : S_FALSE;
......@@ -97,7 +99,7 @@ HRESULT CHttpDownloader::OnIomsgNotify( uint64_t lParam1, uint64_t lAction, IAsy
}
asynsdk::CKeyvalSetter params(1);
//params.Set(STRING_from_string("User-Agent"), 1, STRING_from_string("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"));
params.Set(STRING_from_string("User-Agent"), 1, STRING_from_string("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"));
params.Set(STRING_from_string("Accept" ), 1, STRING_from_string("*/*"));
if( m_referurl ) params.Set(STRING_from_string("Referer"), 1, STRING_from_string(m_referurl));
......
......@@ -42,7 +42,7 @@ class CHttpDownloader : public asyn_message_events_impl
{
public:
CHttpDownloader(InstancesManager *lpInstanceManager, IAsynFrameThread *lpAsynFrameThread)
: m_setsfile("proxy.txt"), m_af(AF_INET), m_startpos(0), m_referurl(0), m_hNotify(::CreateEvent(0, 1, 0, 0))
: m_setsfile("proxy.txt"), m_af(AF_INET), m_startpos(0), m_referurl(0), m_nochkcert(true), m_hNotify(::CreateEvent(0, 1, 0, 0))
{
m_spInstanceManager = lpInstanceManager;
m_spAsynFrameThread = lpAsynFrameThread;
......@@ -81,7 +81,11 @@ public:
m_referurl = argv[i];
continue;
}
if( strcmp(argv[i], "-check-certificate") == 0 )
{
m_nochkcert = false;
continue;
}
if( strcmp(argv[i], "-4") == 0 )
{
m_af = AF_INET;
......@@ -328,7 +332,7 @@ public:
CComPtr<IAsynRawSocket> spAsynPtlSocket;
if( proxyname == "none" )
{// 没有配置代理的情况: non
{// 没有配置代理的情况: none
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("http"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string(schema == "http" || schema == "ftp"? "tcp" : m_setsfile.get_string("ssl", "algo", "tls/1.0")), &spAsynPtlSocket);
if( spAsynPtlSocket == NULL )
{
......@@ -340,14 +344,11 @@ public:
{// 已经配置代理的情况: http/socks proxy
if( proxyname == "http" )
{// http.proxy
if( memcmp(schema.c_str(), "http", 4) == 0 )
{
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("proxy"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string( schema + "/" + m_setsfile.get_string("proxy", "version", "1.1")), &spAsynPtlSocket );
}
else
{
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("proxy"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string(proxyname + "/" + m_setsfile.get_string("proxy", "version", "1.1")), &spAsynPtlSocket );
}
std::string version = m_setsfile.get_string("proxy", "version");
if(!version.empty())
version.insert(0, "/");
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("proxy"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string(proxyname + version), &spAsynPtlSocket );
if( spAsynPtlSocket == NULL )
{
printf("can't load plugin: proxy.%s\n", proxyname.c_str());
......@@ -370,9 +371,12 @@ public:
printf("invalid schema: %s\n", url.c_str());
return false;
}
std::string version = m_setsfile.get_string("proxy", "version");
if(!version.empty())
version.insert(0, "/");
CComPtr<IAsynRawSocket> spAsynTmpSocket;
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("proxy"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string(proxyname + "/" + m_setsfile.get_string("proxy", "version", "5.0")), &spAsynTmpSocket );
m_spAsynNetwork->CreateAsynPtlSocket( STRING_from_string("proxy"), (IUnknown **)&spAsynInnSocket.p, STRING_from_string(proxyname + version), &spAsynTmpSocket );
if( spAsynTmpSocket == NULL )
{
printf("can't load plugin: proxy.%s\n", proxyname.c_str());
......@@ -386,7 +390,7 @@ public:
params.Set(STRING_from_string(";account"), 1, STRING_from_string(m_setsfile.get_string("proxy", "user") + ":" + m_setsfile.get_string("proxy", "password")));
HRESULT hr = spProxy->SetProxyContext(STRING_from_string(m_setsfile.get_string("proxy", "host", "127.0.0.1")), (PORT)m_setsfile.get_long("proxy", "port", 1080), STRING_from_string(m_setsfile.get_string("proxy", "method", "")), &params);
m_spAsynNetwork->CreateAsynPtlSocket(STRING_from_string("http"), (IUnknown **)&spAsynTmpSocket.p, STRING_from_string(schema=="http"? "tcp/1.1" : m_setsfile.get_string("ssl", "algo", "tls/1.0")), &spAsynPtlSocket );
m_spAsynNetwork->CreateAsynPtlSocket(STRING_from_string("http"), (IUnknown **)&spAsynTmpSocket.p, STRING_from_string(schema=="http"? "tcp" : m_setsfile.get_string("ssl", "algo", "tls/1.0")), &spAsynPtlSocket );
if( spAsynPtlSocket == NULL )
{
printf("can't load plugin: http\n");
......@@ -436,6 +440,7 @@ protected:
CComPtr<ISpeedController> m_spSpeedController;
uint32_t m_starttime;
uint32_t m_af;
bool m_nochkcert;
CComPtr<IAsynIoBridge > m_spAsynIoBridge;
CComPtr<IAsynTcpSocket > m_spAsynTcpSocket;
......
......@@ -10,7 +10,7 @@
#endif
#endif
#define STRING_UPDATETIME "01/15/2022"
#define STRING_UPDATETIME "03/27/2023"
#include <iostream>
#include <tchar.h>
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。