[dashing] Widget mit mehrzeiliger Ausgabe erstellen

Eine kurze Anleitung zum installieren das Dashboards findet ihr hier.

Zum experimentieren habe ich alle zuvor angelegten Widgets, Jobs etc. im Demo Dashboard entfernt.

Für das Widget wurden in der dashboard/sample.erb folgende Zeilen hinzugefügt.

<li data-row="1" data-col="1" data-sizex="2" data-sizey="1"><code>
<div data-id="tickets" data-view="Text"
></div>
</li>

Angesprochen wird das Widget über die data-id=“tickets“.

Unter dem Verzeichnis widgets/text wurden die benötigten Dateien mit dem entsprechendem Inhalt angelegt.

text.html

<h1 class=“title“ data-bind=“title“></h1>

<li data-foreach-value=“values“ data-bind-class=“value.status“>

      <div class=“ticket“ data-bind=“value.ticket“></div>

      <div class=“kunde“ data-bind=“value.kunde“></div>

      <div class=“stoerung“ data-bind=“value.stoerung“></div>

        <div style=“clear:both“></div>

    </li>

<p class=“more-info“ data-bind=“moreinfo“></p>

<p class=“updated-at“ data-bind=“updatedAtMessage“></p>

 


text.scss

// ----------------------------------------------------------------------------
// Sass declarations
// ----------------------------------------------------------------------------
$background-color: #ec663c;
$title-color: rgba(255, 255, 255, 0.7);
$moreinfo-color: rgba(255, 255, 255, 0.7);
// ----------------------------------------------------------------------------
// Widget-text styles
// ----------------------------------------------------------------------------
.widget-text {
background-color: $background-color;
.title {
color: $title-color;
}
.more-info {
color: $moreinfo-color;
}
.updated-at {
color: rgba(255, 255, 255, 0.7);
}
.ticket{
width:50px;
float:left;
text-align:left;
}
.kunde{
width:175px;
float:left;
text-align:left;
}
.stoerung{
width:300px;
float:left;
text-align:left;
}
}

text.coffee
class Dashing.Text extends Dashing.Widget
ready: ->
# This is fired when the widget is done being rendered

onData: (data) ->
# Handle incoming data
# You can access the html node of this widget with `@node`
# Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.

Damit die angelegten Wigdets per http Post mit Daten befüllt werden können, wird der in der config.ru hinterlegte Token benötigt.

require 'dashing'

configure do
set :auth_token, 'hereweare‘

Nun können die Werte zum Beispiel per curl übergeben werden.
curl -d '{ "auth_token": "hereweare", "values":[{"ticket":"223","kunde":"Kassupke","stoerung":"Ausfall Datenbank"},{"ticket":"231","kunde":"Müller","stoerung":"Mailversand eingeschränkt"}] }' http://localhost:3030/widgets/tickets

Dashboard

dashing.io unter centos installieren – gesponsert

Vor einigen Jahren habe ich bereits auf www.t3n.de vom dashing.io gelesen. Ein interessantes Dashboard um Informationen aus verschiedensten Quellen darzustellen. Man benötigt nur einen Server auf dem der Dienst eingerichtet werden kann, entsprechende Quellen und einen Browser für die Ausgabe. Die Installation erfolgt auf dem heimischen Linux Server System oder wenn ein größerer Benutzerkreis darauf zugreifen muss, empfiehlt es sich einen Server anzumieten. Dieser könnte zum Beispiel bei Rock-Server gemietet werden.

Zunächst müssen die folgenden Pakete installiert werden.
yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel
yum install ruby

Zusätzlich wird nodejs benötigt:
yum install epel-release
yum install nodejs

Die Installation des Dashing.io erfolgt unter dem zuvor angelegten Benutzer dashing.
su - dashing
gem install bundler
gem install execjs
gem install dashing
dashing new sweet_dashboard_project
cd sweet_dashboard_project
bundle

Damit ein Zugriff auf die Seite möglich ist, muss der Port 3030 in der Firewall freigeschaltet werden.
firewall-cmd --permanent --zone=public --add-port=3030/tcp
firewall-cmd --reload

Gestartet wird dashing in dem man in das Verzeichnis des dashboards wechselt cd /home/dashing/sweet_dashboard_project und auf der Kommandozeile dashing start eingibt. Über die URL http://serverip:3030 kann im Browser das Demo Dashboard geöffnet werden.

Neben den Widgets die in der Demo gezeigt werden, gibt es bereits online unter https://github.com/Shopify/dashing/wiki/Additional-Widgets weitere Widgets die ins Dashboard eingebunden werden können. Zum Beispiel gibt es Widgets fürs Wetter, Icinga, Jira, Jenkins und fitbit.
Wenn das passende Widget nicht dabei ist kann relativ einfach ein eigenes erstellt werden. Zum Beispiel ein Widget oder ein gesamtes Dashboard das Informationen zu einem Spielserver ausgibt, wie Anzahl der Spieler und die aktuell verwendete Karte.

Pro Widget wird eine html, scss und eine coffeescript Datei benötigt. Zum befüllen reicht es die Informationen im json Format per http post an des Widget zu senden. Eine weitere Möglichkeit ist ein in der Scriptsprache coffeescript erstellter Job. Über den Job können unter anderem Werte per http von einer Seite abgerufen werden oder es kann eine Textdatei bzw xls Datei ausgelesen werden.

Hier geht es zu dashing.io.

Demo Widgets

Demo Widgets

[nginx] Verzeichnisse vor unberechtigten Zugriff schützen

Auf Webseiten gibt es Bereiche wo erst nach einer authentifizierung darauf zugegriffen werden darf. Diese Absicherung erfolgt durch Eingabe eines Benutzernamens und Kennworts oder es wird die Ip Adresse geprüft von der aus der Besucher auf die Seite zugreift.
Wenn die aufgerufene Webapplikation diese Funktionalität nicht bietet, kann dies über nginx umgesetzt werden.

Authentifizierung über Benutzername / Kennwort

Zunächst wird htpasswd benötigt, dieses wird über yum install httpd-tools installiert. Nach erfolgreicher Installation wird über htpasswd -c /etc/nginx/htpasswd-seite1 user1 und Eingabe des Kennworts die benötigte Datei und der erste Benutzer angelegt.
Nun werden in der Datei /etc/nginx/conf.d/seite1.conf die folgenden Zeilen hinzugefügt, damit die Unterseite www.seite1.de/benutzer vor unberechtigten Zugriff geschützt wird.
location /benutzer {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd-seite1;
}

Im Anschluss den nginx neustarten: systemctl restart nginx.service

Zugriff über die IP Adresse beschränken

Es gibt Unternehmen in denen Abteilungen eigene IP Adressbereiche erhalten und somit ist es möglich das ausgelieferte Seiten nur aufrufbar sind, wenn der Host eine bestimmte IP Adresse hat.
Der Serverblock seite1.conf wird nun wie folgt angepasst, damit nur Hosts aus einem IP Adressbereich auf die Unterseite www.seite1.de/benutzer zugreifen können.

location /benutzer {
allow 172.23.23.0/24;
deny all;
}

Entweder IP Adresse oder Benutzerauthentifizierung

Nun ist es möglich das wenn die Freigabe der Unterseite nicht Aufgrund der IP Adresse erfolgt, automatisch die Benutzerauthentifizierung greift. Hierfür wird folgende Konfiguration benötigt:

satisfy any;
allow 192.168.1.0/24;
deny all;

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd-seite1;

[nginx] Weiterleitung an Tomcat

Damit nginx Anfragen an einen Tomcat weiterleiten kann, muss dieser zunächst einmal installiert werden.

Als erstes wird hierfür die aktuelle Java Version benötigt, diese kann auf der Java Seite bezogen werden. Im Anschluss die heruntergeladene Datei mit tar zxvf entpacken.
Damit der Tomcat unter einem eigenen Benutzer läuft, wurde der Benutzer tomcat angelegt und die entpackte Javaversion in das /home/tomcat Verzeichniss verschoben.

Wenn es beim Aufruf von /home/tomcat/java/bin/java -version zu dem Fehler ./java: /lib/ld-linux.so.2: bad ELF interpreter: Datei oder Verzeichnis nicht gefunden kommt, muss über yum install glibc.i686 das fehlende glibc Paket installiert werden.

Im Anschluss die Tomcat Version herunterladen und entpacken.

wget http://www.us.apache.org/dist/tomcat/tomcat-8/v8.0.24/src/apache-tomcat-8.0.24.tar.gz
tar zxvf apache-tomcat-8.0.24.tar.gz

Für den einfacheren Zugriff wurden zwei Softlinks erstellt.
ln -s apache-tomcat-8.0.24 tomcat
ln -s jdk1.8.0_51 java

Der Datei /home/tomcat/tomcat/conf/catalina.sh wurden folgende Zeilen hinzugefügt:
JAVA_HOME=/home/tomcat/java
CATALINA_PID=/home/tomcat/tomcat/tomcat.pid
CATALINA_HOME=/home/tomcat/tomcat

Und nachdem chmod 755 /home/tomcat/tomcat/bin/*.sh ausgeführt wurde, kann über /home/tomcat/tomcat/bin/startup.sh der Tomcat gestartet werden.

Möchte man direkt auf den Tomcat über den Port 8080 zugreifen, muss dieser zunächst in der Firewall freigeschaltet werden.
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

Damit der Tomcat beim neustart des Servers automatisch startet, wurde zunächst die Datei /etc/systemd/system/tomcat.service mit folgendem Inhalt angelegt.

# Starscript fuer tomcat
[Unit]
Description=Apache Tomcat
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/home/tomcat/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

Im Anschluss wurden folgende Zeilen auf der Kommandozeile ausgeführt:
chmod 755 /etc/systemd/system/tomcat.service
systemctl daemon-reload
systemctl enable tomcat

nginx Weiterleitung an den Tomcat

Damit nun die Anfragen vom nginx an den Tomcat weitergereicht werden, wurden in der Datei /etc/nginx/conf.d/ssl-seite2.conf folgende Zeilen hinzugefügt:

location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}

Outlook keine Terminerinnerung

Wer in Outlook oder OWA (Outlook Web App) einen Termin einstellt, kann eine Zeit vorgeben wann man erinnert werden möchte. Die Erinnerung erfolgt auf dem Windowsdesktop in Form des Erinnerungsfensters bzw. im OWA wird ein Overlay eingeblendet. Nun kann es jedoch vorkommen das diese Erinnerung nicht mehr erfolgt. Ein neues Outlook Profil oder der Start von Outlook mit dem Parameter /cleanreminders behebten das Problem nicht.

Um das Problem zu lösen wird mfcmapi benötigt, welches hier heruntergeladen werden kann.  Nach dem starten des Programms unter Other die Options öffnen und den Haken setzen bei Use the MDO_ONLINE flag when calling OpenMsgStore. Im Anschluss über Session Logon das betroffene Postfach auswählen und den Reminders Ordner unter dem Root Container löschen. Im Anschluss mfcmapi und Outlook schließen und nach einem erneuten Start von Outlook werden die Erinnerungen wieder angezeigt.