author | Wolfgang Rosenauer <wr@rosenauer.org> |
Tue, 14 Jun 2011 11:58:26 +0200 | |
branch | mozilla-1.9.2 |
changeset 278 | 436c76ab5f25 |
parent 174 | b3f909e83302 |
permissions | -rw-r--r-- |
0 | 1 |
From: Wolfgang Rosenauer <wr@rosenauer.org> |
2 |
Subject: Add the option to use libproxy for system proxy settings |
|
3 |
References: |
|
4 |
https://bugzilla.mozilla.org/show_bug.cgi?id=517655 |
|
5 |
||
6 |
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in |
|
7 |
--- a/config/autoconf.mk.in |
|
8 |
+++ b/config/autoconf.mk.in |
|
174
b3f909e83302
update to 1.9.2.11; removed upstreamed patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
119
diff
changeset
|
9 |
@@ -545,16 +545,20 @@ FT2_CFLAGS = @FT2_CFLAGS@ |
0 | 10 |
FT2_LIBS = @FT2_LIBS@ |
11 |
||
12 |
MOZ_PANGO_CFLAGS = @MOZ_PANGO_CFLAGS@ |
|
13 |
MOZ_PANGO_LIBS = @MOZ_PANGO_LIBS@ |
|
14 |
||
15 |
MOZ_XIE_LIBS = @MOZ_XIE_LIBS@ |
|
16 |
XT_LIBS = @XT_LIBS@ |
|
17 |
||
18 |
+MOZ_LIBPROXY_CFLAGS = @MOZ_LIBPROXY_CFLAGS@ |
|
19 |
+MOZ_LIBPROXY_LIBS = @MOZ_LIBPROXY_LIBS@ |
|
20 |
+MOZ_ENABLE_LIBPROXY = @MOZ_ENABLE_LIBPROXY@ |
|
21 |
+ |
|
22 |
MOZ_LIBNOTIFY_CFLAGS = @MOZ_LIBNOTIFY_CFLAGS@ |
|
23 |
MOZ_LIBNOTIFY_LIBS = @MOZ_LIBNOTIFY_LIBS@ |
|
24 |
MOZ_ENABLE_LIBNOTIFY = @MOZ_ENABLE_LIBNOTIFY@ |
|
25 |
||
26 |
GLIB_CFLAGS = @GLIB_CFLAGS@ |
|
27 |
GLIB_LIBS = @GLIB_LIBS@ |
|
28 |
GLIB_GMODULE_LIBS = @GLIB_GMODULE_LIBS@ |
|
29 |
LIBIDL_CFLAGS = @LIBIDL_CFLAGS@ |
|
30 |
diff --git a/config/system-headers b/config/system-headers |
|
31 |
--- a/config/system-headers |
|
32 |
+++ b/config/system-headers |
|
95
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
33 |
@@ -1013,11 +1013,14 @@ hunspell.hxx |
0 | 34 |
#if MOZ_NATIVE_BZ2==1 |
35 |
bzlib.h |
|
36 |
#endif |
|
59
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
37 |
#if MOZ_PLATFORM_MAEMO==5 |
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
38 |
hildon-uri.h |
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
39 |
hildon-mime.h |
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
40 |
libosso.h |
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
41 |
#endif |
0 | 42 |
+#ifdef MOZ_ENABLE_LIBPROXY |
43 |
+proxy.h |
|
44 |
+#endif |
|
95
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
45 |
#if MOZ_NATIVE_LIBEVENT==1 |
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
46 |
event.h |
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
47 |
#endif |
0 | 48 |
diff --git a/configure.in b/configure.in |
49 |
--- a/configure.in |
|
50 |
+++ b/configure.in |
|
174
b3f909e83302
update to 1.9.2.11; removed upstreamed patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
119
diff
changeset
|
51 |
@@ -5327,16 +5327,38 @@ then |
0 | 52 |
fi |
53 |
fi |
|
54 |
AC_SUBST(MOZ_ENABLE_DBUS) |
|
174
b3f909e83302
update to 1.9.2.11; removed upstreamed patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
119
diff
changeset
|
55 |
AC_SUBST(MOZ_DBUS_CFLAGS) |
b3f909e83302
update to 1.9.2.11; removed upstreamed patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
119
diff
changeset
|
56 |
AC_SUBST(MOZ_DBUS_LIBS) |
0 | 57 |
AC_SUBST(MOZ_DBUS_GLIB_CFLAGS) |
58 |
AC_SUBST(MOZ_DBUS_GLIB_LIBS) |
|
59 |
||
60 |
+dnl = libproxy support |
|
61 |
+dnl ======================================================== |
|
62 |
+ |
|
63 |
+if test "$MOZ_ENABLE_GTK2" |
|
64 |
+then |
|
65 |
+ MOZ_ENABLE_LIBPROXY= |
|
66 |
+ |
|
67 |
+ MOZ_ARG_ENABLE_BOOL(libproxy, |
|
68 |
+ [ --enable-libproxy Enable libproxy support ], |
|
69 |
+ MOZ_ENABLE_LIBPROXY=1, |
|
70 |
+ MOZ_ENABLE_LIBPROXY=) |
|
71 |
+ |
|
72 |
+ if test "$MOZ_ENABLE_LIBPROXY" |
|
73 |
+ then |
|
74 |
+ PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0) |
|
75 |
+ AC_DEFINE(MOZ_ENABLE_LIBPROXY) |
|
76 |
+ fi |
|
77 |
+fi |
|
78 |
+AC_SUBST(MOZ_ENABLE_LIBPROXY) |
|
79 |
+AC_SUBST(MOZ_LIBPROXY_CFLAGS) |
|
80 |
+AC_SUBST(MOZ_LIBPROXY_LIBS) |
|
81 |
+ |
|
174
b3f909e83302
update to 1.9.2.11; removed upstreamed patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
119
diff
changeset
|
82 |
dnl ======================================================== |
0 | 83 |
dnl = libnotify support |
84 |
dnl ======================================================== |
|
85 |
||
86 |
if test "$MOZ_ENABLE_GTK2" |
|
87 |
then |
|
88 |
MOZ_ENABLE_LIBNOTIFY=1 |
|
89 |
||
90 |
diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in |
|
91 |
--- a/toolkit/library/Makefile.in |
|
92 |
+++ b/toolkit/library/Makefile.in |
|
59
604517bb16d8
Update to 1.9.2.2/3.6.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
0
diff
changeset
|
93 |
@@ -243,16 +243,20 @@ endif |
0 | 94 |
ifdef MOZ_TREE_FREETYPE |
95 |
EXTRA_DSO_LDOPTS += $(FT2_LIBS) |
|
96 |
endif |
|
97 |
||
98 |
ifdef MOZ_ENABLE_STARTUP_NOTIFICATION |
|
99 |
EXTRA_DSO_LDOPTS += $(MOZ_STARTUP_NOTIFICATION_LIBS) |
|
100 |
endif |
|
101 |
||
102 |
+ifdef MOZ_ENABLE_LIBPROXY |
|
103 |
+EXTRA_DSO_LDOPTS += $(MOZ_LIBPROXY_LIBS) |
|
104 |
+endif |
|
105 |
+ |
|
106 |
ifeq ($(OS_ARCH),BeOS) |
|
107 |
EXTRA_DSO_LDOPTS += -lbe -ltracker |
|
108 |
endif |
|
109 |
||
110 |
ifeq ($(OS_ARCH),SunOS) |
|
111 |
EXTRA_DSO_LDOPTS += -lelf -ldemangle -lCstd |
|
112 |
endif |
|
113 |
||
114 |
diff --git a/toolkit/system/unixproxy/Makefile.in b/toolkit/system/unixproxy/Makefile.in |
|
115 |
--- a/toolkit/system/unixproxy/Makefile.in |
|
116 |
+++ b/toolkit/system/unixproxy/Makefile.in |
|
117 |
@@ -15,16 +15,17 @@ |
|
118 |
# |
|
119 |
# The Initial Developer of the Original Code is |
|
120 |
# IBM Corporation. |
|
121 |
# Portions created by the Initial Developer are Copyright (C) 2004 |
|
122 |
# the Initial Developer. All Rights Reserved. |
|
123 |
# |
|
124 |
# Contributor(s): |
|
125 |
# Brian Ryner <bryner@brianryner.com> |
|
126 |
+# Wolfgang Rosenauer <wr@rosenauer.org> |
|
127 |
# |
|
128 |
# Alternatively, the contents of this file may be used under the terms of |
|
129 |
# either the GNU General Public License Version 2 or later (the "GPL"), or |
|
130 |
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
131 |
# in which case the provisions of the GPL or the LGPL are applicable instead |
|
132 |
# of those above. If you wish to allow use of your version of this file only |
|
133 |
# under the terms of either the GPL or the LGPL, and not to allow others to |
|
134 |
# use your version of this file under the terms of the MPL, indicate your |
|
135 |
@@ -53,15 +54,30 @@ LIBXUL_LIBRARY = 1 |
|
136 |
||
137 |
REQUIRES = \ |
|
138 |
xpcom \ |
|
139 |
string \ |
|
140 |
necko \ |
|
141 |
mozgnome \ |
|
142 |
$(NULL) |
|
143 |
||
144 |
-EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_LIBS) |
|
145 |
+EXTRA_DSO_LDOPTS += \ |
|
146 |
+ $(MOZ_LIBPROXY_LIBS) \ |
|
147 |
+ $(MOZ_COMPONENT_LIBS) \ |
|
148 |
+ $(NULL) |
|
149 |
+ |
|
150 |
+ifdef MOZ_ENABLE_LIBPROXY |
|
151 |
+ |
|
152 |
+CPPSRCS = \ |
|
153 |
+ nsLibProxySettings.cpp \ |
|
154 |
+ $(NULL) |
|
155 |
+ |
|
156 |
+CXXFLAGS += $(MOZ_LIBPROXY_CFLAGS) |
|
157 |
+ |
|
158 |
+else # MOZ_ENABLE_LIBPROXY |
|
159 |
||
160 |
CPPSRCS = \ |
|
161 |
nsUnixSystemProxySettings.cpp \ |
|
162 |
$(NULL) |
|
163 |
||
164 |
+endif # MOZ_ENABLE_LIBPROXY |
|
165 |
+ |
|
166 |
include $(topsrcdir)/config/rules.mk |
|
167 |
diff --git a/toolkit/system/unixproxy/nsLibProxySettings.cpp b/toolkit/system/unixproxy/nsLibProxySettings.cpp |
|
168 |
new file mode 100644 |
|
169 |
--- /dev/null |
|
170 |
+++ b/toolkit/system/unixproxy/nsLibProxySettings.cpp |
|
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
171 |
@@ -0,0 +1,167 @@ |
0 | 172 |
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
173 |
+/* ***** BEGIN LICENSE BLOCK ***** |
|
174 |
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
|
175 |
+ * |
|
176 |
+ * The contents of this file are subject to the Mozilla Public License Version |
|
177 |
+ * 1.1 (the "License"); you may not use this file except in compliance with |
|
178 |
+ * the License. You may obtain a copy of the License at |
|
179 |
+ * http://www.mozilla.org/MPL/ |
|
180 |
+ * |
|
181 |
+ * Software distributed under the License is distributed on an "AS IS" basis, |
|
182 |
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
|
183 |
+ * for the specific language governing rights and limitations under the |
|
184 |
+ * License. |
|
185 |
+ * |
|
186 |
+ * The Original Code is Mozilla libproxy integration code. |
|
187 |
+ * |
|
188 |
+ * The Initial Developer of the Original Code is |
|
189 |
+ * Wolfgang Rosenauer <wr@rosenauer.org>. |
|
113 | 190 |
+ * Portions created by the Initial Developer are Copyright (C) 2010 |
0 | 191 |
+ * the Initial Developer. All Rights Reserved. |
192 |
+ * |
|
193 |
+ * Contributor(s): |
|
194 |
+ * |
|
195 |
+ * Alternatively, the contents of this file may be used under the terms of |
|
196 |
+ * either the GNU General Public License Version 2 or later (the "GPL"), or |
|
197 |
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
198 |
+ * in which case the provisions of the GPL or the LGPL are applicable instead |
|
199 |
+ * of those above. If you wish to allow use of your version of this file only |
|
200 |
+ * under the terms of either the GPL or the LGPL, and not to allow others to |
|
201 |
+ * use your version of this file under the terms of the MPL, indicate your |
|
202 |
+ * decision by deleting the provisions above and replace them with the notice |
|
203 |
+ * and other provisions required by the GPL or the LGPL. If you do not delete |
|
204 |
+ * the provisions above, a recipient may use your version of this file under |
|
205 |
+ * the terms of any one of the MPL, the GPL or the LGPL. |
|
206 |
+ * |
|
207 |
+ * ***** END LICENSE BLOCK ***** */ |
|
208 |
+ |
|
209 |
+#include "nsISystemProxySettings.h" |
|
210 |
+#include "nsIGenericFactory.h" |
|
211 |
+#include "nsIServiceManager.h" |
|
212 |
+#include "nsIIOService.h" |
|
213 |
+#include "nsIURI.h" |
|
214 |
+#include "nsString.h" |
|
215 |
+#include "nsNetUtil.h" |
|
216 |
+#include "nsCOMPtr.h" |
|
217 |
+#include "nspr.h" |
|
218 |
+ |
|
219 |
+#include <proxy.h> |
|
220 |
+ |
|
221 |
+class nsUnixSystemProxySettings : public nsISystemProxySettings { |
|
222 |
+public: |
|
223 |
+ NS_DECL_ISUPPORTS |
|
224 |
+ NS_DECL_NSISYSTEMPROXYSETTINGS |
|
225 |
+ |
|
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
226 |
+ nsUnixSystemProxySettings() { mProxyFactory = nsnull; } |
0 | 227 |
+ nsresult Init(); |
228 |
+ |
|
229 |
+private: |
|
230 |
+ ~nsUnixSystemProxySettings() { |
|
95
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
231 |
+ if (mProxyFactory) |
37558f4844c0
update to 1.9.2.7/3.6.7
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
74
diff
changeset
|
232 |
+ px_proxy_factory_free(mProxyFactory); |
0 | 233 |
+ } |
234 |
+ |
|
235 |
+ pxProxyFactory *mProxyFactory; |
|
236 |
+}; |
|
237 |
+ |
|
238 |
+NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings) |
|
239 |
+ |
|
240 |
+nsresult |
|
241 |
+nsUnixSystemProxySettings::Init() |
|
242 |
+{ |
|
243 |
+ return NS_OK; |
|
244 |
+} |
|
245 |
+ |
|
246 |
+nsresult |
|
247 |
+nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) |
|
248 |
+{ |
|
249 |
+ // Make sure we return an empty result. |
|
250 |
+ aResult.Truncate(); |
|
251 |
+ return NS_OK; |
|
252 |
+} |
|
253 |
+ |
|
254 |
+nsresult |
|
255 |
+nsUnixSystemProxySettings::GetProxyForURI(nsIURI* aURI, nsACString& aResult) |
|
256 |
+{ |
|
257 |
+ nsresult rv; |
|
258 |
+ |
|
259 |
+ if (!mProxyFactory) { |
|
260 |
+ mProxyFactory = px_proxy_factory_new(); |
|
261 |
+ } |
|
113 | 262 |
+ NS_ENSURE_TRUE(mProxyFactory, NS_ERROR_NOT_AVAILABLE); |
0 | 263 |
+ |
113 | 264 |
+ nsCOMPtr<nsIIOService> ios = do_GetIOService(&rv); |
265 |
+ NS_ENSURE_SUCCESS(rv, rv); |
|
0 | 266 |
+ |
267 |
+ nsCAutoString spec; |
|
268 |
+ rv = aURI->GetSpec(spec); |
|
269 |
+ NS_ENSURE_SUCCESS(rv, rv); |
|
270 |
+ |
|
271 |
+ char **proxyArray = nsnull; |
|
272 |
+ proxyArray = px_proxy_factory_get_proxies(mProxyFactory, (char*)(spec.get())); |
|
113 | 273 |
+ NS_ENSURE_TRUE(proxyArray, NS_ERROR_NOT_AVAILABLE); |
0 | 274 |
+ |
113 | 275 |
+ // Translate libproxy's output to PAC string as expected |
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
276 |
+ // libproxy returns an array of proxies in the format: |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
277 |
+ // <procotol>://[username:password@]proxy:port |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
278 |
+ // or |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
279 |
+ // direct:// |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
280 |
+ // |
113 | 281 |
+ // PAC format: "PROXY proxy1.foo.com:8080; PROXY proxy2.foo.com:8080; DIRECT" |
0 | 282 |
+ int c = 0; |
283 |
+ while (proxyArray[c] != NULL) { |
|
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
284 |
+ if (!aResult.IsEmpty()) { |
0 | 285 |
+ aResult.AppendLiteral("; "); |
286 |
+ } |
|
287 |
+ |
|
288 |
+ PRBool isScheme = PR_FALSE; |
|
289 |
+ nsXPIDLCString schemeString; |
|
290 |
+ nsXPIDLCString hostPortString; |
|
291 |
+ nsCOMPtr<nsIURI> proxyURI; |
|
292 |
+ |
|
113 | 293 |
+ rv = ios->NewURI(nsDependentCString(proxyArray[c]), |
294 |
+ nsnull, |
|
295 |
+ nsnull, |
|
296 |
+ getter_AddRefs(proxyURI)); |
|
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
297 |
+ if (NS_FAILED(rv)) { |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
298 |
+ c++; |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
299 |
+ continue; |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
300 |
+ } |
0 | 301 |
+ |
302 |
+ proxyURI->GetScheme(schemeString); |
|
303 |
+ if (NS_SUCCEEDED(proxyURI->SchemeIs("http", &isScheme)) && isScheme) { |
|
304 |
+ schemeString.AssignLiteral("proxy"); |
|
305 |
+ } |
|
306 |
+ aResult.Append(schemeString); |
|
307 |
+ if (NS_SUCCEEDED(proxyURI->SchemeIs("direct", &isScheme)) && !isScheme) { |
|
308 |
+ // Add the proxy URI only if it's not DIRECT |
|
309 |
+ proxyURI->GetHostPort(hostPortString); |
|
310 |
+ aResult.AppendLiteral(" "); |
|
311 |
+ aResult.Append(hostPortString); |
|
312 |
+ } |
|
313 |
+ |
|
314 |
+ c++; |
|
315 |
+ } |
|
316 |
+ |
|
119
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
317 |
+#ifdef DEBUG |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
318 |
+ printf("returned PAC proxy string: %s\n", PromiseFlatCString(aResult).get()); |
8fea954c3b28
more minor changes to libproxy patch
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
113
diff
changeset
|
319 |
+#endif |
0 | 320 |
+ |
321 |
+ PR_Free(proxyArray); |
|
322 |
+ return NS_OK; |
|
323 |
+} |
|
324 |
+ |
|
325 |
+#define NS_UNIXSYSTEMPROXYSERVICE_CID /* 0fa3158c-d5a7-43de-9181-a285e74cf1d4 */\ |
|
326 |
+ { 0x0fa3158c, 0xd5a7, 0x43de, \ |
|
327 |
+ {0x91, 0x81, 0xa2, 0x85, 0xe7, 0x4c, 0xf1, 0xd4 } } |
|
328 |
+ |
|
329 |
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsUnixSystemProxySettings, Init) |
|
330 |
+ |
|
331 |
+static const nsModuleComponentInfo components[] = { |
|
332 |
+ { "Unix System Proxy Settings Service", |
|
333 |
+ NS_UNIXSYSTEMPROXYSERVICE_CID, |
|
334 |
+ NS_SYSTEMPROXYSETTINGS_CONTRACTID, |
|
335 |
+ nsUnixSystemProxySettingsConstructor } |
|
336 |
+}; |
|
337 |
+ |
|
338 |
+NS_IMPL_NSGETMODULE(nsUnixProxyModule, components) |