mupnp 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +13 -0
- data/Rakefile +80 -0
- data/ext/Changelog.txt +188 -0
- data/ext/LICENSE +27 -0
- data/ext/README +53 -0
- data/ext/declspec.h +15 -0
- data/ext/extconf.rb +5 -0
- data/ext/igd_desc_parse.c +115 -0
- data/ext/igd_desc_parse.h +38 -0
- data/ext/minisoap.c +112 -0
- data/ext/minisoap.h +15 -0
- data/ext/minissdpc.c +107 -0
- data/ext/minissdpc.h +15 -0
- data/ext/miniupnpc.c +751 -0
- data/ext/miniupnpc.h +108 -0
- data/ext/miniwget.c +219 -0
- data/ext/miniwget.h +28 -0
- data/ext/minixml.c +191 -0
- data/ext/minixml.h +37 -0
- data/ext/upnp.i +13 -0
- data/ext/upnp_wrap.c +5207 -0
- data/ext/upnpcommands.c +569 -0
- data/ext/upnpcommands.h +179 -0
- data/ext/upnperrors.c +55 -0
- data/ext/upnperrors.h +16 -0
- data/ext/upnpreplyparse.c +127 -0
- data/ext/upnpreplyparse.h +62 -0
- data/lib/UPnP.rb +400 -0
- data/test/UPnP/tc_upnp.rb +20 -0
- metadata +83 -0
data/README
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
= UPnP
|
2
|
+
|
3
|
+
The gem is based on the work of Thomas Bernard, miniupnp library
|
4
|
+
(http://miniupnp.free.fr/). The source code and his license can be
|
5
|
+
found in the ext directory.
|
6
|
+
The windows version will be made as long as
|
7
|
+
i have some volounteer that can provide me the precompiled code for
|
8
|
+
windows. The library is in the module called MiniUPnP, in it you can
|
9
|
+
find all the library functions.
|
10
|
+
The module UPnP is a wrapper that simplify the access to the
|
11
|
+
underlaying library.
|
12
|
+
The interface was automatically built with swig (http://www.swig.org/),
|
13
|
+
the interface file is upnp.i
|
data/Rakefile
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
Gem::manage_gems
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/rdoctask'
|
7
|
+
|
8
|
+
spec = Gem::Specification.new do |s|
|
9
|
+
s.name = "mupnp"
|
10
|
+
s.version = "0.1"
|
11
|
+
s.author = "Dario Meloni"
|
12
|
+
s.email = "mellon85@gmail.com"
|
13
|
+
s.homepage = "http://rubyforge.org/projects/mupnp/"
|
14
|
+
s.rubyforge_project = "mupnp"
|
15
|
+
s.summary = "UPnP Implementation using the Miniupnpc library"
|
16
|
+
s.files = FileList['lib/**/*.rb', 'test/**/*.rb', 'Rakefile',
|
17
|
+
'ext/*.[chi]'].to_a
|
18
|
+
s.extra_rdoc_files = FileList['README','ext/README','ext/LICENSE','ext/Changelog.txt'].to_a
|
19
|
+
s.require_path = ["lib", "ext"]
|
20
|
+
s.test_files = Dir.glob('test/**/tc_*.rb')
|
21
|
+
s.has_rdoc = true
|
22
|
+
s.extensions << "ext/extconf.rb"
|
23
|
+
s.require_path = 'lib'
|
24
|
+
|
25
|
+
if RUBY_PLATFORM =~ /mswin/
|
26
|
+
s.files += ["ext/miniupnp.so"]
|
27
|
+
s.extensions.clear
|
28
|
+
s.platform = Gem::Platform::WIN32
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Rake::GemPackageTask.new(spec) do |p|
|
33
|
+
p.gem_spec = spec
|
34
|
+
unless RUBY_PLATFORM =~ /mswin/
|
35
|
+
p.need_tar = true
|
36
|
+
p.need_zip = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Rake::RDocTask.new do |rd|
|
41
|
+
rd.rdoc_dir = "rdoc"
|
42
|
+
rd.rdoc_files.include("./lib/**/*.rb")
|
43
|
+
rd.rdoc_files.include("README")
|
44
|
+
rd.options = %w(-ap)
|
45
|
+
end
|
46
|
+
|
47
|
+
task :distclean => [:clobber_package, :clobber_rdoc]
|
48
|
+
task :dist => [:repackage, :gem, :rdoc]
|
49
|
+
task :clean => [:distclean, :extclean]
|
50
|
+
task :default => [:test, :dist ]
|
51
|
+
|
52
|
+
desc "Build the extension"
|
53
|
+
task :ext => ["ext/Makefile"] do
|
54
|
+
cd "ext"
|
55
|
+
if (/mswin/ =~ RUBY_PLATFORM) and ENV['make'].nil?
|
56
|
+
begin
|
57
|
+
sh "nmake"
|
58
|
+
rescue Exception => e
|
59
|
+
puts "Windows builds is absolutely experimental... all on your back"
|
60
|
+
raise e
|
61
|
+
end
|
62
|
+
else
|
63
|
+
sh "make"
|
64
|
+
end
|
65
|
+
cd ".."
|
66
|
+
end
|
67
|
+
|
68
|
+
desc "Build makefile"
|
69
|
+
file "ext/Makefile" do
|
70
|
+
cd "ext"
|
71
|
+
`ruby extconf.rb`
|
72
|
+
cd ".."
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Clean extension"
|
76
|
+
task :extclean do
|
77
|
+
cd 'ext'
|
78
|
+
rm_f FileList["*.o","*.so","*.bundle","*.dll","Makefile"]
|
79
|
+
cd '..'
|
80
|
+
end
|
data/ext/Changelog.txt
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
$Id: Changelog.txt,v 1.60 2008/02/21 13:05:27 nanard Exp $
|
2
|
+
miniUPnP client Changelog.
|
3
|
+
|
4
|
+
2008/02/21:
|
5
|
+
put some #ifdef DEBUG around DisplayNameValueList()
|
6
|
+
|
7
|
+
2008/02/18:
|
8
|
+
Improved error reporting in upnpcommands.c
|
9
|
+
UPNP_GetStatusInfo() returns LastConnectionError
|
10
|
+
|
11
|
+
2008/02/16:
|
12
|
+
better error handling in minisoap.c
|
13
|
+
improving display of "valid IGD found" in upnpc.c
|
14
|
+
|
15
|
+
2008/02/03:
|
16
|
+
Fixing UPNP_GetValidIGD()
|
17
|
+
improved make install :)
|
18
|
+
|
19
|
+
2007/12/22:
|
20
|
+
Adding upnperrors.c/h to provide a strupnperror() function
|
21
|
+
used to translate UPnP error codes to string.
|
22
|
+
|
23
|
+
2007/12/19:
|
24
|
+
Fixing getDevicesFromMiniSSDPD()
|
25
|
+
improved error reporting of UPnP functions
|
26
|
+
|
27
|
+
2007/12/18:
|
28
|
+
It is now possible to specify a different location for MiniSSDPd socket.
|
29
|
+
working with MiniSSDPd is now more efficient.
|
30
|
+
python module improved.
|
31
|
+
|
32
|
+
2007/12/16:
|
33
|
+
improving error reporting
|
34
|
+
|
35
|
+
2007/12/13:
|
36
|
+
Try to improve compatibility by using HTTP/1.0 instead of 1.1 and
|
37
|
+
XML a bit different for SOAP.
|
38
|
+
|
39
|
+
2007/11/25:
|
40
|
+
fixed select() call for linux
|
41
|
+
|
42
|
+
2007/11/15:
|
43
|
+
Added -fPIC to CFLAG for better shared library code.
|
44
|
+
|
45
|
+
2007/11/02:
|
46
|
+
Fixed a potential socket leak in miniwget2()
|
47
|
+
|
48
|
+
2007/10/16:
|
49
|
+
added a parameter to upnpDiscover() in order to allow the use of another
|
50
|
+
interface than the default multicast interface.
|
51
|
+
|
52
|
+
2007/10/12:
|
53
|
+
Fixed the creation of symbolic link in Makefile
|
54
|
+
|
55
|
+
2007/10/08:
|
56
|
+
Added man page
|
57
|
+
|
58
|
+
2007/10/02:
|
59
|
+
fixed memory bug in GetUPNPUrls()
|
60
|
+
|
61
|
+
2007/10/01:
|
62
|
+
fixes in the Makefile
|
63
|
+
Added UPNP_GetIGDFromUrl() and adapted the sample program accordingly.
|
64
|
+
Added SONAME in the shared library to please debian :)
|
65
|
+
fixed MS Windows compilation (minissdpd is not available under MS Windows).
|
66
|
+
|
67
|
+
2007/09/25:
|
68
|
+
small change to Makefile to be able to install in a different location
|
69
|
+
(default is /usr)
|
70
|
+
|
71
|
+
2007/09/24:
|
72
|
+
now compiling both shared and static library
|
73
|
+
|
74
|
+
2007/09/19:
|
75
|
+
Cosmetic changes on upnpc.c
|
76
|
+
|
77
|
+
2007/09/02:
|
78
|
+
adapting to new miniSSDPd (release version ?)
|
79
|
+
|
80
|
+
2007/08/31:
|
81
|
+
Usage of miniSSDPd to skip discovery process.
|
82
|
+
|
83
|
+
2007/08/27:
|
84
|
+
fixed python module to allow compilation with Python older than Python 2.4
|
85
|
+
|
86
|
+
2007/06/12:
|
87
|
+
Added a python module.
|
88
|
+
|
89
|
+
2007/05/19:
|
90
|
+
Fixed compilation under MinGW
|
91
|
+
|
92
|
+
2007/05/15:
|
93
|
+
fixed a memory leak in AddPortMapping()
|
94
|
+
Added testupnpreplyparse executable to check the parsing of
|
95
|
+
upnp soap messages
|
96
|
+
minixml now ignore namespace prefixes.
|
97
|
+
|
98
|
+
2007/04/26:
|
99
|
+
upnpc now displays external ip address with -s or -l
|
100
|
+
|
101
|
+
2007/04/11:
|
102
|
+
changed MINIUPNPC_URL_MAXSIZE to 128 to accomodate the "BT Voyager 210"
|
103
|
+
|
104
|
+
2007/03/19:
|
105
|
+
cleanup in miniwget.c
|
106
|
+
|
107
|
+
2007/03/01:
|
108
|
+
Small typo fix...
|
109
|
+
|
110
|
+
2007/01/30:
|
111
|
+
Now parsing the HTTP header from SOAP responses in order to
|
112
|
+
get content-length value.
|
113
|
+
|
114
|
+
2007/01/29:
|
115
|
+
Fixed the Soap Query to speedup the HTTP request.
|
116
|
+
added some Win32 DLL stuff...
|
117
|
+
|
118
|
+
2007/01/27:
|
119
|
+
Fixed some WIN32 compatibility issues
|
120
|
+
|
121
|
+
2006/12/14:
|
122
|
+
Added UPNPIGD_IsConnected() function in miniupnp.c/.h
|
123
|
+
Added UPNP_GetValidIGD() in miniupnp.c/.h
|
124
|
+
cleaned upnpc.c main(). now using UPNP_GetValidIGD()
|
125
|
+
|
126
|
+
2006/12/07:
|
127
|
+
Version 1.0-RC1 released
|
128
|
+
|
129
|
+
2006/12/03:
|
130
|
+
Minor changes to compile under SunOS/Solaris
|
131
|
+
|
132
|
+
2006/11/30:
|
133
|
+
made a minixml parser validator program
|
134
|
+
updated minixml to handle attributes correctly
|
135
|
+
|
136
|
+
2006/11/22:
|
137
|
+
Added a -r option to the upnpc sample thanks to Alexander Hubmann.
|
138
|
+
|
139
|
+
2006/11/19:
|
140
|
+
Cleanup code to make it more ANSI C compliant
|
141
|
+
|
142
|
+
2006/11/10:
|
143
|
+
detect and display local lan address.
|
144
|
+
|
145
|
+
2006/11/04:
|
146
|
+
Packets and Bytes Sent/Received are now unsigned int.
|
147
|
+
|
148
|
+
2006/11/01:
|
149
|
+
Bug fix thanks to Giuseppe D'Angelo
|
150
|
+
|
151
|
+
2006/10/31:
|
152
|
+
C++ compatibility for .h files.
|
153
|
+
Added a way to get ip Address on the LAN used to reach the IGD.
|
154
|
+
|
155
|
+
2006/10/25:
|
156
|
+
Added M-SEARCH to the services in the discovery process.
|
157
|
+
|
158
|
+
2006/10/22:
|
159
|
+
updated the Makefile to use makedepend, added a "make install"
|
160
|
+
update Makefile
|
161
|
+
|
162
|
+
2006/10/20:
|
163
|
+
fixing the description url parsing thanks to patch sent by
|
164
|
+
Wayne Dawe.
|
165
|
+
Fixed/translated some comments.
|
166
|
+
Implemented a better discover process, first looking
|
167
|
+
for IGD then for root devices (as some devices only reply to
|
168
|
+
M-SEARCH for root devices).
|
169
|
+
|
170
|
+
2006/09/02:
|
171
|
+
added freeUPNPDevlist() function.
|
172
|
+
|
173
|
+
2006/08/04:
|
174
|
+
More command line arguments checking
|
175
|
+
|
176
|
+
2006/08/01:
|
177
|
+
Added the .bat file to compile under Win32 with minGW32
|
178
|
+
|
179
|
+
2006/07/31:
|
180
|
+
Fixed the rootdesc parser (igd_desc_parse.c)
|
181
|
+
|
182
|
+
2006/07/20:
|
183
|
+
parseMSEARCHReply() is now returning the ST: line as well
|
184
|
+
starting changes to detect several UPnP devices on the network
|
185
|
+
|
186
|
+
2006/07/19:
|
187
|
+
using GetCommonLinkProperties to get down/upload bitrate
|
188
|
+
|
data/ext/LICENSE
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
Copyright (c) 2005-2007, Thomas BERNARD
|
3
|
+
All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
* Redistributions of source code must retain the above copyright notice,
|
9
|
+
this list of conditions and the following disclaimer.
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
12
|
+
and/or other materials provided with the distribution.
|
13
|
+
* The name of the author may not be used to endorse or promote products
|
14
|
+
derived from this software without specific prior written permission.
|
15
|
+
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
17
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
18
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
19
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
20
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
21
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
22
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
23
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
24
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
25
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
26
|
+
POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
|
data/ext/README
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
|
2
|
+
Project: miniupnp
|
3
|
+
Project web page: http://miniupnp.free.fr/
|
4
|
+
Author: Thomas Bernard
|
5
|
+
Copyright (c) 2005-2007 Thomas Bernard
|
6
|
+
This software is subject to the conditions detailed in the
|
7
|
+
LICENCE file provided within this distribution.
|
8
|
+
|
9
|
+
For the comfort of Win32 users, bsdqueue.h is included in the distribution.
|
10
|
+
Its licence is included in the header of the file.
|
11
|
+
bsdqueue.h is a copy of the sys/queue.h of an OpenBSD system.
|
12
|
+
|
13
|
+
* miniupnp Client *
|
14
|
+
|
15
|
+
To compile, simply run 'gmake' (could be 'make').
|
16
|
+
Under win32, to compile with MinGW, type "mingw32make.bat".
|
17
|
+
The compilation is known to work under linux, FreeBSD,
|
18
|
+
OpenBSD, MacOS X and cygwin.
|
19
|
+
To install the library and headers on the system use :
|
20
|
+
> su
|
21
|
+
> make install
|
22
|
+
> exit
|
23
|
+
|
24
|
+
alternatively, to install in a specific location, use :
|
25
|
+
> INSTALLPREFIX=/usr/local make install
|
26
|
+
|
27
|
+
upnpc.c is a sample client using the libminiupnpc.
|
28
|
+
To use the libminiupnpc in your application, link it with
|
29
|
+
libminiupnpc.a and use the following functions found in miniupnpc.h,
|
30
|
+
upnpcommands.h and miniwget.h :
|
31
|
+
- upnpDiscover()
|
32
|
+
- miniwget()
|
33
|
+
- parserootdesc()
|
34
|
+
- GetUPNPUrls()
|
35
|
+
- UPNP_* (calling UPNP methods)
|
36
|
+
|
37
|
+
Note : use #include <miniupnpc/miniupnpc.h> etc... for the includes
|
38
|
+
and -lminiupnpc for the link
|
39
|
+
|
40
|
+
* Python module *
|
41
|
+
|
42
|
+
you can build a python module with 'make pythonmodule'
|
43
|
+
and install it with 'make installpythonmodule'.
|
44
|
+
setup.py (and setpmingw32.py) are included in the distribution.
|
45
|
+
|
46
|
+
|
47
|
+
Feel free to contact me if you have any problem :
|
48
|
+
e-mail : miniupnp@free.fr
|
49
|
+
|
50
|
+
If you are using libminiupnpc in your application, please
|
51
|
+
send me an email !
|
52
|
+
|
53
|
+
|
data/ext/declspec.h
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#ifndef __DECLSPEC_H__
|
2
|
+
#define __DECLSPEC_H__
|
3
|
+
|
4
|
+
#if defined(WIN32) && !defined(STATICLIB)
|
5
|
+
#ifdef MINIUPNP_EXPORTS
|
6
|
+
#define LIBSPEC __declspec(dllexport)
|
7
|
+
#else
|
8
|
+
#define LIBSPEC __declspec(dllimport)
|
9
|
+
#endif
|
10
|
+
#else
|
11
|
+
#define LIBSPEC
|
12
|
+
#endif
|
13
|
+
|
14
|
+
#endif
|
15
|
+
|
data/ext/extconf.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
/* $Id: igd_desc_parse.c,v 1.7 2006/11/19 22:32:33 nanard Exp $ */
|
2
|
+
/* Project : miniupnp
|
3
|
+
* http://miniupnp.free.fr/
|
4
|
+
* Author : Thomas Bernard
|
5
|
+
* Copyright (c) 2005 Thomas Bernard
|
6
|
+
* This software is subject to the conditions detailed in the
|
7
|
+
* LICENCE file provided in this distribution.
|
8
|
+
* */
|
9
|
+
#include "igd_desc_parse.h"
|
10
|
+
#include <stdio.h>
|
11
|
+
#include <string.h>
|
12
|
+
|
13
|
+
/* Start element handler :
|
14
|
+
* update nesting level counter and copy element name */
|
15
|
+
void IGDstartelt(void * d, const char * name, int l)
|
16
|
+
{
|
17
|
+
struct IGDdatas * datas = (struct IGDdatas *)d;
|
18
|
+
memcpy( datas->cureltname, name, l);
|
19
|
+
datas->cureltname[l] = '\0';
|
20
|
+
datas->level++;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* End element handler :
|
24
|
+
* update nesting level counter and update parser state if
|
25
|
+
* service element is parsed */
|
26
|
+
void IGDendelt(void * d, const char * name, int l)
|
27
|
+
{
|
28
|
+
struct IGDdatas * datas = (struct IGDdatas *)d;
|
29
|
+
datas->level--;
|
30
|
+
/*printf("endelt %2d %.*s\n", datas->level, l, name);*/
|
31
|
+
if( (l==7) && !memcmp(name, "service", l) )
|
32
|
+
{
|
33
|
+
/*datas->state++; */
|
34
|
+
/*
|
35
|
+
if( datas->state < 1
|
36
|
+
&& !strcmp(datas->servicetype,
|
37
|
+
// "urn:schemas-upnp-org:service:WANIPConnection:1") )
|
38
|
+
"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"))
|
39
|
+
datas->state ++;
|
40
|
+
*/
|
41
|
+
if(0==strcmp(datas->servicetype_CIF,
|
42
|
+
"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"))
|
43
|
+
datas->state = 2;
|
44
|
+
if(0==strcmp(datas->servicetype,
|
45
|
+
"urn:schemas-upnp-org:service:WANIPConnection:1") )
|
46
|
+
datas->state = 3;
|
47
|
+
/* if(0==strcmp(datas->servicetype,
|
48
|
+
"urn:schemas-upnp-org:service:WANPPPConnection:1") )
|
49
|
+
datas->state = 4; */
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
/* Data handler :
|
54
|
+
* copy data depending on the current element name and state */
|
55
|
+
void IGDdata(void * d, const char * data, int l)
|
56
|
+
{
|
57
|
+
struct IGDdatas * datas = (struct IGDdatas *)d;
|
58
|
+
char * dstmember = 0;
|
59
|
+
/*printf("%2d %s : %.*s\n",
|
60
|
+
datas->level, datas->cureltname, l, data); */
|
61
|
+
if( !strcmp(datas->cureltname, "URLBase") )
|
62
|
+
dstmember = datas->urlbase;
|
63
|
+
else if(datas->state<=1)
|
64
|
+
{
|
65
|
+
if( !strcmp(datas->cureltname, "serviceType") )
|
66
|
+
dstmember = datas->servicetype_CIF;
|
67
|
+
else if( !strcmp(datas->cureltname, "controlURL") )
|
68
|
+
dstmember = datas->controlurl_CIF;
|
69
|
+
else if( !strcmp(datas->cureltname, "eventSubURL") )
|
70
|
+
dstmember = datas->eventsuburl_CIF;
|
71
|
+
else if( !strcmp(datas->cureltname, "SCPDURL") )
|
72
|
+
dstmember = datas->scpdurl_CIF;
|
73
|
+
else if( !strcmp(datas->cureltname, "deviceType") )
|
74
|
+
dstmember = datas->devicetype_CIF;
|
75
|
+
}
|
76
|
+
else if(datas->state==2)
|
77
|
+
{
|
78
|
+
if( !strcmp(datas->cureltname, "serviceType") )
|
79
|
+
dstmember = datas->servicetype;
|
80
|
+
else if( !strcmp(datas->cureltname, "controlURL") )
|
81
|
+
dstmember = datas->controlurl;
|
82
|
+
else if( !strcmp(datas->cureltname, "eventSubURL") )
|
83
|
+
dstmember = datas->eventsuburl;
|
84
|
+
else if( !strcmp(datas->cureltname, "SCPDURL") )
|
85
|
+
dstmember = datas->scpdurl;
|
86
|
+
else if( !strcmp(datas->cureltname, "deviceType") )
|
87
|
+
dstmember = datas->devicetype;
|
88
|
+
}
|
89
|
+
if(dstmember)
|
90
|
+
{
|
91
|
+
if(l>=MINIUPNPC_URL_MAXSIZE)
|
92
|
+
l = MINIUPNPC_URL_MAXSIZE-1;
|
93
|
+
memcpy(dstmember, data, l);
|
94
|
+
dstmember[l] = '\0';
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
void printIGD(struct IGDdatas * d)
|
99
|
+
{
|
100
|
+
printf("urlbase = %s\n", d->urlbase);
|
101
|
+
printf("WAN Device (Common interface config) :\n");
|
102
|
+
printf(" deviceType = %s\n", d->devicetype_CIF);
|
103
|
+
printf(" serviceType = %s\n", d->servicetype_CIF);
|
104
|
+
printf(" controlURL = %s\n", d->controlurl_CIF);
|
105
|
+
printf(" eventSubURL = %s\n", d->eventsuburl_CIF);
|
106
|
+
printf(" SCPDURL = %s\n", d->scpdurl_CIF);
|
107
|
+
printf("WAN Connection Device :\n");
|
108
|
+
printf(" deviceType = %s\n", d->devicetype);
|
109
|
+
printf(" servicetype = %s\n", d->servicetype);
|
110
|
+
printf(" controlURL = %s\n", d->controlurl);
|
111
|
+
printf(" eventSubURL = %s\n", d->eventsuburl);
|
112
|
+
printf(" SCPDURL = %s\n", d->scpdurl);
|
113
|
+
}
|
114
|
+
|
115
|
+
|