Ein Quellcode Schnellstarter-Paket Script für RetroShare für Leute die ihr RetroShare unter Ubuntu / Debian Linux selber komplilieren wollen.

RetroShare selber zu kompilieren ist für den normalen Anwenderbedarf nicht zu empfehlen. Eine Installation aus den Paketquellen ist für den normal Anwender sinnvoller auf Grund der automatischen Aktuallisierung und Fehlerfreiheit für wichtige Funktionen.

Was ist RetroShare?
Ein kurzer Auszug der RetroShare Webseite:

RetroShare ist eine betriebssystemunabhängige Open Source Platform, die eine private und sichere, dezentralisierte Kommunikation ermöglicht.
Diese läßt Sie sicher chatten oder Daten austauschen mit Freunden oder der Familie, indem ein vertrauenswürdiger Bereich des Netzes erzeugt wird durch die Authentifizierung von Partnern und der OpenSSL Verschlüsselung jeglicher Kommunikation.
RetroShare ermöglicht gemeinsame Datennutzung, Chats, Nachrichten, Foren oder andere Nachrichtenkanäle.

Einige Funktionen in RetroShare enthalten jedoch noch Bugs. (Stand: 28.08.12) Ich selber nutze das Programm trotz den kleinen Mängeln.

RetroShare Schnellstarter Script-Umfang

  • RetroShare Kompilierungs-Abhängigkeiten installieren
  • RetroShare Quellcode Dateien herunterladen
  • RetroShare kompilieren

Vorgehensweise zum Script
RetroShare Quellcode Schnellstarter-Paket im für den RetroShare Quellcode vorgesehenem Verzeichnis als .sh Datei erstellen.
Script Datei ausführbar machen (chmod +x ***DEIN DATEINAME***) und starten (./***DEIN DATEINAME*** :P)

#!/bin/sh
 
## get all depencies
sudo apt-get install subversion libxss-dev libqt4-dev g++ libgpgme11-dev libgpg-error-dev libupnp-dev libssl-dev libgnome-keyring-dev libbz2-dev
 
## recieve the install dir (current dir)
DIR=$(pwd)
 
## recieve copy of source in current dir
svn co https://retroshare.svn.sourceforge.net/svnroot/retroshare/trunk/ ./
 
## compile each part
cd $DIR/libbitdht/src && qmake && make clean && make -j2
cd $DIR/openpgpsdk/src && qmake && make clean && make -j2
cd $DIR/libretroshare/src && qmake && make clean && make -j2
cd $DIR/retroshare-gui/src && qmake && make clean && make -j2

Wenn alles gut verläuft. Kannst du nach dem Kompilierungs-Vorgang RetroShare über die gerade erstellte Datei ***DEIN RETROSHARE VERZEICHNIS***/retroshare-gui/src/RetroShare starten.

Die Kommandos können angepasst ebenso zum manuell kompilieren in der Shell ausgeführt werden. Hierbei ist nur auf den Verzeichnispfad ($DIR, = das RetroShare Verzeichnis) zu achten.

Keine Kommentare »
 

Hierbei handelt es sich um ein sehr exotisches Shell Script, das ich verwedet hatte um ein „vergewaltigtes“ Magento Theme zu säubern. Der beauftrage Freie Mitarbeiter hatte in einer Kopie des Magento base Theme gearbeitet. Natürlich hat er alle Dateien kopiert und das base Theme in default verschoben. Nachdem ich herausgefunden hatte um welches Theme es sich handelte wollte ich noch die Dateien entfernen die das Theme vom base Theme erbt. Ich habe dieses Script verwendet, das Dateien in gleichen Verzeichnisstrukturen abgleicht und gegebenfalls (beim Enthalten sein in beiden Strukturen, in selber Position) entfernt.

#! /bin/sh
 
## Input checks
if [ ! -n "$1" ] || [ ! -n "$2" ]; then
	echo "#
# diff_file_struct.sh - Reduce a file struct from a base file struct via MD5 sums (files and empty folders only)
# Usage: diff_file_struct.sh <BASE_STRUCT> <STRUCT_TO_REDUCE>
# "
	exit 1
fi
 
if [ ! -e "$1" ]; then	
	echo "# Parameter 1: Dir doesn't exist"
	exit 1
fi
 
if [ ! -e "$2" ]; then	
	echo "# Parameter 2: Dir doesn't exist"
	exit 1
fi
 
## List files recursiv
BASEFILES=$(find "$1" -type f)
REDUCEFILES=$(find "$2" -type f)
 
## Loop for each file in draft
for BASEFILE in $BASEFILES; do
 
	## Get MD5 hash
	TMP=$(md5sum "$BASEFILE")
	BASE_MD5=${TMP% *}
 
	## Get relative dir
	BASE_PATH_RELATIVE=${BASEFILE:${#1}}
 
	echo $BASE_PATH_RELATIVE
 
	## Loop for each file in new file struct
	for REDUCEFILE in $REDUCEFILES; do
 
			## Get relative dir
			REDUCE_PATH_RELATIVE=${REDUCEFILE:${#2}}			
 
			## Check if relative paths are equal
			if [ $BASE_PATH_RELATIVE == $REDUCE_PATH_RELATIVE ]; then
 
				echo "PATH MATCH"
 
				## Get MD5 hash
				TMP=$(md5sum "$REDUCEFILE")
				REDUCE_MD5=${TMP% *}
 
				## Check if MD5 hashs are equal
				if [ $BASE_MD5 == $REDUCE_MD5 ]; then
 
					echo "MD5 MATCH"
 
					## Remove equal file
					rm -v $REDUCEFILE
				fi			
			fi
	done
	echo "---"
done
 
echo "REMOVE EMTPY DIRS"
find "$2" -type d -empty -delete -print

Die Dateien mit dem Kommando „find“ zu suchen und listen ist ein suboptimales Vorgehen. Strukturiertes vorgehen, in dem Ordner für Ordner abgeglichen wird, ist wesentlich performanter. Bedeutet aber ebenso mehr Arbeitsaufwand, der für ein Script dieser Verwendungsart nicht vorgesehen ist. Ich hoffe zwar nicht jemand steht vor dem selben Problem „ein Magento Vererbungschaos zu säubern“, jedoch denke ich das Script findet sicher die eine oder andere Anwendungsmöglichkeit oder gibt einen Denkanstoß.

Keine Kommentare »
 

Wenn man sich in der Shell nicht auf die Finger schauen lassen will kann mit dem Kommando

unset HISTFILE

abhilfe schaffen. Der Befehl deaktiviert die Shell History (den Verlauf) für die aktuelle Sitzung. Beim neu Einloggen ist der Standard wiederhergestellt und die Shell History wieder aktiviert.

Keine Kommentare »
 

Torrents mit dem eigenen Server herunterzuladen ist nicht nur schonend für die eigene Leitung Zuhause sondern schont ebenso die Internet Leitungen der Open Source Projekte von dessen HTTP Servern der Download ansonsten stattfinden würde. Aus diesem Grund lade ich seit längerem größere Dateien gerne über die, sofern vorhanden, verfügbaren Torrent Quellen herunter. Dazu verwende ich den Konsolen basierenden Bittorrent Client Bittornado im Zusammenspiel mit dem allseits bekannten Screen.

Die Installation beider Komponenten gestaltet sich unter Debian oder Ubuntu sehr einfach. Ein kurzes

apt-get install bittornado screen

reicht aus um die Installation auszuführen. Für andere Distributionen empfehle ich die Programme über den jeweiligen Paketmanager zu installieren. Ein compilieren der Quellcodes ist meiner Meinung nach zu aufwändig.

Zum starten des Bittornado Daemons aus der Shell verwende ich ein kleines von mir geschriebenes Script. Dieses macht es möglich den UNIX Benutzer, das Download Verzeichnis sowie die maximale Anzahl von Uploads und die Uploadbandbreite festzulegen. Ich limitere den Upload um nicht zu viel Traffic zu erzeugen. Der Benutzer wird festgelegt um bei einer Exploitmöglichkeit für Bittornado keine umfassenden Angriffspunkte am System zu bieten. Sehr interessant ist hierbei auch das Bittornado in der Programmiersprache Python geschrieben ist. Dadurch wird etwas mehr Speicher und Rechenzeit benötigt. Was für mich keine Relevanz hat. Im Gegenzug können keine Buffer Overflows auftreten.

#! /bin/sh
 
##
## <Configuration>
##
 
USER="webservices"
 
DIR="/home/webservices/incoming/"
 
MAX_UPLOADS="6"
 
MAX_UPLOAD_BANDWIDTH="14"
 
##
## </Configuration>
##
 
screen -AmdS bittornado su ${USER}  -c "btlaunchmanycurses ${DIR}  --minport 50000 --maxport 55000 --max_uploads ${MAX_UPLOADS} --max_upload_rate ${MAX_UPLOAD_BANDWIDTH}"

Das Script wird mit

chmod +x <SCRIPTNAME>

lauffähig gemacht und mit

./<SCRIPTNAME>

aufgerufen. Das Vorgehen ist bei allen Scripten unter UNIX Systemen gleich. Auch mein Script stellt da keine Ausnahme da. Der im Script hinterlegte Benutzer und das Verzeichnis musst du vorher natürlich noch für dein System anpassen. Nach dem Aufruf des Scriptes passiert scheinbar nichts. Im Hintergrund wurde jedoch eine Screen Sitzungen mit Bittornado gestartet.

Um einen Download zu starten muss eine gültige .torrent Datei in das im soeben gestartete Script angegebene Verzeichnis verschoben werden. Kurze Zeit später beginnt der Download des Torrents in Bittornado. Der aktuelle Stand der Downloadvorgänge kann mit

screen -r

oder, falls mehere Screen Sitzungen zur selben Zeit aktiv sind mit

screen -r bittornado

abgefragt werden. Wichtig ist es hierbei die Download Übersicht über screen mit strg + a und dem anschließendem Drücken der d Taste zu schließen. Ein eingeben der Tastenkombination strg + c würde Bittornado umgehend beenden und den Download abbrechen.

Den fertigen Dowload findest du im Download Verzeichnis neben den .torrent Dateien.

Natürlich könnte Bittornado auch mit dem manuellen eintippen der Befehle ohne das Startscript auf die selbe Art und Weise gestartet werden. Diese Arbeit möchte niemand antun. Insbesondere nicht ich. Ich denke mein Startscript für Bittornado ist mehr als hilfreich.

Keine Kommentare »
 

Shellzugriff aus dem Browser heraus ist nicht nur geschickt sondern in streng konfigurierten Netzwerken auch die einzige Möglichkeit Shellzugriff auf den Server zu bekommen. Hierfür kann ich dir PHP Shell empfehlen. Shellkommandos lassen sich damit ausführen und die Ergebnisse der Kommandos ansehen.

Leider lassen sich Programme wie Nano mit der PHP Shell nicht ausführen. Autovervollständigung mittels TAB unterstützt das Shell Werkzeug ebenfalls nicht.

Neben dem starten des PHP Shell Scriptes als root ist es eine weitere Vorraussetzung „Safe Mode“ zu deaktivieren und das Ausführen der Funktion proc_open() zu erlauben.

Ich kann euch diese kleine Webapplikation nur ans Herz legen.

Links:

Keine Kommentare »
 

Jeder Daemon auf einem Linux System führt eine Log Datei im Verzeichnis /var/log. Ab einer gewissen Laufzeit finden sich dort mehere Megabyte an archivierten Log Dateien. Das händische löschen von archivierten Log Datein ist eine nervige Sache. Um mir Nerven und Zeit zu ersparen habe ich mir ein Script geschrieben das mir diese Arbeit abnimmt.

#!/bin/sh
 
## Logfile
LOGFILE="/var/log/cleanup.log"
 
find /var/log/ -iname *.gz -type f -exec rm -fv {} ; >> $LOGFILE 2>&1
 
if [ $? -ne 0 ]; then		
	exit 1
else	
	exit 0
fi

Das Script sucht mit „find“ im Verzeichnis /var/log nach archivierten Log Dateien (Dateien mit der Endung .gz) und entfernt diese. Ironischer Weise legt das Script ebenfalls eine Log Datei an (/var/log/cleanup.log) in der gelöschte Dateien und Probleme niedergeschrieben werden.

Keine Kommentare »