src/upnp.h

Fri, 23 Dec 2005 06:48:27 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Fri, 23 Dec 2005 06:48:27 +0000
changeset 12640
1fb40d5d76e7
parent 11501
a8fc92026134
child 12909
dfcf4df1dcd7
permissions
-rw-r--r--

[gaim-migrate @ 14976]
Yahoo profiles use links of this form:
<a href="http://gaim.sf.net">gaim.sf.net</a>

The Yahoo prpl strips HTML, manipulates the text, then passes it to the core, which passes to the UI, which calls another UI function which calls ...linkify. This leads to these URLs looking quite odd.

The fix is to have the HTML stripping function deal properly with URLs of the above format. With HTTP being the most common type of URL these days, that's probably a good plan anyway.

11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
1 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
2 * @file upnp.h Universal Plug N Play API
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
3 * @ingroup core
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
4 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
5 * gaim
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
6 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
9 * source distribution.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
10 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
14 * (at your option) any later version.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
15 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
19 * GNU General Public License for more details.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
20 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
24 */
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
25
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
26 #ifndef _GAIM_UPNP_H_
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
27 #define _GAIM_UPNP_H_
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
28
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
29
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
30 typedef struct
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
31 {
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
32 gchar* controlURL;
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
33 gchar* serviceType;
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
34 } GaimUPnPControlInfo;
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
35
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
36
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
37 #ifdef __cplusplus
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
38 extern "C" {
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
39 #endif
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
40
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
41 /**************************************************************************/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
42 /** @name UPnP API */
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
43 /**************************************************************************/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
44 /*@{*/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
45
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
46 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
47 * Sends a discovery request to search for a UPnP enabled IGD that
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
48 * contains the WANIPConnection service that will allow us to recieve the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
49 * public IP address of the IGD, and control it for forwarding ports.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
50 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
51 * @return The control URL for the IGD we'll use to use the IGD services
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
52 */
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
53 GaimUPnPControlInfo* gaim_upnp_discover(void);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
54
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
55
11213
837e1970689d [gaim-migrate @ 13344]
Thomas Butter <tbutter@users.sourceforge.net>
parents: 11208
diff changeset
56
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
57 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
58 * Gets the IP address from a UPnP enabled IGD that sits on the local
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
59 * network, so when getting the network IP, instead of returning the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
60 * local network IP, the public IP is retrieved.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
61 *
11501
a8fc92026134 [gaim-migrate @ 13746]
Richard Laager <rlaager@pidgin.im>
parents: 11391
diff changeset
62 * @param controlInfo The control URL retrieved from gaim_upnp_discover.
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
63 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
64 * @return The IP address of the network, or NULL if something went wrong
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
65 */
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
66 gchar* gaim_upnp_get_public_ip(const GaimUPnPControlInfo* controlInfo);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
67
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
68
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
69 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
70 * Maps Ports in a UPnP enabled IGD that sits on the local network to
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
71 * this gaim client. Essentially, this function takes care of the port
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
72 * forwarding so things like file transfers can work behind NAT firewalls
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
73 *
11501
a8fc92026134 [gaim-migrate @ 13746]
Richard Laager <rlaager@pidgin.im>
parents: 11391
diff changeset
74 * @param controlInfo The control URL retrieved from gaim_upnp_discover.
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
75 * @param portMap The port to map to this client
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
76 * @param protocol The protocol to map, either "TCP" or "UDP"
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
77 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
78 * @return TRUE if success, FALSE if something went wrong.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
79 */
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
80 gboolean gaim_upnp_set_port_mapping(const GaimUPnPControlInfo* controlInfo,
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
81 unsigned short portMap,
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
82 const gchar* protocol);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
83
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
84 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
85 * Deletes a port mapping in a UPnP enabled IGD that sits on the local network
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
86 * to this gaim client. Essentially, this function takes care of deleting the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
87 * port forwarding after they have completed a connection so another client on
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
88 * the local network can take advantage of the port forwarding
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
89 *
11501
a8fc92026134 [gaim-migrate @ 13746]
Richard Laager <rlaager@pidgin.im>
parents: 11391
diff changeset
90 * @param controlInfo The control URL retrieved from gaim_upnp_discover.
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
91 * @param portMap The port to delete the mapping for
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
92 * @param protocol The protocol to map to. Either "TCP" or "UDP"
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
93 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
94 * @return TRUE if success, FALSE if something went wrong.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
95 */
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
96 gboolean
11501
a8fc92026134 [gaim-migrate @ 13746]
Richard Laager <rlaager@pidgin.im>
parents: 11391
diff changeset
97 gaim_upnp_remove_port_mapping(const GaimUPnPControlInfo* controlInfo,
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
98 unsigned short portMap,
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
99 const gchar* protocol);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
100 /*@}*/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
101
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
102
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
103 #ifdef __cplusplus
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
104 }
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
105 #endif
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
106
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
107 #endif /* _GAIM_UPNP_H_ */

mercurial