From 6c85e99b3a731c951b303e14de1b7add14eee048 Mon Sep 17 00:00:00 2001 From: James R Date: Sun, 22 Dec 2019 20:45:42 -0800 Subject: [PATCH] UPnP library removal --- libs/miniupnpc/.gitignore | 13 - libs/miniupnpc/CMakeLists.txt | 172 ---- libs/miniupnpc/Changelog.txt | 452 --------- libs/miniupnpc/LICENSE | 27 - libs/miniupnpc/MANIFEST.in | 5 - libs/miniupnpc/Makefile | 214 ----- libs/miniupnpc/Makefile.mingw | 93 -- libs/miniupnpc/README | 59 -- libs/miniupnpc/VERSION | 1 - libs/miniupnpc/bsdqueue.h | 531 ----------- libs/miniupnpc/codelength.h | 24 - libs/miniupnpc/connecthostport.c | 241 ----- libs/miniupnpc/connecthostport.h | 17 - libs/miniupnpc/declspec.h | 15 - libs/miniupnpc/external-ip.sh | 4 - libs/miniupnpc/igd_desc_parse.c | 125 --- libs/miniupnpc/igd_desc_parse.h | 48 - libs/miniupnpc/java/JavaBridgeTest.java | 95 -- libs/miniupnpc/java/testjava.sh | 8 - libs/miniupnpc/man3/miniupnpc.3 | 53 -- libs/miniupnpc/mingw32/libminiupnpc.a | Bin 2028512 -> 0 bytes libs/miniupnpc/mingw32make.bat | 8 - libs/miniupnpc/mingw64/libminiupnpc.a | Bin 135706 -> 0 bytes libs/miniupnpc/minihttptestserver.c | 461 --------- libs/miniupnpc/minisoap.c | 121 --- libs/miniupnpc/minisoap.h | 15 - libs/miniupnpc/minissdpc.c | 132 --- libs/miniupnpc/minissdpc.h | 15 - libs/miniupnpc/miniupnpc.c | 943 ------------------- libs/miniupnpc/miniupnpc.def | 42 - libs/miniupnpc/miniupnpc.h | 121 --- libs/miniupnpc/miniupnpcmodule.c | 507 ---------- libs/miniupnpc/miniupnpcstrings.h.cmake | 7 - libs/miniupnpc/miniupnpcstrings.h.in | 15 - libs/miniupnpc/miniupnpctypes.h | 19 - libs/miniupnpc/miniwget.c | 524 ----------- libs/miniupnpc/miniwget.h | 30 - libs/miniupnpc/minixml.c | 216 ----- libs/miniupnpc/minixml.h | 37 - libs/miniupnpc/minixmlvalid.c | 156 --- libs/miniupnpc/msvc/miniupnpc.sln | 29 - libs/miniupnpc/msvc/miniupnpc.vcproj | 271 ------ libs/miniupnpc/msvc/upnpc-static.vcproj | 195 ---- libs/miniupnpc/portlistingparse.c | 157 ---- libs/miniupnpc/portlistingparse.h | 71 -- libs/miniupnpc/pymoduletest.py | 52 - libs/miniupnpc/receivedata.c | 81 -- libs/miniupnpc/receivedata.h | 17 - libs/miniupnpc/setup.py | 15 - libs/miniupnpc/setupmingw32.py | 15 - libs/miniupnpc/testigddescparse.c | 64 -- libs/miniupnpc/testminiwget.c | 53 -- libs/miniupnpc/testminiwget.sh | 79 -- libs/miniupnpc/testminixml.c | 88 -- libs/miniupnpc/testupnpigd.py | 84 -- libs/miniupnpc/testupnpreplyparse.c | 44 - libs/miniupnpc/updateminiupnpcstrings.sh | 53 -- libs/miniupnpc/upnpc.c | 683 -------------- libs/miniupnpc/upnpcommands.c | 1097 ---------------------- libs/miniupnpc/upnpcommands.h | 271 ------ libs/miniupnpc/upnperrors.c | 103 -- libs/miniupnpc/upnperrors.h | 26 - libs/miniupnpc/upnpreplyparse.c | 152 --- libs/miniupnpc/upnpreplyparse.h | 64 -- libs/miniupnpc/wingenminiupnpcstrings.c | 82 -- 65 files changed, 9412 deletions(-) delete mode 100644 libs/miniupnpc/.gitignore delete mode 100644 libs/miniupnpc/CMakeLists.txt delete mode 100644 libs/miniupnpc/Changelog.txt delete mode 100644 libs/miniupnpc/LICENSE delete mode 100644 libs/miniupnpc/MANIFEST.in delete mode 100644 libs/miniupnpc/Makefile delete mode 100644 libs/miniupnpc/Makefile.mingw delete mode 100644 libs/miniupnpc/README delete mode 100644 libs/miniupnpc/VERSION delete mode 100644 libs/miniupnpc/bsdqueue.h delete mode 100644 libs/miniupnpc/codelength.h delete mode 100644 libs/miniupnpc/connecthostport.c delete mode 100644 libs/miniupnpc/connecthostport.h delete mode 100644 libs/miniupnpc/declspec.h delete mode 100755 libs/miniupnpc/external-ip.sh delete mode 100644 libs/miniupnpc/igd_desc_parse.c delete mode 100644 libs/miniupnpc/igd_desc_parse.h delete mode 100644 libs/miniupnpc/java/JavaBridgeTest.java delete mode 100755 libs/miniupnpc/java/testjava.sh delete mode 100644 libs/miniupnpc/man3/miniupnpc.3 delete mode 100644 libs/miniupnpc/mingw32/libminiupnpc.a delete mode 100644 libs/miniupnpc/mingw32make.bat delete mode 100644 libs/miniupnpc/mingw64/libminiupnpc.a delete mode 100644 libs/miniupnpc/minihttptestserver.c delete mode 100644 libs/miniupnpc/minisoap.c delete mode 100644 libs/miniupnpc/minisoap.h delete mode 100644 libs/miniupnpc/minissdpc.c delete mode 100644 libs/miniupnpc/minissdpc.h delete mode 100644 libs/miniupnpc/miniupnpc.c delete mode 100644 libs/miniupnpc/miniupnpc.def delete mode 100644 libs/miniupnpc/miniupnpc.h delete mode 100644 libs/miniupnpc/miniupnpcmodule.c delete mode 100644 libs/miniupnpc/miniupnpcstrings.h.cmake delete mode 100644 libs/miniupnpc/miniupnpcstrings.h.in delete mode 100644 libs/miniupnpc/miniupnpctypes.h delete mode 100644 libs/miniupnpc/miniwget.c delete mode 100644 libs/miniupnpc/miniwget.h delete mode 100644 libs/miniupnpc/minixml.c delete mode 100644 libs/miniupnpc/minixml.h delete mode 100644 libs/miniupnpc/minixmlvalid.c delete mode 100644 libs/miniupnpc/msvc/miniupnpc.sln delete mode 100644 libs/miniupnpc/msvc/miniupnpc.vcproj delete mode 100644 libs/miniupnpc/msvc/upnpc-static.vcproj delete mode 100644 libs/miniupnpc/portlistingparse.c delete mode 100644 libs/miniupnpc/portlistingparse.h delete mode 100644 libs/miniupnpc/pymoduletest.py delete mode 100644 libs/miniupnpc/receivedata.c delete mode 100644 libs/miniupnpc/receivedata.h delete mode 100644 libs/miniupnpc/setup.py delete mode 100644 libs/miniupnpc/setupmingw32.py delete mode 100644 libs/miniupnpc/testigddescparse.c delete mode 100644 libs/miniupnpc/testminiwget.c delete mode 100755 libs/miniupnpc/testminiwget.sh delete mode 100644 libs/miniupnpc/testminixml.c delete mode 100644 libs/miniupnpc/testupnpigd.py delete mode 100644 libs/miniupnpc/testupnpreplyparse.c delete mode 100755 libs/miniupnpc/updateminiupnpcstrings.sh delete mode 100644 libs/miniupnpc/upnpc.c delete mode 100644 libs/miniupnpc/upnpcommands.c delete mode 100644 libs/miniupnpc/upnpcommands.h delete mode 100644 libs/miniupnpc/upnperrors.c delete mode 100644 libs/miniupnpc/upnperrors.h delete mode 100644 libs/miniupnpc/upnpreplyparse.c delete mode 100644 libs/miniupnpc/upnpreplyparse.h delete mode 100644 libs/miniupnpc/wingenminiupnpcstrings.c diff --git a/libs/miniupnpc/.gitignore b/libs/miniupnpc/.gitignore deleted file mode 100644 index fc62e4c97..000000000 --- a/libs/miniupnpc/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -/*.o -/*.a -/libminiupnpc.so -/miniupnpcstrings.h -/upnpc-shared -/upnpc-static -/dll -/init -/miniupnpc.dll -/miniupnpc.dll.def -/miniupnpc.lib -/testminixml -/wingenminiupnpcstrings diff --git a/libs/miniupnpc/CMakeLists.txt b/libs/miniupnpc/CMakeLists.txt deleted file mode 100644 index 082b653a9..000000000 --- a/libs/miniupnpc/CMakeLists.txt +++ /dev/null @@ -1,172 +0,0 @@ -cmake_minimum_required (VERSION 2.6) - -project (miniupnpc C) -set (MINIUPNPC_VERSION 1.5) -set (MINIUPNPC_API_VERSION 8) - -if (NOT CMAKE_BUILD_TYPE) - if (WIN32) - set (DEFAULT_BUILD_TYPE MinSizeRel) - else (WIN32) - set (DEFAULT_BUILD_TYPE RelWithDebInfo) - endif(WIN32) - set (CMAKE_BUILD_TYPE ${DEFAULT_BUILD_TYPE} CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." - FORCE) -endif() - -option (UPNPC_BUILD_STATIC "Build static library" TRUE) -option (UPNPC_BUILD_SHARED "Build shared library" TRUE) -if (NOT WIN32) - option (UPNPC_BUILD_TESTS "Build test executables" TRUE) -endif (NOT WIN32) -option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE) - -mark_as_advanced (NO_GETADDRINFO) - -if (NO_GETADDRINFO) - add_definitions (-DNO_GETADDRINFO) -endif (NO_GETADDRINFO) - -if (NOT WIN32) - add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT) -else (NOT WIN32) - add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends -endif (NOT WIN32) - -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - add_definitions (-DMACOSX -D_DARWIN_C_SOURCE) -endif () - -# Set compiler specific build flags -if (CMAKE_COMPILER_IS_GNUC) - # Set our own default flags at first run. - if (NOT CONFIGURED) - - if (NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") - set (_PIC -fPIC) - endif (CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") - - set (CMAKE_C_FLAGS "${_PIC} -Wall $ENV{CFLAGS}" # CMAKE_C_FLAGS gets appended to the other C flags - CACHE STRING "Flags used by the C compiler during normal builds." FORCE) - set (CMAKE_C_FLAGS_DEBUG "-g -DDDEBUG" - CACHE STRING "Flags used by the C compiler during debug builds." FORCE) - set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG" - CACHE STRING "Flags used by the C compiler during release builds." FORCE) - set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG" - CACHE STRING "Flags used by the C compiler during release builds." FORCE) - set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" - CACHE STRING "Flags used by the C compiler during release builds." FORCE) - - endif (NOT CONFIGURED) -endif () - -configure_file (${CMAKE_SOURCE_DIR}/miniupnpcstrings.h.cmake ${CMAKE_BINARY_DIR}/miniupnpcstrings.h) -include_directories (${CMAKE_BINARY_DIR}) - -set (MINIUPNPC_SOURCES - igd_desc_parse.c - miniupnpc.c - minixml.c - minisoap.c - miniwget.c - upnpc.c - upnpcommands.c - upnpreplyparse.c - upnperrors.c - connecthostport.c - portlistingparse.c -) - -if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") - set (MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c) -endif (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS") - -if (WIN32) - set_source_files_properties (${MINIUPNPC_SOURCES} PROPERTIES - COMPILE_DEFINITIONS STATICLIB - COMPILE_DEFINITIONS MINIUPNP_EXPORTS - ) -endif (WIN32) - -if (WIN32) - find_library (WINSOCK2_LIBRARY NAMES ws2_32 WS2_32 Ws2_32) - find_library (IPHLPAPI_LIBRARY NAMES iphlpapi) - set (LDLIBS ${WINSOCK2_LIBRARY} ${IPHLPAPI_LIBRARY} ${LDLIBS}) -#elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris") -# find_library (SOCKET_LIBRARY NAMES socket) -# find_library (NSL_LIBRARY NAMES nsl) -# find_library (RESOLV_LIBRARY NAMES resolv) -# set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS}) -endif (WIN32) - -if (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED) - message (FATAL "Both shared and static libraries are disabled!") -endif (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED) - -if (UPNPC_BUILD_STATIC) - add_library (upnpc-static STATIC ${MINIUPNPC_SOURCES}) - set_target_properties (upnpc-static PROPERTIES OUTPUT_NAME "miniupnpc") - target_link_libraries (upnpc-static ${LDLIBS}) - set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-static) - set (UPNPC_LIBRARY_TARGET upnpc-static) -endif (UPNPC_BUILD_STATIC) - -if (UPNPC_BUILD_SHARED) - add_library (upnpc-shared SHARED ${MINIUPNPC_SOURCES}) - set_target_properties (upnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc") - set_target_properties (upnpc-shared PROPERTIES VERSION ${MINIUPNPC_VERSION}) - set_target_properties (upnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION}) - target_link_libraries (upnpc-shared ${LDLIBS}) - set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-shared) - set (UPNPC_LIBRARY_TARGET upnpc-shared) -endif (UPNPC_BUILD_SHARED) - -if (UPNPC_BUILD_TESTS) - add_executable (testminixml testminixml.c minixml.c igd_desc_parse.c) - target_link_libraries (testminixml ${LDLIBS}) - - add_executable (minixmlvalid minixmlvalid.c minixml.c) - target_link_libraries (minixmlvalid ${LDLIBS}) - - add_executable (testupnpreplyparse testupnpreplyparse.c - minixml.c upnpreplyparse.c) - target_link_libraries (testupnpreplyparse ${LDLIBS}) - - add_executable (testigddescparse testigddescparse.c - igd_desc_parse.c minixml.c miniupnpc.c miniwget.c minissdpc.c - upnpcommands.c upnpreplyparse.c minisoap.c connecthostport.c - portlistingparse.c - ) - target_link_libraries (testigddescparse ${LDLIBS}) - - add_executable (testminiwget testminiwget.c - miniwget.c miniupnpc.c minisoap.c upnpcommands.c minissdpc.c - upnpreplyparse.c minixml.c igd_desc_parse.c connecthostport.c - portlistingparse.c - ) - target_link_libraries (testminiwget ${LDLIBS}) - -# set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} testminixml minixmlvalid testupnpreplyparse testigddescparse testminiwget) -endif (UPNPC_BUILD_TESTS) - - -install (TARGETS ${UPNPC_INSTALL_TARGETS} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} -) -install (FILES - miniupnpc.h - miniwget.h - upnpcommands.h - igd_desc_parse.h - upnpreplyparse.h - upnperrors.h - declspec.h - DESTINATION include/miniupnpc -) - -set (CONFIGURED YES CACHE INTERNAL "") - -# vim: ts=2:sw=2 diff --git a/libs/miniupnpc/Changelog.txt b/libs/miniupnpc/Changelog.txt deleted file mode 100644 index 70b656498..000000000 --- a/libs/miniupnpc/Changelog.txt +++ /dev/null @@ -1,452 +0,0 @@ -$Id: Changelog.txt,v 1.152 2011/07/25 18:02:11 nanard Exp $ -miniUPnP client Changelog. - -VERSION 1.6 : released 2011/07/25 - -2011/07/25: - Update doc for version 1.6 release - -2011/06/18: - Fix for windows in miniwget.c - -2011/06/04: - display remote host in port mapping listing - -2011/06/03: - Fix in make install : there were missing headers - -2011/05/26: - Fix the socket leak in miniwget thanks to Richard Marsh. - Permit to add leaseduration in -a command. Display lease duration. - -2011/05/15: - Try both LinkLocal and SiteLocal multicast address for SSDP in IPv6 - -2011/05/09: - add a test in testminiwget.sh. - more error checking in miniwget.c - -2011/05/06: - Adding some tool to test and validate miniwget.c - simplified and debugged miniwget.c - -2011/04/11: - moving ReceiveData() to a receivedata.c file. - parsing presentation url - adding IGD v2 WANIPv6FirewallControl commands - -2011/04/10: - update of miniupnpcmodule.c - comments in miniwget.c, update in testminiwget - Adding errors codes from IGD v2 - new functions in upnpc.c for IGD v2 - -2011/04/09: - Support for litteral ip v6 address in miniwget - -2011/04/08: - Adding support for urn:schemas-upnp-org:service:WANIPv6FirewallControl:1 - Updating APIVERSION - Supporting IPV6 in upnpDiscover() - Adding a -6 option to upnpc command line tool - -2011/03/18: - miniwget/parseURL() : return an error when url param is null. - fixing GetListOfPortMappings() - -2011/03/14: - upnpDiscover() now reporting an error code. - improvements in comments. - -2011/03/11: - adding miniupnpcstrings.h.cmake and CMakeLists.txt files. - -2011/02/15: - Implementation of GetListOfPortMappings() - -2011/02/07: - updates to minixml to support character data starting with spaces - minixml now support CDATA - upnpreplyparse treats specificaly - change in simpleUPnPcommand to return the buffer (simplification) - -2011/02/06: - Added leaseDuration argument to AddPortMapping() - Starting to implement GetListOfPortMappings() - -2011/01/11: - updating wingenminiupnpcstrings.c - -2011/01/04: - improving updateminiupnpcstrings.sh - -VERSION 1.5 : released 2011/01/01 - -2010/12/21: - use NO_GETADDRINFO macro to disable the use of getaddrinfo/freeaddrinfo - -2010/12/11: - Improvements on getHTTPResponse() code. - -2010/12/09: - new code for miniwget that handle Chunked transfer encoding - using getHTTPResponse() in SOAP call code - Adding MANIFEST.in for 'python setup.py bdist_rpm' - -2010/11/25: - changes to minissdpc.c to compile under Win32. - see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=729 - -2010/09/17: - Various improvement to Makefile from Michał Górny - -2010/08/05: - Adding the script "external-ip.sh" from Reuben Hawkins - -2010/06/09: - update to python module to match modification made on 2010/04/05 - update to Java test code to match modification made on 2010/04/05 - all UPNP_* function now return an error if the SOAP request failed - at HTTP level. - -2010/04/17: - Using GetBestRoute() under win32 in order to find the - right interface to use. - -2010/04/12: - Retrying with HTTP/1.1 if HTTP/1.0 failed. see - http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1703 - -2010/04/07: - avoid returning duplicates in upnpDiscover() - -2010/04/05: - Create a connecthostport.h/.c with connecthostport() function - and use it in miniwget and miniupnpc. - Use getnameinfo() instead of inet_ntop or inet_ntoa - Work to make miniupnpc IPV6 compatible... - Add java test code. - Big changes in order to support device having both WANIPConnection - and WANPPPConnection. - -2010/04/04: - Use getaddrinfo() instead of gethostbyname() in miniwget. - -2010/01/06: - #define _DARWIN_C_SOURCE for Mac OS X - -2009/12/19: - Improve MinGW32 build - -2009/12/11: - adding a MSVC9 project to build the static library and executable - -2009/12/10: - Fixing some compilation stuff for Windows/MinGW - -2009/12/07: - adaptations in Makefile and updateminiupnpcstring.sh for AmigaOS - some fixes for Windows when using virtual ethernet adapters (it is the - case with VMWare installed). - -2009/12/04: - some fixes for AmigaOS compilation - Changed HTTP version to HTTP/1.0 for Soap too (to prevent chunked - transfer encoding) - -2009/12/03: - updating printIDG and testigddescparse.c for debug. - modifications to compile under AmigaOS - adding a testminiwget program - Changed miniwget to advertise itself as HTTP/1.0 to prevent chunked - transfer encoding - -2009/11/26: - fixing updateminiupnpcstrings.sh to take into account - which command that does not return an error code. - -VERSION 1.4 : released 2009/10/30 - -2009/10/16: - using Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS in python module. - -2009/10/10: - Some fixes for compilation under Solaris - compilation fixes : http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=1464 - -2009/09/21: - fixing the code to ignore EINTR during connect() calls. - -2009/08/07: - Set socket timeout for connect() - Some cleanup in miniwget.c - -2009/08/04: - remove multiple redirections with -d in upnpc.c - Print textual error code in upnpc.c - Ignore EINTR during the connect() and poll() calls. - -2009/07/29: - fix in updateminiupnpcstrings.sh if OS name contains "/" - Sending a correct value for MX: field in SSDP request - -2009/07/20: - Change the Makefile to compile under Mac OS X - Fixed a stackoverflow in getDevicesFromMiniSSDPD() - -2009/07/09: - Compile under Haiku - generate miniupnpcstrings.h.in from miniupnpcstrings.h - -2009/06/04: - patching to compile under CygWin and cross compile for minGW - -VERSION 1.3 : - -2009/04/17: - updating python module - Use strtoull() when using C99 - -2009/02/28: - Fixed miniwget.c for compiling under sun - -2008/12/18: - cleanup in Makefile (thanks to Paul de Weerd) - minissdpc.c : win32 compatibility - miniupnpc.c : changed xmlns prefix from 'm' to 'u' - Removed NDEBUG (using DEBUG) - -2008/10/14: - Added the ExternalHost argument to DeletePortMapping() - -2008/10/11: - Added the ExternalHost argument to AddPortMapping() - Put a correct User-Agent: header in HTTP requests. - -VERSION 1.2 : - -2008/10/07: - Update docs - -2008/09/25: - Integrated sameport patch from Dario Meloni : Added a "sameport" - argument to upnpDiscover(). - -2008/07/18: - small modif to make Clang happy :) - -2008/07/17: - #define SOAPPREFIX "s" in miniupnpc.c in order to remove SOAP-ENV... - -2008/07/14: - include declspec.h in installation (to /usr/include/miniupnpc) - -VERSION 1.1 : - -2008/07/04: - standard options for install/ln instead of gnu-specific stuff. - -2008/07/03: - now builds a .dll and .lib with win32. (mingw32) - -2008/04/28: - make install now install the binary of the upnpc tool - -2008/04/27: - added testupnpigd.py - added error strings for miniupnpc "internal" errors - improved python module error/exception reporting. - -2008/04/23: - Completely rewrite igd_desc_parse.c in order to be compatible with - Linksys WAG200G - Added testigddescparse - updated python module - -VERSION 1.0 : - -2008/02/21: - put some #ifdef DEBUG around DisplayNameValueList() - -2008/02/18: - Improved error reporting in upnpcommands.c - UPNP_GetStatusInfo() returns LastConnectionError - -2008/02/16: - better error handling in minisoap.c - improving display of "valid IGD found" in upnpc.c - -2008/02/03: - Fixing UPNP_GetValidIGD() - improved make install :) - -2007/12/22: - Adding upnperrors.c/h to provide a strupnperror() function - used to translate UPnP error codes to string. - -2007/12/19: - Fixing getDevicesFromMiniSSDPD() - improved error reporting of UPnP functions - -2007/12/18: - It is now possible to specify a different location for MiniSSDPd socket. - working with MiniSSDPd is now more efficient. - python module improved. - -2007/12/16: - improving error reporting - -2007/12/13: - Try to improve compatibility by using HTTP/1.0 instead of 1.1 and - XML a bit different for SOAP. - -2007/11/25: - fixed select() call for linux - -2007/11/15: - Added -fPIC to CFLAG for better shared library code. - -2007/11/02: - Fixed a potential socket leak in miniwget2() - -2007/10/16: - added a parameter to upnpDiscover() in order to allow the use of another - interface than the default multicast interface. - -2007/10/12: - Fixed the creation of symbolic link in Makefile - -2007/10/08: - Added man page - -2007/10/02: - fixed memory bug in GetUPNPUrls() - -2007/10/01: - fixes in the Makefile - Added UPNP_GetIGDFromUrl() and adapted the sample program accordingly. - Added SONAME in the shared library to please debian :) - fixed MS Windows compilation (minissdpd is not available under MS Windows). - -2007/09/25: - small change to Makefile to be able to install in a different location - (default is /usr) - -2007/09/24: - now compiling both shared and static library - -2007/09/19: - Cosmetic changes on upnpc.c - -2007/09/02: - adapting to new miniSSDPd (release version ?) - -2007/08/31: - Usage of miniSSDPd to skip discovery process. - -2007/08/27: - fixed python module to allow compilation with Python older than Python 2.4 - -2007/06/12: - Added a python module. - -2007/05/19: - Fixed compilation under MinGW - -2007/05/15: - fixed a memory leak in AddPortMapping() - Added testupnpreplyparse executable to check the parsing of - upnp soap messages - minixml now ignore namespace prefixes. - -2007/04/26: - upnpc now displays external ip address with -s or -l - -2007/04/11: - changed MINIUPNPC_URL_MAXSIZE to 128 to accomodate the "BT Voyager 210" - -2007/03/19: - cleanup in miniwget.c - -2007/03/01: - Small typo fix... - -2007/01/30: - Now parsing the HTTP header from SOAP responses in order to - get content-length value. - -2007/01/29: - Fixed the Soap Query to speedup the HTTP request. - added some Win32 DLL stuff... - -2007/01/27: - Fixed some WIN32 compatibility issues - -2006/12/14: - Added UPNPIGD_IsConnected() function in miniupnp.c/.h - Added UPNP_GetValidIGD() in miniupnp.c/.h - cleaned upnpc.c main(). now using UPNP_GetValidIGD() - -2006/12/07: - Version 1.0-RC1 released - -2006/12/03: - Minor changes to compile under SunOS/Solaris - -2006/11/30: - made a minixml parser validator program - updated minixml to handle attributes correctly - -2006/11/22: - Added a -r option to the upnpc sample thanks to Alexander Hubmann. - -2006/11/19: - Cleanup code to make it more ANSI C compliant - -2006/11/10: - detect and display local lan address. - -2006/11/04: - Packets and Bytes Sent/Received are now unsigned int. - -2006/11/01: - Bug fix thanks to Giuseppe D'Angelo - -2006/10/31: - C++ compatibility for .h files. - Added a way to get ip Address on the LAN used to reach the IGD. - -2006/10/25: - Added M-SEARCH to the services in the discovery process. - -2006/10/22: - updated the Makefile to use makedepend, added a "make install" - update Makefile - -2006/10/20: - fixing the description url parsing thanks to patch sent by - Wayne Dawe. - Fixed/translated some comments. - Implemented a better discover process, first looking - for IGD then for root devices (as some devices only reply to - M-SEARCH for root devices). - -2006/09/02: - added freeUPNPDevlist() function. - -2006/08/04: - More command line arguments checking - -2006/08/01: - Added the .bat file to compile under Win32 with minGW32 - -2006/07/31: - Fixed the rootdesc parser (igd_desc_parse.c) - -2006/07/20: - parseMSEARCHReply() is now returning the ST: line as well - starting changes to detect several UPnP devices on the network - -2006/07/19: - using GetCommonLinkProperties to get down/upload bitrate - diff --git a/libs/miniupnpc/LICENSE b/libs/miniupnpc/LICENSE deleted file mode 100644 index 2434c86e4..000000000 --- a/libs/miniupnpc/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -MiniUPnPc -Copyright (c) 2005-2011, Thomas BERNARD -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/libs/miniupnpc/MANIFEST.in b/libs/miniupnpc/MANIFEST.in deleted file mode 100644 index 54b86f95e..000000000 --- a/libs/miniupnpc/MANIFEST.in +++ /dev/null @@ -1,5 +0,0 @@ -include README -include miniupnpcmodule.c -include setup.py -include *.h -include libminiupnpc.a diff --git a/libs/miniupnpc/Makefile b/libs/miniupnpc/Makefile deleted file mode 100644 index 2f46e6d19..000000000 --- a/libs/miniupnpc/Makefile +++ /dev/null @@ -1,214 +0,0 @@ -# $Id: Makefile,v 1.81 2011/06/21 15:24:14 nanard Exp $ -# MiniUPnP Project -# http://miniupnp.free.fr/ -# (c) 2005-2011 Thomas Bernard -# to install use : -# $ PREFIX=/tmp/dummylocation make install -# or -# $ INSTALLPREFIX=/usr/local make install -# or -# make install (will go to /usr/bin, /usr/lib, etc...) -OS = $(shell uname -s) -CC ?= gcc -#AR = gar -#CFLAGS = -O -Wall -g -DDEBUG -CFLAGS ?= -O -Wall -DNDEBUG -DMINIUPNPC_SET_SOCKET_TIMEOUT -Wstrict-prototypes -# -DNO_GETADDRINFO -INSTALL = install -SH = /bin/sh -JAVA = java -# see http://code.google.com/p/jnaerator/ -JNAERATOR = jnaerator-0.9.3.jar -#following libs are needed on Solaris -#LDLIBS=-lsocket -lnsl -lresolv - -# APIVERSION is used to build SONAME -APIVERSION = 8 - -SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \ - upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \ - minixmlvalid.c testupnpreplyparse.c minissdpc.c \ - upnperrors.c testigddescparse.c testminiwget.c \ - connecthostport.c portlistringparse.c receivedata.c - -LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \ - miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ - connecthostport.o portlistingparse.o receivedata.o - -ifneq ($(OS), AmigaOS) -CFLAGS := -fPIC $(CFLAGS) -LIBOBJS := $(LIBOBJS) minissdpc.o -endif - -OBJS = $(patsubst %.c,%.o,$(SRCS)) - -# HEADERS to install -HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \ - upnpreplyparse.h upnperrors.h miniupnpctypes.h \ - portlistingparse.h \ - declspec.h - -# library names -LIBRARY = libminiupnpc.a -ifeq ($(OS), Darwin) - SHAREDLIBRARY = libminiupnpc.dylib - SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib - CFLAGS := -DMACOSX -D_DARWIN_C_SOURCE $(CFLAGS) -else - SHAREDLIBRARY = libminiupnpc.so - SONAME = $(SHAREDLIBRARY).$(APIVERSION) -endif - -EXECUTABLES = upnpc-static -EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \ - testigddescparse testminiwget - -TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o - -TESTMINIWGETOBJS = miniwget.o testminiwget.o connecthostport.o receivedata.o - -TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o - -TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \ - miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \ - minisoap.o connecthostport.o receivedata.o \ - portlistingparse.o - -ifneq ($(OS), AmigaOS) -EXECUTABLES := $(EXECUTABLES) upnpc-shared -TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o -TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o -endif - -# install directories -INSTALLPREFIX ?= $(PREFIX)/usr -INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc -INSTALLDIRLIB = $(INSTALLPREFIX)/lib -INSTALLDIRBIN = $(INSTALLPREFIX)/bin - -FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES) -ifneq ($(OS), AmigaOS) -FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY) -endif - - -.PHONY: install clean depend all check everything \ - installpythonmodule -# validateminixml validateminiwget - -all: $(LIBRARY) $(EXECUTABLES) - -check: validateminixml validateminiwget - -everything: all $(EXECUTABLES_ADDTESTS) - -pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py - python setup.py build - touch $@ - -installpythonmodule: pythonmodule - python setup.py install - -validateminixml: minixmlvalid - @echo "minixml validation test" - ./minixmlvalid - touch $@ - -validateminiwget: testminiwget minihttptestserver testminiwget.sh - @echo "miniwget validation test" - ./testminiwget.sh - touch $@ - -clean: - $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h - # clean python stuff - $(RM) pythonmodule validateminixml - $(RM) -r build/ dist/ - #python setup.py clean - -install: $(FILESTOINSTALL) - $(INSTALL) -d $(INSTALLDIRINC) - $(INSTALL) -m 644 $(HEADERS) $(INSTALLDIRINC) - $(INSTALL) -d $(INSTALLDIRLIB) - $(INSTALL) -m 644 $(LIBRARY) $(INSTALLDIRLIB) -ifneq ($(OS), AmigaOS) - $(INSTALL) -m 644 $(SHAREDLIBRARY) $(INSTALLDIRLIB)/$(SONAME) - ln -fs $(SONAME) $(INSTALLDIRLIB)/$(SHAREDLIBRARY) -endif - $(INSTALL) -d $(INSTALLDIRBIN) -ifeq ($(OS), AmigaOS) - $(INSTALL) -m 755 upnpc-static $(INSTALLDIRBIN)/upnpc -else - $(INSTALL) -m 755 upnpc-shared $(INSTALLDIRBIN)/upnpc -endif - $(INSTALL) -m 755 external-ip.sh $(INSTALLDIRBIN)/external-ip - -cleaninstall: - $(RM) -r $(INSTALLDIRINC) - $(RM) $(INSTALLDIRLIB)/$(LIBRARY) - $(RM) $(INSTALLDIRLIB)/$(SHAREDLIBRARY) - -depend: - makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null - -$(LIBRARY): $(LIBOBJS) - $(AR) crs $@ $? - -$(SHAREDLIBRARY): $(LIBOBJS) -ifeq ($(OS), Darwin) - $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^ -else - $(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^ -endif - -upnpc-static: upnpc.o $(LIBRARY) $(LDLIBS) - $(CC) $(LDFLAGS) -o $@ $^ - -upnpc-shared: upnpc.o $(SHAREDLIBRARY) $(LDLIBS) - $(CC) $(LDFLAGS) -o $@ $^ - -testminixml: $(TESTMINIXMLOBJS) - -testminiwget: $(TESTMINIWGETOBJS) - -minixmlvalid: minixml.o minixmlvalid.o - -testupnpreplyparse: $(TESTUPNPREPLYPARSE) - -testigddescparse: $(TESTIGDDESCPARSE) - -miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh - $(SH) updateminiupnpcstrings.sh - -jar: $(SHAREDLIBRARY) - $(JAVA) -jar $(JNAERATOR) -library miniupnpc miniupnpc.h declspec.h upnpcommands.h upnpreplyparse.h igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) -package fr.free.miniupnp -o . -jar java/miniupnpc_$(OS).jar -v - -minihttptestserver: minihttptestserver.o - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -igd_desc_parse.o: igd_desc_parse.h -miniupnpc.o: miniupnpc.h declspec.h igd_desc_parse.h minissdpc.h miniwget.h -miniupnpc.o: minisoap.h minixml.h upnpcommands.h upnpreplyparse.h -miniupnpc.o: portlistingparse.h miniupnpctypes.h connecthostport.h -miniupnpc.o: receivedata.h -minixml.o: minixml.h -minisoap.o: minisoap.h miniupnpcstrings.h -miniwget.o: miniupnpcstrings.h miniwget.h declspec.h connecthostport.h -miniwget.o: receivedata.h -upnpc.o: miniwget.h declspec.h miniupnpc.h igd_desc_parse.h upnpcommands.h -upnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h upnperrors.h -upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h declspec.h -upnpcommands.o: miniupnpctypes.h miniupnpc.h igd_desc_parse.h -upnpreplyparse.o: upnpreplyparse.h minixml.h -testminixml.o: minixml.h igd_desc_parse.h -minixmlvalid.o: minixml.h -testupnpreplyparse.o: upnpreplyparse.h -minissdpc.o: minissdpc.h miniupnpc.h declspec.h igd_desc_parse.h codelength.h -upnperrors.o: upnperrors.h declspec.h upnpcommands.h upnpreplyparse.h -upnperrors.o: portlistingparse.h miniupnpctypes.h miniupnpc.h -upnperrors.o: igd_desc_parse.h -testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h declspec.h -testminiwget.o: miniwget.h declspec.h -connecthostport.o: connecthostport.h -receivedata.o: receivedata.h diff --git a/libs/miniupnpc/Makefile.mingw b/libs/miniupnpc/Makefile.mingw deleted file mode 100644 index 2b66211a7..000000000 --- a/libs/miniupnpc/Makefile.mingw +++ /dev/null @@ -1,93 +0,0 @@ -# $Id: Makefile.mingw,v 1.16 2011/04/18 17:39:31 nanard Exp $ -# Miniupnp project. -# http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ -# (c) 2005-2011 Thomas Bernard -# This Makefile is made for MinGW -# -CC = gcc -DLLWRAP = dllwrap -#CFLAGS = -Wall -g -DDEBUG -D_WIN32_WINNT=0X501 -CFLAGS = -Wall -Os -DNDEBUG -D_WIN32_WINNT=0X501 -LDLIBS = -lws2_32 -liphlpapi -SH = /bin/sh -# -lwsock32 -# -liphlpapi is used for GetBestRoute() -PYTHON=\utils\python25\python -OBJS=miniwget.o minixml.o igd_desc_parse.o minisoap.o \ - miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ - connecthostport.o portlistingparse.o receivedata.o -OBJSDLL=$(addprefix dll/, $(OBJS)) - -all: init upnpc-static upnpc-shared testminixml libminiupnpc.a miniupnpc.dll - -init: - mkdir dll - echo init > init - -clean: - $(RM) upnpc testminixml *.o - $(RM) dll\*.o - $(RM) *.exe - $(RM) miniupnpc.dll - $(RM) libminiupnpc.a - -libminiupnpc.a: $(OBJS) - $(AR) cr $@ $? - -pythonmodule: libminiupnpc.a - $(PYTHON) setupmingw32.py build --compiler=mingw32 - $(PYTHON) setupmingw32.py install --skip-build - -miniupnpc.dll: libminiupnpc.a $(OBJSDLL) - $(DLLWRAP) -k --driver-name "$(CC)" \ - --def miniupnpc.def \ - --output-def miniupnpc.dll.def \ - --implib miniupnpc.lib -o $@ \ - $(OBJSDLL) $(LDLIBS) - -miniupnpc.lib: miniupnpc.dll - echo $@ generated with $< - -dll/upnpc.o: upnpc.o - echo $@ generated with $< - -.c.o: - $(CC) $(CFLAGS) $(CPPFLAGS) -DSTATICLIB -c -o $@ $< - $(CC) $(CFLAGS) $(CPPFLAGS) -DMINIUPNP_EXPORTS -c -o dll/$@ $< - -upnpc.o: - $(CC) $(CFLAGS) $(CPPFLAGS) -DSTATICLIB -c -o $@ $< - $(CC) $(CFLAGS) $(CPPFLAGS) -c -o dll/$@ $< - -upnpc-static: upnpc.o libminiupnpc.a - $(CC) -o $@ $^ $(LDLIBS) - -upnpc-shared: dll/upnpc.o miniupnpc.lib - $(CC) -o $@ $^ $(LDLIBS) - -wingenminiupnpcstrings: wingenminiupnpcstrings.o - -wingenminiupnpcstrings.o: wingenminiupnpcstrings.c - -miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings - -$(SH) updateminiupnpcstrings.sh - -wingenminiupnpcstrings $< $@ - -minixml.o: minixml.c minixml.h miniupnpcstrings.h - -upnpc.o: upnpc.c miniwget.h minisoap.h miniupnpc.h igd_desc_parse.h upnpreplyparse.h upnpcommands.h upnperrors.h - -miniwget.o: miniwget.c miniwget.h miniupnpcstrings.h connecthostport.h - -minisoap.o: minisoap.c minisoap.h miniupnpcstrings.h - -miniupnpc.o: miniupnpc.c miniupnpc.h minisoap.h miniwget.h minixml.h - -igd_desc_parse.o: igd_desc_parse.c igd_desc_parse.h - -testminixml: minixml.o igd_desc_parse.o testminixml.c - -upnpreplyparse.o: upnpreplyparse.c upnpreplyparse.h minixml.h - -upnpcommands.o: upnpcommands.c upnpcommands.h upnpreplyparse.h miniupnpc.h portlistingparse.h - diff --git a/libs/miniupnpc/README b/libs/miniupnpc/README deleted file mode 100644 index 12c7fed35..000000000 --- a/libs/miniupnpc/README +++ /dev/null @@ -1,59 +0,0 @@ -Project: miniupnp -Project web page: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ -Author: Thomas Bernard -Copyright (c) 2005-2011 Thomas Bernard -This software is subject to the conditions detailed in the -LICENSE file provided within this distribution. - -For the comfort of Win32 users, bsdqueue.h is included in the distribution. -Its licence is included in the header of the file. -bsdqueue.h is a copy of the sys/queue.h of an OpenBSD system. - -* miniupnp Client * - -To compile, simply run 'gmake' (could be 'make' on your system). -Under win32, to compile with MinGW, type "mingw32make.bat". -The compilation is known to work under linux, FreeBSD, -OpenBSD, MacOS X, AmigaOS and cygwin. -The official AmigaOS4.1 SDK was used for AmigaOS4 and GeekGadgets for AmigaOS3. -upx (http://upx.sourceforge.net) is used to compress the win32 .exe files. - -To install the library and headers on the system use : -> su -> make install -> exit - -alternatively, to install in a specific location, use : -> INSTALLPREFIX=/usr/local make install - -upnpc.c is a sample client using the libminiupnpc. -To use the libminiupnpc in your application, link it with -libminiupnpc.a (or .so) and use the following functions found in miniupnpc.h, -upnpcommands.h and miniwget.h : -- upnpDiscover() -- miniwget() -- parserootdesc() -- GetUPNPUrls() -- UPNP_* (calling UPNP methods) - -Note : use #include etc... for the includes -and -lminiupnpc for the link - -Discovery process is speeded up when MiniSSDPd is running on the machine. - -* Python module * - -you can build a python module with 'make pythonmodule' -and install it with 'make installpythonmodule'. -setup.py (and setupmingw32.py) are included in the distribution. - - -Feel free to contact me if you have any problem : -e-mail : miniupnp@free.fr - -If you are using libminiupnpc in your application, please -send me an email ! - -For any question, you can use the web forum : -http://miniupnp.tuxfamily.org/forum/ - diff --git a/libs/miniupnpc/VERSION b/libs/miniupnpc/VERSION deleted file mode 100644 index 810ee4e91..000000000 --- a/libs/miniupnpc/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.6 diff --git a/libs/miniupnpc/bsdqueue.h b/libs/miniupnpc/bsdqueue.h deleted file mode 100644 index 1fe0599f5..000000000 --- a/libs/miniupnpc/bsdqueue.h +++ /dev/null @@ -1,531 +0,0 @@ -/* $OpenBSD: queue.h,v 1.31 2005/11/25 08:06:25 otto Exp $ */ -/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ - -/* - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - */ - -#ifndef _SYS_QUEUE_H_ -#define _SYS_QUEUE_H_ - -/* - * This file defines five types of data structures: singly-linked lists, - * lists, simple queues, tail queues, and circular queues. - * - * - * A singly-linked list is headed by a single forward pointer. The elements - * are singly linked for minimum space and pointer manipulation overhead at - * the expense of O(n) removal for arbitrary elements. New elements can be - * added to the list after an existing element or at the head of the list. - * Elements being removed from the head of the list should use the explicit - * macro for this purpose for optimum efficiency. A singly-linked list may - * only be traversed in the forward direction. Singly-linked lists are ideal - * for applications with large datasets and few or no removals or for - * implementing a LIFO queue. - * - * A list is headed by a single forward pointer (or an array of forward - * pointers for a hash table header). The elements are doubly linked - * so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before - * or after an existing element or at the head of the list. A list - * may only be traversed in the forward direction. - * - * A simple queue is headed by a pair of pointers, one the head of the - * list and the other to the tail of the list. The elements are singly - * linked to save space, so elements can only be removed from the - * head of the list. New elements can be added to the list before or after - * an existing element, at the head of the list, or at the end of the - * list. A simple queue may only be traversed in the forward direction. - * - * A tail queue is headed by a pair of pointers, one to the head of the - * list and the other to the tail of the list. The elements are doubly - * linked so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before or - * after an existing element, at the head of the list, or at the end of - * the list. A tail queue may be traversed in either direction. - * - * A circle queue is headed by a pair of pointers, one to the head of the - * list and the other to the tail of the list. The elements are doubly - * linked so that an arbitrary element can be removed without a need to - * traverse the list. New elements can be added to the list before or after - * an existing element, at the head of the list, or at the end of the list. - * A circle queue may be traversed in either direction, but has a more - * complex end of list detection. - * - * For details on the use of these macros, see the queue(3) manual page. - */ - -#ifdef QUEUE_MACRO_DEBUG -#define _Q_INVALIDATE(a) (a) = ((void *)-1) -#else -#define _Q_INVALIDATE(a) -#endif - -/* - * Singly-linked List definitions. - */ -#define SLIST_HEAD(name, type) \ -struct name { \ - struct type *slh_first; /* first element */ \ -} - -#define SLIST_HEAD_INITIALIZER(head) \ - { NULL } - -#ifdef SLIST_ENTRY -#undef SLIST_ENTRY -#endif - -#define SLIST_ENTRY(type) \ -struct { \ - struct type *sle_next; /* next element */ \ -} - -/* - * Singly-linked List access methods. - */ -#define SLIST_FIRST(head) ((head)->slh_first) -#define SLIST_END(head) NULL -#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head)) -#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) - -#define SLIST_FOREACH(var, head, field) \ - for((var) = SLIST_FIRST(head); \ - (var) != SLIST_END(head); \ - (var) = SLIST_NEXT(var, field)) - -#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ - for ((varp) = &SLIST_FIRST((head)); \ - ((var) = *(varp)) != SLIST_END(head); \ - (varp) = &SLIST_NEXT((var), field)) - -/* - * Singly-linked List functions. - */ -#define SLIST_INIT(head) { \ - SLIST_FIRST(head) = SLIST_END(head); \ -} - -#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ - (elm)->field.sle_next = (slistelm)->field.sle_next; \ - (slistelm)->field.sle_next = (elm); \ -} while (0) - -#define SLIST_INSERT_HEAD(head, elm, field) do { \ - (elm)->field.sle_next = (head)->slh_first; \ - (head)->slh_first = (elm); \ -} while (0) - -#define SLIST_REMOVE_NEXT(head, elm, field) do { \ - (elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \ -} while (0) - -#define SLIST_REMOVE_HEAD(head, field) do { \ - (head)->slh_first = (head)->slh_first->field.sle_next; \ -} while (0) - -#define SLIST_REMOVE(head, elm, type, field) do { \ - if ((head)->slh_first == (elm)) { \ - SLIST_REMOVE_HEAD((head), field); \ - } else { \ - struct type *curelm = (head)->slh_first; \ - \ - while (curelm->field.sle_next != (elm)) \ - curelm = curelm->field.sle_next; \ - curelm->field.sle_next = \ - curelm->field.sle_next->field.sle_next; \ - _Q_INVALIDATE((elm)->field.sle_next); \ - } \ -} while (0) - -/* - * List definitions. - */ -#define LIST_HEAD(name, type) \ -struct name { \ - struct type *lh_first; /* first element */ \ -} - -#define LIST_HEAD_INITIALIZER(head) \ - { NULL } - -#define LIST_ENTRY(type) \ -struct { \ - struct type *le_next; /* next element */ \ - struct type **le_prev; /* address of previous next element */ \ -} - -/* - * List access methods - */ -#define LIST_FIRST(head) ((head)->lh_first) -#define LIST_END(head) NULL -#define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head)) -#define LIST_NEXT(elm, field) ((elm)->field.le_next) - -#define LIST_FOREACH(var, head, field) \ - for((var) = LIST_FIRST(head); \ - (var)!= LIST_END(head); \ - (var) = LIST_NEXT(var, field)) - -/* - * List functions. - */ -#define LIST_INIT(head) do { \ - LIST_FIRST(head) = LIST_END(head); \ -} while (0) - -#define LIST_INSERT_AFTER(listelm, elm, field) do { \ - if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ - (listelm)->field.le_next->field.le_prev = \ - &(elm)->field.le_next; \ - (listelm)->field.le_next = (elm); \ - (elm)->field.le_prev = &(listelm)->field.le_next; \ -} while (0) - -#define LIST_INSERT_BEFORE(listelm, elm, field) do { \ - (elm)->field.le_prev = (listelm)->field.le_prev; \ - (elm)->field.le_next = (listelm); \ - *(listelm)->field.le_prev = (elm); \ - (listelm)->field.le_prev = &(elm)->field.le_next; \ -} while (0) - -#define LIST_INSERT_HEAD(head, elm, field) do { \ - if (((elm)->field.le_next = (head)->lh_first) != NULL) \ - (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ - (head)->lh_first = (elm); \ - (elm)->field.le_prev = &(head)->lh_first; \ -} while (0) - -#define LIST_REMOVE(elm, field) do { \ - if ((elm)->field.le_next != NULL) \ - (elm)->field.le_next->field.le_prev = \ - (elm)->field.le_prev; \ - *(elm)->field.le_prev = (elm)->field.le_next; \ - _Q_INVALIDATE((elm)->field.le_prev); \ - _Q_INVALIDATE((elm)->field.le_next); \ -} while (0) - -#define LIST_REPLACE(elm, elm2, field) do { \ - if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \ - (elm2)->field.le_next->field.le_prev = \ - &(elm2)->field.le_next; \ - (elm2)->field.le_prev = (elm)->field.le_prev; \ - *(elm2)->field.le_prev = (elm2); \ - _Q_INVALIDATE((elm)->field.le_prev); \ - _Q_INVALIDATE((elm)->field.le_next); \ -} while (0) - -/* - * Simple queue definitions. - */ -#define SIMPLEQ_HEAD(name, type) \ -struct name { \ - struct type *sqh_first; /* first element */ \ - struct type **sqh_last; /* addr of last next element */ \ -} - -#define SIMPLEQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).sqh_first } - -#define SIMPLEQ_ENTRY(type) \ -struct { \ - struct type *sqe_next; /* next element */ \ -} - -/* - * Simple queue access methods. - */ -#define SIMPLEQ_FIRST(head) ((head)->sqh_first) -#define SIMPLEQ_END(head) NULL -#define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head)) -#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) - -#define SIMPLEQ_FOREACH(var, head, field) \ - for((var) = SIMPLEQ_FIRST(head); \ - (var) != SIMPLEQ_END(head); \ - (var) = SIMPLEQ_NEXT(var, field)) - -/* - * Simple queue functions. - */ -#define SIMPLEQ_INIT(head) do { \ - (head)->sqh_first = NULL; \ - (head)->sqh_last = &(head)->sqh_first; \ -} while (0) - -#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ - if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ - (head)->sqh_last = &(elm)->field.sqe_next; \ - (head)->sqh_first = (elm); \ -} while (0) - -#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ - (elm)->field.sqe_next = NULL; \ - *(head)->sqh_last = (elm); \ - (head)->sqh_last = &(elm)->field.sqe_next; \ -} while (0) - -#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ - if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\ - (head)->sqh_last = &(elm)->field.sqe_next; \ - (listelm)->field.sqe_next = (elm); \ -} while (0) - -#define SIMPLEQ_REMOVE_HEAD(head, field) do { \ - if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \ - (head)->sqh_last = &(head)->sqh_first; \ -} while (0) - -/* - * Tail queue definitions. - */ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ -} - -#define TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first } - -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ -} - -/* - * tail queue access methods - */ -#define TAILQ_FIRST(head) ((head)->tqh_first) -#define TAILQ_END(head) NULL -#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) -#define TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) -/* XXX */ -#define TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) -#define TAILQ_EMPTY(head) \ - (TAILQ_FIRST(head) == TAILQ_END(head)) - -#define TAILQ_FOREACH(var, head, field) \ - for((var) = TAILQ_FIRST(head); \ - (var) != TAILQ_END(head); \ - (var) = TAILQ_NEXT(var, field)) - -#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ - for((var) = TAILQ_LAST(head, headname); \ - (var) != TAILQ_END(head); \ - (var) = TAILQ_PREV(var, headname, field)) - -/* - * Tail queue functions. - */ -#define TAILQ_INIT(head) do { \ - (head)->tqh_first = NULL; \ - (head)->tqh_last = &(head)->tqh_first; \ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do { \ - if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ - (head)->tqh_first->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (head)->tqh_first = (elm); \ - (elm)->field.tqe_prev = &(head)->tqh_first; \ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do { \ - (elm)->field.tqe_next = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &(elm)->field.tqe_next; \ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ - (elm)->field.tqe_next->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (listelm)->field.tqe_next = (elm); \ - (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ -} while (0) - -#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - (elm)->field.tqe_next = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ -} while (0) - -#define TAILQ_REMOVE(head, elm, field) do { \ - if (((elm)->field.tqe_next) != NULL) \ - (elm)->field.tqe_next->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ - _Q_INVALIDATE((elm)->field.tqe_prev); \ - _Q_INVALIDATE((elm)->field.tqe_next); \ -} while (0) - -#define TAILQ_REPLACE(head, elm, elm2, field) do { \ - if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \ - (elm2)->field.tqe_next->field.tqe_prev = \ - &(elm2)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm2)->field.tqe_next; \ - (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \ - *(elm2)->field.tqe_prev = (elm2); \ - _Q_INVALIDATE((elm)->field.tqe_prev); \ - _Q_INVALIDATE((elm)->field.tqe_next); \ -} while (0) - -/* - * Circular queue definitions. - */ -#define CIRCLEQ_HEAD(name, type) \ -struct name { \ - struct type *cqh_first; /* first element */ \ - struct type *cqh_last; /* last element */ \ -} - -#define CIRCLEQ_HEAD_INITIALIZER(head) \ - { CIRCLEQ_END(&head), CIRCLEQ_END(&head) } - -#define CIRCLEQ_ENTRY(type) \ -struct { \ - struct type *cqe_next; /* next element */ \ - struct type *cqe_prev; /* previous element */ \ -} - -/* - * Circular queue access methods - */ -#define CIRCLEQ_FIRST(head) ((head)->cqh_first) -#define CIRCLEQ_LAST(head) ((head)->cqh_last) -#define CIRCLEQ_END(head) ((void *)(head)) -#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) -#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) -#define CIRCLEQ_EMPTY(head) \ - (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head)) - -#define CIRCLEQ_FOREACH(var, head, field) \ - for((var) = CIRCLEQ_FIRST(head); \ - (var) != CIRCLEQ_END(head); \ - (var) = CIRCLEQ_NEXT(var, field)) - -#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ - for((var) = CIRCLEQ_LAST(head); \ - (var) != CIRCLEQ_END(head); \ - (var) = CIRCLEQ_PREV(var, field)) - -/* - * Circular queue functions. - */ -#define CIRCLEQ_INIT(head) do { \ - (head)->cqh_first = CIRCLEQ_END(head); \ - (head)->cqh_last = CIRCLEQ_END(head); \ -} while (0) - -#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ - (elm)->field.cqe_next = (listelm)->field.cqe_next; \ - (elm)->field.cqe_prev = (listelm); \ - if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \ - (head)->cqh_last = (elm); \ - else \ - (listelm)->field.cqe_next->field.cqe_prev = (elm); \ - (listelm)->field.cqe_next = (elm); \ -} while (0) - -#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ - (elm)->field.cqe_next = (listelm); \ - (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ - if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \ - (head)->cqh_first = (elm); \ - else \ - (listelm)->field.cqe_prev->field.cqe_next = (elm); \ - (listelm)->field.cqe_prev = (elm); \ -} while (0) - -#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ - (elm)->field.cqe_next = (head)->cqh_first; \ - (elm)->field.cqe_prev = CIRCLEQ_END(head); \ - if ((head)->cqh_last == CIRCLEQ_END(head)) \ - (head)->cqh_last = (elm); \ - else \ - (head)->cqh_first->field.cqe_prev = (elm); \ - (head)->cqh_first = (elm); \ -} while (0) - -#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ - (elm)->field.cqe_next = CIRCLEQ_END(head); \ - (elm)->field.cqe_prev = (head)->cqh_last; \ - if ((head)->cqh_first == CIRCLEQ_END(head)) \ - (head)->cqh_first = (elm); \ - else \ - (head)->cqh_last->field.cqe_next = (elm); \ - (head)->cqh_last = (elm); \ -} while (0) - -#define CIRCLEQ_REMOVE(head, elm, field) do { \ - if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \ - (head)->cqh_last = (elm)->field.cqe_prev; \ - else \ - (elm)->field.cqe_next->field.cqe_prev = \ - (elm)->field.cqe_prev; \ - if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \ - (head)->cqh_first = (elm)->field.cqe_next; \ - else \ - (elm)->field.cqe_prev->field.cqe_next = \ - (elm)->field.cqe_next; \ - _Q_INVALIDATE((elm)->field.cqe_prev); \ - _Q_INVALIDATE((elm)->field.cqe_next); \ -} while (0) - -#define CIRCLEQ_REPLACE(head, elm, elm2, field) do { \ - if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \ - CIRCLEQ_END(head)) \ - (head).cqh_last = (elm2); \ - else \ - (elm2)->field.cqe_next->field.cqe_prev = (elm2); \ - if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \ - CIRCLEQ_END(head)) \ - (head).cqh_first = (elm2); \ - else \ - (elm2)->field.cqe_prev->field.cqe_next = (elm2); \ - _Q_INVALIDATE((elm)->field.cqe_prev); \ - _Q_INVALIDATE((elm)->field.cqe_next); \ -} while (0) - -#endif /* !_SYS_QUEUE_H_ */ diff --git a/libs/miniupnpc/codelength.h b/libs/miniupnpc/codelength.h deleted file mode 100644 index f11e5e936..000000000 --- a/libs/miniupnpc/codelength.h +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id: codelength.h,v 1.1 2008/10/06 22:04:06 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas BERNARD - * copyright (c) 2005-2008 Thomas Bernard - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#ifndef __CODELENGTH_H__ -#define __CODELENGTH_H__ - -/* Encode length by using 7bit per Byte : - * Most significant bit of each byte specifies that the - * following byte is part of the code */ -#define DECODELENGTH(n, p) n = 0; \ - do { n = (n << 7) | (*p & 0x7f); } \ - while(*(p++)&0x80); - -#define CODELENGTH(n, p) if(n>=268435456) *(p++) = (n >> 28) | 0x80; \ - if(n>=2097152) *(p++) = (n >> 21) | 0x80; \ - if(n>=16384) *(p++) = (n >> 14) | 0x80; \ - if(n>=128) *(p++) = (n >> 7) | 0x80; \ - *(p++) = n & 0x7f; - -#endif - diff --git a/libs/miniupnpc/connecthostport.c b/libs/miniupnpc/connecthostport.c deleted file mode 100644 index 76e8e374b..000000000 --- a/libs/miniupnpc/connecthostport.c +++ /dev/null @@ -1,241 +0,0 @@ -/* $Id: connecthostport.c,v 1.5 2011/04/09 08:49:50 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2010-2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ - -/* use getaddrinfo() or gethostbyname() - * uncomment the following line in order to use gethostbyname() */ -#ifdef NO_GETADDRINFO -#define USE_GETHOSTBYNAME -#endif - -#include -#include -#ifdef WIN32 -#include -#include -#include -#define MAXHOSTNAMELEN 64 -#define snprintf _snprintf -#define herror -#define socklen_t int -#else /* #ifdef WIN32 */ -#include -#include -#include -#define closesocket close -#include -/* defining MINIUPNPC_IGNORE_EINTR enable the ignore of interruptions - * during the connect() call */ -#define MINIUPNPC_IGNORE_EINTR -#ifndef USE_GETHOSTBYNAME -#include -#include -#endif /* #ifndef USE_GETHOSTBYNAME */ -#endif /* #else WIN32 */ - -/* definition of PRINT_SOCKET_ERROR */ -#ifdef WIN32 -#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); -#else -#define PRINT_SOCKET_ERROR(x) perror(x) -#endif - -#if defined(__amigaos__) || defined(__amigaos4__) -#define herror(A) printf("%s\n", A) -#endif - -#include "connecthostport.h" - -/* connecthostport() - * return a socket connected (TCP) to the host and port - * or -1 in case of error */ -int connecthostport(const char * host, unsigned short port) -{ - int s, n; -#ifdef USE_GETHOSTBYNAME - struct sockaddr_in dest; - struct hostent *hp; -#else /* #ifdef USE_GETHOSTBYNAME */ - char tmp_host[MAXHOSTNAMELEN+1]; - char port_str[8]; - struct addrinfo *ai, *p; - struct addrinfo hints; -#endif /* #ifdef USE_GETHOSTBYNAME */ -#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT - struct timeval timeout; -#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ - -#ifdef USE_GETHOSTBYNAME - hp = gethostbyname(host); - if(hp == NULL) - { - herror(host); - return -1; - } - memcpy(&dest.sin_addr, hp->h_addr, sizeof(dest.sin_addr)); - memset(dest.sin_zero, 0, sizeof(dest.sin_zero)); - s = socket(PF_INET, SOCK_STREAM, 0); - if(s < 0) - { - PRINT_SOCKET_ERROR("socket"); - return -1; - } -#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT - /* setting a 3 seconds timeout for the connect() call */ - timeout.tv_sec = 3; - timeout.tv_usec = 0; - if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } - timeout.tv_sec = 3; - timeout.tv_usec = 0; - if(setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(struct timeval)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } -#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ - dest.sin_family = AF_INET; - dest.sin_port = htons(port); - n = connect(s, (struct sockaddr *)&dest, sizeof(struct sockaddr_in)); -#ifdef MINIUPNPC_IGNORE_EINTR - while(n < 0 && errno == EINTR) - { - socklen_t len; - fd_set wset; - int err; - FD_ZERO(&wset); - FD_SET(s, &wset); - if((n = select(s + 1, NULL, &wset, NULL, NULL)) == -1 && errno == EINTR) - continue; - /*len = 0;*/ - /*n = getpeername(s, NULL, &len);*/ - len = sizeof(err); - if(getsockopt(s, SOL_SOCKET, SO_ERROR, &err, &len) < 0) { - PRINT_SOCKET_ERROR("getsockopt"); - closesocket(s); - return -1; - } - if(err != 0) { - errno = err; - n = -1; - } - } -#endif /* #ifdef MINIUPNPC_IGNORE_EINTR */ - if(n<0) - { - PRINT_SOCKET_ERROR("connect"); - closesocket(s); - return -1; - } -#else /* #ifdef USE_GETHOSTBYNAME */ - /* use getaddrinfo() instead of gethostbyname() */ - memset(&hints, 0, sizeof(hints)); - /* hints.ai_flags = AI_ADDRCONFIG; */ -#ifdef AI_NUMERICSERV - hints.ai_flags = AI_NUMERICSERV; -#endif - hints.ai_socktype = SOCK_STREAM; - hints.ai_family = AF_UNSPEC; /* AF_INET, AF_INET6 or AF_UNSPEC */ - /* hints.ai_protocol = IPPROTO_TCP; */ - snprintf(port_str, sizeof(port_str), "%hu", port); - if(host[0] == '[') - { - /* literal ip v6 address */ - int i; - for(i = 0; host[i+1] && (host[i+1] != ']') && i < MAXHOSTNAMELEN; i++) - { - tmp_host[i] = host[i+1]; - } - tmp_host[i] = '\0'; - } - else - { - strncpy(tmp_host, host, MAXHOSTNAMELEN); - } - tmp_host[MAXHOSTNAMELEN] = '\0'; - n = getaddrinfo(tmp_host, port_str, &hints, &ai); - if(n != 0) - { -#ifdef WIN32 - fprintf(stderr, "getaddrinfo() error : %d\n", n); -#else - fprintf(stderr, "getaddrinfo() error : %s\n", gai_strerror(n)); -#endif - return -1; - } - s = -1; - for(p = ai; p; p = p->ai_next) - { - s = socket(p->ai_family, p->ai_socktype, p->ai_protocol); - if(s < 0) - continue; -#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT - /* setting a 3 seconds timeout for the connect() call */ - timeout.tv_sec = 3; - timeout.tv_usec = 0; - if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } - timeout.tv_sec = 3; - timeout.tv_usec = 0; - if(setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(struct timeval)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } -#endif /* #ifdef MINIUPNPC_SET_SOCKET_TIMEOUT */ - n = connect(s, p->ai_addr, p->ai_addrlen); -#ifdef MINIUPNPC_IGNORE_EINTR - while(n < 0 && errno == EINTR) - { - socklen_t len; - fd_set wset; - int err; - FD_ZERO(&wset); - FD_SET(s, &wset); - if((n = select(s + 1, NULL, &wset, NULL, NULL)) == -1 && errno == EINTR) - continue; - /*len = 0;*/ - /*n = getpeername(s, NULL, &len);*/ - len = sizeof(err); - if(getsockopt(s, SOL_SOCKET, SO_ERROR, &err, &len) < 0) { - PRINT_SOCKET_ERROR("getsockopt"); - closesocket(s); - freeaddrinfo(ai); - return -1; - } - if(err != 0) { - errno = err; - n = -1; - } - } -#endif /* #ifdef MINIUPNPC_IGNORE_EINTR */ - if(n < 0) - { - closesocket(s); - continue; - } - else - { - break; - } - } - freeaddrinfo(ai); - if(s < 0) - { - PRINT_SOCKET_ERROR("socket"); - return -1; - } - if(n < 0) - { - PRINT_SOCKET_ERROR("connect"); - return -1; - } -#endif /* #ifdef USE_GETHOSTBYNAME */ - return s; -} - diff --git a/libs/miniupnpc/connecthostport.h b/libs/miniupnpc/connecthostport.h deleted file mode 100644 index 57e24eb27..000000000 --- a/libs/miniupnpc/connecthostport.h +++ /dev/null @@ -1,17 +0,0 @@ -/* $Id: connecthostport.h,v 1.1 2010/04/04 23:21:03 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ - * Author: Thomas Bernard - * Copyright (c) 2010 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef __CONNECTHOSTPORT_H__ -#define __CONNECTHOSTPORT_H__ - -/* connecthostport() - * return a socket connected (TCP) to the host and port - * or -1 in case of error */ -int connecthostport(const char * host, unsigned short port); - -#endif - diff --git a/libs/miniupnpc/declspec.h b/libs/miniupnpc/declspec.h deleted file mode 100644 index b804247d2..000000000 --- a/libs/miniupnpc/declspec.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __DECLSPEC_H__ -#define __DECLSPEC_H__ - -#if defined(WIN32) && !defined(STATICLIB) - #ifdef MINIUPNP_EXPORTS - #define LIBSPEC __declspec(dllexport) - #else - #define LIBSPEC __declspec(dllimport) - #endif -#else - #define LIBSPEC -#endif - -#endif - diff --git a/libs/miniupnpc/external-ip.sh b/libs/miniupnpc/external-ip.sh deleted file mode 100755 index 965d86b2a..000000000 --- a/libs/miniupnpc/external-ip.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# $Id: external-ip.sh,v 1.1 2010/08/05 12:57:41 nanard Exp $ -# (c) 2010 Reuben Hawkins -upnpc -s | grep ExternalIPAddress | sed 's/[^0-9\.]//g' diff --git a/libs/miniupnpc/igd_desc_parse.c b/libs/miniupnpc/igd_desc_parse.c deleted file mode 100644 index 6c3e65677..000000000 --- a/libs/miniupnpc/igd_desc_parse.c +++ /dev/null @@ -1,125 +0,0 @@ -/* $Id: igd_desc_parse.c,v 1.14 2011/04/11 09:19:24 nanard Exp $ */ -/* Project : miniupnp - * http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005-2010 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ - -#include "igd_desc_parse.h" -#include -#include - -/* Start element handler : - * update nesting level counter and copy element name */ -void IGDstartelt(void * d, const char * name, int l) -{ - struct IGDdatas * datas = (struct IGDdatas *)d; - memcpy( datas->cureltname, name, l); - datas->cureltname[l] = '\0'; - datas->level++; - if( (l==7) && !memcmp(name, "service", l) ) { - datas->tmp.controlurl[0] = '\0'; - datas->tmp.eventsuburl[0] = '\0'; - datas->tmp.scpdurl[0] = '\0'; - datas->tmp.servicetype[0] = '\0'; - } -} - -/* End element handler : - * update nesting level counter and update parser state if - * service element is parsed */ -void IGDendelt(void * d, const char * name, int l) -{ - struct IGDdatas * datas = (struct IGDdatas *)d; - datas->level--; - /*printf("endelt %2d %.*s\n", datas->level, l, name);*/ - if( (l==7) && !memcmp(name, "service", l) ) - { - /* - if( datas->state < 1 - && !strcmp(datas->servicetype, - // "urn:schemas-upnp-org:service:WANIPConnection:1") ) - "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1")) - datas->state ++; - */ - if(0==strcmp(datas->tmp.servicetype, - "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1")) { - memcpy(&datas->CIF, &datas->tmp, sizeof(struct IGDdatas_service)); - } else if(0==strcmp(datas->tmp.servicetype, - "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1")) { - memcpy(&datas->IPv6FC, &datas->tmp, sizeof(struct IGDdatas_service)); - } else if(0==strcmp(datas->tmp.servicetype, - "urn:schemas-upnp-org:service:WANIPConnection:1") - || 0==strcmp(datas->tmp.servicetype, - "urn:schemas-upnp-org:service:WANPPPConnection:1") ) { - if(datas->first.servicetype[0] == '\0') { - memcpy(&datas->first, &datas->tmp, sizeof(struct IGDdatas_service)); - } else { - memcpy(&datas->second, &datas->tmp, sizeof(struct IGDdatas_service)); - } - } - } -} - -/* Data handler : - * copy data depending on the current element name and state */ -void IGDdata(void * d, const char * data, int l) -{ - struct IGDdatas * datas = (struct IGDdatas *)d; - char * dstmember = 0; - /*printf("%2d %s : %.*s\n", - datas->level, datas->cureltname, l, data); */ - if( !strcmp(datas->cureltname, "URLBase") ) - dstmember = datas->urlbase; - else if( !strcmp(datas->cureltname, "presentationURL") ) - dstmember = datas->presentationurl; - else if( !strcmp(datas->cureltname, "serviceType") ) - dstmember = datas->tmp.servicetype; - else if( !strcmp(datas->cureltname, "controlURL") ) - dstmember = datas->tmp.controlurl; - else if( !strcmp(datas->cureltname, "eventSubURL") ) - dstmember = datas->tmp.eventsuburl; - else if( !strcmp(datas->cureltname, "SCPDURL") ) - dstmember = datas->tmp.scpdurl; -/* else if( !strcmp(datas->cureltname, "deviceType") ) - dstmember = datas->devicetype_tmp;*/ - if(dstmember) - { - if(l>=MINIUPNPC_URL_MAXSIZE) - l = MINIUPNPC_URL_MAXSIZE-1; - memcpy(dstmember, data, l); - dstmember[l] = '\0'; - } -} - -void printIGD(struct IGDdatas * d) -{ - printf("urlbase = '%s'\n", d->urlbase); - printf("WAN Device (Common interface config) :\n"); - /*printf(" deviceType = '%s'\n", d->CIF.devicetype);*/ - printf(" serviceType = '%s'\n", d->CIF.servicetype); - printf(" controlURL = '%s'\n", d->CIF.controlurl); - printf(" eventSubURL = '%s'\n", d->CIF.eventsuburl); - printf(" SCPDURL = '%s'\n", d->CIF.scpdurl); - printf("primary WAN Connection Device (IP or PPP Connection):\n"); - /*printf(" deviceType = '%s'\n", d->first.devicetype);*/ - printf(" servicetype = '%s'\n", d->first.servicetype); - printf(" controlURL = '%s'\n", d->first.controlurl); - printf(" eventSubURL = '%s'\n", d->first.eventsuburl); - printf(" SCPDURL = '%s'\n", d->first.scpdurl); - printf("secondary WAN Connection Device (IP or PPP Connection):\n"); - /*printf(" deviceType = '%s'\n", d->second.devicetype);*/ - printf(" servicetype = '%s'\n", d->second.servicetype); - printf(" controlURL = '%s'\n", d->second.controlurl); - printf(" eventSubURL = '%s'\n", d->second.eventsuburl); - printf(" SCPDURL = '%s'\n", d->second.scpdurl); - printf("WAN IPv6 Firewall Control :\n"); - /*printf(" deviceType = '%s'\n", d->IPv6FC.devicetype);*/ - printf(" servicetype = '%s'\n", d->IPv6FC.servicetype); - printf(" controlURL = '%s'\n", d->IPv6FC.controlurl); - printf(" eventSubURL = '%s'\n", d->IPv6FC.eventsuburl); - printf(" SCPDURL = '%s'\n", d->IPv6FC.scpdurl); -} - - diff --git a/libs/miniupnpc/igd_desc_parse.h b/libs/miniupnpc/igd_desc_parse.h deleted file mode 100644 index bab1fd56f..000000000 --- a/libs/miniupnpc/igd_desc_parse.h +++ /dev/null @@ -1,48 +0,0 @@ -/* $Id: igd_desc_parse.h,v 1.10 2011/04/11 09:19:24 nanard Exp $ */ -/* Project : miniupnp - * http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005-2010 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef __IGD_DESC_PARSE_H__ -#define __IGD_DESC_PARSE_H__ - -/* Structure to store the result of the parsing of UPnP - * descriptions of Internet Gateway Devices */ -#define MINIUPNPC_URL_MAXSIZE (128) -struct IGDdatas_service { - char controlurl[MINIUPNPC_URL_MAXSIZE]; - char eventsuburl[MINIUPNPC_URL_MAXSIZE]; - char scpdurl[MINIUPNPC_URL_MAXSIZE]; - char servicetype[MINIUPNPC_URL_MAXSIZE]; - /*char devicetype[MINIUPNPC_URL_MAXSIZE];*/ -}; - -struct IGDdatas { - char cureltname[MINIUPNPC_URL_MAXSIZE]; - char urlbase[MINIUPNPC_URL_MAXSIZE]; - char presentationurl[MINIUPNPC_URL_MAXSIZE]; - int level; - /*int state;*/ - /* "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1" */ - struct IGDdatas_service CIF; - /* "urn:schemas-upnp-org:service:WANIPConnection:1" - * "urn:schemas-upnp-org:service:WANPPPConnection:1" */ - struct IGDdatas_service first; - /* if both WANIPConnection and WANPPPConnection are present */ - struct IGDdatas_service second; - /* "urn:schemas-upnp-org:service:WANIPv6FirewallControl:1" */ - struct IGDdatas_service IPv6FC; - /* tmp */ - struct IGDdatas_service tmp; -}; - -void IGDstartelt(void *, const char *, int); -void IGDendelt(void *, const char *, int); -void IGDdata(void *, const char *, int); -void printIGD(struct IGDdatas *); - -#endif - diff --git a/libs/miniupnpc/java/JavaBridgeTest.java b/libs/miniupnpc/java/JavaBridgeTest.java deleted file mode 100644 index 62bba345c..000000000 --- a/libs/miniupnpc/java/JavaBridgeTest.java +++ /dev/null @@ -1,95 +0,0 @@ -import java.nio.ByteBuffer; -import fr.free.miniupnp.*; - -/** - * - * @author syuu - */ -public class JavaBridgeTest { - public static void main(String[] args) { - int UPNP_DELAY = 2000; - MiniupnpcLibrary miniupnpc = MiniupnpcLibrary.INSTANCE; - UPNPDev devlist = null; - UPNPUrls urls = new UPNPUrls(); - IGDdatas data = new IGDdatas(); - ByteBuffer lanaddr = ByteBuffer.allocate(16); - ByteBuffer intClient = ByteBuffer.allocate(16); - ByteBuffer intPort = ByteBuffer.allocate(6); - ByteBuffer desc = ByteBuffer.allocate(80); - ByteBuffer enabled = ByteBuffer.allocate(4); - ByteBuffer leaseDuration = ByteBuffer.allocate(16); - int ret; - int i; - - if(args.length < 2) { - System.err.println("Usage : java [...] JavaBridgeTest port protocol"); - System.out.println(" port is numeric, protocol is TCP or UDP"); - return; - } - - devlist = miniupnpc.upnpDiscover(UPNP_DELAY, (String) null, (String) null, 0, null); - if (devlist != null) { - System.out.println("List of UPNP devices found on the network :"); - for (UPNPDev device = devlist; device != null; device = device.pNext) { - System.out.println("desc: " + device.descURL.getString(0) + " st: " + device.st.getString(0)); - } - if ((i = miniupnpc.UPNP_GetValidIGD(devlist, urls, data, lanaddr, 16)) != 0) { - switch (i) { - case 1: - System.out.println("Found valid IGD : " + urls.controlURL.getString(0)); - break; - case 2: - System.out.println("Found a (not connected?) IGD : " + urls.controlURL.getString(0)); - System.out.println("Trying to continue anyway"); - break; - case 3: - System.out.println("UPnP device found. Is it an IGD ? : " + urls.controlURL.getString(0)); - System.out.println("Trying to continue anyway"); - break; - default: - System.out.println("Found device (igd ?) : " + urls.controlURL.getString(0)); - System.out.println("Trying to continue anyway"); - - } - System.out.println("Local LAN ip address : " + new String(lanaddr.array())); - ByteBuffer externalAddress = ByteBuffer.allocate(16); - miniupnpc.UPNP_GetExternalIPAddress(urls.controlURL.getString(0), - new String(data.first.servicetype), externalAddress); - System.out.println("ExternalIPAddress = " + new String(externalAddress.array())); - ret = miniupnpc.UPNP_AddPortMapping( - urls.controlURL.getString(0), // controlURL - new String(data.first.servicetype), // servicetype - args[0], // external Port - args[0], // internal Port - new String(lanaddr.array()), // internal client - "added via miniupnpc/JAVA !", // description - args[1], // protocol UDP or TCP - null, // remote host (useless) - "0"); // leaseDuration - if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) - System.out.println("AddPortMapping() failed with code " + ret); - ret = miniupnpc.UPNP_GetSpecificPortMappingEntry( - urls.controlURL.getString(0), new String(data.first.servicetype), - args[0], args[1], intClient, intPort, - desc, enabled, leaseDuration); - if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) - System.out.println("GetSpecificPortMappingEntry() failed with code " + ret); - System.out.println("InternalIP:Port = " + - new String(intClient.array()) + ":" + new String(intPort.array()) + - " (" + new String(desc.array()) + ")"); - ret = miniupnpc.UPNP_DeletePortMapping( - urls.controlURL.getString(0), - new String(data.first.servicetype), - args[0], args[1], null); - if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS) - System.out.println("DelPortMapping() failed with code " + ret); - miniupnpc.FreeUPNPUrls(urls); - } else { - System.out.println("No valid UPNP Internet Gateway Device found."); - } - miniupnpc.freeUPNPDevlist(devlist); - } else { - System.out.println("No IGD UPnP Device found on the network !\n"); - } - } -} diff --git a/libs/miniupnpc/java/testjava.sh b/libs/miniupnpc/java/testjava.sh deleted file mode 100755 index c997baf9e..000000000 --- a/libs/miniupnpc/java/testjava.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/sh - -JAVA=java -JAVAC=javac - -$JAVAC -cp miniupnpc_Linux.jar JavaBridgeTest.java -$JAVA -cp miniupnpc_Linux.jar:. JavaBridgeTest 12345 UDP - diff --git a/libs/miniupnpc/man3/miniupnpc.3 b/libs/miniupnpc/man3/miniupnpc.3 deleted file mode 100644 index 0e35aaac5..000000000 --- a/libs/miniupnpc/man3/miniupnpc.3 +++ /dev/null @@ -1,53 +0,0 @@ -\" $Id: miniupnpc.3,v 1.3 2011/07/25 18:02:11 nanard Exp $ -.TH miniupnpc 3 -.SH NAME -miniupnpc \- UPnP client library -.SH SYNOPSIS -.SH DESCRIPTION -The miniupnpc library implement the UPnP protocol defined -to dialog with Internet Gateway Devices. It also has -the ability to use data gathered by minissdpd(1) about -UPnP devices up on the network in order to skip the -long UPnP device discovery process. -.PP -At first, upnpDiscover(3) has to be used to discover UPnP IGD present -on the network. Then UPNP_GetValidIGD(3) to select the right one. -Alternatively, UPNP_GetIGDFromUrl(3) could be used to bypass discovery -process if the root description url of the device to use is known. -Then all the UPNP_* functions can be used, such as -UPNP_GetConnectionTypeInfo(3), UPNP_AddPortMapping(3), etc... -.SH "HEADER FILES" -.IP miniupnpc.h -That's the main header file for the miniupnpc library API. -It contains all the functions and structures related to device discovery. -.IP upnpcommands.h -This header file contain the UPnP IGD methods that are accessible -through the miniupnpc API. The name of the C functions are matching -the UPnP methods names. ie: GetGenericPortMappingEntry is -UPNP_GetGenericPortMappingEntry. -.SH "API FUNCTIONS" -.IP "struct UPNPDev * upnpDiscover(int delay, const char * multicastif, const char * minissdpdsock, int sameport, int ipv6, int * error);" -execute the discovery process. -delay (in millisecond) is the maximum time for waiting any device response. -If available, device list will be obtained from MiniSSDPd. -Default path for minissdpd socket will be used if minissdpdsock argument is NULL. -If multicastif is not NULL, it will be used instead of the default multicast interface for sending SSDP discover packets. -If sameport is not null, SSDP packets will be sent from the source port 1900 (same as destination port) otherwise system assign a source port. -If ipv6 is not 0, IPv6 is used instead of IPv4 for the discovery process. -.IP "void freeUPNPDevlist(struct UPNPDev * devlist);" -free the list returned by upnpDiscover(). -.IP "int UPNP_GetValidIGD(struct UPNPDev * devlist, struct UPNPUrls * urls, struct IGDdatas * data, char * lanaddr, int lanaddrlen);" -browse the list of device returned by upnpDiscover(), find -a live UPnP internet gateway device and fill structures passed as arguments -with data used for UPNP methods invokation. -.IP "int UPNP_GetIGDFromUrl(const char * rootdescurl, struct UPNPUrls * urls, struct IGDdatas * data, char * lanaddr, int lanaddrlen);" -permit to bypass the upnpDiscover() call if the xml root description -URL of the UPnP IGD is known. -Fill structures passed as arguments -with data used for UPNP methods invokation. -.IP "void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *);" -.IP "void FreeUPNPUrls(struct UPNPUrls *);" - -.SH "SEE ALSO" -minissdpd(1) -.SH BUGS diff --git a/libs/miniupnpc/mingw32/libminiupnpc.a b/libs/miniupnpc/mingw32/libminiupnpc.a deleted file mode 100644 index fb2065753fa28f20bcdd5ee63634c9e1f10a37e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2028512 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�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

){h_FhfXMY}t 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 gm<;eKkb294);($l4u`s&Q$S4qn1| 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

U%hgYYwX=o6}S}h-^ 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Π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�{h8m!DR~ODsk>or|Bb}o4 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 diff --git a/libs/miniupnpc/mingw32make.bat b/libs/miniupnpc/mingw32make.bat deleted file mode 100644 index 92efad963..000000000 --- a/libs/miniupnpc/mingw32make.bat +++ /dev/null @@ -1,8 +0,0 @@ -@mingw32-make -f Makefile.mingw %1 -@if errorlevel 1 goto end -@if not exist upnpc-static.exe goto end -@strip upnpc-static.exe -@upx --best upnpc-static.exe -@strip upnpc-shared.exe -@upx --best upnpc-shared.exe -:end diff --git a/libs/miniupnpc/mingw64/libminiupnpc.a b/libs/miniupnpc/mingw64/libminiupnpc.a deleted file mode 100644 index 4275196d37a8c9574d5c7f66e9938b8855dd7d87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135706 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�b-r+1mct*02*iV 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define CRAP_LENGTH (2048) - -volatile int quit = 0; -volatile int child_to_wait_for = 0; - -/** - * signal handler for SIGCHLD (child status has changed) - */ -void handle_signal_chld(int sig) -{ - printf("handle_signal_chld(%d)\n", sig); - ++child_to_wait_for; -} - -/** - * signal handler for SIGINT (CRTL C) - */ -#if 0 -void handle_signal_int(int sig) -{ - printf("handle_signal_int(%d)\n", sig); - quit = 1; -} -#endif - -/** - * build a text/plain content of the specified length - */ -void build_content(char * p, int n) -{ - char line_buffer[80]; - int k; - int i = 0; - - while(n > 0) { - k = snprintf(line_buffer, sizeof(line_buffer), - "%04d_ABCDEFGHIJKL_This_line_is_64_bytes_long_ABCDEFGHIJKL_%04d\r\n", - i, i); - if(k != 64) { - fprintf(stderr, "snprintf() returned %d in build_content()\n", k); - } - ++i; - if(n >= 64) { - memcpy(p, line_buffer, 64); - p += 64; - n -= 64; - } else { - memcpy(p, line_buffer, n); - p += n; - n = 0; - } - } -} - -/** - * build crappy content - */ -void build_crap(char * p, int n) -{ - static const char crap[] = "_CRAP_\r\n"; - int i; - - while(n > 0) { - i = sizeof(crap) - 1; - if(i > n) - i = n; - memcpy(p, crap, i); - p += i; - n -= i; - } -} - -/** - * build chunked response. - * return a malloc'ed buffer - */ -char * build_chunked_response(int content_length, int * response_len) { - char * response_buffer; - char * content_buffer; - int buffer_length; - int i, n; - - /* allocate to have some margin */ - buffer_length = 256 + content_length + (content_length >> 4); - response_buffer = malloc(buffer_length); - *response_len = snprintf(response_buffer, buffer_length, - "HTTP/1.1 200 OK\r\n" - "Content-Type: text/plain\r\n" - "Transfer-Encoding: chunked\r\n" - "\r\n"); - - /* build the content */ - content_buffer = malloc(content_length); - build_content(content_buffer, content_length); - - /* chunk it */ - i = 0; - while(i < content_length) { - n = (rand() % 199) + 1; - if(i + n > content_length) { - n = content_length - i; - } - /* TODO : check buffer size ! */ - *response_len += snprintf(response_buffer + *response_len, - buffer_length - *response_len, - "%x\r\n", n); - memcpy(response_buffer + *response_len, content_buffer + i, n); - *response_len += n; - i += n; - response_buffer[(*response_len)++] = '\r'; - response_buffer[(*response_len)++] = '\n'; - } - memcpy(response_buffer + *response_len, "0\r\n", 3); - *response_len += 3; - free(content_buffer); - - printf("resp_length=%d buffer_length=%d content_length=%d\n", - *response_len, buffer_length, content_length); - return response_buffer; -} - -enum modes { MODE_INVALID, MODE_CHUNKED, MODE_ADDCRAP, MODE_NORMAL }; -const struct { - const enum modes mode; - const char * text; -} modes_array[] = { - {MODE_CHUNKED, "chunked"}, - {MODE_ADDCRAP, "addcrap"}, - {MODE_NORMAL, "normal"}, - {MODE_INVALID, NULL} -}; - -/** - * write the response with random behaviour ! - */ -void send_response(int c, const char * buffer, int len) -{ - int n; - while(len > 0) { - n = (rand() % 99) + 1; - if(n > len) - n = len; - n = write(c, buffer, n); - if(n < 0) { - perror("write"); - return; - } else { - len -= n; - buffer += n; - } - usleep(10000); /* 10ms */ - } -} - -/** - * handle the HTTP connection - */ -void handle_http_connection(int c) -{ - char request_buffer[2048]; - int request_len = 0; - int headers_found = 0; - int n, i; - char request_method[16]; - char request_uri[256]; - char http_version[16]; - char * p; - char * response_buffer; - int response_len; - enum modes mode; - int content_length = 16*1024; - - /* read the request */ - while(request_len < sizeof(request_buffer) && !headers_found) { - n = read(c, - request_buffer + request_len, - sizeof(request_buffer) - request_len); - if(n < 0) { - perror("read"); - return; - } else if(n==0) { - /* remote host closed the connection */ - break; - } else { - request_len += n; - for(i = 0; i < request_len - 3; i++) { - if(0 == memcmp(request_buffer + i, "\r\n\r\n", 4)) { - /* found the end of headers */ - headers_found = 1; - break; - } - } - } - } - if(!headers_found) { - /* error */ - return; - } - printf("headers :\n%.*s", request_len, request_buffer); - /* the request have been received, now parse the request line */ - p = request_buffer; - for(i = 0; i < sizeof(request_method) - 1; i++) { - if(*p == ' ' || *p == '\r') - break; - request_method[i] = *p; - ++p; - } - request_method[i] = '\0'; - while(*p == ' ') - p++; - for(i = 0; i < sizeof(request_uri) - 1; i++) { - if(*p == ' ' || *p == '\r') - break; - request_uri[i] = *p; - ++p; - } - request_uri[i] = '\0'; - while(*p == ' ') - p++; - for(i = 0; i < sizeof(http_version) - 1; i++) { - if(*p == ' ' || *p == '\r') - break; - http_version[i] = *p; - ++p; - } - http_version[i] = '\0'; - printf("Method = %s, URI = %s, %s\n", - request_method, request_uri, http_version); - /* check if the request method is allowed */ - if(0 != strcmp(request_method, "GET")) { - const char response405[] = "HTTP/1.1 405 Method Not Allowed\r\n" - "Allow: GET\r\n\r\n"; - /* 405 Method Not Allowed */ - /* The response MUST include an Allow header containing a list - * of valid methods for the requested resource. */ - write(c, response405, sizeof(response405) - 1); - return; - } - - mode = MODE_INVALID; - /* use the request URI to know what to do */ - for(i = 0; modes_array[i].mode != MODE_INVALID; i++) { - if(strstr(request_uri, modes_array[i].text)) { - mode = modes_array[i].mode; /* found */ - break; - } - } - - switch(mode) { - case MODE_CHUNKED: - response_buffer = build_chunked_response(content_length, &response_len); - break; - case MODE_ADDCRAP: - response_len = content_length+256; - response_buffer = malloc(response_len); - n = snprintf(response_buffer, response_len, - "HTTP/1.1 200 OK\r\n" - "Server: minihttptestserver\r\n" - "Content-Type: text/plain\r\n" - "Content-Length: %d\r\n" - "\r\n", content_length); - response_len = content_length+n+CRAP_LENGTH; - response_buffer = realloc(response_buffer, response_len); - build_content(response_buffer + n, content_length); - build_crap(response_buffer + n + content_length, CRAP_LENGTH); - break; - default: - response_len = content_length+256; - response_buffer = malloc(response_len); - n = snprintf(response_buffer, response_len, - "HTTP/1.1 200 OK\r\n" - "Server: minihttptestserver\r\n" - "Content-Type: text/plain\r\n" - "\r\n"); - response_len = content_length+n; - response_buffer = realloc(response_buffer, response_len); - build_content(response_buffer + n, response_len - n); - } - - if(response_buffer) { - send_response(c, response_buffer, response_len); - free(response_buffer); - } else { - /* Error 500 */ - } -} - -/** - */ -int main(int argc, char * * argv) { - int ipv6 = 0; - int s, c, i; - unsigned short port = 0; - struct sockaddr_storage server_addr; - socklen_t server_addrlen; - struct sockaddr_storage client_addr; - socklen_t client_addrlen; - pid_t pid; - int child = 0; - int status; - const char * expected_file_name = NULL; - - for(i = 1; i < argc; i++) { - if(argv[i][0] == '-') { - switch(argv[i][1]) { - case '6': - ipv6 = 1; - break; - case 'e': - /* write expected file ! */ - expected_file_name = argv[++i]; - break; - case 'p': - /* port */ - if(++i < argc) { - port = (unsigned short)atoi(argv[i]); - } - break; - default: - fprintf(stderr, "unknown command line switch '%s'\n", argv[i]); - } - } else { - fprintf(stderr, "unkown command line argument '%s'\n", argv[i]); - } - } - - srand(time(NULL)); - signal(SIGCHLD, handle_signal_chld); -#if 0 - signal(SIGINT, handle_signal_int); -#endif - - s = socket(ipv6 ? AF_INET6 : AF_INET, SOCK_STREAM, 0); - if(s < 0) { - perror("socket"); - return 1; - } - memset(&server_addr, 0, sizeof(struct sockaddr_storage)); - memset(&client_addr, 0, sizeof(struct sockaddr_storage)); - if(ipv6) { - struct sockaddr_in6 * addr = (struct sockaddr_in6 *)&server_addr; - addr->sin6_family = AF_INET6; - addr->sin6_port = htons(port); - addr->sin6_addr = in6addr_any; - } else { - struct sockaddr_in * addr = (struct sockaddr_in *)&server_addr; - addr->sin_family = AF_INET; - addr->sin_port = htons(port); - addr->sin_addr.s_addr = htonl(INADDR_ANY); - } - if(bind(s, (struct sockaddr *)&server_addr, - ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) < 0) { - perror("bind"); - return 1; - } - if(listen(s, 5) < 0) { - perror("listen"); - } - if(port == 0) { - server_addrlen = sizeof(struct sockaddr_storage); - if(getsockname(s, (struct sockaddr *)&server_addr, &server_addrlen) < 0) { - perror("getsockname"); - return 1; - } - if(ipv6) { - struct sockaddr_in6 * addr = (struct sockaddr_in6 *)&server_addr; - port = ntohs(addr->sin6_port); - } else { - struct sockaddr_in * addr = (struct sockaddr_in *)&server_addr; - port = ntohs(addr->sin_port); - } - printf("Listening on port %hu\n", port); - fflush(stdout); - } - - /* write expected file */ - if(expected_file_name) { - FILE * f; - f = fopen(expected_file_name, "wb"); - if(f) { - char * buffer; - buffer = malloc(16*1024); - build_content(buffer, 16*1024); - fwrite(buffer, 1, 16*1024, f); - free(buffer); - fclose(f); - } - } - - /* fork() loop */ - while(!child && !quit) { - while(child_to_wait_for > 0) { - pid = wait(&status); - if(pid < 0) { - perror("wait"); - } else { - printf("child(%d) terminated with status %d\n", pid, status); - } - --child_to_wait_for; - } - /* TODO : add a select() call in order to handle the case - * when a signal is caught */ - client_addrlen = sizeof(struct sockaddr_storage); - c = accept(s, (struct sockaddr *)&client_addr, - &client_addrlen); - if(c < 0) { - perror("accept"); - return 1; - } - printf("accept...\n"); - pid = fork(); - if(pid < 0) { - perror("fork"); - return 1; - } else if(pid == 0) { - /* child */ - child = 1; - close(s); - s = -1; - handle_http_connection(c); - } - close(c); - } - if(s >= 0) { - close(s); - s = -1; - } - if(!child) { - while(child_to_wait_for > 0) { - pid = wait(&status); - if(pid < 0) { - perror("wait"); - } else { - printf("child(%d) terminated with status %d\n", pid, status); - } - --child_to_wait_for; - } - printf("Bye...\n"); - } - return 0; -} - diff --git a/libs/miniupnpc/minisoap.c b/libs/miniupnpc/minisoap.c deleted file mode 100644 index 8889bf040..000000000 --- a/libs/miniupnpc/minisoap.c +++ /dev/null @@ -1,121 +0,0 @@ -/* $Id: minisoap.c,v 1.21 2011/03/22 19:15:35 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005-2009 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * - * Minimal SOAP implementation for UPnP protocol. - */ -#include -#include -#ifdef WIN32 -#include -#include -#define snprintf _snprintf -#else -#include -#include -#include -#endif -#include "minisoap.h" -#include "miniupnpcstrings.h" - -/* only for malloc */ -#include - -#ifdef WIN32 -#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); -#else -#define PRINT_SOCKET_ERROR(x) perror(x) -#endif - -/* httpWrite sends the headers and the body to the socket - * and returns the number of bytes sent */ -static int -httpWrite(int fd, const char * body, int bodysize, - const char * headers, int headerssize) -{ - int n = 0; - /*n = write(fd, headers, headerssize);*/ - /*if(bodysize>0) - n += write(fd, body, bodysize);*/ - /* Note : my old linksys router only took into account - * soap request that are sent into only one packet */ - char * p; - /* TODO: AVOID MALLOC */ - p = malloc(headerssize+bodysize); - if(!p) - return 0; - memcpy(p, headers, headerssize); - memcpy(p+headerssize, body, bodysize); - /*n = write(fd, p, headerssize+bodysize);*/ - n = send(fd, p, headerssize+bodysize, 0); - if(n<0) { - PRINT_SOCKET_ERROR("send"); - } - /* disable send on the socket */ - /* draytek routers dont seems to like that... */ -#if 0 -#ifdef WIN32 - if(shutdown(fd, SD_SEND)<0) { -#else - if(shutdown(fd, SHUT_WR)<0) { /*SD_SEND*/ -#endif - PRINT_SOCKET_ERROR("shutdown"); - } -#endif - free(p); - return n; -} - -/* self explanatory */ -int soapPostSubmit(int fd, - const char * url, - const char * host, - unsigned short port, - const char * action, - const char * body, - const char * httpversion) -{ - int bodysize; - char headerbuf[512]; - int headerssize; - char portstr[8]; - bodysize = (int)strlen(body); - /* We are not using keep-alive HTTP connections. - * HTTP/1.1 needs the header Connection: close to do that. - * This is the default with HTTP/1.0 - * Using HTTP/1.1 means we need to support chunked transfer-encoding : - * When using HTTP/1.1, the router "BiPAC 7404VNOX" always use chunked - * transfer encoding. */ - /* Connection: Close is normally there only in HTTP/1.1 but who knows */ - portstr[0] = '\0'; - if(port != 80) - snprintf(portstr, sizeof(portstr), ":%hu", port); - headerssize = snprintf(headerbuf, sizeof(headerbuf), - "POST %s HTTP/%s\r\n" - "Host: %s%s\r\n" - "User-Agent: " OS_STRING ", UPnP/1.0, MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" - "Content-Length: %d\r\n" - "Content-Type: text/xml\r\n" - "SOAPAction: \"%s\"\r\n" - "Connection: Close\r\n" - "Cache-Control: no-cache\r\n" /* ??? */ - "Pragma: no-cache\r\n" - "\r\n", - url, httpversion, host, portstr, bodysize, action); -#ifdef DEBUG - /*printf("SOAP request : headersize=%d bodysize=%d\n", - headerssize, bodysize); - */ - printf("SOAP request : POST %s HTTP/%s - Host: %s%s\n", - url, httpversion, host, portstr); - printf("SOAPAction: \"%s\" - Content-Length: %d\n", action, bodysize); - printf("Headers :\n%s", headerbuf); - printf("Body :\n%s\n", body); -#endif - return httpWrite(fd, body, bodysize, headerbuf, headerssize); -} - - diff --git a/libs/miniupnpc/minisoap.h b/libs/miniupnpc/minisoap.h deleted file mode 100644 index 696725f62..000000000 --- a/libs/miniupnpc/minisoap.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id: minisoap.h,v 1.4 2010/04/12 20:39:41 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ -#ifndef __MINISOAP_H__ -#define __MINISOAP_H__ - -/*int httpWrite(int, const char *, int, const char *);*/ -int soapPostSubmit(int, const char *, const char *, unsigned short, - const char *, const char *, const char *); - -#endif - diff --git a/libs/miniupnpc/minissdpc.c b/libs/miniupnpc/minissdpc.c deleted file mode 100644 index e5e852855..000000000 --- a/libs/miniupnpc/minissdpc.c +++ /dev/null @@ -1,132 +0,0 @@ -/* $Id: minissdpc.c,v 1.14 2010/11/25 09:57:25 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas BERNARD - * copyright (c) 2005-2009 Thomas Bernard - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -/*#include */ -#include -#include -#include -#include -#include -#if defined(WIN32) || defined(__amigaos__) || defined(__amigaos4__) -#ifdef WIN32 -#include -#include -#include -#include -#include -#endif -#if defined(__amigaos__) || defined(__amigaos4__) -#include -#endif -#if defined(__amigaos__) -#define uint16_t unsigned short -#endif -/* Hack */ -#define UNIX_PATH_LEN 108 -struct sockaddr_un { - uint16_t sun_family; - char sun_path[UNIX_PATH_LEN]; -}; -#else -#include -#include -#endif - -#include "minissdpc.h" -#include "miniupnpc.h" - -#include "codelength.h" - -struct UPNPDev * -getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath) -{ - struct UPNPDev * tmp; - struct UPNPDev * devlist = NULL; - unsigned char buffer[2048]; - ssize_t n; - unsigned char * p; - unsigned char * url; - unsigned int i; - unsigned int urlsize, stsize, usnsize, l; - int s; - struct sockaddr_un addr; - - s = socket(AF_UNIX, SOCK_STREAM, 0); - if(s < 0) - { - /*syslog(LOG_ERR, "socket(unix): %m");*/ - perror("socket(unix)"); - return NULL; - } - addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, socketpath, sizeof(addr.sun_path)); - /* TODO : check if we need to handle the EINTR */ - if(connect(s, (struct sockaddr *)&addr, sizeof(struct sockaddr_un)) < 0) - { - /*syslog(LOG_WARNING, "connect(\"%s\"): %m", socketpath);*/ - close(s); - return NULL; - } - stsize = strlen(devtype); - buffer[0] = 1; /* request type 1 : request devices/services by type */ - p = buffer + 1; - l = stsize; CODELENGTH(l, p); - if(p + stsize > buffer + sizeof(buffer)) - { - /* devtype is too long ! */ - close(s); - return NULL; - } - memcpy(p, devtype, stsize); - p += stsize; - if(write(s, buffer, p - buffer) < 0) - { - /*syslog(LOG_ERR, "write(): %m");*/ - perror("minissdpc.c: write()"); - close(s); - return NULL; - } - n = read(s, buffer, sizeof(buffer)); - if(n<=0) - { - perror("minissdpc.c: read()"); - close(s); - return NULL; - } - p = buffer + 1; - for(i = 0; i < buffer[0]; i++) - { - if(p+2>=buffer+sizeof(buffer)) - break; - DECODELENGTH(urlsize, p); - if(p+urlsize+2>=buffer+sizeof(buffer)) - break; - url = p; - p += urlsize; - DECODELENGTH(stsize, p); - if(p+stsize+2>=buffer+sizeof(buffer)) - break; - tmp = (struct UPNPDev *)malloc(sizeof(struct UPNPDev)+urlsize+stsize); - tmp->pNext = devlist; - tmp->descURL = tmp->buffer; - tmp->st = tmp->buffer + 1 + urlsize; - memcpy(tmp->buffer, url, urlsize); - tmp->buffer[urlsize] = '\0'; - memcpy(tmp->buffer + urlsize + 1, p, stsize); - p += stsize; - tmp->buffer[urlsize+1+stsize] = '\0'; - devlist = tmp; - /* added for compatibility with recent versions of MiniSSDPd - * >= 2007/12/19 */ - DECODELENGTH(usnsize, p); - p += usnsize; - if(p>buffer + sizeof(buffer)) - break; - } - close(s); - return devlist; -} - diff --git a/libs/miniupnpc/minissdpc.h b/libs/miniupnpc/minissdpc.h deleted file mode 100644 index 25e91ce31..000000000 --- a/libs/miniupnpc/minissdpc.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id: minissdpc.h,v 1.1 2007/08/31 15:15:33 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2005-2007 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef __MINISSDPC_H__ -#define __MINISSDPC_H__ - -struct UPNPDev * -getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath); - -#endif - diff --git a/libs/miniupnpc/miniupnpc.c b/libs/miniupnpc/miniupnpc.c deleted file mode 100644 index 0a3aae33d..000000000 --- a/libs/miniupnpc/miniupnpc.c +++ /dev/null @@ -1,943 +0,0 @@ -/* $Id: miniupnpc.c,v 1.95 2011/05/15 21:42:26 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas BERNARD - * copyright (c) 2005-2011 Thomas Bernard - * This software is subjet to the conditions detailed in the - * provided LICENSE file. */ -#define __EXTENSIONS__ 1 -#if !defined(MACOSX) && !defined(__sun) -#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__) && !defined(__NetBSD__) -#ifndef __cplusplus -#define _XOPEN_SOURCE 600 -#endif -#endif -#ifndef __BSD_VISIBLE -#define __BSD_VISIBLE 1 -#endif -#endif - -#include -#include -#include -#ifdef WIN32 -/* Win32 Specific includes and defines */ -#include -#include -#include -#include -#define snprintf _snprintf -#ifndef strncasecmp -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -#define strncasecmp _memicmp -#else /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ -#define strncasecmp memicmp -#endif /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ -#endif /* #ifndef strncasecmp */ -#define MAXHOSTNAMELEN 64 -#else /* #ifdef WIN32 */ -/* Standard POSIX includes */ -#include -#if defined(__amigaos__) && !defined(__amigaos4__) -/* Amiga OS 3 specific stuff */ -#define socklen_t int -#else -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#if !defined(__amigaos__) && !defined(__amigaos4__) -#include -#endif -#include -#include -#define closesocket close -#endif /* #else WIN32 */ -#ifdef MINIUPNPC_SET_SOCKET_TIMEOUT -#include -#endif -#if defined(__amigaos__) || defined(__amigaos4__) -/* Amiga OS specific stuff */ -#define TIMEVAL struct timeval -#endif - -#include "miniupnpc.h" -#include "minissdpc.h" -#include "miniwget.h" -#include "minisoap.h" -#include "minixml.h" -#include "upnpcommands.h" -#include "connecthostport.h" -#include "receivedata.h" - -#ifdef WIN32 -#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); -#else -#define PRINT_SOCKET_ERROR(x) perror(x) -#endif - -#define SOAPPREFIX "s" -#define SERVICEPREFIX "u" -#define SERVICEPREFIX2 'u' - -/* root description parsing */ -LIBSPEC void parserootdesc(const char * buffer, int bufsize, struct IGDdatas * data) -{ - struct xmlparser parser; - /* xmlparser object */ - parser.xmlstart = buffer; - parser.xmlsize = bufsize; - parser.data = data; - parser.starteltfunc = IGDstartelt; - parser.endeltfunc = IGDendelt; - parser.datafunc = IGDdata; - parser.attfunc = 0; - parsexml(&parser); -#ifdef DEBUG - printIGD(data); -#endif -} - -/* simpleUPnPcommand2 : - * not so simple ! - * return values : - * pointer - OK - * NULL - error */ -char * simpleUPnPcommand2(int s, const char * url, const char * service, - const char * action, struct UPNParg * args, - int * bufsize, const char * httpversion) -{ - char hostname[MAXHOSTNAMELEN+1]; - unsigned short port = 0; - char * path; - char soapact[128]; - char soapbody[2048]; - char * buf; - int n; - - *bufsize = 0; - snprintf(soapact, sizeof(soapact), "%s#%s", service, action); - if(args==NULL) - { - /*soapbodylen = */snprintf(soapbody, sizeof(soapbody), - "\r\n" - "<" SOAPPREFIX ":Envelope " - "xmlns:" SOAPPREFIX "=\"http://schemas.xmlsoap.org/soap/envelope/\" " - SOAPPREFIX ":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" - "<" SOAPPREFIX ":Body>" - "<" SERVICEPREFIX ":%s xmlns:" SERVICEPREFIX "=\"%s\">" - "" - "" - "\r\n", action, service, action); - } - else - { - char * p; - const char * pe, * pv; - int soapbodylen; - soapbodylen = snprintf(soapbody, sizeof(soapbody), - "\r\n" - "<" SOAPPREFIX ":Envelope " - "xmlns:" SOAPPREFIX "=\"http://schemas.xmlsoap.org/soap/envelope/\" " - SOAPPREFIX ":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" - "<" SOAPPREFIX ":Body>" - "<" SERVICEPREFIX ":%s xmlns:" SERVICEPREFIX "=\"%s\">", - action, service); - p = soapbody + soapbodylen; - while(args->elt) - { - /* check that we are never overflowing the string... */ - if(soapbody + sizeof(soapbody) <= p + 100) - { - /* we keep a margin of at least 100 bytes */ - return NULL; - } - *(p++) = '<'; - pe = args->elt; - while(*pe) - *(p++) = *(pe++); - *(p++) = '>'; - if((pv = args->val)) - { - while(*pv) - *(p++) = *(pv++); - } - *(p++) = '<'; - *(p++) = '/'; - pe = args->elt; - while(*pe) - *(p++) = *(pe++); - *(p++) = '>'; - args++; - } - *(p++) = '<'; - *(p++) = '/'; - *(p++) = SERVICEPREFIX2; - *(p++) = ':'; - pe = action; - while(*pe) - *(p++) = *(pe++); - strncpy(p, ">\r\n", - soapbody + sizeof(soapbody) - p); - } - if(!parseURL(url, hostname, &port, &path)) return NULL; - if(s<0) - { - s = connecthostport(hostname, port); - if(s < 0) - { - return NULL; - } - } - - n = soapPostSubmit(s, path, hostname, port, soapact, soapbody, httpversion); - if(n<=0) { -#ifdef DEBUG - printf("Error sending SOAP request\n"); -#endif - closesocket(s); - return NULL; - } - - buf = getHTTPResponse(s, bufsize); -#ifdef DEBUG - if(*bufsize > 0 && buf) - { - printf("SOAP Response :\n%.*s\n", *bufsize, buf); - } -#endif - closesocket(s); - return buf; -} - -/* simpleUPnPcommand : - * not so simple ! - * return values : - * pointer - OK - * NULL - error */ -char * simpleUPnPcommand(int s, const char * url, const char * service, - const char * action, struct UPNParg * args, - int * bufsize) -{ - char * buf; - - buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.1"); -/* - buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.0"); - if (!buf || *bufsize == 0) - { -#if DEBUG - printf("Error or no result from SOAP request; retrying with HTTP/1.1\n"); -#endif - buf = simpleUPnPcommand2(s, url, service, action, args, bufsize, "1.1"); - } -*/ - return buf; -} - -/* parseMSEARCHReply() - * the last 4 arguments are filled during the parsing : - * - location/locationsize : "location:" field of the SSDP reply packet - * - st/stsize : "st:" field of the SSDP reply packet. - * The strings are NOT null terminated */ -static void -parseMSEARCHReply(const char * reply, int size, - const char * * location, int * locationsize, - const char * * st, int * stsize) -{ - int a, b, i; - i = 0; - a = i; /* start of the line */ - b = 0; /* end of the "header" (position of the colon) */ - while(isin_addr, sizeof (struct in_addr)); - break; - - case AF_INET6: - memcpy (dst, &sin6->sin6_addr, sizeof (struct in6_addr)); - break; - } - return 1; - } - - return 0; - } -#endif - -/* upnpDiscover() : - * return a chained list of all devices found or NULL if - * no devices was found. - * It is up to the caller to free the chained list - * delay is in millisecond (poll) */ -LIBSPEC struct UPNPDev * -upnpDiscover(int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error) -{ - struct UPNPDev * tmp; - struct UPNPDev * devlist = 0; - int opt = 1; - static const char MSearchMsgFmt[] = - "M-SEARCH * HTTP/1.1\r\n" - "HOST: %s:" XSTR(PORT) "\r\n" - "ST: %s\r\n" - "MAN: \"ssdp:discover\"\r\n" - "MX: %u\r\n" - "\r\n"; - static const char * const deviceList[] = { -#if 0 - "urn:schemas-upnp-org:device:InternetGatewayDevice:2", - "urn:schemas-upnp-org:service:WANIPConnection:2", -#endif - "urn:schemas-upnp-org:device:InternetGatewayDevice:1", - "urn:schemas-upnp-org:service:WANIPConnection:1", - "urn:schemas-upnp-org:service:WANPPPConnection:1", - "upnp:rootdevice", - 0 - }; - int deviceIndex = 0; - char bufr[1536]; /* reception and emission buffer */ - int sudp; - int n; - struct sockaddr_storage sockudp_r; - unsigned int mx; -#ifdef NO_GETADDRINFO - struct sockaddr_storage sockudp_w; -#else - int rv; - struct addrinfo hints, *servinfo, *p; -#endif -#ifdef WIN32 - MIB_IPFORWARDROW ip_forward; -#endif - int linklocal = 1; - - if(error) - *error = UPNPDISCOVER_UNKNOWN_ERROR; -#if !defined(WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) - /* first try to get infos from minissdpd ! */ - if(!minissdpdsock) - minissdpdsock = "/var/run/minissdpd.sock"; - while(!devlist && deviceList[deviceIndex]) { - devlist = getDevicesFromMiniSSDPD(deviceList[deviceIndex], - minissdpdsock); - /* We return what we have found if it was not only a rootdevice */ - if(devlist && !strstr(deviceList[deviceIndex], "rootdevice")) { - if(error) - *error = UPNPDISCOVER_SUCCESS; - return devlist; - } - deviceIndex++; - } - deviceIndex = 0; -#endif - /* fallback to direct discovery */ -#ifdef WIN32 - sudp = socket(ipv6 ? PF_INET6 : PF_INET, SOCK_DGRAM, IPPROTO_UDP); -#else - sudp = socket(ipv6 ? PF_INET6 : PF_INET, SOCK_DGRAM, 0); -#endif - if(sudp < 0) - { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - PRINT_SOCKET_ERROR("socket"); - return NULL; - } - /* reception */ - memset(&sockudp_r, 0, sizeof(struct sockaddr_storage)); - if(ipv6) { - struct sockaddr_in6 * p = (struct sockaddr_in6 *)&sockudp_r; - p->sin6_family = AF_INET6; - if(sameport) - p->sin6_port = htons(PORT); - p->sin6_addr = in6addr_any; /* in6addr_any is not available with MinGW32 3.4.2 */ - } else { - struct sockaddr_in * p = (struct sockaddr_in *)&sockudp_r; - p->sin_family = AF_INET; - if(sameport) - p->sin_port = htons(PORT); - p->sin_addr.s_addr = INADDR_ANY; - } -#ifdef WIN32 -/* This code could help us to use the right Network interface for - * SSDP multicast traffic */ -/* Get IP associated with the index given in the ip_forward struct - * in order to give this ip to setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF) */ - if(!ipv6 - && (GetBestRoute(inet_addr("223.255.255.255"), 0, &ip_forward) == NO_ERROR)) { - DWORD dwRetVal = 0; - PMIB_IPADDRTABLE pIPAddrTable; - DWORD dwSize = 0; -#ifdef DEBUG - IN_ADDR IPAddr; -#endif - int i; -#ifdef DEBUG - printf("ifIndex=%lu nextHop=%lx \n", ip_forward.dwForwardIfIndex, ip_forward.dwForwardNextHop); -#endif - pIPAddrTable = (MIB_IPADDRTABLE *) malloc(sizeof (MIB_IPADDRTABLE)); - if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) { - free(pIPAddrTable); - pIPAddrTable = (MIB_IPADDRTABLE *) malloc(dwSize); - } - if(pIPAddrTable) { - dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 ); -#ifdef DEBUG - printf("\tNum Entries: %ld\n", pIPAddrTable->dwNumEntries); -#endif - for (i=0; i < (int) pIPAddrTable->dwNumEntries; i++) { -#ifdef DEBUG - printf("\n\tInterface Index[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwIndex); - IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwAddr; - printf("\tIP Address[%d]: \t%s\n", i, inet_ntoa(IPAddr) ); - IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwMask; - printf("\tSubnet Mask[%d]: \t%s\n", i, inet_ntoa(IPAddr) ); - IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwBCastAddr; - printf("\tBroadCast[%d]: \t%s (%ld)\n", i, inet_ntoa(IPAddr), pIPAddrTable->table[i].dwBCastAddr); - printf("\tReassembly size[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwReasmSize); - printf("\tType and State[%d]:", i); - printf("\n"); -#endif - if (pIPAddrTable->table[i].dwIndex == ip_forward.dwForwardIfIndex) { - /* Set the address of this interface to be used */ - struct in_addr mc_if; - memset(&mc_if, 0, sizeof(mc_if)); - mc_if.s_addr = pIPAddrTable->table[i].dwAddr; - if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&mc_if, sizeof(mc_if)) < 0) { - PRINT_SOCKET_ERROR("setsockopt"); - } - ((struct sockaddr_in *)&sockudp_r)->sin_addr.s_addr = pIPAddrTable->table[i].dwAddr; -#ifndef DEBUG - break; -#endif - } - } - free(pIPAddrTable); - pIPAddrTable = NULL; - } - } -#endif - -#ifdef WIN32 - if (setsockopt(sudp, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt, sizeof (opt)) < 0) -#else - if (setsockopt(sudp, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt)) < 0) -#endif - { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - PRINT_SOCKET_ERROR("setsockopt"); - return NULL; - } - - if(multicastif) - { - if(ipv6) { -#if !defined(WIN32) - /* according to MSDN, if_nametoindex() is supported since - * MS Windows Vista and MS Windows Server 2008. - * http://msdn.microsoft.com/en-us/library/bb408409%28v=vs.85%29.aspx */ - unsigned int ifindex = if_nametoindex(multicastif); /* eth0, etc. */ - if(setsockopt(sudp, IPPROTO_IPV6, IPV6_MULTICAST_IF, &ifindex, sizeof(&ifindex)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } -#else -#ifdef DEBUG - printf("Setting of multicast interface not supported in IPv6 under Windows.\n"); -#endif -#endif - } else { - struct in_addr mc_if; - mc_if.s_addr = inet_addr(multicastif); /* ex: 192.168.x.x */ - ((struct sockaddr_in *)&sockudp_r)->sin_addr.s_addr = mc_if.s_addr; - if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&mc_if, sizeof(mc_if)) < 0) - { - PRINT_SOCKET_ERROR("setsockopt"); - } - } - } - - /* Avant d'envoyer le paquet on bind pour recevoir la reponse */ - if (bind(sudp, (const struct sockaddr *)&sockudp_r, - ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) != 0) - { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - PRINT_SOCKET_ERROR("bind"); - closesocket(sudp); - return NULL; - } - - if(error) - *error = UPNPDISCOVER_SUCCESS; - /* Calculating maximum response time in seconds */ - mx = ((unsigned int)delay) / 1000u; - /* receiving SSDP response packet */ - for(n = 0; deviceList[deviceIndex]; deviceIndex++) - { - if(n == 0) - { - /* sending the SSDP M-SEARCH packet */ - n = snprintf(bufr, sizeof(bufr), - MSearchMsgFmt, - ipv6 ? - (linklocal ? "[" UPNP_MCAST_LL_ADDR "]" : "[" UPNP_MCAST_SL_ADDR "]") - : UPNP_MCAST_ADDR, - deviceList[deviceIndex], mx); -#ifdef DEBUG - printf("Sending %s", bufr); -#endif -#ifdef NO_GETADDRINFO - /* the following code is not using getaddrinfo */ - /* emission */ - memset(&sockudp_w, 0, sizeof(struct sockaddr_storage)); - if(ipv6) { - struct sockaddr_in6 * p = (struct sockaddr_in6 *)&sockudp_w; - p->sin6_family = AF_INET6; - p->sin6_port = htons(PORT); - inet_pton(AF_INET6, - linklocal ? UPNP_MCAST_LL_ADDR : UPNP_MCAST_SL_ADDR, - &(p->sin6_addr)); - } else { - struct sockaddr_in * p = (struct sockaddr_in *)&sockudp_w; - p->sin_family = AF_INET; - p->sin_port = htons(PORT); - p->sin_addr.s_addr = inet_addr(UPNP_MCAST_ADDR); - } - n = sendto(sudp, bufr, n, 0, - (const void *)&sockudp_w, - ipv6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)); - if (n < 0) { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - PRINT_SOCKET_ERROR("sendto"); - break; - } -#else /* #ifdef NO_GETADDRINFO */ - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; // AF_INET6 or AF_INET - hints.ai_socktype = SOCK_DGRAM; - /*hints.ai_flags = */ - if ((rv = getaddrinfo(ipv6 - ? (linklocal ? UPNP_MCAST_LL_ADDR : UPNP_MCAST_SL_ADDR) - : UPNP_MCAST_ADDR, - XSTR(PORT), &hints, &servinfo)) != 0) { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; -#ifdef WIN32 - fprintf(stderr, "getaddrinfo() failed: %d\n", rv); -#else - fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); -#endif - break; - } - for(p = servinfo; p; p = p->ai_next) { - n = sendto(sudp, bufr, n, 0, p->ai_addr, p->ai_addrlen); - if (n < 0) { - PRINT_SOCKET_ERROR("sendto"); - continue; - } - } - freeaddrinfo(servinfo); - if(n < 0) { - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - break; - } -#endif /* #ifdef NO_GETADDRINFO */ - } - /* Waiting for SSDP REPLY packet to M-SEARCH */ - n = receivedata(sudp, bufr, sizeof(bufr), delay); - if (n < 0) { - /* error */ - if(error) - *error = UPNPDISCOVER_SOCKET_ERROR; - break; - } else if (n == 0) { - /* no data or Time Out */ - if (devlist) { - /* no more device type to look for... */ - if(error) - *error = UPNPDISCOVER_SUCCESS; - break; - } - if(ipv6) { - if(linklocal) { - linklocal = 0; - --deviceIndex; - } else { - linklocal = 1; - } - } - } else { - const char * descURL=NULL; - int urlsize=0; - const char * st=NULL; - int stsize=0; - /*printf("%d byte(s) :\n%s\n", n, bufr);*/ /* affichage du message */ - parseMSEARCHReply(bufr, n, &descURL, &urlsize, &st, &stsize); - if(st&&descURL) - { -#ifdef DEBUG - printf("M-SEARCH Reply:\nST: %.*s\nLocation: %.*s\n", - stsize, st, urlsize, descURL); -#endif - for(tmp=devlist; tmp; tmp = tmp->pNext) { - if(memcmp(tmp->descURL, descURL, urlsize) == 0 && - tmp->descURL[urlsize] == '\0' && - memcmp(tmp->st, st, stsize) == 0 && - tmp->st[stsize] == '\0') - break; - } - /* at the exit of the loop above, tmp is null if - * no duplicate device was found */ - if(tmp) - continue; - tmp = (struct UPNPDev *)malloc(sizeof(struct UPNPDev)+urlsize+stsize); - if(!tmp) { - /* memory allocation error */ - if(error) - *error = UPNPDISCOVER_MEMORY_ERROR; - break; - } - tmp->pNext = devlist; - tmp->descURL = tmp->buffer; - tmp->st = tmp->buffer + 1 + urlsize; - memcpy(tmp->buffer, descURL, urlsize); - tmp->buffer[urlsize] = '\0'; - memcpy(tmp->buffer + urlsize + 1, st, stsize); - tmp->buffer[urlsize+1+stsize] = '\0'; - devlist = tmp; - } - } - } - closesocket(sudp); - return devlist; -} - -/* freeUPNPDevlist() should be used to - * free the chained list returned by upnpDiscover() */ -LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist) -{ - struct UPNPDev * next; - while(devlist) - { - next = devlist->pNext; - free(devlist); - devlist = next; - } -} - -static void -url_cpy_or_cat(char * dst, const char * src, int n) -{ - if( (src[0] == 'h') - &&(src[1] == 't') - &&(src[2] == 't') - &&(src[3] == 'p') - &&(src[4] == ':') - &&(src[5] == '/') - &&(src[6] == '/')) - { - strncpy(dst, src, n); - } - else - { - int l = strlen(dst); - if(src[0] != '/') - dst[l++] = '/'; - if(l<=n) - strncpy(dst + l, src, n - l); - } -} - -/* Prepare the Urls for usage... - */ -LIBSPEC void GetUPNPUrls(struct UPNPUrls * urls, struct IGDdatas * data, - const char * descURL) -{ - char * p; - int n1, n2, n3, n4; - n1 = strlen(data->urlbase); - if(n1==0) - n1 = strlen(descURL); - n1 += 2; /* 1 byte more for Null terminator, 1 byte for '/' if needed */ - n2 = n1; n3 = n1; n4 = n1; - n1 += strlen(data->first.scpdurl); - n2 += strlen(data->first.controlurl); - n3 += strlen(data->CIF.controlurl); - n4 += strlen(data->IPv6FC.controlurl); - - urls->ipcondescURL = (char *)malloc(n1); - urls->controlURL = (char *)malloc(n2); - urls->controlURL_CIF = (char *)malloc(n3); - urls->controlURL_6FC = (char *)malloc(n4); - /* maintenant on chope la desc du WANIPConnection */ - if(data->urlbase[0] != '\0') - strncpy(urls->ipcondescURL, data->urlbase, n1); - else - strncpy(urls->ipcondescURL, descURL, n1); - p = strchr(urls->ipcondescURL+7, '/'); - if(p) p[0] = '\0'; - strncpy(urls->controlURL, urls->ipcondescURL, n2); - strncpy(urls->controlURL_CIF, urls->ipcondescURL, n3); - strncpy(urls->controlURL_6FC, urls->ipcondescURL, n4); - - url_cpy_or_cat(urls->ipcondescURL, data->first.scpdurl, n1); - - url_cpy_or_cat(urls->controlURL, data->first.controlurl, n2); - - url_cpy_or_cat(urls->controlURL_CIF, data->CIF.controlurl, n3); - - url_cpy_or_cat(urls->controlURL_6FC, data->IPv6FC.controlurl, n4); - -#ifdef DEBUG - printf("urls->ipcondescURL='%s' %u n1=%d\n", urls->ipcondescURL, - (unsigned)strlen(urls->ipcondescURL), n1); - printf("urls->controlURL='%s' %u n2=%d\n", urls->controlURL, - (unsigned)strlen(urls->controlURL), n2); - printf("urls->controlURL_CIF='%s' %u n3=%d\n", urls->controlURL_CIF, - (unsigned)strlen(urls->controlURL_CIF), n3); - printf("urls->controlURL_6FC='%s' %u n4=%d\n", urls->controlURL_6FC, - (unsigned)strlen(urls->controlURL_6FC), n4); -#endif -} - -LIBSPEC void -FreeUPNPUrls(struct UPNPUrls * urls) -{ - if(!urls) - return; - free(urls->controlURL); - urls->controlURL = 0; - free(urls->ipcondescURL); - urls->ipcondescURL = 0; - free(urls->controlURL_CIF); - urls->controlURL_CIF = 0; - free(urls->controlURL_6FC); - urls->controlURL_6FC = 0; -} - -int -UPNPIGD_IsConnected(struct UPNPUrls * urls, struct IGDdatas * data) -{ - char status[64]; - unsigned int uptime; - status[0] = '\0'; - UPNP_GetStatusInfo(urls->controlURL, data->first.servicetype, - status, &uptime, NULL); - if(0 == strcmp("Connected", status)) - { - return 1; - } - else - return 0; -} - - -/* UPNP_GetValidIGD() : - * return values : - * 0 = NO IGD found - * 1 = A valid connected IGD has been found - * 2 = A valid IGD has been found but it reported as - * not connected - * 3 = an UPnP device has been found but was not recognized as an IGD - * - * In any non zero return case, the urls and data structures - * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to - * free allocated memory. - */ -LIBSPEC int -UPNP_GetValidIGD(struct UPNPDev * devlist, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen) -{ - char * descXML; - int descXMLsize = 0; - struct UPNPDev * dev; - int ndev = 0; - int state; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */ - if(!devlist) - { -#ifdef DEBUG - printf("Empty devlist\n"); -#endif - return 0; - } - for(state = 1; state <= 3; state++) - { - for(dev = devlist; dev; dev = dev->pNext) - { - /* we should choose an internet gateway device. - * with st == urn:schemas-upnp-org:device:InternetGatewayDevice:1 */ - descXML = miniwget_getaddr(dev->descURL, &descXMLsize, - lanaddr, lanaddrlen); - if(descXML) - { - ndev++; - memset(data, 0, sizeof(struct IGDdatas)); - memset(urls, 0, sizeof(struct UPNPUrls)); - parserootdesc(descXML, descXMLsize, data); - free(descXML); - descXML = NULL; - if(0==strcmp(data->CIF.servicetype, - "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1") - || state >= 3 ) - { - GetUPNPUrls(urls, data, dev->descURL); - -#ifdef DEBUG - printf("UPNPIGD_IsConnected(%s) = %d\n", - urls->controlURL, - UPNPIGD_IsConnected(urls, data)); -#endif - if((state >= 2) || UPNPIGD_IsConnected(urls, data)) - return state; - FreeUPNPUrls(urls); - if(data->second.servicetype[0] != '\0') { -#ifdef DEBUG - printf("We tried %s, now we try %s !\n", - data->first.servicetype, data->second.servicetype); -#endif - /* swaping WANPPPConnection and WANIPConnection ! */ - memcpy(&data->tmp, &data->first, sizeof(struct IGDdatas_service)); - memcpy(&data->first, &data->second, sizeof(struct IGDdatas_service)); - memcpy(&data->second, &data->tmp, sizeof(struct IGDdatas_service)); - GetUPNPUrls(urls, data, dev->descURL); -#ifdef DEBUG - printf("UPNPIGD_IsConnected(%s) = %d\n", - urls->controlURL, - UPNPIGD_IsConnected(urls, data)); -#endif - if((state >= 2) || UPNPIGD_IsConnected(urls, data)) - return state; - FreeUPNPUrls(urls); - } - } - memset(data, 0, sizeof(struct IGDdatas)); - } -#ifdef DEBUG - else - { - printf("error getting XML description %s\n", dev->descURL); - } -#endif - } - } - return 0; -} - -/* UPNP_GetIGDFromUrl() - * Used when skipping the discovery process. - * return value : - * 0 - Not ok - * 1 - OK */ -int -UPNP_GetIGDFromUrl(const char * rootdescurl, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen) -{ - char * descXML; - int descXMLsize = 0; - descXML = miniwget_getaddr(rootdescurl, &descXMLsize, - lanaddr, lanaddrlen); - if(descXML) { - memset(data, 0, sizeof(struct IGDdatas)); - memset(urls, 0, sizeof(struct UPNPUrls)); - parserootdesc(descXML, descXMLsize, data); - free(descXML); - descXML = NULL; - GetUPNPUrls(urls, data, rootdescurl); - return 1; - } else { - return 0; - } -} - diff --git a/libs/miniupnpc/miniupnpc.def b/libs/miniupnpc/miniupnpc.def deleted file mode 100644 index 10b9f5800..000000000 --- a/libs/miniupnpc/miniupnpc.def +++ /dev/null @@ -1,42 +0,0 @@ -LIBRARY -; miniupnpc library - -EXPORTS -; miniupnpc - upnpDiscover - freeUPNPDevlist - parserootdesc - UPNP_GetValidIGD - UPNP_GetIGDFromUrl - GetUPNPUrls - FreeUPNPUrls -; miniwget - miniwget - miniwget_getaddr -; upnpcommands - UPNP_GetTotalBytesSent - UPNP_GetTotalBytesReceived - UPNP_GetTotalPacketsSent - UPNP_GetTotalPacketsReceived - UPNP_GetStatusInfo - UPNP_GetConnectionTypeInfo - UPNP_GetExternalIPAddress - UPNP_GetLinkLayerMaxBitRates - UPNP_AddPortMapping - UPNP_DeletePortMapping - UPNP_GetPortMappingNumberOfEntries - UPNP_GetSpecificPortMappingEntry - UPNP_GetGenericPortMappingEntry - UPNP_GetListOfPortMappings - UPNP_AddPinhole - UPNP_CheckPinholeWorking - UPNP_UpdatePinhole - UPNP_GetPinholePackets - UPNP_DeletePinhole - UPNP_GetFirewallStatus - UPNP_GetOutboundPinholeTimeout -; upnperrors - strupnperror -; portlistingparse - ParsePortListing - FreePortListing diff --git a/libs/miniupnpc/miniupnpc.h b/libs/miniupnpc/miniupnpc.h deleted file mode 100644 index 50df01777..000000000 --- a/libs/miniupnpc/miniupnpc.h +++ /dev/null @@ -1,121 +0,0 @@ -/* $Id: miniupnpc.h,v 1.23 2011/04/11 08:21:46 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ - * Author: Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef __MINIUPNPC_H__ -#define __MINIUPNPC_H__ - -#include "declspec.h" -#include "igd_desc_parse.h" - -/* error codes : */ -#define UPNPDISCOVER_SUCCESS (0) -#define UPNPDISCOVER_UNKNOWN_ERROR (-1) -#define UPNPDISCOVER_SOCKET_ERROR (-101) -#define UPNPDISCOVER_MEMORY_ERROR (-102) - -#ifdef __cplusplus -extern "C" { -#endif - -/* Structures definitions : */ -struct UPNParg { const char * elt; const char * val; }; - -char * -simpleUPnPcommand(int, const char *, const char *, - const char *, struct UPNParg *, - int *); - -struct UPNPDev { - struct UPNPDev * pNext; - char * descURL; - char * st; - char buffer[2]; -}; - -/* upnpDiscover() - * discover UPnP devices on the network. - * The discovered devices are returned as a chained list. - * It is up to the caller to free the list with freeUPNPDevlist(). - * delay (in millisecond) is the maximum time for waiting any device - * response. - * If available, device list will be obtained from MiniSSDPd. - * Default path for minissdpd socket will be used if minissdpdsock argument - * is NULL. - * If multicastif is not NULL, it will be used instead of the default - * multicast interface for sending SSDP discover packets. - * If sameport is not null, SSDP packets will be sent from the source port - * 1900 (same as destination port) otherwise system assign a source port. */ -LIBSPEC struct UPNPDev * -upnpDiscover(int delay, const char * multicastif, - const char * minissdpdsock, int sameport, - int ipv6, - int * error); -/* freeUPNPDevlist() - * free list returned by upnpDiscover() */ -LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist); - -/* parserootdesc() : - * parse root XML description of a UPnP device and fill the IGDdatas - * structure. */ -LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *); - -/* structure used to get fast access to urls - * controlURL: controlURL of the WANIPConnection - * ipcondescURL: url of the description of the WANIPConnection - * controlURL_CIF: controlURL of the WANCommonInterfaceConfig - * controlURL_6FC: controlURL of the WANIPv6FirewallControl - */ -struct UPNPUrls { - char * controlURL; - char * ipcondescURL; - char * controlURL_CIF; - char * controlURL_6FC; -}; - -/* UPNP_GetValidIGD() : - * return values : - * 0 = NO IGD found - * 1 = A valid connected IGD has been found - * 2 = A valid IGD has been found but it reported as - * not connected - * 3 = an UPnP device has been found but was not recognized as an IGD - * - * In any non zero return case, the urls and data structures - * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to - * free allocated memory. - */ -LIBSPEC int -UPNP_GetValidIGD(struct UPNPDev * devlist, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen); - -/* UPNP_GetIGDFromUrl() - * Used when skipping the discovery process. - * return value : - * 0 - Not ok - * 1 - OK */ -LIBSPEC int -UPNP_GetIGDFromUrl(const char * rootdescurl, - struct UPNPUrls * urls, - struct IGDdatas * data, - char * lanaddr, int lanaddrlen); - -LIBSPEC void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *); - -LIBSPEC void FreeUPNPUrls(struct UPNPUrls *); - -/* return 0 or 1 */ -LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *); - - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/libs/miniupnpc/miniupnpcmodule.c b/libs/miniupnpc/miniupnpcmodule.c deleted file mode 100644 index 08a61d22f..000000000 --- a/libs/miniupnpc/miniupnpcmodule.c +++ /dev/null @@ -1,507 +0,0 @@ -/* $Id: miniupnpcmodule.c,v 1.18 2011/04/10 11:21:23 nanard Exp $*/ -/* Project : miniupnp - * Author : Thomas BERNARD - * website : http://miniupnp.tuxfamily.org/ - * copyright (c) 2007-2009 Thomas Bernard - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#include -#define STATICLIB -#include "structmember.h" -#include "miniupnpc.h" -#include "upnpcommands.h" -#include "upnperrors.h" - -/* for compatibility with Python < 2.4 */ -#ifndef Py_RETURN_NONE -#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -#endif - -#ifndef Py_RETURN_TRUE -#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True -#endif - -#ifndef Py_RETURN_FALSE -#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False -#endif - -typedef struct { - PyObject_HEAD - /* Type-specific fields go here. */ - struct UPNPDev * devlist; - struct UPNPUrls urls; - struct IGDdatas data; - unsigned int discoverdelay; /* value passed to upnpDiscover() */ - char lanaddr[40]; /* our ip address on the LAN */ - char * multicastif; - char * minissdpdsocket; -} UPnPObject; - -static PyMemberDef UPnP_members[] = { - {"lanaddr", T_STRING_INPLACE, offsetof(UPnPObject, lanaddr), - READONLY, "ip address on the LAN" - }, - {"discoverdelay", T_UINT, offsetof(UPnPObject, discoverdelay), - 0/*READWRITE*/, "value in ms used to wait for SSDP responses" - }, - /* T_STRING is allways readonly :( */ - {"multicastif", T_STRING, offsetof(UPnPObject, multicastif), - 0, "IP of the network interface to be used for multicast operations" - }, - {"minissdpdsocket", T_STRING, offsetof(UPnPObject, multicastif), - 0, "path of the MiniSSDPd unix socket" - }, - {NULL} -}; - -static void -UPnPObject_dealloc(UPnPObject *self) -{ - freeUPNPDevlist(self->devlist); - FreeUPNPUrls(&self->urls); - self->ob_type->tp_free((PyObject*)self); -} - -static PyObject * -UPnP_discover(UPnPObject *self) -{ - struct UPNPDev * dev; - int i; - PyObject *res = NULL; - if(self->devlist) - { - freeUPNPDevlist(self->devlist); - self->devlist = 0; - } - Py_BEGIN_ALLOW_THREADS - self->devlist = upnpDiscover((int)self->discoverdelay/*timeout in ms*/, - 0/* multicast if*/, - 0/*minissdpd socket*/, - 0/*sameport flag*/, - 0/*ip v6*/, - 0/*error */); - Py_END_ALLOW_THREADS - /* Py_RETURN_NONE ??? */ - for(dev = self->devlist, i = 0; dev; dev = dev->pNext) - i++; - res = Py_BuildValue("i", i); - return res; -} - -static PyObject * -UPnP_selectigd(UPnPObject *self) -{ - int r; -Py_BEGIN_ALLOW_THREADS - r = UPNP_GetValidIGD(self->devlist, &self->urls, &self->data, - self->lanaddr, sizeof(self->lanaddr)); -Py_END_ALLOW_THREADS - if(r) - { - return Py_BuildValue("s", self->urls.controlURL); - } - else - { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, "No UPnP device discovered"); - return NULL; - } -} - -static PyObject * -UPnP_totalbytesent(UPnPObject *self) -{ - UNSIGNED_INTEGER i; -Py_BEGIN_ALLOW_THREADS - i = UPNP_GetTotalBytesSent(self->urls.controlURL_CIF, - self->data.CIF.servicetype); -Py_END_ALLOW_THREADS - return Py_BuildValue("I", i); -} - -static PyObject * -UPnP_totalbytereceived(UPnPObject *self) -{ - UNSIGNED_INTEGER i; -Py_BEGIN_ALLOW_THREADS - i = UPNP_GetTotalBytesReceived(self->urls.controlURL_CIF, - self->data.CIF.servicetype); -Py_END_ALLOW_THREADS - return Py_BuildValue("I", i); -} - -static PyObject * -UPnP_totalpacketsent(UPnPObject *self) -{ - UNSIGNED_INTEGER i; -Py_BEGIN_ALLOW_THREADS - i = UPNP_GetTotalPacketsSent(self->urls.controlURL_CIF, - self->data.CIF.servicetype); -Py_END_ALLOW_THREADS - return Py_BuildValue("I", i); -} - -static PyObject * -UPnP_totalpacketreceived(UPnPObject *self) -{ - UNSIGNED_INTEGER i; -Py_BEGIN_ALLOW_THREADS - i = UPNP_GetTotalPacketsReceived(self->urls.controlURL_CIF, - self->data.CIF.servicetype); -Py_END_ALLOW_THREADS - return Py_BuildValue("I", i); -} - -static PyObject * -UPnP_statusinfo(UPnPObject *self) -{ - char status[64]; - char lastconnerror[64]; - unsigned int uptime = 0; - int r; - status[0] = '\0'; - lastconnerror[0] = '\0'; -Py_BEGIN_ALLOW_THREADS - r = UPNP_GetStatusInfo(self->urls.controlURL, self->data.first.servicetype, - status, &uptime, lastconnerror); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) { - return Py_BuildValue("(s,I,s)", status, uptime, lastconnerror); - } else { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -static PyObject * -UPnP_connectiontype(UPnPObject *self) -{ - char connectionType[64]; - int r; - connectionType[0] = '\0'; -Py_BEGIN_ALLOW_THREADS - r = UPNP_GetConnectionTypeInfo(self->urls.controlURL, - self->data.first.servicetype, - connectionType); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) { - return Py_BuildValue("s", connectionType); - } else { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -static PyObject * -UPnP_externalipaddress(UPnPObject *self) -{ - char externalIPAddress[40]; - int r; - externalIPAddress[0] = '\0'; -Py_BEGIN_ALLOW_THREADS - r = UPNP_GetExternalIPAddress(self->urls.controlURL, - self->data.first.servicetype, - externalIPAddress); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) { - return Py_BuildValue("s", externalIPAddress); - } else { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -/* AddPortMapping(externalPort, protocol, internalHost, internalPort, desc, - * remoteHost) - * protocol is 'UDP' or 'TCP' */ -static PyObject * -UPnP_addportmapping(UPnPObject *self, PyObject *args) -{ - char extPort[6]; - unsigned short ePort; - char inPort[6]; - unsigned short iPort; - const char * proto; - const char * host; - const char * desc; - const char * remoteHost; - const char * leaseDuration = "0"; - int r; - if (!PyArg_ParseTuple(args, "HssHss", &ePort, &proto, - &host, &iPort, &desc, &remoteHost)) - return NULL; -Py_BEGIN_ALLOW_THREADS - sprintf(extPort, "%hu", ePort); - sprintf(inPort, "%hu", iPort); - r = UPNP_AddPortMapping(self->urls.controlURL, self->data.first.servicetype, - extPort, inPort, host, desc, proto, - remoteHost, leaseDuration); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) - { - Py_RETURN_TRUE; - } - else - { - // TODO: RAISE an Exception. See upnpcommands.h for errors codes. - // upnperrors.c - //Py_RETURN_FALSE; - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -/* DeletePortMapping(extPort, proto, removeHost='') - * proto = 'UDP', 'TCP' */ -static PyObject * -UPnP_deleteportmapping(UPnPObject *self, PyObject *args) -{ - char extPort[6]; - unsigned short ePort; - const char * proto; - const char * remoteHost = ""; - int r; - if(!PyArg_ParseTuple(args, "Hs|z", &ePort, &proto, &remoteHost)) - return NULL; -Py_BEGIN_ALLOW_THREADS - sprintf(extPort, "%hu", ePort); - r = UPNP_DeletePortMapping(self->urls.controlURL, self->data.first.servicetype, - extPort, proto, remoteHost); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) { - Py_RETURN_TRUE; - } else { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -static PyObject * -UPnP_getportmappingnumberofentries(UPnPObject *self) -{ - unsigned int n = 0; - int r; -Py_BEGIN_ALLOW_THREADS - r = UPNP_GetPortMappingNumberOfEntries(self->urls.controlURL, - self->data.first.servicetype, - &n); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) { - return Py_BuildValue("I", n); - } else { - /* TODO: have our own exception type ! */ - PyErr_SetString(PyExc_Exception, strupnperror(r)); - return NULL; - } -} - -/* GetSpecificPortMapping(ePort, proto) - * proto = 'UDP' or 'TCP' */ -static PyObject * -UPnP_getspecificportmapping(UPnPObject *self, PyObject *args) -{ - char extPort[6]; - unsigned short ePort; - const char * proto; - char intClient[40]; - char intPort[6]; - unsigned short iPort; - char desc[80]; - char enabled[4]; - char leaseDuration[16]; - if(!PyArg_ParseTuple(args, "Hs", &ePort, &proto)) - return NULL; - extPort[0] = '\0'; intClient[0] = '\0'; intPort[0] = '\0'; - desc[0] = '\0'; enabled[0] = '\0'; leaseDuration[0] = '\0'; -Py_BEGIN_ALLOW_THREADS - sprintf(extPort, "%hu", ePort); - UPNP_GetSpecificPortMappingEntry(self->urls.controlURL, - self->data.first.servicetype, - extPort, proto, - intClient, intPort, - desc, enabled, leaseDuration); -Py_END_ALLOW_THREADS - if(intClient[0]) - { - iPort = (unsigned short)atoi(intPort); - return Py_BuildValue("(s,H,s,O,i)", - intClient, iPort, desc, - PyBool_FromLong(atoi(enabled)), - atoi(leaseDuration)); - } - else - { - Py_RETURN_NONE; - } -} - -/* GetGenericPortMapping(index) */ -static PyObject * -UPnP_getgenericportmapping(UPnPObject *self, PyObject *args) -{ - int i, r; - char index[8]; - char intClient[40]; - char intPort[6]; - unsigned short iPort; - char extPort[6]; - unsigned short ePort; - char protocol[4]; - char desc[80]; - char enabled[6]; - char rHost[64]; - char duration[16]; /* lease duration */ - unsigned int dur; - if(!PyArg_ParseTuple(args, "i", &i)) - return NULL; -Py_BEGIN_ALLOW_THREADS - snprintf(index, sizeof(index), "%d", i); - rHost[0] = '\0'; enabled[0] = '\0'; - duration[0] = '\0'; desc[0] = '\0'; - extPort[0] = '\0'; intPort[0] = '\0'; intClient[0] = '\0'; - r = UPNP_GetGenericPortMappingEntry(self->urls.controlURL, - self->data.first.servicetype, - index, - extPort, intClient, intPort, - protocol, desc, enabled, rHost, - duration); -Py_END_ALLOW_THREADS - if(r==UPNPCOMMAND_SUCCESS) - { - ePort = (unsigned short)atoi(extPort); - iPort = (unsigned short)atoi(intPort); - dur = (unsigned int)strtoul(duration, 0, 0); - return Py_BuildValue("(H,s,(s,H),s,s,s,I)", - ePort, protocol, intClient, iPort, - desc, enabled, rHost, dur); - } - else - { - Py_RETURN_NONE; - } -} - -/* miniupnpc.UPnP object Method Table */ -static PyMethodDef UPnP_methods[] = { - {"discover", (PyCFunction)UPnP_discover, METH_NOARGS, - "discover UPnP IGD devices on the network" - }, - {"selectigd", (PyCFunction)UPnP_selectigd, METH_NOARGS, - "select a valid UPnP IGD among discovered devices" - }, - {"totalbytesent", (PyCFunction)UPnP_totalbytesent, METH_NOARGS, - "return the total number of bytes sent by UPnP IGD" - }, - {"totalbytereceived", (PyCFunction)UPnP_totalbytereceived, METH_NOARGS, - "return the total number of bytes received by UPnP IGD" - }, - {"totalpacketsent", (PyCFunction)UPnP_totalpacketsent, METH_NOARGS, - "return the total number of packets sent by UPnP IGD" - }, - {"totalpacketreceived", (PyCFunction)UPnP_totalpacketreceived, METH_NOARGS, - "return the total number of packets received by UPnP IGD" - }, - {"statusinfo", (PyCFunction)UPnP_statusinfo, METH_NOARGS, - "return status and uptime" - }, - {"connectiontype", (PyCFunction)UPnP_connectiontype, METH_NOARGS, - "return IGD WAN connection type" - }, - {"externalipaddress", (PyCFunction)UPnP_externalipaddress, METH_NOARGS, - "return external IP address" - }, - {"addportmapping", (PyCFunction)UPnP_addportmapping, METH_VARARGS, - "add a port mapping" - }, - {"deleteportmapping", (PyCFunction)UPnP_deleteportmapping, METH_VARARGS, - "delete a port mapping" - }, - {"getportmappingnumberofentries", (PyCFunction)UPnP_getportmappingnumberofentries, METH_NOARGS, - "-- non standard --" - }, - {"getspecificportmapping", (PyCFunction)UPnP_getspecificportmapping, METH_VARARGS, - "get details about a specific port mapping entry" - }, - {"getgenericportmapping", (PyCFunction)UPnP_getgenericportmapping, METH_VARARGS, - "get all details about the port mapping at index" - }, - {NULL} /* Sentinel */ -}; - -static PyTypeObject UPnPType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "miniupnpc.UPnP", /*tp_name*/ - sizeof(UPnPObject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor)UPnPObject_dealloc,/*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - "UPnP objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - UPnP_methods, /* tp_methods */ - UPnP_members, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0,/*(initproc)UPnP_init,*/ /* tp_init */ - 0, /* tp_alloc */ -#ifndef WIN32 - PyType_GenericNew,/*UPnP_new,*/ /* tp_new */ -#else - 0, -#endif -}; - -/* module methods */ -static PyMethodDef miniupnpc_methods[] = { - {NULL} /* Sentinel */ -}; - -#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ -#define PyMODINIT_FUNC void -#endif -PyMODINIT_FUNC -initminiupnpc(void) -{ - PyObject* m; - -#ifdef WIN32 - UPnPType.tp_new = PyType_GenericNew; -#endif - if (PyType_Ready(&UPnPType) < 0) - return; - - m = Py_InitModule3("miniupnpc", miniupnpc_methods, - "miniupnpc module."); - - Py_INCREF(&UPnPType); - PyModule_AddObject(m, "UPnP", (PyObject *)&UPnPType); -} - diff --git a/libs/miniupnpc/miniupnpcstrings.h.cmake b/libs/miniupnpc/miniupnpcstrings.h.cmake deleted file mode 100644 index a3726350c..000000000 --- a/libs/miniupnpc/miniupnpcstrings.h.cmake +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __MINIUPNPCSTRINGS_H__ -#define __MINIUPNPCSTRINGS_H__ - -#define OS_STRING "${CMAKE_SYSTEM_NAME}" -#define MINIUPNPC_VERSION_STRING "${MINIUPNPC_VERSION}" - -#endif diff --git a/libs/miniupnpc/miniupnpcstrings.h.in b/libs/miniupnpc/miniupnpcstrings.h.in deleted file mode 100644 index 201c9a862..000000000 --- a/libs/miniupnpc/miniupnpcstrings.h.in +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id: miniupnpcstrings.h.in,v 1.4 2011/01/04 11:41:53 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef __MINIUPNPCSTRINGS_H__ -#define __MINIUPNPCSTRINGS_H__ - -#define OS_STRING "OS/version" -#define MINIUPNPC_VERSION_STRING "version" - -#endif - diff --git a/libs/miniupnpc/miniupnpctypes.h b/libs/miniupnpc/miniupnpctypes.h deleted file mode 100644 index 86081c3cc..000000000 --- a/libs/miniupnpc/miniupnpctypes.h +++ /dev/null @@ -1,19 +0,0 @@ -/* $Id: miniupnpctypes.h,v 1.1 2011/02/15 11:10:40 nanard Exp $ */ -/* Miniupnp project : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org - * Author : Thomas Bernard - * Copyright (c) 2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided within this distribution */ -#ifndef __MINIUPNPCTYPES_H__ -#define __MINIUPNPCTYPES_H__ - -#if (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) -#define UNSIGNED_INTEGER unsigned long long -#define STRTOUI strtoull -#else -#define UNSIGNED_INTEGER unsigned int -#define STRTOUI strtoul -#endif - -#endif - diff --git a/libs/miniupnpc/miniwget.c b/libs/miniupnpc/miniwget.c deleted file mode 100644 index 7c9cb3ad5..000000000 --- a/libs/miniupnpc/miniwget.c +++ /dev/null @@ -1,524 +0,0 @@ -/* $Id: miniwget.c,v 1.52 2011/06/17 22:59:42 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ - -#include -#include -#include -#include -#ifdef WIN32 -#include -#include -#include -#define MAXHOSTNAMELEN 64 -#define MIN(x,y) (((x)<(y))?(x):(y)) -#define snprintf _snprintf -#define socklen_t int -#ifndef strncasecmp -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -#define strncasecmp _memicmp -#else /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ -#define strncasecmp memicmp -#endif /* defined(_MSC_VER) && (_MSC_VER >= 1400) */ -#endif /* #ifndef strncasecmp */ -#else /* #ifdef WIN32 */ -#include -#include -#if defined(__amigaos__) && !defined(__amigaos4__) -#define socklen_t int -#else /* #if defined(__amigaos__) && !defined(__amigaos4__) */ -#include -#endif /* #else defined(__amigaos__) && !defined(__amigaos4__) */ -#include -#include -#include -#define closesocket close -/* defining MINIUPNPC_IGNORE_EINTR enable the ignore of interruptions - * during the connect() call */ -#define MINIUPNPC_IGNORE_EINTR -#endif /* #else WIN32 */ -#if defined(__sun) || defined(sun) -#define MIN(x,y) (((x)<(y))?(x):(y)) -#endif - -#include "miniupnpcstrings.h" -#include "miniwget.h" -#include "connecthostport.h" -#include "receivedata.h" - -/* - * Read a HTTP response from a socket. - * Process Content-Length and Transfer-encoding headers. - * return a pointer to the content buffer, which length is saved - * to the length parameter. - */ -void * -getHTTPResponse(int s, int * size) -{ - char buf[2048]; - int n; - int endofheaders = 0; - int chunked = 0; - int content_length = -1; - unsigned int chunksize = 0; - unsigned int bytestocopy = 0; - /* buffers : */ - char * header_buf; - int header_buf_len = 2048; - int header_buf_used = 0; - char * content_buf; - int content_buf_len = 2048; - int content_buf_used = 0; - char chunksize_buf[32]; - int chunksize_buf_index; - - header_buf = malloc(header_buf_len); - content_buf = malloc(content_buf_len); - chunksize_buf[0] = '\0'; - chunksize_buf_index = 0; - - while((n = receivedata(s, buf, 2048, 5000)) > 0) - { - if(endofheaders == 0) - { - int i; - int linestart=0; - int colon=0; - int valuestart=0; - if(header_buf_used + n > header_buf_len) { - header_buf = realloc(header_buf, header_buf_used + n); - header_buf_len = header_buf_used + n; - } - memcpy(header_buf + header_buf_used, buf, n); - header_buf_used += n; - /* search for CR LF CR LF (end of headers) - * recognize also LF LF */ - i = 0; - while(i < (header_buf_used-1) && (endofheaders == 0)) { - if(header_buf[i] == '\r') { - i++; - if(header_buf[i] == '\n') { - i++; - if(i < header_buf_used && header_buf[i] == '\r') { - i++; - if(i < header_buf_used && header_buf[i] == '\n') { - endofheaders = i+1; - } - } - } - } else if(header_buf[i] == '\n') { - i++; - if(header_buf[i] == '\n') { - endofheaders = i+1; - } - } - i++; - } - if(endofheaders == 0) - continue; - /* parse header lines */ - for(i = 0; i < endofheaders - 1; i++) { - if(colon <= linestart && header_buf[i]==':') - { - colon = i; - while(i < (endofheaders-1) - && (header_buf[i+1] == ' ' || header_buf[i+1] == '\t')) - i++; - valuestart = i + 1; - } - /* detecting end of line */ - else if(header_buf[i]=='\r' || header_buf[i]=='\n') - { - if(colon > linestart && valuestart > colon) - { -#ifdef DEBUG - printf("header='%.*s', value='%.*s'\n", - colon-linestart, header_buf+linestart, - i-valuestart, header_buf+valuestart); -#endif - if(0==strncasecmp(header_buf+linestart, "content-length", colon-linestart)) - { - content_length = atoi(header_buf+valuestart); -#ifdef DEBUG - printf("Content-Length: %d\n", content_length); -#endif - } - else if(0==strncasecmp(header_buf+linestart, "transfer-encoding", colon-linestart) - && 0==strncasecmp(header_buf+valuestart, "chunked", 7)) - { -#ifdef DEBUG - printf("chunked transfer-encoding!\n"); -#endif - chunked = 1; - } - } - while(header_buf[i]=='\r' || header_buf[i] == '\n') - i++; - linestart = i; - colon = linestart; - valuestart = 0; - } - } - /* copy the remaining of the received data back to buf */ - n = header_buf_used - endofheaders; - memcpy(buf, header_buf + endofheaders, n); - /* if(headers) */ - } - if(endofheaders) - { - /* content */ - if(chunked) - { - int i = 0; - while(i < n) - { - if(chunksize == 0) - { - /* reading chunk size */ - if(chunksize_buf_index == 0) { - /* skipping any leading CR LF */ - if(i= '0' - && chunksize_buf[j] <= '9') - chunksize = (chunksize << 4) + (chunksize_buf[j] - '0'); - else - chunksize = (chunksize << 4) + ((chunksize_buf[j] | 32) - 'a' + 10); - } - chunksize_buf[0] = '\0'; - chunksize_buf_index = 0; - i++; - } else { - /* not finished to get chunksize */ - continue; - } -#ifdef DEBUG - printf("chunksize = %u (%x)\n", chunksize, chunksize); -#endif - if(chunksize == 0) - { -#ifdef DEBUG - printf("end of HTTP content - %d %d\n", i, n); - /*printf("'%.*s'\n", n-i, buf+i);*/ -#endif - goto end_of_stream; - } - } - bytestocopy = ((int)chunksize < n - i)?chunksize:(n - i); - if((int)(content_buf_used + bytestocopy) > content_buf_len) - { - if(content_length >= content_buf_used + (int)bytestocopy) { - content_buf_len = content_length; - } else { - content_buf_len = content_buf_used + (int)bytestocopy; - } - content_buf = (char *)realloc((void *)content_buf, - content_buf_len); - } - memcpy(content_buf + content_buf_used, buf + i, bytestocopy); - content_buf_used += bytestocopy; - i += bytestocopy; - chunksize -= bytestocopy; - } - } - else - { - /* not chunked */ - if(content_length > 0 - && (content_buf_used + n) > content_length) { - /* skipping additional bytes */ - n = content_length - content_buf_used; - } - if(content_buf_used + n > content_buf_len) - { - if(content_length >= content_buf_used + n) { - content_buf_len = content_length; - } else { - content_buf_len = content_buf_used + n; - } - content_buf = (char *)realloc((void *)content_buf, - content_buf_len); - } - memcpy(content_buf + content_buf_used, buf, n); - content_buf_used += n; - } - } - /* use the Content-Length header value if available */ - if(content_length > 0 && content_buf_used >= content_length) - { -#ifdef DEBUG - printf("End of HTTP content\n"); -#endif - break; - } - } -end_of_stream: - free(header_buf); header_buf = NULL; - *size = content_buf_used; - if(content_buf_used == 0) - { - free(content_buf); - content_buf = NULL; - } - return content_buf; -} - -/* miniwget3() : - * do all the work. - * Return NULL if something failed. */ -static void * -miniwget3(const char * url, const char * host, - unsigned short port, const char * path, - int * size, char * addr_str, int addr_str_len, - const char * httpversion) -{ - char buf[2048]; - int s; - int n = -1; - int len; - int sent; - void * content; - - *size = 0; - s = connecthostport(host, port); - if(s < 0) - return NULL; - - /* get address for caller ! */ - if(addr_str) - { - struct sockaddr_storage saddr; - socklen_t saddrlen; - - saddrlen = sizeof(saddr); - if(getsockname(s, (struct sockaddr *)&saddr, &saddrlen) < 0) - { - perror("getsockname"); - } - else - { -#if defined(__amigaos__) && !defined(__amigaos4__) - /* using INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); - * But his function make a string with the port : nn.nn.nn.nn:port */ -/* if(WSAAddressToStringA((SOCKADDR *)&saddr, sizeof(saddr), - NULL, addr_str, (DWORD *)&addr_str_len)) - { - printf("WSAAddressToStringA() failed : %d\n", WSAGetLastError()); - }*/ - /* the following code is only compatible with ip v4 addresses */ - strncpy(addr_str, inet_ntoa(((struct sockaddr_in *)&saddr)->sin_addr), addr_str_len); -#else -#if 0 - if(saddr.sa_family == AF_INET6) { - inet_ntop(AF_INET6, - &(((struct sockaddr_in6 *)&saddr)->sin6_addr), - addr_str, addr_str_len); - } else { - inet_ntop(AF_INET, - &(((struct sockaddr_in *)&saddr)->sin_addr), - addr_str, addr_str_len); - } -#endif -#ifndef NO_GETADDRINFO - /* getnameinfo return ip v6 address with the scope identifier - * such as : 2a01:e35:8b2b:7330::%4281128194 */ - n = getnameinfo((const struct sockaddr *)&saddr, saddrlen, - addr_str, addr_str_len, - NULL, 0, - NI_NUMERICHOST | NI_NUMERICSERV); -#endif - if(n != 0) { -#ifdef WIN32 - fprintf(stderr, "getnameinfo() failed : %d\n", n); -#else - fprintf(stderr, "getnameinfo() failed : %s\n", gai_strerror(n)); -#endif - } -#endif - } -#ifdef DEBUG - printf("address miniwget : %s\n", addr_str); -#endif - } - - len = snprintf(buf, sizeof(buf), - "GET %s HTTP/%s\r\n" - "Host: %s:%d\r\n" - "Connection: Close\r\n" - "User-Agent: " OS_STRING ", UPnP/1.0, MiniUPnPc/" MINIUPNPC_VERSION_STRING "\r\n" - - "\r\n", - path, httpversion, host, port); - sent = 0; - /* sending the HTTP request */ - while(sent < len) - { - n = send(s, buf+sent, len-sent, 0); - if(n < 0) - { - perror("send"); - closesocket(s); - return NULL; - } - else - { - sent += n; - } - } - content = getHTTPResponse(s, size); - closesocket(s); - return content; -} - -/* miniwget2() : - * Call miniwget3(); retry with HTTP/1.1 if 1.0 fails. */ -static void * -miniwget2(const char * url, const char * host, - unsigned short port, const char * path, - int * size, char * addr_str, int addr_str_len) -{ - char * respbuffer; - - respbuffer = miniwget3(url, host, port, path, size, addr_str, addr_str_len, "1.1"); -/* - respbuffer = miniwget3(url, host, port, path, size, addr_str, addr_str_len, "1.0"); - if (*size == 0) - { -#ifdef DEBUG - printf("Retrying with HTTP/1.1\n"); -#endif - free(respbuffer); - respbuffer = miniwget3(url, host, port, path, size, addr_str, addr_str_len, "1.1"); - } -*/ - return respbuffer; -} - - - - -/* parseURL() - * arguments : - * url : source string not modified - * hostname : hostname destination string (size of MAXHOSTNAMELEN+1) - * port : port (destination) - * path : pointer to the path part of the URL - * - * Return values : - * 0 - Failure - * 1 - Success */ -int parseURL(const char * url, char * hostname, unsigned short * port, char * * path) -{ - char * p1, *p2, *p3; - if(!url) - return 0; - p1 = strstr(url, "://"); - if(!p1) - return 0; - p1 += 3; - if( (url[0]!='h') || (url[1]!='t') - ||(url[2]!='t') || (url[3]!='p')) - return 0; - memset(hostname, 0, MAXHOSTNAMELEN + 1); - if(*p1 == '[') - { - /* IP v6 : http://[2a00:1450:8002::6a]/path/abc */ - p2 = strchr(p1, ']'); - p3 = strchr(p1, '/'); - if(p2 && p3) - { - p2++; - strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p2-p1))); - if(*p2 == ':') - { - *port = 0; - p2++; - while( (*p2 >= '0') && (*p2 <= '9')) - { - *port *= 10; - *port += (unsigned short)(*p2 - '0'); - p2++; - } - } - else - { - *port = 80; - } - *path = p3; - return 1; - } - } - p2 = strchr(p1, ':'); - p3 = strchr(p1, '/'); - if(!p3) - return 0; - if(!p2 || (p2>p3)) - { - strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p3-p1))); - *port = 80; - } - else - { - strncpy(hostname, p1, MIN(MAXHOSTNAMELEN, (int)(p2-p1))); - *port = 0; - p2++; - while( (*p2 >= '0') && (*p2 <= '9')) - { - *port *= 10; - *port += (unsigned short)(*p2 - '0'); - p2++; - } - } - *path = p3; - return 1; -} - -void * miniwget(const char * url, int * size) -{ - unsigned short port; - char * path; - /* protocol://host:port/chemin */ - char hostname[MAXHOSTNAMELEN+1]; - *size = 0; - if(!parseURL(url, hostname, &port, &path)) - return NULL; -#ifdef DEBUG - printf("parsed url : hostname='%s' port=%hu path='%s'\n", hostname, port, path); -#endif - return miniwget2(url, hostname, port, path, size, 0, 0); -} - -void * miniwget_getaddr(const char * url, int * size, char * addr, int addrlen) -{ - unsigned short port; - char * path; - /* protocol://host:port/chemin */ - char hostname[MAXHOSTNAMELEN+1]; - *size = 0; - if(addr) - addr[0] = '\0'; - if(!parseURL(url, hostname, &port, &path)) - return NULL; -#ifdef DEBUG - printf("parsed url : hostname='%s' port=%hu path='%s'\n", hostname, port, path); -#endif - return miniwget2(url, hostname, port, path, size, addr, addrlen); -} - diff --git a/libs/miniupnpc/miniwget.h b/libs/miniupnpc/miniwget.h deleted file mode 100644 index 8314b4000..000000000 --- a/libs/miniupnpc/miniwget.h +++ /dev/null @@ -1,30 +0,0 @@ -/* $Id: miniwget.h,v 1.6 2010/12/09 16:11:33 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef __MINIWGET_H__ -#define __MINIWGET_H__ - -#include "declspec.h" - -#ifdef __cplusplus -extern "C" { -#endif - -LIBSPEC void * getHTTPResponse(int s, int * size); - -LIBSPEC void * miniwget(const char *, int *); - -LIBSPEC void * miniwget_getaddr(const char *, int *, char *, int); - -int parseURL(const char *, char *, unsigned short *, char * *); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/libs/miniupnpc/minixml.c b/libs/miniupnpc/minixml.c deleted file mode 100644 index 8b5594c88..000000000 --- a/libs/miniupnpc/minixml.c +++ /dev/null @@ -1,216 +0,0 @@ -/* $Id: minixml.c,v 1.9 2011/02/07 13:44:57 nanard Exp $ */ -/* minixml.c : the minimum size a xml parser can be ! */ -/* Project : miniupnp - * webpage: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author : Thomas Bernard - -Copyright (c) 2005-2011, Thomas BERNARD -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -*/ -#include -#include "minixml.h" - -/* parseatt : used to parse the argument list - * return 0 (false) in case of success and -1 (true) if the end - * of the xmlbuffer is reached. */ -static int parseatt(struct xmlparser * p) -{ - const char * attname; - int attnamelen; - const char * attvalue; - int attvaluelen; - while(p->xml < p->xmlend) - { - if(*p->xml=='/' || *p->xml=='>') - return 0; - if( !IS_WHITE_SPACE(*p->xml) ) - { - char sep; - attname = p->xml; - attnamelen = 0; - while(*p->xml!='=' && !IS_WHITE_SPACE(*p->xml) ) - { - attnamelen++; p->xml++; - if(p->xml >= p->xmlend) - return -1; - } - while(*(p->xml++) != '=') - { - if(p->xml >= p->xmlend) - return -1; - } - while(IS_WHITE_SPACE(*p->xml)) - { - p->xml++; - if(p->xml >= p->xmlend) - return -1; - } - sep = *p->xml; - if(sep=='\'' || sep=='\"') - { - p->xml++; - if(p->xml >= p->xmlend) - return -1; - attvalue = p->xml; - attvaluelen = 0; - while(*p->xml != sep) - { - attvaluelen++; p->xml++; - if(p->xml >= p->xmlend) - return -1; - } - } - else - { - attvalue = p->xml; - attvaluelen = 0; - while( !IS_WHITE_SPACE(*p->xml) - && *p->xml != '>' && *p->xml != '/') - { - attvaluelen++; p->xml++; - if(p->xml >= p->xmlend) - return -1; - } - } - /*printf("%.*s='%.*s'\n", - attnamelen, attname, attvaluelen, attvalue);*/ - if(p->attfunc) - p->attfunc(p->data, attname, attnamelen, attvalue, attvaluelen); - } - p->xml++; - } - return -1; -} - -/* parseelt parse the xml stream and - * call the callback functions when needed... */ -static void parseelt(struct xmlparser * p) -{ - int i; - const char * elementname; - while(p->xml < (p->xmlend - 1)) - { - if((p->xml)[0]=='<' && (p->xml)[1]!='?') - { - i = 0; elementname = ++p->xml; - while( !IS_WHITE_SPACE(*p->xml) - && (*p->xml!='>') && (*p->xml!='/') - ) - { - i++; p->xml++; - if (p->xml >= p->xmlend) - return; - /* to ignore namespace : */ - if(*p->xml==':') - { - i = 0; - elementname = ++p->xml; - } - } - if(i>0) - { - if(p->starteltfunc) - p->starteltfunc(p->data, elementname, i); - if(parseatt(p)) - return; - if(*p->xml!='/') - { - const char * data; - i = 0; data = ++p->xml; - if (p->xml >= p->xmlend) - return; - while( IS_WHITE_SPACE(*p->xml) ) - { - i++; p->xml++; - if (p->xml >= p->xmlend) - return; - } - if(memcmp(p->xml, "xml += 9; - data = p->xml; - i = 0; - while(memcmp(p->xml, "]]>", 3) != 0) - { - i++; p->xml++; - if ((p->xml + 3) >= p->xmlend) - return; - } - if(i>0 && p->datafunc) - p->datafunc(p->data, data, i); - while(*p->xml!='<') - { - p->xml++; - if (p->xml >= p->xmlend) - return; - } - } - else - { - while(*p->xml!='<') - { - i++; p->xml++; - if ((p->xml + 1) >= p->xmlend) - return; - } - if(i>0 && p->datafunc && *(p->xml + 1) == '/') - p->datafunc(p->data, data, i); - } - } - } - else if(*p->xml == '/') - { - i = 0; elementname = ++p->xml; - if (p->xml >= p->xmlend) - return; - while((*p->xml != '>')) - { - i++; p->xml++; - if (p->xml >= p->xmlend) - return; - } - if(p->endeltfunc) - p->endeltfunc(p->data, elementname, i); - p->xml++; - } - } - else - { - p->xml++; - } - } -} - -/* the parser must be initialized before calling this function */ -void parsexml(struct xmlparser * parser) -{ - parser->xml = parser->xmlstart; - parser->xmlend = parser->xmlstart + parser->xmlsize; - parseelt(parser); -} - - diff --git a/libs/miniupnpc/minixml.h b/libs/miniupnpc/minixml.h deleted file mode 100644 index 857c70ee9..000000000 --- a/libs/miniupnpc/minixml.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $Id: minixml.h,v 1.6 2006/11/30 11:47:21 nanard Exp $ */ -/* minimal xml parser - * - * Project : miniupnp - * Website : http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#ifndef __MINIXML_H__ -#define __MINIXML_H__ -#define IS_WHITE_SPACE(c) ((c==' ') || (c=='\t') || (c=='\r') || (c=='\n')) - -/* if a callback function pointer is set to NULL, - * the function is not called */ -struct xmlparser { - const char *xmlstart; - const char *xmlend; - const char *xml; /* pointer to current character */ - int xmlsize; - void * data; - void (*starteltfunc) (void *, const char *, int); - void (*endeltfunc) (void *, const char *, int); - void (*datafunc) (void *, const char *, int); - void (*attfunc) (void *, const char *, int, const char *, int); -}; - -/* parsexml() - * the xmlparser structure must be initialized before the call - * the following structure members have to be initialized : - * xmlstart, xmlsize, data, *func - * xml is for internal usage, xmlend is computed automatically */ -void parsexml(struct xmlparser *); - -#endif - diff --git a/libs/miniupnpc/minixmlvalid.c b/libs/miniupnpc/minixmlvalid.c deleted file mode 100644 index 766211bcf..000000000 --- a/libs/miniupnpc/minixmlvalid.c +++ /dev/null @@ -1,156 +0,0 @@ -/* $Id: minixmlvalid.c,v 1.4 2011/02/07 13:44:57 nanard Exp $ */ -/* MiniUPnP Project - * http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ - * minixmlvalid.c : - * validation program for the minixml parser - * - * (c) 2006-2011 Thomas Bernard */ - -#include -#include -#include -#include "minixml.h" - -/* xml event structure */ -struct event { - enum { ELTSTART, ELTEND, ATT, CHARDATA } type; - const char * data; - int len; -}; - -struct eventlist { - int n; - struct event * events; -}; - -/* compare 2 xml event lists - * return 0 if the two lists are equals */ -int evtlistcmp(struct eventlist * a, struct eventlist * b) -{ - int i; - struct event * ae, * be; - if(a->n != b->n) - { - printf("event number not matching : %d != %d\n", a->n, b->n); - //return 1; - } - for(i=0; in; i++) - { - ae = a->events + i; - be = b->events + i; - if( (ae->type != be->type) - ||(ae->len != be->len) - ||memcmp(ae->data, be->data, ae->len)) - { - printf("Found a difference : %d '%.*s' != %d '%.*s'\n", - ae->type, ae->len, ae->data, - be->type, be->len, be->data); - return 1; - } - } - return 0; -} - -/* Test data */ -static const char xmldata[] = -"\n" -" " -"character data" -" \n \t" -"" -"\nstuff !\n ]]> \n\n" -" \tchardata1 chardata2 " -""; - -static const struct event evtref[] = -{ - {ELTSTART, "xmlroot", 7}, - {ELTSTART, "elt1", 4}, - /* attributes */ - {CHARDATA, "character data", 14}, - {ELTEND, "elt1", 4}, - {ELTSTART, "elt1b", 5}, - {ELTSTART, "elt1", 4}, - {CHARDATA, " stuff !\n ", 16}, - {ELTEND, "elt1", 4}, - {ELTSTART, "elt2a", 5}, - {ELTSTART, "elt2b", 5}, - {CHARDATA, "chardata1", 9}, - {ELTEND, "elt2b", 5}, - {ELTSTART, "elt2b", 5}, - {CHARDATA, " chardata2 ", 11}, - {ELTEND, "elt2b", 5}, - {ELTEND, "elt2a", 5}, - {ELTEND, "xmlroot", 7} -}; - -void startelt(void * data, const char * p, int l) -{ - struct eventlist * evtlist = data; - struct event * evt; - evt = evtlist->events + evtlist->n; - /*printf("startelt : %.*s\n", l, p);*/ - evt->type = ELTSTART; - evt->data = p; - evt->len = l; - evtlist->n++; -} - -void endelt(void * data, const char * p, int l) -{ - struct eventlist * evtlist = data; - struct event * evt; - evt = evtlist->events + evtlist->n; - /*printf("endelt : %.*s\n", l, p);*/ - evt->type = ELTEND; - evt->data = p; - evt->len = l; - evtlist->n++; -} - -void chardata(void * data, const char * p, int l) -{ - struct eventlist * evtlist = data; - struct event * evt; - evt = evtlist->events + evtlist->n; - /*printf("chardata : '%.*s'\n", l, p);*/ - evt->type = CHARDATA; - evt->data = p; - evt->len = l; - evtlist->n++; -} - -int testxmlparser(const char * xml, int size) -{ - int r; - struct eventlist evtlist; - struct eventlist evtlistref; - struct xmlparser parser; - evtlist.n = 0; - evtlist.events = malloc(sizeof(struct event)*100); - memset(&parser, 0, sizeof(parser)); - parser.xmlstart = xml; - parser.xmlsize = size; - parser.data = &evtlist; - parser.starteltfunc = startelt; - parser.endeltfunc = endelt; - parser.datafunc = chardata; - parsexml(&parser); - printf("%d events\n", evtlist.n); - /* compare */ - evtlistref.n = sizeof(evtref)/sizeof(struct event); - evtlistref.events = (struct event *)evtref; - r = evtlistcmp(&evtlistref, &evtlist); - free(evtlist.events); - return r; -} - -int main(int argc, char * * argv) -{ - int r; - r = testxmlparser(xmldata, sizeof(xmldata)-1); - if(r) - printf("minixml validation test failed\n"); - return r; -} - diff --git a/libs/miniupnpc/msvc/miniupnpc.sln b/libs/miniupnpc/msvc/miniupnpc.sln deleted file mode 100644 index 405d09a26..000000000 --- a/libs/miniupnpc/msvc/miniupnpc.sln +++ /dev/null @@ -1,29 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniupnpc", "miniupnpc.vcproj", "{D28CE435-CB33-4BAE-8A52-C6EF915956F5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upnpc-static", "upnpc-static.vcproj", "{469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}" - ProjectSection(ProjectDependencies) = postProject - {D28CE435-CB33-4BAE-8A52-C6EF915956F5} = {D28CE435-CB33-4BAE-8A52-C6EF915956F5} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Debug|Win32.ActiveCfg = Debug|Win32 - {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Debug|Win32.Build.0 = Debug|Win32 - {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Release|Win32.ActiveCfg = Release|Win32 - {D28CE435-CB33-4BAE-8A52-C6EF915956F5}.Release|Win32.Build.0 = Release|Win32 - {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Debug|Win32.ActiveCfg = Debug|Win32 - {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Debug|Win32.Build.0 = Debug|Win32 - {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Release|Win32.ActiveCfg = Release|Win32 - {469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/libs/miniupnpc/msvc/miniupnpc.vcproj b/libs/miniupnpc/msvc/miniupnpc.vcproj deleted file mode 100644 index cce2de576..000000000 --- a/libs/miniupnpc/msvc/miniupnpc.vcproj +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/miniupnpc/msvc/upnpc-static.vcproj b/libs/miniupnpc/msvc/upnpc-static.vcproj deleted file mode 100644 index 37fbbca27..000000000 --- a/libs/miniupnpc/msvc/upnpc-static.vcproj +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/miniupnpc/portlistingparse.c b/libs/miniupnpc/portlistingparse.c deleted file mode 100644 index e09e80f39..000000000 --- a/libs/miniupnpc/portlistingparse.c +++ /dev/null @@ -1,157 +0,0 @@ -/* $Id: portlistingparse.c,v 1.4 2011/03/18 11:02:17 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2011 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ -#include -#include -#include "portlistingparse.h" -#include "minixml.h" - -/* list of the elements */ -static const struct { - const portMappingElt code; - const char * const str; -} elements[] = { - { PortMappingEntry, "PortMappingEntry"}, - { NewRemoteHost, "NewRemoteHost"}, - { NewExternalPort, "NewExternalPort"}, - { NewProtocol, "NewProtocol"}, - { NewInternalPort, "NewInternalPort"}, - { NewInternalClient, "NewInternalClient"}, - { NewEnabled, "NewEnabled"}, - { NewDescription, "NewDescription"}, - { NewLeaseTime, "NewLeaseTime"}, - { PortMappingEltNone, NULL} -}; - -/* Helper function */ -static UNSIGNED_INTEGER -atoui(const char * p, int l) -{ - UNSIGNED_INTEGER r = 0; - while(l > 0 && *p) - { - if(*p >= '0' && *p <= '9') - r = r*10 + (*p - '0'); - else - break; - p++; - l--; - } - return r; -} - -/* Start element handler */ -static void -startelt(void * d, const char * name, int l) -{ - int i; - struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; - pdata->curelt = PortMappingEltNone; - for(i = 0; elements[i].str; i++) - { - if(memcmp(name, elements[i].str, l) == 0) - { - pdata->curelt = elements[i].code; - break; - } - } - if(pdata->curelt == PortMappingEntry) - { - struct PortMapping * pm; - pm = calloc(1, sizeof(struct PortMapping)); - LIST_INSERT_HEAD( &(pdata->head), pm, entries); - } -} - -/* End element handler */ -static void -endelt(void * d, const char * name, int l) -{ - struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; - pdata->curelt = PortMappingEltNone; -} - -/* Data handler */ -static void -data(void * d, const char * data, int l) -{ - struct PortMapping * pm; - struct PortMappingParserData * pdata = (struct PortMappingParserData *)d; - pm = pdata->head.lh_first; - if(!pm) - return; - if(l > 63) - l = 63; - switch(pdata->curelt) - { - case NewRemoteHost: - memcpy(pm->remoteHost, data, l); - pm->remoteHost[l] = '\0'; - break; - case NewExternalPort: - pm->externalPort = (unsigned short)atoui(data, l); - break; - case NewProtocol: - if(l > 3) - l = 3; - memcpy(pm->protocol, data, l); - pm->protocol[l] = '\0'; - break; - case NewInternalPort: - pm->internalPort = (unsigned short)atoui(data, l); - break; - case NewInternalClient: - memcpy(pm->internalClient, data, l); - pm->internalClient[l] = '\0'; - break; - case NewEnabled: - pm->enabled = (unsigned char)atoui(data, l); - break; - case NewDescription: - memcpy(pm->description, data, l); - pm->description[l] = '\0'; - break; - case NewLeaseTime: - pm->leaseTime = atoui(data, l); - break; - default: - break; - } -} - - -/* Parse the PortMappingList XML document for IGD version 2 - */ -void -ParsePortListing(const char * buffer, int bufsize, - struct PortMappingParserData * pdata) -{ - struct xmlparser parser; - - memset(pdata, 0, sizeof(struct PortMappingParserData)); - LIST_INIT(&(pdata->head)); - /* init xmlparser */ - parser.xmlstart = buffer; - parser.xmlsize = bufsize; - parser.data = pdata; - parser.starteltfunc = startelt; - parser.endeltfunc = endelt; - parser.datafunc = data; - parser.attfunc = 0; - parsexml(&parser); -} - -void -FreePortListing(struct PortMappingParserData * pdata) -{ - struct PortMapping * pm; - while((pm = pdata->head.lh_first) != NULL) - { - LIST_REMOVE(pm, entries); - free(pm); - } -} - diff --git a/libs/miniupnpc/portlistingparse.h b/libs/miniupnpc/portlistingparse.h deleted file mode 100644 index 18524786c..000000000 --- a/libs/miniupnpc/portlistingparse.h +++ /dev/null @@ -1,71 +0,0 @@ -/* $Id: portlistingparse.h,v 1.4 2011/02/15 23:03:56 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2011 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ -#ifndef __PORTLISTINGPARSE_H__ -#define __PORTLISTINGPARSE_H__ - -#include "declspec.h" -/* for the definition of UNSIGNED_INTEGER */ -#include "miniupnpctypes.h" - -#if defined(NO_SYS_QUEUE_H) || defined(WIN32) || defined(__HAIKU__) -#include "bsdqueue.h" -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* sample of PortMappingEntry : - - 202.233.2.1 - 2345 - TCP - 2345 - 192.168.1.137 - 1 - dooom - 345 - - */ -typedef enum { PortMappingEltNone, - PortMappingEntry, NewRemoteHost, - NewExternalPort, NewProtocol, - NewInternalPort, NewInternalClient, - NewEnabled, NewDescription, - NewLeaseTime } portMappingElt; - -struct PortMapping { - LIST_ENTRY(PortMapping) entries; - UNSIGNED_INTEGER leaseTime; - unsigned short externalPort; - unsigned short internalPort; - char remoteHost[64]; - char internalClient[64]; - char description[64]; - char protocol[4]; - unsigned char enabled; -}; - -struct PortMappingParserData { - LIST_HEAD(portmappinglisthead, PortMapping) head; - portMappingElt curelt; -}; - -LIBSPEC void -ParsePortListing(const char * buffer, int bufsize, - struct PortMappingParserData * pdata); - -LIBSPEC void -FreePortListing(struct PortMappingParserData * pdata); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libs/miniupnpc/pymoduletest.py b/libs/miniupnpc/pymoduletest.py deleted file mode 100644 index d35a3b092..000000000 --- a/libs/miniupnpc/pymoduletest.py +++ /dev/null @@ -1,52 +0,0 @@ -#! /usr/bin/python -# MiniUPnP project -# Author : Thomas Bernard -# This Sample code is public domain. -# website : http://miniupnp.tuxfamily.org/ - -# import the python miniupnpc module -import miniupnpc -import sys - -# create the object -u = miniupnpc.UPnP() -print 'inital(default) values :' -print ' discoverdelay', u.discoverdelay -print ' lanaddr', u.lanaddr -print ' multicastif', u.multicastif -print ' minissdpdsocket', u.minissdpdsocket -u.discoverdelay = 200; -#u.minissdpdsocket = '../minissdpd/minissdpd.sock' -# discovery process, it usualy takes several seconds (2 seconds or more) -print 'Discovering... delay=%ums' % u.discoverdelay -print u.discover(), 'device(s) detected' -# select an igd -try: - u.selectigd() -except Exception, e: - print 'Exception :', e - sys.exit(1) -# display information about the IGD and the internet connection -print 'local ip address :', u.lanaddr -print 'external ip address :', u.externalipaddress() -print u.statusinfo(), u.connectiontype() - -#print u.addportmapping(64000, 'TCP', -# '192.168.1.166', 63000, 'port mapping test', '') -#print u.deleteportmapping(64000, 'TCP') - -port = 0 -proto = 'UDP' -# list the redirections : -i = 0 -while True: - p = u.getgenericportmapping(i) - if p==None: - break - print i, p - (port, proto, (ihost,iport), desc, c, d, e) = p - #print port, desc - i = i + 1 - -print u.getspecificportmapping(port, proto) - diff --git a/libs/miniupnpc/receivedata.c b/libs/miniupnpc/receivedata.c deleted file mode 100644 index a1eadfc46..000000000 --- a/libs/miniupnpc/receivedata.c +++ /dev/null @@ -1,81 +0,0 @@ -/* $Id: receivedata.c,v 1.1 2011/04/11 08:21:47 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ - -#include -#ifdef WIN32 -#include -#include -#else -#include -#if defined(__amigaos__) && !defined(__amigaos4__) -#define socklen_t int -#else /* #if defined(__amigaos__) && !defined(__amigaos4__) */ -#include -#endif /* #else defined(__amigaos__) && !defined(__amigaos4__) */ -#include -#if !defined(__amigaos__) && !defined(__amigaos4__) -#include -#endif -#include -#define MINIUPNPC_IGNORE_EINTR -#endif - -#ifdef WIN32 -#define PRINT_SOCKET_ERROR(x) printf("Socket error: %s, %d\n", x, WSAGetLastError()); -#else -#define PRINT_SOCKET_ERROR(x) perror(x) -#endif - -#include "receivedata.h" - -int -receivedata(int socket, char * data, int length, int timeout) -{ - int n; -#if !defined(WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) - /* using poll */ - struct pollfd fds[1]; /* for the poll */ -#ifdef MINIUPNPC_IGNORE_EINTR - do { -#endif - fds[0].fd = socket; - fds[0].events = POLLIN; - n = poll(fds, 1, timeout); -#ifdef MINIUPNPC_IGNORE_EINTR - } while(n < 0 && errno == EINTR); -#endif - if(n < 0) { - PRINT_SOCKET_ERROR("poll"); - return -1; - } else if(n == 0) { - /* timeout */ - return 0; - } -#else /* !defined(WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */ - /* using select under WIN32 and amigaos */ - fd_set socketSet; - TIMEVAL timeval; - FD_ZERO(&socketSet); - FD_SET(socket, &socketSet); - timeval.tv_sec = timeout / 1000; - timeval.tv_usec = (timeout % 1000) * 1000; - n = select(FD_SETSIZE, &socketSet, NULL, NULL, &timeval); - if(n < 0) { - PRINT_SOCKET_ERROR("select"); - return -1; - } else if(n == 0) { - return 0; - } -#endif - n = recv(socket, data, length, 0); - if(n<0) { - PRINT_SOCKET_ERROR("recv"); - } - return n; -} - - diff --git a/libs/miniupnpc/receivedata.h b/libs/miniupnpc/receivedata.h deleted file mode 100644 index 7a551b9ac..000000000 --- a/libs/miniupnpc/receivedata.h +++ /dev/null @@ -1,17 +0,0 @@ -/* $Id: receivedata.h,v 1.1 2011/04/11 08:21:47 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2011 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENCE file provided within this distribution */ -#ifndef __RECEIVEDATA_H__ -#define __RECEIVEDATA_H__ - -/* Reads data from the specified socket. - * Returns the number of bytes read if successful, zero if no bytes were - * read or if we timed out. Returns negative if there was an error. */ -int receivedata(int socket, char * data, int length, int timeout); - -#endif - diff --git a/libs/miniupnpc/setup.py b/libs/miniupnpc/setup.py deleted file mode 100644 index ca31f9615..000000000 --- a/libs/miniupnpc/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/python -# $Id: setup.py,v 1.6 2011/01/04 09:46:08 nanard Exp $ -# the MiniUPnP Project (c) 2007-2011 Thomas Bernard -# http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ -# -# python script to build the miniupnpc module under unix -# -# replace libminiupnpc.a by libminiupnpc.so for shared library usage -from distutils.core import setup, Extension -setup(name="miniupnpc", version="1.5", - ext_modules=[ - Extension(name="miniupnpc", sources=["miniupnpcmodule.c"], - extra_objects=["libminiupnpc.a"]) - ]) - diff --git a/libs/miniupnpc/setupmingw32.py b/libs/miniupnpc/setupmingw32.py deleted file mode 100644 index d0539e450..000000000 --- a/libs/miniupnpc/setupmingw32.py +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/python -# $Id: setupmingw32.py,v 1.5 2011/05/15 21:18:43 nanard Exp $ -# the MiniUPnP Project (c) 2007-2011 Thomas Bernard -# http://miniupnp.tuxfamily.org/ or http://miniupnp.free.fr/ -# -# python script to build the miniupnpc module under windows (using mingw32) -# -from distutils.core import setup, Extension -setup(name="miniupnpc", version="1.5", - ext_modules=[ - Extension(name="miniupnpc", sources=["miniupnpcmodule.c"], - libraries=["ws2_32", "iphlpapi"], - extra_objects=["libminiupnpc.a"]) - ]) - diff --git a/libs/miniupnpc/testigddescparse.c b/libs/miniupnpc/testigddescparse.c deleted file mode 100644 index 1b0cde90e..000000000 --- a/libs/miniupnpc/testigddescparse.c +++ /dev/null @@ -1,64 +0,0 @@ -/* $Id: testigddescparse.c,v 1.2 2009/12/03 13:50:06 nanard Exp $ */ -/* Project : miniupnp - * http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2008-2009 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#include -#include -#include -#include "igd_desc_parse.h" -#include "minixml.h" -#include "miniupnpc.h" - -int test_igd_desc_parse(char * buffer, int len) -{ - struct IGDdatas igd; - struct xmlparser parser; - struct UPNPUrls urls; - memset(&igd, 0, sizeof(struct IGDdatas)); - memset(&parser, 0, sizeof(struct xmlparser)); - parser.xmlstart = buffer; - parser.xmlsize = len; - parser.data = &igd; - parser.starteltfunc = IGDstartelt; - parser.endeltfunc = IGDendelt; - parser.datafunc = IGDdata; - parsexml(&parser); - printIGD(&igd); - GetUPNPUrls(&urls, &igd, "http://fake/desc/url/file.xml"); - printf("ipcondescURL='%s'\n", urls.ipcondescURL); - printf("controlURL='%s'\n", urls.controlURL); - printf("controlURL_CIF='%s'\n", urls.controlURL_CIF); - FreeUPNPUrls(&urls); - return 0; -} - -int main(int argc, char * * argv) -{ - FILE * f; - char * buffer; - int len; - int r = 0; - if(argc<2) { - fprintf(stderr, "Usage: %s file.xml\n", argv[0]); - return 1; - } - f = fopen(argv[1], "r"); - if(!f) { - fprintf(stderr, "Cannot open %s for reading.\n", argv[1]); - return 1; - } - fseek(f, 0, SEEK_END); - len = ftell(f); - fseek(f, 0, SEEK_SET); - buffer = malloc(len); - fread(buffer, 1, len, f); - fclose(f); - r = test_igd_desc_parse(buffer, len); - free(buffer); - return r; -} - diff --git a/libs/miniupnpc/testminiwget.c b/libs/miniupnpc/testminiwget.c deleted file mode 100644 index b68fbfeed..000000000 --- a/libs/miniupnpc/testminiwget.c +++ /dev/null @@ -1,53 +0,0 @@ -/* $Id: testminiwget.c,v 1.3 2011/05/06 16:33:53 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. - * */ -#include -#include -#include "miniwget.h" - -/** - * This program uses the miniwget / miniwget_getaddr function - * from miniwget.c in order to retreive a web ressource using - * a GET HTTP method, and store it in a file. - */ -int main(int argc, char * * argv) -{ - void * data; - int size, writtensize; - FILE *f; - char addr[64]; - if(argc < 3) { - fprintf(stderr, "Usage:\t%s url file\n", argv[0]); - fprintf(stderr, "Example:\t%s http://www.google.com/ out.html\n", argv[0]); - return 1; - } - /*data = miniwget(argv[1], &size);*/ - data = miniwget_getaddr(argv[1], &size, addr, sizeof(addr)); - if(!data) { - fprintf(stderr, "Error fetching %s\n", argv[1]); - return 1; - } - printf("local address : %s\n", addr); - printf("got %d bytes\n", size); - f = fopen(argv[2], "wb"); - if(!f) { - fprintf(stderr, "Cannot open file %s for writing\n", argv[2]); - free(data); - return 1; - } - writtensize = fwrite(data, 1, size, f); - if(writtensize != size) { - fprintf(stderr, "Could only write %d bytes out of %d to %s\n", - writtensize, size, argv[2]); - } else { - printf("%d bytes written to %s\n", writtensize, argv[2]); - } - fclose(f); - free(data); - return 0; -} - diff --git a/libs/miniupnpc/testminiwget.sh b/libs/miniupnpc/testminiwget.sh deleted file mode 100755 index c048e5bd1..000000000 --- a/libs/miniupnpc/testminiwget.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/sh -# $Id: testminiwget.sh,v 1.4 2011/05/09 08:53:15 nanard Exp $ -# project miniupnp : http://miniupnp.free.fr/ -# (c) 2011 Thomas Bernard -# -# test program for miniwget.c -# is usually invoked by "make check" -# -# This test program : -# 1 - launches a local HTTP server (minihttptestserver) -# 2 - uses testminiwget to retreive data from this server -# 3 - compares served and received data -# 4 - kills the local HTTP server and exits -# - -HTTPSERVEROUT=/tmp/httpserverout -EXPECTEDFILE=/tmp/expectedfile -DOWNLOADEDFILE=/tmp/downloadedfile -#ADDR=localhost -ADDR="[::1]" -PORT= -RET=0 - -#make minihttptestserver -#make testminiwget - -# launching the test HTTP server -./minihttptestserver -6 -e $EXPECTEDFILE > $HTTPSERVEROUT & -while [ "$PORT" == "" ]; do - PORT=`cat $HTTPSERVEROUT | sed 's/Listening on port \([0-9]*\)/\1/' ` -done -echo "Test HTTP server is listening on $PORT" - -URL1="http://$ADDR:$PORT/index.html" -URL2="http://$ADDR:$PORT/chunked" -URL3="http://$ADDR:$PORT/addcrap" - -echo "standard test ..." -./testminiwget $URL1 "${DOWNLOADEDFILE}.1" -if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.1" ; then - echo "ok" -else - echo "standard test FAILED" - RET=1 -fi - -echo "chunked transfert encoding test ..." -./testminiwget $URL2 "${DOWNLOADEDFILE}.2" -if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.2" ; then - echo "ok" -else - echo "chunked transfert encoding test FAILED" - RET=1 -fi - -echo "response too long test ..." -./testminiwget $URL3 "${DOWNLOADEDFILE}.3" -if cmp $EXPECTEDFILE "${DOWNLOADEDFILE}.3" ; then - echo "ok" -else - echo "response too long test FAILED" - RET=1 -fi - -# kill the test HTTP server -kill %1 -wait %1 - -# remove temporary files (for success cases) -if [ $RET -eq 0 ]; then - rm -f "${DOWNLOADEDFILE}.1" - rm -f "${DOWNLOADEDFILE}.2" - rm -f "${DOWNLOADEDFILE}.3" - rm -f $EXPECTEDFILE $HTTPSERVEROUT -else - echo "at least one of the test FAILED" -fi -exit $RET - diff --git a/libs/miniupnpc/testminixml.c b/libs/miniupnpc/testminixml.c deleted file mode 100644 index 3d82527b7..000000000 --- a/libs/miniupnpc/testminixml.c +++ /dev/null @@ -1,88 +0,0 @@ -/* $Id: testminixml.c,v 1.6 2006/11/19 22:32:35 nanard Exp $ - * testminixml.c - * test program for the "minixml" functions. - * Author : Thomas Bernard. - */ -#include -#include -#include -#include "minixml.h" -#include "igd_desc_parse.h" - -#ifdef WIN32 -#define NO_BZERO -#endif - -#ifdef NO_BZERO -#define bzero(p, n) memset(p, 0, n) -#endif - -/* ---------------------------------------------------------------------- */ -void printeltname1(void * d, const char * name, int l) -{ - int i; - printf("element "); - for(i=0;i %s port %u TCP' % (externalipaddress, eport, u.lanaddr, httpd.server_port) - - b = u.addportmapping(eport, 'TCP', u.lanaddr, httpd.server_port, - 'UPnP IGD Tester port %u' % eport, '') - if b: - print 'Success. Now waiting for some HTTP request on http://%s:%u' % (externalipaddress ,eport) - try: - httpd.handle_request() - httpd.server_close() - except KeyboardInterrupt, details: - print "CTRL-C exception!", details - b = u.deleteportmapping(eport, 'TCP') - if b: - print 'Successfully deleted port mapping' - else: - print 'Failed to remove port mapping' - else: - print 'Failed' - - httpd.server_close() - -except Exception, e: - print 'Exception :', e diff --git a/libs/miniupnpc/testupnpreplyparse.c b/libs/miniupnpc/testupnpreplyparse.c deleted file mode 100644 index a02e8f6a6..000000000 --- a/libs/miniupnpc/testupnpreplyparse.c +++ /dev/null @@ -1,44 +0,0 @@ -/* $Id: testupnpreplyparse.c,v 1.2 2008/02/21 13:05:27 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2006-2007 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ -#include -#include -#include "upnpreplyparse.h" - -void -test_parsing(const char * buf, int len) -{ - struct NameValueParserData pdata; - ParseNameValue(buf, len, &pdata); - ClearNameValueList(&pdata); -} - -int main(int argc, char * * argv) -{ - FILE * f; - char buffer[4096]; - int l; - if(argc<2) - { - fprintf(stderr, "Usage: %s file.xml\n", argv[0]); - return 1; - } - f = fopen(argv[1], "r"); - if(!f) - { - fprintf(stderr, "Error : can not open file %s\n", argv[1]); - return 2; - } - l = fread(buffer, 1, sizeof(buffer)-1, f); - fclose(f); - buffer[l] = '\0'; -#ifdef DEBUG - DisplayNameValueList(buffer, l); -#endif - test_parsing(buffer, l); - return 0; -} - diff --git a/libs/miniupnpc/updateminiupnpcstrings.sh b/libs/miniupnpc/updateminiupnpcstrings.sh deleted file mode 100755 index dde4354a8..000000000 --- a/libs/miniupnpc/updateminiupnpcstrings.sh +++ /dev/null @@ -1,53 +0,0 @@ -#! /bin/sh -# $Id: updateminiupnpcstrings.sh,v 1.7 2011/01/04 11:41:53 nanard Exp $ -# project miniupnp : http://miniupnp.free.fr/ -# (c) 2009 Thomas Bernard - -FILE=miniupnpcstrings.h -TMPFILE=miniupnpcstrings.h.tmp -TEMPLATE_FILE=${FILE}.in - -# detecting the OS name and version -OS_NAME=`uname -s` -OS_VERSION=`uname -r` -if [ -f /etc/debian_version ]; then - OS_NAME=Debian - OS_VERSION=`cat /etc/debian_version` -fi -# use lsb_release (Linux Standard Base) when available -LSB_RELEASE=`which lsb_release` -if [ 0 -eq $? -a -x "${LSB_RELEASE}" ]; then - OS_NAME=`${LSB_RELEASE} -i -s` - OS_VERSION=`${LSB_RELEASE} -r -s` - case $OS_NAME in - Debian) - #OS_VERSION=`${LSB_RELEASE} -c -s` - ;; - Ubuntu) - #OS_VERSION=`${LSB_RELEASE} -c -s` - ;; - esac -fi - -# on AmigaOS 3, uname -r returns "unknown", so we use uname -v -if [ "$OS_NAME" = "AmigaOS" ]; then - if [ "$OS_VERSION" = "unknown" ]; then - OS_VERSION=`uname -v` - fi -fi - -echo "Detected OS [$OS_NAME] version [$OS_VERSION]" -MINIUPNPC_VERSION=`cat VERSION` -echo "MiniUPnPc version [${MINIUPNPC_VERSION}]" - -EXPR="s|OS_STRING \".*\"|OS_STRING \"${OS_NAME}/${OS_VERSION}\"|" -#echo $EXPR -test -f ${FILE}.in -echo "setting OS_STRING macro value to ${OS_NAME}/${OS_VERSION} in $FILE." -sed -e "$EXPR" < $TEMPLATE_FILE > $TMPFILE - -EXPR="s|MINIUPNPC_VERSION_STRING \".*\"|MINIUPNPC_VERSION_STRING \"${MINIUPNPC_VERSION}\"|" -echo "setting MINIUPNPC_VERSION_STRING macro value to ${MINIUPNPC_VERSION} in $FILE." -sed -e "$EXPR" < $TMPFILE > $FILE -rm $TMPFILE - diff --git a/libs/miniupnpc/upnpc.c b/libs/miniupnpc/upnpc.c deleted file mode 100644 index b136d9d1f..000000000 --- a/libs/miniupnpc/upnpc.c +++ /dev/null @@ -1,683 +0,0 @@ -/* $Id: upnpc.c,v 1.88 2011/06/17 23:31:01 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided in this distribution. */ - -#include -#include -#include -#include -#ifdef WIN32 -#include -#define snprintf _snprintf -#endif -#include "miniwget.h" -#include "miniupnpc.h" -#include "upnpcommands.h" -#include "upnperrors.h" - -/* protofix() checks if protocol is "UDP" or "TCP" - * returns NULL if not */ -const char * protofix(const char * proto) -{ - static const char proto_tcp[4] = { 'T', 'C', 'P', 0}; - static const char proto_udp[4] = { 'U', 'D', 'P', 0}; - int i, b; - for(i=0, b=1; i<4; i++) - b = b && ( (proto[i] == proto_tcp[i]) - || (proto[i] == (proto_tcp[i] | 32)) ); - if(b) - return proto_tcp; - for(i=0, b=1; i<4; i++) - b = b && ( (proto[i] == proto_udp[i]) - || (proto[i] == (proto_udp[i] | 32)) ); - if(b) - return proto_udp; - return 0; -} - -static void DisplayInfos(struct UPNPUrls * urls, - struct IGDdatas * data) -{ - char externalIPAddress[40]; - char connectionType[64]; - char status[64]; - char lastconnerr[64]; - unsigned int uptime; - unsigned int brUp, brDown; - time_t timenow, timestarted; - int r; - UPNP_GetConnectionTypeInfo(urls->controlURL, - data->first.servicetype, - connectionType); - if(connectionType[0]) - printf("Connection Type : %s\n", connectionType); - else - printf("GetConnectionTypeInfo failed.\n"); - UPNP_GetStatusInfo(urls->controlURL, data->first.servicetype, - status, &uptime, lastconnerr); - printf("Status : %s, uptime=%us, LastConnectionError : %s\n", - status, uptime, lastconnerr); - timenow = time(NULL); - timestarted = timenow - uptime; - printf(" Time started : %s", ctime(×tarted)); - UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, data->CIF.servicetype, - &brDown, &brUp); - printf("MaxBitRateDown : %u bps", brDown); - if(brDown >= 1000000) { - printf(" (%u.%u Mbps)", brDown / 1000000, (brDown / 100000) % 10); - } else if(brDown >= 1000) { - printf(" (%u Kbps)", brDown / 1000); - } - printf(" MaxBitRateUp %u bps", brUp); - if(brUp >= 1000000) { - printf(" (%u.%u Mbps)", brUp / 1000000, (brUp / 100000) % 10); - } else if(brUp >= 1000) { - printf(" (%u Kbps)", brUp / 1000); - } - printf("\n"); - r = UPNP_GetExternalIPAddress(urls->controlURL, - data->first.servicetype, - externalIPAddress); - if(r != UPNPCOMMAND_SUCCESS) - printf("GetExternalIPAddress() returned %d\n", r); - if(externalIPAddress[0]) - printf("ExternalIPAddress = %s\n", externalIPAddress); - else - printf("GetExternalIPAddress failed.\n"); -} - -static void GetConnectionStatus(struct UPNPUrls * urls, - struct IGDdatas * data) -{ - unsigned int bytessent, bytesreceived, packetsreceived, packetssent; - DisplayInfos(urls, data); - bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, data->CIF.servicetype); - bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, data->CIF.servicetype); - packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, data->CIF.servicetype); - packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, data->CIF.servicetype); - printf("Bytes: Sent: %8u\tRecv: %8u\n", bytessent, bytesreceived); - printf("Packets: Sent: %8u\tRecv: %8u\n", packetssent, packetsreceived); -} - -static void ListRedirections(struct UPNPUrls * urls, - struct IGDdatas * data) -{ - int r; - int i = 0; - char index[6]; - char intClient[40]; - char intPort[6]; - char extPort[6]; - char protocol[4]; - char desc[80]; - char enabled[6]; - char rHost[64]; - char duration[16]; - /*unsigned int num=0; - UPNP_GetPortMappingNumberOfEntries(urls->controlURL, data->servicetype, &num); - printf("PortMappingNumberOfEntries : %u\n", num);*/ - do { - snprintf(index, 6, "%d", i); - rHost[0] = '\0'; enabled[0] = '\0'; - duration[0] = '\0'; desc[0] = '\0'; - extPort[0] = '\0'; intPort[0] = '\0'; intClient[0] = '\0'; - r = UPNP_GetGenericPortMappingEntry(urls->controlURL, - data->first.servicetype, - index, - extPort, intClient, intPort, - protocol, desc, enabled, - rHost, duration); - if(r==0) - /* - printf("%02d - %s %s->%s:%s\tenabled=%s leaseDuration=%s\n" - " desc='%s' rHost='%s'\n", - i, protocol, extPort, intClient, intPort, - enabled, duration, - desc, rHost); - */ - printf("%2d %s %5s->%s:%-5s '%s' '%s' %s\n", - i, protocol, extPort, intClient, intPort, - desc, rHost, duration); - else - printf("GetGenericPortMappingEntry() returned %d (%s)\n", - r, strupnperror(r)); - i++; - } while(r==0); -} - -static void NewListRedirections(struct UPNPUrls * urls, - struct IGDdatas * data) -{ - int r; - int i = 0; - struct PortMappingParserData pdata; - struct PortMapping * pm; - - memset(&pdata, 0, sizeof(struct PortMappingParserData)); - r = UPNP_GetListOfPortMappings(urls->controlURL, - data->first.servicetype, - "0", - "65535", - "TCP", - "1000", - &pdata); - if(r == UPNPCOMMAND_SUCCESS) - { - for(pm = pdata.head.lh_first; pm != NULL; pm = pm->entries.le_next) - { - printf("%2d %s %5hu->%s:%-5hu '%s' '%s' %u\n", - i, pm->protocol, pm->externalPort, pm->internalClient, - pm->internalPort, - pm->description, pm->remoteHost, - (unsigned)pm->leaseTime); - i++; - } - FreePortListing(&pdata); - } - else - { - printf("GetListOfPortMappings() returned %d (%s)\n", - r, strupnperror(r)); - } - r = UPNP_GetListOfPortMappings(urls->controlURL, - data->first.servicetype, - "0", - "65535", - "UDP", - "1000", - &pdata); - if(r == UPNPCOMMAND_SUCCESS) - { - for(pm = pdata.head.lh_first; pm != NULL; pm = pm->entries.le_next) - { - printf("%2d %s %5hu->%s:%-5hu '%s' '%s' %u\n", - i, pm->protocol, pm->externalPort, pm->internalClient, - pm->internalPort, - pm->description, pm->remoteHost, - (unsigned)pm->leaseTime); - i++; - } - FreePortListing(&pdata); - } - else - { - printf("GetListOfPortMappings() returned %d (%s)\n", - r, strupnperror(r)); - } -} - -/* Test function - * 1 - get connection type - * 2 - get extenal ip address - * 3 - Add port mapping - * 4 - get this port mapping from the IGD */ -static void SetRedirectAndTest(struct UPNPUrls * urls, - struct IGDdatas * data, - const char * iaddr, - const char * iport, - const char * eport, - const char * proto, - const char * leaseDuration) -{ - char externalIPAddress[40]; - char intClient[40]; - char intPort[6]; - char duration[16]; - int r; - - if(!iaddr || !iport || !eport || !proto) - { - fprintf(stderr, "Wrong arguments\n"); - return; - } - proto = protofix(proto); - if(!proto) - { - fprintf(stderr, "invalid protocol\n"); - return; - } - - UPNP_GetExternalIPAddress(urls->controlURL, - data->first.servicetype, - externalIPAddress); - if(externalIPAddress[0]) - printf("ExternalIPAddress = %s\n", externalIPAddress); - else - printf("GetExternalIPAddress failed.\n"); - - r = UPNP_AddPortMapping(urls->controlURL, data->first.servicetype, - eport, iport, iaddr, 0, proto, 0, leaseDuration); - if(r!=UPNPCOMMAND_SUCCESS) - printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", - eport, iport, iaddr, r, strupnperror(r)); - - r = UPNP_GetSpecificPortMappingEntry(urls->controlURL, - data->first.servicetype, - eport, proto, - intClient, intPort, NULL/*desc*/, - NULL/*enabled*/, duration); - if(r!=UPNPCOMMAND_SUCCESS) - printf("GetSpecificPortMappingEntry() failed with code %d (%s)\n", - r, strupnperror(r)); - - if(intClient[0]) { - printf("InternalIP:Port = %s:%s\n", intClient, intPort); - printf("external %s:%s %s is redirected to internal %s:%s (duration=%s)\n", - externalIPAddress, eport, proto, intClient, intPort, duration); - } -} - -static void -RemoveRedirect(struct UPNPUrls * urls, - struct IGDdatas * data, - const char * eport, - const char * proto) -{ - int r; - if(!proto || !eport) - { - fprintf(stderr, "invalid arguments\n"); - return; - } - proto = protofix(proto); - if(!proto) - { - fprintf(stderr, "protocol invalid\n"); - return; - } - r = UPNP_DeletePortMapping(urls->controlURL, data->first.servicetype, eport, proto, 0); - printf("UPNP_DeletePortMapping() returned : %d\n", r); -} - -/* IGD:2, functions for service WANIPv6FirewallControl:1 */ -static void GetFirewallStatus(struct UPNPUrls * urls, struct IGDdatas * data) -{ - unsigned int bytessent, bytesreceived, packetsreceived, packetssent; - int firewallEnabled = 0, inboundPinholeAllowed = 0; - - UPNP_GetFirewallStatus(urls->controlURL_6FC, data->IPv6FC.servicetype, &firewallEnabled, &inboundPinholeAllowed); - printf("FirewallEnabled: %d & Inbound Pinhole Allowed: %d\n", firewallEnabled, inboundPinholeAllowed); - printf("GetFirewallStatus:\n Firewall Enabled: %s\n Inbound Pinhole Allowed: %s\n", (firewallEnabled)? "Yes":"No", (inboundPinholeAllowed)? "Yes":"No"); - - bytessent = UPNP_GetTotalBytesSent(urls->controlURL_CIF, data->CIF.servicetype); - bytesreceived = UPNP_GetTotalBytesReceived(urls->controlURL_CIF, data->CIF.servicetype); - packetssent = UPNP_GetTotalPacketsSent(urls->controlURL_CIF, data->CIF.servicetype); - packetsreceived = UPNP_GetTotalPacketsReceived(urls->controlURL_CIF, data->CIF.servicetype); - printf("Bytes: Sent: %8u\tRecv: %8u\n", bytessent, bytesreceived); - printf("Packets: Sent: %8u\tRecv: %8u\n", packetssent, packetsreceived); -} - -/* Test function - * 1 - Add pinhole - * 2 - Check if pinhole is working from the IGD side */ -static void SetPinholeAndTest(struct UPNPUrls * urls, struct IGDdatas * data, - const char * remoteaddr, const char * eport, - const char * intaddr, const char * iport, - const char * proto, const char * lease_time) -{ - char uniqueID[8]; - //int isWorking = 0; - int r; - - if(!intaddr || !remoteaddr || !iport || !eport || !proto || !lease_time) - { - fprintf(stderr, "Wrong arguments\n"); - return; - } - /*proto = protofix(proto); - if(!proto) - { - fprintf(stderr, "invalid protocol\n"); - return; - }*/ - r = UPNP_AddPinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, remoteaddr, eport, intaddr, iport, proto, lease_time, uniqueID); - if(r!=UPNPCOMMAND_SUCCESS) - printf("AddPinhole([%s]:%s -> [%s]:%s) failed with code %d (%s)\n", - intaddr, iport, remoteaddr, eport, r, strupnperror(r)); - else - { - printf("AddPinhole: ([%s]:%s -> [%s]:%s) / Pinhole ID = %s\n", intaddr, iport, remoteaddr, eport, uniqueID); - /*r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->servicetype_6FC, uniqueID, &isWorking); - if(r!=UPNPCOMMAND_SUCCESS) - printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); - printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No");*/ - } -} - -/* Test function - * 1 - Check if pinhole is working from the IGD side - * 2 - Update pinhole */ -static void GetPinholeAndUpdate(struct UPNPUrls * urls, struct IGDdatas * data, - const char * uniqueID, const char * lease_time) -{ - int isWorking = 0; - int r; - - if(!uniqueID || !lease_time) - { - fprintf(stderr, "Wrong arguments\n"); - return; - } - r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &isWorking); - printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No"); - if(r!=UPNPCOMMAND_SUCCESS) - printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); - if(isWorking || r==709) - { - r = UPNP_UpdatePinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, lease_time); - printf("UpdatePinhole: Pinhole ID = %s with Lease Time: %s\n", uniqueID, lease_time); - if(r!=UPNPCOMMAND_SUCCESS) - printf("UpdatePinhole: ID (%s) failed with code %d (%s)\n", uniqueID, r, strupnperror(r)); - } -} - -/* Test function - * Get pinhole timeout - */ -static void GetPinholeOutboundTimeout(struct UPNPUrls * urls, struct IGDdatas * data, - const char * remoteaddr, const char * eport, - const char * intaddr, const char * iport, - const char * proto) -{ - int timeout = 0; - int r; - - if(!intaddr || !remoteaddr || !iport || !eport || !proto) - { - fprintf(stderr, "Wrong arguments\n"); - return; - } - - r = UPNP_GetOutboundPinholeTimeout(urls->controlURL_6FC, data->IPv6FC.servicetype, remoteaddr, eport, intaddr, iport, proto, &timeout); - if(r!=UPNPCOMMAND_SUCCESS) - printf("GetOutboundPinholeTimeout([%s]:%s -> [%s]:%s) failed with code %d (%s)\n", - intaddr, iport, remoteaddr, eport, r, strupnperror(r)); - else - printf("GetOutboundPinholeTimeout: ([%s]:%s -> [%s]:%s) / Timeout = %d\n", intaddr, iport, remoteaddr, eport, timeout); -} - -static void -GetPinholePackets(struct UPNPUrls * urls, - struct IGDdatas * data, const char * uniqueID) -{ - int r, pinholePackets = 0; - if(!uniqueID) - { - fprintf(stderr, "invalid arguments\n"); - return; - } - r = UPNP_GetPinholePackets(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &pinholePackets); - if(r!=UPNPCOMMAND_SUCCESS) - printf("GetPinholePackets() failed with code %d (%s)\n", r, strupnperror(r)); - else - printf("GetPinholePackets: Pinhole ID = %s / PinholePackets = %d\n", uniqueID, pinholePackets); -} - -static void -CheckPinhole(struct UPNPUrls * urls, - struct IGDdatas * data, const char * uniqueID) -{ - int r, isWorking = 0; - if(!uniqueID) - { - fprintf(stderr, "invalid arguments\n"); - return; - } - r = UPNP_CheckPinholeWorking(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID, &isWorking); - if(r!=UPNPCOMMAND_SUCCESS) - printf("CheckPinholeWorking() failed with code %d (%s)\n", r, strupnperror(r)); - else - printf("CheckPinholeWorking: Pinhole ID = %s / IsWorking = %s\n", uniqueID, (isWorking)? "Yes":"No"); -} - -static void -RemovePinhole(struct UPNPUrls * urls, - struct IGDdatas * data, const char * uniqueID) -{ - int r; - if(!uniqueID) - { - fprintf(stderr, "invalid arguments\n"); - return; - } - r = UPNP_DeletePinhole(urls->controlURL_6FC, data->IPv6FC.servicetype, uniqueID); - printf("UPNP_DeletePinhole() returned : %d\n", r); -} - - -/* sample upnp client program */ -int main(int argc, char ** argv) -{ - char command = 0; - char ** commandargv = 0; - int commandargc = 0; - struct UPNPDev * devlist = 0; - char lanaddr[64]; /* my ip address on the LAN */ - int i; - const char * rootdescurl = 0; - const char * multicastif = 0; - const char * minissdpdpath = 0; - int retcode = 0; - int error = 0; - int ipv6 = 0; - -#ifdef WIN32 - WSADATA wsaData; - int nResult = WSAStartup(MAKEWORD(2,2), &wsaData); - if(nResult != NO_ERROR) - { - fprintf(stderr, "WSAStartup() failed.\n"); - return -1; - } -#endif - printf("upnpc : miniupnpc library test client. (c) 2006-2011 Thomas Bernard\n"); - printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n" - "for more information.\n"); - /* command line processing */ - for(i=1; ipNext) - { - printf(" desc: %s\n st: %s\n\n", - device->descURL, device->st); - } - } - else - { - printf("upnpDiscover() error code=%d\n", error); - } - i = 1; - if( (rootdescurl && UPNP_GetIGDFromUrl(rootdescurl, &urls, &data, lanaddr, sizeof(lanaddr))) - || (i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)))) - { - switch(i) { - case 1: - printf("Found valid IGD : %s\n", urls.controlURL); - break; - case 2: - printf("Found a (not connected?) IGD : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - break; - case 3: - printf("UPnP device found. Is it an IGD ? : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - break; - default: - printf("Found device (igd ?) : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - } - printf("Local LAN ip address : %s\n", lanaddr); - #if 0 - printf("getting \"%s\"\n", urls.ipcondescURL); - descXML = miniwget(urls.ipcondescURL, &descXMLsize); - if(descXML) - { - /*fwrite(descXML, 1, descXMLsize, stdout);*/ - free(descXML); descXML = NULL; - } - #endif - - switch(command) - { - case 'l': - DisplayInfos(&urls, &data); - ListRedirections(&urls, &data); - break; - case 'L': - NewListRedirections(&urls, &data); - break; - case 'a': - SetRedirectAndTest(&urls, &data, - commandargv[0], commandargv[1], - commandargv[2], commandargv[3], - (commandargc > 4)?commandargv[4]:"0"); - break; - case 'd': - for(i=0; i -#include -#include -#include "upnpcommands.h" -#include "miniupnpc.h" -#include "portlistingparse.h" - -static UNSIGNED_INTEGER -my_atoui(const char * s) -{ - return s ? ((UNSIGNED_INTEGER)STRTOUI(s, NULL, 0)) : 0; -} - -/* - * */ -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesSent(const char * controlURL, - const char * servicetype) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - unsigned int r = 0; - char * p; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetTotalBytesSent", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - /*DisplayNameValueList(buffer, bufsize);*/ - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "NewTotalBytesSent"); - r = my_atoui(p); - ClearNameValueList(&pdata); - return r; -} - -/* - * */ -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesReceived(const char * controlURL, - const char * servicetype) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - unsigned int r = 0; - char * p; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetTotalBytesReceived", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - /*DisplayNameValueList(buffer, bufsize);*/ - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "NewTotalBytesReceived"); - r = my_atoui(p); - ClearNameValueList(&pdata); - return r; -} - -/* - * */ -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsSent(const char * controlURL, - const char * servicetype) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - unsigned int r = 0; - char * p; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetTotalPacketsSent", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - /*DisplayNameValueList(buffer, bufsize);*/ - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "NewTotalPacketsSent"); - r = my_atoui(p); - ClearNameValueList(&pdata); - return r; -} - -/* - * */ -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsReceived(const char * controlURL, - const char * servicetype) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - unsigned int r = 0; - char * p; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetTotalPacketsReceived", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - /*DisplayNameValueList(buffer, bufsize);*/ - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "NewTotalPacketsReceived"); - r = my_atoui(p); - ClearNameValueList(&pdata); - return r; -} - -/* UPNP_GetStatusInfo() call the corresponding UPNP method - * returns the current status and uptime */ -LIBSPEC int -UPNP_GetStatusInfo(const char * controlURL, - const char * servicetype, - char * status, - unsigned int * uptime, - char * lastconnerror) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - char * p; - char * up; - char * err; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!status && !uptime) - return UPNPCOMMAND_INVALID_ARGS; - - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetStatusInfo", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - /*DisplayNameValueList(buffer, bufsize);*/ - free(buffer); buffer = NULL; - up = GetValueFromNameValueList(&pdata, "NewUptime"); - p = GetValueFromNameValueList(&pdata, "NewConnectionStatus"); - err = GetValueFromNameValueList(&pdata, "NewLastConnectionError"); - if(p && up) - ret = UPNPCOMMAND_SUCCESS; - - if(status) { - if(p){ - strncpy(status, p, 64 ); - status[63] = '\0'; - }else - status[0]= '\0'; - } - - if(uptime) { - if(up) - sscanf(up,"%u",uptime); - else - uptime = 0; - } - - if(lastconnerror) { - if(err) { - strncpy(lastconnerror, err, 64 ); - lastconnerror[63] = '\0'; - } else - lastconnerror[0] = '\0'; - } - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - ClearNameValueList(&pdata); - return ret; -} - -/* UPNP_GetConnectionTypeInfo() call the corresponding UPNP method - * returns the connection type */ -LIBSPEC int -UPNP_GetConnectionTypeInfo(const char * controlURL, - const char * servicetype, - char * connectionType) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - char * p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!connectionType) - return UPNPCOMMAND_INVALID_ARGS; - - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetConnectionTypeInfo", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "NewConnectionType"); - /*p = GetValueFromNameValueList(&pdata, "NewPossibleConnectionTypes");*/ - /* PossibleConnectionTypes will have several values.... */ - if(p) { - strncpy(connectionType, p, 64 ); - connectionType[63] = '\0'; - ret = UPNPCOMMAND_SUCCESS; - } else - connectionType[0] = '\0'; - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - ClearNameValueList(&pdata); - return ret; -} - -/* UPNP_GetLinkLayerMaxBitRate() call the corresponding UPNP method. - * Returns 2 values: Downloadlink bandwidth and Uplink bandwidth. - * One of the values can be null - * Note : GetLinkLayerMaxBitRates belongs to WANPPPConnection:1 only - * We can use the GetCommonLinkProperties from WANCommonInterfaceConfig:1 */ -LIBSPEC int -UPNP_GetLinkLayerMaxBitRates(const char * controlURL, - const char * servicetype, - unsigned int * bitrateDown, - unsigned int * bitrateUp) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - char * down; - char * up; - char * p; - - if(!bitrateDown && !bitrateUp) - return UPNPCOMMAND_INVALID_ARGS; - - /* shouldn't we use GetCommonLinkProperties ? */ - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetCommonLinkProperties", 0, &bufsize))) { - /*"GetLinkLayerMaxBitRates", 0, &bufsize);*/ - return UPNPCOMMAND_HTTP_ERROR; - } - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - /*down = GetValueFromNameValueList(&pdata, "NewDownstreamMaxBitRate");*/ - /*up = GetValueFromNameValueList(&pdata, "NewUpstreamMaxBitRate");*/ - down = GetValueFromNameValueList(&pdata, "NewLayer1DownstreamMaxBitRate"); - up = GetValueFromNameValueList(&pdata, "NewLayer1UpstreamMaxBitRate"); - /*GetValueFromNameValueList(&pdata, "NewWANAccessType");*/ - /*GetValueFromNameValueList(&pdata, "NewPhysicalLinkStatus");*/ - if(down && up) - ret = UPNPCOMMAND_SUCCESS; - - if(bitrateDown) { - if(down) - sscanf(down,"%u",bitrateDown); - else - *bitrateDown = 0; - } - - if(bitrateUp) { - if(up) - sscanf(up,"%u",bitrateUp); - else - *bitrateUp = 0; - } - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - ClearNameValueList(&pdata); - return ret; -} - - -/* UPNP_GetExternalIPAddress() call the corresponding UPNP method. - * if the third arg is not null the value is copied to it. - * at least 16 bytes must be available - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR Either an UPnP error code or an unknown error. - * - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. - */ -LIBSPEC int -UPNP_GetExternalIPAddress(const char * controlURL, - const char * servicetype, - char * extIpAdd) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - char * p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!extIpAdd || !controlURL || !servicetype) - return UPNPCOMMAND_INVALID_ARGS; - - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetExternalIPAddress", 0, &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - /*printf("external ip = %s\n", GetValueFromNameValueList(&pdata, "NewExternalIPAddress") );*/ - p = GetValueFromNameValueList(&pdata, "NewExternalIPAddress"); - if(p) { - strncpy(extIpAdd, p, 16 ); - extIpAdd[15] = '\0'; - ret = UPNPCOMMAND_SUCCESS; - } else - extIpAdd[0] = '\0'; - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - - ClearNameValueList(&pdata); - return ret; -} - -LIBSPEC int -UPNP_AddPortMapping(const char * controlURL, const char * servicetype, - const char * extPort, - const char * inPort, - const char * inClient, - const char * desc, - const char * proto, - const char * remoteHost, - const char * leaseDuration) -{ - struct UPNParg * AddPortMappingArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - int ret; - - if(!inPort || !inClient || !proto || !extPort) - return UPNPCOMMAND_INVALID_ARGS; - - AddPortMappingArgs = calloc(9, sizeof(struct UPNParg)); - AddPortMappingArgs[0].elt = "NewRemoteHost"; - AddPortMappingArgs[0].val = remoteHost; - AddPortMappingArgs[1].elt = "NewExternalPort"; - AddPortMappingArgs[1].val = extPort; - AddPortMappingArgs[2].elt = "NewProtocol"; - AddPortMappingArgs[2].val = proto; - AddPortMappingArgs[3].elt = "NewInternalPort"; - AddPortMappingArgs[3].val = inPort; - AddPortMappingArgs[4].elt = "NewInternalClient"; - AddPortMappingArgs[4].val = inClient; - AddPortMappingArgs[5].elt = "NewEnabled"; - AddPortMappingArgs[5].val = "1"; - AddPortMappingArgs[6].elt = "NewPortMappingDescription"; - AddPortMappingArgs[6].val = desc?desc:"libminiupnpc"; - AddPortMappingArgs[7].elt = "NewLeaseDuration"; - AddPortMappingArgs[7].val = leaseDuration?leaseDuration:"0"; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "AddPortMapping", AddPortMappingArgs, - &bufsize))) { - free(AddPortMappingArgs); - return UPNPCOMMAND_HTTP_ERROR; - } - /*DisplayNameValueList(buffer, bufsize);*/ - /*buffer[bufsize] = '\0';*/ - /*puts(buffer);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) { - /*printf("AddPortMapping errorCode = '%s'\n", resVal); */ - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } else { - ret = UPNPCOMMAND_SUCCESS; - } - ClearNameValueList(&pdata); - free(AddPortMappingArgs); - return ret; -} - -LIBSPEC int -UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, - const char * extPort, const char * proto, - const char * remoteHost) -{ - /*struct NameValueParserData pdata;*/ - struct UPNParg * DeletePortMappingArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - int ret; - - if(!extPort || !proto) - return UPNPCOMMAND_INVALID_ARGS; - - DeletePortMappingArgs = calloc(4, sizeof(struct UPNParg)); - DeletePortMappingArgs[0].elt = "NewRemoteHost"; - DeletePortMappingArgs[0].val = remoteHost; - DeletePortMappingArgs[1].elt = "NewExternalPort"; - DeletePortMappingArgs[1].val = extPort; - DeletePortMappingArgs[2].elt = "NewProtocol"; - DeletePortMappingArgs[2].val = proto; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "DeletePortMapping", - DeletePortMappingArgs, &bufsize))) { - free(DeletePortMappingArgs); - return UPNPCOMMAND_HTTP_ERROR; - } - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } else { - ret = UPNPCOMMAND_SUCCESS; - } - ClearNameValueList(&pdata); - free(DeletePortMappingArgs); - return ret; -} - -LIBSPEC int -UPNP_GetGenericPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * index, - char * extPort, - char * intClient, - char * intPort, - char * protocol, - char * desc, - char * enabled, - char * rHost, - char * duration) -{ - struct NameValueParserData pdata; - struct UPNParg * GetPortMappingArgs; - char * buffer; - int bufsize; - char * p; - int r = UPNPCOMMAND_UNKNOWN_ERROR; - if(!index) - return UPNPCOMMAND_INVALID_ARGS; - intClient[0] = '\0'; - intPort[0] = '\0'; - GetPortMappingArgs = calloc(2, sizeof(struct UPNParg)); - GetPortMappingArgs[0].elt = "NewPortMappingIndex"; - GetPortMappingArgs[0].val = index; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetGenericPortMappingEntry", - GetPortMappingArgs, &bufsize))) { - free(GetPortMappingArgs); - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - p = GetValueFromNameValueList(&pdata, "NewRemoteHost"); - if(p && rHost) - { - strncpy(rHost, p, 64); - rHost[63] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "NewExternalPort"); - if(p && extPort) - { - strncpy(extPort, p, 6); - extPort[5] = '\0'; - r = UPNPCOMMAND_SUCCESS; - } - p = GetValueFromNameValueList(&pdata, "NewProtocol"); - if(p && protocol) - { - strncpy(protocol, p, 4); - protocol[3] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "NewInternalClient"); - if(p && intClient) - { - strncpy(intClient, p, 16); - intClient[15] = '\0'; - r = 0; - } - p = GetValueFromNameValueList(&pdata, "NewInternalPort"); - if(p && intPort) - { - strncpy(intPort, p, 6); - intPort[5] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "NewEnabled"); - if(p && enabled) - { - strncpy(enabled, p, 4); - enabled[3] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "NewPortMappingDescription"); - if(p && desc) - { - strncpy(desc, p, 80); - desc[79] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "NewLeaseDuration"); - if(p && duration) - { - strncpy(duration, p, 16); - duration[15] = '\0'; - } - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - r = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &r); - } - ClearNameValueList(&pdata); - free(GetPortMappingArgs); - return r; -} - -LIBSPEC int -UPNP_GetPortMappingNumberOfEntries(const char * controlURL, - const char * servicetype, - unsigned int * numEntries) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - char* p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetPortMappingNumberOfEntries", 0, - &bufsize))) { - return UPNPCOMMAND_HTTP_ERROR; - } -#ifdef DEBUG - DisplayNameValueList(buffer, bufsize); -#endif - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - p = GetValueFromNameValueList(&pdata, "NewPortMappingNumberOfEntries"); - if(numEntries && p) { - *numEntries = 0; - sscanf(p, "%u", numEntries); - ret = UPNPCOMMAND_SUCCESS; - } - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - - ClearNameValueList(&pdata); - return ret; -} - -/* UPNP_GetSpecificPortMappingEntry retrieves an existing port mapping - * the result is returned in the intClient and intPort strings - * please provide 16 and 6 bytes of data */ -LIBSPEC int -UPNP_GetSpecificPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * extPort, - const char * proto, - char * intClient, - char * intPort, - char * desc, - char * enabled, - char * leaseDuration) -{ - struct NameValueParserData pdata; - struct UPNParg * GetPortMappingArgs; - char * buffer; - int bufsize; - char * p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!intPort || !intClient || !extPort || !proto) - return UPNPCOMMAND_INVALID_ARGS; - - GetPortMappingArgs = calloc(4, sizeof(struct UPNParg)); - GetPortMappingArgs[0].elt = "NewRemoteHost"; - /* TODO : add remote host ? */ - GetPortMappingArgs[1].elt = "NewExternalPort"; - GetPortMappingArgs[1].val = extPort; - GetPortMappingArgs[2].elt = "NewProtocol"; - GetPortMappingArgs[2].val = proto; - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetSpecificPortMappingEntry", - GetPortMappingArgs, &bufsize))) { - free(GetPortMappingArgs); - return UPNPCOMMAND_HTTP_ERROR; - } - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - p = GetValueFromNameValueList(&pdata, "NewInternalClient"); - if(p) { - strncpy(intClient, p, 16); - intClient[15] = '\0'; - ret = UPNPCOMMAND_SUCCESS; - } else - intClient[0] = '\0'; - - p = GetValueFromNameValueList(&pdata, "NewInternalPort"); - if(p) { - strncpy(intPort, p, 6); - intPort[5] = '\0'; - } else - intPort[0] = '\0'; - - p = GetValueFromNameValueList(&pdata, "NewEnabled"); - if(p && enabled) { - strncpy(enabled, p, 4); - enabled[3] = '\0'; - } - - p = GetValueFromNameValueList(&pdata, "NewPortMappingDescription"); - if(p && desc) { - strncpy(desc, p, 80); - desc[79] = '\0'; - } - - p = GetValueFromNameValueList(&pdata, "NewLeaseDuration"); - if(p && leaseDuration) - { - strncpy(leaseDuration, p, 16); - leaseDuration[15] = '\0'; - } - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - - ClearNameValueList(&pdata); - free(GetPortMappingArgs); - return ret; -} - -/* UPNP_GetListOfPortMappings() - * - * Possible UPNP Error codes : - * 606 Action not Authorized - * 730 PortMappingNotFound - no port mapping is found in the specified range. - * 733 InconsistantParameters - NewStartPort and NewEndPort values are not - * consistent. - */ -LIBSPEC int -UPNP_GetListOfPortMappings(const char * controlURL, - const char * servicetype, - const char * startPort, - const char * endPort, - const char * protocol, - const char * numberOfPorts, - struct PortMappingParserData * data) -{ - struct NameValueParserData pdata; - struct UPNParg * GetListOfPortMappingsArgs; - const char * p; - char * buffer; - int bufsize; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!startPort || !endPort || !protocol) - return UPNPCOMMAND_INVALID_ARGS; - - GetListOfPortMappingsArgs = calloc(6, sizeof(struct UPNParg)); - GetListOfPortMappingsArgs[0].elt = "NewStartPort"; - GetListOfPortMappingsArgs[0].val = startPort; - GetListOfPortMappingsArgs[1].elt = "NewEndPort"; - GetListOfPortMappingsArgs[1].val = endPort; - GetListOfPortMappingsArgs[2].elt = "NewProtocol"; - GetListOfPortMappingsArgs[2].val = protocol; - GetListOfPortMappingsArgs[3].elt = "NewManage"; - GetListOfPortMappingsArgs[3].val = "1"; - GetListOfPortMappingsArgs[4].elt = "NewNumberOfPorts"; - GetListOfPortMappingsArgs[4].val = numberOfPorts?numberOfPorts:"1000"; - - if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetListOfPortMappings", - GetListOfPortMappingsArgs, &bufsize))) { - free(GetListOfPortMappingsArgs); - return UPNPCOMMAND_HTTP_ERROR; - } - free(GetListOfPortMappingsArgs); - - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - /*p = GetValueFromNameValueList(&pdata, "NewPortListing");*/ - /*if(p) { - printf("NewPortListing : %s\n", p); - }*/ - /*printf("NewPortListing(%d chars) : %s\n", - pdata.portListingLength, pdata.portListing);*/ - if(pdata.portListing) - { - /*struct PortMapping * pm; - int i = 0;*/ - ParsePortListing(pdata.portListing, pdata.portListingLength, - data); - ret = UPNPCOMMAND_SUCCESS; - /* - for(pm = data->head.lh_first; pm != NULL; pm = pm->entries.le_next) - { - printf("%2d %s %5hu->%s:%-5hu '%s' '%s'\n", - i, pm->protocol, pm->externalPort, pm->internalClient, - pm->internalPort, - pm->description, pm->remoteHost); - i++; - } - */ - /*FreePortListing(&data);*/ - } - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - ClearNameValueList(&pdata); - - //printf("%.*s", bufsize, buffer); - - return ret; -} - -/* IGD:2, functions for service WANIPv6FirewallControl:1 */ -LIBSPEC int -UPNP_GetFirewallStatus(const char * controlURL, - const char * servicetype, - int * firewallEnabled, - int * inboundPinholeAllowed) -{ - struct NameValueParserData pdata; - char * buffer; - int bufsize; - char * fe, *ipa, *p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!firewallEnabled && !inboundPinholeAllowed) - return UPNPCOMMAND_INVALID_ARGS; - - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetFirewallStatus", 0, &bufsize); - if(!buffer) { - return UPNPCOMMAND_HTTP_ERROR; - } - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - fe = GetValueFromNameValueList(&pdata, "FirewallEnabled"); - ipa = GetValueFromNameValueList(&pdata, "InboundPinholeAllowed"); - if(ipa && fe) - ret = UPNPCOMMAND_SUCCESS; - if(fe) - *firewallEnabled = my_atoui(fe); - /*else - *firewallEnabled = 0;*/ - if(ipa) - *inboundPinholeAllowed = my_atoui(ipa); - /*else - *inboundPinholeAllowed = 0;*/ - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) - { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - ClearNameValueList(&pdata); - return ret; -} - -LIBSPEC int -UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - int * opTimeout) -{ - struct UPNParg * GetOutboundPinholeTimeoutArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - char * p; - int ret; - - if(!intPort || !intClient || !proto || !remotePort || !remoteHost) - return UPNPCOMMAND_INVALID_ARGS; - - GetOutboundPinholeTimeoutArgs = calloc(6, sizeof(struct UPNParg)); - GetOutboundPinholeTimeoutArgs[0].elt = "RemoteHost"; - GetOutboundPinholeTimeoutArgs[0].val = remoteHost; - GetOutboundPinholeTimeoutArgs[1].elt = "RemotePort"; - GetOutboundPinholeTimeoutArgs[1].val = remotePort; - GetOutboundPinholeTimeoutArgs[2].elt = "Protocol"; - GetOutboundPinholeTimeoutArgs[2].val = proto; - GetOutboundPinholeTimeoutArgs[3].elt = "InternalPort"; - GetOutboundPinholeTimeoutArgs[3].val = intPort; - GetOutboundPinholeTimeoutArgs[4].elt = "InternalClient"; - GetOutboundPinholeTimeoutArgs[4].val = intClient; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetOutboundPinholeTimeout", GetOutboundPinholeTimeoutArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) - { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } - else - { - ret = UPNPCOMMAND_SUCCESS; - p = GetValueFromNameValueList(&pdata, "OutboundPinholeTimeout"); - if(p) - *opTimeout = my_atoui(p); - } - ClearNameValueList(&pdata); - free(GetOutboundPinholeTimeoutArgs); - return ret; -} - -LIBSPEC int -UPNP_AddPinhole(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - const char * leaseTime, - char * uniqueID) -{ - struct UPNParg * AddPinholeArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - char * p; - int ret; - - if(!intPort || !intClient || !proto || !remoteHost || !remotePort || !leaseTime) - return UPNPCOMMAND_INVALID_ARGS; - - AddPinholeArgs = calloc(7, sizeof(struct UPNParg)); - // RemoteHost can be wilcarded - if(strncmp(remoteHost, "empty", 5)==0) - { - AddPinholeArgs[0].elt = "RemoteHost"; - AddPinholeArgs[0].val = ""; - } - else - { - AddPinholeArgs[0].elt = "RemoteHost"; - AddPinholeArgs[0].val = remoteHost; - } - AddPinholeArgs[1].elt = "RemotePort"; - AddPinholeArgs[1].val = remotePort; - AddPinholeArgs[2].elt = "Protocol"; - AddPinholeArgs[2].val = proto; - AddPinholeArgs[3].elt = "InternalPort"; - AddPinholeArgs[3].val = intPort; - if(strncmp(intClient, "empty", 5)==0) - { - AddPinholeArgs[4].elt = "InternalClient"; - AddPinholeArgs[4].val = ""; - } - else - { - AddPinholeArgs[4].elt = "InternalClient"; - AddPinholeArgs[4].val = intClient; - } - AddPinholeArgs[5].elt = "LeaseTime"; - AddPinholeArgs[5].val = leaseTime; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "AddPinhole", AddPinholeArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - p = GetValueFromNameValueList(&pdata, "UniqueID"); - if(p) - { - strncpy(uniqueID, p, 8); - uniqueID[7] = '\0'; - } - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) - { - //printf("AddPortMapping errorCode = '%s'\n", resVal); - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } - else - { - ret = UPNPCOMMAND_SUCCESS; - } - ClearNameValueList(&pdata); - free(AddPinholeArgs); - return ret; -} - -LIBSPEC int -UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, - const char * uniqueID, - const char * leaseTime) -{ - struct UPNParg * UpdatePinholeArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - int ret; - - if(!uniqueID || !leaseTime) - return UPNPCOMMAND_INVALID_ARGS; - - UpdatePinholeArgs = calloc(3, sizeof(struct UPNParg)); - UpdatePinholeArgs[0].elt = "UniqueID"; - UpdatePinholeArgs[0].val = uniqueID; - UpdatePinholeArgs[1].elt = "NewLeaseTime"; - UpdatePinholeArgs[1].val = leaseTime; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "UpdatePinhole", UpdatePinholeArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) - { - /*printf("AddPortMapping errorCode = '%s'\n", resVal); */ - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } - else - { - ret = UPNPCOMMAND_SUCCESS; - } - ClearNameValueList(&pdata); - free(UpdatePinholeArgs); - return ret; -} - -LIBSPEC int -UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID) -{ - /*struct NameValueParserData pdata;*/ - struct UPNParg * DeletePinholeArgs; - char * buffer; - int bufsize; - struct NameValueParserData pdata; - const char * resVal; - int ret; - - if(!uniqueID) - return UPNPCOMMAND_INVALID_ARGS; - - DeletePinholeArgs = calloc(2, sizeof(struct UPNParg)); - DeletePinholeArgs[0].elt = "UniqueID"; - DeletePinholeArgs[0].val = uniqueID; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "DeletePinhole", DeletePinholeArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - /*DisplayNameValueList(buffer, bufsize);*/ - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - resVal = GetValueFromNameValueList(&pdata, "errorCode"); - if(resVal) - { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(resVal, "%d", &ret); - } - else - { - ret = UPNPCOMMAND_SUCCESS; - } - ClearNameValueList(&pdata); - free(DeletePinholeArgs); - return ret; -} - -LIBSPEC int -UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, - const char * uniqueID, int * isWorking) -{ - struct NameValueParserData pdata; - struct UPNParg * CheckPinholeWorkingArgs; - char * buffer; - int bufsize; - char * p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!uniqueID) - return UPNPCOMMAND_INVALID_ARGS; - - CheckPinholeWorkingArgs = calloc(4, sizeof(struct UPNParg)); - CheckPinholeWorkingArgs[0].elt = "UniqueID"; - CheckPinholeWorkingArgs[0].val = uniqueID; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "CheckPinholeWorking", CheckPinholeWorkingArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - p = GetValueFromNameValueList(&pdata, "IsWorking"); - if(p) - { - *isWorking=my_atoui(p); - ret = UPNPCOMMAND_SUCCESS; - } - else - *isWorking = 0; - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) - { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - - ClearNameValueList(&pdata); - free(CheckPinholeWorkingArgs); - return ret; -} - -LIBSPEC int -UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, - const char * uniqueID, int * packets) -{ - struct NameValueParserData pdata; - struct UPNParg * GetPinholePacketsArgs; - char * buffer; - int bufsize; - char * p; - int ret = UPNPCOMMAND_UNKNOWN_ERROR; - - if(!uniqueID) - return UPNPCOMMAND_INVALID_ARGS; - - GetPinholePacketsArgs = calloc(4, sizeof(struct UPNParg)); - GetPinholePacketsArgs[0].elt = "UniqueID"; - GetPinholePacketsArgs[0].val = uniqueID; - buffer = simpleUPnPcommand(-1, controlURL, servicetype, - "GetPinholePackets", GetPinholePacketsArgs, &bufsize); - if(!buffer) - return UPNPCOMMAND_HTTP_ERROR; - ParseNameValue(buffer, bufsize, &pdata); - free(buffer); buffer = NULL; - - p = GetValueFromNameValueList(&pdata, "PinholePackets"); - if(p) - { - *packets=my_atoui(p); - ret = UPNPCOMMAND_SUCCESS; - } - - p = GetValueFromNameValueList(&pdata, "errorCode"); - if(p) - { - ret = UPNPCOMMAND_UNKNOWN_ERROR; - sscanf(p, "%d", &ret); - } - - ClearNameValueList(&pdata); - free(GetPinholePacketsArgs); - return ret; -} - - diff --git a/libs/miniupnpc/upnpcommands.h b/libs/miniupnpc/upnpcommands.h deleted file mode 100644 index 66d95e0ca..000000000 --- a/libs/miniupnpc/upnpcommands.h +++ /dev/null @@ -1,271 +0,0 @@ -/* $Id: upnpcommands.h,v 1.23 2011/04/11 09:14:00 nanard Exp $ */ -/* Miniupnp project : http://miniupnp.free.fr/ - * Author : Thomas Bernard - * Copyright (c) 2005-2011 Thomas Bernard - * This software is subject to the conditions detailed in the - * LICENCE file provided within this distribution */ -#ifndef __UPNPCOMMANDS_H__ -#define __UPNPCOMMANDS_H__ - -#include "upnpreplyparse.h" -#include "portlistingparse.h" -#include "declspec.h" -#include "miniupnpctypes.h" - -/* MiniUPnPc return codes : */ -#define UPNPCOMMAND_SUCCESS (0) -#define UPNPCOMMAND_UNKNOWN_ERROR (-1) -#define UPNPCOMMAND_INVALID_ARGS (-2) -#define UPNPCOMMAND_HTTP_ERROR (-3) - -#ifdef __cplusplus -extern "C" { -#endif - -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesSent(const char * controlURL, - const char * servicetype); - -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalBytesReceived(const char * controlURL, - const char * servicetype); - -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsSent(const char * controlURL, - const char * servicetype); - -LIBSPEC UNSIGNED_INTEGER -UPNP_GetTotalPacketsReceived(const char * controlURL, - const char * servicetype); - -/* UPNP_GetStatusInfo() - * status and lastconnerror are 64 byte buffers - * Return values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error code */ -LIBSPEC int -UPNP_GetStatusInfo(const char * controlURL, - const char * servicetype, - char * status, - unsigned int * uptime, - char * lastconnerror); - -/* UPNP_GetConnectionTypeInfo() - * argument connectionType is a 64 character buffer - * Return Values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error code */ -LIBSPEC int -UPNP_GetConnectionTypeInfo(const char * controlURL, - const char * servicetype, - char * connectionType); - -/* UPNP_GetExternalIPAddress() call the corresponding UPNP method. - * if the third arg is not null the value is copied to it. - * at least 16 bytes must be available - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR Either an UPnP error code or an unknown error. - * - * possible UPnP Errors : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. */ -LIBSPEC int -UPNP_GetExternalIPAddress(const char * controlURL, - const char * servicetype, - char * extIpAdd); - -/* UPNP_GetLinkLayerMaxBitRates() - * call WANCommonInterfaceConfig:1#GetCommonLinkProperties - * - * return values : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. */ -LIBSPEC int -UPNP_GetLinkLayerMaxBitRates(const char* controlURL, - const char* servicetype, - unsigned int * bitrateDown, - unsigned int * bitrateUp); - -/* UPNP_AddPortMapping() - * if desc is NULL, it will be defaulted to "libminiupnpc" - * remoteHost is usually NULL because IGD don't support it. - * - * Return values : - * 0 : SUCCESS - * NON ZERO : ERROR. Either an UPnP error code or an unknown error. - * - * List of possible UPnP errors for AddPortMapping : - * errorCode errorDescription (short) - Description (long) - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 501 Action Failed - See UPnP Device Architecture section on Control. - * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be - * wild-carded - * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded - * 718 ConflictInMappingEntry - The port mapping entry specified conflicts - * with a mapping assigned previously to another client - * 724 SamePortValuesRequired - Internal and External port values - * must be the same - * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports - * permanent lease times on port mappings - * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard - * and cannot be a specific IP address or DNS name - * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and - * cannot be a specific port value */ -LIBSPEC int -UPNP_AddPortMapping(const char * controlURL, const char * servicetype, - const char * extPort, - const char * inPort, - const char * inClient, - const char * desc, - const char * proto, - const char * remoteHost, - const char * leaseDuration); - -/* UPNP_DeletePortMapping() - * Use same argument values as what was used for AddPortMapping(). - * remoteHost is usually NULL because IGD don't support it. - * Return Values : - * 0 : SUCCESS - * NON ZERO : error. Either an UPnP error code or an undefined error. - * - * List of possible UPnP errors for DeletePortMapping : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 714 NoSuchEntryInArray - The specified value does not exist in the array */ -LIBSPEC int -UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, - const char * extPort, const char * proto, - const char * remoteHost); - -/* UPNP_GetPortMappingNumberOfEntries() - * not supported by all routers */ -LIBSPEC int -UPNP_GetPortMappingNumberOfEntries(const char* controlURL, - const char* servicetype, - unsigned int * num); - -/* UPNP_GetSpecificPortMappingEntry() - * retrieves an existing port mapping - * params : - * in extPort - * in proto - * out intClient (16 bytes) - * out intPort (6 bytes) - * out desc (80 bytes) - * out enabled (4 bytes) - * out leaseDuration (16 bytes) - * - * return value : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. */ -LIBSPEC int -UPNP_GetSpecificPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * extPort, - const char * proto, - char * intClient, - char * intPort, - char * desc, - char * enabled, - char * leaseDuration); - -/* UPNP_GetGenericPortMappingEntry() - * params : - * in index - * out extPort (6 bytes) - * out intClient (16 bytes) - * out intPort (6 bytes) - * out protocol (4 bytes) - * out desc (80 bytes) - * out enabled (4 bytes) - * out rHost (64 bytes) - * out duration (16 bytes) - * - * return value : - * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR - * or a UPnP Error Code. - * - * Possible UPNP Error codes : - * 402 Invalid Args - See UPnP Device Architecture section on Control. - * 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds - */ -LIBSPEC int -UPNP_GetGenericPortMappingEntry(const char * controlURL, - const char * servicetype, - const char * index, - char * extPort, - char * intClient, - char * intPort, - char * protocol, - char * desc, - char * enabled, - char * rHost, - char * duration); - -/* UPNP_GetListOfPortMappings() Available in IGD v2 - * - * - * Possible UPNP Error codes : - * 606 Action not Authorized - * 730 PortMappingNotFound - no port mapping is found in the specified range. - * 733 InconsistantParameters - NewStartPort and NewEndPort values are not - * consistent. - */ -LIBSPEC int -UPNP_GetListOfPortMappings(const char * controlURL, - const char * servicetype, - const char * startPort, - const char * endPort, - const char * protocol, - const char * numberOfPorts, - struct PortMappingParserData * data); - -/* IGD:2, functions for service WANIPv6FirewallControl:1 */ -LIBSPEC int -UPNP_GetFirewallStatus(const char * controlURL, - const char * servicetype, - int * firewallEnabled, - int * inboundPinholeAllowed); - -LIBSPEC int -UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - int * opTimeout); - -LIBSPEC int -UPNP_AddPinhole(const char * controlURL, const char * servicetype, - const char * remoteHost, - const char * remotePort, - const char * intClient, - const char * intPort, - const char * proto, - const char * leaseTime, - char * uniqueID); - -LIBSPEC int -UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, - const char * uniqueID, - const char * leaseTime); - -LIBSPEC int -UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID); - -LIBSPEC int -UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, - const char * uniqueID, int * isWorking); - -LIBSPEC int -UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, - const char * uniqueID, int * packets); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/libs/miniupnpc/upnperrors.c b/libs/miniupnpc/upnperrors.c deleted file mode 100644 index a48ae10d3..000000000 --- a/libs/miniupnpc/upnperrors.c +++ /dev/null @@ -1,103 +0,0 @@ -/* $Id: upnperrors.c,v 1.5 2011/04/10 11:19:36 nanard Exp $ */ -/* Project : miniupnp - * Author : Thomas BERNARD - * copyright (c) 2007 Thomas Bernard - * All Right reserved. - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#include -#include "upnperrors.h" -#include "upnpcommands.h" -#include "miniupnpc.h" - -const char * strupnperror(int err) -{ - const char * s = NULL; - switch(err) { - case UPNPCOMMAND_SUCCESS: - s = "Success"; - break; - case UPNPCOMMAND_UNKNOWN_ERROR: - s = "Miniupnpc Unknown Error"; - break; - case UPNPCOMMAND_INVALID_ARGS: - s = "Miniupnpc Invalid Arguments"; - break; - case UPNPDISCOVER_SOCKET_ERROR: - s = "Miniupnpc Socket error"; - break; - case UPNPDISCOVER_MEMORY_ERROR: - s = "Miniupnpc Memory allocation error"; - break; - case 401: - s = "Invalid Action"; - break; - case 402: - s = "Invalid Args"; - break; - case 501: - s = "Action Failed"; - break; - case 606: - s = "Action not authorized"; - break; - case 701: - s = "PinholeSpaceExhausted"; - break; - case 702: - s = "FirewallDisabled"; - break; - case 703: - s = "InboundPinholeNotAllowed"; - break; - case 704: - s = "NoSuchEntry"; - break; - case 705: - s = "ProtocolNotSupported"; - break; - case 706: - s = "InternalPortWildcardingNotAllowed"; - break; - case 707: - s = "ProtocolWildcardingNotAllowed"; - break; - case 708: - s = "WildcardNotPermittedInSrcIP"; - break; - case 709: - s = "NoPacketSent"; - break; - case 713: - s = "SpecifiedArrayIndexInvalid"; - break; - case 714: - s = "NoSuchEntryInArray"; - break; - case 715: - s = "WildCardNotPermittedInSrcIP"; - break; - case 716: - s = "WildCardNotPermittedInExtPort"; - break; - case 718: - s = "ConflictInMappingEntry"; - break; - case 724: - s = "SamePortValuesRequired"; - break; - case 725: - s = "OnlyPermanentLeasesSupported"; - break; - case 726: - s = "RemoteHostOnlySupportsWildcard"; - break; - case 727: - s = "ExternalPortOnlySupportsWildcard"; - break; - default: - s = NULL; - } - return s; -} diff --git a/libs/miniupnpc/upnperrors.h b/libs/miniupnpc/upnperrors.h deleted file mode 100644 index 2c544c97c..000000000 --- a/libs/miniupnpc/upnperrors.h +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id: upnperrors.h,v 1.2 2008/07/02 23:31:15 nanard Exp $ */ -/* (c) 2007 Thomas Bernard - * All rights reserved. - * MiniUPnP Project. - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * This software is subjet to the conditions detailed in the - * provided LICENCE file. */ -#ifndef __UPNPERRORS_H__ -#define __UPNPERRORS_H__ - -#include "declspec.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* strupnperror() - * Return a string description of the UPnP error code - * or NULL for undefinded errors */ -LIBSPEC const char * strupnperror(int err); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libs/miniupnpc/upnpreplyparse.c b/libs/miniupnpc/upnpreplyparse.c deleted file mode 100644 index 482030b35..000000000 --- a/libs/miniupnpc/upnpreplyparse.c +++ /dev/null @@ -1,152 +0,0 @@ -/* $Id: upnpreplyparse.c,v 1.11 2011/02/07 16:17:06 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2006-2011 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ - -#include -#include -#include - -#include "upnpreplyparse.h" -#include "minixml.h" - -static void -NameValueParserStartElt(void * d, const char * name, int l) -{ - struct NameValueParserData * data = (struct NameValueParserData *)d; - if(l>63) - l = 63; - memcpy(data->curelt, name, l); - data->curelt[l] = '\0'; -} - -static void -NameValueParserGetData(void * d, const char * datas, int l) -{ - struct NameValueParserData * data = (struct NameValueParserData *)d; - struct NameValue * nv; - if(strcmp(data->curelt, "NewPortListing") == 0) - { - /* specific case for NewPortListing which is a XML Document */ - data->portListing = malloc(l + 1); - if(!data->portListing) - { - /* malloc error */ - return; - } - memcpy(data->portListing, datas, l); - data->portListing[l] = '\0'; - data->portListingLength = l; - } - else - { - /* standard case. Limited to 63 chars strings */ - nv = malloc(sizeof(struct NameValue)); - if(l>63) - l = 63; - strncpy(nv->name, data->curelt, 64); - nv->name[63] = '\0'; - memcpy(nv->value, datas, l); - nv->value[l] = '\0'; - LIST_INSERT_HEAD( &(data->head), nv, entries); - } -} - -void -ParseNameValue(const char * buffer, int bufsize, - struct NameValueParserData * data) -{ - struct xmlparser parser; - LIST_INIT(&(data->head)); - data->portListing = NULL; - data->portListingLength = 0; - /* init xmlparser object */ - parser.xmlstart = buffer; - parser.xmlsize = bufsize; - parser.data = data; - parser.starteltfunc = NameValueParserStartElt; - parser.endeltfunc = 0; - parser.datafunc = NameValueParserGetData; - parser.attfunc = 0; - parsexml(&parser); -} - -void -ClearNameValueList(struct NameValueParserData * pdata) -{ - struct NameValue * nv; - if(pdata->portListing) - { - free(pdata->portListing); - pdata->portListing = NULL; - pdata->portListingLength = 0; - } - while((nv = pdata->head.lh_first) != NULL) - { - LIST_REMOVE(nv, entries); - free(nv); - } -} - -char * -GetValueFromNameValueList(struct NameValueParserData * pdata, - const char * Name) -{ - struct NameValue * nv; - char * p = NULL; - for(nv = pdata->head.lh_first; - (nv != NULL) && (p == NULL); - nv = nv->entries.le_next) - { - if(strcmp(nv->name, Name) == 0) - p = nv->value; - } - return p; -} - -#if 0 -/* useless now that minixml ignores namespaces by itself */ -char * -GetValueFromNameValueListIgnoreNS(struct NameValueParserData * pdata, - const char * Name) -{ - struct NameValue * nv; - char * p = NULL; - char * pname; - for(nv = pdata->head.lh_first; - (nv != NULL) && (p == NULL); - nv = nv->entries.le_next) - { - pname = strrchr(nv->name, ':'); - if(pname) - pname++; - else - pname = nv->name; - if(strcmp(pname, Name)==0) - p = nv->value; - } - return p; -} -#endif - -/* debug all-in-one function - * do parsing then display to stdout */ -#ifdef DEBUG -void -DisplayNameValueList(char * buffer, int bufsize) -{ - struct NameValueParserData pdata; - struct NameValue * nv; - ParseNameValue(buffer, bufsize, &pdata); - for(nv = pdata.head.lh_first; - nv != NULL; - nv = nv->entries.le_next) - { - printf("%s = %s\n", nv->name, nv->value); - } - ClearNameValueList(&pdata); -} -#endif - diff --git a/libs/miniupnpc/upnpreplyparse.h b/libs/miniupnpc/upnpreplyparse.h deleted file mode 100644 index 267ea8783..000000000 --- a/libs/miniupnpc/upnpreplyparse.h +++ /dev/null @@ -1,64 +0,0 @@ -/* $Id: upnpreplyparse.h,v 1.11 2011/02/07 16:17:06 nanard Exp $ */ -/* MiniUPnP project - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * (c) 2006-2011 Thomas Bernard - * This software is subject to the conditions detailed - * in the LICENCE file provided within the distribution */ - -#ifndef __UPNPREPLYPARSE_H__ -#define __UPNPREPLYPARSE_H__ - -#if defined(NO_SYS_QUEUE_H) || defined(WIN32) || defined(__HAIKU__) -#include "bsdqueue.h" -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -struct NameValue { - LIST_ENTRY(NameValue) entries; - char name[64]; - char value[64]; -}; - -struct NameValueParserData { - LIST_HEAD(listhead, NameValue) head; - char curelt[64]; - char * portListing; - int portListingLength; -}; - -/* ParseNameValue() */ -void -ParseNameValue(const char * buffer, int bufsize, - struct NameValueParserData * data); - -/* ClearNameValueList() */ -void -ClearNameValueList(struct NameValueParserData * pdata); - -/* GetValueFromNameValueList() */ -char * -GetValueFromNameValueList(struct NameValueParserData * pdata, - const char * Name); - -/* GetValueFromNameValueListIgnoreNS() */ -char * -GetValueFromNameValueListIgnoreNS(struct NameValueParserData * pdata, - const char * Name); - -/* DisplayNameValueList() */ -#ifdef DEBUG -void -DisplayNameValueList(char * buffer, int bufsize); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/libs/miniupnpc/wingenminiupnpcstrings.c b/libs/miniupnpc/wingenminiupnpcstrings.c deleted file mode 100644 index 38dd01783..000000000 --- a/libs/miniupnpc/wingenminiupnpcstrings.c +++ /dev/null @@ -1,82 +0,0 @@ -/* $Id: wingenminiupnpcstrings.c,v 1.2 2011/01/11 15:31:13 nanard Exp $ */ -/* Project: miniupnp - * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ - * Author: Thomas Bernard - * Copyright (c) 2005-2009 Thomas Bernard - * This software is subjects to the conditions detailed - * in the LICENSE file provided within this distribution */ -#include -#include - -/* This program display the Windows version and is used to - * generate the miniupnpcstrings.h - * wingenminiupnpcstrings miniupnpcstrings.h.in miniupnpcstrings.h - */ -int main(int argc, char * * argv) { - char buffer[256]; - OSVERSIONINFO osvi; - FILE * fin; - FILE * fout; - int n; - char miniupnpcVersion[32]; - /* dwMajorVersion : - The major version number of the operating system. For more information, see Remarks. - dwMinorVersion : - The minor version number of the operating system. For more information, see Remarks. - dwBuildNumber : - The build number of the operating system. - dwPlatformId - The operating system platform. This member can be the following value. - szCSDVersion - A null-terminated string, such as "Service Pack 3", that indicates the - latest Service Pack installed on the system. If no Service Pack has - been installed, the string is empty. - */ - ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); - osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - - GetVersionEx(&osvi); - - printf("Windows %lu.%lu Build %lu %s\n", - osvi.dwMajorVersion, osvi.dwMinorVersion, - osvi.dwBuildNumber, (const char *)&(osvi.szCSDVersion)); - - fin = fopen("VERSION", "r"); - fgets(miniupnpcVersion, sizeof(miniupnpcVersion), fin); - fclose(fin); - for(n = 0; n < sizeof(miniupnpcVersion); n++) { - if(miniupnpcVersion[n] < ' ') - miniupnpcVersion[n] = '\0'; - } - printf("MiniUPnPc version %s\n", miniupnpcVersion); - - if(argc >= 3) { - fin = fopen(argv[1], "r"); - if(!fin) { - fprintf(stderr, "Cannot open %s for reading.\n", argv[1]); - return 1; - } - fout = fopen(argv[2], "w"); - if(!fout) { - fprintf(stderr, "Cannot open %s for writing.\n", argv[2]); - return 1; - } - n = 0; - while(fgets(buffer, sizeof(buffer), fin)) { - if(0 == memcmp(buffer, "#define OS_STRING \"OS/version\"", 30)) { - sprintf(buffer, "#define OS_STRING \"MSWindows/%ld.%ld.%ld\"\n", - osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber); - } else if(0 == memcmp(buffer, "#define MINIUPNPC_VERSION_STRING \"version\"", 42)) { - sprintf(buffer, "#define MINIUPNPC_VERSION_STRING \"%s\"\n", - miniupnpcVersion); - } - /*fputs(buffer, stdout);*/ - fputs(buffer, fout); - n++; - } - fclose(fin); - fclose(fout); - printf("%d lines written to %s.\n", n, argv[2]); - } - return 0; -}

7YPGVV!|FDU7{YvC5yRS+6p@| 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 z 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