BSH feiert seine 50 Jahre

Der Begriff „Riese“ um BSH (u. a. Siemens, Bosch, Neff und Gaggenau) zu beschreiben, ist sicherlich bestens geeignet. BSH ist nach eigenen Angaben weltweit die Nummer zwei (Nummer 1 in Europa) mit 41 Produktionsstätten rund um den Globus und ca. 13 Milliarden Euro Umsatz in 2016. Wahrscheinlich hat einer jeder einige deren Produkte/Geräte im Haushalt.

Um seine 50 Jahre Geschichte seit der Entstehung voller Innovationen zu dokumentieren und in einem gut strukturierten Format zu präsentieren hat sich BSH für MediaWiki entschieden: die bekannteste Open Source Wissensdatenbank, mit der auch Wikipedia bzw. für Wikipedia erstellt wurde.

Managed MediaWiki von SaaS Web

Pflege der Anwendung, Updates, tägliche Backups, Monitoring der Verfügbarkeit und Performance, es gibt zahlreiche Gründe das Managed Angebot von SaaS Web zu nutzen – BSH hat sie erkannt.

SaaS Web sponsort den MediaWiki Hackathon Wien 2017

Nach Lyon (Frankreich) und Jerusalem (Israel) wird der MediaWiki Hackathon in Wien ausgetragen. Parallel zu dem Coding Event findet die Fantastic MediaWikis Conference statt zu der u. a. bekannte Referenten Vorträge halten wie z. B. Richard Heigl (BlueSpice) oder Markus Glaser (BlueSpice).

SaaS Web wird international

Endlich gibt es die SaaS Web Homepage auch auf französisch und englisch.

Die französischsprachigen Seiten sind unter https://www.saasweb.net/fr aufrufbar und die englischsprachigen unter https://www.saasweb.net/en. Nicht nur die Homepage mit den Managed Applications wurde übersetzt, sondern auch dieser Blog. Noch gibt es keine/kaum anderssprachige Inhalte, aber mit der Zeit wird sich das natürlich ändern.

SaaS Web hat seit dem 15. Januar eine neue Mitarbeiterin, Anne-Gaële Wulkow, zuständig für Marketing – insbesondere für den französischen Markt.

 

 

.shop TLD und Managed Hosting – das SaaS-Dilemna

Hä?! Nein, ihr habt schon richtig gelesen 😉

Als SaaS Web haben wir lange versucht unsere Produkte rund um das Wort, besser den Begriff, SaaS (Software as a Service) zu etablieren. Wir mussten allerdings feststellen, dass SaaS doch viel weniger gesucht oder benutzt wird, als wir dachten. Die meisten Menschen, die Software as a Service benötigen – zumindest was unsere Produkte angeht – suchen nach Managed Hosting.

So kommt es, dass wir uns auch neue Domains zugelegt haben: managedhosting.shop bzw. managed-hosting.shop um damit besser zu verdeutlichen was wir anbieten: Managed Hosting 🙂 Und ja, die Registrierung von .shop Domainendungen gibt es seit dem 26. September. So schließt sich der Kreis und der Titel dieses Beitrages ergibt einen Sinn…

WordPress Meetup Karlsruhe #2 am 3. Dezember

WP-Meetup-Karlsruhe-squareEs geht weiter! Nach dem ersten WordPress Meetup  in Karlsruhe folgt nun der nächste. Das Meetup wird im Vanguarde veranstaltet, ein Co-Working Space im Westen von Karlsruhe – Stadtteil Mühlburg – in einem alten Brauereigebäude (Seldeneck’sche Brauerei). Es geht um 19h los und soll bis 21h gehen, anschließend, für diejenigen, die noch gerne bleiben möchten, werden wir noch ein After-Meetup auf die Beine stellen.

Das Event wird von 1&1 gesponsort – Raummiete, Catering und Media. Die Organisation des Meetups wird von Commodore Room und SaaS Web übernommen.

Location
Vanguarde
Hardtstr. 37a
76185 Karlsruhe-Mühlburg
Datum / Zeit
03.12.2014
19h-21h

Hier geht es zur Anmeldung für das Event.

Hier geht es zur Event Website.

 

Selbstverwaltete WordPress Installationen für Malware und Spam misbraucht

WordPress LogoEine am 24.03. veröffentlichte Studie von Netcraft zeigt, dass ca. 8% der Malware Sites weltweit eine WordPress-Basis gemein haben. Scheinbar wurden dabei allerdings keine Websites identifiziert, die bei WordPress.com gehostet werden (auch nicht bei SaaS Web), was die Vermutung nahe legt, dass es sich um schlecht gewartete WordPress Installationen handelt. Wie bereits in älteren Posts erwähnt, ist vor allem bei PlugIns darauf zu achten, eine gute Auswahl zu machen und die Erweiterungen zeitnah aktuell zu halten.
Bei SaaS Web brauchen Sie sich keine Gedanken um die Wartung der Anwendung oder der PlugIns und Themes zu machen. SaaS Web pflegt die Anwendung für Sie, erstellt täglich Backups und prüft regelmäßig die Installationen nach Schadsoftware bzw. stellt sicher, dass die Anwendung läuft wie sie soll.

FindNames :: SaaS Web startet Domainbestelldienst (Beta) :: www.findnames.eu

Endlich ist es soweit, es ist nun für Jedermann möglich auf findnames.eu seine Wunschdomain zu bestellen. Die Preise sind knapp kalkuliert und es gibt keine Einrichtungsgebühr. Wer möchte kann auch E-Mail und Webhosting dazubuchen.

Wir freuen uns natürlich auf Anmerkungen und Anregungen jeder Art.

Natürlich ist es auch bei uns möglich Domains für mit den neuen/kommenden TLDs zu reservieren (.berlin, .web, ..).

findnames

Es gibt auch einen Bereich um existierende Domains zu kaufen.

Wie kann man die Rufnummer bei Telefonaten zwischen Sipgate Teilnehmern und Asterisk anzeigen (anstatt interne Sipgate-ID)?

AsteriskAnrufe zwischen Sipgate Teilnehmern werden automatisch als SIP-Anrufe geroutet, selbst wenn man die „externe“ Telefonnummer anruft. Das hat den Vorteil, dass die Anrufe zwischen den Sipgate Teilnehmern nichts kosten, da die Telefonate über Internet abgewickelt werden. Schön wäre es aber auch zu wissen, wer mich anruft 😉

Problem:
In der From-Header steht dann nicht die Telefonnummer des Anrufers sondern die SIP-URL (z.B. <sip:12345e0@sipgate.de>). Die von Asterisk gesetzte Variable CALLERID(num) beinhaltet dann nur noch die Sipgate SIP-UserID wie z.B. 12345e0. Die an Asterisk angeschlossenen Telefone können meistens damit nichts anfangen. Wenn die ID einen Buchstaben enthält (hier im Beispiel ‚e‚), führt es dazu, dass manch ältere Telefone gar keine Rufnummer anzeigen. Besonders ärgerlich ist es, wenn man einen Anruf verpasst hat und die Rufnummer nicht mehr zuordnen kann, wer tatsächtlich angerufen hat.

Lösungsweg:
Schaut man sich die SIP Header an, stellt man fest, dass die gewünschte Information in dem Headerelement „P-Asserted-Identity“ enthalten ist:

INVITE sip:5000@10.0.0.33 SIP/2.0
...
From: <sip:12345e0@sipgate.de>;tag=CAFEBABE
To: <sip:072198765432@sipgate.de>
Contact: <sip:12345e0@12.34.56.78;uniq=CAFEAFFE23>
...
P-Asserted-Identity: <sip:072112345678@sipgate.de>

Bei anderen Anbietern kann das Format abweichen. Mehr dazu in http://www.ietf.org/rfc/rfc3325.txt.

Zwecks Demonstration habe ich einen kleinen Dialplan für Asterisk geschrieben:

; debug
exten => 5000,1,NoOp(Caller-ID: ${CALLERID(all)})
exten => 5000,2,NoOp(SIP From: ${SIP_HEADER(From)})
exten => 5000,3,NoOp(SIP To  : ${SIP_HEADER(TO)})
exten => 5000,4,NoOp(SIP PAI : ${SIP_HEADER(P-Asserted-Identity)})

; try to extract phone number from sip header P-Asserted-Identity
exten => 5000,5,Set(FON=$["${SIP_HEADER(P-Asserted-Identity)}" : "<sip:([0-9]+)"])
exten => 5000,6,ExecIf($[${ISNULL(${FON})}=0]?Set(CALLERID(num)=${FON}))

; debug
exten => 5000,7,NoOp(Caller-ID: ${CALLERID(all)})
...

Erläuterung:
5: Wir extrahieren die Nummer mit RegExp und speichern das Ergebnis in die Variable FON.
6: Falls FON nicht null ist, ersetzen wir die CALLERID(num) mit dem Wert von FON.

Hier zwei UseCases und Ausgabe von Asterisk:
Teinehmer für das Beispiel (Telefonnummer, IPs sowie alle TAGs sind verschleiert).
Angerufene (Asterisk mit Sipgate-Account):
– Telefonnumber = 072198765432
Anrufer 1 (Fritzbox mit Sipgate-Account):
– Sipgate ID = 12345e0
– Telefonnumber = 072112345678
Anrufer 2 (Mobil):
– Telefonnumber = 017112345678

Case 1: Anrufer 1 (sipgate -> sipgate):

-- Exec...1] NoOp("SIP/sipgate.de-000000b6", "Caller-ID: "" <12345e0>") in new stack
-- Exec...2] NoOp("S..b6", "SIP From: <sip:12345e0@sipgate.de>;tag=CAFEBABE") in new stack
-- Exec...3] NoOp("S..b6", "SIP To  : <sip:072198765432@sipgate.de>") in new stack
-- Exec...4] NoOp("S..b6", "SIP PAI : <sip:072112345678@sipgate.de>") in new stack
-- Exec...5] Set("S..b6", "FON=072112345678") in new stack
-- Exec...6] ExecIf("S..b6", "1?Set(CALLERID(num)=072112345678)") in new stack
-- Exec...7] NoOp("S..b6", "Caller-ID: "" <072112345678>") in new stack
-- Exec...8] ...

Exec…5: Die externe Rufnummer des Anrufers wurde in FON reingeschrieben
Exec…6: 1? => Kondition erfüllt => ersetze CALLERID(num)
Exec…7: Verifizierung, dass die Nummer ersetzt wurde (vgl. Exec…1)

Case 2: Anrufer 2 (mobil -> sipgate):

-- Exec...1] NoOp("S..b8", "Caller-ID: "017112345678" <017112345678>") in new stack
-- Exec...2] NoOp("S..b8", "SIP From: "017112345678" <sip:017112345678@sipgate.de>;tag=cafebabe") in new stack
-- Exec...3] NoOp("S..b8", "SIP To  : <sip:004972198765432@sipgate.de>") in new stack
-- Exec...4] NoOp("S..b8", "SIP PAI : ") in new stack
-- Exec...5] Set("S..b8", "FON=") in new stack
-- Exec...6] ExecIf("S..b8", "0?Set(CALLERID(num)=)") in new stack
-- Exec...7] NoOp("S..b8", "Caller-ID: "017112345678" <017112345678>") in new stack
-- Exec...8] ...

Exec…5: Patternmatching schlägt fehl, da der Header nicht gesetzt ist, somit is die Variable FON null.
Exec…6: 0? => Kondition nicht erfüllt => nichts tun
Exec…7: Verifizierung, dass die Nummer unverändert geblieben ist (vgl. Exec…1)

Die Endgräte zeigen nun immer die externe Rufnummer des Anrufers an. Somit kann der Anrufer bei einem verpassten Anruf auch zurückgerufen werden.

Viel Spass,

= C. | SaaS Web Techniklabor =

P.S.: Lustig ist, dass die App von Sipgate auch nur die interne ID anzeigt („Anruf von 12345e0“) und man verwirrt ist, wer nun wirklich anruft…

Multilinguale Homepage mit WebsiteBaker

Dieses einfache CMS ist für viele kleinere Projekte mit Sicherheit bestens geeignet. Wenig Schnickschnack, dafür leichtverständliche Menues in einem schlichten Design.

Besonders interessant sind 2 Aspekte:

  1. Eigene Templates: das Template System ist sehr einfach; Sie können in wenigen Minuten eigene Seiten erstellen, genau wie Sie es sich wünschen.
    • Schritt eins: Verzeichnis erstellen mit dem Namen der Vorlage
    • Schritt zwei: Dateien info.php, index.php und template.css anlegen (Mindestanforderung).

      Besser ist es noch ein /images Verzeichnis zu erstellen, um Bilder und Icons für das Template abzuspeichern.
    • Schritt drei: In info.php die Bereiche angeben, die genutzt werden; zunächst Metadaten, um das Template beim Import richtig in die Datenbank einzutragen. Es muss auch angegeben werden, ob es mehrere Navigationsmenues gibt, mehrere Contentbereiche, …
    • Schritt vier: In index.php nun eine HTML Ansicht der Seite vorbereiten und mit den PHP-Befehlen page_header(), show_menu(), page_content() und page_footer() die wichtigsten CMS-gesteuerten Bereiche anlegen.
      PS: show_menu2() ist eine neue Variante für die Navigationsanzeige und sollte möglichst an der Stelle von show_menu() genutzt werden, vor allem wenn man verschachtelte Navigationen einsetzt.
    • Schritt fünf: Verzeichnis zippen und als Vorlage in WebsiteBaker importieren. Ab dann kann das Template auch direkt in der WebsiteBaker Installation bearbeitet werden und muss nicht permanent neu gezipped und hochgeladen werden.

    Doku zu dem Thema gibt es hier.

  2. Multilingual: einfach Sprach-Container anlegen und schon hat man eine Sprachtrennung – URL rewriting wird automatisch eingestellt.

Natürlich hat SaaS Web gehostete WebsiteBaker Pakete im Sortiment.