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.