mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-25 07:31:05 +00:00
Upgrade miniupnpc to 2.0
This commit is contained in:
parent
f20602a7b1
commit
4342b71d7a
@ -1,178 +0,0 @@
|
|||||||
cmake_minimum_required (VERSION 2.6)
|
|
||||||
|
|
||||||
project (miniupnpc C)
|
|
||||||
set (MINIUPNPC_VERSION 1.9)
|
|
||||||
set (MINIUPNPC_API_VERSION 15)
|
|
||||||
|
|
||||||
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)
|
|
||||||
add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L)
|
|
||||||
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 (-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
|
|
||||||
minissdpc.c
|
|
||||||
miniwget.c
|
|
||||||
upnpc.c
|
|
||||||
upnpcommands.c
|
|
||||||
upnpdev.c
|
|
||||||
upnpreplyparse.c
|
|
||||||
upnperrors.c
|
|
||||||
connecthostport.c
|
|
||||||
portlistingparse.c
|
|
||||||
receivedata.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 "MINIUPNP_STATICLIB;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 receivedata.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 receivedata.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
|
|
||||||
upnpdev.h
|
|
||||||
miniupnpctypes.h
|
|
||||||
portlistingparse.h
|
|
||||||
miniupnpc_declspec.h
|
|
||||||
DESTINATION include/miniupnpc
|
|
||||||
)
|
|
||||||
|
|
||||||
set (CONFIGURED YES CACHE INTERNAL "")
|
|
||||||
|
|
||||||
# vim: ts=2:sw=2
|
|
@ -1,6 +1,16 @@
|
|||||||
$Id: Changelog.txt,v 1.219 2015/10/26 17:05:06 nanard Exp $
|
$Id: Changelog.txt,v 1.223 2016/04/19 21:06:20 nanard Exp $
|
||||||
miniUPnP client Changelog.
|
miniUPnP client Changelog.
|
||||||
|
|
||||||
|
VERSION 2.0 : released 2016/04/19
|
||||||
|
|
||||||
|
2016/01/24:
|
||||||
|
change miniwget to return HTTP status code
|
||||||
|
increments API_VERSION to 16
|
||||||
|
|
||||||
|
2016/01/22:
|
||||||
|
Improve UPNPIGD_IsConnected() to check if WAN address is not private.
|
||||||
|
parse HTTP response status line in miniwget.c
|
||||||
|
|
||||||
2015/10/26:
|
2015/10/26:
|
||||||
snprintf() overflow check. check overflow in simpleUPnPcommand2()
|
snprintf() overflow check. check overflow in simpleUPnPcommand2()
|
||||||
|
|
||||||
|
@ -1,379 +0,0 @@
|
|||||||
# $Id: Makefile,v 1.132 2015/10/26 16:59:54 nanard Exp $
|
|
||||||
# MiniUPnP Project
|
|
||||||
# http://miniupnp.free.fr/
|
|
||||||
# http://miniupnp.tuxfamily.org/
|
|
||||||
# https://github.com/miniupnp/miniupnp
|
|
||||||
# (c) 2005-2015 Thomas Bernard
|
|
||||||
# to install use :
|
|
||||||
# $ make DESTDIR=/tmp/dummylocation install
|
|
||||||
# or
|
|
||||||
# $ INSTALLPREFIX=/usr/local make install
|
|
||||||
# or
|
|
||||||
# $ make install (default INSTALLPREFIX is /usr)
|
|
||||||
OS = $(shell uname -s)
|
|
||||||
VERSION = $(shell cat VERSION)
|
|
||||||
|
|
||||||
ifeq ($(OS), Darwin)
|
|
||||||
JARSUFFIX=mac
|
|
||||||
LIBTOOL ?= $(shell which libtool)
|
|
||||||
endif
|
|
||||||
ifeq ($(OS), Linux)
|
|
||||||
JARSUFFIX=linux
|
|
||||||
endif
|
|
||||||
ifneq (,$(findstring NT-5.1,$(OS)))
|
|
||||||
JARSUFFIX=win32
|
|
||||||
endif
|
|
||||||
|
|
||||||
HAVE_IPV6 ?= yes
|
|
||||||
export HAVE_IPV6
|
|
||||||
|
|
||||||
CC ?= gcc
|
|
||||||
#AR = gar
|
|
||||||
#CFLAGS = -O -g -DDEBUG
|
|
||||||
CFLAGS ?= -O
|
|
||||||
CFLAGS += -Wall
|
|
||||||
CFLAGS += -W -Wstrict-prototypes
|
|
||||||
CFLAGS += -fno-common
|
|
||||||
CFLAGS += -DMINIUPNPC_SET_SOCKET_TIMEOUT
|
|
||||||
CFLAGS += -DMINIUPNPC_GET_SRC_ADDR
|
|
||||||
CFLAGS += -D_BSD_SOURCE
|
|
||||||
CFLAGS += -D_DEFAULT_SOURCE
|
|
||||||
ifneq ($(OS), FreeBSD)
|
|
||||||
ifneq ($(OS), Darwin)
|
|
||||||
#CFLAGS += -D_POSIX_C_SOURCE=200112L
|
|
||||||
CFLAGS += -D_XOPEN_SOURCE=600
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
#CFLAGS += -ansi
|
|
||||||
# -DNO_GETADDRINFO
|
|
||||||
INSTALL = install
|
|
||||||
SH = /bin/sh
|
|
||||||
JAVA = java
|
|
||||||
# see http://code.google.com/p/jnaerator/
|
|
||||||
#JNAERATOR = jnaerator-0.9.7.jar
|
|
||||||
#JNAERATOR = jnaerator-0.9.8-shaded.jar
|
|
||||||
#JNAERATORARGS = -library miniupnpc
|
|
||||||
#JNAERATOR = jnaerator-0.10-shaded.jar
|
|
||||||
#JNAERATOR = jnaerator-0.11-shaded.jar
|
|
||||||
# https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12/jnaerator-0.12-shaded.jar
|
|
||||||
JNAERATOR = jnaerator-0.12-shaded.jar
|
|
||||||
JNAERATORARGS = -mode StandaloneJar -runtime JNAerator -library miniupnpc
|
|
||||||
#JNAERATORBASEURL = http://jnaerator.googlecode.com/files/
|
|
||||||
JNAERATORBASEURL = https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12
|
|
||||||
|
|
||||||
ifeq (SunOS, $(OS))
|
|
||||||
LDFLAGS=-lsocket -lnsl -lresolv
|
|
||||||
endif
|
|
||||||
|
|
||||||
# APIVERSION is used to build SONAME
|
|
||||||
APIVERSION = 15
|
|
||||||
|
|
||||||
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 portlistingparse.c receivedata.c \
|
|
||||||
upnpdev.c testportlistingparse.c miniupnpcmodule.c \
|
|
||||||
minihttptestserver.c \
|
|
||||||
listdevices.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 upnpdev.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 \
|
|
||||||
upnpdev.h \
|
|
||||||
miniupnpc_declspec.h
|
|
||||||
|
|
||||||
# library names
|
|
||||||
LIBRARY = libminiupnpc.a
|
|
||||||
ifeq ($(OS), Darwin)
|
|
||||||
SHAREDLIBRARY = libminiupnpc.dylib
|
|
||||||
SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib
|
|
||||||
CFLAGS := -D_DARWIN_C_SOURCE $(CFLAGS)
|
|
||||||
else
|
|
||||||
ifeq ($(JARSUFFIX), win32)
|
|
||||||
SHAREDLIBRARY = miniupnpc.dll
|
|
||||||
else
|
|
||||||
# Linux/BSD/etc.
|
|
||||||
SHAREDLIBRARY = libminiupnpc.so
|
|
||||||
SONAME = $(SHAREDLIBRARY).$(APIVERSION)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXECUTABLES = upnpc-static listdevices
|
|
||||||
EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \
|
|
||||||
testigddescparse testminiwget testportlistingparse
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
TESTPORTLISTINGPARSE = testportlistingparse.o minixml.o portlistingparse.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
|
|
||||||
|
|
||||||
LIBDIR ?= lib
|
|
||||||
# install directories
|
|
||||||
INSTALLPREFIX ?= $(PREFIX)/usr
|
|
||||||
INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc
|
|
||||||
INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR)
|
|
||||||
INSTALLDIRBIN = $(INSTALLPREFIX)/bin
|
|
||||||
INSTALLDIRMAN = $(INSTALLPREFIX)/share/man
|
|
||||||
|
|
||||||
FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES)
|
|
||||||
ifneq ($(OS), AmigaOS)
|
|
||||||
FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: install clean depend all check test everything \
|
|
||||||
installpythonmodule updateversion
|
|
||||||
# validateminixml validateminiwget
|
|
||||||
|
|
||||||
all: $(LIBRARY) $(EXECUTABLES)
|
|
||||||
|
|
||||||
test: check
|
|
||||||
|
|
||||||
check: validateminixml validateminiwget validateupnpreplyparse \
|
|
||||||
validateportlistingparse validateigddescparse
|
|
||||||
|
|
||||||
everything: all $(EXECUTABLES_ADDTESTS)
|
|
||||||
|
|
||||||
pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py
|
|
||||||
python setup.py build
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
installpythonmodule: pythonmodule
|
|
||||||
python setup.py install
|
|
||||||
|
|
||||||
pythonmodule3: $(LIBRARY) miniupnpcmodule.c setup.py
|
|
||||||
python3 setup.py build
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
installpythonmodule3: pythonmodule3
|
|
||||||
python3 setup.py install
|
|
||||||
|
|
||||||
validateminixml: minixmlvalid
|
|
||||||
@echo "minixml validation test"
|
|
||||||
./minixmlvalid
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
validateminiwget: testminiwget minihttptestserver testminiwget.sh
|
|
||||||
@echo "miniwget validation test"
|
|
||||||
./testminiwget.sh
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
validateupnpreplyparse: testupnpreplyparse testupnpreplyparse.sh
|
|
||||||
@echo "upnpreplyparse validation test"
|
|
||||||
./testupnpreplyparse.sh
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
validateportlistingparse: testportlistingparse
|
|
||||||
@echo "portlistingparse validation test"
|
|
||||||
./testportlistingparse
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
validateigddescparse: testigddescparse
|
|
||||||
@echo "igd desc parse validation test"
|
|
||||||
./testigddescparse testdesc/new_LiveBox_desc.xml testdesc/new_LiveBox_desc.values
|
|
||||||
./testigddescparse testdesc/linksys_WAG200G_desc.xml testdesc/linksys_WAG200G_desc.values
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h
|
|
||||||
$(RM) $(EXECUTABLES_ADDTESTS)
|
|
||||||
# clean python stuff
|
|
||||||
$(RM) pythonmodule pythonmodule3
|
|
||||||
$(RM) validateminixml validateminiwget validateupnpreplyparse
|
|
||||||
$(RM) validateigddescparse
|
|
||||||
$(RM) minihttptestserver
|
|
||||||
$(RM) -r build/ dist/
|
|
||||||
#python setup.py clean
|
|
||||||
# clean jnaerator stuff
|
|
||||||
$(RM) _jnaerator.* java/miniupnpc_$(OS).jar
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
$(RM) $(JNAERATOR) java/*.jar java/*.class out.errors.txt
|
|
||||||
|
|
||||||
updateversion: miniupnpc.h
|
|
||||||
cp miniupnpc.h miniupnpc.h.bak
|
|
||||||
sed 's/\(.*MINIUPNPC_API_VERSION\s\+\)[0-9]\+/\1$(APIVERSION)/' < miniupnpc.h.bak > miniupnpc.h
|
|
||||||
|
|
||||||
install: updateversion $(FILESTOINSTALL)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC)
|
|
||||||
$(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB)
|
|
||||||
$(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB)
|
|
||||||
ifneq ($(OS), AmigaOS)
|
|
||||||
$(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME)
|
|
||||||
ln -fs $(SONAME) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY)
|
|
||||||
endif
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN)
|
|
||||||
ifeq ($(OS), AmigaOS)
|
|
||||||
$(INSTALL) -m 755 upnpc-static $(DESTDIR)$(INSTALLDIRBIN)/upnpc
|
|
||||||
else
|
|
||||||
$(INSTALL) -m 755 upnpc-shared $(DESTDIR)$(INSTALLDIRBIN)/upnpc
|
|
||||||
endif
|
|
||||||
$(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip
|
|
||||||
ifneq ($(OS), AmigaOS)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRMAN)/man3
|
|
||||||
$(INSTALL) -m 644 man3/miniupnpc.3 $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3
|
|
||||||
ifeq ($(OS), Linux)
|
|
||||||
gzip -f $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
install-static: updateversion $(FILESTOINSTALL)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC)
|
|
||||||
$(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB)
|
|
||||||
$(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB)
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN)
|
|
||||||
$(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip
|
|
||||||
|
|
||||||
cleaninstall:
|
|
||||||
$(RM) -r $(DESTDIR)$(INSTALLDIRINC)
|
|
||||||
$(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(LIBRARY)
|
|
||||||
$(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY)
|
|
||||||
|
|
||||||
depend:
|
|
||||||
makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null
|
|
||||||
|
|
||||||
$(LIBRARY): $(LIBOBJS)
|
|
||||||
ifeq ($(OS), Darwin)
|
|
||||||
$(LIBTOOL) -static -o $@ $?
|
|
||||||
else
|
|
||||||
$(AR) crs $@ $?
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(SHAREDLIBRARY): $(LIBOBJS)
|
|
||||||
ifeq ($(OS), Darwin)
|
|
||||||
# $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^
|
|
||||||
$(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(INSTALLDIRLIB)/$(SONAME) -o $@ $^
|
|
||||||
else
|
|
||||||
$(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^
|
|
||||||
endif
|
|
||||||
|
|
||||||
upnpc-static: upnpc.o $(LIBRARY)
|
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS)
|
|
||||||
|
|
||||||
upnpc-shared: upnpc.o $(SHAREDLIBRARY)
|
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS)
|
|
||||||
|
|
||||||
listdevices: listdevices.o $(LIBRARY)
|
|
||||||
|
|
||||||
testminixml: $(TESTMINIXMLOBJS)
|
|
||||||
|
|
||||||
testminiwget: $(TESTMINIWGETOBJS)
|
|
||||||
|
|
||||||
minixmlvalid: minixml.o minixmlvalid.o
|
|
||||||
|
|
||||||
testupnpreplyparse: $(TESTUPNPREPLYPARSE)
|
|
||||||
|
|
||||||
testigddescparse: $(TESTIGDDESCPARSE)
|
|
||||||
|
|
||||||
testportlistingparse: $(TESTPORTLISTINGPARSE)
|
|
||||||
|
|
||||||
miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh VERSION
|
|
||||||
$(SH) updateminiupnpcstrings.sh
|
|
||||||
|
|
||||||
# ftp tool supplied with OpenBSD can download files from http.
|
|
||||||
jnaerator-%.jar:
|
|
||||||
wget $(JNAERATORBASEURL)/$@ || \
|
|
||||||
curl -o $@ $(JNAERATORBASEURL)/$@ || \
|
|
||||||
ftp $(JNAERATORBASEURL)/$@
|
|
||||||
|
|
||||||
jar: $(SHAREDLIBRARY) $(JNAERATOR)
|
|
||||||
$(JAVA) -jar $(JNAERATOR) $(JNAERATORARGS) \
|
|
||||||
miniupnpc.h miniupnpc_declspec.h upnpcommands.h upnpreplyparse.h \
|
|
||||||
igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) \
|
|
||||||
-package fr.free.miniupnp -o . -jar java/miniupnpc_$(JARSUFFIX).jar -v
|
|
||||||
|
|
||||||
mvn_install:
|
|
||||||
mvn install:install-file -Dfile=java/miniupnpc_$(JARSUFFIX).jar \
|
|
||||||
-DgroupId=com.github \
|
|
||||||
-DartifactId=miniupnp \
|
|
||||||
-Dversion=$(VERSION) \
|
|
||||||
-Dpackaging=jar \
|
|
||||||
-Dclassifier=$(JARSUFFIX) \
|
|
||||||
-DgeneratePom=true \
|
|
||||||
-DcreateChecksum=true
|
|
||||||
|
|
||||||
# make .deb packages
|
|
||||||
deb: /usr/share/pyshared/stdeb all
|
|
||||||
(python setup.py --command-packages=stdeb.command bdist_deb)
|
|
||||||
|
|
||||||
# install .deb packages
|
|
||||||
ideb:
|
|
||||||
(sudo dpkg -i deb_dist/*.deb)
|
|
||||||
|
|
||||||
/usr/share/pyshared/stdeb: /usr/share/doc/python-all-dev
|
|
||||||
(sudo apt-get install python-stdeb)
|
|
||||||
|
|
||||||
/usr/share/doc/python-all-dev:
|
|
||||||
(sudo apt-get install python-all-dev)
|
|
||||||
|
|
||||||
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 miniupnpc_declspec.h igd_desc_parse.h upnpdev.h
|
|
||||||
miniupnpc.o: minissdpc.h miniwget.h minisoap.h minixml.h upnpcommands.h
|
|
||||||
miniupnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h
|
|
||||||
miniupnpc.o: connecthostport.h
|
|
||||||
minixml.o: minixml.h
|
|
||||||
minisoap.o: minisoap.h miniupnpcstrings.h
|
|
||||||
miniwget.o: miniupnpcstrings.h miniwget.h miniupnpc_declspec.h
|
|
||||||
miniwget.o: connecthostport.h receivedata.h
|
|
||||||
upnpc.o: miniwget.h miniupnpc_declspec.h miniupnpc.h igd_desc_parse.h
|
|
||||||
upnpc.o: upnpdev.h upnpcommands.h upnpreplyparse.h portlistingparse.h
|
|
||||||
upnpc.o: miniupnpctypes.h upnperrors.h miniupnpcstrings.h
|
|
||||||
upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h
|
|
||||||
upnpcommands.o: miniupnpc_declspec.h miniupnpctypes.h miniupnpc.h
|
|
||||||
upnpcommands.o: igd_desc_parse.h upnpdev.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_declspec.h upnpdev.h miniupnpc.h
|
|
||||||
minissdpc.o: igd_desc_parse.h receivedata.h codelength.h
|
|
||||||
upnperrors.o: upnperrors.h miniupnpc_declspec.h upnpcommands.h
|
|
||||||
upnperrors.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h
|
|
||||||
upnperrors.o: miniupnpc.h igd_desc_parse.h upnpdev.h
|
|
||||||
testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h
|
|
||||||
testigddescparse.o: miniupnpc_declspec.h upnpdev.h
|
|
||||||
testminiwget.o: miniwget.h miniupnpc_declspec.h
|
|
||||||
connecthostport.o: connecthostport.h
|
|
||||||
portlistingparse.o: portlistingparse.h miniupnpc_declspec.h miniupnpctypes.h
|
|
||||||
portlistingparse.o: minixml.h
|
|
||||||
receivedata.o: receivedata.h
|
|
||||||
upnpdev.o: upnpdev.h miniupnpc_declspec.h
|
|
||||||
testportlistingparse.o: portlistingparse.h miniupnpc_declspec.h
|
|
||||||
testportlistingparse.o: miniupnpctypes.h
|
|
||||||
miniupnpcmodule.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h
|
|
||||||
miniupnpcmodule.o: upnpdev.h upnpcommands.h upnpreplyparse.h
|
|
||||||
miniupnpcmodule.o: portlistingparse.h miniupnpctypes.h upnperrors.h
|
|
||||||
listdevices.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h
|
|
@ -1,98 +0,0 @@
|
|||||||
# $Id: Makefile.mingw,v 1.22 2015/10/26 16:59:54 nanard Exp $
|
|
||||||
# Miniupnp project.
|
|
||||||
# http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
|
||||||
# (c) 2005-2015 Thomas Bernard
|
|
||||||
# This Makefile is made for MinGW
|
|
||||||
#
|
|
||||||
CC ?= gcc
|
|
||||||
#CFLAGS = -Wall -g -DDEBUG -D_WIN32_WINNT=0X501
|
|
||||||
CFLAGS = -Wall -Os -DNDEBUG -D_WIN32_WINNT=0X501
|
|
||||||
LDLIBS = -lws2_32 -liphlpapi
|
|
||||||
# -lwsock32
|
|
||||||
# -liphlpapi is needed for GetBestRoute() and GetIpAddrTable()
|
|
||||||
PYTHON=\utils\python25\python
|
|
||||||
OBJS=miniwget.o minixml.o igd_desc_parse.o minisoap.o \
|
|
||||||
minissdpc.o \
|
|
||||||
miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \
|
|
||||||
connecthostport.o portlistingparse.o receivedata.o \
|
|
||||||
upnpdev.o
|
|
||||||
OBJSDLL=$(addprefix dll/, $(OBJS))
|
|
||||||
|
|
||||||
all: init upnpc-static upnpc-shared testminixml libminiupnpc.a miniupnpc.dll
|
|
||||||
|
|
||||||
init:
|
|
||||||
mkdir dll
|
|
||||||
echo init > init
|
|
||||||
|
|
||||||
clean:
|
|
||||||
del upnpc testminixml *.o
|
|
||||||
del dll\*.o
|
|
||||||
del *.exe
|
|
||||||
del miniupnpc.dll
|
|
||||||
del 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 gcc \
|
|
||||||
--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) -DMINIUPNP_STATICLIB -c -o $@ $<
|
|
||||||
$(CC) $(CFLAGS) -DMINIUPNP_EXPORTS -c -o dll/$@ $<
|
|
||||||
|
|
||||||
upnpc.o: upnpc.c
|
|
||||||
$(CC) $(CFLAGS) -DMINIUPNP_STATICLIB -c -o $@ $<
|
|
||||||
$(CC) $(CFLAGS) -c -o dll/$@ $<
|
|
||||||
|
|
||||||
# --enable-stdcall-fixup
|
|
||||||
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
|
|
||||||
wingenminiupnpcstrings $< $@
|
|
||||||
|
|
||||||
minixml.o: minixml.c minixml.h
|
|
||||||
|
|
||||||
upnpc.o: miniwget.h minisoap.h miniupnpc.h igd_desc_parse.h
|
|
||||||
upnpc.o: upnpreplyparse.h upnpcommands.h upnperrors.h miniupnpcstrings.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
|
|
||||||
|
|
||||||
minissdpc.o: minissdpc.c minissdpc.h receivedata.h
|
|
||||||
|
|
||||||
upnpdev.o: upnpdev.c upnpdev.h
|
|
||||||
|
|
@ -3,7 +3,7 @@ Project web page: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
|||||||
github: https://github.com/miniupnp/miniupnp
|
github: https://github.com/miniupnp/miniupnp
|
||||||
freecode: http://freecode.com/projects/miniupnp
|
freecode: http://freecode.com/projects/miniupnp
|
||||||
Author: Thomas Bernard
|
Author: Thomas Bernard
|
||||||
Copyright (c) 2005-2014 Thomas Bernard
|
Copyright (c) 2005-2016 Thomas Bernard
|
||||||
This software is subject to the conditions detailed in the
|
This software is subject to the conditions detailed in the
|
||||||
LICENSE file provided within this distribution.
|
LICENSE file provided within this distribution.
|
||||||
|
|
||||||
@ -32,6 +32,7 @@ To use the libminiupnpc in your application, link it with
|
|||||||
libminiupnpc.a (or .so) and use the following functions found in miniupnpc.h,
|
libminiupnpc.a (or .so) and use the following functions found in miniupnpc.h,
|
||||||
upnpcommands.h and miniwget.h :
|
upnpcommands.h and miniwget.h :
|
||||||
- upnpDiscover()
|
- upnpDiscover()
|
||||||
|
- UPNP_GetValidIGD()
|
||||||
- miniwget()
|
- miniwget()
|
||||||
- parserootdesc()
|
- parserootdesc()
|
||||||
- GetUPNPUrls()
|
- GetUPNPUrls()
|
||||||
@ -59,3 +60,5 @@ send me an email !
|
|||||||
For any question, you can use the web forum :
|
For any question, you can use the web forum :
|
||||||
http://miniupnp.tuxfamily.org/forum/
|
http://miniupnp.tuxfamily.org/forum/
|
||||||
|
|
||||||
|
Bugs should be reported on github :
|
||||||
|
https://github.com/miniupnp/miniupnp/issues
|
||||||
|
@ -1 +1 @@
|
|||||||
1.9
|
2.0
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
$Id: apiversions.txt,v 1.8 2015/10/08 16:15:47 nanard Exp $
|
$Id: apiversions.txt,v 1.9 2016/01/24 17:24:36 nanard Exp $
|
||||||
|
|
||||||
Differences in API between miniUPnPc versions
|
Differences in API between miniUPnPc versions
|
||||||
|
|
||||||
|
API version 16
|
||||||
|
added "status_code" argument to getHTTPResponse(), miniwget() and miniwget_getaddr()
|
||||||
|
updated macro :
|
||||||
|
#define MINIUPNPC_API_VERSION 16
|
||||||
|
|
||||||
API version 15
|
API version 15
|
||||||
changed "sameport" argument of upnpDiscover() upnpDiscoverAll() upnpDiscoverDevice()
|
changed "sameport" argument of upnpDiscover() upnpDiscoverAll() upnpDiscoverDevice()
|
||||||
to "localport". When 0 or 1, behaviour is not changed, but it can take
|
to "localport". When 0 or 1, behaviour is not changed, but it can take
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.nio.IntBuffer;
|
|
||||||
|
|
||||||
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, 0, (byte)2, IntBuffer.allocate(1));
|
|
||||||
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], null, 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");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
@echo off
|
|
||||||
set JAVA=java
|
|
||||||
set JAVAC=javac
|
|
||||||
REM notice the semicolon for Windows. Write once, run ... oh nevermind
|
|
||||||
set CP=miniupnpc_win32.jar;.
|
|
||||||
|
|
||||||
%JAVAC% -cp "%CP%" JavaBridgeTest.java || exit 1
|
|
||||||
%JAVA% -cp "%CP%" JavaBridgeTest 12345 UDP || exit 1
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
JAVA=java
|
|
||||||
JAVAC=javac
|
|
||||||
CP=$(for i in *.jar; do echo -n $i:; done).
|
|
||||||
|
|
||||||
$JAVAC -cp $CP JavaBridgeTest.java || exit 1
|
|
||||||
$JAVA -cp $CP JavaBridgeTest 12345 UDP || exit 1
|
|
@ -1,55 +0,0 @@
|
|||||||
.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 localport, 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 localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent
|
|
||||||
from the source port 1900 (same as destination port), if set to
|
|
||||||
UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will
|
|
||||||
be attempted as the 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
|
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: minihttptestserver.c,v 1.18 2015/07/15 12:41:15 nanard Exp $ */
|
/* $Id: minihttptestserver.c,v 1.19 2015/11/17 09:07:17 nanard Exp $ */
|
||||||
/* Project : miniUPnP
|
/* Project : miniUPnP
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2011-2015 Thomas Bernard
|
* Copyright (c) 2011-2015 Thomas Bernard
|
||||||
@ -18,6 +18,10 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifndef INADDR_LOOPBACK
|
||||||
|
#define INADDR_LOOPBACK 0x7f000001
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CRAP_LENGTH (2048)
|
#define CRAP_LENGTH (2048)
|
||||||
|
|
||||||
volatile sig_atomic_t quit = 0;
|
volatile sig_atomic_t quit = 0;
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include "minisoap.h"
|
#include "minisoap.h"
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define OS_STRING "Win32"
|
#define OS_STRING "Win32"
|
||||||
#define MINIUPNPC_VERSION_STRING "1.9"
|
#define MINIUPNPC_VERSION_STRING "2.0"
|
||||||
#define UPNP_VERSION_STRING "UPnP/1.1"
|
#define UPNP_VERSION_STRING "UPnP/1.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
/* $Id: minissdpc.c,v 1.30 2015/10/26 17:05:07 nanard Exp $ */
|
/* $Id: minissdpc.c,v 1.31 2016/01/19 09:56:46 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* vim: tabstop=4 shiftwidth=4 noexpandtab
|
||||||
|
* Project : miniupnp
|
||||||
* Web : http://miniupnp.free.fr/
|
* Web : http://miniupnp.free.fr/
|
||||||
* Author : Thomas BERNARD
|
* Author : Thomas BERNARD
|
||||||
* copyright (c) 2005-2015 Thomas Bernard
|
* copyright (c) 2005-2015 Thomas Bernard
|
||||||
@ -69,6 +70,10 @@ struct sockaddr_un {
|
|||||||
#define HAS_IP_MREQN
|
#define HAS_IP_MREQN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(HAS_IP_MREQN) && !defined(_WIN32)
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAS_IP_MREQN) && defined(NEED_STRUCT_IP_MREQN)
|
#if defined(HAS_IP_MREQN) && defined(NEED_STRUCT_IP_MREQN)
|
||||||
/* Several versions of glibc don't define this structure,
|
/* Several versions of glibc don't define this structure,
|
||||||
* define it here and compile with CFLAGS NEED_STRUCT_IP_MREQN */
|
* define it here and compile with CFLAGS NEED_STRUCT_IP_MREQN */
|
||||||
@ -649,11 +654,25 @@ ssdpDiscoverDevices(const char * const deviceTypes[],
|
|||||||
{
|
{
|
||||||
PRINT_SOCKET_ERROR("setsockopt");
|
PRINT_SOCKET_ERROR("setsockopt");
|
||||||
}
|
}
|
||||||
#else
|
#elif !defined(_WIN32)
|
||||||
|
struct ifreq ifr;
|
||||||
|
int ifrlen = sizeof(ifr);
|
||||||
|
strncpy(ifr.ifr_name, multicastif, IFNAMSIZ);
|
||||||
|
ifr.ifr_name[IFNAMSIZ-1] = '\0';
|
||||||
|
if(ioctl(sudp, SIOCGIFADDR, &ifr, &ifrlen) < 0)
|
||||||
|
{
|
||||||
|
PRINT_SOCKET_ERROR("ioctl(...SIOCGIFADDR...)");
|
||||||
|
}
|
||||||
|
mc_if.s_addr = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr;
|
||||||
|
if(setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF, (const char *)&mc_if, sizeof(mc_if)) < 0)
|
||||||
|
{
|
||||||
|
PRINT_SOCKET_ERROR("setsockopt");
|
||||||
|
}
|
||||||
|
#else /* _WIN32 */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Setting of multicast interface not supported with interface name.\n");
|
printf("Setting of multicast interface not supported with interface name.\n");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif /* #ifdef HAS_IP_MREQN / !defined(_WIN32) */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
/* $Id: miniupnpc.c,v 1.141 2015/10/26 17:05:07 nanard Exp $ */
|
|
||||||
/* vim: tabstop=4 shiftwidth=4 noexpandtab */
|
/* $Id: miniupnpc.c,v 1.149 2016/02/09 09:50:46 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* vim: tabstop=4 shiftwidth=4 noexpandtab
|
||||||
|
* Project : miniupnp
|
||||||
* Web : http://miniupnp.free.fr/
|
* Web : http://miniupnp.free.fr/
|
||||||
* Author : Thomas BERNARD
|
* Author : Thomas BERNARD
|
||||||
* copyright (c) 2005-2015 Thomas Bernard
|
* copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subjet to the conditions detailed in the
|
* This software is subjet to the conditions detailed in the
|
||||||
* provided LICENSE file. */
|
* provided LICENSE file. */
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -73,6 +74,25 @@
|
|||||||
#define SERVICEPREFIX "u"
|
#define SERVICEPREFIX "u"
|
||||||
#define SERVICEPREFIX2 'u'
|
#define SERVICEPREFIX2 'u'
|
||||||
|
|
||||||
|
/* check if an ip address is a private (LAN) address
|
||||||
|
* see https://tools.ietf.org/html/rfc1918 */
|
||||||
|
static int is_rfc1918addr(const char * addr)
|
||||||
|
{
|
||||||
|
/* 192.168.0.0 - 192.168.255.255 (192.168/16 prefix) */
|
||||||
|
if(COMPARE(addr, "192.168."))
|
||||||
|
return 1;
|
||||||
|
/* 10.0.0.0 - 10.255.255.255 (10/8 prefix) */
|
||||||
|
if(COMPARE(addr, "10."))
|
||||||
|
return 1;
|
||||||
|
/* 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) */
|
||||||
|
if(COMPARE(addr, "172.")) {
|
||||||
|
int i = atoi(addr + 4);
|
||||||
|
if((16 <= i) && (i <= 31))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* root description parsing */
|
/* root description parsing */
|
||||||
MINIUPNP_LIBSPEC void parserootdesc(const char * buffer, int bufsize, struct IGDdatas * data)
|
MINIUPNP_LIBSPEC void parserootdesc(const char * buffer, int bufsize, struct IGDdatas * data)
|
||||||
{
|
{
|
||||||
@ -108,6 +128,7 @@ char * simpleUPnPcommand2(int s, const char * url, const char * service,
|
|||||||
int soapbodylen;
|
int soapbodylen;
|
||||||
char * buf;
|
char * buf;
|
||||||
int n;
|
int n;
|
||||||
|
int status_code;
|
||||||
|
|
||||||
*bufsize = 0;
|
*bufsize = 0;
|
||||||
snprintf(soapact, sizeof(soapact), "%s#%s", service, action);
|
snprintf(soapact, sizeof(soapact), "%s#%s", service, action);
|
||||||
@ -211,11 +232,15 @@ char * simpleUPnPcommand2(int s, const char * url, const char * service,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = getHTTPResponse(s, bufsize);
|
buf = getHTTPResponse(s, bufsize, &status_code);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if(*bufsize > 0 && buf)
|
if(*bufsize > 0 && buf)
|
||||||
{
|
{
|
||||||
printf("SOAP Response :\n%.*s\n", *bufsize, buf);
|
printf("HTTP %d SOAP Response :\n%.*s\n", status_code, *bufsize, buf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("HTTP %d, empty SOAP response. size=%d\n", status_code, *bufsize);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
closesocket(s);
|
closesocket(s);
|
||||||
@ -527,7 +552,7 @@ UPNPIGD_IsConnected(struct UPNPUrls * urls, struct IGDdatas * data)
|
|||||||
* 3 = an UPnP device has been found but was not recognized as an IGD
|
* 3 = an UPnP device has been found but was not recognized as an IGD
|
||||||
*
|
*
|
||||||
* In any positive non zero return case, the urls and data structures
|
* In any positive non zero return case, the urls and data structures
|
||||||
* passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
|
* passed as parameters are set. Dont forget to call FreeUPNPUrls(urls) to
|
||||||
* free allocated memory.
|
* free allocated memory.
|
||||||
*/
|
*/
|
||||||
MINIUPNP_LIBSPEC int
|
MINIUPNP_LIBSPEC int
|
||||||
@ -547,6 +572,9 @@ UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|||||||
int state = -1; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */
|
int state = -1; /* state 1 : IGD connected. State 2 : IGD. State 3 : anything */
|
||||||
int n_igd = 0;
|
int n_igd = 0;
|
||||||
char extIpAddr[16];
|
char extIpAddr[16];
|
||||||
|
char myLanAddr[40];
|
||||||
|
int status_code = -1;
|
||||||
|
|
||||||
if(!devlist)
|
if(!devlist)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -569,8 +597,8 @@ UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|||||||
/* we should choose an internet gateway device.
|
/* we should choose an internet gateway device.
|
||||||
* with st == urn:schemas-upnp-org:device:InternetGatewayDevice:1 */
|
* with st == urn:schemas-upnp-org:device:InternetGatewayDevice:1 */
|
||||||
desc[i].xml = miniwget_getaddr(dev->descURL, &(desc[i].size),
|
desc[i].xml = miniwget_getaddr(dev->descURL, &(desc[i].size),
|
||||||
lanaddr, lanaddrlen,
|
myLanAddr, sizeof(myLanAddr),
|
||||||
dev->scope_id);
|
dev->scope_id, &status_code);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if(!desc[i].xml)
|
if(!desc[i].xml)
|
||||||
{
|
{
|
||||||
@ -587,6 +615,8 @@ UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|||||||
{
|
{
|
||||||
desc[i].is_igd = 1;
|
desc[i].is_igd = 1;
|
||||||
n_igd++;
|
n_igd++;
|
||||||
|
if(lanaddr)
|
||||||
|
strncpy(lanaddr, myLanAddr, lanaddrlen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -602,20 +632,25 @@ UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|||||||
parserootdesc(desc[i].xml, desc[i].size, data);
|
parserootdesc(desc[i].xml, desc[i].size, data);
|
||||||
if(desc[i].is_igd || state >= 3 )
|
if(desc[i].is_igd || state >= 3 )
|
||||||
{
|
{
|
||||||
|
int is_connected;
|
||||||
|
|
||||||
GetUPNPUrls(urls, data, dev->descURL, dev->scope_id);
|
GetUPNPUrls(urls, data, dev->descURL, dev->scope_id);
|
||||||
|
|
||||||
/* in state 2 and 3 we dont test if device is connected ! */
|
/* in state 2 and 3 we dont test if device is connected ! */
|
||||||
if(state >= 2)
|
if(state >= 2)
|
||||||
goto free_and_return;
|
goto free_and_return;
|
||||||
|
is_connected = UPNPIGD_IsConnected(urls, data);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("UPNPIGD_IsConnected(%s) = %d\n",
|
printf("UPNPIGD_IsConnected(%s) = %d\n",
|
||||||
urls->controlURL,
|
urls->controlURL, is_connected);
|
||||||
UPNPIGD_IsConnected(urls, data));
|
|
||||||
#endif
|
#endif
|
||||||
/* checks that status is connected AND there is a external IP address assigned */
|
/* checks that status is connected AND there is a external IP address assigned */
|
||||||
if(UPNPIGD_IsConnected(urls, data)
|
if(is_connected &&
|
||||||
&& (UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0))
|
(UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0)) {
|
||||||
|
if(!is_rfc1918addr(extIpAddr) && (extIpAddr[0] != '\0')
|
||||||
|
&& (0 != strcmp(extIpAddr, "0.0.0.0")))
|
||||||
goto free_and_return;
|
goto free_and_return;
|
||||||
|
}
|
||||||
FreeUPNPUrls(urls);
|
FreeUPNPUrls(urls);
|
||||||
if(data->second.servicetype[0] != '\0') {
|
if(data->second.servicetype[0] != '\0') {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -627,14 +662,17 @@ UPNP_GetValidIGD(struct UPNPDev * devlist,
|
|||||||
memcpy(&data->first, &data->second, sizeof(struct IGDdatas_service));
|
memcpy(&data->first, &data->second, sizeof(struct IGDdatas_service));
|
||||||
memcpy(&data->second, &data->tmp, sizeof(struct IGDdatas_service));
|
memcpy(&data->second, &data->tmp, sizeof(struct IGDdatas_service));
|
||||||
GetUPNPUrls(urls, data, dev->descURL, dev->scope_id);
|
GetUPNPUrls(urls, data, dev->descURL, dev->scope_id);
|
||||||
|
is_connected = UPNPIGD_IsConnected(urls, data);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("UPNPIGD_IsConnected(%s) = %d\n",
|
printf("UPNPIGD_IsConnected(%s) = %d\n",
|
||||||
urls->controlURL,
|
urls->controlURL, is_connected);
|
||||||
UPNPIGD_IsConnected(urls, data));
|
|
||||||
#endif
|
#endif
|
||||||
if(UPNPIGD_IsConnected(urls, data)
|
if(is_connected &&
|
||||||
&& (UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0))
|
(UPNP_GetExternalIPAddress(urls->controlURL, data->first.servicetype, extIpAddr) == 0)) {
|
||||||
|
if(!is_rfc1918addr(extIpAddr) && (extIpAddr[0] != '\0')
|
||||||
|
&& (0 != strcmp(extIpAddr, "0.0.0.0")))
|
||||||
goto free_and_return;
|
goto free_and_return;
|
||||||
|
}
|
||||||
FreeUPNPUrls(urls);
|
FreeUPNPUrls(urls);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -668,8 +706,9 @@ UPNP_GetIGDFromUrl(const char * rootdescurl,
|
|||||||
{
|
{
|
||||||
char * descXML;
|
char * descXML;
|
||||||
int descXMLsize = 0;
|
int descXMLsize = 0;
|
||||||
|
|
||||||
descXML = miniwget_getaddr(rootdescurl, &descXMLsize,
|
descXML = miniwget_getaddr(rootdescurl, &descXMLsize,
|
||||||
lanaddr, lanaddrlen, 0);
|
lanaddr, lanaddrlen, 0, NULL);
|
||||||
if(descXML) {
|
if(descXML) {
|
||||||
memset(data, 0, sizeof(struct IGDdatas));
|
memset(data, 0, sizeof(struct IGDdatas));
|
||||||
memset(urls, 0, sizeof(struct UPNPUrls));
|
memset(urls, 0, sizeof(struct UPNPUrls));
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/* $Id: miniupnpc.h,v 1.48 2015/10/08 16:19:40 nanard Exp $ */
|
/* $Id: miniupnpc.h,v 1.50 2016/04/19 21:06:21 nanard Exp $ */
|
||||||
/* Project: miniupnp
|
/* Project: miniupnp
|
||||||
* http://miniupnp.free.fr/
|
* http://miniupnp.free.fr/
|
||||||
* Author: Thomas Bernard
|
* Author: Thomas Bernard
|
||||||
* Copyright (c) 2005-2015 Thomas Bernard
|
* Copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subjects to the conditions detailed
|
* This software is subjects to the conditions detailed
|
||||||
* in the LICENCE file provided within this distribution */
|
* in the LICENCE file provided within this distribution */
|
||||||
#ifndef MINIUPNPC_H_INCLUDED
|
#ifndef MINIUPNPC_H_INCLUDED
|
||||||
@ -19,8 +19,8 @@
|
|||||||
#define UPNPDISCOVER_MEMORY_ERROR (-102)
|
#define UPNPDISCOVER_MEMORY_ERROR (-102)
|
||||||
|
|
||||||
/* versions : */
|
/* versions : */
|
||||||
#define MINIUPNPC_VERSION "1.9.20151026"
|
#define MINIUPNPC_VERSION "2.0"
|
||||||
#define MINIUPNPC_API_VERSION 15
|
#define MINIUPNPC_API_VERSION 16
|
||||||
|
|
||||||
/* Source port:
|
/* Source port:
|
||||||
Using "1" as an alias for 1900 for backwards compatability
|
Using "1" as an alias for 1900 for backwards compatability
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
#ifndef MINIUPNPCSTRINGS_H_INCLUDED
|
|
||||||
#define MINIUPNPCSTRINGS_H_INCLUDED
|
|
||||||
|
|
||||||
#define OS_STRING "${CMAKE_SYSTEM_NAME}"
|
|
||||||
#define MINIUPNPC_VERSION_STRING "${MINIUPNPC_VERSION}"
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* according to "UPnP Device Architecture 1.0" */
|
|
||||||
#define UPNP_VERSION_STRING "UPnP/1.0"
|
|
||||||
#else
|
|
||||||
/* according to "UPnP Device Architecture 1.1" */
|
|
||||||
#define UPNP_VERSION_STRING "UPnP/1.1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,9 +1,10 @@
|
|||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
/* $Id: miniwget.c,v 1.72 2015/10/26 17:05:08 nanard Exp $ */
|
|
||||||
|
/* $Id: miniwget.c,v 1.75 2016/01/24 17:24:36 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Website : http://miniupnp.free.fr/
|
* Website : http://miniupnp.free.fr/
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2005-2015 Thomas Bernard
|
* Copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subject to the conditions detailed in the
|
* This software is subject to the conditions detailed in the
|
||||||
* LICENCE file provided in this distribution. */
|
* LICENCE file provided in this distribution. */
|
||||||
|
|
||||||
@ -49,12 +50,12 @@
|
|||||||
#define MIN(x,y) (((x)<(y))?(x):(y))
|
#define MIN(x,y) (((x)<(y))?(x):(y))
|
||||||
#endif /* MIN */
|
#endif /* MIN */
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define OS_STRING "Win32"
|
#define OS_STRING "Win32"
|
||||||
#define MINIUPNPC_VERSION_STRING "1.9"
|
#define MINIUPNPC_VERSION_STRING "2.0"
|
||||||
#define UPNP_VERSION_STRING "UPnP/1.1"
|
#define UPNP_VERSION_STRING "UPnP/1.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "miniwget.h"
|
#include "miniwget.h"
|
||||||
#include "connecthostport.h"
|
#include "connecthostport.h"
|
||||||
#include "receivedata.h"
|
#include "receivedata.h"
|
||||||
@ -70,7 +71,7 @@
|
|||||||
* to the length parameter.
|
* to the length parameter.
|
||||||
*/
|
*/
|
||||||
void *
|
void *
|
||||||
getHTTPResponse(int s, int * size)
|
getHTTPResponse(int s, int * size, int * status_code)
|
||||||
{
|
{
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
int n;
|
int n;
|
||||||
@ -88,7 +89,10 @@ getHTTPResponse(int s, int * size)
|
|||||||
unsigned int content_buf_used = 0;
|
unsigned int content_buf_used = 0;
|
||||||
char chunksize_buf[32];
|
char chunksize_buf[32];
|
||||||
unsigned int chunksize_buf_index;
|
unsigned int chunksize_buf_index;
|
||||||
|
char * reason_phrase = NULL;
|
||||||
|
int reason_phrase_len = 0;
|
||||||
|
|
||||||
|
if(status_code) *status_code = -1;
|
||||||
header_buf = malloc(header_buf_len);
|
header_buf = malloc(header_buf_len);
|
||||||
if(header_buf == NULL)
|
if(header_buf == NULL)
|
||||||
{
|
{
|
||||||
@ -160,7 +164,7 @@ getHTTPResponse(int s, int * size)
|
|||||||
continue;
|
continue;
|
||||||
/* parse header lines */
|
/* parse header lines */
|
||||||
for(i = 0; i < endofheaders - 1; i++) {
|
for(i = 0; i < endofheaders - 1; i++) {
|
||||||
if(colon <= linestart && header_buf[i]==':')
|
if(linestart > 0 && colon <= linestart && header_buf[i]==':')
|
||||||
{
|
{
|
||||||
colon = i;
|
colon = i;
|
||||||
while(i < (endofheaders-1)
|
while(i < (endofheaders-1)
|
||||||
@ -171,7 +175,29 @@ getHTTPResponse(int s, int * size)
|
|||||||
/* detecting end of line */
|
/* detecting end of line */
|
||||||
else if(header_buf[i]=='\r' || header_buf[i]=='\n')
|
else if(header_buf[i]=='\r' || header_buf[i]=='\n')
|
||||||
{
|
{
|
||||||
if(colon > linestart && valuestart > colon)
|
if(linestart == 0 && status_code)
|
||||||
|
{
|
||||||
|
/* Status line
|
||||||
|
* HTTP-Version SP Status-Code SP Reason-Phrase CRLF */
|
||||||
|
int sp;
|
||||||
|
for(sp = 0; sp < i; sp++)
|
||||||
|
if(header_buf[sp] == ' ')
|
||||||
|
{
|
||||||
|
if(*status_code < 0)
|
||||||
|
*status_code = atoi(header_buf + sp + 1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reason_phrase = header_buf + sp + 1;
|
||||||
|
reason_phrase_len = i - sp - 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("HTTP status code = %d, Reason phrase = %.*s\n",
|
||||||
|
*status_code, reason_phrase_len, reason_phrase);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else if(colon > linestart && valuestart > colon)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("header='%.*s', value='%.*s'\n",
|
printf("header='%.*s', value='%.*s'\n",
|
||||||
@ -342,7 +368,8 @@ static void *
|
|||||||
miniwget3(const char * host,
|
miniwget3(const char * host,
|
||||||
unsigned short port, const char * path,
|
unsigned short port, const char * path,
|
||||||
int * size, char * addr_str, int addr_str_len,
|
int * size, char * addr_str, int addr_str_len,
|
||||||
const char * httpversion, unsigned int scope_id)
|
const char * httpversion, unsigned int scope_id,
|
||||||
|
int * status_code)
|
||||||
{
|
{
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
int s;
|
int s;
|
||||||
@ -440,7 +467,7 @@ miniwget3(const char * host,
|
|||||||
sent += n;
|
sent += n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
content = getHTTPResponse(s, size);
|
content = getHTTPResponse(s, size, status_code);
|
||||||
closesocket(s);
|
closesocket(s);
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
@ -451,16 +478,18 @@ static void *
|
|||||||
miniwget2(const char * host,
|
miniwget2(const char * host,
|
||||||
unsigned short port, const char * path,
|
unsigned short port, const char * path,
|
||||||
int * size, char * addr_str, int addr_str_len,
|
int * size, char * addr_str, int addr_str_len,
|
||||||
unsigned int scope_id)
|
unsigned int scope_id, int * status_code)
|
||||||
{
|
{
|
||||||
char * respbuffer;
|
char * respbuffer;
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
respbuffer = miniwget3(host, port, path, size,
|
respbuffer = miniwget3(host, port, path, size,
|
||||||
addr_str, addr_str_len, "1.1", scope_id);
|
addr_str, addr_str_len, "1.1",
|
||||||
|
scope_id, status_code);
|
||||||
#else
|
#else
|
||||||
respbuffer = miniwget3(host, port, path, size,
|
respbuffer = miniwget3(host, port, path, size,
|
||||||
addr_str, addr_str_len, "1.0", scope_id);
|
addr_str, addr_str_len, "1.0",
|
||||||
|
scope_id, status_code);
|
||||||
if (*size == 0)
|
if (*size == 0)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -468,7 +497,8 @@ miniwget2(const char * host,
|
|||||||
#endif
|
#endif
|
||||||
free(respbuffer);
|
free(respbuffer);
|
||||||
respbuffer = miniwget3(host, port, path, size,
|
respbuffer = miniwget3(host, port, path, size,
|
||||||
addr_str, addr_str_len, "1.1", scope_id);
|
addr_str, addr_str_len, "1.1",
|
||||||
|
scope_id, status_code);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return respbuffer;
|
return respbuffer;
|
||||||
@ -593,7 +623,8 @@ parseURL(const char * url,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
miniwget(const char * url, int * size, unsigned int scope_id)
|
miniwget(const char * url, int * size,
|
||||||
|
unsigned int scope_id, int * status_code)
|
||||||
{
|
{
|
||||||
unsigned short port;
|
unsigned short port;
|
||||||
char * path;
|
char * path;
|
||||||
@ -606,12 +637,13 @@ miniwget(const char * url, int * size, unsigned int scope_id)
|
|||||||
printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n",
|
printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n",
|
||||||
hostname, port, path, scope_id);
|
hostname, port, path, scope_id);
|
||||||
#endif
|
#endif
|
||||||
return miniwget2(hostname, port, path, size, 0, 0, scope_id);
|
return miniwget2(hostname, port, path, size, 0, 0, scope_id, status_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
miniwget_getaddr(const char * url, int * size,
|
miniwget_getaddr(const char * url, int * size,
|
||||||
char * addr, int addrlen, unsigned int scope_id)
|
char * addr, int addrlen, unsigned int scope_id,
|
||||||
|
int * status_code)
|
||||||
{
|
{
|
||||||
unsigned short port;
|
unsigned short port;
|
||||||
char * path;
|
char * path;
|
||||||
@ -626,5 +658,6 @@ miniwget_getaddr(const char * url, int * size,
|
|||||||
printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n",
|
printf("parsed url : hostname='%s' port=%hu path='%s' scope_id=%u\n",
|
||||||
hostname, port, path, scope_id);
|
hostname, port, path, scope_id);
|
||||||
#endif
|
#endif
|
||||||
return miniwget2(hostname, port, path, size, addr, addrlen, scope_id);
|
return miniwget2(hostname, port, path, size, addr, addrlen, scope_id, status_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* $Id: miniwget.h,v 1.10 2015/07/21 13:16:55 nanard Exp $ */
|
/* $Id: miniwget.h,v 1.12 2016/01/24 17:24:36 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2005-2015 Thomas Bernard
|
* Copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subject to the conditions detailed in the
|
* This software is subject to the conditions detailed in the
|
||||||
* LICENCE file provided in this distribution.
|
* LICENCE file provided in this distribution.
|
||||||
* */
|
* */
|
||||||
@ -14,11 +14,11 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC void * getHTTPResponse(int s, int * size);
|
MINIUPNP_LIBSPEC void * getHTTPResponse(int s, int * size, int * status_code);
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC void * miniwget(const char *, int *, unsigned int);
|
MINIUPNP_LIBSPEC void * miniwget(const char *, int *, unsigned int, int *);
|
||||||
|
|
||||||
MINIUPNP_LIBSPEC void * miniwget_getaddr(const char *, int *, char *, int, unsigned int);
|
MINIUPNP_LIBSPEC void * miniwget_getaddr(const char *, int *, char *, int, unsigned int, int *);
|
||||||
|
|
||||||
int parseURL(const char *, char *, unsigned short *, char * *, unsigned int *);
|
int parseURL(const char *, char *, unsigned short *, char * *, unsigned int *);
|
||||||
|
|
||||||
|
@ -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
|
|
@ -1,283 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9,00"
|
|
||||||
Name="miniupnpc"
|
|
||||||
ProjectGUID="{D28CE435-CB33-4BAE-8A52-C6EF915956F5}"
|
|
||||||
RootNamespace="miniupnpc"
|
|
||||||
Keyword="Win32Proj"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;MINIUPNP_STATICLIB;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="1"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;MINIUPNP_STATICLIB"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers sources"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\connecthostport.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\igd_desc_parse.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minisoap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minissdpc.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniupnpc.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniwget.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minixml.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\portlistingparse.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\receivedata.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpcommands.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpdev.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnperrors.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpreplyparse.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers d'en-tête"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\connecthostport.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\declspec.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\igd_desc_parse.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minisoap.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minissdpc.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniupnpc.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniupnpcstrings.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniupnpctypes.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\miniwget.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\minixml.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\portlistingparse.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\receivedata.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpcommands.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpdev.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnperrors.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpreplyparse.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers de ressources"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
@ -1,195 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9,00"
|
|
||||||
Name="upnpc-static"
|
|
||||||
ProjectGUID="{469E1CF6-08A2-4B7B-A2AA-5BDB089857C1}"
|
|
||||||
RootNamespace="upnpcstatic"
|
|
||||||
Keyword="Win32Proj"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
PreprocessorDefinitions="_DEBUG;_CONSOLE;MINIUPNP_STATICLIB;DEBUG;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="ws2_32.lib IPHlpApi.Lib Debug\miniupnpc.lib"
|
|
||||||
LinkIncremental="2"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
SubSystem="1"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="1"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
PreprocessorDefinitions="NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;MINIUPNP_STATICLIB"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="ws2_32.lib IPHlpApi.Lib Release\miniupnpc.lib"
|
|
||||||
LinkIncremental="1"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
SubSystem="1"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers sources"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\upnpc.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers d'en-tête"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Fichiers de ressources"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: receivedata.c,v 1.6 2014/11/13 13:51:52 nanard Exp $ */
|
/* $Id: receivedata.c,v 1.7 2015/11/09 21:51:41 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Website : http://miniupnp.free.fr/
|
* Website : http://miniupnp.free.fr/
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
@ -40,7 +40,7 @@ receivedata(int socket,
|
|||||||
char * data, int length,
|
char * data, int length,
|
||||||
int timeout, unsigned int * scope_id)
|
int timeout, unsigned int * scope_id)
|
||||||
{
|
{
|
||||||
#if MINIUPNPC_GET_SRC_ADDR
|
#ifdef MINIUPNPC_GET_SRC_ADDR
|
||||||
struct sockaddr_storage src_addr;
|
struct sockaddr_storage src_addr;
|
||||||
socklen_t src_addr_len = sizeof(src_addr);
|
socklen_t src_addr_len = sizeof(src_addr);
|
||||||
#endif /* MINIUPNPC_GET_SRC_ADDR */
|
#endif /* MINIUPNPC_GET_SRC_ADDR */
|
||||||
@ -80,7 +80,7 @@ receivedata(int socket,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */
|
#endif /* !defined(_WIN32) && !defined(__amigaos__) && !defined(__amigaos4__) */
|
||||||
#if MINIUPNPC_GET_SRC_ADDR
|
#ifdef MINIUPNPC_GET_SRC_ADDR
|
||||||
memset(&src_addr, 0, sizeof(src_addr));
|
memset(&src_addr, 0, sizeof(src_addr));
|
||||||
n = recvfrom(socket, data, length, 0,
|
n = recvfrom(socket, data, length, 0,
|
||||||
(struct sockaddr *)&src_addr, &src_addr_len);
|
(struct sockaddr *)&src_addr, &src_addr_len);
|
||||||
@ -90,7 +90,7 @@ receivedata(int socket,
|
|||||||
if(n<0) {
|
if(n<0) {
|
||||||
PRINT_SOCKET_ERROR("recv");
|
PRINT_SOCKET_ERROR("recv");
|
||||||
}
|
}
|
||||||
#if MINIUPNPC_GET_SRC_ADDR
|
#ifdef MINIUPNPC_GET_SRC_ADDR
|
||||||
if (src_addr.ss_family == AF_INET6) {
|
if (src_addr.ss_family == AF_INET6) {
|
||||||
const struct sockaddr_in6 * src_addr6 = (struct sockaddr_in6 *)&src_addr;
|
const struct sockaddr_in6 * src_addr6 = (struct sockaddr_in6 *)&src_addr;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* $Id: testminiwget.c,v 1.4 2012/06/23 22:35:59 nanard Exp $ */
|
/* $Id: testminiwget.c,v 1.5 2016/01/24 17:24:36 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2005-2012 Thomas Bernard
|
* Copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subject to the conditions detailed in the
|
* This software is subject to the conditions detailed in the
|
||||||
* LICENCE file provided in this distribution.
|
* LICENCE file provided in this distribution.
|
||||||
* */
|
* */
|
||||||
@ -20,15 +20,17 @@ int main(int argc, char * * argv)
|
|||||||
int size, writtensize;
|
int size, writtensize;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char addr[64];
|
char addr[64];
|
||||||
|
int status_code = -1;
|
||||||
|
|
||||||
if(argc < 3) {
|
if(argc < 3) {
|
||||||
fprintf(stderr, "Usage:\t%s url file\n", argv[0]);
|
fprintf(stderr, "Usage:\t%s url file\n", argv[0]);
|
||||||
fprintf(stderr, "Example:\t%s http://www.google.com/ out.html\n", argv[0]);
|
fprintf(stderr, "Example:\t%s http://www.google.com/ out.html\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
data = miniwget_getaddr(argv[1], &size, addr, sizeof(addr), 0);
|
data = miniwget_getaddr(argv[1], &size, addr, sizeof(addr), 0, &status_code);
|
||||||
if(!data) {
|
if(!data || (status_code != 200)) {
|
||||||
fprintf(stderr, "Error fetching %s\n", argv[1]);
|
if(data) free(data);
|
||||||
|
fprintf(stderr, "Error %d fetching %s\n", status_code, argv[1]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
printf("local address : %s\n", addr);
|
printf("local address : %s\n", addr);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* $Id: upnpc.c,v 1.112 2015/10/08 16:15:48 nanard Exp $ */
|
/* $Id: upnpc.c,v 1.114 2016/01/22 15:04:23 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2005-2015 Thomas Bernard
|
* Copyright (c) 2005-2016 Thomas Bernard
|
||||||
* This software is subject to the conditions detailed in the
|
* This software is subject to the conditions detailed in the
|
||||||
* LICENCE file provided in this distribution. */
|
* LICENCE file provided in this distribution. */
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ static void DisplayInfos(struct UPNPUrls * urls,
|
|||||||
char connectionType[64];
|
char connectionType[64];
|
||||||
char status[64];
|
char status[64];
|
||||||
char lastconnerr[64];
|
char lastconnerr[64];
|
||||||
unsigned int uptime;
|
unsigned int uptime = 0;
|
||||||
unsigned int brUp, brDown;
|
unsigned int brUp, brDown;
|
||||||
time_t timenow, timestarted;
|
time_t timenow, timestarted;
|
||||||
int r;
|
int r;
|
||||||
@ -82,9 +82,11 @@ static void DisplayInfos(struct UPNPUrls * urls,
|
|||||||
else
|
else
|
||||||
printf("Status : %s, uptime=%us, LastConnectionError : %s\n",
|
printf("Status : %s, uptime=%us, LastConnectionError : %s\n",
|
||||||
status, uptime, lastconnerr);
|
status, uptime, lastconnerr);
|
||||||
|
if(uptime > 0) {
|
||||||
timenow = time(NULL);
|
timenow = time(NULL);
|
||||||
timestarted = timenow - uptime;
|
timestarted = timenow - uptime;
|
||||||
printf(" Time started : %s", ctime(×tarted));
|
printf(" Time started : %s", ctime(×tarted));
|
||||||
|
}
|
||||||
if(UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, data->CIF.servicetype,
|
if(UPNP_GetLinkLayerMaxBitRates(urls->controlURL_CIF, data->CIF.servicetype,
|
||||||
&brDown, &brUp) != UPNPCOMMAND_SUCCESS) {
|
&brDown, &brUp) != UPNPCOMMAND_SUCCESS) {
|
||||||
printf("GetLinkLayerMaxBitRates failed.\n");
|
printf("GetLinkLayerMaxBitRates failed.\n");
|
||||||
@ -538,7 +540,7 @@ int main(int argc, char ** argv)
|
|||||||
char ** commandargv = 0;
|
char ** commandargv = 0;
|
||||||
int commandargc = 0;
|
int commandargc = 0;
|
||||||
struct UPNPDev * devlist = 0;
|
struct UPNPDev * devlist = 0;
|
||||||
char lanaddr[64]; /* my ip address on the LAN */
|
char lanaddr[64] = "unset"; /* my ip address on the LAN */
|
||||||
int i;
|
int i;
|
||||||
const char * rootdescurl = 0;
|
const char * rootdescurl = 0;
|
||||||
const char * multicastif = 0;
|
const char * multicastif = 0;
|
||||||
@ -560,7 +562,7 @@ int main(int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
printf("upnpc : miniupnpc library test client, version %s.\n", MINIUPNPC_VERSION_STRING);
|
printf("upnpc : miniupnpc library test client, version %s.\n", MINIUPNPC_VERSION_STRING);
|
||||||
printf(" (c) 2005-2015 Thomas Bernard.\n");
|
printf(" (c) 2005-2016 Thomas Bernard.\n");
|
||||||
printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n"
|
printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n"
|
||||||
"for more information.\n");
|
"for more information.\n");
|
||||||
/* command line processing */
|
/* command line processing */
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
/* $Id: upnpcommands.c,v 1.46 2015/07/15 12:19:00 nanard Exp $ */
|
|
||||||
|
/* $Id: upnpcommands.c,v 1.47 2016/03/07 12:26:48 nanard Exp $ */
|
||||||
/* Project : miniupnp
|
/* Project : miniupnp
|
||||||
* Author : Thomas Bernard
|
* Author : Thomas Bernard
|
||||||
* Copyright (c) 2005-2015 Thomas Bernard
|
* Copyright (c) 2005-2015 Thomas Bernard
|
||||||
@ -617,14 +618,14 @@ UPNP_GetGenericPortMappingEntry(const char * controlURL,
|
|||||||
protocol[3] = '\0';
|
protocol[3] = '\0';
|
||||||
}
|
}
|
||||||
p = GetValueFromNameValueList(&pdata, "NewInternalClient");
|
p = GetValueFromNameValueList(&pdata, "NewInternalClient");
|
||||||
if(p && intClient)
|
if(p)
|
||||||
{
|
{
|
||||||
strncpy(intClient, p, 16);
|
strncpy(intClient, p, 16);
|
||||||
intClient[15] = '\0';
|
intClient[15] = '\0';
|
||||||
r = 0;
|
r = 0;
|
||||||
}
|
}
|
||||||
p = GetValueFromNameValueList(&pdata, "NewInternalPort");
|
p = GetValueFromNameValueList(&pdata, "NewInternalPort");
|
||||||
if(p && intPort)
|
if(p)
|
||||||
{
|
{
|
||||||
strncpy(intPort, p, 6);
|
strncpy(intPort, p, 6);
|
||||||
intPort[5] = '\0';
|
intPort[5] = '\0';
|
||||||
|
@ -58,7 +58,7 @@ ifeq ($(ZT_OFFICIAL_RELEASE),1)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ZT_USE_MINIUPNPC),1)
|
ifeq ($(ZT_USE_MINIUPNPC),1)
|
||||||
DEFS+=-DZT_USE_MINIUPNPC -DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"1.9\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
|
DEFS+=-DZT_USE_MINIUPNPC -DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
|
||||||
OBJS+=osdep/PortMapper.o
|
OBJS+=osdep/PortMapper.o
|
||||||
|
|
||||||
#ifeq ($(wildcard /usr/include/miniupnpc/miniupnpc.h),)
|
#ifeq ($(wildcard /usr/include/miniupnpc/miniupnpc.h),)
|
||||||
|
@ -42,7 +42,7 @@ ifeq ($(ZT_AUTO_UPDATE),1)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ZT_USE_MINIUPNPC),1)
|
ifeq ($(ZT_USE_MINIUPNPC),1)
|
||||||
DEFS+=-DMACOSX -DZT_USE_MINIUPNPC -DMINIUPNP_STATICLIB -D_DARWIN_C_SOURCE -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -DOS_STRING=\"Darwin/15.0.0\" -DMINIUPNPC_VERSION_STRING=\"1.9\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
|
DEFS+=-DMACOSX -DZT_USE_MINIUPNPC -DMINIUPNP_STATICLIB -D_DARWIN_C_SOURCE -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -DOS_STRING=\"Darwin/15.0.0\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
|
||||||
OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o osdep/PortMapper.o
|
OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o osdep/PortMapper.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user