mirror of
https://github.com/Telecominfraproject/wlan-cloud-lib-poco.git
synced 2025-10-29 17:52:44 +00:00
Merge branch 'develop' of https://github.com/pocoproject/poco into develop
This commit is contained in:
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://pocoproject.org/about.html#funding'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
231
.travis.yml
231
.travis.yml
@@ -32,7 +32,7 @@ services:
|
||||
- postgresql
|
||||
- mysql
|
||||
|
||||
dist: trusty
|
||||
dist: xenai
|
||||
sudo: enabled
|
||||
|
||||
addons:
|
||||
@@ -68,113 +68,104 @@ matrix:
|
||||
fast_finish: true
|
||||
|
||||
include:
|
||||
- env: test="android API level 19"
|
||||
language: android
|
||||
jdk: openjdk8
|
||||
android:
|
||||
components:
|
||||
- tools
|
||||
- platform-tools
|
||||
- tools
|
||||
- build-tools-23.0.3
|
||||
- extra-android-support
|
||||
- extra-android-m2repository
|
||||
- android-19
|
||||
- android-24
|
||||
- sys-img-armeabi-v7a-android-24
|
||||
# Unfortunaly travis use the old android sdk tool instead of using the new sdkmanager.
|
||||
# In this deprecated android sdk tool there is no ndk-bundle or cmake package!
|
||||
licenses:
|
||||
- '.+'
|
||||
- env: test="android API level 19 armeabi-v7a"
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- openjdk-8-jdk
|
||||
before_install:
|
||||
- export TERM=dumb
|
||||
- sudo apt-get update -qq
|
||||
# I don't understand why redis and mongodb are not installed although services added above !
|
||||
- sudo apt-get install -qq -y mongodb-server redis-server
|
||||
- /usr/bin/redis-server &
|
||||
- sudo /usr/bin/mongod --config /etc/mongodb.conf &
|
||||
- touch ~/.android/repositories.cfg
|
||||
- mkdir -p /usr/local/android-sdk/licenses
|
||||
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
|
||||
- echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
|
||||
- echo -e "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" >> /usr/local/android-sdk/licenses/android-sdk-license
|
||||
# Install NDK and cmake via android sdkmanager.
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" > /dev/null
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager --list
|
||||
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
|
||||
- wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
|
||||
- unzip -qq sdk-tools-linux-4333796.zip -d /opt/android-sdk
|
||||
- rm sdk-tools-linux-4333796.zip
|
||||
- echo "y" | /opt/android-sdk/tools/bin/sdkmanager "platform-tools" "system-images;android-24;default;armeabi-v7a" "platforms;android-24" "emulator" "ndk-bundle" "cmake;3.10.2.4988404" > /dev/null
|
||||
before_script:
|
||||
- export TERM=dumb
|
||||
- export _NO_CHECK_SIGNATURE=true
|
||||
- echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-24;default;armeabi-v7a"
|
||||
- /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
|
||||
- android-wait-for-emulator
|
||||
- /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
|
||||
- export ANDROID_SDK_ROOT=/opt/android-sdk
|
||||
- echo no | /opt/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-24;default;armeabi-v7a"
|
||||
- /opt/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
|
||||
#- android-wait-for-emulator || android-wait-for-emulator
|
||||
- /opt/android-sdk/platform-tools/adb shell input keyevent 82 &
|
||||
script:
|
||||
# Mandatory cmake parameter to set API level and platform for the android toolchain:
|
||||
# /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-22
|
||||
# See also in /usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
|
||||
# Using the ninja build command. Is much faster then make build command.
|
||||
- /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -H. -Bcmake-build -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-19 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DANDROID_STL="c++_static" -DANDROID_CPP_FEATURES="exceptions rtti" -DPOCO_ENABLE_APACHECONNECTOR=OFF -DPOCO_ENABLE_NETSSL=OFF -DPOCO_ENABLE_CRYPTO=OFF -DPOCO_ENABLE_SQL_MYSQL=OFF -DPOCO_ENABLE_SQL_POSTGRESQL=OFF -DPOCO_ENABLE_TESTS=ON -DPOCO_ENABLE_LONG_RUNNING_TESTS=OFF -DPOCO_OLD_REDIS_VERSION=ON && /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build cmake-build --target all && cd cmake-build &&travis_wait 30 /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest -E Foundation --output-on-failure
|
||||
- /opt/android-sdk/cmake/3.10.2.4988404/bin/cmake -H. -Bcmake-build -GNinja
|
||||
-DANDROID_ABI=armeabi-v7a
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_TOOLCHAIN_FILE=/opt/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
-DANDROID_PLATFORM=android-19
|
||||
-DCMAKE_MAKE_PROGRAM=/opt/android-sdk/cmake/3.10.2.4988404/bin/ninja
|
||||
-DANDROID_STL="c++_static"
|
||||
-DANDROID_CPP_FEATURES="exceptions rtti"
|
||||
-DPOCO_ENABLE_APACHECONNECTOR=OFF
|
||||
-DPOCO_ENABLE_NETSSL=OFF
|
||||
-DPOCO_ENABLE_CRYPTO=OFF
|
||||
-DPOCO_ENABLE_SQL_MYSQL=OFF
|
||||
-DPOCO_ENABLE_SQL_POSTGRESQL=OFF
|
||||
-DPOCO_ENABLE_TESTS=ON
|
||||
-DPOCO_ENABLE_LONG_RUNNING_TESTS=OFF
|
||||
-DPOCO_OLD_REDIS_VERSION=ON &&
|
||||
/opt/android-sdk/cmake/3.10.2.4988404/bin/cmake --build cmake-build --target all #&&
|
||||
#cd cmake-build && travis_wait 30 /opt/android-sdk/cmake/3.10.2.4988404/bin/ctest -E Foundation --output-on-failure FIXME Android emulator hangs
|
||||
|
||||
- env: test="android API level 24"
|
||||
language: android
|
||||
jdk: openjdk8
|
||||
android:
|
||||
components:
|
||||
- tools
|
||||
- platform-tools
|
||||
- tools
|
||||
- build-tools-23.0.3
|
||||
- extra-android-support
|
||||
- extra-android-m2repository
|
||||
- android-24
|
||||
- sys-img-armeabi-v7a-android-24
|
||||
# Unfortunaly travis use the old android sdk tool instead of using the new sdkmanager.
|
||||
# In this deprecated android sdk tool there is no ndk-bundle or cmake package!
|
||||
licenses:
|
||||
- '.+'
|
||||
- env: test="android API level 24 arm64-v8a"
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- openjdk-8-jdk
|
||||
before_install:
|
||||
- export TERM=dumb
|
||||
- sudo apt-get update -qq
|
||||
# I don't understand why redis and mongodb are not installed although services added above !
|
||||
- sudo apt-get install -qq -y mongodb-server redis-server
|
||||
- /usr/bin/redis-server &
|
||||
- sudo /usr/bin/mongod --config /etc/mongodb.conf &
|
||||
- touch ~/.android/repositories.cfg
|
||||
- mkdir -p /usr/local/android-sdk/licenses
|
||||
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
|
||||
- echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
|
||||
- echo -e "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" >> /usr/local/android-sdk/licenses/android-sdk-license
|
||||
# Install NDK and cmake via android sdkmanager.
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" > /dev/null
|
||||
- /usr/local/android-sdk/tools/bin/sdkmanager --list
|
||||
- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
|
||||
- wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
|
||||
- unzip -qq sdk-tools-linux-4333796.zip -d /opt/android-sdk
|
||||
- rm sdk-tools-linux-4333796.zip
|
||||
- echo "y" | /opt/android-sdk/tools/bin/sdkmanager "platform-tools" "system-images;android-24;default;arm64-v8a" "platforms;android-24" "emulator" "ndk-bundle" "cmake;3.10.2.4988404" > /dev/null
|
||||
before_script:
|
||||
- export TERM=dumb
|
||||
- export _NO_CHECK_SIGNATURE=true
|
||||
- echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-24;default;armeabi-v7a"
|
||||
- /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
|
||||
- android-wait-for-emulator
|
||||
- /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
|
||||
- export ANDROID_SDK_ROOT=/opt/android-sdk
|
||||
- echo no | /opt/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-24;default;arm64-v8a"
|
||||
- /opt/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
|
||||
#- android-wait-for-emulator || android-wait-for-emulator
|
||||
- /opt/android-sdk/platform-tools/adb shell input keyevent 82 &
|
||||
script:
|
||||
# Mandatory cmake parameter to set API level and platform for the android toolchain:
|
||||
# /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-22
|
||||
# See also in /usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
|
||||
# Using the ninja build command. Is much faster then make build command.
|
||||
- /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -H. -Bcmake-build -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-24 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DANDROID_STL="c++_static" -DANDROID_CPP_FEATURES="exceptions rtti" -DPOCO_ENABLE_APACHECONNECTOR=OFF -DPOCO_ENABLE_NETSSL=OFF -DPOCO_ENABLE_CRYPTO=OFF -DPOCO_ENABLE_SQL_MYSQL=OFF -DPOCO_ENABLE_SQL_POSTGRESQL=OFF -DPOCO_ENABLE_TESTS=ON -DPOCO_ENABLE_LONG_RUNNING_TESTS=OFF -DPOCO_OLD_REDIS_VERSION=ON && /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build cmake-build --target all && cd cmake-build && travis_wait 30 /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest -E Foundation --output-on-failure
|
||||
- /opt/android-sdk/cmake/3.10.2.4988404/bin/cmake -H. -Bcmake-build -GNinja
|
||||
-DANDROID_ABI=arm64-v8a
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_TOOLCHAIN_FILE=/opt/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
-DANDROID_PLATFORM=android-24
|
||||
-DCMAKE_MAKE_PROGRAM=/opt/android-sdk/cmake/3.10.2.4988404/bin/ninja
|
||||
-DANDROID_STL="c++_static"
|
||||
-DANDROID_CPP_FEATURES="exceptions rtti"
|
||||
-DPOCO_ENABLE_APACHECONNECTOR=OFF
|
||||
-DPOCO_ENABLE_NETSSL=OFF
|
||||
-DPOCO_ENABLE_CRYPTO=OFF
|
||||
-DPOCO_ENABLE_SQL_MYSQL=OFF
|
||||
-DPOCO_ENABLE_SQL_POSTGRESQL=OFF
|
||||
-DPOCO_ENABLE_TESTS=ON
|
||||
-DPOCO_ENABLE_LONG_RUNNING_TESTS=OFF
|
||||
-DPOCO_OLD_REDIS_VERSION=ON &&
|
||||
/opt/android-sdk/cmake/3.10.2.4988404/bin/cmake --build cmake-build --target all #&&
|
||||
#cd cmake-build && travis_wait 30 /opt/android-sdk/cmake/3.10.2.4988404/bin/ctest -E Foundation --output-on-failure FIXME Android emulator hangs
|
||||
|
||||
- env: test="x86 (make) bundled"
|
||||
os: osx
|
||||
compiler: clang
|
||||
script:
|
||||
- export CC="clang"
|
||||
- export CXX="clang++"
|
||||
- $CXX --version
|
||||
- $CXX -x c++ /dev/null -dM -E
|
||||
- ./configure --config=Darwin32-clang-libc++ --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
- make all -s -j2 && sudo make install && export OSARCH=i386 && sudo -s ./travis/OSX/runtests.sh
|
||||
# - env: test="x86 (make) bundled"
|
||||
# os: osx
|
||||
# compiler: clang
|
||||
# script:
|
||||
# - export CC="clang"
|
||||
# - export CXX="clang++"
|
||||
# - $CXX --version
|
||||
# - $CXX -x c++ /dev/null -dM -E
|
||||
# - ./configure --config=Darwin32-clang-libc++ --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
# - make all -s -j2 && sudo make install && export OSARCH=i386 && sudo -s ./travis/OSX/runtests.sh
|
||||
|
||||
- env: test="x64 (make) bundled"
|
||||
os: osx
|
||||
@@ -187,15 +178,15 @@ matrix:
|
||||
- ./configure --config=Darwin64-clang-libc++ --everything --omit=PDF,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
- make all -s -j2 && sudo make install && sudo -s ./travis/OSX/runtests.sh
|
||||
|
||||
- env: test="5.4 x86 (make) bundled"
|
||||
compiler: gcc
|
||||
script:
|
||||
- sudo apt-get install -qq -y g++-5-multilib
|
||||
- export CC="gcc-5"
|
||||
- export CXX="g++-5"
|
||||
- $CXX --version
|
||||
- ./configure --config=Linux32-gcc --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
- make all -s -j2 && sudo make install && export OSARCH=x86 && sudo -s ./travis/Linux/runtests.sh
|
||||
# - env: test="5.4 x86 (make) bundled"
|
||||
# compiler: gcc
|
||||
# script:
|
||||
# - sudo apt-get install -qq -y g++-5-multilib
|
||||
# - export CC="gcc-5"
|
||||
# - export CXX="g++-5"
|
||||
# - $CXX --version
|
||||
# - ./configure --config=Linux32-gcc --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
# - make all -s -j2 && sudo make install && export OSARCH=x86 && sudo -s ./travis/Linux/runtests.sh
|
||||
|
||||
- env: test="5.4 x64 (make) bundled"
|
||||
compiler: gcc
|
||||
@@ -248,20 +239,20 @@ matrix:
|
||||
- type ctest
|
||||
- source ./travis/ignored.sh
|
||||
- export POCO_BASE=`pwd`
|
||||
- cmake -H. -Bcmake-build -GNinja -DCMAKE_BUILD_TYPE=Debug -DPOCO_ENABLE_PDF=OFF -DPOCO_ENABLE_TESTS=ON -DPOCO_ENABLE_SAMPLES=ON && cmake --build cmake-build && cd cmake-build && sudo /usr/local/cmake-3.9.2/bin/ctest -VV && cd ..
|
||||
- cmake -H. -Bcmake-build -GNinja -DCMAKE_BUILD_TYPE=Debug -DPOCO_ENABLE_PDF=OFF -DPOCO_ENABLE_TESTS=ON -DPOCO_ENABLE_SAMPLES=ON && cmake --build cmake-build && cd cmake-build && sudo /usr/local/cmake-3.12.4/bin/ctest -VV && cd ..
|
||||
|
||||
|
||||
- env: test="4.0 x86 (make) bundled"
|
||||
compiler: clang
|
||||
script:
|
||||
- sudo apt-get install -qq -y clang-4.0 lldb-4.0 libc++-dev libc++abi-dev
|
||||
- sudo apt-get install -qq -y g++-5-multilib
|
||||
- export CLANG_VERSTION="-4.0"
|
||||
- export CC="clang-4.0"
|
||||
- export CXX="clang++-4.0"
|
||||
- $CXX --version
|
||||
- ./configure --config=Linux32-clang --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
- make all -s -j2 && sudo make install && export OSARCH=x86 && sudo -s ./travis/Linux/runtests.sh
|
||||
# - env: test="4.0 x86 (make) bundled"
|
||||
# compiler: clang
|
||||
# script:
|
||||
# - sudo apt-get install -qq -y clang-4.0 lldb-4.0 libc++-dev libc++abi-dev
|
||||
# - sudo apt-get install -qq -y g++-5-multilib
|
||||
# - export CLANG_VERSTION="-4.0"
|
||||
# - export CC="clang-4.0"
|
||||
# - export CXX="clang++-4.0"
|
||||
# - $CXX --version
|
||||
# - ./configure --config=Linux32-clang --everything --omit=PDF,Crypto,NetSSL_OpenSSL,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL
|
||||
# - make all -s -j2 && sudo make install && export OSARCH=x86 && sudo -s ./travis/Linux/runtests.sh
|
||||
|
||||
- env: test="4.0 x64 (make) bundled"
|
||||
compiler: clang
|
||||
@@ -274,31 +265,31 @@ matrix:
|
||||
- ./configure --config=Linux64-clang --everything --omit=PDF
|
||||
- make all -s -j2 && sudo make install && sudo -s ./travis/Linux/runtests.sh
|
||||
|
||||
- env: test="5.0 x64 (make) bundled"
|
||||
- env: test="6.0 x64 (make) bundled"
|
||||
compiler: clang
|
||||
script:
|
||||
- sudo apt-get install -qq -y clang-5.0 lldb-5.0 libc++-dev libc++abi-dev
|
||||
- export CLANG_VERSTION="-5.0"
|
||||
- export CC="clang-5.0"
|
||||
- export CXX="clang++-5.0"
|
||||
- sudo apt-get install -qq -y clang-6.0 lldb-6.0 libc++-dev libc++abi-dev
|
||||
- export CLANG_VERSTION="-6.0"
|
||||
- export CC="clang-6.0"
|
||||
- export CXX="clang++-6.0"
|
||||
- $CXX --version
|
||||
- ./configure --config=Linux64-clang --everything --omit=PDF
|
||||
- make all -s -j2 && sudo make install && sudo -s ./travis/Linux/runtests.sh
|
||||
|
||||
#- env: test="arm-linux-gnueabi-g++ (make)"
|
||||
# compiler: gcc
|
||||
# script:
|
||||
# - sudo apt-get install -qq -y g++-arm-linux-gnueabi g++-arm-linux-gnueabihf
|
||||
# - arm-linux-gnueabi-g++ --version
|
||||
# - arm-linux-gnueabi-g++ -x c++ /dev/null -dM -E
|
||||
# - ./configure --omit=PDF,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL,Crypto,NetSSL,PageCompiler && make -s -j2 CROSS_COMPILE=arm-linux-gnueabi- POCO_TARGET_OSARCH=armv7l
|
||||
- env: test="arm-linux-gnueabi-g++ (make)"
|
||||
compiler: gcc
|
||||
script:
|
||||
- sudo apt-get install -qq -y g++-arm-linux-gnueabi g++-arm-linux-gnueabihf
|
||||
- arm-linux-gnueabi-g++ --version
|
||||
- arm-linux-gnueabi-g++ -x c++ /dev/null -dM -E
|
||||
- ./configure --omit=PDF,SQL/ODBC,SQL/MySQL,SQL/PostgreSQL,Crypto,NetSSL,PageCompiler && make -s -j2 CROSS_COMPILE=arm-linux-gnueabi- POCO_TARGET_OSARCH=armv7l
|
||||
|
||||
#- env: test="(CMake)"
|
||||
# compiler: clang
|
||||
# script:
|
||||
# - source ./travis/ignored.sh
|
||||
# - export POCO_BASE=`pwd`
|
||||
# - mkdir cmake-build && cd cmake-build && cmake -DENABLE_PDF=OFF -DENABLE_TESTS=ON .. && make -s -j2 && sudo /usr/local/cmake-3.9.2/bin/ctest -VV -E SQL && cd ..
|
||||
# - mkdir cmake-build && cd cmake-build && cmake -DENABLE_PDF=OFF -DENABLE_TESTS=ON .. && make -s -j2 && sudo /usr/local/cmake-3.12.4/bin/ctest -VV -E SQL && cd ..
|
||||
|
||||
#- env: test="arm-linux-gnueabi-g++ (CMake)"
|
||||
# ======================================= "arm-linux-gnueabi-g++: version 4.7.0: non compliant to c++11
|
||||
|
||||
@@ -30,9 +30,15 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
# Append our module directory to CMake
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.4")
|
||||
if(CMAKE_VERSION VERSION_LESS "3.4")
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/V33)
|
||||
endif()
|
||||
if(CMAKE_VERSION VERSION_LESS "3.10")
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/V39)
|
||||
endif()
|
||||
if(CMAKE_VERSION VERSION_LESS "3.14")
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/V313)
|
||||
endif()
|
||||
#################################################################################
|
||||
# Setup C/C++ compiler options
|
||||
#################################################################################
|
||||
@@ -486,6 +492,15 @@ install(
|
||||
Devel
|
||||
)
|
||||
|
||||
if(POCO_UNBUNDLED)
|
||||
install(FILES cmake/FindPCRE.cmake
|
||||
DESTINATION "${PocoConfigPackageLocation}")
|
||||
install(FILES cmake/V39/FindEXPAT.cmake
|
||||
DESTINATION "${PocoConfigPackageLocation}/V39")
|
||||
install(FILES cmake/V313/FindSQLite3.cmake
|
||||
DESTINATION "${PocoConfigPackageLocation}/V313")
|
||||
endif()
|
||||
|
||||
# Install pkg-config files
|
||||
install(FILES ${POCO_PKG_CONFIG_FILES}
|
||||
DESTINATION lib${LIB_SUFFIX}/pkgconfig)
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(CppParser ${SRCS})
|
||||
add_library(Poco::CppParser ALIAS CppParser)
|
||||
set_target_properties(CppParser
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
#define Poco_CppUnit__CppUnitINCLUDED
|
||||
|
||||
|
||||
#include "Poco/Platform.h"
|
||||
|
||||
|
||||
//
|
||||
// Ensure that POCO_DLL is default unless POCO_STATIC is defined
|
||||
@@ -28,7 +26,7 @@
|
||||
// CppUnit_API functions as being imported from a DLL, whereas this DLL sees symbols
|
||||
// defined with this macro as being exported.
|
||||
//
|
||||
#if defined(POCO_COMPILER_MSVC) && defined(POCO_DLL)
|
||||
#if defined(_WIN32) && defined(_MSC_VER) && defined(POCO_DLL)
|
||||
#if defined(CppUnit_EXPORTS)
|
||||
#define CppUnit_API __declspec(dllexport)
|
||||
#else
|
||||
@@ -45,38 +43,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
// Automatically link CppUnit library.
|
||||
//
|
||||
#if defined(POCO_COMPILER_MSVC)
|
||||
#if defined(POCO_DLL)
|
||||
#if defined(_DEBUG)
|
||||
#define POCO_LIB_SUFFIX "d.lib"
|
||||
#else
|
||||
#define POCO_LIB_SUFFIX ".lib"
|
||||
#endif
|
||||
#elif defined(_DLL)
|
||||
#if defined(_DEBUG)
|
||||
#define POCO_LIB_SUFFIX "mdd.lib"
|
||||
#else
|
||||
#define POCO_LIB_SUFFIX "md.lib"
|
||||
#endif
|
||||
#else
|
||||
#if defined(_DEBUG)
|
||||
#define POCO_LIB_SUFFIX "mtd.lib"
|
||||
#else
|
||||
#define POCO_LIB_SUFFIX "mt.lib"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(CppUnit_EXPORTS)
|
||||
#pragma comment(lib, "PocoCppUnit" POCO_LIB_SUFFIX)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// Turn off some annoying warnings
|
||||
#ifdef POCO_COMPILER_MSVC
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable:4786) // identifier truncation warning
|
||||
#pragma warning(disable:4503) // decorated name length exceeded - mainly a problem with STLPort
|
||||
#pragma warning(disable:4018) // signed/unsigned comparison
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(Crypto ${SRCS} )
|
||||
add_library(Poco::Crypto ALIAS Crypto)
|
||||
set_target_properties(Crypto
|
||||
@@ -25,7 +31,10 @@ target_include_directories(Crypto
|
||||
)
|
||||
|
||||
if(MSVC AND POCO_DISABLE_INTERNAL_OPENSSL)
|
||||
target_compile_definitions(Crypto PUBLIC POCO_EXTERNAL_OPENSSL)
|
||||
target_compile_definitions(Crypto PUBLIC POCO_EXTERNAL_OPENSSL)
|
||||
if(OPENSSL_USE_STATIC_LIBS)
|
||||
target_link_libraries(Crypto PUBLIC ws2_32.lib Crypt32.lib)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
POCO_INSTALL(Crypto)
|
||||
|
||||
@@ -119,15 +119,30 @@ enum RSAPaddingMode
|
||||
#elif defined(POCO_EXTERNAL_OPENSSL)
|
||||
#if POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_SLPRO
|
||||
#if defined(POCO_DLL)
|
||||
#pragma comment(lib, "libeay32.lib")
|
||||
#pragma comment(lib, "ssleay32.lib")
|
||||
#if OPENSSL_VERSION_PREREQ(1,1)
|
||||
#pragma comment(lib, "libcrypto.lib")
|
||||
#pragma comment(lib, "libssl.lib")
|
||||
#else
|
||||
#pragma comment(lib, "libeay32.lib")
|
||||
#pragma comment(lib, "ssleay32.lib")
|
||||
#endif
|
||||
#else
|
||||
#pragma comment(lib, "libeay32" POCO_LIB_SUFFIX)
|
||||
#pragma comment(lib, "ssleay32" POCO_LIB_SUFFIX)
|
||||
#if OPENSSL_VERSION_PREREQ(1,1)
|
||||
#pragma comment(lib, "libcrypto" POCO_LIB_SUFFIX)
|
||||
#pragma comment(lib, "libssl" POCO_LIB_SUFFIX)
|
||||
#else
|
||||
#pragma comment(lib, "libeay32" POCO_LIB_SUFFIX)
|
||||
#pragma comment(lib, "ssleay32" POCO_LIB_SUFFIX)
|
||||
#endif
|
||||
#endif
|
||||
#elif POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_DEFAULT
|
||||
#pragma comment(lib, "libeay32.lib")
|
||||
#pragma comment(lib, "ssleay32.lib")
|
||||
#if OPENSSL_VERSION_PREREQ(1,1)
|
||||
#pragma comment(lib, "libcrypto.lib")
|
||||
#pragma comment(lib, "libssl.lib")
|
||||
#else
|
||||
#pragma comment(lib, "libeay32.lib")
|
||||
#pragma comment(lib, "ssleay32.lib")
|
||||
#endif
|
||||
#endif
|
||||
#endif // POCO_INTERNAL_OPENSSL_MSVC_VER
|
||||
#if !defined(Crypto_EXPORTS)
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
NID_PKCS9_EMAIL_ADDRESS = 48,
|
||||
NID_SERIAL_NUMBER = 105
|
||||
};
|
||||
|
||||
|
||||
explicit X509Certificate(std::istream& istr);
|
||||
/// Creates the X509Certificate object by reading
|
||||
/// a certificate in PEM format from a stream.
|
||||
@@ -92,12 +92,12 @@ public:
|
||||
|
||||
const std::string& issuerName() const;
|
||||
/// Returns the certificate issuer's distinguished name.
|
||||
|
||||
|
||||
std::string issuerName(NID nid) const;
|
||||
/// Extracts the information specified by the given
|
||||
/// NID (name identifier) from the certificate issuer's
|
||||
/// distinguished name.
|
||||
|
||||
|
||||
const std::string& subjectName() const;
|
||||
/// Returns the certificate subject's distinguished name.
|
||||
|
||||
@@ -105,21 +105,21 @@ public:
|
||||
/// Extracts the information specified by the given
|
||||
/// NID (name identifier) from the certificate subject's
|
||||
/// distinguished name.
|
||||
|
||||
|
||||
std::string commonName() const;
|
||||
/// Returns the common name stored in the certificate
|
||||
/// subject's distinguished name.
|
||||
|
||||
|
||||
void extractNames(std::string& commonName, std::set<std::string>& domainNames) const;
|
||||
/// Extracts the common name and the alias domain names from the
|
||||
/// certificate.
|
||||
|
||||
|
||||
Poco::DateTime validFrom() const;
|
||||
/// Returns the date and time the certificate is valid from.
|
||||
|
||||
|
||||
Poco::DateTime expiresOn() const;
|
||||
/// Returns the date and time the certificate expires.
|
||||
|
||||
|
||||
void save(std::ostream& stream) const;
|
||||
/// Writes the certificate to the given stream.
|
||||
/// The certificate is written in PEM format.
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
void save(const std::string& path) const;
|
||||
/// Writes the certificate to the file given by path.
|
||||
/// The certificate is written in PEM format.
|
||||
|
||||
|
||||
bool issuedBy(const X509Certificate& issuerCertificate) const;
|
||||
/// Checks whether the certificate has been issued by
|
||||
/// the issuer given by issuerCertificate. This can be
|
||||
@@ -151,6 +151,11 @@ public:
|
||||
const X509* certificate() const;
|
||||
/// Returns the underlying OpenSSL certificate.
|
||||
|
||||
X509* dup() const;
|
||||
/// Duplicates and returns the underlying OpenSSL certificate. Note that
|
||||
/// the caller assumes responsibility for the lifecycle of the created
|
||||
/// certificate.
|
||||
|
||||
std::string signatureAlgorithm() const;
|
||||
/// Returns the certificate signature algorithm long name.
|
||||
|
||||
@@ -171,20 +176,20 @@ protected:
|
||||
void load(std::istream& stream);
|
||||
/// Loads the certificate from the given stream. The
|
||||
/// certificate must be in PEM format.
|
||||
|
||||
|
||||
void load(const std::string& path);
|
||||
/// Loads the certificate from the given file. The
|
||||
/// certificate must be in PEM format.
|
||||
|
||||
void init();
|
||||
/// Extracts issuer and subject name from the certificate.
|
||||
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
NAME_BUFFER_SIZE = 256
|
||||
};
|
||||
|
||||
|
||||
std::string _issuerName;
|
||||
std::string _subjectName;
|
||||
std::string _serialNumber;
|
||||
@@ -231,6 +236,12 @@ inline const X509* X509Certificate::certificate() const
|
||||
}
|
||||
|
||||
|
||||
inline X509* X509Certificate::dup() const
|
||||
{
|
||||
return X509_dup(_pCert);
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Crypto
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES( SRCS Encodings ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS( SRCS Encodings ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(Encodings ${LIB_MODE} ${SRCS} )
|
||||
add_library(Poco::Encodings ALIAS Encodings)
|
||||
set_target_properties(Encodings
|
||||
|
||||
2
FAQ.md
2
FAQ.md
@@ -7,7 +7,7 @@
|
||||
|
||||
**A:** It depends on what exactly [xyz] is. POCO community is more than happy to help newcomers and experienced C++ programmers alike. There are, however, certain limitations as to how far we are willing to go as well as expectations we have for people asking questions:
|
||||
|
||||
- First and foremost, read the relevant [documentation](http://pocoproject.org/documentation/index.html)
|
||||
- First and foremost, read the relevant [documentation](http://pocoproject.org/documentation.html)
|
||||
|
||||
- Please be patient and respectful; we answer questions free of charge and our time is at least as valuable as yours.
|
||||
|
||||
|
||||
@@ -26,6 +26,12 @@ POCO_SOURCES_AUTO_PLAT( SRCS WIN32
|
||||
)
|
||||
endif()
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
# Messages
|
||||
POCO_MESSAGES( SRCS Logging src/pocomsg.mc)
|
||||
|
||||
@@ -97,7 +103,11 @@ set_target_properties(Foundation
|
||||
DEFINE_SYMBOL Foundation_EXPORTS
|
||||
)
|
||||
|
||||
target_link_libraries(Foundation PUBLIC ${PCRE_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
if (POCO_UNBUNDLED)
|
||||
target_link_libraries(Foundation PUBLIC Pcre::Pcre ZLIB::ZLIB)
|
||||
target_compile_definitions(Foundation PUBLIC POCO_UNBUNDLED)
|
||||
endif (POCO_UNBUNDLED)
|
||||
|
||||
target_include_directories(Foundation
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
@@ -111,7 +121,7 @@ target_compile_definitions(Foundation
|
||||
$<$<NOT:$<BOOL:${POCO_DISABLE_CPP14}>>:POCO_ENABLE_CPP14>
|
||||
)
|
||||
target_compile_features(Foundation PUBLIC cxx_defaulted_move_initializers)
|
||||
if(NOT DISABLE_CPP14 AND CMAKE_VERSION VERSION_GREATER 3.7)
|
||||
if(NOT DISABLE_CPP14 AND CMAKE_VERSION VERSION_GREATER "3.8")
|
||||
target_compile_features(Foundation PUBLIC cxx_std_14)
|
||||
endif()
|
||||
|
||||
@@ -231,11 +241,6 @@ if ((${CMAKE_CXX_COMPILER_ID} MATCHES "XL") AND (${CMAKE_SYSTEM} MATCHES "AIX"))
|
||||
)
|
||||
endif()
|
||||
|
||||
if(POCO_UNBUNDLED)
|
||||
target_include_directories(Foundation PUBLIC "${PCRE_INCLUDE_DIRS}" "${ZLIB_INCLUDE_DIRS}")
|
||||
target_compile_definitions(Foundation PUBLIC POCO_UNBUNDLED)
|
||||
endif()
|
||||
|
||||
if (NOT POCO_ENABLE_WSTRING)
|
||||
target_compile_definitions(Foundation PUBLIC POCO_NO_WSTRING)
|
||||
endif()
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/PocoFoundationTargets.cmake")
|
||||
if(@POCO_UNBUNDLED@)
|
||||
include(CMakeFindDependencyMacro)
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||
find_dependency(ZLIB REQUIRED)
|
||||
find_dependency(PCRE REQUIRED)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/PocoFoundationTargets.cmake")
|
||||
|
||||
@@ -55,11 +55,14 @@ public:
|
||||
typename ExpireStrategy<TKey, TValue>::Iterator it = this->_keys.find(key);
|
||||
if (it != this->_keys.end())
|
||||
{
|
||||
this->_keyIndex.erase(it->second);
|
||||
Timestamp now;
|
||||
typename ExpireStrategy<TKey, TValue>::IndexIterator itIdx =
|
||||
this->_keyIndex.insert(typename ExpireStrategy<TKey, TValue>::TimeIndex::value_type(now, key));
|
||||
it->second = itIdx;
|
||||
if (!it->second->first.isElapsed(this->_expireTime)) // don't extend if already expired
|
||||
{
|
||||
this->_keyIndex.erase(it->second);
|
||||
Timestamp now;
|
||||
typename ExpireStrategy<TKey, TValue>::IndexIterator itIdx =
|
||||
this->_keyIndex.insert(typename ExpireStrategy<TKey, TValue>::TimeIndex::value_type(now, key));
|
||||
it->second = itIdx;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -433,7 +433,7 @@ private:
|
||||
// 'from' is greater than 'T' max value
|
||||
else if (!std::numeric_limits<F>::is_signed &&
|
||||
std::numeric_limits<T>::is_signed &&
|
||||
static_cast<Poco::UInt64>(from) > std::numeric_limits<T>::max())
|
||||
static_cast<Poco::UInt64>(from) > static_cast<Poco::UInt64>(std::numeric_limits<T>::max()))
|
||||
{
|
||||
throw RangeException("Value too large.");
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
//
|
||||
|
||||
|
||||
#include <Poco/Exception.h>
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/DateTimeFormat.h"
|
||||
#include "Poco/RegularExpression.h"
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ void EnvironmentImpl::setImpl(const std::string& name, const std::string& value)
|
||||
std::string var = name;
|
||||
var.append("=");
|
||||
var.append(value);
|
||||
_map[name] = var;
|
||||
std::swap(_map[name], var);
|
||||
if (putenv((char*) _map[name].c_str()))
|
||||
{
|
||||
std::string msg = "cannot set environment variable: ";
|
||||
@@ -221,7 +221,7 @@ void EnvironmentImpl::nodeIdImpl(NodeId& id)
|
||||
if (std::sscanf(buffer, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &id[0], &id[1], &id[2], &id[3], &id[4], &id[5]) == 6)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if that did not work, search active interfaces
|
||||
int sock = socket(PF_INET, SOCK_DGRAM, 0);
|
||||
@@ -258,7 +258,7 @@ void EnvironmentImpl::nodeIdImpl(NodeId& id)
|
||||
}
|
||||
for (const char* ptr = buf; ptr < buf + ifc.ifc_len;)
|
||||
{
|
||||
const struct ifreq* ifr = reinterpret_cast<const struct ifreq*>(ptr);
|
||||
const struct ifreq* ifr = reinterpret_cast<const struct ifreq*>(ptr);
|
||||
int rc = ioctl(sock, SIOCGIFHWADDR, ifr);
|
||||
if (rc != -1)
|
||||
{
|
||||
|
||||
@@ -46,7 +46,7 @@ FastMutex EnvironmentImpl::_mutex;
|
||||
std::string EnvironmentImpl::getImpl(const std::string& name)
|
||||
{
|
||||
FastMutex::ScopedLock lock(_mutex);
|
||||
|
||||
|
||||
const char* val = getenv(name.c_str());
|
||||
if (val)
|
||||
return std::string(val);
|
||||
@@ -66,11 +66,11 @@ bool EnvironmentImpl::hasImpl(const std::string& name)
|
||||
void EnvironmentImpl::setImpl(const std::string& name, const std::string& value)
|
||||
{
|
||||
FastMutex::ScopedLock lock(_mutex);
|
||||
|
||||
|
||||
std::string var = name;
|
||||
var.append("=");
|
||||
var.append(value);
|
||||
_map[name] = var;
|
||||
std::swap(_map[name], var);
|
||||
if (putenv((char*) _map[name].c_str()))
|
||||
{
|
||||
std::string msg = "cannot set environment variable: ";
|
||||
@@ -112,7 +112,7 @@ std::string EnvironmentImpl::osArchitectureImpl()
|
||||
return "sh";
|
||||
#else
|
||||
return "unknown";
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ void EnvironmentImpl::nodeIdImpl(NodeId& id)
|
||||
return;
|
||||
}
|
||||
}
|
||||
else break;
|
||||
else break;
|
||||
++ifIndex;
|
||||
}
|
||||
throw SystemException("cannot get Ethernet hardware address");
|
||||
|
||||
@@ -216,11 +216,29 @@ void KeccakP1600Round(UInt64 *state, unsigned int indexRound)
|
||||
iota(state, indexRound);
|
||||
}
|
||||
|
||||
static void fromBytesToWords(UInt64 *stateAsWords, const unsigned char *state)
|
||||
{
|
||||
unsigned int i, j;
|
||||
for (i = 0; i < 25; i++) {
|
||||
stateAsWords[i] = 0;
|
||||
for (j = 0; j < (64 / 8); j++)
|
||||
stateAsWords[i] |= (UInt64)(state[i*(64 / 8) + j]) << (8 * j);
|
||||
}
|
||||
}
|
||||
|
||||
void KeccakP1600OnWords(UInt64 *state, unsigned int nrRounds)
|
||||
{
|
||||
for (unsigned int i = (24 - nrRounds); i < 24; i++) KeccakP1600Round(state, i);
|
||||
}
|
||||
|
||||
static void fromWordsToBytes(unsigned char *state, const UInt64 *stateAsWords)
|
||||
{
|
||||
unsigned int i, j;
|
||||
for (i = 0; i < 25; i++)
|
||||
for (j = 0; j < (64 / 8); j++)
|
||||
state[i*(64 / 8) + j] = (unsigned char)((stateAsWords[i] >> (8 * j)) & 0xFF);
|
||||
}
|
||||
|
||||
void KeccakP1600_Permute_24rounds(void *state)
|
||||
{
|
||||
#ifndef POCO_ARCH_LITTLE_ENDIAN
|
||||
|
||||
@@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
/* The current PCRE version information. */
|
||||
|
||||
#define PCRE_MAJOR 8
|
||||
#define PCRE_MINOR 42
|
||||
#define PCRE_PRERELEASE
|
||||
#define PCRE_DATE 2018-03-20
|
||||
#define PCRE_MINOR 43
|
||||
#define PCRE_PRERELEASE
|
||||
#define PCRE_DATE 2019-02-23
|
||||
|
||||
/* When an application links to a PCRE DLL in Windows, the symbols that are
|
||||
imported have to be identified as such. When building PCRE, the appropriate
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
and semantics are as close as possible to those of the Perl 5 language.
|
||||
|
||||
Written by Philip Hazel
|
||||
Copyright (c) 1997-2016 University of Cambridge
|
||||
Copyright (c) 1997-2018 University of Cambridge
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -7644,6 +7644,8 @@ for (;; ptr++)
|
||||
/* Can't determine a first byte now */
|
||||
|
||||
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
|
||||
zerofirstchar = firstchar;
|
||||
zerofirstcharflags = firstcharflags;
|
||||
continue;
|
||||
|
||||
|
||||
@@ -8684,13 +8686,21 @@ do {
|
||||
if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE;
|
||||
}
|
||||
|
||||
/* Positive forward assertions and conditions */
|
||||
/* Positive forward assertion */
|
||||
|
||||
else if (op == OP_ASSERT || op == OP_COND)
|
||||
else if (op == OP_ASSERT)
|
||||
{
|
||||
if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE;
|
||||
}
|
||||
|
||||
/* Condition; not anchored if no second branch */
|
||||
|
||||
else if (op == OP_COND)
|
||||
{
|
||||
if (scode[GET(scode,1)] != OP_ALT) return FALSE;
|
||||
if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE;
|
||||
}
|
||||
|
||||
/* Atomic groups */
|
||||
|
||||
else if (op == OP_ONCE || op == OP_ONCE_NC)
|
||||
|
||||
@@ -10,7 +10,13 @@ config.h by the "configure" script. In environments that use CMake,
|
||||
config-cmake.in is converted into config.h. If you are going to build PCRE "by
|
||||
hand" without using "configure" or CMake, you should copy the distributed
|
||||
config.h.generic to config.h, and edit the macro definitions to be the way you
|
||||
need them.
|
||||
need them. You must then add -DHAVE_CONFIG_H to all of your compile commands,
|
||||
so that config.h is included at the start of every source.
|
||||
|
||||
Alternatively, you can avoid editing by using -D on the compiler command line
|
||||
to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H,
|
||||
but if you do, default values will be taken from config.h for non-boolean
|
||||
macros that are not defined on the command line.
|
||||
|
||||
Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE8 should either be defined
|
||||
(conventionally to 1) for TRUE, and not defined at all for FALSE. All such
|
||||
@@ -283,7 +289,7 @@ sure both macros are undefined; an emulation function will then be used. */
|
||||
#define PACKAGE_NAME "PCRE"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "PCRE 8.40"
|
||||
#define PACKAGE_STRING "PCRE 8.43"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "pcre"
|
||||
@@ -292,7 +298,7 @@ sure both macros are undefined; an emulation function will then be used. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "8.40"
|
||||
#define PACKAGE_VERSION "8.43"
|
||||
|
||||
/* The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
|
||||
parentheses (of any kind) in a pattern. This limits the amount of system
|
||||
@@ -394,7 +400,7 @@ sure both macros are undefined; an emulation function will then be used. */
|
||||
/* #undef SUPPORT_VALGRIND */
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "8.40"
|
||||
#define VERSION "8.43"
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
@@ -9001,7 +9001,7 @@ if (exact > 1)
|
||||
#ifdef SUPPORT_UTF
|
||||
&& !common->utf
|
||||
#endif
|
||||
)
|
||||
&& type != OP_ANYNL && type != OP_EXTUNI)
|
||||
{
|
||||
OP2(SLJIT_ADD, TMP1, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(exact));
|
||||
add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_GREATER, TMP1, 0, STR_END, 0));
|
||||
|
||||
@@ -187,6 +187,21 @@ void ExpireCacheTest::testExpireWithHas()
|
||||
}
|
||||
|
||||
|
||||
void ExpireCacheTest::testAccessExpireGet()
|
||||
{
|
||||
AccessExpireCache<int, int> aCache(DURSLEEP);
|
||||
aCache.add(1, 2); // 1
|
||||
assertTrue (aCache.has(1));
|
||||
SharedPtr<int> tmp = aCache.get(1);
|
||||
assertTrue (!tmp.isNull());
|
||||
assertTrue (*tmp == 2);
|
||||
assertTrue (aCache.size() == 1);
|
||||
Thread::sleep(DURWAIT);
|
||||
tmp = aCache.get(1);
|
||||
assertTrue (tmp.isNull());
|
||||
}
|
||||
|
||||
|
||||
void ExpireCacheTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -207,6 +222,7 @@ CppUnit::Test* ExpireCacheTest::suite()
|
||||
CppUnit_addTest(pSuite, ExpireCacheTest, testDuplicateAdd);
|
||||
CppUnit_addTest(pSuite, ExpireCacheTest, testAccessExpireN);
|
||||
CppUnit_addTest(pSuite, ExpireCacheTest, testExpireWithHas);
|
||||
CppUnit_addTest(pSuite, ExpireCacheTest, testAccessExpireGet);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ public:
|
||||
void testExpireN();
|
||||
void testAccessExpireN();
|
||||
void testExpireWithHas();
|
||||
void testAccessExpireGet();
|
||||
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
@@ -303,6 +303,20 @@ void ExpireLRUCacheTest::testDuplicateAdd()
|
||||
}
|
||||
|
||||
|
||||
void ExpireLRUCacheTest::testAccessExpireGet()
|
||||
{
|
||||
ExpireLRUCache<int, int> aCache(3, DURSLEEP);
|
||||
aCache.add(1, 2); // 1
|
||||
assertTrue (aCache.has(1));
|
||||
SharedPtr<int> tmp = aCache.get(1);
|
||||
assertTrue (!tmp.isNull());
|
||||
assertTrue (*tmp == 2);
|
||||
Thread::sleep(DURWAIT);
|
||||
tmp = aCache.get(1);
|
||||
assertTrue (tmp.isNull());
|
||||
}
|
||||
|
||||
|
||||
void ExpireLRUCacheTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -326,6 +340,7 @@ CppUnit::Test* ExpireLRUCacheTest::suite()
|
||||
CppUnit_addTest(pSuite, ExpireLRUCacheTest, testCacheSize2);
|
||||
CppUnit_addTest(pSuite, ExpireLRUCacheTest, testCacheSizeN);
|
||||
CppUnit_addTest(pSuite, ExpireLRUCacheTest, testDuplicateAdd);
|
||||
CppUnit_addTest(pSuite, ExpireLRUCacheTest, testAccessExpireGet);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ public:
|
||||
void testCacheSize2();
|
||||
void testCacheSizeN();
|
||||
void testDuplicateAdd();
|
||||
|
||||
void testAccessExpireGet();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
@@ -7,6 +7,12 @@ POCO_SOURCES(SRCS pdjson src/pdjson.c)
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(JSON ${SRCS} )
|
||||
add_library(Poco::JSON ALIAS JSON)
|
||||
set_target_properties(JSON
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(MongoDB ${SRCS} )
|
||||
add_library(Poco::MongoDB ALIAS MongoDB)
|
||||
set_target_properties(MongoDB
|
||||
|
||||
@@ -50,7 +50,7 @@ Binary::Binary(const std::string& data, unsigned char subtype):
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary::Binary(const void* data, Poco::Int32 size, unsigned char subtype):
|
||||
_buffer(reinterpret_cast<const unsigned char*>(data), size),
|
||||
_subtype(subtype)
|
||||
@@ -69,6 +69,7 @@ std::string Binary::toString(int /*indent*/) const
|
||||
Base64Encoder encoder(oss);
|
||||
MemoryInputStream mis((const char*) _buffer.begin(), _buffer.size());
|
||||
StreamCopier::copyStream(mis, encoder);
|
||||
encoder.close();
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(Net ${SRCS} )
|
||||
add_library(Poco::Net ALIAS Net)
|
||||
set_target_properties( Net
|
||||
@@ -21,7 +27,7 @@ if(WIN32)
|
||||
target_link_libraries(Net PUBLIC "iphlpapi")
|
||||
if(WINCE)
|
||||
target_link_libraries(Net PUBLIC "ws2")
|
||||
else()
|
||||
else()
|
||||
target_link_libraries(Net PUBLIC "ws2_32")
|
||||
endif()
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ objects = \
|
||||
RemoteSyslogChannel RemoteSyslogListener SMTPChannel \
|
||||
WebSocket WebSocketImpl \
|
||||
OAuth10Credentials OAuth20Credentials \
|
||||
PollSet UDPClient UDPServerParams
|
||||
PollSet UDPClient UDPServerParams \
|
||||
NTLMCredentials SSPINTLMCredentials HTTPNTLMCredentials
|
||||
|
||||
target = PocoNet
|
||||
target_version = $(LIBVERSION)
|
||||
|
||||
@@ -279,223 +279,229 @@
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Net.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetException.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h"/>
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Socket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DNS.h" />
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h" />
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h" />
|
||||
<ClInclude Include="include\Poco\Net\Net.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetException.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h" />
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\Socket.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocket.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\DialogSocket.cpp"/>
|
||||
<ClCompile Include="src\DNS.cpp"/>
|
||||
<ClCompile Include="src\FilePartSource.cpp"/>
|
||||
<ClCompile Include="src\FTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\HostEntry.cpp"/>
|
||||
<ClCompile Include="src\HTMLForm.cpp"/>
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp"/>
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPCookie.cpp"/>
|
||||
<ClCompile Include="src\HTTPCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPIOStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPMessage.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServer.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp"/>
|
||||
<ClCompile Include="src\HTTPStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\ICMPClient.cpp"/>
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacket.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocket.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp"/>
|
||||
<ClCompile Include="src\IPAddress.cpp"/>
|
||||
<ClCompile Include="src\IPAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\MailMessage.cpp"/>
|
||||
<ClCompile Include="src\MailRecipient.cpp"/>
|
||||
<ClCompile Include="src\MailStream.cpp"/>
|
||||
<ClCompile Include="src\MediaType.cpp"/>
|
||||
<ClCompile Include="src\MessageHeader.cpp"/>
|
||||
<ClCompile Include="src\MulticastSocket.cpp"/>
|
||||
<ClCompile Include="src\MultipartReader.cpp"/>
|
||||
<ClCompile Include="src\MultipartWriter.cpp"/>
|
||||
<ClCompile Include="src\NameValueCollection.cpp"/>
|
||||
<ClCompile Include="src\Net.cpp"/>
|
||||
<ClCompile Include="src\NetException.cpp"/>
|
||||
<ClCompile Include="src\NetworkInterface.cpp"/>
|
||||
<ClCompile Include="src\NTPClient.cpp"/>
|
||||
<ClCompile Include="src\NTPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\NTPPacket.cpp"/>
|
||||
<ClCompile Include="src\NullPartHandler.cpp"/>
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp"/>
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp"/>
|
||||
<ClCompile Include="src\PartHandler.cpp"/>
|
||||
<ClCompile Include="src\PartSource.cpp"/>
|
||||
<ClCompile Include="src\PartStore.cpp"/>
|
||||
<ClCompile Include="src\PollSet.cpp"/>
|
||||
<ClCompile Include="src\POP3ClientSession.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp"/>
|
||||
<ClCompile Include="src\RawSocket.cpp"/>
|
||||
<ClCompile Include="src\RawSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp"/>
|
||||
<ClCompile Include="src\ServerSocket.cpp"/>
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SMTPChannel.cpp"/>
|
||||
<ClCompile Include="src\SMTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\Socket.cpp"/>
|
||||
<ClCompile Include="src\SocketAddress.cpp"/>
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketNotification.cpp"/>
|
||||
<ClCompile Include="src\SocketNotifier.cpp"/>
|
||||
<ClCompile Include="src\SocketReactor.cpp"/>
|
||||
<ClCompile Include="src\SocketStream.cpp"/>
|
||||
<ClCompile Include="src\StreamSocket.cpp"/>
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\StringPartSource.cpp"/>
|
||||
<ClCompile Include="src\TCPServer.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp"/>
|
||||
<ClCompile Include="src\TCPServerParams.cpp"/>
|
||||
<ClCompile Include="src\UDPClient.cpp"/>
|
||||
<ClCompile Include="src\UDPServerParams.cpp"/>
|
||||
<ClCompile Include="src\WebSocket.cpp"/>
|
||||
<ClCompile Include="src\WebSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\DatagramSocket.cpp" />
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp" />
|
||||
<ClCompile Include="src\DialogSocket.cpp" />
|
||||
<ClCompile Include="src\DNS.cpp" />
|
||||
<ClCompile Include="src\FilePartSource.cpp" />
|
||||
<ClCompile Include="src\FTPClientSession.cpp" />
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\HostEntry.cpp" />
|
||||
<ClCompile Include="src\HTMLForm.cpp" />
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp" />
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp" />
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp" />
|
||||
<ClCompile Include="src\HTTPClientSession.cpp" />
|
||||
<ClCompile Include="src\HTTPCookie.cpp" />
|
||||
<ClCompile Include="src\HTTPCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp" />
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp" />
|
||||
<ClCompile Include="src\HTTPIOStream.cpp" />
|
||||
<ClCompile Include="src\HTTPMessage.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServer.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPServerParams.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp" />
|
||||
<ClCompile Include="src\HTTPStream.cpp" />
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\ICMPClient.cpp" />
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp" />
|
||||
<ClCompile Include="src\ICMPPacket.cpp" />
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPSocket.cpp" />
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp" />
|
||||
<ClCompile Include="src\IPAddress.cpp" />
|
||||
<ClCompile Include="src\IPAddressImpl.cpp" />
|
||||
<ClCompile Include="src\MailMessage.cpp" />
|
||||
<ClCompile Include="src\MailRecipient.cpp" />
|
||||
<ClCompile Include="src\MailStream.cpp" />
|
||||
<ClCompile Include="src\MediaType.cpp" />
|
||||
<ClCompile Include="src\MessageHeader.cpp" />
|
||||
<ClCompile Include="src\MulticastSocket.cpp" />
|
||||
<ClCompile Include="src\MultipartReader.cpp" />
|
||||
<ClCompile Include="src\MultipartWriter.cpp" />
|
||||
<ClCompile Include="src\NameValueCollection.cpp" />
|
||||
<ClCompile Include="src\Net.cpp" />
|
||||
<ClCompile Include="src\NetException.cpp" />
|
||||
<ClCompile Include="src\NetworkInterface.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\NTPClient.cpp" />
|
||||
<ClCompile Include="src\NTPEventArgs.cpp" />
|
||||
<ClCompile Include="src\NTPPacket.cpp" />
|
||||
<ClCompile Include="src\NullPartHandler.cpp" />
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp" />
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp" />
|
||||
<ClCompile Include="src\PartHandler.cpp" />
|
||||
<ClCompile Include="src\PartSource.cpp" />
|
||||
<ClCompile Include="src\PartStore.cpp" />
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\POP3ClientSession.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp" />
|
||||
<ClCompile Include="src\RawSocket.cpp" />
|
||||
<ClCompile Include="src\RawSocketImpl.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp" />
|
||||
<ClCompile Include="src\ServerSocket.cpp" />
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp" />
|
||||
<ClCompile Include="src\SMTPChannel.cpp" />
|
||||
<ClCompile Include="src\SMTPClientSession.cpp" />
|
||||
<ClCompile Include="src\Socket.cpp" />
|
||||
<ClCompile Include="src\SocketAddress.cpp" />
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp" />
|
||||
<ClCompile Include="src\SocketImpl.cpp" />
|
||||
<ClCompile Include="src\SocketNotification.cpp" />
|
||||
<ClCompile Include="src\SocketNotifier.cpp" />
|
||||
<ClCompile Include="src\SocketReactor.cpp" />
|
||||
<ClCompile Include="src\SocketStream.cpp" />
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\StreamSocket.cpp" />
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp" />
|
||||
<ClCompile Include="src\StringPartSource.cpp" />
|
||||
<ClCompile Include="src\TCPServer.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnection.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp" />
|
||||
<ClCompile Include="src\TCPServerParams.cpp" />
|
||||
<ClCompile Include="src\UDPClient.cpp" />
|
||||
<ClCompile Include="src\UDPServerParams.cpp" />
|
||||
<ClCompile Include="src\WebSocket.cpp" />
|
||||
<ClCompile Include="src\WebSocketImpl.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc">
|
||||
|
||||
@@ -154,6 +154,15 @@
|
||||
<Filter Include="UDP\Header Files">
|
||||
<UniqueIdentifier>{3543e216-de43-4d98-88cd-f0a2da4d6925}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM">
|
||||
<UniqueIdentifier>{046c78a1-263f-4337-b6b1-ff9ec2306f3a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Header Files">
|
||||
<UniqueIdentifier>{ca314a28-271d-434d-a2d1-ff0a4b7985bc}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Source Files">
|
||||
<UniqueIdentifier>{3142a0d0-e2ef-4abd-b446-4c5a5bb5626a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h">
|
||||
@@ -492,6 +501,16 @@
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h">
|
||||
<Filter>UDP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h">
|
||||
<Filter>HTTP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\DNS.cpp">
|
||||
@@ -797,6 +816,16 @@
|
||||
<ClCompile Include="src\UDPServerParams.cpp">
|
||||
<Filter>UDP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp">
|
||||
<Filter>HTTP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\NTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc" />
|
||||
|
||||
@@ -279,223 +279,229 @@
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Net.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetException.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h"/>
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Socket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DNS.h" />
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h" />
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h" />
|
||||
<ClInclude Include="include\Poco\Net\Net.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetException.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h" />
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\Socket.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocket.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\DialogSocket.cpp"/>
|
||||
<ClCompile Include="src\DNS.cpp"/>
|
||||
<ClCompile Include="src\FilePartSource.cpp"/>
|
||||
<ClCompile Include="src\FTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\HostEntry.cpp"/>
|
||||
<ClCompile Include="src\HTMLForm.cpp"/>
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp"/>
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPCookie.cpp"/>
|
||||
<ClCompile Include="src\HTTPCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPIOStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPMessage.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServer.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp"/>
|
||||
<ClCompile Include="src\HTTPStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\ICMPClient.cpp"/>
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacket.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocket.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp"/>
|
||||
<ClCompile Include="src\IPAddress.cpp"/>
|
||||
<ClCompile Include="src\IPAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\MailMessage.cpp"/>
|
||||
<ClCompile Include="src\MailRecipient.cpp"/>
|
||||
<ClCompile Include="src\MailStream.cpp"/>
|
||||
<ClCompile Include="src\MediaType.cpp"/>
|
||||
<ClCompile Include="src\MessageHeader.cpp"/>
|
||||
<ClCompile Include="src\MulticastSocket.cpp"/>
|
||||
<ClCompile Include="src\MultipartReader.cpp"/>
|
||||
<ClCompile Include="src\MultipartWriter.cpp"/>
|
||||
<ClCompile Include="src\NameValueCollection.cpp"/>
|
||||
<ClCompile Include="src\Net.cpp"/>
|
||||
<ClCompile Include="src\NetException.cpp"/>
|
||||
<ClCompile Include="src\NetworkInterface.cpp"/>
|
||||
<ClCompile Include="src\NTPClient.cpp"/>
|
||||
<ClCompile Include="src\NTPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\NTPPacket.cpp"/>
|
||||
<ClCompile Include="src\NullPartHandler.cpp"/>
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp"/>
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp"/>
|
||||
<ClCompile Include="src\PartHandler.cpp"/>
|
||||
<ClCompile Include="src\PartSource.cpp"/>
|
||||
<ClCompile Include="src\PartStore.cpp"/>
|
||||
<ClCompile Include="src\PollSet.cpp"/>
|
||||
<ClCompile Include="src\POP3ClientSession.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp"/>
|
||||
<ClCompile Include="src\RawSocket.cpp"/>
|
||||
<ClCompile Include="src\RawSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp"/>
|
||||
<ClCompile Include="src\ServerSocket.cpp"/>
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SMTPChannel.cpp"/>
|
||||
<ClCompile Include="src\SMTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\Socket.cpp"/>
|
||||
<ClCompile Include="src\SocketAddress.cpp"/>
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketNotification.cpp"/>
|
||||
<ClCompile Include="src\SocketNotifier.cpp"/>
|
||||
<ClCompile Include="src\SocketReactor.cpp"/>
|
||||
<ClCompile Include="src\SocketStream.cpp"/>
|
||||
<ClCompile Include="src\StreamSocket.cpp"/>
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\StringPartSource.cpp"/>
|
||||
<ClCompile Include="src\TCPServer.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp"/>
|
||||
<ClCompile Include="src\TCPServerParams.cpp"/>
|
||||
<ClCompile Include="src\UDPClient.cpp"/>
|
||||
<ClCompile Include="src\UDPServerParams.cpp"/>
|
||||
<ClCompile Include="src\WebSocket.cpp"/>
|
||||
<ClCompile Include="src\WebSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\DatagramSocket.cpp" />
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp" />
|
||||
<ClCompile Include="src\DialogSocket.cpp" />
|
||||
<ClCompile Include="src\DNS.cpp" />
|
||||
<ClCompile Include="src\FilePartSource.cpp" />
|
||||
<ClCompile Include="src\FTPClientSession.cpp" />
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\HostEntry.cpp" />
|
||||
<ClCompile Include="src\HTMLForm.cpp" />
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp" />
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp" />
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp" />
|
||||
<ClCompile Include="src\HTTPClientSession.cpp" />
|
||||
<ClCompile Include="src\HTTPCookie.cpp" />
|
||||
<ClCompile Include="src\HTTPCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp" />
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp" />
|
||||
<ClCompile Include="src\HTTPIOStream.cpp" />
|
||||
<ClCompile Include="src\HTTPMessage.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServer.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPServerParams.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp" />
|
||||
<ClCompile Include="src\HTTPStream.cpp" />
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\ICMPClient.cpp" />
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp" />
|
||||
<ClCompile Include="src\ICMPPacket.cpp" />
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPSocket.cpp" />
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp" />
|
||||
<ClCompile Include="src\IPAddress.cpp" />
|
||||
<ClCompile Include="src\IPAddressImpl.cpp" />
|
||||
<ClCompile Include="src\MailMessage.cpp" />
|
||||
<ClCompile Include="src\MailRecipient.cpp" />
|
||||
<ClCompile Include="src\MailStream.cpp" />
|
||||
<ClCompile Include="src\MediaType.cpp" />
|
||||
<ClCompile Include="src\MessageHeader.cpp" />
|
||||
<ClCompile Include="src\MulticastSocket.cpp" />
|
||||
<ClCompile Include="src\MultipartReader.cpp" />
|
||||
<ClCompile Include="src\MultipartWriter.cpp" />
|
||||
<ClCompile Include="src\NameValueCollection.cpp" />
|
||||
<ClCompile Include="src\Net.cpp" />
|
||||
<ClCompile Include="src\NetException.cpp" />
|
||||
<ClCompile Include="src\NetworkInterface.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\NTPClient.cpp" />
|
||||
<ClCompile Include="src\NTPEventArgs.cpp" />
|
||||
<ClCompile Include="src\NTPPacket.cpp" />
|
||||
<ClCompile Include="src\NullPartHandler.cpp" />
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp" />
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp" />
|
||||
<ClCompile Include="src\PartHandler.cpp" />
|
||||
<ClCompile Include="src\PartSource.cpp" />
|
||||
<ClCompile Include="src\PartStore.cpp" />
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\POP3ClientSession.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp" />
|
||||
<ClCompile Include="src\RawSocket.cpp" />
|
||||
<ClCompile Include="src\RawSocketImpl.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp" />
|
||||
<ClCompile Include="src\ServerSocket.cpp" />
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp" />
|
||||
<ClCompile Include="src\SMTPChannel.cpp" />
|
||||
<ClCompile Include="src\SMTPClientSession.cpp" />
|
||||
<ClCompile Include="src\Socket.cpp" />
|
||||
<ClCompile Include="src\SocketAddress.cpp" />
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp" />
|
||||
<ClCompile Include="src\SocketImpl.cpp" />
|
||||
<ClCompile Include="src\SocketNotification.cpp" />
|
||||
<ClCompile Include="src\SocketNotifier.cpp" />
|
||||
<ClCompile Include="src\SocketReactor.cpp" />
|
||||
<ClCompile Include="src\SocketStream.cpp" />
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\StreamSocket.cpp" />
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp" />
|
||||
<ClCompile Include="src\StringPartSource.cpp" />
|
||||
<ClCompile Include="src\TCPServer.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnection.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp" />
|
||||
<ClCompile Include="src\TCPServerParams.cpp" />
|
||||
<ClCompile Include="src\UDPClient.cpp" />
|
||||
<ClCompile Include="src\UDPServerParams.cpp" />
|
||||
<ClCompile Include="src\WebSocket.cpp" />
|
||||
<ClCompile Include="src\WebSocketImpl.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc">
|
||||
|
||||
@@ -154,6 +154,15 @@
|
||||
<Filter Include="UDP\Header Files">
|
||||
<UniqueIdentifier>{2f7bbb60-4d9d-4671-b5cc-f1b6164f745b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM">
|
||||
<UniqueIdentifier>{ecca1179-127e-4fa2-8bbf-255f58439ff9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Header Files">
|
||||
<UniqueIdentifier>{f58c8c2d-a26e-4be9-9ec2-dcd11366c237}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Source Files">
|
||||
<UniqueIdentifier>{793f44fe-1301-4744-985c-a371eea90422}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h">
|
||||
@@ -492,6 +501,16 @@
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h">
|
||||
<Filter>UDP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h">
|
||||
<Filter>HTTP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\DNS.cpp">
|
||||
@@ -797,6 +816,16 @@
|
||||
<ClCompile Include="src\UDPServerParams.cpp">
|
||||
<Filter>UDP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp">
|
||||
<Filter>HTTP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\NTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc" />
|
||||
|
||||
@@ -277,223 +277,229 @@
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Net.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetException.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h"/>
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Socket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DNS.h" />
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h" />
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h" />
|
||||
<ClInclude Include="include\Poco\Net\Net.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetException.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h" />
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\Socket.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocket.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\DialogSocket.cpp"/>
|
||||
<ClCompile Include="src\DNS.cpp"/>
|
||||
<ClCompile Include="src\FilePartSource.cpp"/>
|
||||
<ClCompile Include="src\FTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\HostEntry.cpp"/>
|
||||
<ClCompile Include="src\HTMLForm.cpp"/>
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp"/>
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPCookie.cpp"/>
|
||||
<ClCompile Include="src\HTTPCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPIOStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPMessage.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServer.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp"/>
|
||||
<ClCompile Include="src\HTTPStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\ICMPClient.cpp"/>
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacket.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocket.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp"/>
|
||||
<ClCompile Include="src\IPAddress.cpp"/>
|
||||
<ClCompile Include="src\IPAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\MailMessage.cpp"/>
|
||||
<ClCompile Include="src\MailRecipient.cpp"/>
|
||||
<ClCompile Include="src\MailStream.cpp"/>
|
||||
<ClCompile Include="src\MediaType.cpp"/>
|
||||
<ClCompile Include="src\MessageHeader.cpp"/>
|
||||
<ClCompile Include="src\MulticastSocket.cpp"/>
|
||||
<ClCompile Include="src\MultipartReader.cpp"/>
|
||||
<ClCompile Include="src\MultipartWriter.cpp"/>
|
||||
<ClCompile Include="src\NameValueCollection.cpp"/>
|
||||
<ClCompile Include="src\Net.cpp"/>
|
||||
<ClCompile Include="src\NetException.cpp"/>
|
||||
<ClCompile Include="src\NetworkInterface.cpp"/>
|
||||
<ClCompile Include="src\NTPClient.cpp"/>
|
||||
<ClCompile Include="src\NTPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\NTPPacket.cpp"/>
|
||||
<ClCompile Include="src\NullPartHandler.cpp"/>
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp"/>
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp"/>
|
||||
<ClCompile Include="src\PartHandler.cpp"/>
|
||||
<ClCompile Include="src\PartSource.cpp"/>
|
||||
<ClCompile Include="src\PartStore.cpp"/>
|
||||
<ClCompile Include="src\PollSet.cpp"/>
|
||||
<ClCompile Include="src\POP3ClientSession.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp"/>
|
||||
<ClCompile Include="src\RawSocket.cpp"/>
|
||||
<ClCompile Include="src\RawSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp"/>
|
||||
<ClCompile Include="src\ServerSocket.cpp"/>
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SMTPChannel.cpp"/>
|
||||
<ClCompile Include="src\SMTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\Socket.cpp"/>
|
||||
<ClCompile Include="src\SocketAddress.cpp"/>
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketNotification.cpp"/>
|
||||
<ClCompile Include="src\SocketNotifier.cpp"/>
|
||||
<ClCompile Include="src\SocketReactor.cpp"/>
|
||||
<ClCompile Include="src\SocketStream.cpp"/>
|
||||
<ClCompile Include="src\StreamSocket.cpp"/>
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\StringPartSource.cpp"/>
|
||||
<ClCompile Include="src\TCPServer.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp"/>
|
||||
<ClCompile Include="src\TCPServerParams.cpp"/>
|
||||
<ClCompile Include="src\UDPClient.cpp"/>
|
||||
<ClCompile Include="src\UDPServerParams.cpp"/>
|
||||
<ClCompile Include="src\WebSocket.cpp"/>
|
||||
<ClCompile Include="src\WebSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\DatagramSocket.cpp" />
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp" />
|
||||
<ClCompile Include="src\DialogSocket.cpp" />
|
||||
<ClCompile Include="src\DNS.cpp" />
|
||||
<ClCompile Include="src\FilePartSource.cpp" />
|
||||
<ClCompile Include="src\FTPClientSession.cpp" />
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\HostEntry.cpp" />
|
||||
<ClCompile Include="src\HTMLForm.cpp" />
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp" />
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp" />
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp" />
|
||||
<ClCompile Include="src\HTTPClientSession.cpp" />
|
||||
<ClCompile Include="src\HTTPCookie.cpp" />
|
||||
<ClCompile Include="src\HTTPCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp" />
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp" />
|
||||
<ClCompile Include="src\HTTPIOStream.cpp" />
|
||||
<ClCompile Include="src\HTTPMessage.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServer.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPServerParams.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp" />
|
||||
<ClCompile Include="src\HTTPStream.cpp" />
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\ICMPClient.cpp" />
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp" />
|
||||
<ClCompile Include="src\ICMPPacket.cpp" />
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPSocket.cpp" />
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp" />
|
||||
<ClCompile Include="src\IPAddress.cpp" />
|
||||
<ClCompile Include="src\IPAddressImpl.cpp" />
|
||||
<ClCompile Include="src\MailMessage.cpp" />
|
||||
<ClCompile Include="src\MailRecipient.cpp" />
|
||||
<ClCompile Include="src\MailStream.cpp" />
|
||||
<ClCompile Include="src\MediaType.cpp" />
|
||||
<ClCompile Include="src\MessageHeader.cpp" />
|
||||
<ClCompile Include="src\MulticastSocket.cpp" />
|
||||
<ClCompile Include="src\MultipartReader.cpp" />
|
||||
<ClCompile Include="src\MultipartWriter.cpp" />
|
||||
<ClCompile Include="src\NameValueCollection.cpp" />
|
||||
<ClCompile Include="src\Net.cpp" />
|
||||
<ClCompile Include="src\NetException.cpp" />
|
||||
<ClCompile Include="src\NetworkInterface.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\NTPClient.cpp" />
|
||||
<ClCompile Include="src\NTPEventArgs.cpp" />
|
||||
<ClCompile Include="src\NTPPacket.cpp" />
|
||||
<ClCompile Include="src\NullPartHandler.cpp" />
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp" />
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp" />
|
||||
<ClCompile Include="src\PartHandler.cpp" />
|
||||
<ClCompile Include="src\PartSource.cpp" />
|
||||
<ClCompile Include="src\PartStore.cpp" />
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\POP3ClientSession.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp" />
|
||||
<ClCompile Include="src\RawSocket.cpp" />
|
||||
<ClCompile Include="src\RawSocketImpl.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp" />
|
||||
<ClCompile Include="src\ServerSocket.cpp" />
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp" />
|
||||
<ClCompile Include="src\SMTPChannel.cpp" />
|
||||
<ClCompile Include="src\SMTPClientSession.cpp" />
|
||||
<ClCompile Include="src\Socket.cpp" />
|
||||
<ClCompile Include="src\SocketAddress.cpp" />
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp" />
|
||||
<ClCompile Include="src\SocketImpl.cpp" />
|
||||
<ClCompile Include="src\SocketNotification.cpp" />
|
||||
<ClCompile Include="src\SocketNotifier.cpp" />
|
||||
<ClCompile Include="src\SocketReactor.cpp" />
|
||||
<ClCompile Include="src\SocketStream.cpp" />
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\StreamSocket.cpp" />
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp" />
|
||||
<ClCompile Include="src\StringPartSource.cpp" />
|
||||
<ClCompile Include="src\TCPServer.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnection.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp" />
|
||||
<ClCompile Include="src\TCPServerParams.cpp" />
|
||||
<ClCompile Include="src\UDPClient.cpp" />
|
||||
<ClCompile Include="src\UDPServerParams.cpp" />
|
||||
<ClCompile Include="src\WebSocket.cpp" />
|
||||
<ClCompile Include="src\WebSocketImpl.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="NetCore">
|
||||
<UniqueIdentifier>{c94a716b-53e1-4386-9dd9-c34b92252f38}</UniqueIdentifier>
|
||||
<UniqueIdentifier>{c94a716b-53e1-4386-9dd9-c34b92252f38}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NetCore\Header Files">
|
||||
<UniqueIdentifier>{c19f980f-ac2d-438a-bd97-e0b5e5fa3fab}</UniqueIdentifier>
|
||||
@@ -154,6 +154,15 @@
|
||||
<Filter Include="UDP\Header Files">
|
||||
<UniqueIdentifier>{828714c4-311d-4f1d-a8b7-055e63091653}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM">
|
||||
<UniqueIdentifier>{d3a8a0c8-9a27-451c-bfcd-6b7e4073e27b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Header Files">
|
||||
<UniqueIdentifier>{3e88da3b-8e4f-46f9-b3c2-1cec6ea4091d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Source Files">
|
||||
<UniqueIdentifier>{c70b5e46-03ca-49e3-885d-87dadff67111}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h">
|
||||
@@ -492,6 +501,16 @@
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h">
|
||||
<Filter>UDP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h">
|
||||
<Filter>HTTP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\DNS.cpp">
|
||||
@@ -797,6 +816,16 @@
|
||||
<ClCompile Include="src\UDPServerParams.cpp">
|
||||
<Filter>UDP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp">
|
||||
<Filter>HTTP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc" />
|
||||
|
||||
@@ -278,223 +278,229 @@
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h"/>
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Net.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetException.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h"/>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h"/>
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h"/>
|
||||
<ClInclude Include="include\Poco\Net\Socket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/>
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h"/>
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DatagramSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\DialogSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\DNS.h" />
|
||||
<ClInclude Include="include\Poco\Net\FilePartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HostEntry.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTMLForm.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPAuthenticationParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBasicStreamBuf.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPBufferAllocator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPChunkedStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCookie.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPDigestCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPFixedLengthStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPHeaderStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPIOStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPRequestHandlerFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequest.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerRequestImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponse.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerResponseImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPServerSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPSessionInstantiator.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPStreamFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPPacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\ICMPv4PacketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\IPAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailMessage.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailRecipient.h" />
|
||||
<ClInclude Include="include\Poco\Net\MailStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\MediaType.h" />
|
||||
<ClInclude Include="include\Poco\Net\MessageHeader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MulticastSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultipartWriter.h" />
|
||||
<ClInclude Include="include\Poco\Net\MultiSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\NameValueCollection.h" />
|
||||
<ClInclude Include="include\Poco\Net\Net.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetException.h" />
|
||||
<ClInclude Include="include\Poco\Net\NetworkInterface.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPEventArgs.h" />
|
||||
<ClInclude Include="include\Poco\Net\NTPPacket.h" />
|
||||
<ClInclude Include="include\Poco\Net\NullPartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\PartStore.h" />
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\POP3ClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableDecoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\QuotedPrintableEncoder.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\RawSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\RemoteSyslogListener.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\ServerSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SingleSocketPoller.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPChannel.h" />
|
||||
<ClInclude Include="include\Poco\Net\SMTPClientSession.h" />
|
||||
<ClInclude Include="include\Poco\Net\Socket.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAcceptor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddress.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketAddressImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketConnector.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketDefs.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotification.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketNotifier.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketReactor.h" />
|
||||
<ClInclude Include="include\Poco\Net\SocketStream.h" />
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\StreamSocketImpl.h" />
|
||||
<ClInclude Include="include\Poco\Net\StringPartSource.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnection.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerDispatcher.h" />
|
||||
<ClInclude Include="include\Poco\Net\TCPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPClient.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPHandler.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServer.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPServerParams.h" />
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocket.h" />
|
||||
<ClInclude Include="include\Poco\Net\WebSocketImpl.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocket.cpp"/>
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\DialogSocket.cpp"/>
|
||||
<ClCompile Include="src\DNS.cpp"/>
|
||||
<ClCompile Include="src\FilePartSource.cpp"/>
|
||||
<ClCompile Include="src\FTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\HostEntry.cpp"/>
|
||||
<ClCompile Include="src\HTMLForm.cpp"/>
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp"/>
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPCookie.cpp"/>
|
||||
<ClCompile Include="src\HTTPCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp"/>
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPIOStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPMessage.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp"/>
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServer.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerParams.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp"/>
|
||||
<ClCompile Include="src\HTTPServerSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSession.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp"/>
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp"/>
|
||||
<ClCompile Include="src\HTTPStream.cpp"/>
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp"/>
|
||||
<ClCompile Include="src\ICMPClient.cpp"/>
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacket.cpp"/>
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocket.cpp"/>
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp"/>
|
||||
<ClCompile Include="src\IPAddress.cpp"/>
|
||||
<ClCompile Include="src\IPAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\MailMessage.cpp"/>
|
||||
<ClCompile Include="src\MailRecipient.cpp"/>
|
||||
<ClCompile Include="src\MailStream.cpp"/>
|
||||
<ClCompile Include="src\MediaType.cpp"/>
|
||||
<ClCompile Include="src\MessageHeader.cpp"/>
|
||||
<ClCompile Include="src\MulticastSocket.cpp"/>
|
||||
<ClCompile Include="src\MultipartReader.cpp"/>
|
||||
<ClCompile Include="src\MultipartWriter.cpp"/>
|
||||
<ClCompile Include="src\NameValueCollection.cpp"/>
|
||||
<ClCompile Include="src\Net.cpp"/>
|
||||
<ClCompile Include="src\NetException.cpp"/>
|
||||
<ClCompile Include="src\NetworkInterface.cpp"/>
|
||||
<ClCompile Include="src\NTPClient.cpp"/>
|
||||
<ClCompile Include="src\NTPEventArgs.cpp"/>
|
||||
<ClCompile Include="src\NTPPacket.cpp"/>
|
||||
<ClCompile Include="src\NullPartHandler.cpp"/>
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp"/>
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp"/>
|
||||
<ClCompile Include="src\PartHandler.cpp"/>
|
||||
<ClCompile Include="src\PartSource.cpp"/>
|
||||
<ClCompile Include="src\PartStore.cpp"/>
|
||||
<ClCompile Include="src\PollSet.cpp"/>
|
||||
<ClCompile Include="src\POP3ClientSession.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp"/>
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp"/>
|
||||
<ClCompile Include="src\RawSocket.cpp"/>
|
||||
<ClCompile Include="src\RawSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp"/>
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp"/>
|
||||
<ClCompile Include="src\ServerSocket.cpp"/>
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SMTPChannel.cpp"/>
|
||||
<ClCompile Include="src\SMTPClientSession.cpp"/>
|
||||
<ClCompile Include="src\Socket.cpp"/>
|
||||
<ClCompile Include="src\SocketAddress.cpp"/>
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketImpl.cpp"/>
|
||||
<ClCompile Include="src\SocketNotification.cpp"/>
|
||||
<ClCompile Include="src\SocketNotifier.cpp"/>
|
||||
<ClCompile Include="src\SocketReactor.cpp"/>
|
||||
<ClCompile Include="src\SocketStream.cpp"/>
|
||||
<ClCompile Include="src\StreamSocket.cpp"/>
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\StringPartSource.cpp"/>
|
||||
<ClCompile Include="src\TCPServer.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnection.cpp"/>
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp"/>
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp"/>
|
||||
<ClCompile Include="src\TCPServerParams.cpp"/>
|
||||
<ClCompile Include="src\UDPClient.cpp"/>
|
||||
<ClCompile Include="src\UDPServerParams.cpp"/>
|
||||
<ClCompile Include="src\WebSocket.cpp"/>
|
||||
<ClCompile Include="src\WebSocketImpl.cpp"/>
|
||||
<ClCompile Include="src\AbstractHTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\DatagramSocket.cpp" />
|
||||
<ClCompile Include="src\DatagramSocketImpl.cpp" />
|
||||
<ClCompile Include="src\DialogSocket.cpp" />
|
||||
<ClCompile Include="src\DNS.cpp" />
|
||||
<ClCompile Include="src\FilePartSource.cpp" />
|
||||
<ClCompile Include="src\FTPClientSession.cpp" />
|
||||
<ClCompile Include="src\FTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\HostEntry.cpp" />
|
||||
<ClCompile Include="src\HTMLForm.cpp" />
|
||||
<ClCompile Include="src\HTTPAuthenticationParams.cpp" />
|
||||
<ClCompile Include="src\HTTPBasicCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPBufferAllocator.cpp" />
|
||||
<ClCompile Include="src\HTTPChunkedStream.cpp" />
|
||||
<ClCompile Include="src\HTTPClientSession.cpp" />
|
||||
<ClCompile Include="src\HTTPCookie.cpp" />
|
||||
<ClCompile Include="src\HTTPCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPDigestCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPFixedLengthStream.cpp" />
|
||||
<ClCompile Include="src\HTTPHeaderStream.cpp" />
|
||||
<ClCompile Include="src\HTTPIOStream.cpp" />
|
||||
<ClCompile Include="src\HTTPMessage.cpp" />
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\HTTPRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandler.cpp" />
|
||||
<ClCompile Include="src\HTTPRequestHandlerFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServer.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnection.cpp" />
|
||||
<ClCompile Include="src\HTTPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPServerParams.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequest.cpp" />
|
||||
<ClCompile Include="src\HTTPServerRequestImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponse.cpp" />
|
||||
<ClCompile Include="src\HTTPServerResponseImpl.cpp" />
|
||||
<ClCompile Include="src\HTTPServerSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSession.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionFactory.cpp" />
|
||||
<ClCompile Include="src\HTTPSessionInstantiator.cpp" />
|
||||
<ClCompile Include="src\HTTPStream.cpp" />
|
||||
<ClCompile Include="src\HTTPStreamFactory.cpp" />
|
||||
<ClCompile Include="src\ICMPClient.cpp" />
|
||||
<ClCompile Include="src\ICMPEventArgs.cpp" />
|
||||
<ClCompile Include="src\ICMPPacket.cpp" />
|
||||
<ClCompile Include="src\ICMPPacketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPSocket.cpp" />
|
||||
<ClCompile Include="src\ICMPSocketImpl.cpp" />
|
||||
<ClCompile Include="src\ICMPv4PacketImpl.cpp" />
|
||||
<ClCompile Include="src\IPAddress.cpp" />
|
||||
<ClCompile Include="src\IPAddressImpl.cpp" />
|
||||
<ClCompile Include="src\MailMessage.cpp" />
|
||||
<ClCompile Include="src\MailRecipient.cpp" />
|
||||
<ClCompile Include="src\MailStream.cpp" />
|
||||
<ClCompile Include="src\MediaType.cpp" />
|
||||
<ClCompile Include="src\MessageHeader.cpp" />
|
||||
<ClCompile Include="src\MulticastSocket.cpp" />
|
||||
<ClCompile Include="src\MultipartReader.cpp" />
|
||||
<ClCompile Include="src\MultipartWriter.cpp" />
|
||||
<ClCompile Include="src\NameValueCollection.cpp" />
|
||||
<ClCompile Include="src\Net.cpp" />
|
||||
<ClCompile Include="src\NetException.cpp" />
|
||||
<ClCompile Include="src\NetworkInterface.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\NTPClient.cpp" />
|
||||
<ClCompile Include="src\NTPEventArgs.cpp" />
|
||||
<ClCompile Include="src\NTPPacket.cpp" />
|
||||
<ClCompile Include="src\NullPartHandler.cpp" />
|
||||
<ClCompile Include="src\OAuth10Credentials.cpp" />
|
||||
<ClCompile Include="src\OAuth20Credentials.cpp" />
|
||||
<ClCompile Include="src\PartHandler.cpp" />
|
||||
<ClCompile Include="src\PartSource.cpp" />
|
||||
<ClCompile Include="src\PartStore.cpp" />
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\POP3ClientSession.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableDecoder.cpp" />
|
||||
<ClCompile Include="src\QuotedPrintableEncoder.cpp" />
|
||||
<ClCompile Include="src\RawSocket.cpp" />
|
||||
<ClCompile Include="src\RawSocketImpl.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogChannel.cpp" />
|
||||
<ClCompile Include="src\RemoteSyslogListener.cpp" />
|
||||
<ClCompile Include="src\ServerSocket.cpp" />
|
||||
<ClCompile Include="src\ServerSocketImpl.cpp" />
|
||||
<ClCompile Include="src\SMTPChannel.cpp" />
|
||||
<ClCompile Include="src\SMTPClientSession.cpp" />
|
||||
<ClCompile Include="src\Socket.cpp" />
|
||||
<ClCompile Include="src\SocketAddress.cpp" />
|
||||
<ClCompile Include="src\SocketAddressImpl.cpp" />
|
||||
<ClCompile Include="src\SocketImpl.cpp" />
|
||||
<ClCompile Include="src\SocketNotification.cpp" />
|
||||
<ClCompile Include="src\SocketNotifier.cpp" />
|
||||
<ClCompile Include="src\SocketReactor.cpp" />
|
||||
<ClCompile Include="src\SocketStream.cpp" />
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp" />
|
||||
<ClCompile Include="src\StreamSocket.cpp" />
|
||||
<ClCompile Include="src\StreamSocketImpl.cpp" />
|
||||
<ClCompile Include="src\StringPartSource.cpp" />
|
||||
<ClCompile Include="src\TCPServer.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnection.cpp" />
|
||||
<ClCompile Include="src\TCPServerConnectionFactory.cpp" />
|
||||
<ClCompile Include="src\TCPServerDispatcher.cpp" />
|
||||
<ClCompile Include="src\TCPServerParams.cpp" />
|
||||
<ClCompile Include="src\UDPClient.cpp" />
|
||||
<ClCompile Include="src\UDPServerParams.cpp" />
|
||||
<ClCompile Include="src\WebSocket.cpp" />
|
||||
<ClCompile Include="src\WebSocketImpl.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc">
|
||||
|
||||
@@ -154,6 +154,15 @@
|
||||
<Filter Include="UDP\Header Files">
|
||||
<UniqueIdentifier>{e8126c7b-f7eb-4fd0-8405-a25686a2eb43}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM">
|
||||
<UniqueIdentifier>{57d7abd7-70c6-4539-9d72-63ab4a67d98d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Header Files">
|
||||
<UniqueIdentifier>{e928b626-0ca2-41a2-8c4b-2d1634b3c882}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="NTLM\Source Files">
|
||||
<UniqueIdentifier>{6863df41-5426-405b-a51d-21c53bcfe45f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Net\DNS.h">
|
||||
@@ -492,6 +501,16 @@
|
||||
<ClInclude Include="include\Poco\Net\UDPSocketReader.h">
|
||||
<Filter>UDP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\PollSet.h" />
|
||||
<ClInclude Include="include\Poco\Net\HTTPNTLMCredentials.h">
|
||||
<Filter>HTTP\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\NTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Net\SSPINTLMCredentials.h">
|
||||
<Filter>NTLM\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\DNS.cpp">
|
||||
@@ -797,6 +816,16 @@
|
||||
<ClCompile Include="src\UDPServerParams.cpp">
|
||||
<Filter>UDP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PollSet.cpp" />
|
||||
<ClCompile Include="src\NTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SSPINTLMCredentials.cpp">
|
||||
<Filter>NTLM\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\HTTPNTLMCredentials.cpp">
|
||||
<Filter>HTTP\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\DLLVersion.rc" />
|
||||
|
||||
@@ -33,6 +33,9 @@ class HTTPResponse;
|
||||
class Net_API HTTPAuthenticationParams: public NameValueCollection
|
||||
/// Collection of name-value pairs of HTTP authentication header (i.e.
|
||||
/// "realm", "qop", "nonce" in case of digest authentication header).
|
||||
///
|
||||
/// For NTLM, the base64-encoded NTLM message is available from
|
||||
/// the "NTLM" property.
|
||||
{
|
||||
public:
|
||||
HTTPAuthenticationParams();
|
||||
@@ -89,6 +92,7 @@ public:
|
||||
/// request or response authentication header.
|
||||
|
||||
static const std::string REALM;
|
||||
static const std::string NTLM;
|
||||
static const std::string WWW_AUTHENTICATE;
|
||||
static const std::string PROXY_AUTHENTICATE;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ class Net_API HTTPBasicCredentials
|
||||
public:
|
||||
HTTPBasicCredentials();
|
||||
/// Creates an empty HTTPBasicCredentials object.
|
||||
|
||||
|
||||
HTTPBasicCredentials(const std::string& username, const std::string& password);
|
||||
/// Creates a HTTPBasicCredentials object with the given username and password.
|
||||
|
||||
@@ -55,18 +55,24 @@ public:
|
||||
~HTTPBasicCredentials();
|
||||
/// Destroys the HTTPBasicCredentials.
|
||||
|
||||
void clear();
|
||||
/// Clears both username and password.
|
||||
|
||||
void setUsername(const std::string& username);
|
||||
/// Sets the username.
|
||||
|
||||
|
||||
const std::string& getUsername() const;
|
||||
/// Returns the username.
|
||||
|
||||
|
||||
void setPassword(const std::string& password);
|
||||
/// Sets the password.
|
||||
|
||||
|
||||
const std::string& getPassword() const;
|
||||
/// Returns the password.
|
||||
|
||||
|
||||
bool empty() const;
|
||||
/// Returns true if both username and password are empty, otherwise false.
|
||||
|
||||
void authenticate(HTTPRequest& request) const;
|
||||
/// Adds authentication information to the given HTTPRequest.
|
||||
|
||||
@@ -84,7 +90,7 @@ protected:
|
||||
private:
|
||||
HTTPBasicCredentials(const HTTPBasicCredentials&);
|
||||
HTTPBasicCredentials& operator = (const HTTPBasicCredentials&);
|
||||
|
||||
|
||||
std::string _username;
|
||||
std::string _password;
|
||||
};
|
||||
@@ -105,6 +111,12 @@ inline const std::string& HTTPBasicCredentials::getPassword() const
|
||||
}
|
||||
|
||||
|
||||
inline bool HTTPBasicCredentials::empty() const
|
||||
{
|
||||
return _username.empty() && _password.empty();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include "Poco/Net/HTTPSession.h"
|
||||
#include "Poco/Net/HTTPBasicCredentials.h"
|
||||
#include "Poco/Net/HTTPDigestCredentials.h"
|
||||
#include "Poco/Net/HTTPNTLMCredentials.h"
|
||||
#include "Poco/Net/SocketAddress.h"
|
||||
#include "Poco/SharedPtr.h"
|
||||
#include <istream>
|
||||
@@ -62,11 +65,20 @@ class Net_API HTTPClientSession: public HTTPSession
|
||||
/// set up a session through a proxy.
|
||||
{
|
||||
public:
|
||||
enum ProxyAuthentication
|
||||
{
|
||||
PROXY_AUTH_NONE, /// No proxy authentication
|
||||
PROXY_AUTH_HTTP_BASIC, /// HTTP Basic proxy authentication (default, if username and password are supplied)
|
||||
PROXY_AUTH_HTTP_DIGEST, /// HTTP Digest proxy authentication
|
||||
PROXY_AUTH_NTLM /// NTLMv2 proxy authentication
|
||||
};
|
||||
|
||||
struct ProxyConfig
|
||||
/// HTTP proxy server configuration.
|
||||
{
|
||||
ProxyConfig():
|
||||
port(HTTP_PORT)
|
||||
port(HTTP_PORT),
|
||||
authMethod(PROXY_AUTH_HTTP_BASIC)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -82,6 +94,9 @@ public:
|
||||
/// A regular expression defining hosts for which the proxy should be bypassed,
|
||||
/// e.g. "localhost|127\.0\.0\.1|192\.168\.0\.\d+". Can also be an empty
|
||||
/// string to disable proxy bypassing.
|
||||
|
||||
ProxyAuthentication authMethod;
|
||||
/// The authentication method to use - HTTP Basic or NTLM.
|
||||
};
|
||||
|
||||
HTTPClientSession();
|
||||
@@ -126,7 +141,7 @@ public:
|
||||
Poco::UInt16 getPort() const;
|
||||
/// Returns the port number of the target HTTP server.
|
||||
|
||||
void setSourceAddress(const SocketAddress& address);
|
||||
void setSourceAddress(const SocketAddress& address);
|
||||
/// Sets the source IP address and source port for the HTTPClientSession
|
||||
/// socket.
|
||||
///
|
||||
@@ -144,13 +159,13 @@ public:
|
||||
/// can be used on the source side of the socket.
|
||||
///
|
||||
|
||||
const SocketAddress& getSourceAddress();
|
||||
const SocketAddress& getSourceAddress();
|
||||
/// Returns the last source address set with setSourceAddress
|
||||
|
||||
const SocketAddress& getSourceAddress4();
|
||||
const SocketAddress& getSourceAddress4();
|
||||
/// Returns the last IPv4 source address set with setSourceAddress
|
||||
|
||||
const SocketAddress& getSourceAddress6();
|
||||
const SocketAddress& getSourceAddress6();
|
||||
/// Returns the last IPV6 source address set with setSourceAddress
|
||||
|
||||
void setProxy(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
|
||||
@@ -273,6 +288,14 @@ public:
|
||||
/// This method should only be called if the request contains
|
||||
/// a "Expect: 100-continue" header.
|
||||
|
||||
void flushRequest();
|
||||
/// Flushes the request stream.
|
||||
///
|
||||
/// Normally this method does not need to be called.
|
||||
/// It can be used to ensure the request has been
|
||||
/// fully sent if receiveResponse() is not called, e.g.,
|
||||
/// because the underlying socket will be detached.
|
||||
|
||||
void reset();
|
||||
/// Resets the session and closes the socket.
|
||||
///
|
||||
@@ -305,6 +328,9 @@ protected:
|
||||
int write(const char* buffer, std::streamsize length);
|
||||
/// Tries to re-connect if keep-alive is on.
|
||||
|
||||
std::ostream& sendRequestImpl(const HTTPRequest& request);
|
||||
/// Sends the given HTTPRequest over an existing connection.
|
||||
|
||||
virtual std::string proxyRequestPrefix() const;
|
||||
/// Returns the prefix prepended to the URI for proxy requests
|
||||
/// (e.g., "http://myhost.com").
|
||||
@@ -316,10 +342,20 @@ protected:
|
||||
/// Sets the proxy credentials (Proxy-Authorization header), if
|
||||
/// proxy username and password have been set.
|
||||
|
||||
void proxyAuthenticateImpl(HTTPRequest& request);
|
||||
void proxyAuthenticateImpl(HTTPRequest& request, const ProxyConfig& proxyConfig);
|
||||
/// Sets the proxy credentials (Proxy-Authorization header), if
|
||||
/// proxy username and password have been set.
|
||||
|
||||
void proxyAuthenticateDigest(HTTPRequest& request);
|
||||
/// Initiates a HTTP Digest authentication handshake with the proxy.
|
||||
|
||||
void proxyAuthenticateNTLM(HTTPRequest& request);
|
||||
/// Initiates a HTTP NTLM authentication handshake with the proxy.
|
||||
|
||||
void sendChallengeRequest(const HTTPRequest& request, HTTPResponse& response);
|
||||
/// Sends a probe request for Digest and NTLM authentication
|
||||
/// to obtain the server challenge.
|
||||
|
||||
StreamSocket proxyConnect();
|
||||
/// Sends a CONNECT request to the proxy server and returns
|
||||
/// a StreamSocket for the resulting connection.
|
||||
@@ -343,6 +379,10 @@ private:
|
||||
bool _responseReceived;
|
||||
Poco::SharedPtr<std::ostream> _pRequestStream;
|
||||
Poco::SharedPtr<std::istream> _pResponseStream;
|
||||
HTTPBasicCredentials _proxyBasicCreds;
|
||||
HTTPDigestCredentials _proxyDigestCreds;
|
||||
HTTPNTLMCredentials _proxyNTLMCreds;
|
||||
bool _ntlmProxyAuthenticated;
|
||||
|
||||
static ProxyConfig _globalProxyConfig;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
|
||||
#include "Poco/Net/HTTPDigestCredentials.h"
|
||||
#include "Poco/Net/HTTPNTLMCredentials.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
@@ -37,7 +38,7 @@ class HTTPResponse;
|
||||
|
||||
class Net_API HTTPCredentials
|
||||
/// This is a utility class for working with HTTP
|
||||
/// authentication (basic or digest) in HTTPRequest objects.
|
||||
/// authentication (Basic, Digest or NTLM) in HTTPRequest objects.
|
||||
///
|
||||
/// Usage is as follows:
|
||||
/// First, create a HTTPCredentials object containing
|
||||
@@ -48,7 +49,7 @@ class Net_API HTTPCredentials
|
||||
/// Poco::Net::HTTPClientSession session("pocoproject.org");
|
||||
/// Poco::Net::HTTPRequest request(HTTPRequest::HTTP_GET, "/index.html", HTTPMessage::HTTP_1_1);
|
||||
/// session.sendRequest(request);
|
||||
/// Poco::Net::HTTPResponse;
|
||||
/// Poco::Net::HTTPResponse response;
|
||||
/// std::istream& istr = session.receiveResponse(response);
|
||||
///
|
||||
/// If the server responds with a 401 status, authenticate the
|
||||
@@ -61,7 +62,7 @@ class Net_API HTTPCredentials
|
||||
/// }
|
||||
///
|
||||
/// To perform multiple authenticated requests, call updateAuthInfo()
|
||||
/// instead of authenticate() on subsequent requests.
|
||||
/// instead of authenticate() on subsequent requests.
|
||||
/// creds.updateAuthInfo(request);
|
||||
/// session.sendRequest(request);
|
||||
/// ...
|
||||
@@ -90,6 +91,9 @@ public:
|
||||
/// and password of the credentials object.
|
||||
/// Does nothing if URI has no user info part.
|
||||
|
||||
void clear();
|
||||
/// Clears username, password and host.
|
||||
|
||||
void setUsername(const std::string& username);
|
||||
/// Sets the username.
|
||||
|
||||
@@ -102,6 +106,17 @@ public:
|
||||
const std::string& getPassword() const;
|
||||
/// Returns the password.
|
||||
|
||||
void setHost(const std::string& host);
|
||||
/// Sets the target host. Only used for SSPI-based NTLM authentication using
|
||||
/// the credentials of the currently logged-in user on Windows.
|
||||
|
||||
const std::string& getHost() const;
|
||||
/// Returns the target host. Only used for SSPI-based NTLM authentication using
|
||||
/// the credentials of the currently logged-in user on Windows.
|
||||
|
||||
bool empty() const;
|
||||
/// Returns true if both username and password are empty, otherwise false.
|
||||
|
||||
void authenticate(HTTPRequest& request, const HTTPResponse& response);
|
||||
/// Inspects WWW-Authenticate header of the response, initializes
|
||||
/// the internal state (in case of digest authentication) and
|
||||
@@ -132,17 +147,26 @@ public:
|
||||
static bool isDigestCredentials(const std::string& header);
|
||||
/// Returns true if authentication header is for Digest authentication.
|
||||
|
||||
static bool isNTLMCredentials(const std::string& header);
|
||||
/// Returns true if authentication header is for NTLM authentication.
|
||||
|
||||
static bool hasBasicCredentials(const HTTPRequest& request);
|
||||
/// Returns true if Authorization with Basic credentials header is present in the request.
|
||||
/// Returns true if an Authorization header with Basic credentials is present in the request.
|
||||
|
||||
static bool hasDigestCredentials(const HTTPRequest& request);
|
||||
/// Returns true if Authorization with Digest credentials header is present in the request.
|
||||
/// Returns true if an Authorization header with Digest credentials is present in the request.
|
||||
|
||||
static bool hasNTLMCredentials(const HTTPRequest& request);
|
||||
/// Returns true if an Authorization header with NTLM credentials is present in the request.
|
||||
|
||||
static bool hasProxyBasicCredentials(const HTTPRequest& request);
|
||||
/// Returns true if Authorization with Basic credentials header is present in the request.
|
||||
/// Returns true if a Proxy-Authorization header with Basic credentials is present in the request.
|
||||
|
||||
static bool hasProxyDigestCredentials(const HTTPRequest& request);
|
||||
/// Returns true if Authorization with Digest credentials header is present in the request.
|
||||
/// Returns true if a Proxy-Authorization header with Digest credentials is present in the request.
|
||||
|
||||
static bool hasProxyNTLMCredentials(const HTTPRequest& request);
|
||||
/// Returns true if a Proxy-Authorization header with Digest credentials is present in the request.
|
||||
|
||||
static void extractCredentials(const std::string& userInfo, std::string& username, std::string& password);
|
||||
/// Extracts username and password from user:password information string.
|
||||
@@ -155,6 +179,7 @@ private:
|
||||
HTTPCredentials& operator = (const HTTPCredentials&);
|
||||
|
||||
HTTPDigestCredentials _digest;
|
||||
HTTPNTLMCredentials _ntlm;
|
||||
};
|
||||
|
||||
|
||||
@@ -172,7 +197,7 @@ inline const std::string& HTTPCredentials::getUsername() const
|
||||
return _digest.getUsername();
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void HTTPCredentials::setPassword(const std::string& password)
|
||||
{
|
||||
_digest.setPassword(password);
|
||||
@@ -185,6 +210,24 @@ inline const std::string& HTTPCredentials::getPassword() const
|
||||
}
|
||||
|
||||
|
||||
inline void HTTPCredentials::setHost(const std::string& host)
|
||||
{
|
||||
_ntlm.setHost(host);
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& HTTPCredentials::getHost() const
|
||||
{
|
||||
return _ntlm.getHost();
|
||||
}
|
||||
|
||||
|
||||
inline bool HTTPCredentials::empty() const
|
||||
{
|
||||
return _digest.empty();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
|
||||
@@ -52,6 +52,10 @@ public:
|
||||
|
||||
void reset();
|
||||
/// Resets the HTTPDigestCredentials object to a clean state.
|
||||
/// Does not clear username and password.
|
||||
|
||||
void clear();
|
||||
/// Clears both username and password.
|
||||
|
||||
void setUsername(const std::string& username);
|
||||
/// Sets the username.
|
||||
@@ -65,6 +69,9 @@ public:
|
||||
const std::string& getPassword() const;
|
||||
/// Returns the password.
|
||||
|
||||
bool empty() const;
|
||||
/// Returns true if both username and password are empty, otherwise false.
|
||||
|
||||
void authenticate(HTTPRequest& request, const HTTPResponse& response);
|
||||
/// Parses WWW-Authenticate header of the HTTPResponse, initializes
|
||||
/// internal state, and adds authentication information to the given HTTPRequest.
|
||||
@@ -125,7 +132,7 @@ private:
|
||||
void createAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams);
|
||||
void updateAuthParams(const HTTPRequest& request);
|
||||
int updateNonceCounter(const std::string& nonce);
|
||||
|
||||
|
||||
static const std::string DEFAULT_ALGORITHM;
|
||||
static const std::string DEFAULT_QOP;
|
||||
static const std::string NONCE_PARAM;
|
||||
@@ -146,7 +153,7 @@ private:
|
||||
std::string _password;
|
||||
HTTPAuthenticationParams _requestAuthParams;
|
||||
NonceCounterMap _nc;
|
||||
|
||||
|
||||
static int _nonceCounter;
|
||||
static Poco::FastMutex _nonceMutex;
|
||||
};
|
||||
@@ -167,6 +174,12 @@ inline const std::string& HTTPDigestCredentials::getPassword() const
|
||||
}
|
||||
|
||||
|
||||
inline bool HTTPDigestCredentials::empty() const
|
||||
{
|
||||
return _username.empty() && _password.empty();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
|
||||
@@ -139,6 +139,7 @@ public:
|
||||
static const std::string CONTENT_TYPE;
|
||||
static const std::string TRANSFER_ENCODING;
|
||||
static const std::string CONNECTION;
|
||||
static const std::string PROXY_CONNECTION;
|
||||
|
||||
static const std::string CONNECTION_KEEP_ALIVE;
|
||||
static const std::string CONNECTION_CLOSE;
|
||||
@@ -153,13 +154,16 @@ protected:
|
||||
/// Creates the HTTPMessage and sets
|
||||
/// the version.
|
||||
|
||||
HTTPMessage(const HTTPMessage& other);
|
||||
/// Copy constructor.
|
||||
|
||||
HTTPMessage& operator = (const HTTPMessage& other);
|
||||
/// Assignment operator.
|
||||
|
||||
virtual ~HTTPMessage();
|
||||
/// Destroys the HTTPMessage.
|
||||
|
||||
private:
|
||||
HTTPMessage(const HTTPMessage&);
|
||||
HTTPMessage& operator = (const HTTPMessage&);
|
||||
|
||||
std::string _version;
|
||||
};
|
||||
|
||||
|
||||
168
Net/include/Poco/Net/HTTPNTLMCredentials.h
Normal file
168
Net/include/Poco/Net/HTTPNTLMCredentials.h
Normal file
@@ -0,0 +1,168 @@
|
||||
//
|
||||
// HTTPNTLMCredentials.h
|
||||
//
|
||||
// Library: Net
|
||||
// Package: HTTP
|
||||
// Module: HTTPNTLMCredentials
|
||||
//
|
||||
// Definition of the HTTPNTLMCredentials class.
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Net_HTTPNTLMCredentials_INCLUDED
|
||||
#define Net_HTTPNTLMCredentials_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include "Poco/Net/SSPINTLMCredentials.h"
|
||||
#include <vector>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
class HTTPRequest;
|
||||
class HTTPResponse;
|
||||
|
||||
|
||||
class Net_API HTTPNTLMCredentials
|
||||
/// This is a utility class for working with
|
||||
/// HTTP NTLMv2 Authentication in HTTPRequest
|
||||
/// objects.
|
||||
{
|
||||
public:
|
||||
HTTPNTLMCredentials();
|
||||
/// Creates an empty HTTPNTLMCredentials object.
|
||||
|
||||
HTTPNTLMCredentials(const std::string& username, const std::string& password);
|
||||
/// Creates a HTTPNTLMCredentials object with the given username and password.
|
||||
|
||||
HTTPNTLMCredentials(const std::string& username, const std::string& password, const std::string& host);
|
||||
/// Creates a HTTPNTLMCredentials object with the given username, password and target host.
|
||||
|
||||
~HTTPNTLMCredentials();
|
||||
/// Destroys the HTTPNTLMCredentials.
|
||||
|
||||
void reset();
|
||||
/// Resets the HTTPNTLMCredentials object to a clean state.
|
||||
/// Does not clear username and password.
|
||||
|
||||
void clear();
|
||||
/// Clears username, password and host.
|
||||
|
||||
void setUsername(const std::string& username);
|
||||
/// Sets the username.
|
||||
|
||||
const std::string& getUsername() const;
|
||||
/// Returns the username.
|
||||
|
||||
void setPassword(const std::string& password);
|
||||
/// Sets the password.
|
||||
|
||||
const std::string& getPassword() const;
|
||||
/// Returns the password.
|
||||
|
||||
bool empty() const;
|
||||
/// Returns true if both username and password are empty, otherwise false.
|
||||
|
||||
void setHost(const std::string& host);
|
||||
/// Sets the target host.\
|
||||
///
|
||||
/// Used for SSPI-based NTLM authentication only.
|
||||
|
||||
const std::string& getHost() const;
|
||||
/// Returns the target host.
|
||||
|
||||
void authenticate(HTTPRequest& request, const HTTPResponse& response);
|
||||
/// Parses WWW-Authenticate header of the HTTPResponse, initializes
|
||||
/// internal state, and adds authentication information to the given HTTPRequest.
|
||||
|
||||
void authenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64);
|
||||
/// Initializes internal state according to information from the
|
||||
/// ntlmChallengeBase64, and adds authentication
|
||||
/// information to the given HTTPRequest.
|
||||
///
|
||||
/// Throws InvalidArgumentException if responseAuthParams is
|
||||
/// invalid.
|
||||
|
||||
void updateAuthInfo(HTTPRequest& request);
|
||||
/// Updates internal state and adds authentication information to
|
||||
/// the given HTTPRequest.
|
||||
|
||||
void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response);
|
||||
/// Parses Proxy-Authenticate header of the HTTPResponse, initializes
|
||||
/// internal state, and adds proxy authentication information to the given HTTPRequest.
|
||||
|
||||
void proxyAuthenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64);
|
||||
/// Initializes internal state according to information from the
|
||||
/// HTTPAuthenticationParams of the response, and adds proxy authentication
|
||||
/// information to the given HTTPRequest.
|
||||
///
|
||||
/// Throws InvalidArgumentException if HTTPAuthenticationParams is
|
||||
/// invalid or some required parameter is missing.
|
||||
/// Throws NotImplementedException in case of unsupported digest
|
||||
/// algorithm or quality of protection method.
|
||||
|
||||
void updateProxyAuthInfo(HTTPRequest& request);
|
||||
/// Updates internal state and adds proxy authentication information to
|
||||
/// the given HTTPRequest.
|
||||
|
||||
static const std::string SCHEME;
|
||||
|
||||
private:
|
||||
HTTPNTLMCredentials(const HTTPNTLMCredentials&);
|
||||
HTTPNTLMCredentials& operator = (const HTTPNTLMCredentials&);
|
||||
|
||||
std::string createNTLMMessage(const std::string& ntlmChallengeBase64);
|
||||
bool useSSPINTLM() const;
|
||||
|
||||
std::string _username;
|
||||
std::string _password;
|
||||
std::string _host;
|
||||
Poco::SharedPtr<NTLMContext> _pNTLMContext;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
inline const std::string& HTTPNTLMCredentials::getUsername() const
|
||||
{
|
||||
return _username;
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& HTTPNTLMCredentials::getPassword() const
|
||||
{
|
||||
return _password;
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& HTTPNTLMCredentials::getHost() const
|
||||
{
|
||||
return _host;
|
||||
}
|
||||
|
||||
|
||||
inline bool HTTPNTLMCredentials::useSSPINTLM() const
|
||||
{
|
||||
return _username.empty() && _password.empty() && SSPINTLMCredentials::available();
|
||||
}
|
||||
|
||||
|
||||
inline bool HTTPNTLMCredentials::empty() const
|
||||
{
|
||||
return _username.empty() && _password.empty();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
#endif // Net_HTTPNTLMCredentials_INCLUDED
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
HTTPRequest();
|
||||
/// Creates a GET / HTTP/1.0 HTTP request.
|
||||
|
||||
HTTPRequest(const std::string& version);
|
||||
explicit HTTPRequest(const std::string& version);
|
||||
/// Creates a GET / HTTP/1.x request with
|
||||
/// the given version (HTTP/1.0 or HTTP/1.1).
|
||||
|
||||
@@ -49,9 +49,15 @@ public:
|
||||
HTTPRequest(const std::string& method, const std::string& uri, const std::string& version);
|
||||
/// Creates a HTTP request with the given method, URI and version.
|
||||
|
||||
HTTPRequest(const HTTPRequest& other);
|
||||
/// Creates a HTTP request by copying another one.
|
||||
|
||||
virtual ~HTTPRequest();
|
||||
/// Destroys the HTTPRequest.
|
||||
|
||||
HTTPRequest& operator = (const HTTPRequest&);
|
||||
/// Assignment operator.
|
||||
|
||||
void setMethod(const std::string& method);
|
||||
/// Sets the method.
|
||||
|
||||
@@ -103,6 +109,9 @@ public:
|
||||
/// Sets the authentication scheme and information for
|
||||
/// this request.
|
||||
|
||||
void removeCredentials();
|
||||
/// Removes any credentials from the request.
|
||||
|
||||
bool getExpectContinue() const;
|
||||
/// Returns true if the request contains an
|
||||
/// "Expect: 100-continue" header.
|
||||
@@ -126,6 +135,9 @@ public:
|
||||
/// Sets the proxy authentication scheme and information for
|
||||
/// this request.
|
||||
|
||||
void removeProxyCredentials();
|
||||
/// Removes any proxy credentials from the request.
|
||||
|
||||
void write(std::ostream& ostr) const;
|
||||
/// Writes the HTTP request to the given
|
||||
/// output stream.
|
||||
@@ -173,9 +185,6 @@ private:
|
||||
|
||||
std::string _method;
|
||||
std::string _uri;
|
||||
|
||||
HTTPRequest(const HTTPRequest&);
|
||||
HTTPRequest& operator = (const HTTPRequest&);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -122,17 +122,23 @@ public:
|
||||
/// Creates the HTTPResponse with the given version, status
|
||||
/// and reason phrase.
|
||||
|
||||
HTTPResponse(HTTPStatus status);
|
||||
explicit HTTPResponse(HTTPStatus status);
|
||||
/// Creates the HTTPResponse with the given status
|
||||
/// an an appropriate reason phrase.
|
||||
/// and an appropriate reason phrase.
|
||||
|
||||
HTTPResponse(const std::string& version, HTTPStatus status);
|
||||
/// Creates the HTTPResponse with the given version, status
|
||||
/// an an appropriate reason phrase.
|
||||
/// and an appropriate reason phrase.
|
||||
|
||||
HTTPResponse(const HTTPResponse& other);
|
||||
/// Creates the HTTPResponse by copying another one.
|
||||
|
||||
virtual ~HTTPResponse();
|
||||
/// Destroys the HTTPResponse.
|
||||
|
||||
HTTPResponse& operator = (const HTTPResponse& other);
|
||||
/// Assignment operator.
|
||||
|
||||
void setStatus(HTTPStatus status);
|
||||
/// Sets the HTTP status code.
|
||||
///
|
||||
@@ -268,9 +274,6 @@ private:
|
||||
|
||||
HTTPStatus _status;
|
||||
std::string _reason;
|
||||
|
||||
HTTPResponse(const HTTPResponse&);
|
||||
HTTPResponse& operator = (const HTTPResponse&);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ protected:
|
||||
/// Connects the underlying socket to the given address
|
||||
/// and sets the socket's receive timeout.
|
||||
|
||||
virtual void connect(const SocketAddress& targetAddress, const SocketAddress& sourceAddress);
|
||||
virtual void connect(const SocketAddress& targetAddress, const SocketAddress& sourceAddress);
|
||||
/// Connects the underlying socket to the given address,
|
||||
/// sets the socket's receive timeout
|
||||
/// and sets the source IP address of the underlying socket
|
||||
|
||||
181
Net/include/Poco/Net/NTLMCredentials.h
Normal file
181
Net/include/Poco/Net/NTLMCredentials.h
Normal file
@@ -0,0 +1,181 @@
|
||||
//
|
||||
// NTLMCredentials.h
|
||||
//
|
||||
// Library: Net
|
||||
// Package: NTLM
|
||||
// Module: NTLMCredentials
|
||||
//
|
||||
// Definition of the NTLMCredentials class.
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Net_NTLMCredentials_INCLUDED
|
||||
#define Net_NTLMCredentials_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include "Poco/BinaryReader.h"
|
||||
#include "Poco/BinaryWriter.h"
|
||||
#include <vector>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
class Net_API NTLMCredentials
|
||||
/// This is a utility class for working with
|
||||
/// NTLMv2 Authentication.
|
||||
///
|
||||
/// Note: This implementation is based on the
|
||||
/// "The NTLM Authentication Protocol and Security Support Provider"
|
||||
/// document written by Eric Glass and avilable from
|
||||
/// http://davenport.sourceforge.net/ntlm.html
|
||||
/// and the NT LAN Manager (NTLM) Authentication Protocol
|
||||
/// [MS-NLMP] document by Microsoft.
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
NTLM_MESSAGE_TYPE_NEGOTIATE = 0x01,
|
||||
NTLM_MESSAGE_TYPE_CHALLENGE = 0x02,
|
||||
NTLM_MESSAGE_TYPE_AUTHENTICATE = 0x03
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
NTLM_FLAG_NEGOTIATE_UNICODE = 0x00000001,
|
||||
NTLM_FLAG_NEGOTIATE_OEM = 0x00000002,
|
||||
NTLM_FLAG_REQUEST_TARGET = 0x00000004,
|
||||
NTLM_FLAG_NEGOTIATE_NTLM = 0x00000200,
|
||||
NTLM_FLAG_DOMAIN_SUPPLIED = 0x00001000,
|
||||
NTLM_FLAG_WORKST_SUPPLIED = 0x00002000,
|
||||
NTLM_FLAG_NEGOTIATE_LOCAL = 0x00004000,
|
||||
NTLM_FLAG_NEGOTIATE_ALWAYS_SIGN = 0x00008000,
|
||||
NTLM_FLAG_NEGOTIATE_NTLM2_KEY = 0x00080000,
|
||||
NTLM_FLAG_TARGET_DOMAIN = 0x00010000,
|
||||
NTLM_FLAG_TARGET_SERVER = 0x00020000,
|
||||
NTLM_FLAG_TARGET_SHARE = 0x00040000,
|
||||
NTLM_FLAG_NEGOTIATE_TARGET = 0x00800000,
|
||||
NTLM_FLAG_NEGOTIATE_128 = 0x20000000,
|
||||
NTLM_FLAG_NEGOTIATE_56 = 0x80000000
|
||||
};
|
||||
|
||||
struct NegotiateMessage
|
||||
/// This message is sent from the client to initiate NTLM authentication.
|
||||
{
|
||||
NegotiateMessage(): flags(0) {}
|
||||
|
||||
Poco::UInt32 flags;
|
||||
std::string domain;
|
||||
std::string workstation;
|
||||
};
|
||||
|
||||
struct ChallengeMessage
|
||||
/// This message is sent back by the server and contains the NTLM challenge.
|
||||
{
|
||||
ChallengeMessage(): flags(0) {}
|
||||
|
||||
Poco::UInt32 flags;
|
||||
std::vector<unsigned char> challenge;
|
||||
std::string target;
|
||||
std::vector<unsigned char> targetInfo;
|
||||
};
|
||||
|
||||
struct AuthenticateMessage
|
||||
/// This message is sent from the client to authenticate itself by providing
|
||||
/// a response to the server challenge.
|
||||
{
|
||||
AuthenticateMessage(): flags(0) {}
|
||||
|
||||
Poco::UInt32 flags;
|
||||
std::vector<unsigned char> lmResponse;
|
||||
std::vector<unsigned char> ntlmResponse;
|
||||
std::string target;
|
||||
std::string username;
|
||||
std::string workstation;
|
||||
};
|
||||
|
||||
struct BufferDesc
|
||||
{
|
||||
BufferDesc():
|
||||
length(0),
|
||||
reserved(0),
|
||||
offset(0)
|
||||
{
|
||||
}
|
||||
|
||||
BufferDesc(Poco::UInt16 len, Poco::UInt32 off):
|
||||
length(len),
|
||||
reserved(len),
|
||||
offset(off)
|
||||
{
|
||||
}
|
||||
|
||||
Poco::UInt16 length;
|
||||
Poco::UInt16 reserved;
|
||||
Poco::UInt32 offset;
|
||||
};
|
||||
|
||||
static std::vector<unsigned char> createNonce();
|
||||
/// Creates an 8-byte client nonce for NTLM authentication.
|
||||
|
||||
static Poco::UInt64 createTimestamp();
|
||||
/// Creates the NTLM timestamp in tenths of a microsecond since January 1, 1601,
|
||||
/// using the current system time.
|
||||
|
||||
static std::vector<unsigned char> createPasswordHash(const std::string& password);
|
||||
/// Creates the NTLM password hash (MD4 of UTF-16-converted password).
|
||||
|
||||
static std::vector<unsigned char> createNTLMv2Hash(const std::string& username, const std::string& target, const std::string& password);
|
||||
/// Creates the NTLMv2 hash, which is the HMAC-MD5 of the concatenated UTF-16 uppercase username and target,
|
||||
/// using the password hash as HMAC passphrase.
|
||||
|
||||
static std::vector<unsigned char> createLMv2Response(const std::vector<unsigned char>& ntlm2Hash, const std::vector<unsigned char>& challenge, const std::vector<unsigned char>& nonce);
|
||||
/// Creates the LMv2 response by computing the HMAC-MD5 of the challenge and nonce, using the
|
||||
/// ntlm2Hash (see createNTLMv2Hash()) as HMAC passphrase.
|
||||
|
||||
static std::vector<unsigned char> createNTLMv2Response(const std::vector<unsigned char>& ntlm2Hash, const std::vector<unsigned char>& challenge, const std::vector<unsigned char>& nonce, const std::vector<unsigned char>& targetInfo, Poco::UInt64 timestamp);
|
||||
/// Creates the NTLMv2 response by creating the "blob" and prepending its HMAC-MD5, using the ntlm2Hash as HMAC passphrase.
|
||||
|
||||
static std::vector<unsigned char> formatNegotiateMessage(const NegotiateMessage& message);
|
||||
/// Creates the NTLM Type 1 Negotiate message used for initiating NTLM authentication from the client.
|
||||
|
||||
static bool parseChallengeMessage(const unsigned char* buffer, std::size_t size, ChallengeMessage& message);
|
||||
/// Parses a NTLM Type 2 Challenge message.
|
||||
///
|
||||
/// Returns true if the message was parsed successfully, otherwise false.
|
||||
|
||||
static std::vector<unsigned char> formatAuthenticateMessage(const AuthenticateMessage& message);
|
||||
/// Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge.
|
||||
|
||||
static void readBufferDesc(Poco::BinaryReader& reader, BufferDesc& desc);
|
||||
/// Reads a buffer descriptor.
|
||||
|
||||
static void writeBufferDesc(Poco::BinaryWriter& writer, const BufferDesc& desc);
|
||||
/// Writes a buffer descriptor.
|
||||
|
||||
static void splitUsername(const std::string& usernameAndDomain, std::string& username, std::string& domain);
|
||||
/// Splits a username containing a domain into plain username and domain.
|
||||
/// Supported formats are <DOMAIN>\<username> and <username>@<DOMAIN>.
|
||||
|
||||
static std::string toBase64(const std::vector<unsigned char>& buffer);
|
||||
/// Converts the buffer to a base64-encoded string.
|
||||
|
||||
static std::vector<unsigned char> fromBase64(const std::string& base64);
|
||||
/// Decodes the given base64-encoded string.
|
||||
|
||||
static const std::string NTLMSSP;
|
||||
/// Message signature string.
|
||||
};
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
#endif // Net_NTLMCredentials_INCLUDED
|
||||
@@ -51,7 +51,8 @@ public:
|
||||
AUTH_CRAM_SHA1,
|
||||
AUTH_LOGIN,
|
||||
AUTH_PLAIN,
|
||||
AUTH_XOAUTH2
|
||||
AUTH_XOAUTH2,
|
||||
AUTH_NTLM
|
||||
};
|
||||
|
||||
explicit SMTPClientSession(const StreamSocket& socket);
|
||||
@@ -68,7 +69,7 @@ public:
|
||||
|
||||
void setTimeout(const Poco::Timespan& timeout);
|
||||
/// Sets the timeout for socket read operations.
|
||||
|
||||
|
||||
Poco::Timespan getTimeout() const;
|
||||
/// Returns the timeout for socket read operations.
|
||||
|
||||
@@ -92,7 +93,7 @@ public:
|
||||
void login(LoginMethod loginMethod, const std::string& username, const std::string& password);
|
||||
/// Logs in to the SMTP server using the given authentication method and the given
|
||||
/// credentials.
|
||||
|
||||
|
||||
void open();
|
||||
/// Reads the initial response from the SMTP server.
|
||||
///
|
||||
@@ -103,7 +104,7 @@ public:
|
||||
/// Does nothing if called more than once.
|
||||
|
||||
void close();
|
||||
/// Sends a QUIT command and closes the connection to the server.
|
||||
/// Sends a QUIT command and closes the connection to the server.
|
||||
///
|
||||
/// Throws a SMTPException in case of a SMTP-specific error, or a
|
||||
/// NetException in case of a general network communication failure.
|
||||
@@ -169,7 +170,7 @@ protected:
|
||||
};
|
||||
enum
|
||||
{
|
||||
DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
|
||||
DEFAULT_TIMEOUT = 30000000 // 30 seconds default timeout for socket operations
|
||||
};
|
||||
|
||||
static bool isPositiveCompletion(int status);
|
||||
@@ -184,12 +185,15 @@ protected:
|
||||
void loginUsingLogin(const std::string& username, const std::string& password);
|
||||
void loginUsingPlain(const std::string& username, const std::string& password);
|
||||
void loginUsingXOAUTH2(const std::string& username, const std::string& password);
|
||||
void loginUsingNTLM(const std::string& username, const std::string& password);
|
||||
DialogSocket& socket();
|
||||
const std::string& host() const;
|
||||
|
||||
private:
|
||||
void sendCommands(const MailMessage& message, const Recipients* pRecipients = 0);
|
||||
void transportMessage(const MailMessage& message);
|
||||
|
||||
std::string _host;
|
||||
DialogSocket _socket;
|
||||
bool _isOpen;
|
||||
};
|
||||
@@ -228,6 +232,12 @@ inline DialogSocket& SMTPClientSession::socket()
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& SMTPClientSession::host() const
|
||||
{
|
||||
return _host;
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
|
||||
83
Net/include/Poco/Net/SSPINTLMCredentials.h
Normal file
83
Net/include/Poco/Net/SSPINTLMCredentials.h
Normal file
@@ -0,0 +1,83 @@
|
||||
//
|
||||
// SSPINTLMCredentials.h
|
||||
//
|
||||
// Library: Net
|
||||
// Package: NTLM
|
||||
// Module: SSPINTLMCredentials
|
||||
//
|
||||
// Definition of the SSPINTLMCredentials class.
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include <vector>
|
||||
|
||||
|
||||
#ifndef Net_SSPINTLMCredentials_INCLUDED
|
||||
#define Net_SSPINTLMCredentials_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include "Poco/Net/NTLMCredentials.h"
|
||||
#include "Poco/SharedPtr.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
struct NTLMContextImpl;
|
||||
|
||||
|
||||
class NTLMContext
|
||||
/// An opaque context class for working with SSPI NTLM authentication.
|
||||
{
|
||||
public:
|
||||
~NTLMContext();
|
||||
|
||||
protected:
|
||||
NTLMContext(NTLMContextImpl* pImpl);
|
||||
|
||||
private:
|
||||
NTLMContextImpl* _pImpl;
|
||||
|
||||
NTLMContext();
|
||||
NTLMContext(const NTLMContext&);
|
||||
NTLMContext& operator = (const NTLMContext&);
|
||||
|
||||
friend class SSPINTLMProvider;
|
||||
};
|
||||
|
||||
|
||||
class Net_API SSPINTLMCredentials
|
||||
/// Support for NTLM authentication using credentials of the currently
|
||||
/// logged in user via SSPI.
|
||||
{
|
||||
public:
|
||||
static bool available();
|
||||
/// Returns true if SSPI NTLM support is available.
|
||||
|
||||
static Poco::SharedPtr<NTLMContext> createNTLMContext(const std::string& host, const std::string& service);
|
||||
/// Creates an NTLMContext structure for use with negotiate()
|
||||
/// and authenticate().
|
||||
|
||||
static std::vector<unsigned char> negotiate(NTLMContext& context);
|
||||
/// Creates the NTLM Type 1 Negotiate message used for initiating NTLM authentication from the client.
|
||||
|
||||
static std::vector<unsigned char> authenticate(NTLMContext& context, const std::vector<unsigned char>& challenge);
|
||||
/// Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge.
|
||||
|
||||
static const std::string SERVICE_HTTP;
|
||||
static const std::string SERVICE_SMTP;
|
||||
};
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
#endif // Net_SSPINTLMCredentials_INCLUDED
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
WS_SERVER, /// Server-side WebSocket.
|
||||
WS_CLIENT /// Client-side WebSocket.
|
||||
};
|
||||
|
||||
|
||||
enum FrameFlags
|
||||
/// Frame header flags.
|
||||
{
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
FRAME_OP_BITMASK = 0x0f, /// Bit mask for opcodes.
|
||||
FRAME_OP_SETRAW = 0x100 /// Set raw flags (for use with sendBytes() and FRAME_OP_CONT).
|
||||
};
|
||||
|
||||
|
||||
enum SendFlags
|
||||
/// Combined header flags and opcodes for use with sendFrame().
|
||||
{
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
FRAME_BINARY = FRAME_FLAG_FIN | FRAME_OP_BINARY
|
||||
/// Use this for sending a single binary payload frame.
|
||||
};
|
||||
|
||||
|
||||
enum StatusCodes
|
||||
/// StatusCodes for CLOSE frames sent with shutdown().
|
||||
{
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
WS_UNEXPECTED_CONDITION = 1011,
|
||||
WS_RESERVED_TLS_FAILURE = 1015
|
||||
};
|
||||
|
||||
|
||||
enum ErrorCodes
|
||||
/// These error codes can be obtained from a WebSocketException
|
||||
/// to determine the exact cause of the error.
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
WS_ERR_INCOMPLETE_FRAME = 11
|
||||
/// Incomplete frame received.
|
||||
};
|
||||
|
||||
|
||||
WebSocket(HTTPServerRequest& request, HTTPServerResponse& response);
|
||||
/// Creates a server-side WebSocket from within a
|
||||
/// HTTPRequestHandler.
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
///
|
||||
/// Throws an exception if the request is not a proper WebSocket
|
||||
/// upgrade request.
|
||||
|
||||
|
||||
WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response);
|
||||
/// Creates a client-side WebSocket, using the given
|
||||
/// HTTPClientSession and HTTPRequest for the initial handshake
|
||||
@@ -165,11 +165,11 @@ public:
|
||||
///
|
||||
/// The result of the handshake can be obtained from the response
|
||||
/// object.
|
||||
|
||||
|
||||
WebSocket(const Socket& socket);
|
||||
/// Creates a WebSocket from another Socket, which must be a WebSocket,
|
||||
/// otherwise a Poco::InvalidArgumentException will be thrown.
|
||||
|
||||
|
||||
virtual ~WebSocket();
|
||||
/// Destroys the StreamSocket.
|
||||
|
||||
@@ -188,7 +188,7 @@ public:
|
||||
/// Sends a Close control frame to the server end of
|
||||
/// the connection to initiate an orderly shutdown
|
||||
/// of the connection.
|
||||
|
||||
|
||||
int sendFrame(const void* buffer, int length, int flags = FRAME_TEXT);
|
||||
/// Sends the contents of the given buffer through
|
||||
/// the socket as a single frame.
|
||||
@@ -209,6 +209,15 @@ public:
|
||||
/// is thrown and the WebSocket connection must be
|
||||
/// terminated.
|
||||
///
|
||||
/// The frame's payload size must not exceed the
|
||||
/// maximum payload size set with setMaxPayloadSize().
|
||||
/// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
|
||||
/// is thrown and the WebSocket connection must be
|
||||
/// terminated.
|
||||
///
|
||||
/// A WebSocketException will also be thrown if a malformed
|
||||
/// or incomplete frame is received.
|
||||
///
|
||||
/// Returns the number of bytes received.
|
||||
/// A return value of 0 means that the peer has
|
||||
/// shut down or closed the connection.
|
||||
@@ -219,10 +228,25 @@ public:
|
||||
///
|
||||
/// The frame flags and opcode (FrameFlags and FrameOpcodes)
|
||||
/// is stored in flags.
|
||||
|
||||
|
||||
int receiveFrame(Poco::Buffer<char>& buffer, int& flags);
|
||||
/// Receives a frame from the socket and stores it
|
||||
/// after any previous content in buffer.
|
||||
/// The buffer will be grown as necessary.
|
||||
///
|
||||
/// The frame's payload size must not exceed the
|
||||
/// maximum payload size set with setMaxPayloadSize().
|
||||
/// If it does, a WebSocketException (WS_ERR_PAYLOAD_TOO_BIG)
|
||||
/// is thrown and the WebSocket connection must be
|
||||
/// terminated.
|
||||
///
|
||||
/// A WebSocketException will also be thrown if a malformed
|
||||
/// or incomplete frame is received.
|
||||
///
|
||||
/// If this method is used, a reasonable maximum payload size should
|
||||
/// be set with setMaxPayloadSize() to prevent a potential
|
||||
/// DoS attack (memory exhaustion) by sending a WebSocket frame
|
||||
/// header with a huge payload size.
|
||||
///
|
||||
/// Returns the number of bytes received.
|
||||
/// A return value of 0 means that the peer has
|
||||
@@ -239,16 +263,26 @@ public:
|
||||
/// Returns WS_SERVER if the WebSocket is a server-side
|
||||
/// WebSocket, or WS_CLIENT otherwise.
|
||||
|
||||
void setMaxPayloadSize(int maxPayloadSize);
|
||||
/// Sets the maximum payload size for receiveFrame().
|
||||
///
|
||||
/// The default is std::numeric_limits<int>::max().
|
||||
|
||||
int getMaxPayloadSize() const;
|
||||
/// Returns the maximum payload size for receiveFrame().
|
||||
///
|
||||
/// The default is std::numeric_limits<int>::max().
|
||||
|
||||
static const std::string WEBSOCKET_VERSION;
|
||||
/// The WebSocket protocol version supported (13).
|
||||
|
||||
|
||||
protected:
|
||||
static WebSocketImpl* accept(HTTPServerRequest& request, HTTPServerResponse& response);
|
||||
static WebSocketImpl* connect(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response, HTTPCredentials& credentials);
|
||||
static WebSocketImpl* completeHandshake(HTTPClientSession& cs, HTTPResponse& response, const std::string& key);
|
||||
static std::string computeAccept(const std::string& key);
|
||||
static std::string createKey();
|
||||
|
||||
|
||||
private:
|
||||
WebSocket();
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "Poco/Net/StreamSocketImpl.h"
|
||||
#include "Poco/Buffer.h"
|
||||
#include "Poco/Random.h"
|
||||
#include "Poco/Buffer.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
@@ -37,11 +38,11 @@ class Net_API WebSocketImpl: public StreamSocketImpl
|
||||
public:
|
||||
WebSocketImpl(StreamSocketImpl* pStreamSocketImpl, HTTPSession& session, bool mustMaskPayload);
|
||||
/// Creates a WebSocketImpl.
|
||||
|
||||
|
||||
// StreamSocketImpl
|
||||
virtual int sendBytes(const void* buffer, int length, int flags);
|
||||
/// Sends a WebSocket protocol frame.
|
||||
|
||||
|
||||
virtual int receiveBytes(void* buffer, int length, int flags);
|
||||
/// Receives a WebSocket protocol frame.
|
||||
|
||||
@@ -74,17 +75,27 @@ public:
|
||||
// Internal
|
||||
int frameFlags() const;
|
||||
/// Returns the frame flags of the most recently received frame.
|
||||
|
||||
|
||||
bool mustMaskPayload() const;
|
||||
/// Returns true if the payload must be masked.
|
||||
|
||||
void setMaxPayloadSize(int maxPayloadSize);
|
||||
/// Sets the maximum payload size for receiveFrame().
|
||||
///
|
||||
/// The default is std::numeric_limits<int>::max().
|
||||
|
||||
int getMaxPayloadSize() const;
|
||||
/// Returns the maximum payload size for receiveFrame().
|
||||
///
|
||||
/// The default is std::numeric_limits<int>::max().
|
||||
|
||||
protected:
|
||||
enum
|
||||
{
|
||||
FRAME_FLAG_MASK = 0x80,
|
||||
MAX_HEADER_LENGTH = 14
|
||||
};
|
||||
|
||||
|
||||
int receiveHeader(char mask[4], bool& useMask);
|
||||
int receivePayload(char *buffer, int payloadLength, char mask[4], bool useMask);
|
||||
int receiveNBytes(void* buffer, int bytes);
|
||||
@@ -93,8 +104,9 @@ protected:
|
||||
|
||||
private:
|
||||
WebSocketImpl();
|
||||
|
||||
|
||||
StreamSocketImpl* _pStreamSocketImpl;
|
||||
int _maxPayloadSize;
|
||||
Poco::Buffer<char> _buffer;
|
||||
int _bufferOffset;
|
||||
int _frameFlags;
|
||||
@@ -118,6 +130,12 @@ inline bool WebSocketImpl::mustMaskPayload() const
|
||||
}
|
||||
|
||||
|
||||
inline int WebSocketImpl::getMaxPayloadSize() const
|
||||
{
|
||||
return _maxPayloadSize;
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "Poco/Net/HTTPClientSession.h"
|
||||
#include "Poco/Net/HTTPRequest.h"
|
||||
#include "Poco/Net/HTTPResponse.h"
|
||||
#include <Poco/Net/HTTPCredentials.h>
|
||||
#include "Poco/Net/HTTPCredentials.h"
|
||||
#include "Poco/StreamCopier.h"
|
||||
#include "Poco/NullStream.h"
|
||||
#include "Poco/Path.h"
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
//
|
||||
|
||||
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/Net/HTTPAuthenticationParams.h"
|
||||
#include "Poco/Net/HTTPRequest.h"
|
||||
#include "Poco/Net/HTTPResponse.h"
|
||||
#include "Poco/Net/NetException.h"
|
||||
#include "Poco/String.h"
|
||||
#include "Poco/Ascii.h"
|
||||
#include "Poco/Exception.h"
|
||||
|
||||
|
||||
using Poco::icompare;
|
||||
@@ -66,6 +66,7 @@ namespace Net {
|
||||
|
||||
|
||||
const std::string HTTPAuthenticationParams::REALM("realm");
|
||||
const std::string HTTPAuthenticationParams::NTLM("NTLM");
|
||||
const std::string HTTPAuthenticationParams::WWW_AUTHENTICATE("WWW-Authenticate");
|
||||
const std::string HTTPAuthenticationParams::PROXY_AUTHENTICATE("Proxy-Authenticate");
|
||||
|
||||
@@ -135,20 +136,25 @@ void HTTPAuthenticationParams::fromResponse(const HTTPResponse& response, const
|
||||
bool found = false;
|
||||
while (!found && it != response.end() && icompare(it->first, header) == 0)
|
||||
{
|
||||
const std::string& header2 = it->second;
|
||||
if (icompare(header2, 0, 6, "Basic ") == 0)
|
||||
const std::string& headerValue = it->second;
|
||||
if (icompare(headerValue, 0, 6, "Basic ") == 0)
|
||||
{
|
||||
parse(header2.begin() + 6, header2.end());
|
||||
parse(headerValue.begin() + 6, headerValue.end());
|
||||
found = true;
|
||||
}
|
||||
else if (icompare(header2, 0, 7, "Digest ") == 0)
|
||||
else if (icompare(headerValue, 0, 7, "Digest ") == 0)
|
||||
{
|
||||
parse(header2.begin() + 7, header2.end());
|
||||
parse(headerValue.begin() + 7, headerValue.end());
|
||||
found = true;
|
||||
}
|
||||
else if (icompare(headerValue, 0, 5, "NTLM ") == 0)
|
||||
{
|
||||
set(NTLM, headerValue.substr(5));
|
||||
found = true;
|
||||
}
|
||||
++it;
|
||||
}
|
||||
if (!found) throw NotAuthenticatedException("No Basic or Digest authentication header found");
|
||||
if (!found) throw NotAuthenticatedException("No Basic, Digest or NTLM authentication header found");
|
||||
}
|
||||
|
||||
|
||||
@@ -166,21 +172,27 @@ void HTTPAuthenticationParams::setRealm(const std::string& realm)
|
||||
|
||||
std::string HTTPAuthenticationParams::toString() const
|
||||
{
|
||||
ConstIterator iter = begin();
|
||||
std::string result;
|
||||
|
||||
if (iter != end())
|
||||
if (size() == 1 && find(NTLM) != end())
|
||||
{
|
||||
formatParameter(result, iter->first, iter->second);
|
||||
++iter;
|
||||
result = get(NTLM);
|
||||
}
|
||||
|
||||
for (; iter != end(); ++iter)
|
||||
else
|
||||
{
|
||||
result.append(", ");
|
||||
formatParameter(result, iter->first, iter->second);
|
||||
}
|
||||
ConstIterator iter = begin();
|
||||
|
||||
if (iter != end())
|
||||
{
|
||||
formatParameter(result, iter->first, iter->second);
|
||||
++iter;
|
||||
}
|
||||
|
||||
for (; iter != end(); ++iter)
|
||||
{
|
||||
result.append(", ");
|
||||
formatParameter(result, iter->first, iter->second);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ HTTPBasicCredentials::HTTPBasicCredentials()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
HTTPBasicCredentials::HTTPBasicCredentials(const std::string& username, const std::string& password):
|
||||
_username(username),
|
||||
_password(password)
|
||||
@@ -69,18 +69,25 @@ HTTPBasicCredentials::~HTTPBasicCredentials()
|
||||
}
|
||||
|
||||
|
||||
void HTTPBasicCredentials::clear()
|
||||
{
|
||||
_username.clear();
|
||||
_password.clear();
|
||||
}
|
||||
|
||||
|
||||
void HTTPBasicCredentials::setUsername(const std::string& username)
|
||||
{
|
||||
_username = username;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void HTTPBasicCredentials::setPassword(const std::string& password)
|
||||
{
|
||||
_password = password;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void HTTPBasicCredentials::authenticate(HTTPRequest& request) const
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "Poco/Net/HTTPStream.h"
|
||||
#include "Poco/Net/HTTPFixedLengthStream.h"
|
||||
#include "Poco/Net/HTTPChunkedStream.h"
|
||||
#include "Poco/Net/HTTPBasicCredentials.h"
|
||||
#include "Poco/Net/HTTPCredentials.h"
|
||||
#include "Poco/Net/NetException.h"
|
||||
#include "Poco/NumberFormatter.h"
|
||||
#include "Poco/CountingStream.h"
|
||||
@@ -47,7 +47,8 @@ HTTPClientSession::HTTPClientSession():
|
||||
_reconnect(false),
|
||||
_mustReconnect(false),
|
||||
_expectResponseBody(false),
|
||||
_responseReceived(false)
|
||||
_responseReceived(false),
|
||||
_ntlmProxyAuthenticated(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -62,7 +63,8 @@ HTTPClientSession::HTTPClientSession(const StreamSocket& socket):
|
||||
_reconnect(false),
|
||||
_mustReconnect(false),
|
||||
_expectResponseBody(false),
|
||||
_responseReceived(false)
|
||||
_responseReceived(false),
|
||||
_ntlmProxyAuthenticated(false)
|
||||
{
|
||||
setKeepAlive(true);
|
||||
}
|
||||
@@ -78,7 +80,8 @@ HTTPClientSession::HTTPClientSession(const SocketAddress& address):
|
||||
_reconnect(false),
|
||||
_mustReconnect(false),
|
||||
_expectResponseBody(false),
|
||||
_responseReceived(false)
|
||||
_responseReceived(false),
|
||||
_ntlmProxyAuthenticated(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -93,7 +96,8 @@ HTTPClientSession::HTTPClientSession(const std::string& host, Poco::UInt16 port)
|
||||
_reconnect(false),
|
||||
_mustReconnect(false),
|
||||
_expectResponseBody(false),
|
||||
_responseReceived(false)
|
||||
_responseReceived(false),
|
||||
_ntlmProxyAuthenticated(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -255,8 +259,6 @@ std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request)
|
||||
{
|
||||
_pRequestStream = 0;
|
||||
_pResponseStream = 0;
|
||||
clearException();
|
||||
_responseReceived = false;
|
||||
|
||||
bool keepAlive = getKeepAlive();
|
||||
if (((connected() && !keepAlive) || mustReconnect()) && !_host.empty())
|
||||
@@ -267,17 +269,43 @@ std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request)
|
||||
try
|
||||
{
|
||||
if (!connected())
|
||||
{
|
||||
_ntlmProxyAuthenticated = false;
|
||||
reconnect();
|
||||
}
|
||||
if (!keepAlive)
|
||||
{
|
||||
request.setKeepAlive(false);
|
||||
}
|
||||
if (!request.has(HTTPRequest::HOST) && !_host.empty())
|
||||
{
|
||||
request.setHost(_host, _port);
|
||||
}
|
||||
if (!_proxyConfig.host.empty() && !bypassProxy())
|
||||
{
|
||||
request.setURI(proxyRequestPrefix() + request.getURI());
|
||||
std::string prefix = proxyRequestPrefix();
|
||||
if (!prefix.empty() && request.getURI().compare(0, 7, "http://") != 0 && request.getURI().compare(0, 8, "https://") != 0)
|
||||
request.setURI(prefix + request.getURI());
|
||||
if (keepAlive) request.set(HTTPMessage::PROXY_CONNECTION, HTTPMessage::CONNECTION_KEEP_ALIVE);
|
||||
proxyAuthenticate(request);
|
||||
}
|
||||
_reconnect = keepAlive;
|
||||
return sendRequestImpl(request);
|
||||
}
|
||||
catch (Exception&)
|
||||
{
|
||||
close();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::ostream& HTTPClientSession::sendRequestImpl(const HTTPRequest& request)
|
||||
{
|
||||
_pRequestStream = 0;
|
||||
_pResponseStream = 0;
|
||||
clearException();
|
||||
_responseReceived = false;
|
||||
_expectResponseBody = request.getMethod() != HTTPRequest::HTTP_HEAD;
|
||||
const std::string& method = request.getMethod();
|
||||
if (request.getChunkedTransferEncoding())
|
||||
@@ -312,19 +340,18 @@ std::ostream& HTTPClientSession::sendRequest(HTTPRequest& request)
|
||||
_lastRequest.update();
|
||||
return *_pRequestStream;
|
||||
}
|
||||
catch (Exception&)
|
||||
{
|
||||
close();
|
||||
throw;
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSession::flushRequest()
|
||||
{
|
||||
_pRequestStream = 0;
|
||||
if (networkException()) networkException()->rethrow();
|
||||
}
|
||||
|
||||
|
||||
std::istream& HTTPClientSession::receiveResponse(HTTPResponse& response)
|
||||
{
|
||||
_pRequestStream = 0;
|
||||
if (networkException()) networkException()->rethrow();
|
||||
|
||||
flushRequest();
|
||||
if (!_responseReceived)
|
||||
{
|
||||
do
|
||||
@@ -475,20 +502,90 @@ bool HTTPClientSession::mustReconnect() const
|
||||
|
||||
void HTTPClientSession::proxyAuthenticate(HTTPRequest& request)
|
||||
{
|
||||
proxyAuthenticateImpl(request);
|
||||
proxyAuthenticateImpl(request, _proxyConfig);
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSession::proxyAuthenticateImpl(HTTPRequest& request)
|
||||
void HTTPClientSession::proxyAuthenticateImpl(HTTPRequest& request, const ProxyConfig& proxyConfig)
|
||||
{
|
||||
if (!_proxyConfig.username.empty())
|
||||
switch (proxyConfig.authMethod)
|
||||
{
|
||||
HTTPBasicCredentials creds(_proxyConfig.username, _proxyConfig.password);
|
||||
creds.proxyAuthenticate(request);
|
||||
case PROXY_AUTH_NONE:
|
||||
break;
|
||||
|
||||
case PROXY_AUTH_HTTP_BASIC:
|
||||
_proxyBasicCreds.setUsername(proxyConfig.username);
|
||||
_proxyBasicCreds.setPassword(proxyConfig.password);
|
||||
_proxyBasicCreds.proxyAuthenticate(request);
|
||||
break;
|
||||
|
||||
case PROXY_AUTH_HTTP_DIGEST:
|
||||
if (HTTPCredentials::hasDigestCredentials(request))
|
||||
{
|
||||
_proxyDigestCreds.updateProxyAuthInfo(request);
|
||||
}
|
||||
else
|
||||
{
|
||||
_proxyDigestCreds.setUsername(proxyConfig.username);
|
||||
_proxyDigestCreds.setPassword(proxyConfig.password);
|
||||
proxyAuthenticateDigest(request);
|
||||
}
|
||||
|
||||
case PROXY_AUTH_NTLM:
|
||||
if (_ntlmProxyAuthenticated)
|
||||
{
|
||||
_proxyNTLMCreds.updateProxyAuthInfo(request);
|
||||
}
|
||||
else
|
||||
{
|
||||
_proxyNTLMCreds.setUsername(proxyConfig.username);
|
||||
_proxyNTLMCreds.setPassword(proxyConfig.password);
|
||||
_proxyNTLMCreds.setHost(proxyConfig.host);
|
||||
proxyAuthenticateNTLM(request);
|
||||
_ntlmProxyAuthenticated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSession::proxyAuthenticateDigest(HTTPRequest& request)
|
||||
{
|
||||
HTTPResponse response;
|
||||
request.set(HTTPMessage::PROXY_CONNECTION, HTTPMessage::CONNECTION_KEEP_ALIVE);
|
||||
sendChallengeRequest(request, response);
|
||||
_proxyDigestCreds.proxyAuthenticate(request, response);
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSession::proxyAuthenticateNTLM(HTTPRequest& request)
|
||||
{
|
||||
HTTPResponse response;
|
||||
request.set(HTTPMessage::PROXY_CONNECTION, HTTPMessage::CONNECTION_KEEP_ALIVE);
|
||||
_proxyNTLMCreds.proxyAuthenticate(request, std::string());
|
||||
sendChallengeRequest(request, response);
|
||||
_proxyNTLMCreds.proxyAuthenticate(request, response);
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSession::sendChallengeRequest(const HTTPRequest& request, HTTPResponse& response)
|
||||
{
|
||||
if (!connected())
|
||||
{
|
||||
reconnect();
|
||||
}
|
||||
|
||||
HTTPRequest challengeRequest(request);
|
||||
if (challengeRequest.hasContentLength())
|
||||
{
|
||||
challengeRequest.setContentLength(0);
|
||||
}
|
||||
|
||||
sendRequestImpl(challengeRequest);
|
||||
std::istream& istr = receiveResponse(response);
|
||||
while (istr.good()) istr.get();
|
||||
}
|
||||
|
||||
|
||||
StreamSocket HTTPClientSession::proxyConnect()
|
||||
{
|
||||
ProxyConfig emptyProxyConfig;
|
||||
@@ -499,9 +596,9 @@ StreamSocket HTTPClientSession::proxyConnect()
|
||||
NumberFormatter::append(targetAddress, _port);
|
||||
HTTPRequest proxyRequest(HTTPRequest::HTTP_CONNECT, targetAddress, HTTPMessage::HTTP_1_1);
|
||||
HTTPResponse proxyResponse;
|
||||
proxyRequest.set("Proxy-Connection", "keep-alive");
|
||||
proxyRequest.set("Host", getHost());
|
||||
proxyAuthenticateImpl(proxyRequest);
|
||||
proxyRequest.set(HTTPMessage::PROXY_CONNECTION, HTTPMessage::CONNECTION_KEEP_ALIVE);
|
||||
proxyRequest.set(HTTPRequest::HOST, getHost());
|
||||
proxySession.proxyAuthenticateImpl(proxyRequest, _proxyConfig);
|
||||
proxySession.setKeepAlive(true);
|
||||
proxySession.setSourceAddress(_sourceAddress4);
|
||||
proxySession.setSourceAddress(_sourceAddress6);
|
||||
|
||||
@@ -47,6 +47,13 @@ HTTPCredentials::~HTTPCredentials()
|
||||
}
|
||||
|
||||
|
||||
void HTTPCredentials::clear()
|
||||
{
|
||||
_digest.clear();
|
||||
_ntlm.clear();
|
||||
}
|
||||
|
||||
|
||||
void HTTPCredentials::fromUserInfo(const std::string& userInfo)
|
||||
{
|
||||
std::string username;
|
||||
@@ -67,6 +74,7 @@ void HTTPCredentials::fromURI(const URI& uri)
|
||||
extractCredentials(uri, username, password);
|
||||
setUsername(username);
|
||||
setPassword(password);
|
||||
setHost(uri.getHost());
|
||||
_digest.reset();
|
||||
}
|
||||
|
||||
@@ -85,6 +93,17 @@ void HTTPCredentials::authenticate(HTTPRequest& request, const HTTPResponse& res
|
||||
_digest.authenticate(request, HTTPAuthenticationParams(iter->second.substr(7)));
|
||||
return;
|
||||
}
|
||||
else if (isNTLMCredentials(iter->second))
|
||||
{
|
||||
_ntlm.setUsername(_digest.getUsername());
|
||||
_ntlm.setPassword(_digest.getPassword());
|
||||
if (_ntlm.getHost().empty())
|
||||
{
|
||||
_ntlm.setHost(request.getHost());
|
||||
}
|
||||
_ntlm.authenticate(request, iter->second.substr(5));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,6 +122,10 @@ void HTTPCredentials::updateAuthInfo(HTTPRequest& request)
|
||||
{
|
||||
_digest.updateAuthInfo(request);
|
||||
}
|
||||
else if (isNTLMCredentials(authorization))
|
||||
{
|
||||
_ntlm.updateAuthInfo(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +144,13 @@ void HTTPCredentials::proxyAuthenticate(HTTPRequest& request, const HTTPResponse
|
||||
_digest.proxyAuthenticate(request, HTTPAuthenticationParams(iter->second.substr(7)));
|
||||
return;
|
||||
}
|
||||
else if (isNTLMCredentials(iter->second))
|
||||
{
|
||||
_ntlm.setUsername(_digest.getUsername());
|
||||
_ntlm.setPassword(_digest.getPassword());
|
||||
_ntlm.proxyAuthenticate(request, iter->second.substr(5));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,6 +169,10 @@ void HTTPCredentials::updateProxyAuthInfo(HTTPRequest& request)
|
||||
{
|
||||
_digest.updateProxyAuthInfo(request);
|
||||
}
|
||||
else if (isNTLMCredentials(authorization))
|
||||
{
|
||||
_ntlm.updateProxyAuthInfo(request);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,6 +189,12 @@ bool HTTPCredentials::isDigestCredentials(const std::string& header)
|
||||
}
|
||||
|
||||
|
||||
bool HTTPCredentials::isNTLMCredentials(const std::string& header)
|
||||
{
|
||||
return icompare(header, 0, 4, "NTLM") == 0 && (header.size() > 5 ? Poco::Ascii::isSpace(header[5]) : true);
|
||||
}
|
||||
|
||||
|
||||
bool HTTPCredentials::hasBasicCredentials(const HTTPRequest& request)
|
||||
{
|
||||
return request.has(HTTPRequest::AUTHORIZATION) && isBasicCredentials(request.get(HTTPRequest::AUTHORIZATION));
|
||||
@@ -167,6 +207,12 @@ bool HTTPCredentials::hasDigestCredentials(const HTTPRequest& request)
|
||||
}
|
||||
|
||||
|
||||
bool HTTPCredentials::hasNTLMCredentials(const HTTPRequest& request)
|
||||
{
|
||||
return request.has(HTTPRequest::AUTHORIZATION) && isNTLMCredentials(request.get(HTTPRequest::AUTHORIZATION));
|
||||
}
|
||||
|
||||
|
||||
bool HTTPCredentials::hasProxyBasicCredentials(const HTTPRequest& request)
|
||||
{
|
||||
return request.has(HTTPRequest::PROXY_AUTHORIZATION) && isBasicCredentials(request.get(HTTPRequest::PROXY_AUTHORIZATION));
|
||||
@@ -179,6 +225,12 @@ bool HTTPCredentials::hasProxyDigestCredentials(const HTTPRequest& request)
|
||||
}
|
||||
|
||||
|
||||
bool HTTPCredentials::hasProxyNTLMCredentials(const HTTPRequest& request)
|
||||
{
|
||||
return request.has(HTTPRequest::PROXY_AUTHORIZATION) && isNTLMCredentials(request.get(HTTPRequest::PROXY_AUTHORIZATION));
|
||||
}
|
||||
|
||||
|
||||
void HTTPCredentials::extractCredentials(const std::string& userInfo, std::string& username, std::string& password)
|
||||
{
|
||||
const std::string::size_type p = userInfo.find(':');
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace
|
||||
}
|
||||
return Poco::DigestEngine::digestToHex(engine.digest());
|
||||
}
|
||||
|
||||
|
||||
std::string formatNonceCounter(int counter)
|
||||
{
|
||||
return Poco::NumberFormatter::formatHex(counter, 8);
|
||||
@@ -89,7 +89,7 @@ HTTPDigestCredentials::HTTPDigestCredentials()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
HTTPDigestCredentials::HTTPDigestCredentials(const std::string& username, const std::string& password):
|
||||
_username(username),
|
||||
_password(password)
|
||||
@@ -113,7 +113,7 @@ void HTTPDigestCredentials::setUsername(const std::string& username)
|
||||
{
|
||||
_username = username;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void HTTPDigestCredentials::setPassword(const std::string& password)
|
||||
{
|
||||
@@ -121,6 +121,13 @@ void HTTPDigestCredentials::setPassword(const std::string& password)
|
||||
}
|
||||
|
||||
|
||||
void HTTPDigestCredentials::clear()
|
||||
{
|
||||
_username.clear();
|
||||
_password.clear();
|
||||
}
|
||||
|
||||
|
||||
void HTTPDigestCredentials::authenticate(HTTPRequest& request, const HTTPResponse& response)
|
||||
{
|
||||
authenticate(request, HTTPAuthenticationParams(response));
|
||||
|
||||
@@ -38,6 +38,7 @@ const std::string HTTPMessage::CONTENT_LENGTH = "Content-Length";
|
||||
const std::string HTTPMessage::CONTENT_TYPE = "Content-Type";
|
||||
const std::string HTTPMessage::TRANSFER_ENCODING = "Transfer-Encoding";
|
||||
const std::string HTTPMessage::CONNECTION = "Connection";
|
||||
const std::string HTTPMessage::PROXY_CONNECTION = "Proxy-Connection";
|
||||
const std::string HTTPMessage::CONNECTION_KEEP_ALIVE = "Keep-Alive";
|
||||
const std::string HTTPMessage::CONNECTION_CLOSE = "Close";
|
||||
const std::string HTTPMessage::EMPTY;
|
||||
@@ -55,11 +56,29 @@ HTTPMessage::HTTPMessage(const std::string& version):
|
||||
}
|
||||
|
||||
|
||||
HTTPMessage::HTTPMessage(const HTTPMessage& other):
|
||||
MessageHeader(other),
|
||||
_version(other._version)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPMessage::~HTTPMessage()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPMessage& HTTPMessage::operator = (const HTTPMessage& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
MessageHeader::operator = (other);
|
||||
_version = other._version;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
void HTTPMessage::setVersion(const std::string& version)
|
||||
{
|
||||
_version = version;
|
||||
|
||||
185
Net/src/HTTPNTLMCredentials.cpp
Normal file
185
Net/src/HTTPNTLMCredentials.cpp
Normal file
@@ -0,0 +1,185 @@
|
||||
//
|
||||
// HTTPNTLMCredentials.cpp
|
||||
//
|
||||
// Library: Net
|
||||
// Package: HTTP
|
||||
// Module: HTTPNTLMCredentials
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#include "Poco/Net/HTTPNTLMCredentials.h"
|
||||
#include "Poco/Net/NTLMCredentials.h"
|
||||
#include "Poco/Net/HTTPAuthenticationParams.h"
|
||||
#include "Poco/Net/HTTPRequest.h"
|
||||
#include "Poco/Net/HTTPResponse.h"
|
||||
#include "Poco/Net/NetException.h"
|
||||
#include "Poco/DateTime.h"
|
||||
#include "Poco/NumberFormatter.h"
|
||||
#include "Poco/Exception.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
const std::string HTTPNTLMCredentials::SCHEME = "NTLM";
|
||||
|
||||
|
||||
HTTPNTLMCredentials::HTTPNTLMCredentials()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPNTLMCredentials::HTTPNTLMCredentials(const std::string& username, const std::string& password):
|
||||
_username(username),
|
||||
_password(password)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPNTLMCredentials::~HTTPNTLMCredentials()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::clear()
|
||||
{
|
||||
_username.clear();
|
||||
_password.clear();
|
||||
_host.clear();
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::setUsername(const std::string& username)
|
||||
{
|
||||
_username = username;
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::setPassword(const std::string& password)
|
||||
{
|
||||
_password = password;
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::setHost(const std::string& host)
|
||||
{
|
||||
_host = host;
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::authenticate(HTTPRequest& request, const HTTPResponse& response)
|
||||
{
|
||||
HTTPAuthenticationParams params(response);
|
||||
authenticate(request, params.get(HTTPAuthenticationParams::NTLM, ""));
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::authenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64)
|
||||
{
|
||||
std::string ntlmMessage = createNTLMMessage(ntlmChallengeBase64);
|
||||
request.setCredentials(SCHEME, ntlmMessage);
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::updateAuthInfo(HTTPRequest& request)
|
||||
{
|
||||
request.removeCredentials();
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response)
|
||||
{
|
||||
HTTPAuthenticationParams params(response, HTTPAuthenticationParams::PROXY_AUTHENTICATE);
|
||||
proxyAuthenticate(request, params.get(HTTPAuthenticationParams::NTLM, ""));
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::proxyAuthenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64)
|
||||
{
|
||||
std::string ntlmMessage = createNTLMMessage(ntlmChallengeBase64);
|
||||
request.setProxyCredentials(SCHEME, ntlmMessage);
|
||||
}
|
||||
|
||||
|
||||
void HTTPNTLMCredentials::updateProxyAuthInfo(HTTPRequest& request)
|
||||
{
|
||||
request.removeProxyCredentials();
|
||||
}
|
||||
|
||||
|
||||
std::string HTTPNTLMCredentials::createNTLMMessage(const std::string& responseAuthParams)
|
||||
{
|
||||
if (responseAuthParams.empty())
|
||||
{
|
||||
std::vector<unsigned char> negotiateBuf;
|
||||
if (useSSPINTLM())
|
||||
{
|
||||
_pNTLMContext = SSPINTLMCredentials::createNTLMContext(_host, SSPINTLMCredentials::SERVICE_HTTP);
|
||||
negotiateBuf = SSPINTLMCredentials::negotiate(*_pNTLMContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
NTLMCredentials::NegotiateMessage negotiateMsg;
|
||||
std::string username;
|
||||
NTLMCredentials::splitUsername(_username, username, negotiateMsg.domain);
|
||||
negotiateBuf = NTLMCredentials::formatNegotiateMessage(negotiateMsg);
|
||||
}
|
||||
return NTLMCredentials::toBase64(negotiateBuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<unsigned char> buffer = NTLMCredentials::fromBase64(responseAuthParams);
|
||||
if (buffer.empty()) throw HTTPException("Invalid NTLM challenge");
|
||||
std::vector<unsigned char> authenticateBuf;
|
||||
if (useSSPINTLM() && _pNTLMContext)
|
||||
{
|
||||
authenticateBuf = SSPINTLMCredentials::authenticate(*_pNTLMContext, buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
NTLMCredentials::ChallengeMessage challengeMsg;
|
||||
if (NTLMCredentials::parseChallengeMessage(&buffer[0], buffer.size(), challengeMsg))
|
||||
{
|
||||
if ((challengeMsg.flags & NTLMCredentials::NTLM_FLAG_NEGOTIATE_NTLM2_KEY) == 0)
|
||||
{
|
||||
throw HTTPException("Proxy does not support NTLMv2 authentication");
|
||||
}
|
||||
|
||||
std::string username;
|
||||
std::string domain;
|
||||
NTLMCredentials::splitUsername(_username, username, domain);
|
||||
|
||||
NTLMCredentials::AuthenticateMessage authenticateMsg;
|
||||
authenticateMsg.flags = challengeMsg.flags;
|
||||
authenticateMsg.target = challengeMsg.target;
|
||||
authenticateMsg.username = username;
|
||||
|
||||
std::vector<unsigned char> lmNonce = NTLMCredentials::createNonce();
|
||||
std::vector<unsigned char> ntlmNonce = NTLMCredentials::createNonce();
|
||||
Poco::UInt64 timestamp = NTLMCredentials::createTimestamp();
|
||||
std::vector<unsigned char> ntlm2Hash = NTLMCredentials::createNTLMv2Hash(username, challengeMsg.target, _password);
|
||||
|
||||
authenticateMsg.lmResponse = NTLMCredentials::createLMv2Response(ntlm2Hash, challengeMsg.challenge, lmNonce);
|
||||
authenticateMsg.ntlmResponse = NTLMCredentials::createNTLMv2Response(ntlm2Hash, challengeMsg.challenge, ntlmNonce, challengeMsg.targetInfo, timestamp);
|
||||
|
||||
authenticateBuf = NTLMCredentials::formatAuthenticateMessage(authenticateMsg);
|
||||
}
|
||||
else throw HTTPException("Invalid NTLM challenge");
|
||||
}
|
||||
return NTLMCredentials::toBase64(authenticateBuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
@@ -74,11 +74,31 @@ HTTPRequest::HTTPRequest(const std::string& method, const std::string& uri, cons
|
||||
}
|
||||
|
||||
|
||||
HTTPRequest::HTTPRequest(const HTTPRequest& other):
|
||||
HTTPMessage(other),
|
||||
_method(other._method),
|
||||
_uri(other._uri)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPRequest::~HTTPRequest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPRequest& HTTPRequest::operator = (const HTTPRequest& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
HTTPMessage::operator = (other);
|
||||
_method = other._method;
|
||||
_uri = other._uri;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
void HTTPRequest::setMethod(const std::string& method)
|
||||
{
|
||||
_method = method;
|
||||
@@ -172,6 +192,12 @@ void HTTPRequest::setCredentials(const std::string& scheme, const std::string& a
|
||||
}
|
||||
|
||||
|
||||
void HTTPRequest::removeCredentials()
|
||||
{
|
||||
erase(AUTHORIZATION);
|
||||
}
|
||||
|
||||
|
||||
bool HTTPRequest::hasProxyCredentials() const
|
||||
{
|
||||
return has(PROXY_AUTHORIZATION);
|
||||
@@ -190,6 +216,12 @@ void HTTPRequest::setProxyCredentials(const std::string& scheme, const std::stri
|
||||
}
|
||||
|
||||
|
||||
void HTTPRequest::removeProxyCredentials()
|
||||
{
|
||||
erase(PROXY_AUTHORIZATION);
|
||||
}
|
||||
|
||||
|
||||
void HTTPRequest::write(std::ostream& ostr) const
|
||||
{
|
||||
ostr << _method << " " << _uri << " " << getVersion() << "\r\n";
|
||||
|
||||
@@ -140,11 +140,31 @@ HTTPResponse::HTTPResponse(const std::string& version, HTTPStatus status):
|
||||
}
|
||||
|
||||
|
||||
HTTPResponse::HTTPResponse(const HTTPResponse& other):
|
||||
HTTPMessage(other),
|
||||
_status(other._status),
|
||||
_reason(other._reason)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPResponse::~HTTPResponse()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
HTTPResponse& HTTPResponse::operator = (const HTTPResponse& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
HTTPMessage::operator = (other);
|
||||
_status = other._status;
|
||||
_reason = other._reason;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
void HTTPResponse::setStatus(HTTPStatus status)
|
||||
{
|
||||
_status = status;
|
||||
|
||||
380
Net/src/NTLMCredentials.cpp
Normal file
380
Net/src/NTLMCredentials.cpp
Normal file
@@ -0,0 +1,380 @@
|
||||
//
|
||||
// NTLMCredentials.cpp
|
||||
//
|
||||
// Library: Net
|
||||
// Package: NTLM
|
||||
// Module: NTLMCredentials
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#include "Poco/Net/NTLMCredentials.h"
|
||||
#include "Poco/HMACEngine.h"
|
||||
#include "Poco/MD4Engine.h"
|
||||
#include "Poco/MD5Engine.h"
|
||||
#include "Poco/DigestStream.h"
|
||||
#include "Poco/StreamCopier.h"
|
||||
#include "Poco/UTF8Encoding.h"
|
||||
#include "Poco/UTF16Encoding.h"
|
||||
#include "Poco/TextConverter.h"
|
||||
#include "Poco/UTF8String.h"
|
||||
#include "Poco/Random.h"
|
||||
#include "Poco/Timestamp.h"
|
||||
#include "Poco/MemoryStream.h"
|
||||
#include "Poco/Base64Encoder.h"
|
||||
#include "Poco/Base64Decoder.h"
|
||||
#include <sstream>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
const std::string NTLMCredentials::NTLMSSP("NTLMSSP");
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::createNonce()
|
||||
{
|
||||
Poco::MD5Engine md5;
|
||||
Poco::Random rnd;
|
||||
rnd.seed();
|
||||
|
||||
Poco::UInt32 n = rnd.next();
|
||||
md5.update(&n, sizeof(n));
|
||||
|
||||
Poco::Timestamp ts;
|
||||
md5.update(&ts, sizeof(ts));
|
||||
|
||||
Poco::DigestEngine::Digest d = md5.digest();
|
||||
d.resize(8);
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
Poco::UInt64 NTLMCredentials::createTimestamp()
|
||||
{
|
||||
const Poco::UInt64 EPOCH_DELTA_SECONDS = 11644473600; // seconds between January 1, 1970 and January 1, 1601
|
||||
|
||||
Poco::Timestamp now;
|
||||
Poco::UInt64 ts = now.epochMicroseconds();
|
||||
ts += EPOCH_DELTA_SECONDS*1000000; // since January 1, 1601
|
||||
ts *= 10; // tenths of a microsecond
|
||||
return ts;
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::createPasswordHash(const std::string& password)
|
||||
{
|
||||
Poco::UTF8Encoding utf8;
|
||||
Poco::UTF16Encoding utf16(Poco::UTF16Encoding::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
Poco::TextConverter converter(utf8, utf16);
|
||||
|
||||
std::string utf16Password;
|
||||
converter.convert(password, utf16Password);
|
||||
|
||||
Poco::MD4Engine md4;
|
||||
md4.update(utf16Password);
|
||||
return md4.digest();
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::createNTLMv2Hash(const std::string& username, const std::string& target, const std::string& password)
|
||||
{
|
||||
Poco::UTF8Encoding utf8;
|
||||
Poco::UTF16Encoding utf16(Poco::UTF16Encoding::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
Poco::TextConverter converter(utf8, utf16);
|
||||
|
||||
std::vector<unsigned char> passwordHash = createPasswordHash(password);
|
||||
|
||||
std::string userDomain = Poco::UTF8::toUpper(username);
|
||||
userDomain += target;
|
||||
|
||||
std::string utf16UserDomain;
|
||||
converter.convert(userDomain, utf16UserDomain);
|
||||
|
||||
std::string passwordHashString(reinterpret_cast<const char*>(&passwordHash[0]), passwordHash.size());
|
||||
Poco::HMACEngine<Poco::MD5Engine> hmac(passwordHashString);
|
||||
hmac.update(utf16UserDomain);
|
||||
return hmac.digest();
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::createLMv2Response(const std::vector<unsigned char>& ntlm2Hash, const std::vector<unsigned char>& challenge, const std::vector<unsigned char>& nonce)
|
||||
{
|
||||
poco_assert (challenge.size() == 8);
|
||||
poco_assert (nonce.size() == 8);
|
||||
|
||||
std::vector<unsigned char> lm2Response;
|
||||
|
||||
std::string ntlm2HashString(reinterpret_cast<const char*>(&ntlm2Hash[0]), ntlm2Hash.size());
|
||||
Poco::HMACEngine<Poco::MD5Engine> hmac2(ntlm2HashString);
|
||||
hmac2.update(&challenge[0], challenge.size());
|
||||
hmac2.update(&nonce[0], nonce.size());
|
||||
lm2Response = hmac2.digest();
|
||||
lm2Response.insert(lm2Response.end(), nonce.begin(), nonce.end());
|
||||
|
||||
return lm2Response;
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::createNTLMv2Response(const std::vector<unsigned char>& ntlm2Hash, const std::vector<unsigned char>& challenge, const std::vector<unsigned char>& nonce, const std::vector<unsigned char>& targetInfo, Poco::UInt64 timestamp)
|
||||
{
|
||||
poco_assert (challenge.size() == 8);
|
||||
poco_assert (nonce.size() == 8);
|
||||
|
||||
std::vector<unsigned char> blob;
|
||||
blob.resize(28 + targetInfo.size() + 4 + 16);
|
||||
|
||||
Poco::MemoryOutputStream blobStream(reinterpret_cast<char*>(&blob[16]), blob.size() - 16);
|
||||
Poco::BinaryWriter writer(blobStream, Poco::BinaryWriter::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
writer << Poco::UInt32(0x0101);
|
||||
writer << Poco::UInt32(0);
|
||||
writer << timestamp;
|
||||
writer.writeRaw(reinterpret_cast<const char*>(&nonce[0]), nonce.size());
|
||||
writer << Poco::UInt32(0);
|
||||
if (targetInfo.size() > 0)
|
||||
{
|
||||
writer.writeRaw(reinterpret_cast<const char*>(&targetInfo[0]), targetInfo.size());
|
||||
}
|
||||
writer << Poco::UInt32(0);
|
||||
|
||||
poco_assert_dbg (blobStream.charsWritten() == blob.size() - 16);
|
||||
|
||||
std::string ntlm2HashString(reinterpret_cast<const char*>(&ntlm2Hash[0]), ntlm2Hash.size());
|
||||
Poco::HMACEngine<Poco::MD5Engine> hmac2(ntlm2HashString);
|
||||
hmac2.update(&challenge[0], challenge.size());
|
||||
hmac2.update(&blob[16], blob.size() - 16);
|
||||
Poco::DigestEngine::Digest d = hmac2.digest();
|
||||
|
||||
poco_assert_dbg (d.size() == 16);
|
||||
|
||||
std::memcpy(&blob[0], &d[0], 16);
|
||||
|
||||
return blob;
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::formatNegotiateMessage(const NegotiateMessage& message)
|
||||
{
|
||||
Poco::UTF8Encoding utf8;
|
||||
Poco::UTF16Encoding utf16(Poco::UTF16Encoding::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
Poco::TextConverter converter(utf8, utf16);
|
||||
|
||||
std::string utf16Domain;
|
||||
converter.convert(message.domain, utf16Domain);
|
||||
|
||||
std::string utf16Workstation;
|
||||
converter.convert(message.workstation, utf16Workstation);
|
||||
|
||||
std::size_t size = 8 // signature
|
||||
+ 4 // type
|
||||
+ 4 // flags
|
||||
+ 8 + utf16Domain.size()
|
||||
+ 8 + utf16Workstation.size();
|
||||
|
||||
Poco::UInt32 flags = message.flags | NTLM_FLAG_NEGOTIATE_UNICODE | NTLM_FLAG_REQUEST_TARGET | NTLM_FLAG_NEGOTIATE_NTLM | NTLM_FLAG_NEGOTIATE_NTLM2_KEY | NTLM_FLAG_NEGOTIATE_ALWAYS_SIGN;
|
||||
if (!utf16Domain.empty()) flags |= NTLM_FLAG_DOMAIN_SUPPLIED;
|
||||
if (!utf16Workstation.empty()) flags |= NTLM_FLAG_WORKST_SUPPLIED;
|
||||
|
||||
BufferDesc domainDesc(static_cast<Poco::UInt16>(utf16Domain.size()), 8 + 4 + 4 + 8);
|
||||
BufferDesc workstDesc(static_cast<Poco::UInt16>(utf16Workstation.size()), domainDesc.offset + domainDesc.length);
|
||||
|
||||
std::vector<unsigned char> buffer(size);
|
||||
Poco::MemoryOutputStream bufferStream(reinterpret_cast<char*>(&buffer[0]), buffer.size());
|
||||
Poco::BinaryWriter writer(bufferStream, Poco::BinaryWriter::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
writer.writeRaw(NTLMSSP.c_str(), 8);
|
||||
writer << Poco::UInt32(NTLM_MESSAGE_TYPE_NEGOTIATE);
|
||||
writer << flags;
|
||||
writeBufferDesc(writer, domainDesc);
|
||||
writeBufferDesc(writer, workstDesc);
|
||||
writer.writeRaw(utf16Domain);
|
||||
writer.writeRaw(utf16Workstation);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
bool NTLMCredentials::parseChallengeMessage(const unsigned char* buffer, std::size_t size, ChallengeMessage& message)
|
||||
{
|
||||
Poco::MemoryInputStream istr(reinterpret_cast<const char*>(buffer), size);
|
||||
Poco::BinaryReader reader(istr, Poco::BinaryReader::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
|
||||
std::string signature;
|
||||
reader.readRaw(7, signature);
|
||||
if (signature != NTLMSSP) return false;
|
||||
|
||||
Poco::UInt8 zero;
|
||||
reader >> zero;
|
||||
if (zero != 0) return false;
|
||||
|
||||
Poco::UInt32 type;
|
||||
reader >> type;
|
||||
if (type != NTLM_MESSAGE_TYPE_CHALLENGE) return false;
|
||||
|
||||
BufferDesc targetDesc;
|
||||
readBufferDesc(reader, targetDesc);
|
||||
if (targetDesc.offset + targetDesc.length > size) return false;
|
||||
|
||||
reader >> message.flags;
|
||||
|
||||
message.challenge.resize(8);
|
||||
reader.readRaw(reinterpret_cast<char*>(&message.challenge[0]), 8);
|
||||
|
||||
if (message.flags & NTLM_FLAG_NEGOTIATE_TARGET)
|
||||
{
|
||||
Poco::UInt64 reserved;
|
||||
reader >> reserved;
|
||||
}
|
||||
|
||||
BufferDesc targetInfoDesc;
|
||||
if (message.flags & NTLM_FLAG_NEGOTIATE_TARGET)
|
||||
{
|
||||
readBufferDesc(reader, targetInfoDesc);
|
||||
if (targetInfoDesc.offset + targetInfoDesc.length > size) return false;
|
||||
}
|
||||
|
||||
if (targetDesc.length > 0)
|
||||
{
|
||||
if (message.flags & NTLM_FLAG_NEGOTIATE_UNICODE)
|
||||
{
|
||||
Poco::UTF16Encoding utf16(Poco::UTF16Encoding::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
Poco::UTF8Encoding utf8;
|
||||
Poco::TextConverter converter(utf16, utf8);
|
||||
converter.convert(buffer + targetDesc.offset, targetDesc.length, message.target);
|
||||
if (targetDesc.reserved == 0) message.target.resize(std::strlen(message.target.c_str()));
|
||||
}
|
||||
else
|
||||
{
|
||||
message.target.assign(buffer + targetDesc.offset, buffer + targetDesc.offset + targetDesc.length);
|
||||
}
|
||||
}
|
||||
|
||||
if (targetInfoDesc.length > 0)
|
||||
{
|
||||
message.targetInfo.assign(buffer + targetInfoDesc.offset, buffer + targetInfoDesc.offset + targetInfoDesc.length);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::formatAuthenticateMessage(const AuthenticateMessage& message)
|
||||
{
|
||||
Poco::UTF8Encoding utf8;
|
||||
Poco::UTF16Encoding utf16(Poco::UTF16Encoding::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
Poco::TextConverter converter(utf8, utf16);
|
||||
|
||||
std::string utf16Target;
|
||||
converter.convert(message.target, utf16Target);
|
||||
|
||||
std::string utf16Username;
|
||||
converter.convert(message.username, utf16Username);
|
||||
|
||||
std::string utf16Workstation;
|
||||
converter.convert(message.workstation, utf16Workstation);
|
||||
|
||||
std::size_t size = 8 // signature
|
||||
+ 4 // type
|
||||
+ 8 + message.lmResponse.size()
|
||||
+ 8 + message.ntlmResponse.size()
|
||||
+ 8 + utf16Target.size()
|
||||
+ 8 + utf16Username.size()
|
||||
+ 8 + utf16Workstation.size()
|
||||
+ 8 // session key
|
||||
+ 4; // flags
|
||||
|
||||
Poco::UInt32 flags = message.flags | NTLM_FLAG_NEGOTIATE_UNICODE;
|
||||
|
||||
BufferDesc lmDesc(static_cast<Poco::UInt16>(message.lmResponse.size()), 64);
|
||||
BufferDesc ntlmDesc(static_cast<Poco::UInt16>(message.ntlmResponse.size()), lmDesc.offset + lmDesc.length);
|
||||
BufferDesc targetDesc(static_cast<Poco::UInt16>(utf16Target.size()), ntlmDesc.offset + ntlmDesc.length);
|
||||
BufferDesc usernameDesc(static_cast<Poco::UInt16>(utf16Username.size()), targetDesc.offset + targetDesc.length);
|
||||
BufferDesc workstDesc(static_cast<Poco::UInt16>(utf16Workstation.size()), usernameDesc.offset + usernameDesc.length);
|
||||
BufferDesc sessionKeyDesc(0, workstDesc.offset + workstDesc.length);
|
||||
|
||||
std::vector<unsigned char> buffer(size);
|
||||
Poco::MemoryOutputStream bufferStream(reinterpret_cast<char*>(&buffer[0]), buffer.size());
|
||||
Poco::BinaryWriter writer(bufferStream, Poco::BinaryWriter::LITTLE_ENDIAN_BYTE_ORDER);
|
||||
writer.writeRaw(NTLMSSP.c_str(), 8);
|
||||
writer << Poco::UInt32(NTLM_MESSAGE_TYPE_AUTHENTICATE);
|
||||
writeBufferDesc(writer, lmDesc);
|
||||
writeBufferDesc(writer, ntlmDesc);
|
||||
writeBufferDesc(writer, targetDesc);
|
||||
writeBufferDesc(writer, usernameDesc);
|
||||
writeBufferDesc(writer, workstDesc);
|
||||
writeBufferDesc(writer, sessionKeyDesc);
|
||||
writer << flags;
|
||||
writer.writeRaw(reinterpret_cast<const char*>(&message.lmResponse[0]), message.lmResponse.size());
|
||||
writer.writeRaw(reinterpret_cast<const char*>(&message.ntlmResponse[0]), message.ntlmResponse.size());
|
||||
writer.writeRaw(utf16Target);
|
||||
writer.writeRaw(utf16Username);
|
||||
writer.writeRaw(utf16Workstation);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
void NTLMCredentials::readBufferDesc(Poco::BinaryReader& reader, BufferDesc& desc)
|
||||
{
|
||||
reader >> desc.length >> desc.reserved >> desc.offset;
|
||||
}
|
||||
|
||||
|
||||
void NTLMCredentials::writeBufferDesc(Poco::BinaryWriter& writer, const BufferDesc& desc)
|
||||
{
|
||||
writer << desc.length << desc.reserved << desc.offset;
|
||||
}
|
||||
|
||||
|
||||
void NTLMCredentials::splitUsername(const std::string& usernameAndDomain, std::string& username, std::string& domain)
|
||||
{
|
||||
std::string::size_type pos = usernameAndDomain.find('\\');
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
domain.assign(usernameAndDomain, 0, pos);
|
||||
username.assign(usernameAndDomain, pos + 1, std::string::npos);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
pos = usernameAndDomain.find('@');
|
||||
if (pos != std::string::npos)
|
||||
{
|
||||
username.assign(usernameAndDomain, 0, pos);
|
||||
domain.assign(usernameAndDomain, pos + 1, std::string::npos);
|
||||
return;
|
||||
}
|
||||
}
|
||||
username = usernameAndDomain;
|
||||
}
|
||||
|
||||
|
||||
std::string NTLMCredentials::toBase64(const std::vector<unsigned char>& buffer)
|
||||
{
|
||||
std::ostringstream ostr;
|
||||
Poco::Base64Encoder base64(ostr);
|
||||
base64.rdbuf()->setLineLength(0);
|
||||
base64.write(reinterpret_cast<const char*>(&buffer[0]), buffer.size());
|
||||
base64.close();
|
||||
return ostr.str();
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> NTLMCredentials::fromBase64(const std::string& base64)
|
||||
{
|
||||
Poco::MemoryInputStream istr(base64.data(), base64.size());
|
||||
Poco::Base64Decoder debase64(istr);
|
||||
std::vector<unsigned char> buffer(base64.size());
|
||||
debase64.read(reinterpret_cast<char*>(&buffer[0]), buffer.size());
|
||||
buffer.resize(static_cast<std::size_t>(debase64.gcount()));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "Poco/Net/NetException.h"
|
||||
#include "Poco/Environment.h"
|
||||
#include "Poco/Net/NetworkInterface.h"
|
||||
#include "Poco/Net/NTLMCredentials.h"
|
||||
#include "Poco/Environment.h"
|
||||
#include "Poco/HMACEngine.h"
|
||||
#include "Poco/MD5Engine.h"
|
||||
#include "Poco/SHA1Engine.h"
|
||||
@@ -236,6 +238,57 @@ void SMTPClientSession::loginUsingXOAUTH2(const std::string& username, const std
|
||||
}
|
||||
|
||||
|
||||
void SMTPClientSession::loginUsingNTLM(const std::string& username, const std::string& password)
|
||||
{
|
||||
// Implementation is based on:
|
||||
// [MS-SMTPNTLM]: NT LAN Manager (NTLM) Authentication: Simple Mail Transfer Protocol (SMTP) Extension
|
||||
// https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smtpntlm/50c668f6-5ffc-4616-96df-b5a3f4b3311d
|
||||
|
||||
NTLMCredentials::NegotiateMessage negotiateMsg;
|
||||
std::string user;
|
||||
std::string domain;
|
||||
NTLMCredentials::splitUsername(username, user, domain);
|
||||
negotiateMsg.domain = domain;
|
||||
std::vector<unsigned char> negotiateBuf = NTLMCredentials::formatNegotiateMessage(negotiateMsg);
|
||||
|
||||
std::string response;
|
||||
int status = sendCommand("AUTH NTLM", NTLMCredentials::toBase64(negotiateBuf), response);
|
||||
if (status == 334)
|
||||
{
|
||||
std::vector<unsigned char> buffer = NTLMCredentials::fromBase64(response.substr(4));
|
||||
if (buffer.empty()) throw SMTPException("Invalid NTLM challenge");
|
||||
NTLMCredentials::ChallengeMessage challengeMsg;
|
||||
if (NTLMCredentials::parseChallengeMessage(&buffer[0], buffer.size(), challengeMsg))
|
||||
{
|
||||
if ((challengeMsg.flags & NTLMCredentials::NTLM_FLAG_NEGOTIATE_NTLM2_KEY) == 0)
|
||||
{
|
||||
throw SMTPException("Server does not support NTLMv2 authentication");
|
||||
}
|
||||
|
||||
NTLMCredentials::AuthenticateMessage authenticateMsg;
|
||||
authenticateMsg.flags = challengeMsg.flags;
|
||||
authenticateMsg.target = challengeMsg.target;
|
||||
authenticateMsg.username = user;
|
||||
|
||||
std::vector<unsigned char> lmNonce = NTLMCredentials::createNonce();
|
||||
std::vector<unsigned char> ntlmNonce = NTLMCredentials::createNonce();
|
||||
Poco::UInt64 timestamp = NTLMCredentials::createTimestamp();
|
||||
std::vector<unsigned char> ntlm2Hash = NTLMCredentials::createNTLMv2Hash(user, challengeMsg.target, password);
|
||||
|
||||
authenticateMsg.lmResponse = NTLMCredentials::createLMv2Response(ntlm2Hash, challengeMsg.challenge, lmNonce);
|
||||
authenticateMsg.ntlmResponse = NTLMCredentials::createNTLMv2Response(ntlm2Hash, challengeMsg.challenge, ntlmNonce, challengeMsg.targetInfo, timestamp);
|
||||
|
||||
std::vector<unsigned char> authenticateBuf = NTLMCredentials::formatAuthenticateMessage(authenticateMsg);
|
||||
|
||||
status = sendCommand(NTLMCredentials::toBase64(authenticateBuf), response);
|
||||
if (status != 235) throw SMTPException("NTLM authentication failed", response, status);
|
||||
}
|
||||
else throw SMTPException("Invalid NTLM challenge");
|
||||
}
|
||||
else throw SMTPException("Server does not support NTLM authentication");
|
||||
}
|
||||
|
||||
|
||||
void SMTPClientSession::login(LoginMethod loginMethod, const std::string& username, const std::string& password)
|
||||
{
|
||||
login(Environment::nodeName(), loginMethod, username, password);
|
||||
@@ -287,6 +340,14 @@ void SMTPClientSession::login(const std::string& hostname, LoginMethod loginMeth
|
||||
}
|
||||
else throw SMTPException("The mail service does not support XOAUTH2 authentication", response);
|
||||
}
|
||||
else if (loginMethod == AUTH_NTLM)
|
||||
{
|
||||
if (response.find("NTLM", 0) != std::string::npos)
|
||||
{
|
||||
loginUsingNTLM(username, password);
|
||||
}
|
||||
else throw SMTPException("The mail service does not support NTLM authentication", response);
|
||||
}
|
||||
else if (loginMethod != AUTH_NONE)
|
||||
{
|
||||
throw SMTPException("The autentication method is not supported");
|
||||
|
||||
318
Net/src/SSPINTLMCredentials.cpp
Normal file
318
Net/src/SSPINTLMCredentials.cpp
Normal file
@@ -0,0 +1,318 @@
|
||||
//
|
||||
// SSPINTLMCredentials.cpp
|
||||
//
|
||||
// Library: Net
|
||||
// Package: NTLM
|
||||
// Module: SSPINTLMCredentials
|
||||
//
|
||||
// Copyright (c) 2019, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#include "Poco/Net/SSPINTLMCredentials.h"
|
||||
|
||||
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
|
||||
|
||||
#include "Poco/SharedLibrary.h"
|
||||
#include "Poco/SingletonHolder.h"
|
||||
#include "Poco/UnicodeConverter.h"
|
||||
#include <vector>
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#define SECURITY_WIN32
|
||||
#include <security.h>
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
struct NTLMContextImpl
|
||||
{
|
||||
NTLMContextImpl():
|
||||
maxTokenSize(0)
|
||||
{
|
||||
SecInvalidateHandle(&credentials);
|
||||
SecInvalidateHandle(&context);
|
||||
}
|
||||
|
||||
std::size_t maxTokenSize;
|
||||
CredHandle credentials;
|
||||
CtxtHandle context;
|
||||
std::wstring spn;
|
||||
};
|
||||
|
||||
|
||||
class SSPINTLMProvider
|
||||
{
|
||||
public:
|
||||
SSPINTLMProvider():
|
||||
_securityLib("security.dll"),
|
||||
_pSecFunTable(0)
|
||||
{
|
||||
InitSecurityInterfaceW pInitSecurityInterface = reinterpret_cast<InitSecurityInterfaceW>(_securityLib.getSymbol("InitSecurityInterfaceW"));
|
||||
if (pInitSecurityInterface)
|
||||
{
|
||||
_pSecFunTable = pInitSecurityInterface();
|
||||
}
|
||||
if (!_pSecFunTable) throw Poco::SystemException("Failed to initialize SSPI");
|
||||
}
|
||||
|
||||
~SSPINTLMProvider()
|
||||
{
|
||||
}
|
||||
|
||||
bool available()
|
||||
{
|
||||
PSecPkgInfoW pSecPkgInfo;
|
||||
SECURITY_STATUS status = _pSecFunTable->QuerySecurityPackageInfoW(L"NTLM", &pSecPkgInfo);
|
||||
if (status == SEC_E_OK)
|
||||
{
|
||||
_pSecFunTable->FreeContextBuffer(pSecPkgInfo);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
Poco::SharedPtr<NTLMContext> createNTLMContext(const std::string& host, const std::string& service)
|
||||
{
|
||||
PSecPkgInfoW pSecPkgInfo;
|
||||
SECURITY_STATUS status = _pSecFunTable->QuerySecurityPackageInfoW(L"NTLM", &pSecPkgInfo);
|
||||
if (status != SEC_E_OK) throw Poco::SystemException("NTLM SSPI not available", status);
|
||||
|
||||
std::size_t maxTokenSize = pSecPkgInfo->cbMaxToken;
|
||||
_pSecFunTable->FreeContextBuffer(pSecPkgInfo);
|
||||
|
||||
Poco::SharedPtr<NTLMContext> pContext = new NTLMContext(new NTLMContextImpl);
|
||||
pContext->_pImpl->maxTokenSize = maxTokenSize;
|
||||
|
||||
TimeStamp expiry;
|
||||
status = _pSecFunTable->AcquireCredentialsHandleW(
|
||||
NULL,
|
||||
L"NTLM",
|
||||
SECPKG_CRED_OUTBOUND,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&pContext->_pImpl->credentials,
|
||||
&expiry);
|
||||
|
||||
if (status != SEC_E_OK) throw Poco::SystemException("Failed to acquire NTLM credentials", status);
|
||||
|
||||
std::string spn = service;
|
||||
spn += '/';
|
||||
spn += host;
|
||||
Poco::UnicodeConverter::convert(spn, pContext->_pImpl->spn);
|
||||
|
||||
return pContext;
|
||||
}
|
||||
|
||||
std::vector<unsigned char> negotiate(NTLMContext& context)
|
||||
{
|
||||
std::vector<unsigned char> buffer(context._pImpl->maxTokenSize);
|
||||
|
||||
SecBuffer msgBuffer;
|
||||
msgBuffer.BufferType = SECBUFFER_TOKEN;
|
||||
msgBuffer.pvBuffer = &buffer[0];
|
||||
msgBuffer.cbBuffer = static_cast<unsigned long>(buffer.size());
|
||||
|
||||
SecBufferDesc msgBufferDesc;
|
||||
msgBufferDesc.ulVersion = SECBUFFER_VERSION;
|
||||
msgBufferDesc.cBuffers = 1;
|
||||
msgBufferDesc.pBuffers = &msgBuffer;
|
||||
|
||||
unsigned long attrs;
|
||||
TimeStamp expiry;
|
||||
SECURITY_STATUS status = _pSecFunTable->InitializeSecurityContextW(
|
||||
&context._pImpl->credentials,
|
||||
NULL,
|
||||
const_cast<SEC_WCHAR*>(context._pImpl->spn.c_str()),
|
||||
0,
|
||||
0,
|
||||
SECURITY_NETWORK_DREP,
|
||||
NULL,
|
||||
0,
|
||||
&context._pImpl->context,
|
||||
&msgBufferDesc,
|
||||
&attrs,
|
||||
&expiry);
|
||||
|
||||
if (status == SEC_I_COMPLETE_NEEDED || status == SEC_I_COMPLETE_AND_CONTINUE)
|
||||
{
|
||||
_pSecFunTable->CompleteAuthToken(&context._pImpl->context, &msgBufferDesc);
|
||||
}
|
||||
else if (status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED)
|
||||
{
|
||||
throw Poco::SystemException("Failed to initialize NTLM security context", status);
|
||||
}
|
||||
|
||||
buffer.resize(msgBuffer.cbBuffer);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
std::vector<unsigned char> authenticate(NTLMContext& context, const std::vector<unsigned char>& challenge)
|
||||
{
|
||||
std::vector<unsigned char> response(context._pImpl->maxTokenSize);
|
||||
|
||||
SecBuffer responseBuffer;
|
||||
responseBuffer.BufferType = SECBUFFER_TOKEN;
|
||||
responseBuffer.pvBuffer = &response[0];
|
||||
responseBuffer.cbBuffer = static_cast<unsigned long>(response.size());
|
||||
|
||||
SecBufferDesc responseBufferDesc;
|
||||
responseBufferDesc.ulVersion = SECBUFFER_VERSION;
|
||||
responseBufferDesc.cBuffers = 1;
|
||||
responseBufferDesc.pBuffers = &responseBuffer;
|
||||
|
||||
SecBuffer challengeBuffer;
|
||||
challengeBuffer.BufferType = SECBUFFER_TOKEN;
|
||||
challengeBuffer.pvBuffer = const_cast<unsigned char*>(&challenge[0]);
|
||||
challengeBuffer.cbBuffer = static_cast<unsigned long>(challenge.size());
|
||||
|
||||
SecBufferDesc challengeBufferDesc;
|
||||
challengeBufferDesc.ulVersion = SECBUFFER_VERSION;
|
||||
challengeBufferDesc.cBuffers = 1;
|
||||
challengeBufferDesc.pBuffers = &challengeBuffer;
|
||||
|
||||
unsigned long attrs;
|
||||
TimeStamp expiry;
|
||||
SECURITY_STATUS status = _pSecFunTable->InitializeSecurityContextW(
|
||||
&context._pImpl->credentials,
|
||||
&context._pImpl->context,
|
||||
const_cast<SEC_WCHAR*>(context._pImpl->spn.c_str()),
|
||||
0,
|
||||
0,
|
||||
SECURITY_NETWORK_DREP,
|
||||
&challengeBufferDesc,
|
||||
0,
|
||||
&context._pImpl->context,
|
||||
&responseBufferDesc,
|
||||
&attrs,
|
||||
&expiry);
|
||||
|
||||
if (status != SEC_E_OK)
|
||||
{
|
||||
throw Poco::SystemException("Failed to create NTLM authenticate message", status);
|
||||
}
|
||||
|
||||
response.resize(responseBuffer.cbBuffer);
|
||||
return response;
|
||||
}
|
||||
|
||||
void clearNTLMContext(NTLMContext& ctx)
|
||||
{
|
||||
if (SecIsValidHandle(&ctx._pImpl->context))
|
||||
{
|
||||
_pSecFunTable->DeleteSecurityContext(&ctx._pImpl->context);
|
||||
}
|
||||
if (SecIsValidHandle(&ctx._pImpl->credentials))
|
||||
{
|
||||
_pSecFunTable->FreeCredentialsHandle(&ctx._pImpl->credentials);
|
||||
}
|
||||
}
|
||||
|
||||
static SSPINTLMProvider& instance();
|
||||
|
||||
private:
|
||||
typedef PSecurityFunctionTableW(APIENTRY *InitSecurityInterfaceW)(VOID);
|
||||
|
||||
Poco::SharedLibrary _securityLib;
|
||||
PSecurityFunctionTableW _pSecFunTable;
|
||||
};
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
static Poco::SingletonHolder<SSPINTLMProvider> sspintlmProviderHolder;
|
||||
}
|
||||
|
||||
|
||||
SSPINTLMProvider& SSPINTLMProvider::instance()
|
||||
{
|
||||
return *sspintlmProviderHolder.get();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
#endif // POCO_OS == POCO_OS_WINDOWS_NT
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
const std::string SSPINTLMCredentials::SERVICE_HTTP("HTTP");
|
||||
const std::string SSPINTLMCredentials::SERVICE_SMTP("SMTP");
|
||||
|
||||
|
||||
NTLMContext::NTLMContext(NTLMContextImpl* pImpl):
|
||||
_pImpl(pImpl)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
NTLMContext::~NTLMContext()
|
||||
{
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
SSPINTLMProvider::instance().clearNTLMContext(*this);
|
||||
delete _pImpl;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
bool SSPINTLMCredentials::available()
|
||||
{
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
try
|
||||
{
|
||||
return SSPINTLMProvider::instance().available();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Poco::SharedPtr<NTLMContext> SSPINTLMCredentials::createNTLMContext(const std::string& workstation, const std::string& service)
|
||||
{
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
return SSPINTLMProvider::instance().createNTLMContext(workstation, service);
|
||||
#else
|
||||
throw Poco::NotImplementedException("SSPINTLMCredentials::createNTLMContext() is only available on Windows");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> SSPINTLMCredentials::negotiate(NTLMContext& context)
|
||||
{
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
return SSPINTLMProvider::instance().negotiate(context);
|
||||
#else
|
||||
throw Poco::NotImplementedException("SSPINTLMCredentials::negotiate() is only available on Windows");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned char> SSPINTLMCredentials::authenticate(NTLMContext& context, const std::vector<unsigned char>& challenge)
|
||||
{
|
||||
#if POCO_OS == POCO_OS_WINDOWS_NT
|
||||
return SSPINTLMProvider::instance().authenticate(context, challenge);
|
||||
#else
|
||||
throw Poco::NotImplementedException("SSPINTLMCredentials::authenticate() is only available on Windows");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
@@ -689,7 +689,7 @@ bool SocketImpl::poll(const Poco::Timespan& timeout, int mode)
|
||||
{
|
||||
Poco::Timestamp start;
|
||||
#ifdef _WIN32
|
||||
rc = WSAPoll(&pollBuf, 1, static_cast<INT>(timeout.totalMilliseconds()));
|
||||
rc = WSAPoll(&pollBuf, 1, static_cast<INT>(remainingTime.totalMilliseconds()));
|
||||
#else
|
||||
rc = ::poll(&pollBuf, 1, remainingTime.totalMilliseconds());
|
||||
#endif
|
||||
|
||||
@@ -44,7 +44,7 @@ WebSocket::WebSocket(HTTPServerRequest& request, HTTPServerResponse& response):
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
WebSocket::WebSocket(HTTPClientSession& cs, HTTPRequest& request, HTTPResponse& response):
|
||||
StreamSocket(connect(cs, request, response, _defaultCreds))
|
||||
{
|
||||
@@ -111,7 +111,7 @@ int WebSocket::receiveFrame(void* buffer, int length, int& flags)
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int WebSocket::receiveFrame(Poco::Buffer<char>& buffer, int& flags)
|
||||
{
|
||||
int n = static_cast<WebSocketImpl*>(impl())->receiveBytes(buffer, 0);
|
||||
@@ -126,6 +126,18 @@ WebSocket::Mode WebSocket::mode() const
|
||||
}
|
||||
|
||||
|
||||
void WebSocket::setMaxPayloadSize(int maxPayloadSize)
|
||||
{
|
||||
static_cast<WebSocketImpl*>(impl())->setMaxPayloadSize(maxPayloadSize);
|
||||
}
|
||||
|
||||
|
||||
int WebSocket::getMaxPayloadSize() const
|
||||
{
|
||||
return static_cast<WebSocketImpl*>(impl())->getMaxPayloadSize();
|
||||
}
|
||||
|
||||
|
||||
WebSocketImpl* WebSocket::accept(HTTPServerRequest& request, HTTPServerResponse& response)
|
||||
{
|
||||
if (request.hasToken("Connection", "upgrade") && icompare(request.get("Upgrade", ""), "websocket") == 0)
|
||||
@@ -136,14 +148,14 @@ WebSocketImpl* WebSocket::accept(HTTPServerRequest& request, HTTPServerResponse&
|
||||
std::string key = request.get("Sec-WebSocket-Key", "");
|
||||
Poco::trimInPlace(key);
|
||||
if (key.empty()) throw WebSocketException("Missing Sec-WebSocket-Key in handshake request", WS_ERR_HANDSHAKE_NO_KEY);
|
||||
|
||||
|
||||
response.setStatusAndReason(HTTPResponse::HTTP_SWITCHING_PROTOCOLS);
|
||||
response.set("Upgrade", "websocket");
|
||||
response.set("Connection", "Upgrade");
|
||||
response.set("Sec-WebSocket-Accept", computeAccept(key));
|
||||
response.setContentLength(0);
|
||||
response.setContentLength(HTTPResponse::UNKNOWN_CONTENT_LENGTH);
|
||||
response.send().flush();
|
||||
|
||||
|
||||
HTTPServerRequestImpl& requestImpl = static_cast<HTTPServerRequestImpl&>(request);
|
||||
return new WebSocketImpl(static_cast<StreamSocketImpl*>(requestImpl.detachSocket().impl()), requestImpl.session(), false);
|
||||
}
|
||||
@@ -172,24 +184,28 @@ WebSocketImpl* WebSocket::connect(HTTPClientSession& cs, HTTPRequest& request, H
|
||||
}
|
||||
else if (response.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED)
|
||||
{
|
||||
Poco::NullOutputStream null;
|
||||
Poco::StreamCopier::copyStream(istr, null);
|
||||
credentials.authenticate(request, response);
|
||||
if (!cs.getProxyHost().empty() && !cs.secure())
|
||||
if (!credentials.empty())
|
||||
{
|
||||
cs.reset();
|
||||
cs.proxyTunnel();
|
||||
}
|
||||
cs.sendRequest(request);
|
||||
cs.receiveResponse(response);
|
||||
if (response.getStatus() == HTTPResponse::HTTP_SWITCHING_PROTOCOLS)
|
||||
{
|
||||
return completeHandshake(cs, response, key);
|
||||
}
|
||||
else if (response.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED)
|
||||
{
|
||||
throw WebSocketException("Not authorized", WS_ERR_UNAUTHORIZED);
|
||||
Poco::NullOutputStream null;
|
||||
Poco::StreamCopier::copyStream(istr, null);
|
||||
credentials.authenticate(request, response);
|
||||
if (!cs.getProxyHost().empty() && !cs.secure())
|
||||
{
|
||||
cs.reset();
|
||||
cs.proxyTunnel();
|
||||
}
|
||||
cs.sendRequest(request);
|
||||
cs.receiveResponse(response);
|
||||
if (response.getStatus() == HTTPResponse::HTTP_SWITCHING_PROTOCOLS)
|
||||
{
|
||||
return completeHandshake(cs, response, key);
|
||||
}
|
||||
else if (response.getStatus() == HTTPResponse::HTTP_UNAUTHORIZED)
|
||||
{
|
||||
throw WebSocketException("Not authorized", WS_ERR_UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
else throw WebSocketException("Not authorized", WS_ERR_UNAUTHORIZED);
|
||||
}
|
||||
if (response.getStatus() == HTTPResponse::HTTP_OK)
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
//
|
||||
|
||||
|
||||
#define NOMINMAX
|
||||
#include "Poco/Net/WebSocketImpl.h"
|
||||
#include "Poco/Net/NetException.h"
|
||||
#include "Poco/Net/WebSocket.h"
|
||||
@@ -21,6 +22,7 @@
|
||||
#include "Poco/BinaryReader.h"
|
||||
#include "Poco/MemoryStream.h"
|
||||
#include "Poco/Format.h"
|
||||
#include <limits>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
@@ -31,6 +33,7 @@ namespace Net {
|
||||
WebSocketImpl::WebSocketImpl(StreamSocketImpl* pStreamSocketImpl, HTTPSession& session, bool mustMaskPayload):
|
||||
StreamSocketImpl(pStreamSocketImpl->sockfd()),
|
||||
_pStreamSocketImpl(pStreamSocketImpl),
|
||||
_maxPayloadSize(std::numeric_limits<int>::max()),
|
||||
_buffer(0),
|
||||
_bufferOffset(0),
|
||||
_frameFlags(0),
|
||||
@@ -134,6 +137,7 @@ int WebSocketImpl::receiveHeader(char mask[4], bool& useMask)
|
||||
Poco::BinaryReader reader(istr, Poco::BinaryReader::NETWORK_BYTE_ORDER);
|
||||
Poco::UInt64 l;
|
||||
reader >> l;
|
||||
if (l > _maxPayloadSize) throw WebSocketException("Payload too big", WebSocket::WS_ERR_PAYLOAD_TOO_BIG);
|
||||
payloadLength = static_cast<int>(l);
|
||||
}
|
||||
else if (lengthByte == 126)
|
||||
@@ -148,10 +152,12 @@ int WebSocketImpl::receiveHeader(char mask[4], bool& useMask)
|
||||
Poco::BinaryReader reader(istr, Poco::BinaryReader::NETWORK_BYTE_ORDER);
|
||||
Poco::UInt16 l;
|
||||
reader >> l;
|
||||
if (l > _maxPayloadSize) throw WebSocketException("Payload too big", WebSocket::WS_ERR_PAYLOAD_TOO_BIG);
|
||||
payloadLength = static_cast<int>(l);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lengthByte > _maxPayloadSize) throw WebSocketException("Payload too big", WebSocket::WS_ERR_PAYLOAD_TOO_BIG);
|
||||
payloadLength = lengthByte;
|
||||
}
|
||||
|
||||
@@ -169,6 +175,14 @@ int WebSocketImpl::receiveHeader(char mask[4], bool& useMask)
|
||||
}
|
||||
|
||||
|
||||
void WebSocketImpl::setMaxPayloadSize(int maxPayloadSize)
|
||||
{
|
||||
poco_assert (maxPayloadSize > 0);
|
||||
|
||||
_maxPayloadSize = maxPayloadSize;
|
||||
}
|
||||
|
||||
|
||||
int WebSocketImpl::receivePayload(char *buffer, int payloadLength, char mask[4], bool useMask)
|
||||
{
|
||||
int received = receiveNBytes(reinterpret_cast<char*>(buffer), payloadLength);
|
||||
@@ -205,7 +219,7 @@ int WebSocketImpl::receiveBytes(Poco::Buffer<char>& buffer, int, const Poco::Tim
|
||||
int payloadLength = receiveHeader(mask, useMask);
|
||||
if (payloadLength <= 0)
|
||||
return payloadLength;
|
||||
int oldSize = static_cast<int>(buffer.size());
|
||||
std::size_t oldSize = buffer.size();
|
||||
buffer.resize(oldSize + payloadLength);
|
||||
return receivePayload(buffer.begin() + oldSize, payloadLength, mask, useMask);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(NetSSL ${SRCS} )
|
||||
add_library(Poco::NetSSL ALIAS NetSSL)
|
||||
set_target_properties( NetSSL
|
||||
@@ -23,6 +29,10 @@ target_include_directories(NetSSL
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
)
|
||||
|
||||
if(MSVC AND POCO_DISABLE_INTERNAL_OPENSSL AND OPENSSL_USE_STATIC_LIBS)
|
||||
target_link_libraries(NetSSL PUBLIC ws2_32.lib Crypt32.lib)
|
||||
endif()
|
||||
|
||||
POCO_INSTALL(NetSSL)
|
||||
POCO_GENERATE_PACKAGE(NetSSL)
|
||||
|
||||
|
||||
@@ -84,9 +84,6 @@ public:
|
||||
///
|
||||
/// Returns true if the STARTTLS command was successful,
|
||||
/// false otherwise.
|
||||
|
||||
private:
|
||||
std::string _host;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<ProjectGuid>{F8DE5054-3EC1-3FB4-9FE6-38EE974745A9}</ProjectGuid>
|
||||
<RootNamespace>HTTPSTimeServer</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
@@ -31,7 +31,7 @@
|
||||
<ProjectGuid>{BF75C029-EFC9-3A0F-A8F2-8001C11D1FBA}</ProjectGuid>
|
||||
<RootNamespace>Mail</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
//
|
||||
// SetSourceIP.cpp
|
||||
//
|
||||
@@ -11,29 +10,29 @@
|
||||
//
|
||||
|
||||
|
||||
#include <Poco/Net/SSLManager.h>
|
||||
#include <Poco/Net/RejectCertificateHandler.h>
|
||||
#include <Poco/Net/KeyConsoleHandler.h>
|
||||
#include <Poco/Net/ConsoleCertificateHandler.h>
|
||||
#include <Poco/Net/Context.h>
|
||||
#include <Poco/Net/HTTPSClientSession.h>
|
||||
#include <Poco/Net/HTTPRequest.h>
|
||||
#include <Poco/Net/HTTPResponse.h>
|
||||
#include <Poco/Net/SecureStreamSocket.h>
|
||||
#include <Poco/Net/SocketImpl.h>
|
||||
#include <Poco/Path.h>
|
||||
#include <Poco/URI.h>
|
||||
#include <Poco/Exception.h>
|
||||
#include <Poco/SharedPtr.h>
|
||||
|
||||
|
||||
#include "Poco/Net/SSLManager.h"
|
||||
#include "Poco/Net/RejectCertificateHandler.h"
|
||||
#include "Poco/Net/KeyConsoleHandler.h"
|
||||
#include "Poco/Net/ConsoleCertificateHandler.h"
|
||||
#include "Poco/Net/Context.h"
|
||||
#include "Poco/Net/HTTPSClientSession.h"
|
||||
#include "Poco/Net/HTTPRequest.h"
|
||||
#include "Poco/Net/HTTPResponse.h"
|
||||
#include "Poco/Net/SecureStreamSocket.h"
|
||||
#include "Poco/Net/SocketImpl.h"
|
||||
#include "Poco/Path.h"
|
||||
#include "Poco/URI.h"
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/SharedPtr.h"
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
|
||||
Poco::Path programName;
|
||||
|
||||
|
||||
void usage(std::string errorMessage)
|
||||
{
|
||||
std::cerr << "ERROR: " << errorMessage << std::endl;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
@@ -31,7 +31,7 @@
|
||||
<ProjectGuid>{CCDD82BC-680D-39C0-AE25-1FBC5B615F7E}</ProjectGuid>
|
||||
<RootNamespace>TwitterClient</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<ProjectGuid>{D853F3D6-0D6F-3E8E-82C7-4216D7A21C4D}</ProjectGuid>
|
||||
<RootNamespace>download</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
|
||||
@@ -114,7 +114,7 @@ Context::~Context()
|
||||
void Context::init(const Params& params)
|
||||
{
|
||||
Poco::Crypto::OpenSSLInitializer::initialize();
|
||||
|
||||
|
||||
createSSLContext();
|
||||
|
||||
try
|
||||
@@ -173,7 +173,7 @@ void Context::init(const Params& params)
|
||||
SSL_CTX_set_verify_depth(_pSSLContext, params.verificationDepth);
|
||||
SSL_CTX_set_mode(_pSSLContext, SSL_MODE_AUTO_RETRY);
|
||||
SSL_CTX_set_session_cache_mode(_pSSLContext, SSL_SESS_CACHE_OFF);
|
||||
|
||||
|
||||
initDH(params.dhParamsFile);
|
||||
initECDH(params.ecdhCurve);
|
||||
}
|
||||
@@ -195,18 +195,20 @@ void Context::useCertificate(const Poco::Crypto::X509Certificate& certificate)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Context::addChainCertificate(const Poco::Crypto::X509Certificate& certificate)
|
||||
{
|
||||
int errCode = SSL_CTX_add_extra_chain_cert(_pSSLContext, certificate.certificate());
|
||||
X509* pCert = certificate.dup();
|
||||
int errCode = SSL_CTX_add_extra_chain_cert(_pSSLContext, pCert);
|
||||
if (errCode != 1)
|
||||
{
|
||||
X509_free(pCert);
|
||||
std::string msg = Utility::getLastError();
|
||||
throw SSLContextException("Cannot add chain certificate to Context", msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Context::addCertificateAuthority(const Crypto::X509Certificate &certificate)
|
||||
{
|
||||
if (X509_STORE* store = SSL_CTX_get_cert_store(_pSSLContext))
|
||||
@@ -273,7 +275,7 @@ void Context::enableSessionCache(bool flag, const std::string& sessionIdContext)
|
||||
{
|
||||
SSL_CTX_set_session_cache_mode(_pSSLContext, SSL_SESS_CACHE_OFF);
|
||||
}
|
||||
|
||||
|
||||
unsigned length = static_cast<unsigned>(sessionIdContext.length());
|
||||
if (length > SSL_MAX_SSL_SESSION_ID_LENGTH) length = SSL_MAX_SSL_SESSION_ID_LENGTH;
|
||||
int rc = SSL_CTX_set_session_id_context(_pSSLContext, reinterpret_cast<const unsigned char*>(sessionIdContext.data()), length);
|
||||
@@ -290,15 +292,15 @@ bool Context::sessionCacheEnabled() const
|
||||
void Context::setSessionCacheSize(std::size_t size)
|
||||
{
|
||||
poco_assert (isForServerUse());
|
||||
|
||||
|
||||
SSL_CTX_sess_set_cache_size(_pSSLContext, static_cast<long>(size));
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::size_t Context::getSessionCacheSize() const
|
||||
{
|
||||
poco_assert (isForServerUse());
|
||||
|
||||
|
||||
return static_cast<std::size_t>(SSL_CTX_sess_get_cache_size(_pSSLContext));
|
||||
}
|
||||
|
||||
@@ -566,7 +568,7 @@ void Context::initDH(const std::string& dhParamsFile)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Context::initECDH(const std::string& curve)
|
||||
{
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x0090800fL
|
||||
|
||||
@@ -29,8 +29,7 @@ SecureSMTPClientSession::SecureSMTPClientSession(const StreamSocket& socket):
|
||||
|
||||
|
||||
SecureSMTPClientSession::SecureSMTPClientSession(const std::string& host, Poco::UInt16 port):
|
||||
SMTPClientSession(host, port),
|
||||
_host(host)
|
||||
SMTPClientSession(host, port)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -50,13 +49,13 @@ bool SecureSMTPClientSession::startTLS(Context::Ptr pContext)
|
||||
{
|
||||
int status = 0;
|
||||
std::string response;
|
||||
|
||||
|
||||
status = sendCommand("STARTTLS", response);
|
||||
if (!isPositiveCompletion(status)) return false;
|
||||
|
||||
SecureStreamSocket sss(SecureStreamSocket::attach(socket(), _host, pContext));
|
||||
SecureStreamSocket sss(SecureStreamSocket::attach(socket(), host(), pContext));
|
||||
socket() = sss;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(NetSSLWin ${SRCS})
|
||||
add_library(Poco::NetSSLWin ALIAS NetSSLWin)
|
||||
set_target_properties(NetSSLWin
|
||||
|
||||
@@ -84,9 +84,6 @@ public:
|
||||
///
|
||||
/// Returns true if the STARTTLS command was successful,
|
||||
/// false otherwise.
|
||||
|
||||
private:
|
||||
std::string _host;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "Poco/DateTime.h"
|
||||
#include <set>
|
||||
#include <istream>
|
||||
#include <Poco/UnWindows.h>
|
||||
#include "Poco/UnWindows.h"
|
||||
#include <wincrypt.h>
|
||||
|
||||
|
||||
@@ -43,9 +43,9 @@ public:
|
||||
NID_LOCALITY_NAME,
|
||||
NID_STATE_OR_PROVINCE,
|
||||
NID_ORGANIZATION_NAME,
|
||||
NID_ORGANIZATION_UNIT_NAME
|
||||
NID_ORGANIZATION_UNIT_NAME
|
||||
};
|
||||
|
||||
|
||||
explicit X509Certificate(const std::string& certPath);
|
||||
/// Creates the X509Certificate object by reading
|
||||
/// a certificate in PEM or DER format from a file.
|
||||
@@ -86,12 +86,12 @@ public:
|
||||
|
||||
const std::string& issuerName() const;
|
||||
/// Returns the certificate issuer's distinguished name.
|
||||
|
||||
|
||||
std::string issuerName(NID nid) const;
|
||||
/// Extracts the information specified by the given
|
||||
/// NID (name identifier) from the certificate issuer's
|
||||
/// distinguished name.
|
||||
|
||||
|
||||
const std::string& subjectName() const;
|
||||
/// Returns the certificate subject's distinguished name.
|
||||
|
||||
@@ -99,21 +99,21 @@ public:
|
||||
/// Extracts the information specified by the given
|
||||
/// NID (name identifier) from the certificate subject's
|
||||
/// distinguished name.
|
||||
|
||||
|
||||
std::string commonName() const;
|
||||
/// Returns the common name stored in the certificate
|
||||
/// subject's distinguished name.
|
||||
|
||||
|
||||
void extractNames(std::string& commonName, std::set<std::string>& domainNames) const;
|
||||
/// Extracts the common name and the alias domain names from the
|
||||
/// certificate.
|
||||
|
||||
|
||||
Poco::DateTime validFrom() const;
|
||||
/// Returns the date and time the certificate is valid from.
|
||||
|
||||
|
||||
Poco::DateTime expiresOn() const;
|
||||
/// Returns the date and time the certificate expires.
|
||||
|
||||
|
||||
bool issuedBy(const X509Certificate& issuerCertificate) const;
|
||||
/// Checks whether the certificate has been issued by
|
||||
/// the issuer given by issuerCertificate. This can be
|
||||
@@ -133,7 +133,7 @@ public:
|
||||
/// of the host.
|
||||
///
|
||||
/// Returns true if verification succeeded, or false otherwise.
|
||||
|
||||
|
||||
static bool verify(const Poco::Net::X509Certificate& cert, const std::string& hostName);
|
||||
/// Verifies the validity of the certificate against the host name.
|
||||
///
|
||||
@@ -149,7 +149,7 @@ public:
|
||||
protected:
|
||||
void init();
|
||||
/// Extracts issuer and subject name from the certificate.
|
||||
|
||||
|
||||
static void* nid2oid(NID nid);
|
||||
/// Returns the OID for the given NID.
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ void Context::loadCertificate()
|
||||
if (!_hCertStore)
|
||||
{
|
||||
if (_options & OPT_USE_MACHINE_STORE)
|
||||
_hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, _certStoreName.c_str());
|
||||
_hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, wcertStore.c_str());
|
||||
else
|
||||
_hCertStore = CertOpenSystemStoreW(0, wcertStore.c_str());
|
||||
}
|
||||
@@ -193,7 +193,6 @@ void Context::importCertificate()
|
||||
Poco::File certFile(_certNameOrPath);
|
||||
if (!certFile.exists()) throw Poco::FileNotFoundException(_certNameOrPath);
|
||||
Poco::File::FileSize size = certFile.getSize();
|
||||
if (size > 4096) throw Poco::DataFormatException("PKCS #12 certificate file too large", _certNameOrPath);
|
||||
Poco::Buffer<char> buffer(static_cast<std::size_t>(size));
|
||||
Poco::FileInputStream istr(_certNameOrPath);
|
||||
istr.read(buffer.begin(), buffer.size());
|
||||
@@ -309,7 +308,7 @@ void Context::acquireSchannelCredentials(CredHandle& credHandle) const
|
||||
schannelCred.dwFlags |= SCH_USE_STRONG_CRYPTO;
|
||||
#endif
|
||||
|
||||
schannelCred.hRootStore = _hCollectionCertStore;
|
||||
schannelCred.hRootStore = isForServerUse() ? _hCollectionCertStore : NULL;
|
||||
|
||||
TimeStamp tsExpiry;
|
||||
tsExpiry.LowPart = tsExpiry.HighPart = 0;
|
||||
@@ -336,18 +335,56 @@ DWORD Context::proto() const
|
||||
switch (_usage)
|
||||
{
|
||||
case Context::CLIENT_USE:
|
||||
return SP_PROT_SSL3_CLIENT | SP_PROT_TLS1_CLIENT;
|
||||
return SP_PROT_SSL3_CLIENT
|
||||
| SP_PROT_TLS1_CLIENT
|
||||
#if defined(SP_PROT_TLS1_1)
|
||||
| SP_PROT_TLS1_1_CLIENT
|
||||
#endif
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_CLIENT
|
||||
#endif
|
||||
;
|
||||
case Context::SERVER_USE:
|
||||
return SP_PROT_SSL3_SERVER | SP_PROT_TLS1_SERVER;
|
||||
return SP_PROT_SSL3_SERVER
|
||||
| SP_PROT_TLS1_SERVER
|
||||
#if defined(SP_PROT_TLS1_1)
|
||||
| SP_PROT_TLS1_1_SERVER
|
||||
#endif
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_SERVER
|
||||
#endif
|
||||
;
|
||||
case Context::TLSV1_CLIENT_USE:
|
||||
return SP_PROT_TLS1_CLIENT;
|
||||
return SP_PROT_TLS1_CLIENT
|
||||
#if defined(SP_PROT_TLS1_1)
|
||||
| SP_PROT_TLS1_1_CLIENT
|
||||
#endif
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_CLIENT
|
||||
#endif
|
||||
;
|
||||
case Context::TLSV1_SERVER_USE:
|
||||
return SP_PROT_TLS1_SERVER;
|
||||
return SP_PROT_TLS1_SERVER
|
||||
#if defined(SP_PROT_TLS1_1)
|
||||
| SP_PROT_TLS1_1_SERVER
|
||||
#endif
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_SERVER
|
||||
#endif
|
||||
;
|
||||
#if defined(SP_PROT_TLS1_1)
|
||||
case Context::TLSV1_1_CLIENT_USE:
|
||||
return SP_PROT_TLS1_1_CLIENT;
|
||||
return SP_PROT_TLS1_1_CLIENT
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_CLIENT
|
||||
#endif
|
||||
;
|
||||
case Context::TLSV1_1_SERVER_USE:
|
||||
return SP_PROT_TLS1_1_SERVER;
|
||||
return SP_PROT_TLS1_1_SERVER
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
| SP_PROT_TLS1_2_SERVER
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
#if defined(SP_PROT_TLS1_2)
|
||||
case Context::TLSV1_2_CLIENT_USE:
|
||||
|
||||
@@ -29,8 +29,7 @@ SecureSMTPClientSession::SecureSMTPClientSession(const StreamSocket& socket):
|
||||
|
||||
|
||||
SecureSMTPClientSession::SecureSMTPClientSession(const std::string& host, Poco::UInt16 port):
|
||||
SMTPClientSession(host, port),
|
||||
_host(host)
|
||||
SMTPClientSession(host, port)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -50,13 +49,13 @@ bool SecureSMTPClientSession::startTLS(Context::Ptr pContext)
|
||||
{
|
||||
int status = 0;
|
||||
std::string response;
|
||||
|
||||
|
||||
status = sendCommand("STARTTLS", response);
|
||||
if (!isPositiveCompletion(status)) return false;
|
||||
|
||||
SecureStreamSocket sss(SecureStreamSocket::attach(socket(), _host, pContext));
|
||||
SecureStreamSocket sss(SecureStreamSocket::attach(socket(), host(), pContext));
|
||||
socket() = sss;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@ void X509Certificate::loadCertificate(const std::string& certName, const std::st
|
||||
Poco::UnicodeConverter::convert(certStoreName, wcertStore);
|
||||
HCERTSTORE hCertStore;
|
||||
if (useMachineStore)
|
||||
hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, certStoreName.c_str());
|
||||
hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, wcertStore.c_str());
|
||||
else
|
||||
hCertStore = CertOpenSystemStoreW(0, wcertStore.c_str());
|
||||
|
||||
@@ -397,7 +397,6 @@ void X509Certificate::importCertificate(const std::string& certPath)
|
||||
Poco::File certFile(certPath);
|
||||
if (!certFile.exists()) throw Poco::FileNotFoundException(certPath);
|
||||
Poco::File::FileSize size = certFile.getSize();
|
||||
if (size > 4096) throw Poco::DataFormatException("certificate file too large", certPath);
|
||||
if (size < 32) throw Poco::DataFormatException("certificate file too small", certPath);
|
||||
Poco::Buffer<char> buffer(static_cast<std::size_t>(size));
|
||||
Poco::FileInputStream istr(certPath);
|
||||
|
||||
@@ -114,6 +114,12 @@ POCO_SOURCES( SRCS libpng
|
||||
src/pngwutil.c
|
||||
)
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
#TODO: Can we put this with the below includes? PRIVAT eg.
|
||||
include_directories( "include/Poco/PDF" ) # zip src
|
||||
|
||||
@@ -126,7 +132,11 @@ set_target_properties(PDF
|
||||
DEFINE_SYMBOL PDF_EXPORTS
|
||||
)
|
||||
|
||||
target_link_libraries(PDF PUBLIC ${ZLIB_LIBRARIES} Poco::XML Poco::Util)
|
||||
if (POCO_UNBUNDLED)
|
||||
target_link_libraries(PDF PUBLIC ZLIB::ZLIB)
|
||||
target_compile_definitions(PDF PUBLIC POCO_UNBUNDLED)
|
||||
endif (POCO_UNBUNDLED)
|
||||
target_link_libraries(PDF PUBLIC Poco::XML Poco::Util)
|
||||
target_include_directories(PDF
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
@@ -138,11 +148,6 @@ if(MINGW)
|
||||
target_compile_definitions(PDF PRIVATE HPDF_DLL_MAKE_CDECL)
|
||||
endif()
|
||||
|
||||
if (POCO_UNBUNDLED)
|
||||
target_include_directories(PDF PUBLIC "${ZLIB_INCLUDE_DIRS}")
|
||||
target_compile_definitions(PDF PUBLIC POCO_UNBUNDLED)
|
||||
endif()
|
||||
|
||||
POCO_INSTALL(PDF)
|
||||
POCO_GENERATE_PACKAGE(PDF)
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(PocoFoundation)
|
||||
if(@POCO_UNBUNDLED@)
|
||||
find_dependency(ZLIB REQUIRED)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/PocoPDFTargets.cmake")
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
<AppConfig>
|
||||
<PocoDoc>
|
||||
<files>
|
||||
<include>
|
||||
${PocoBuild}/*/include/Poco/*.h
|
||||
${PocoBuild}/*/include/Poco/*/*.h
|
||||
${PocoBuild}/*/include/Poco/*/*/*.h
|
||||
${PocoBuild}/*/include/Poco/*/*.h
|
||||
${PocoBuild}/*/*/include/Poco/*/*/*.h
|
||||
</include>
|
||||
<exclude>
|
||||
*_*.h,
|
||||
expat*.h,
|
||||
zconf.h,
|
||||
zlib.h,
|
||||
Alignment.h,
|
||||
QName.h,
|
||||
CppUnitException.h,
|
||||
Constants.h,
|
||||
inffast.h,
|
||||
PDF/include/*.h,
|
||||
CppParser/include/*.h,
|
||||
Data/include/*.h,
|
||||
Data/*/include/*.h,
|
||||
Data/*/*/include/*.h,
|
||||
ratio
|
||||
</exclude>
|
||||
</files>
|
||||
<pages>
|
||||
${PocoBuild}/doc/*.page,
|
||||
${PocoBuild}/*/doc/*.page
|
||||
${PocoBuild}/*/*/doc/*.page
|
||||
</pages>
|
||||
<resources>
|
||||
${PocoBase}/PocoDoc/resources/css,
|
||||
${PocoBase}/PocoDoc/resources/js,
|
||||
${PocoBase}/PocoDoc/resources/images,
|
||||
${PocoBase}/PocoDoc/resources/index.thtml,
|
||||
${PocoBuild}/*/doc/images
|
||||
</resources>
|
||||
<compiler>
|
||||
<windows>
|
||||
<exec>cl.exe</exec>
|
||||
<options>
|
||||
${Includes},
|
||||
/I${PocoBase}/openssl/include
|
||||
/I${VCH}/include,
|
||||
/I${WDK}/shared
|
||||
/I${WDK}/um
|
||||
/I${WDK}/ucrt
|
||||
/nologo,
|
||||
/D_DEBUG,
|
||||
/E,
|
||||
/C,
|
||||
/DPOCO_NO_GCC_API_ATTRIBUTE
|
||||
</options>
|
||||
<path>${CLP}</path>
|
||||
<usePipe>true</usePipe>
|
||||
</windows>
|
||||
<unix>
|
||||
<exec>${CXX} ${CXXFLAGS}</exec>
|
||||
<options>
|
||||
${Includes},
|
||||
-I/usr/local/mysql/include,
|
||||
-I/usr/include/mysql,
|
||||
-I/usr/include/postgresql,
|
||||
-D_DEBUG,
|
||||
-E,
|
||||
-C,
|
||||
-DPOCO_NO_GCC_API_ATTRIBUTE,
|
||||
-DPOCO_NO_WINDOWS_H
|
||||
</options>
|
||||
<path></path>
|
||||
<usePipe>true</usePipe>
|
||||
</unix>
|
||||
</compiler>
|
||||
<language>EN</language>
|
||||
<charset>utf-8</charset>
|
||||
<software>POCO C++ Libraries</software>
|
||||
<company>Applied Informatics Software Engineering GmbH and Contributors</company>
|
||||
<companyURI>http://pocoproject.org/</companyURI>
|
||||
</PocoDoc>
|
||||
<Translations>
|
||||
<EN>
|
||||
<All_Base_Classes>All Base Classes</All_Base_Classes>
|
||||
<All_Symbols>All Symbols</All_Symbols>
|
||||
<Anonymous>Anonymous</Anonymous>
|
||||
<Constructors>Constructors</Constructors>
|
||||
<Class>Class</Class>
|
||||
<Deprecated>Deprecated</Deprecated>
|
||||
<Description>Description</Description>
|
||||
<Destructor>Destructor</Destructor>
|
||||
<Direct_Base_Classes>Direct Base Classes</Direct_Base_Classes>
|
||||
<Enumerations>Enumerations</Enumerations>
|
||||
<Functions>Functions</Functions>
|
||||
<Header>Header</Header>
|
||||
<iff>if and only if</iff>
|
||||
<Inheritance>Inheritance</Inheritance>
|
||||
<Inherited_Functions>Inherited Functions</Inherited_Functions>
|
||||
<is_deprecated>is deprecated and should no longer be used</is_deprecated>
|
||||
<Known_Derived_Classes>Known Derived Classes</Known_Derived_Classes>
|
||||
<Library>Library</Library>
|
||||
<Member_Functions>Member Functions</Member_Functions>
|
||||
<Member_Summary>Member Summary</Member_Summary>
|
||||
<more>more...</more>
|
||||
<Namespaces>Namespaces</Namespaces>
|
||||
<Namespace>Namespace</Namespace>
|
||||
<Nested_Classes>Nested Classes</Nested_Classes>
|
||||
<Package>Package</Package>
|
||||
<Packages>Packages</Packages>
|
||||
<Package_Index>Package Index</Package_Index>
|
||||
<See_also>See also</See_also>
|
||||
<Struct>Struct</Struct>
|
||||
<Symbol_Index>Symbol Index</Symbol_Index>
|
||||
<This>This</This>
|
||||
<Types>Types</Types>
|
||||
<Variables>Variables</Variables>
|
||||
<TOC>Contents</TOC>
|
||||
<Guides>User Guides and Tutorials</Guides>
|
||||
<AAAIntroduction>Introduction</AAAIntroduction>
|
||||
</EN>
|
||||
</Translations>
|
||||
|
||||
<logging>
|
||||
<loggers>
|
||||
<root>
|
||||
<channel>c1</channel>
|
||||
<level>warning</level>
|
||||
</root>
|
||||
</loggers>
|
||||
<channels>
|
||||
<c1>
|
||||
<class>ConsoleChannel</class>
|
||||
<pattern>%s: [%p] %t</pattern>
|
||||
</c1>
|
||||
</channels>
|
||||
</logging>
|
||||
</AppConfig>
|
||||
@@ -238,6 +238,8 @@ protected:
|
||||
}
|
||||
if (include)
|
||||
files.insert(*it);
|
||||
else
|
||||
logger().debug("excluded " + *it);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,12 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(Redis ${SRCS} )
|
||||
add_library(Poco::Redis ALIAS Redis)
|
||||
set_target_properties(Redis
|
||||
|
||||
@@ -16,6 +16,12 @@ if(MINGW)
|
||||
PROPERTIES COMPILE_FLAGS "-Wa,-mbig-obj")
|
||||
endif()
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(SQL ${SRCS} )
|
||||
add_library(Poco::SQL ALIAS SQL)
|
||||
set_target_properties(SQL
|
||||
|
||||
@@ -6,6 +6,11 @@ POCO_SOURCES_AUTO( MYSQL_SRCS ${SRCS_G})
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( MYSQL_SRCS ${HDRS_G})
|
||||
|
||||
# Version Resource
|
||||
if(MSVC AND NOT POCO_STATIC)
|
||||
source_group("Resources" FILES ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
list(APPEND MYSQL_SRCS ${CMAKE_SOURCE_DIR}/DLLVersion.rc)
|
||||
endif()
|
||||
|
||||
add_library(SQLMySQL ${MYSQL_SRCS} )
|
||||
add_library(Poco::SQLMySQL ALIAS SQLMySQL)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// Binder.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: Binder
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// Connector.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: Connector
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// Extractor.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: Extractor
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// MySQL.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: MySQL
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// MySQLException.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: MySQLException
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// MySQLstatementImpl.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: MySQLstatementImpl
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// ResultMetadata.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: ResultMetadata
|
||||
//
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// SesssionHandle.h
|
||||
//
|
||||
// Library: Data/MySQL
|
||||
// Library: SQL/MySQL
|
||||
// Package: MySQL
|
||||
// Module: SessionHandle
|
||||
//
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user