Archiv der Kategorie: ubuntuusers

[dashing] Daten aus einer csv Datei

Neben der Datenübergabe per http Post können auch Werte aus einer csv Datei gelesen werden. Die Datei kann manuell erstellt werden, oder Sie wird aus einem Ticketsystem generiert und zur Verfügung gestellt. In diesem Beispiel befindet sich die csv Datei in dem Root Verzeichniss des Dashboard.

Aufbau der file.csv(Ticket,Kunde,Störung)

DB-2233,Kunde1,Ausfall Datenbank
AP-1294,Kunde2,schlechte Performance Webservice

Aufbau der jobs/tickets.rb:

require 'csv'
require 'json'

SCHEDULER.every '30s' do

ausgabe = {}
idx = 0
CSV.foreach('file.csv') do |row|
ausgabe[idx] = {:ticket => row[0],:kunde => row[1],:stoerung => row[2]}
idx += 1
end

send_event("majors",{ values: ausgabe.values })

end

[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

[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/;
}

[nginx] ssl Zertifikat einrichten

Für die sichere Kommunikation zwischen nginx Server und Browser empfiehlt es sich wie beim Apache ein SSL Zertifikat zu verwenden.

Damit nach der erfolgreichen Einrichtung ein Aufruf per https erfolgen kann, muss zunächst der Port 443 in der firewall freigeschaltet werden.
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Hier die benötigten Schritte um ein SSL Zertifikat zu erstellen:
yum install mod_ssl openssl
cd /etc/ssl
openssl genrsa -out seite2.key 2048
openssl req -new -key seite2.key -out seite2.csr
openssl x509 -req -days 365 -in seite2.csr -signkey seite2.key -out seite2.crt

Für den SSL Server block wurde die Datei /etc/nginx/conf.d/seite2.conf nach /etc/nginx/conf.d/ssl-seite2.conf kopiert.

Aufbau ssl-seite2.conf
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/seite2.crt;
ssl_certificate_key /etc/ssl/seite2.key;

index index.html;

server_name www.seite2.de;
access_log /var/vhosts/seite2/logs/ssl-seite2.access.log main;
error_log /var/vhosts/seite2/logs/ssl-seite2.error.log;

root /var/vhosts/seite2/www;
}

Damit der Besucher der Seite beim http Aufruf auf https weitergeleitet wird, wurden folgende Zeilen in der /etc/nginx/conf.d/seite2.conf hinterlegt:

if ($scheme = http) {
return 301 https://$server_name$request_uri;
}