node.js XML-RPC Client

Da ich momentan eine Lösung gesucht habe um aus node.js eine XML-RPC Konforme Nachricht zu senden, stiess ich auf folgenden Ansatz.
Das Script für den XML-RPC Server ist hier zu finden.

 

Zuerst wird das modul “xmlrpc” benötigt. Dieses laden wir mit dem NPM Paketmanager nach.

npm install xmlrpc

Das benötigte Modul findet man nun unter

xmlrpc/lib/

Beispiel Script

/*
XML-RPC CLient
*/
/* Modul laden */
var fs = require('fs')
  , xmlrpc = require('./xmlrpc/lib/node-xmlrpc.js')

 // XML-RPC Client Optionen festlegen
  var clientOptions = {
    host: 'localhost'
  , port: 1337
  , path: '/'
  }
  // Man kann die Optionen auch als String uebergeben
  // var clientOptions = 'http://localhost:1337'
  var client = xmlrpc.createClient(clientOptions)

// HTTPS kann folgendermassen verwendet werden
/*
var secureClientOptions = {
host: 'localhost'
, port: 443
, path: '/'
}
var client = xmlrpc.createSecureClient(secureClientOptions)
*/

  client.methodCall('setArray', [['value1', 'value2']], function(error, value) {
    client.methodCall('getArray', null, function (error, value) {
      console.log('Get Array Response: ' + value)
    })
  })

/*
Verschiedene Beispiel Methoden
*/

// Einen Booleschen Wert senden
 client.methodCall('setBoolean', [true], function (error, value) {
    client.methodCall('getBoolean', null, function (error, value) {
      console.log('Get Boolean Response: ' + value)
    })
  })

// Ein Datumswert senden
  client.methodCall('setDate', [new Date(2016, 05, 08, 11, 35, 10)], function (error, value) {
    client.methodCall('getDate', null, function (error, value) {
      console.log('Get Date Response: ' + value)
    })
  })

  client.methodCall('setDouble', [24.99], function (error, value) {
    client.methodCall('getDouble', null, function (error, value) {
      console.log('Get Double Response: ' + value)
    })
  })

// Einen Integer Zahlenwert senden
  client.methodCall('setInteger', [23], function (error, value) {
    client.methodCall('getInteger', null, function (error, value) {
      console.log('Get Integer Response: ' + value)
    })
  })

// Einen String senden
  client.methodCall('setString', ['testString1'], function (error, value) {
    client.methodCall('getString', null, function (error, value) {
      console.log('Get String Response: ' + value)
    })
  })

// Mehrere Werte als Object definieren
  client.methodCall('setStruct', [{ nameOfValue: 'Go 1998!' }], function (error, value) {
    client.methodCall('getStruct', null, function (error, value) {
      console.log('Get Struct Response (on next line): ')
      console.log(value)
    })
  })

// Einen null Wert senden
 client.methodCall('fakeFault', null, function (error, value) {
    console.log('Fake Fault Response as Error (on next line): ')
    console.log(error)
  })

Back in blog!

Lange Zeit ist es her als der letzte Artikel verfasst wurde. Wie ich gerade feststellen musste wurde dieser im Oktober 2008 geschrieben. Diverse grössere Projekte zwangen mich dazu meine Prioritäten umzustrukturieren. Da blieb nicht mehr viel Zeit für einen Blog;)

Nun kommt jetzt mit ein bisschen mehr Zeit auch wieder neuer Content in den Blog.
Zunächst muss erstmal dem uralten in die Jahre gekommenen WordPress System ein Upgrade unterzogen werden. Und das Template ist auch in die Jahre gekommen und möchte gerne einem reDesign unterzogen werden.

Debian etch SSH Server und Client einrichten

Es war heute mal wieder an der Zeit meine SSH Keys neu zu generieren. Hier eine kleine Anleitung/Tutorial wie es funktioniert.

Erstmal braucht man den ssh-Server

apt-get install ssh

Wenn dieser installiert ist, wird das config file vom SSH Server auf die eigenen Gegebenheiten angepasst.

vim /etc/ssh/sshd_config

Beispiel Config File


 # $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
 ###
 # This is the sshd server system-wide configuration file. See
 # sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
 ###
 # The strategy used for options in the default sshd_config shipped with
 # OpenSSH is to specify options with their default value where
 # possible, but leave them commented. Uncommented options change a
 # default value.
 ###
 Port 22
 #Protocol 2,1
 #ListenAddress 0.0.0.0
 #ListenAddress ::
 ###
 # HostKey for protocol version 1
 #HostKey /etc/ssh/ssh_host_key
 # HostKeys for protocol version 2
 HostKey /etc/ssh/ssh_host_rsa_key
 HostKey /etc/ssh/ssh_host_dsa_key
 ###
 # Lifetime and size of ephemeral version 1 server key
 #KeyRegenerationInterval 1h
 #ServerKeyBits 768
 ###
 # Logging
 #obsoletes QuietMode and FascistLogging
 #SyslogFacility AUTH
 #LogLevel INFO
 ###
 # Authentication:
 ###
 #LoginGraceTime 2m
 #PermitRootLogin yes
 #StrictModes yes
 #MaxAuthTries 6
 ###
 #RSAAuthentication yes
 #PubkeyAuthentication yes
 #AuthorizedKeysFile .ssh/authorized_keys
 ###
 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
 #RhostsRSAAuthentication no
 # similar for protocol version 2
 #HostbasedAuthentication no
 # Change to yes if you don't trust ~/.ssh/known_hosts for
 # RhostsRSAAuthentication and HostbasedAuthentication
 #IgnoreUserKnownHosts no
 # Don't read the user's ~/.rhosts and ~/.shosts files
 #IgnoreRhosts yes
 ###
 # To disable tunneled clear text passwords, change to no here!
 PasswordAuthentication no
 #PermitEmptyPasswords no
 ###
 # Change to no to disable s/key passwords
 #ChallengeResponseAuthentication yes
 ###
 # Kerberos options
 #KerberosAuthentication no
 #KerberosOrLocalPasswd yes
 #KerberosTicketCleanup yes
 #KerberosGetAFSToken no
 ###
 # GSSAPI options
 #GSSAPIAuthentication no
 #GSSAPICleanupCredentials yes
 ###
 # Set this to 'yes' to enable support for the deprecated 'gssapi' authentication
 # mechanism to OpenSSH 3.8p1. The newer 'gssapi-with-mic' mechanism is included
 # in this release. The use of 'gssapi' is deprecated due to the presence of
 # potential man-in-the-middle attacks, which 'gssapi-with-mic' is not susceptible to.
 #GSSAPIEnableMITMAttack no
 ###
 ###
 # Set this to 'yes' to enable PAM authentication, account processing,
 # and session processing. If this is enabled, PAM authentication will
 # be allowed through the ChallengeResponseAuthentication mechanism.
 # Depending on your PAM configuration, this may bypass the setting of
 # PasswordAuthentication, PermitEmptyPasswords, and
 # "PermitRootLogin without-password". If you just want the PAM account and
 # session checks to run without PAM authentication, then enable this but set
 # ChallengeResponseAuthentication=no
 UsePAM yes
 ###
 #AllowTcpForwarding yes
 #GatewayPorts no
 X11Forwarding no
 #X11DisplayOffset 10
 #X11UseLocalhost yes
 #PrintMotd yes
 #PrintLastLog yes
 #TCPKeepAlive yes
 #UseLogin no
 #UsePrivilegeSeparation yes
 #PermitUserEnvironment no
 #Compression yes
 #ClientAliveInterval 0
 #ClientAliveCountMax 3
 #UseDNS yes
 #PidFile /var/run/sshd.pid
 #MaxStartups 10
 ###
 # no default banner path
 #Banner /some/path
 ###
 # override default of no subsystems
 Subsystem sftp /usr/lib/ssh/sftp-server
 ###
 # This enables accepting locale enviroment variables LC_* LANG, see sshd_config(5).
 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
 AcceptEnv LC_IDENTIFICATION LC_ALL

Nachdem die Konfiguration gespeichert ist, muss nun ein oder mehrere key’s erzeugt werden. Dies machen wir auf dem Gastsystem. In diesem Falle ist es auch eine Debian Sarge Linux installation.

Keyfiles erzeugen

 ssh-keygen -d

Hierbei vergibt man einen Namen und eine Passphrase (e.g. Passwort). Als Name würde ich den Namen von dem Computer benutzen. Somit weiss man nacher welcher key wozu gehört.

Nun sind zwei keyfiles generiert. Einmal der Public key (NAME.pub) und der Private key.

Der Public key muss nun auf den Server kopiert und umbenannt werden.

 cp /AUSGANGSVERZEICHNISS/NAME.pub /home/mustermann/./ssh/authorized_keys

Nun kann man sich per SSH an dem Server anmelden.

 ssh 192.168.0.1 -p 22 -i PRIVATEKEY_DATEI -l mustermann

Debian etch Ralink RT 2500 Treiber installation

Die Installation der Ralink RT 2500 PCMCIA Treiber installation gestaltet sich eigendlich recht einfach. Um die Treiber zu installieren muss man einen Rebuild der Kernel Treiber veranlassen.

1. apt-get install rt2500 module-assistant
2. module-assistant auto-install rt2500-source
3. modprobe rt2500
4. echo rt2500 >> /etc/modules
5. /etc/init.d/module-init-tools

Die gute Zeit

Viel ist zu tun, und mir bleibt keine Zeit mehr den Blog mit “Content” zu füllen. Grössere Projekte in der Pipeline zwingen mich das Bloggen etwas zu vernachlässigen.

Artikel die mir als nächstes vorschweben, für den Blog

  • OTRS auf einem Debian System aufsetzen und konfigurieren
  • Plesk php 1.4 -> 1.5 Migration

Red5 auf einem Debian etch System installieren

Nun habe ich Red5-0.6.3 auf meinem Debian 2.6.18.5-86 System installiert. Es läuft meiner Meinung nach um einiges stabiler als die Windows.X Version. Ausserdem war mir wichtig dass ich mit FFmpeg einzelne Frames aus dem flv Stream raushole und in jpeg zum Beispiel für Thumbnails speichere.

Da ich schon mal dabei war, habe ich das Java 5 SDK Update3 mit JDK noch installiert. Für kleine Java Spielereien und vor allem für Applet-Tests. Die Menüführung von dem Java Server über die „System Application Server Admin Console“ (SASAConsole ;) ) ist genial.

Installation Red5-0.6.3 Debian

(1.) Aktuelles Red5 Debian-Paket(*.deb) runterladen

(2.) Das Red5 Debian-Paket (in meinem Falle „red5_0.6.3-1_all.deb“) in den Ordner „/usr/lib/red5/“ kopieren. Vorher den Ordner “/usr/lib/red5″ anlegen!

CODE:

mkdir /usr/lib/red5

cp /ORDNERmitRED5download/red5_0.6.3-1_all.deb /usr/lib/red5/

(3.) Um Red5 zu installieren wird die “sun-java5-bin” Library benötigt, diese wird per „apt-get –f install“ mitsamt den Restlichen Java libs geholt. Da die Library „non-free“ ist muss in der /etc/apt/sources.list eine Zeile hinzugefügt werden.

CODE:

vim /etc/apt/sources.list

(folgende Zeile einfügen und mit “wq” speichern:
“deb http://ftp.de.debian.org/debian/ etch main contrib non-free” )

(4.) Nun zu dem Verzeichnis „/usr/lib/red5/“ wechseln und Red5 mit den erforderlichen Java Paketen installieren.

CODE:
apt-get –f install
(wenn gefragt mit „yes“ oder „y“ bestätigen um erforderliche Pakete runterzuladen)

Wenn alles geklappt hat müsste „done“ in der Konsole stehen und das der Red5 Server nun ausgeführt wird.

Um zu testen ob alles läuft einfach mal „netstat –tcp –aev“ eingeben und schauen ob Port: 1935 und 5080 offen sind (LISTEN). Wenn ja, im Browser „http://localhost:5080/demos/“ eingeben und die Demos aufrufen.

Tor, zum verstecken? XBrowser-Proxy Unmasking

Anonymität im Internet wird heutzutage immer wichtiger. Es gibt einige nützliche Tools wie TOR oder Squid auf dem Markt, die gar nicht mal so schwer für den Casual-User zu installieren sowie zu verwenden sind.

Die Installation ist hierbei der einfachste Schritt zur Anonymität im Netz. Der Fokus sollte bei dem Anwender eher darauf beruhen, Browserplugins wie JavaApplets oder Flash abzuschalten! Diese Browserplugins stellen eine direkt Verbindung über TCP/IP her. Und laufen somit nicht mehr über den Proxy!

Wenn also die besuchte Seite speziell programmierte JavaAplets, Flash, Active-X, Quicktime, Adobe PDF Plugins ausführt, und diese Plugins sich mit einem Server verbinden auf dem z.B. ein Perlscript läuft das automatisch über einen Socket die IP-Adresse entgegennimmt, ist die Anonymität hin

Also sollte man besser keine Browserplugins laufen haben wenn man denn Anonym im Netz surfen möchte. Ich empfehle sehr das Firefox-Addon “NOscript” zu benutzen. Um schonmal gegen die meisten XSS Angriffe gewapnet zu sein;)
Ich werde wohl in nächster Zeit zu dem Addon “NOscript” mal ein kleines Tutorial aufsetzen.

Demos

Demo von systemwebservice.ch, basierend auf Flash ActionScript2

Demo von yawnmoth, basierend auf einem Java Applet

Weitere Infos zu TOR und Anonymität im Internet:

Offizielle TOR Webseite (Mac User finden den Downloadlink auf der Offiziellen Webseite!)

Tor-Download (Windows User)

Was gibt mein Browser preis? (Hier kann man es testen, auf den Seiten von http://privacy.net/analyze/)

Infos und Download zu Firefox Add-on “NoScript”:

Offizielle Seite “NoScript” von der Firma InformAction (eng)

NoScript Download