Rss

  • youtube
  • google

LG G4 – Ein Custom Rom installieren

Mit der Veröffentlichung von Googles neuem High-End Flaggschiff (dem Pixel) wurde auch Android 7.1 herausgebracht. Die Hersteller haben sich bereits teilweise dazu geäußert, welche ihrer Geräte noch die neuste Android 7 Version erhalten werden – jedoch auch nicht vollständig bzw. ohne Terminangabe. T3n pflegt eine Liste mit Infos dazu, aus der sich entnehmen lässt, dass Android 7.1 bereits für das LG G5 ausgerollt wird. Ob und wann das Update für das LG G4 kommt ist noch offen.

Ich habe seit einigen Tagen das auf Android 7.1 basierende Custom-Rom CM14.1 (crDroid) auf meinem Handy installiert und bin bisher sehr zufrieden. Vorher hatte ich das Original Rom installiert und muss sagen, dass die Performance extrem zugenommen hat. Außerdem ist die Akkulaufzeit ein ganzes Stück besser als zuvor, da Android 7 auf eine „Batterieoptimierung“ setzt, wo durch das „stilllegen“ von Apps im Hintergrund der Akku geschont wird.

Wer also nicht warten kann, ist hier eine kleine Anleitung wie man das neueste Android auf sein LG G4 bekommt.
Das ganze passiert in 3 Schritten:

  1. Bootloader entsperren
  2. TWRP Recovery installieren
  3. Custom-Rom installieren

Continue Reading >>

Xiaomi Mi Flower Tester – Der smarte Blumenmonitor

20160622172713_83028Wer kennt es nicht: Da hat man sich mal wieder ein paar Tage nicht den Zimmerpflanzen gewidmet, schaut die ein oder andere nicht mehr ganz so grün drein. Wohl das gießen vergessen ?

Stellt sich die nächste Frage: Wie viel Wasser ist denn jetzt eigentlich gut für meine Pflanze? Was ist die optimale Temperatur? Muss man mal wieder Düngen, oder braucht sie mehr Sonnenlicht ?

Xiaomi hat hier ein nagelneues Gadget herausgebracht, welches das Wohlbefinden eurer Pflanzen überwachen soll. Der „Xiaomi Mi Plant Flowers Tester“. Ich habe mir das Teil für 10,50€ bei Gearbest aus China bestellt. Lieferzeit war ca. 10 Tage, aber nun habe ich das Gadget schon ein paar Tage bei mir im Wohnzimmer platziert.

Wie funktioniert es ?

Man steckt den Flower Tester einfach in die Erde neben die Wurzel der Pflanze. Dieser hat die folgenden Sensoren:

  • Feuchtigkeitsensor (Muss bewässert werden?)
  • Temperatursensor (Stimmt das Raumklima?)
  • Lichtsensor (Bekommt die Pflanze genug Licht?)
  • Nährstoffgehalt als elektrische Leitfähigkeit in µS/cm (Stimmt der Düngeranteil?)

Das ganze kommt mit einer Handelsüblichen CR2032 Knopfzellenbatterie aus.  Zur Laufzeit habe ich noch keine Informationen gefunden, werde euch aber auf dem Laufendem halten.

Continue Reading >>

Raspberry Pi 3 – Unnötige Pakete entfernen (Jessie)

Die beliebteste Distribution für den Raspberry Pi, das Raspbian wird mittlerweile in 2 Versionen zum Download angeboten. Einmal mit der neuen „Pixel“ Desktop Oberfläche und einmal als Lite Variante. Die „Pixel“ Version ist mittlerweile auf über 4GB angewachsen, was an den dutzenden vorinstallierten Apps liegt.

Den meisten kram wie Minecraft oder irgendwelche Entwicklungsumgebungen braucht man in der Regel ja eigentlich nie – also weg damit.
Ich habe mal eine Liste gemacht, mit den zusätzlich installierten Apps:

wolfram-engine
minecraft-pi
python-minecraftpi
sonic-pi
python3-numpy
smartsim
penguinspuzzle
timidity
scratch
nuscratch
python3-pygame
python-pygame
python-tk
python-picraft
bluej
claws-mail
greenfoot
minecraft-pi
nodered
geany
libreoffice*
xpdf

Um die Pakete zu deinstallieren folgenden Befehl absetzen:

apt-get remove wolfram-engine minecraft-pi python-minecraftpi sonic-pi python3-numpy smartsim penguinspuzzle timidity scratch nuscratch python3-pygame python-pygame python-tk python-picraft bluej claws-mail greenfoot minecraft-pi nodered geany libreoffice* xpdf

Anschließend gibt es noch eine Menge an nicht mehr benötigten Abhängigkeiten, die man ebenfalls deinstallierten sollte:

apt-get autoremove --purge

Was sagt ihr, gibt es noch weitere Pakete die man aufnehmen sollte ?

VMware Horizon View 6/7 – Smartcard Authentifizierung aktivieren

Um die Smartcard Authentifizierung des View Connection Servers zu aktivieren sind folgende Schritte notwendig.
Die Authentifizierung per Smartcard ist dann möglich bei Benutzerung von: View Horizon Client, PCoIP / Teradici, aber auch für die Administrationsoberfläche.

Zuerst muss mann ein Java Keystore anlegen in den das Root Zertifikat der eigenen Zertifizierungsstelle importiert wird.
Wenn man ein Zwischenzertifikat (Intermediate) benötigt, muss auch dieses Zertifikate importiert werden. (Einfach Schritt 1 wiederholen).

Schritt 1: Root Zertifikat in Keystore importieren

cd C:\Program Files\VMware\VMware View\Server\jre\bin
keytool.exe -import -alias ZertifikatsBeschreibung -file C:\temp\caRoot-base64.cer -keystore ..\..\sslgateway\conf\trust.key

Jetzt muss ein Passwort für den Keystore festgelegt werden. Das VMware Default Kennwort sollte hier eingetragen werden: secret
Mann kann auch ein eigenes Password wählen, dies muss dann aber auch in der locked.properties Datei eingetragen werden und bringt nicht wirklich eine höhere Sicherheit.Zusätzlich muss man dem angezeigtem, importiertem Zertifikat vertrauen (yes), damit es in den Keystore hinzugefügt wird.

Enter keystore password: secret
Re-enter new password:secret
Owner: your Certificate Information
Issuer: your Certificate Information
Serial number: your Serial Number
Valid from: Sun Jun 20 21:17:18 CEST 2010 until: Wed Jun 20 21:27:17 CEST 2040
Certificate fingerprints:
MD5:  your fingerprints
SHA1: your fingerprints
SHA256: your fingerprints
your fingerprints
Signature algorithm name: SHA1withRSA
Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.4.1.311.21.1 Criticality=false
0000: 02 01 00                                           ...

#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]

#3: ObjectId: 2.5.29.15 Criticality=false
KeyUsage [
DigitalSignature
Key_CertSign
Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
.....
]
]

Trust this certificate? [no]:  yes
Certificate was added to keystore

Java Keystore erstellen

Schritt 2: locked.properties anlegen / ergänzen

Jetzt wechseln wir in das folgende Verzeichnis:

C:\Program Files\VMware\VMware View\Server\sslgateway\conf

Dort sollte sich nun unserer Keystore (trust.key) befinden. Damit der View Connection Server weiß, dass er die Datei laden soll, müssen wir nun eine neue Datei anlegen (falls nicht vorhanden) die: locked.properties heißt.
Die Datei mit Notepad editieren und mit folgenden Inhalt füllen:

trustKeyfile=trust.key
trustStoretype=jks
useCertAuth=true

Schritt 3: View Connection Server Service neustarten

Entwerder per CMD:

net stop wsbroker
net start wsbroker

Oder per services.msc
view-restart-service

Schritt 4: Smartcard Authentication innerhalb des View Administrators aktivieren

Nun muss noch im View Administrator die Smartcard Authentication aktiviert werden. Es gibt hier zwei Einstellungsmöglichkeite: Optional und Required. Bei Optional kann man sich wie wie gewohnt per User/Passwort authentifizieren. Wird eine Smartcard erkannt, wird diese aber gewählt. Bei Required ist eine Anmeldung per Smartcard verpflichtend.

Die Einstellung findet man unter: View Configuration -> Servers -> Connection Servers -> Server auswählen -> Edit -> Authentication

view-smartcard

Um zu überprüfen ob alles korrekt ist, kann man im debug log nach „useCertAuth“ suchen. Die Logs liegen unter: „C:\ProgramData\VMware\VDM\logs“

2016-09-16T13:43:50.488+02:00 DEBUG (1F48-1A98) <Front> [e] useCertAuth is configured as: false
2016-09-16T13:43:50.488+02:00 INFO (1F48-1A98) <Front> [e] Smart Card/Certificate Authentication will not be used as useCertAuth is false

bzw.

2016-09-16T14:56:15.505+02:00 DEBUG (1CD0-1D88) <Front> [e] useCertAuth is configured as: true
2016-09-16T14:56:15.505+02:00 INFO (1CD0-1D88) <Front> [e] Smart Card/Certificate Authentication enabled at gateway

Fertig 😉

SMTP Warteschlange (postqueue) unter Ubuntu leeren

Hat man aufgrund eines Problems auf einmal eine riesige Anzahl Mails in der SMTP Warteschlange eines Servers kann man diese auch händisch leeren.
Natürlich nur wenn die Mails nicht mehr relevant sind. Wie dies geht, bzw. wie man auch nur einzelne Mails aus dem Ausgang entfernt ist hier kurz beschrieben.

Klappt unter Ubuntu 14.04, sollte aber auch bei älteren Versionen sowie Debian funktionieren, da fast die gleichen Postfix Versionen eingesetzt werden.

Um die SMTP Warteschlange anzeigen zu lassen:

postqueue -p 

Führt zu der Ausgabe:


27389E2449 609 Mon Aug 8 13:17:40 nagios@domain.de
(host smtp.host[1.2.3.4] said: 451-Unknown sender ip address. check your settings. 451 2016-08-11-120-dad7d58089e2f4ab10811ddf75be38fd (in reply to MAIL FROM command))
absender@domain.de

-- 973 Kbytes in 1090 Requests.

Um die Warteschlange komplett zu löschen wird dies mit dem Befehl gemacht:

postsuper -d ALL
postsuper: Deleted: 1090 messages

Alternativ kann man aber auch nur einzelne Mails löschen indem man die ID angibt:

postsuper -d 27389E2449
postsuper: Deleted: 1 messages

Wenn man im Anschluss nochmal mit postqueue -p abfragt sollte man eine leere Warteschlange haben:

postqueue -p
Mail queue is empty

Vmware Horizon View 7 – Composer – Fix: „Internal View Composer Error“

vmwareviewcomposer

Beim Installieren eines neuen View Composers bin ich auf den folgenden Fehler gestoßen. Ich dachte zuerst an ein Zertifikatsproblem, da in den Logs zuvor SSL sehr oft erwähnt wurde. Bei genauerem hinsehen fällt aber ein „Access Denied“ auf, welches mich dann auf den richtigen Weg brachte.

Hat der Benutzer, welcher für die vCenter Anbindung verwendet wird, die passenden „lokalen“ Rechte auf dem Server ?
In meinem Setup habe ich den View Composer auf dem vCenter Server installiert und verwende Domänen-Benutzer. Ich hatten dem Benutzer volle Administrationsrechte im vCenter gegeben, jedoch keine lokalen Rechte (in Windows).

Lösung:

Also dem Benutzer der auch für den vCenter Zugriff verwendet wird lokale Administrationsrechte gegeben.
Anschließend den View Composer Dienst neustarten und über den View Administrator erneut probieren.

2016-07-12T15:52:34.598+02:00 DEBUG (0B40-0FA4) <Thread-43> [TrackerObject] Sync complete: DomainHealth:SERVERNAME|DOMAIN to version: 11
2016-07-12T15:52:34.600+02:00 DEBUG (0B40-0FA4) <Thread-43> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“ATTR_DOMAIN_NAME“,“type“:“STRING“,“stringValue“:“DOMAIN“}},{„type“:“SET“,“item“:{„name“:“ATTR_DOMAIN_DNS“,“type“:“STRING“,…
2016-07-12T15:52:34.794+02:00 DEBUG (0B40-0E4C) <Thread-51> [TrackerObject] Sync complete: certificatessohealth:SERVERNAME to version: 11
2016-07-12T15:52:34.795+02:00 DEBUG (0B40-0E4C) <Thread-51> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“name“,“type“:“STRING“,“stringValue“:“SERVERNAME“}},{„type“:“SET“,“item“:{„name“:“enrollserverconnection“,“type“:“NVPLIST“,“nvpList…
2016-07-12T15:52:34.795+02:00 DEBUG (0B40-0ED4) <EnhancedSecurityManager$EnhancedSecurityTask-1468330894772> [EnhancedSecurityManager$EnhancedSecurityTask] Current mode: ENHANCED current level: ENHANCED
2016-07-12T15:52:45.905+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [CertMatchingTrustManager] Created new CertMatchingTrustManager com.vmware.vdi.ssl.CertMatchingTrustManager@23e07a96 with ThumbprintManager com.vmware.vdi.desktopcontroller.LdapThumbprintManager@4320146b
2016-07-12T15:52:45.906+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] Creating new HardenedSSLSocketFactory, caller=com.vmware.vdi.ssl.HardenedSSLSocketFactory.<init>(SourceFile:67)
2016-07-12T15:52:45.907+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL provider: SunJSSE version 1.8
2016-07-12T15:52:45.907+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL protocol: TLSv1.2
2016-07-12T15:52:45.908+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL secure protocols (2): [TLSv1.2, TLSv1.1]
2016-07-12T15:52:45.908+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [HardenedSSLSocketFactory] SSL cipher suites (6): [TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA]
2016-07-12T15:52:45.953+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.046+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.806+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:46.834+02:00 DEBUG (0B40-128C) <ajp-nio-8009-exec-4> [ViewFlexFactory] com.vmware.vdi.admin.ui.bean.VCServerBean.validateCertificate 37242 ms
2016-07-12T15:52:46.852+02:00 DEBUG (0D30-1344) <AJP-42> [SimpleAJPService] (ajp:admin:Request16) Response 200 OK
2016-07-12T15:52:53.873+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) Request from /10.0.101.55: POST /admin/amfproxy/amfsecure
2016-07-12T15:52:53.875+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) Gateway headers sent to the broker:
2016-07-12T15:52:53.875+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) gateway-type = [SG-cohosted]
2016-07-12T15:52:53.876+02:00 DEBUG (0D30-1068) <Thread-27> [SimpleAJPService] (ajp:admin:Request17) gateway-location = [Internal]
2016-07-12T15:52:54.585+02:00 DEBUG (0B40-0FB4) <CBHealthUpdate> [TrackerObject] Sync complete: BrokerHealth:SERVERNAME to version: 17
2016-07-12T15:52:54.587+02:00 DEBUG (0B40-0FB4) <CBHealthUpdate> [TrackerManager] Sending message: (TrackerMessage SYNC {}: {nn=SERVERNAME, u=[{„type“:“SET“,“item“:{„name“:“HEALTH_LAST_UPDATE_TIME“,“type“:“LONG“,“longValue“:1468331574585}},{„type“:“SET“,“item“:{„name“:“ATTR_BROKER_VERSION“,“type“:“ST…
2016-07-12T15:52:54.603+02:00 DEBUG (0B40-0938) <MessageFrameWorkDispatch> [MessageFrameWork] ValidateCertificateChain ok=1, msecs=0
2016-07-12T15:52:55.079+02:00 ERROR (0B40-1284) <ajp-nio-8009-exec-2> [VCServerBean] Internal View Composer error. Contact your administrator.
2016-07-12T15:52:55.083+02:00 DEBUG (0B40-1284) <ajp-nio-8009-exec-2> [ViewFlexFactory] Internal View Composer error. Contact your administrator. com.vmware.vdi.admin.ui.common.ViewFlexFactory$ViewProxy.invoke(SourceFile:125)
com.vmware.vdi.admin.ui.common.FlexRemoteException: Internal View Composer error. Contact your administrator.
at com.vmware.vdi.admin.ui.common.FlexFaultHandler.systemError(SourceFile:70)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1758)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1710)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vmware.vdi.admin.ui.common.ViewFlexFactory$ViewProxy.invoke(SourceFile:113)
at com.sun.proxy.$Proxy60.validateViewComposerCertificate(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:386)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:178)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1468)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1044)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:101)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:154)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:42)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:63)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:190)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:328)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:373)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:720)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
at com.vmware.vdi.admin.ui.servlet.AMFProxyServlet.a(SourceFile:90)
at com.vmware.vdi.admin.ui.servlet.AMFProxyServlet.doPost(SourceFile:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.filters.FailedRequestFilter.doFilter(FailedRequestFilter.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.support.ViewAdminFilter.doFilter(SourceFile:103)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.admin.be.filters.CertificateAuthFilter.doFilter(SourceFile:140)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.vmware.vdi.admin.be.filters.DisableUrlSessionFilter.doFilter(SourceFile:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:868)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: Access is denied.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.vmware.SviService.Admin.v3_5.Binding.SslBasicAuthEndpointStub.getVersion(SslBasicAuthEndpointStub.java:2015)
at com.vmware.vdi.svisupport.SVIConnection.testConnection(SourceFile:147)
at com.vmware.vdi.admin.be.VCManager.validateSVICert(SourceFile:1235)
at com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate(SourceFile:1740)
… 61 more
2016-07-12T15:52:55.083+02:00 DEBUG (0B40-1284) <ajp-nio-8009-exec-2> [ViewFlexFactory] com.vmware.vdi.admin.ui.bean.VCServerBean.validateViewComposerCertificate 1201 ms
2016-07-12T15:52:55.153+02:00 DEBUG (0D30-1300) <AJP-25> [SimpleAJPService] (ajp:admin:Request17) Response 200 OK
2016-07-12T15:53:30.182+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [bm] Item on queue „Inbound JMS Worker“ for 55 us, queue length = 0, available workers = 9 of 10
2016-07-12T15:53:30.182+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [r] (-) RequestGetStatus: serverType = ice, server = null, localHostname = SERVERNAME
2016-07-12T15:53:30.183+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [cc] (-) Queuing request ABSGC29-b
2016-07-12T15:53:30.183+02:00 DEBUG (0D30-1008) <ABSGC29> [cc] Handling request ABSGC29-b, on queue for 33uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-1008) <ABSGC29> [cc] Queuing receipt ABSGC-11
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-1180) <ABSGC29:C> [cm] Handling message ABSGC-11, on queue for 28uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-0E80) <MsgWorker#5> [cs] (-) Queuing request PSGC28-10
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-100C) <PSGC28> [cs] Handling request PSGC28-10, on queue for 26uS
2016-07-12T15:53:30.186+02:00 DEBUG (0D30-100C) <PSGC28> [cs] Sending GETCOUNTERS request PSGC28-10

Vmware View Horizon 7 – SSL Zertifikat austauschen

Für ein Testsystem habe ich den neuen View Horizon 7 Connection Server installiert und wollte das selbstsignierte Zertifikat durch ein Zertifikat der Windows CA austauschen.
Normalerweise hat es immer geklappt über die MMC einfach ein neues Computerzertifikat zu erzeugen, und den Friendly Name umzusetzen.

Jedoch bekam ich diesmal folgende Fehlermeldung:

2016-07-12T08:44:31.019+02:00 INFO (1188-0C10) <Thread-1> [v] The Secure Gateway Server is checking for connection attempts on http://*, port:80
2016-07-12T08:44:31.065+02:00 INFO (1188-0C10) <Thread-1> [v] The Secure Gateway Server is using SSL certificate store of type KeyVault
2016-07-12T08:44:31.065+02:00 WARN (1188-0C10) <Thread-1> [KeyVaultKeyStore] (NetHandler) Failed to get certificate chain for: "vdm"
2016-07-12T08:44:31.065+02:00 WARN (1188-0C10) <Thread-1> [KeyVaultKeyStore] (NetHandler) Certificate chain not found for alias: vdm
2016-07-12T08:44:31.081+02:00 INFO (1188-0C10) <Thread-1> [v] The Secure Gateway Server is listening on https://*, port:443
....
2016-07-12T08:46:22.939+02:00 ERROR (1188-1AE4) <pool-1-thread-1> [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.940+02:00 ERROR (1188-1AE4) <pool-1-thread-1> [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.941+02:00 ERROR (1188-1AE4) <pool-1-thread-1> [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.942+02:00 ERROR (1188-1AE4) <pool-1-thread-1> [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore
2016-07-12T08:46:22.963+02:00 ERROR (1188-0938) <pool-1-thread-2> [KeyVaultKeyStore] (NetHandler) No qualifying certificates in keystore

Also habe ich nochmal von Hand eine Zertifikatsanforderung mit OpenSSL erstellt:

openssl req -new -sha256 -nodes -newkey rsa:4096 -subj '/C=DE/ST=Hessen/L=Location/O=Company/OU=TEST/CN=server.fqdn.info/emailAddress=support@domain.de/subjectAltName=altFQDN,DNS.1=view.domain.info' > ssl.csr
Generating a 4096 bit RSA private key
....................................................................................................................................................++
..........................................................................................++
writing new private key to 'privkey.pem'
-----

Anschließend über die Windows Zertifizierungsstelle signiert (https://certsrv.domain.info/certsrv/). Als Base64 Zertifikat wieder herunterladen und ein PFX generieren:

openssl pkcs12 -export -in certnew.cer -inkey privkey.pem -out cert.pfx
Enter Export Password:
Verifying - Enter Export Password:

Anschließend das Zertifikat über die MMC (Certificates) in den Personal Zertifikatsspeicher importieren.
Vmware View erstellt automatisch ein selbst signiertes Zertifikat, welches den Friendly Name „vdm“ trägt. Dieser muss umbenannt werden, z.b. „vdm-original“.
Bei dem eigenen Zertifikat muss dann der Friendly Name „vdm“ über (Rechtsklick – Properties) gesetzt werden.

friendlycertname

Anschließend den „Vmware View Connection Server“ Dienst neustarten.

img_001

QNAP – Dateinamen von ISO-8859-1 in UTF8 umbenennen

Es war an der Zeit Daten eines QNAP-NAS auf einen anderen Netzwerkspeicher zu migrieren. Als Tool hatte ich dazu WinSCP verwendet um die Dateien via SCP auf einer externen Festplatte zwischenzuspeichern. Jedoch hat es mir dabei alle Umlaute aus Dateinamen in nicht lesbare Zeichen umgewandelt:

Sperrmüll.jpg wurde zu Sperrm¦ll.jpg
Häuser.docx wurde zu H¦user.docx

Im Nachhinein lag es vermutlich an der falschen Codepage die im QNAP Webinterface falsch eingestellt war. Eine nachträgliche Änderung brachte jedoch auch keine Verbesserung mehr.
Also mussten ich die Dateien alle wieder korrekt umbenennen. Das habe ich mit Hilfe des ConvMV Tools gemacht, wie hier beschrieben:

Schritt 1: Perl installieren (OPKG Paket)

Über das  QNAP Webinterface kann über dass „App Center“ Perl installiert werden. Dies benötigen wir um später das Tool „convmv“ auszuführen.

Schritt 2: ConvMV herunterladen

Eventuell gibt es schon eine neuere Version, kann hier nachgeschaut werden.

wget https://www.j3e.de/linux/convmv/convmv-2.0.tar.gz --no-check-certificate

Schritt 3: ConvMV Entpacken

tar xzf convmv-2.0.tar.gz
cd convmv-2.0/
config_util

Schritt 4: ConvMV / Perl Pfad anpassen

Da bei QNAP der Pfad für Extensions nicht unter /bin/ liegt muss in der ersten Zeile des convmv Skriptes der korrekte Perl Pfad angegeben werden. Dieser sollte bei QNAP dieser sein, kann bei Synology ggf. variieren:

#!/share/MD0_DATA/.qpkg/Optware//bin/perl

Schritt 5: ConvMV im Testmodus durchlaufen lassen

Hier wird angegeben, dass wir Dateien aus dem Format „ISO-8859-1“ in „UTF8“ umbenennen wollen. Es wird noch nichts umbenannt, nur eine Ausgabe mit den Änderungen vorgegeben.

/share/Constey/temp/convmv-2.0/convmv -f iso-8859-1 -t utf8  -r /share/Constey/Privat/

Schritt 6: Änderung durchführen

Sieht die Ausgabe korrekt aus, wird der Parameter „–notest“ angehängt, damit werden die Dateien dann auch endgültig umbenannt.

Bsp:
mv "/share/Constey/Privat/Garage Sperrm¦ll.jpg" "/share/Constey/Privat/Garage Sperrmüll.jpg"
mv "/share/Constey/Privat/H¦user.docx" "/share/Constey/Privat/Häuser.docx"
Skipping, already UTF-8: /share/Constey/Privat/Pictures/2016-04-16/Königslutter (16).jpg
Skipping, already UTF-8: /share/Constey/Privat/Pictures/2016-04-16/Königslutter (7).jpg
Ready! I converted 2002 files in 155 seconds.

Codepage im QNAP Webinterface einstellen:

Unter „Systemeinstellungen -> Allgemeine Einstellungen“ findet man den Reiter „Codeseite“ dort kann man die Dateinamenkodierung auf „Westeuropäisch/Latin1“ umstellen.

Fix Raspberry Pi 3 Wifi after Upgrade from Pi 2

Ich hatte ein Raspberry Pi 2 Image (Debian Wheezy) per rpi-update, und apt-get dist-upgrade bereit für den Raspberry Pi 3 gemacht, und wollte dann beim neuen Pi 3 das integrierte WLAN benutzen. Klappte leider auf anhieb nicht wie erwartet, denn das wlan0 interface fehlte und ich bekam Fehler wie:

iwconfig wlan0 power off
Error for wireless request "Set Power Management" (8B2C) :
SET failed on device wlan0 ; No such device.

Fehler ist wohl dass die Bibliotheken für den Chipsatz fehlen (brcmfmac4340-sdio.bin). Das kann man schnell verifizieren per:

ls -l /lib/firmware/brcm/

-rw-r--r-- 1 2625 2625 96224 Jun 15 2014 bcm43xx-0.fw
-rw-r--r-- 1 2625 2625 180 Jun 15 2014 bcm43xx_hdr-0.fw
-rw-r--r-- 1 2625 2625 397312 Oct 7 2014 brcmfmac43143.bin
-rw-r--r-- 1 2625 2625 385067 Jun 15 2014 brcmfmac43143-sdio.bin
-rw-r--r-- 1 2625 2625 455745 Jun 15 2014 brcmfmac43241b0-sdio.bin
-rw-r--r-- 1 2625 2625 403855 Jun 15 2014 brcmfmac43241b4-sdio.bin
-rw-r--r-- 1 2625 2625 253748 Jun 15 2014 brcmfmac4329-sdio.bin
-rw-r--r-- 1 2625 2625 222126 Jun 15 2014 brcmfmac4330-sdio.bin
-rw-r--r-- 1 2625 2625 451566 Jun 15 2014 brcmfmac4334-sdio.bin
-rw-r--r-- 1 2625 2625 569291 Jun 15 2014 brcmfmac4335-sdio.bin
-rw-r--r-- 1 2625 2625 219557 Jun 15 2014 brcmfmac43362-sdio.bin
-rw-r--r-- 1 2625 2625 507752 Jun 15 2014 brcmfmac4354-sdio.bin

Man kann die Bibliotheken manuell aus dem github fork herunterladen:

cd /lib/firmware/brcm/
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin
wget https://raw.githubusercontent.com/RPi-Distro/firmware-nonfree/master/brcm80211/brcm/brcmfmac43430-sdio.txt

Damit diese aktiv werden nochmal den Pi neustarten und dann kanns losgehen.

Den Stromsparmodus des Wifi Chips kann man deaktivieren mit:

iwconfig wlan0 power off

Nach aktiven WLAN’s in der Umgebung kann man dann auch suchen per:

iwlist wlan0 scan

Mopidy Musicbox/Webradio auf dem Raspberry Pi installieren

Was ist Mopidy überhaupt ? Mopidy ist ein „Music Player Daemon“ – in kurz ein MPD Server, welcher Music sowohl lokal aber auch streamen kann.
So kann man zum Beispiel ein Raspberry Pi nehmen, Lautsprecher anschließen und die Software installiere. Und schon hat man ein Musikspieler den man per Webinterface oder auch Handyapp fernsteuern kann.
Mittlerweile gibt es auch viele Integrationen wie zum Beispiel für Spotify, Soundcloud, Youtube, Radio, iTunes etc. sodass man auch Musik von dort einbinden kann.
Eine kleine Auflistung der verschiedenen (sehr kreativen!) Werke findet man hier:

www.pimusicbox.com

www.pimusicbox.com

Ich habe hier eine kurze Anleitung geschrieben, wie ihr Mopidy auf eurem Raspberry Pi (oder auch jedem anderem Ubuntu System) installieren könnt und die Grundkonfiguration vornehmt.

1. Das offizielle APT Repository von Mopidy seinem System hinzufügen.

wget -q -O - https://apt.mopidy.com/mopidy.gpg |sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list

2. Mopidy installieren. Ich habe zusätzlich noch die Spotify Erweiterung (mopidy-spotify) installiert. Eine Übersicht der Web-Extensions, sowie die Installationsanleitung findet ihr hier.

apt-get update && apt-get dist-upgrade && apt-get install mopidy mopidy-spotify

Quelle: mopidy.com

3. Mopidy das erste Mal starten. Einfach Ausführen, damit werden alle notwendigen Verzeichnisse und die Standard Konfiguration erzeugt.

pi@raspberrypi:~ $ mopidy
INFO Starting Mopidy 1.1.1
INFO Loading config from builtin defaults
INFO Loading config from command line options
INFO Creating dir /home/pi/.cache/mopidy
INFO Creating dir /home/pi/.config/mopidy
INFO Creating dir /home/pi/.local/share/mopidy
INFO Loading config from builtin defaults
INFO Loading config from command line options
INFO Creating file /home/pi/.config/mopidy/mopidy.conf
INFO Initialized /home/pi/.config/mopidy/mopidy.conf with default config
INFO Enabled extensions: mopify, mpd, http, moped, stream, m3u, material-webclient, softwaremixer, file, local
INFO Disabled extensions: spotify
WARNING Found spotify configuration errors, the extension has been automatically disabled:
WARNING spotify/username must be set.
WARNING spotify/password must be set.
WARNING Please fix the extension configuration errors or disable the extensions to silence these messages.
INFO Starting Mopidy mixer: SoftwareMixer
INFO Starting Mopidy audio
INFO Starting Mopidy backends: StreamBackend, M3UBackend, FileBackend, LocalBackend
INFO Audio output set to "autoaudiosink"
INFO Creating dir /home/pi/.local/share/mopidy/m3u
INFO Loaded 0 M3U playlists from /home/pi/.local/share/mopidy/m3u
INFO Creating dir /home/pi/.local/share/mopidy/local
INFO No local library metadata cache found at /home/pi/.local/share/mopidy/local/library.json.gz. Please run <code>mopidy local scan</code> to index your local music library. If you do not have a local music collection, you can disable the local backend to hide this message.
INFO Loaded 0 local tracks using json
INFO Starting Mopidy core
INFO Starting Mopidy frontends: QueueManagerFrontend, MpdFrontend, HttpFrontend
INFO MPD server running at [::ffff:127.0.0.1]:6600
INFO HTTP server running at [::ffff:127.0.0.1]:6680

4. Stoppen und Konfiguration anpassen
Mit STRG+C beenden wir wieder den Mopidy Server und passen jetzt die Konfiguration an, sodass wir den Server aus unserem Netzwerk aus erreichen können.

vi /home/pi/.config/mopidy/mopidy.conf

Hier passen wir den Hostname von 127.0.0.1 auf 0.0.0.0 an, welche für alle IP-Adressen des Pi steht.
Wer Spotify benutzt muss an dieser Stelle noch die Zugangsdaten seines Premium Account eintragen. Die restlichen Einstellungen ergeben sich eigentlich.

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600

[http]
enabled = true
hostname = 0.0.0.0
port = 6680

Ihr könnt Mopidy auch über folgende Befehle kontrollieren:

sudo service mopidy start
sudo service mopidy stop
sudo service mopidy restart

5. Mopidy Webinterface aufrufen
Wenn Mopidy gestartet ist, könnt ihr das Webinterface über den oben eingestellten Port (Standard = 6680) erreichen. Also:

http://raspberryIP:6680

Ihr habt dann eine Auflistung aller installierten Webinterfaces und könnt loslegen !