user agent
This commit is contained in:
parent
7a73ec7c06
commit
a95fcbbdbf
@ -37,6 +37,7 @@ set( IXWEBSOCKET_SOURCES
|
|||||||
ixwebsocket/IXSocketFactory.cpp
|
ixwebsocket/IXSocketFactory.cpp
|
||||||
ixwebsocket/IXSocketServer.cpp
|
ixwebsocket/IXSocketServer.cpp
|
||||||
ixwebsocket/IXUrlParser.cpp
|
ixwebsocket/IXUrlParser.cpp
|
||||||
|
ixwebsocket/IXUserAgent.cpp
|
||||||
ixwebsocket/IXWebSocket.cpp
|
ixwebsocket/IXWebSocket.cpp
|
||||||
ixwebsocket/IXWebSocketCloseConstants.cpp
|
ixwebsocket/IXWebSocketCloseConstants.cpp
|
||||||
ixwebsocket/IXWebSocketHandshake.cpp
|
ixwebsocket/IXWebSocketHandshake.cpp
|
||||||
@ -68,6 +69,7 @@ set( IXWEBSOCKET_HEADERS
|
|||||||
ixwebsocket/IXSocketFactory.h
|
ixwebsocket/IXSocketFactory.h
|
||||||
ixwebsocket/IXSocketServer.h
|
ixwebsocket/IXSocketServer.h
|
||||||
ixwebsocket/IXUrlParser.h
|
ixwebsocket/IXUrlParser.h
|
||||||
|
ixwebsocket/IXUserAgent.h
|
||||||
ixwebsocket/IXWebSocket.h
|
ixwebsocket/IXWebSocket.h
|
||||||
ixwebsocket/IXWebSocketCloseConstants.h
|
ixwebsocket/IXWebSocketCloseConstants.h
|
||||||
ixwebsocket/IXWebSocketCloseInfo.h
|
ixwebsocket/IXWebSocketCloseInfo.h
|
||||||
@ -84,6 +86,7 @@ set( IXWEBSOCKET_HEADERS
|
|||||||
ixwebsocket/IXWebSocketSendInfo.h
|
ixwebsocket/IXWebSocketSendInfo.h
|
||||||
ixwebsocket/IXWebSocketServer.h
|
ixwebsocket/IXWebSocketServer.h
|
||||||
ixwebsocket/IXWebSocketTransport.h
|
ixwebsocket/IXWebSocketTransport.h
|
||||||
|
ixwebsocket/IXWebSocketVersion.h
|
||||||
ixwebsocket/LUrlParser.h
|
ixwebsocket/LUrlParser.h
|
||||||
ixwebsocket/libwshandshake.hpp
|
ixwebsocket/libwshandshake.hpp
|
||||||
)
|
)
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "IXHttpClient.h"
|
#include "IXHttpClient.h"
|
||||||
#include "IXUrlParser.h"
|
#include "IXUrlParser.h"
|
||||||
|
#include "IXUserAgent.h"
|
||||||
#include "IXWebSocketHttpHeaders.h"
|
#include "IXWebSocketHttpHeaders.h"
|
||||||
#include "IXSocketFactory.h"
|
#include "IXSocketFactory.h"
|
||||||
|
|
||||||
@ -171,7 +172,7 @@ namespace ix
|
|||||||
// Set a default User agent if none is present
|
// Set a default User agent if none is present
|
||||||
if (headers.find("User-Agent") == headers.end())
|
if (headers.find("User-Agent") == headers.end())
|
||||||
{
|
{
|
||||||
ss << "User-Agent: ixwebsocket" << "\r\n";
|
ss << "User-Agent: " << userAgent() << "\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verb == kPost || verb == kPut)
|
if (verb == kPost || verb == kPut)
|
||||||
|
@ -132,6 +132,8 @@ namespace ix
|
|||||||
// Log request
|
// Log request
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << request->method
|
ss << request->method
|
||||||
|
<< " "
|
||||||
|
<< request->headers["User-Agent"]
|
||||||
<< " "
|
<< " "
|
||||||
<< request->uri
|
<< request->uri
|
||||||
<< " "
|
<< " "
|
||||||
|
83
ixwebsocket/IXUserAgent.cpp
Normal file
83
ixwebsocket/IXUserAgent.cpp
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* IXUserAgent.cpp
|
||||||
|
* Author: Benjamin Sergeant
|
||||||
|
* Copyright (c) 2017-2019 Machine Zone, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "IXUserAgent.h"
|
||||||
|
#include "IXWebSocketVersion.h"
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
|
// Platform name
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define PLATFORM_NAME "windows" // Windows
|
||||||
|
#elif defined(_WIN64)
|
||||||
|
#define PLATFORM_NAME "windows" // Windows
|
||||||
|
#elif defined(__CYGWIN__) && !defined(_WIN32)
|
||||||
|
#define PLATFORM_NAME "windows" // Windows (Cygwin POSIX under Microsoft Window)
|
||||||
|
#elif defined(__ANDROID__)
|
||||||
|
#define PLATFORM_NAME "android" // Android (implies Linux, so it must come first)
|
||||||
|
#elif defined(__linux__)
|
||||||
|
#define PLATFORM_NAME "linux" // Debian, Ubuntu, Gentoo, Fedora, openSUSE, RedHat, Centos and other
|
||||||
|
#elif defined(__unix__) || !defined(__APPLE__) && defined(__MACH__)
|
||||||
|
#include <sys/param.h>
|
||||||
|
#if defined(BSD)
|
||||||
|
#define PLATFORM_NAME "bsd" // FreeBSD, NetBSD, OpenBSD, DragonFly BSD
|
||||||
|
#endif
|
||||||
|
#elif defined(__hpux)
|
||||||
|
#define PLATFORM_NAME "hp-ux" // HP-UX
|
||||||
|
#elif defined(_AIX)
|
||||||
|
#define PLATFORM_NAME "aix" // IBM AIX
|
||||||
|
#elif defined(__APPLE__) && defined(__MACH__) // Apple OSX and iOS (Darwin)
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#if TARGET_IPHONE_SIMULATOR == 1
|
||||||
|
#define PLATFORM_NAME "ios" // Apple iOS
|
||||||
|
#elif TARGET_OS_IPHONE == 1
|
||||||
|
#define PLATFORM_NAME "ios" // Apple iOS
|
||||||
|
#elif TARGET_OS_MAC == 1
|
||||||
|
#define PLATFORM_NAME "macos" // Apple OSX
|
||||||
|
#endif
|
||||||
|
#elif defined(__sun) && defined(__SVR4)
|
||||||
|
#define PLATFORM_NAME "solaris" // Oracle Solaris, Open Indiana
|
||||||
|
#else
|
||||||
|
#define PLATFORM_NAME "unknown platform"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// SSL
|
||||||
|
#if defined(IXWEBSOCKET_USE_OPEN_SSL)
|
||||||
|
#include <openssl/opensslv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace ix
|
||||||
|
{
|
||||||
|
std::string userAgent()
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
|
||||||
|
// IXWebSocket Version
|
||||||
|
ss << "ixwebsocket/" << IX_WEBSOCKET_VERSION;
|
||||||
|
|
||||||
|
// Platform
|
||||||
|
ss << " " << PLATFORM_NAME;
|
||||||
|
|
||||||
|
// TLS
|
||||||
|
#ifdef IXWEBSOCKET_USE_TLS
|
||||||
|
#ifdef IXWEBSOCKET_USE_MBED_TLS
|
||||||
|
ss << " ssl/mbedtls";
|
||||||
|
#elif __APPLE__
|
||||||
|
ss << " ssl/DarwinSSL";
|
||||||
|
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
|
||||||
|
ss << " ssl/OpenSSL " << OPENSSL_VERSION_TEXT;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
ss << " nossl";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Zlib version
|
||||||
|
ss << " zlib " << ZLIB_VERSION;
|
||||||
|
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
}
|
14
ixwebsocket/IXUserAgent.h
Normal file
14
ixwebsocket/IXUserAgent.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* IXUserAgent.h
|
||||||
|
* Author: Benjamin Sergeant
|
||||||
|
* Copyright (c) 2019 Machine Zone, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace ix
|
||||||
|
{
|
||||||
|
std::string userAgent();
|
||||||
|
} // namespace ix
|
@ -8,6 +8,7 @@
|
|||||||
#include "IXSocketConnect.h"
|
#include "IXSocketConnect.h"
|
||||||
#include "IXUrlParser.h"
|
#include "IXUrlParser.h"
|
||||||
#include "IXHttp.h"
|
#include "IXHttp.h"
|
||||||
|
#include "IXUserAgent.h"
|
||||||
|
|
||||||
#include "libwshandshake.hpp"
|
#include "libwshandshake.hpp"
|
||||||
|
|
||||||
@ -128,9 +129,17 @@ namespace ix
|
|||||||
ss << "Sec-WebSocket-Version: 13\r\n";
|
ss << "Sec-WebSocket-Version: 13\r\n";
|
||||||
ss << "Sec-WebSocket-Key: " << secWebSocketKey << "\r\n";
|
ss << "Sec-WebSocket-Key: " << secWebSocketKey << "\r\n";
|
||||||
|
|
||||||
for (auto& it : extraHeaders) {
|
// User-Agent can be customized by users
|
||||||
|
if (extraHeaders.find("User-Agent") == extraHeaders.end())
|
||||||
|
{
|
||||||
|
ss << "User-Agent: " << userAgent() << "\r\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& it : extraHeaders)
|
||||||
|
{
|
||||||
ss << it.first << ":" << it.second << "\r\n";
|
ss << it.first << ":" << it.second << "\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_enablePerMessageDeflate)
|
if (_enablePerMessageDeflate)
|
||||||
{
|
{
|
||||||
ss << _perMessageDeflateOptions.generateHeader();
|
ss << _perMessageDeflateOptions.generateHeader();
|
||||||
|
9
ixwebsocket/IXWebSocketVersion.h
Normal file
9
ixwebsocket/IXWebSocketVersion.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* IXWebSocketVersion.h
|
||||||
|
* Author: Benjamin Sergeant
|
||||||
|
* Copyright (c) 2019 Machine Zone, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define IX_WEBSOCKET_VERSION "5.0.9"
|
Loading…
Reference in New Issue
Block a user