aboutsummaryrefslogtreecommitdiff
path: root/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html')
-rw-r--r--files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html150
1 files changed, 150 insertions, 0 deletions
diff --git a/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html b/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html
new file mode 100644
index 0000000000..38fe28447c
--- /dev/null
+++ b/files/ja/archive/mozilla/xulrunner/ldap_xpcom/index.html
@@ -0,0 +1,150 @@
+---
+title: Using LDAP XPCOM with XULRunner
+slug: Archive/Mozilla/XULRunner/LDAP_XPCOM
+tags:
+ - XUL
+ - XULRunner
+translation_of: Archive/Mozilla/XULRunner/LDAP_XPCOM
+---
+<p> </p><p>標準では XULRunner は LDAP XPCOM サポート無しでビルドされています。もし XUL アプリケーションで LDAP コンポーネントを使いたいのであれば、二つのオプションがあります: XULRunner を LDAP サポートを有効にしてビルドする事、もう一つは LDAP XPCOM を XUL アプリ(のコンポーネントディレクトリ)に直接追加する事です。
+</p><p>いずれのケースでも、 &lt;tt&gt;--enable-ldap&lt;/tt&gt; ビルドオプションを追加して、 LDAP XPCOM をビルドする必要があるでしょう。 XULRunner のビルドの仕方について詳細な情報
+は <a href="ja/Build_Documentation">Build_Documentation</a> をごらんになってください。<a href="ja/Configuring_Build_Options">Configuring Build Options</a> では、以下を .mozconfig ファイルに追加します:
+</p>
+<pre class="eval">ac_add_options --enable-ldap
+</pre>
+<p>これでビルドパッケージのコンポーネントディレクトリに以下の二つのファイルが作成されます:
+</p>
+<ul><li> &lt;tt&gt;mozldap.dll&lt;/tt&gt; (もしくは libmozldap.so かなにか...)
+</li><li> &lt;tt&gt;mozldap.xpt&lt;/tt&gt;
+</li></ul>
+<p>そしてビルドパッケージのルートディレクトリに以下の二つのファイルが作成されます:
+windows上では:
+</p>
+<ul><li> &lt;tt&gt;nsldap32v50.dll&lt;/tt&gt;
+</li><li> &lt;tt&gt;nsldappr32v50.dll&lt;/tt&gt;
+</li></ul>
+<p>linux上では:
+</p>
+<ul><li> &lt;tt&gt;libldap50.so&lt;/tt&gt;
+</li><li> &lt;tt&gt;libprldap50.so&lt;/tt&gt;
+</li></ul>
+<p>これらはネイティブの LDAP ライブラリです。
+</p><p>もし通常通りにこれらのファイルを XUL アプリの &lt;tt&gt;components&lt;/tt&gt; に追加したとしても、これは動作しません。実際のところ、 LDAP インターフェイスは利用できます(例えば &lt;tt&gt;Components.interfaces.nsILDAPConnection&lt;/tt&gt; は null ではありません)が、コンポーネントはロードできません(例えば、 &lt;tt&gt;Components.classes["@mozilla.org/network/ldap-connection;1"]&lt;/tt&gt; は null になります)。これは実際にはネイティブの LDAP ライブラリファイルが XULRunner のプロセスが見つけられない事が原因となります。
+</p><p>解決方法としては bsmedberg の手法を使う事で、これは <a href="ja/Using_Dependent_Libraries_In_Extension_Components">Using Dependent Libraries In Extension Components</a> に述べられています: コンポーネントライブラリはリアルライブラリと全ての依存関係の loader となり、これは全ての必要なライブラリがロードされるという事です。
+</p><p>mozilla のソースコードディレクトリに &lt;tt&gt;extensions/ldapstub&lt;/tt&gt; というサブディレクトリを作成し、二つのファイル、&lt;tt&gt;Makefile.in&lt;/tt&gt; と &lt;tt&gt;LDAPStubLoader.cpp&lt;/tt&gt; を入れます:
+</p><p>Makefile.in:
+</p>
+<pre># Copyright (c) 2005 Benjamin Smedberg &lt;benjamin@smedbergs.us&gt;
+
+DEPTH = ../..
+srcdir = @srcdir@
+topsrcdir = @top_srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = mozldapstub
+LIBRARY_NAME = mozldap_stub
+IS_COMPONENT = 1
+FORCE_SHARED_LIB = 1
+
+REQUIRES = \
+ xpcom \
+ string \
+ $(NULL)
+
+CPPSRCS = LDAPStubLoader.cpp
+
+EXTRA_DSO_LDOPTS += \
+ $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
+ $(XPCOM_FROZEN_LDOPTS) \
+ $(NSPR_LIBS) \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+
+DEFINES += -DMOZ_DLL_PREFIX=\"$(DLL_PREFIX)\"
+</pre>
+<p>LDAPStubLoader.cpp:
+</p>
+<pre>// Copyright (c) 2005 Benjamin Smedberg &lt;benjamin@smedbergs.us&gt;
+
+#include "nscore.h"
+#include "nsModule.h"
+#include "prlink.h"
+#include "nsILocalFile.h"
+#include "nsStringAPI.h"
+#include "nsCOMPtr.h"
+
+static char const *const kDependentLibraries[] =
+{
+#ifdef NS_WIN32
+ MOZ_DLL_PREFIX "nsldap32v50" MOZ_DLL_SUFFIX,
+ MOZ_DLL_PREFIX "nsldappr32v50" MOZ_DLL_SUFFIX,
+#endif //NS_WIN32
+#ifdef NS_UNIX
+ MOZ_DLL_PREFIX "ldap50" MOZ_DLL_SUFFIX,
+ MOZ_DLL_PREFIX "prldap50" MOZ_DLL_SUFFIX,
+#endif //NS_UNIX
+ nsnull
+};
+
+// component.dll on windows, libcomponent.dll on linux
+static char kRealComponent[] = MOZ_DLL_PREFIX "mozldap" MOZ_DLL_SUFFIX;
+
+nsresult
+NSGetModule(nsIComponentManager* aCompMgr,
+ nsIFile* aLocation,
+ nsIModule* *aResult)
+{
+ nsresult rv;
+
+ nsCOMPtr&lt;nsIFile&gt; libraries;
+ rv = aLocation-&gt;GetParent(getter_AddRefs(libraries));
+ if (NS_FAILED(rv))
+ return rv;
+
+ nsCOMPtr&lt;nsILocalFile&gt; library(do_QueryInterface(libraries));
+ if (!library)
+ return NS_ERROR_UNEXPECTED;
+
+ library-&gt;SetNativeLeafName(NS_LITERAL_CSTRING("libraries"));
+ library-&gt;AppendNative(NS_LITERAL_CSTRING("dummy"));
+
+ // loop through and load dependent libraries
+ for (char const *const *dependent = kDependentLibraries;
+ *dependent;
+ ++dependent) {
+ library-&gt;SetNativeLeafName(nsDependentCString(*dependent));
+ PRLibrary *lib;
+ library-&gt;Load(&amp;lib);
+ // 1) We don't care if this failed!
+ // 2) We are going to leak this library. We don't care about that either.
+ }
+
+ library-&gt;SetNativeLeafName(NS_LITERAL_CSTRING(kRealComponent));
+
+ PRLibrary *lib;
+ rv = library-&gt;Load(&amp;lib);
+ if (NS_FAILED(rv))
+ return rv;
+
+ nsGetModuleProc getmoduleproc = (nsGetModuleProc)
+ PR_FindFunctionSymbol(lib, NS_GET_MODULE_SYMBOL);
+
+ if (!getmoduleproc)
+ return NS_ERROR_FAILURE;
+
+ return getmoduleproc(aCompMgr, aLocation, aResult);
+}
+</pre>
+<p>そして &lt;tt&gt;.mozconfig&lt;/tt&gt; を変更して次の行を追加します:
+</p>
+<pre class="eval">ac_add_options --enable-extensions=ldapstub
+</pre>
+<p>XULRunnnerを再ビルドします。これでビルドパッケージの &lt;tt&gt;components&lt;/tt&gt; サブディレクトリに新しいファイル、 &lt;tt&gt;mozldap_stub.dll&lt;/tt&gt; (Windows上) もしくは &lt;tt&gt;libmozldap_stub.so&lt;/tt&gt; (Linux上) が作られるでしょう。 </p><p>&lt;tt&gt;mozldap.xpt&lt;/tt&gt; と &lt;tt&gt;mozldap_stub.dll&lt;/tt&gt; を XUL アプリの &lt;tt&gt;components&lt;/tt&gt; サブディレクトリにコピーします。
+XULアプリのディレクトリに &lt;tt&gt;libraries&lt;/tt&gt; サブディレクトリを作成し、&lt;tt&gt;mozldap.dll&lt;/tt&gt; (もしくは &lt;tt&gt;libmozldap.so&lt;/tt&gt;) をコピーして、そしてネイティブ LDAP バイナリをそこに入れます。
+</p><p>プロファイルを削除しておく事を忘れないでください。
+</p><p>これで LDAP コンポーネントが使えるようになります。
+</p><p><span class="comment">Interwiki Language Links</span>
+</p>