pbupd - Anzeige und Synchronisation des Onlinetelefonbuches

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,202
Punkte für Reaktionen
589
Punkte
113
Moins

Ein Onlinetelefonbuch bei GMX zum Beispiel kann so angefordert und angezeigt werden...
otu.sh
Code:
#!/bin/sh
local NID='-i 240'
local SERVICE='-t https://uas2.uilogin.de/login'
local USER='-u [email protected]'
local PASSWORD='-v PASSWORD'
local URL='-w coms.homenet.gmxde'
local PB='-x 'Onlinetelefonbuch'
local REV='-r 82'
local SYNC_PB=${1}
local PARAMS="${NID} ${SERVICE} ${USER} ${PASSWORD} ${URL} ${PB} ${REV} ${SYNC_PB}"
local CMD=$(which pbupd)
$CMD $PARAMS ${@}
#echo $CMD $PARAMS ${@} # DEBUG
#EOF
Daten: Quelltext der Seite: http://fritz.box/fon_num/fonbook_list.lua
MQUERIES = {...}

Damit die Daten im XML Format wohlgeformt in HTML angezeigt werden können,
muss noch ein Stylesheet eingebunden werden...

1. Schritt: pbd.head (statisch angelegt als Datei)
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="pbd.xsl" type="text/xsl"?>

2. Schritt: pbd.xsl (statisch angelegt, das XML/XSL Stylesheet)
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/phonebooks/phonebook">
<!--xsl:text>
&lt;!DOCTYPE html&gt;
</xsl:text-->
<html>
<head>
<title>Onlinetelefonbuch</title>
<style>
html{font-size:32px;}
body{background-color:rgb(219,234,249);}
table{display:inline;background-color:rgb(249,234,219);border:1px solid rgb(128,128,128);border-collapse:collapse;border-spacing:1px;empty-cells:hide;}
caption,thead,tfoot,tbody{background-color:rgb(249,234,219);border:1px solid rgb(128,128,128);border-collapse:collapse;border-spacing:1px;empty-cells:hide;}
caption{display:table-header-group;}
caption:hover{background-color:rgb(0,0,0);color:rgb(255,255,0);}
thead:hover{background-color:rgb(0,0,0);color:rgb(0,255,0);}
tfoot:hover{background-color:rgb(0,0,0);color:rgb(0,0,255);}
tbody:hover{background-color:rgb(0,0,0);color:rgb(255,0,0);}
</style>
</head>
<body>
<script type="text/javascript">window.document.title='<xsl:value-of select="@name"/>(<xsl:value-of select="@owner"/>)';</script>
<xsl:apply-templates select="*"/>
</body>
</html>
</xsl:template>
<xsl:template match="*/contact">
<xsl:for-each select=".">
<table>
<caption><tr><th><xsl:value-of select="person/realName"/></th></tr></caption>
<!--thead><tr><th><xsl:value-of select="person/realName"/></th></tr></thead-->
<tfoot><tr><td><xsl:value-of select="services/email"/></td></tr></tfoot>
<xsl:for-each select="telephony/number">
<tbody><tr><td><xsl:value-of select="."/></td></tr></tbody>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

3. Schritt: index.cgi (Aufruf von pbupd und das Zusammenbringen der Daten um sie im Webbrowser anzuzeigen)
Natürlich muss dafür auch ein Webserver (auf der Fritz!Box) laufen, der Shellskript CGI beherscht.
Code:
#!/bin/sh
local SYNC_PB='/var/tmp/pbd.export'
local PBH='pbd.head'
local OTU='otu.sh'
# XML wohlformen, mit XSL im Header
mkwfpbxml () {
$OTU $SYNC_PB
cat $PBH
grep -v "<?" $SYNC_PB
}
echo 'Content-type: text/xml; charset="utf-8"
'
echo $(mkwfpbxml)
#EOF
So sieht dann das Verzeichnis auf dem Webspace aus...
Code:
l phonebooks/
total 20
drw-rw-r--    2 root     root          4096 Dec 15 07:21 ./
drwxrwxrwx   47 root     root          4096 Dec 15 16:40 ../
-rw-rw-r--    1 root     root           255 Dec 15 07:01 index.cgi
lrwxrwxrwx    1 root     root            17 Dec 14 17:58 otu.sh -> ../scripts/otu.sh*
-rw-rw-r--    1 root     root            89 Dec 13 11:36 pbd.head
-rw-rw-r--    1 root     root          1617 Dec 14 12:09 pbd.xsl
Das funktioniert auch wirklich gut.

Nur, ich krieg es nicht hin mit pbupd eine vorhandene (Telefonbuch) XML zu synchronisieren.
Da bräuchte ich tatsächlich einmal Hilfe von einem Spezialisten.
(pbupd ist spärlich dokumentiert, z.B. hier: wehavemorefun.de)

Technisch wäre/ist es kein Problem über die XSL Transformation andere Formate zu erzeugen.
1. SNOM Telefonbuch (XML)
2. CISCO Telefonbuch (XML)
3. Eine reine Textausgabe/Datei (z.B.: CSV)
...
 
Zuletzt bearbeitet:

Neueste Beiträge

Statistik des Forums

Themen
244,858
Beiträge
2,219,658
Mitglieder
371,572
Neuestes Mitglied
#Kuddel#
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.