[PATCH]: OpenLDAP - funktioniert und AVM Telefonbuch von aussen auslesbar

mehle

Mitglied
Mitglied seit
26 Jan 2009
Beiträge
273
Punkte für Reaktionen
0
Punkte
0
Hallo,

Hier nun die funktionierenden Patches. Vielen Dank an er13 für die Hilfe an libdb.

Kommentare wie OpenLDAP zu verwenden und zu konfigurieren ist kann man im Webfrontend entnehmen.

Getestet habe ich alle beschriebenen Aktionen.

Alle Diskussionen in diesem Thread bis einschliesslich Kommentar #14 sind nun nicht mehr relevant.

UPDATE: da dieses Paket ja auch die LDAP libs mitbringt, sollten wir da nicht eine Config-Option bauen, wo nur die libs in das Image und in den Staging-Teil kopiert werden? Slapd würde dann von dieser Config-Option abhängen.

UPDATE: nun kann man auch das Telefonbuch durchsuchen und in VoIP Telefonen integrieren. Beispiel: ldapsearch -x -b "dc=phonebook,dc=fritz.box" -H "ldap://fritz.box" "(cn=Hugo)"

Cian
Stephan
 

Anhänge

  • db-20100125.patch.bz2
    1.3 KB · Aufrufe: 61
  • openldap-20100125.patch.bz2
    7 KB · Aufrufe: 76
Zuletzt bearbeitet:
Kann bitte mal jemand in den Patch für die libdb schauen und mir sagen, was ich falsch mache?
nur vom Lesen her, ich glaube die .config-Option muss FREETZ_LIB_libdb heißen und nicht FREETZ_LIB_db
 
Wenn ich _libdb nehme anstatt _db wird doch $(pkg) auf libdb gesetzt, oder? Dies wäre aber falsch, da das Paket/upstream Tarball nunmal db heisst.

Ciao
Stephan
 
Nein es bleibt db, denn es leitet sich vom Namen der .mk Datei ab, s. da

Edit:
Noch ein paar Anmerkungen:
  • bitte verwende CONFIGURED_CONFIGURE Macro und produziere keine Code-Clones. Damit das configure-Script, welches sich in einem Unterverzeichnis befindet, aufgerufen wird, muss Du diesen Patch anwenden, eventuell angepasst.
  • bitte mache eine _separate_ StagingDir-Regel, so wie es jetzt ist, ist nicht richtig
  • verwende bitte überall, wo es möglich ist, $(PKG) statt DB (Hint: nur im Rumpf einer Regel muss DB verwendet werden)
  • setzt LIB_VERSION auf 4.8 und verwende es, um Binaries-Variablen zu definieren, in PKG_SOURCE kannst Du PKG_VERSION verwenden
 
Zuletzt bearbeitet:
Nach der Änderung zu libdb kommt immer noch die gleiche Warnmeldung.

Danke
Stephan
 
Existiert die lib in dem root/usr/lib-Verzeichnis? (bin unter Windows und habe keine Lust zu rebooten ;-))

Edit: in der $(PKG)_TARGET_BINARY-Zeile muss es $(PKG)_TARGET_DIR heißen statt $(PKG)_DEST_LIB
 
Edit:
Noch ein paar Anmerkungen:
  • bitte verwende CONFIGURED_CONFIGURE Macro und produziere keine Code-Clones. Damit das configure-Script, welches sich in einem Unterverzeichnis befindet, aufgerufen wird, muss Du diesen Patch anwenden, eventuell angepasst.
    Das Problem ist, dass das Makefile der db unbedingt in einem Unterverzeichnis aufzurufen ist da ansonsten es nicht baut. Wie kann ich ein cd in das Build-Dir machen.

    [*] bitte mache eine _separate_ StagingDir-Regel, so wie es jetzt ist, ist nicht richtig

    Hatte ich :-( Leider wurde die uberhaupt nicht angezogen. Schreibfehler sind auszuschliessen - Mir ist nicht klar was ich falsch gemacht hatte. Gibt es da irgend etwas zu beachten?

    [*] verwende bitte überall, wo es möglich ist, $(PKG) statt DB (Hint: nur im Rumpf einer Regel muss DB verwendet werden)

    Gerne, aber dies hat nicht funktioniert, $(PKG) wurde zu "" aufgelöst.

    [*] setzt LIB_VERSION auf 4.8 und verwende es, um Binaries-Variablen zu definieren, in PKG_SOURCE kannst Du PKG_VERSION verwenden

Ack, mache ich.

Danke für die Hlife.
 
Das Problem ist, dass das Makefile der db unbedingt in einem Unterverzeichnis aufzurufen ist da ansonsten es nicht baut. Wie kann ich ein cd in das Build-Dir machen.
Code:
$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
	PATH=$(TARGET_PATH) $(MAKE) -C $(D_DIR)/build_unix

Schreibfehler sind auszuschliessen - Mir ist nicht klar was ich falsch gemacht hatte. Gibt es da irgend etwas zu beachten?
schaue Dir andere Libs an bzw. poste den nicht funktionierenden Teil, damit ich ihn mir anschauen kann

Gerne, aber dies hat nicht funktioniert, $(PKG) wurde zu "" aufgelöst.
sollte aber ;-)
 
Code:
$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
	PATH=$(TARGET_PATH) $(MAKE) -C $(D_DIR)/build_unix

ich muss in build_unix mich befinden um das configure aufzurufen:

Code:
PATH=$(TARGET_PATH) cd $(DB_DIR)/build_unix/ && ../dist/configure
 
habe ich doch gesagt, den Patch hier und die Variable $(PKG)_CONFIGURE_SUBDIR auf build_unix setzen (vor dem CONFIGURED_CONFIGURE-Macro), das mit der Variablen dachte ich sei aus dem Patch klar
 
Die ganze Makefile Magie ist mir eine Nummer zu hoch. Ich glaube ich habe alle deine Empfehlungen eingebaut - siehe angehängtes Makefile.

Aber damit kompiliert gar nichts:

$ make
chmod 755
chmod: fehlender Operand nach „755“
„chmod --help“ gibt weitere Informationen.
make: *** [root/usr/lib/libdb-4.8.so] Fehler 1

Ich bitte um den entscheidenden Tip ;-)

Danke
Stephan
 

Anhänge

  • db.mk.bz2
    764 Bytes · Aufrufe: 2
ist in Wirklichkeit überhaupt keine Kunst, muss mal ein Template mit Kommentaren erstellen, der INSTALL_LIBRARY vs. INSTALL_LIBRARY_STRIP Teil ist nicht unbedingt notwendig, war zu faul es wieder rauszuschmeissen
 

Anhänge

  • db.patch.bz2
    1.8 KB · Aufrufe: 10
Danke!

Mir ist nicht klar, was bei dir mit dem STAGING Teil anders ist als bei mir (ist es vielleicht, dass _STAGING_BINARY am Anfang definiert ist? Wenn ja, dann ist mir unklar warum dies so sein muss).

Dennoch wird libdb nicht ins Image kopiert obwohl in root/usr/lib/:

installing mod base
copying files
installing libs
ld_uClibc
libcrypt
libcrypto
libdl
libevent
libfreetz
libgcc_s
liblzo2
libm
libnsl
libpcap
libpcre
libpopt
libpthread
libresolv
librt
libssl
libuClibc
libuClibc__
libutil
libz
adding favicons (hansolo)
 
bei mir schon
Code:
  installing libs
    ld_uClibc
    libapr
    libaprutil
    libart_lgpl_2
    libblkid
    libcom_err
    libcrypt
    libcrypto
    libcurl
    libdb

enthält Deine .config FREETZ_LIB_libdb Symbol, hast Du es überall umbenannt, auch in openldap/Config.in, make menuconfig nach dem Umbenennen aufgerufen?
 
Bingo, ich hatte noch ein _db nicht zu _libdb konvertiert. Nun kompiliert alles und es wird auch ins Image installiert.

Ich hoffe, dass ich morgen alles Testen kann und funktionierende/getestete Patches bereitstellen kann.

Eine Frage an alle: mein originäres Ziel mit OpenLDAP ist eigentlich, /var/flash/phonebook zu externalisieren. D.h. andere Geräte (z.B. VoIP Telefone) sollen auf das Telefonbuch zugreifen können. Dazu muss ich aber die phonebook XML Datei parsen. Mit OpenLDAP kann ich ein beliebiges Programm als Backend nutzen (genannt Shell-Backend), solange es standardisierte Antworten an OpenLDAP liefert. Ich sehe 2 Möglichkeiten, dieses Shell-Backend zu realisieren:

1. Mit sh/sed/awk/grep die XML Datei durchforsten

2. Ein Programm gegen libphonebook schreiben

Zu 1: hat jemand eine clevere Idee, wie man dies macht?

Zu 2: hat jemand eine Header Datei?

Andere Vorschläge?

Danke
Stephan
 
wäre da XPath nicht geeigneter als sed/awk/grep, ich hatte irgendwo libxml2 rumliegen (XPath-Support muss allerdings noch eingeschaltet werden)
 

Anhänge

  • libxml2.patch.bz2
    1.8 KB · Aufrufe: 7
Eine XML-Library ist sicher geeigneter und robuster, um XML zu lesen. Es kann aber sein, daß diese konkrete XML-Datei auch mit normalen Werkzeugen zu lesen ist (solange sich die Formatierung nicht ändert). Letztlich ist es auch eine Frage des Speicherplatzes.
 
Ich habe neue Patches erstellt - siehe ersten Eintag im Thread.

Wenn ein Skript-Wizard eine bessere Lösung hat, wie man das Phonebook auslesen kann, bin ich sehr daran interessiert.

Ciao
Stephan
 
Hallo,
ich möchte auf meine Fritz!Box 7170 (Firmware-Version 29.04.80-16352) LDAP installieren.

Falls der Speicher nicht ausreicht, 128 MB Speicher ist unter /var/media/ftp/Generic-USBSMReader-01 verfügbar.

Vorgehensweise (VirtualBox freetz-linux-1.1.ovf, *=hinzu, -=entfernt):
Code:
tar -xvjf freetz-1.1.2.tar.bz2
cd freetz-*/
* svn checkout  http://svn.freetz.org/trunk freetz-trunk
patch -p0 < openldap-20100125.patch (1)
patch -p0 < db-20100125.patch (2) // Wofür ist der eigentlich ?
* svn checkout  http://svn.freetz.org/trunk freetz-trunk
* manuelles bearbeiten der Config.in sowie Makefile.in siehe [URL="http://www.ip-phone-forum.de/showthread.php?p=1497573#post1497573"]#post1497573[/URL]
make menuconfig (3)
make
(1)
Code:
patching file make/Config.in
Hunk #1 succeeded at 105 with fuzz 2 (offset -24 lines).
patching file make/openldap/files/.language
patching file make/openldap/files/root/usr/lib/cgi-bin/openldap.cgi
patching file make/openldap/files/root/etc/default.openldap/phonebook.rules2
patching file make/openldap/files/root/etc/default.openldap/openldap.cfg
patching file make/openldap/files/root/etc/default.openldap/slapd.init.ldif
patching file make/openldap/files/root/etc/default.openldap/slapd.conf.shellbackend
patching file make/openldap/files/root/etc/default.openldap/phonebook-backend.ldif
patching file make/openldap/files/root/etc/default.openldap/slapd.conf
patching file make/openldap/files/root/etc/default.openldap/phonebook-backend.conf
patching file make/openldap/files/root/etc/default.openldap/phonebook.rules
patching file make/openldap/files/root/etc/default.openldap/phonebook.sh
patching file make/openldap/files/root/etc/init.d/rc.openldap
patching file make/openldap/Makefile.in
patching file make/openldap/openldap.mk
patching file make/openldap/Config.in
(2)
Code:
patching file make/libs/Makefile.in
Hunk #1 FAILED at 206.
1 out of 1 hunk FAILED -- saving rejects to file make/libs/Makefile.in.rej
patching file make/libs/patches/100-no_docs.db.patch
patching file make/libs/db.mk
patching file make/libs/Config.in
Hunk #1 FAILED at 795.
1 out of 1 hunk FAILED -- saving rejects to file make/libs/Config.in.rej
(3):
  1. Hardware -> Fon WLAN 7170
  2. Package Selections -> Testing -> OpenLDAP 2.4.21 (NEW)
    -> build with SSL Support
    -> Statically link libraries (NE)
    -> OpenLDAP server (slapd) Options -> Shell storage - Externalize Fritz Phonebook (NEW)
    Testing -> nagios 2.11
  3. Patches -> enum
    -> Patch web menu signed message
  4. Package Selections -> Standard -> Dropbear 0.52
    -> Without scp & ssh client
    -> Add SFTP Support (NEW)
  5. Advanced options -> External -> Enable external processing
    -> Keep subdirectories (NEW)
    -> Create file for upload (NEW)
    -> external directory (custom directory) -> /var/media/ftp/Generic-USBSMReader-01/freetz
    -> microperl
    -> libresolv // löst soweit ich gelesen habe Probleme, wenn libs nicht vorhanden sind
    mehr lässt sich nicht auslagern ?
  6. Exit -> save yes
  7. make

Wird das so funktionieren oder wird das image nicht erstellt ?
 
Zuletzt bearbeitet:
patch -p0 < db-20100125.patch (2) // Wofür ist der eigentlich ?
OpenLDAP stellt nur das LDAP Protokoll zur Verfügung. Die Daten selber werden in der Berkeley DB gespeichert.

(1)
Code:
patching file make/libs/Makefile.in
Hunk #1 FAILED at 206.
hier wirst du wohl etwas selber Hand anlegen müssen - besser ist, du nimmst SVN trunk und lässt den Patch für die Berkeley DB weg, da der schon jetzt integriert ist.

(3):
  1. Hardware -> Fon WLAN 7170
  2. Package Selections -> Testing -> OpenLDAP 2.4.21 (NEW)
    -> build with SSL Support
    -> Statically link libraries (NE)
    -> OpenLDAP server (slapd) Options -> Shell storage - Externalize Fritz Phonebook (NEW)


  1. Das Shell Backend brauchst du nur für das Auslesen des Adressbuches.

    Wird das so funktionieren oder wird das image nicht erstellt ?

    Mein Patch ist noch nicht für external vorbereitet. Weiterhin ist die Berkeley DB gross. Alles in allem brauchst du für beide ca. 500KB Speicher im Image. Wenn du die hast, ist alles gut. Wenn nicht, dann musst du selber das external.mk anlegen um die in dein USB Verzeichnis zu schieben.

    Ciao
    Stephan
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,839
Beiträge
2,219,264
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.