Kategorien
Projekte

Webanwendung zur Vermittlung von IT-Kräften

Meine Bachelorarbeit zum Download:

Konzept und Entwicklung einer
Webanwendung zur Vermittlung von IT-Kräften

Daraus ist das Startup nerdle.de geworden, welches nach 2 Jahren aufgrund mangelnder Finanzierung eingestellt werden musste, aber mir sehr viel Spaß gemacht hat.

Download .pdf

Download .doc

Kategorien
Projekte

Behavioral Finance und Moving Averages

Meine Diplomarbeit zum Download

Behavioral Finance und Moving Averages – Anwendbarkeit/Simulation von Aktienmärkten
anhand des 200-Tage-Durchschnitts

Download .pdf

Download .doc

Download Excel Makro

Kategorien
PHP

PHP cURL verifizieren eines selbst-signierten FTPS Zertifikat

Leider kann man mit der PHP FTP Erweiterung keine SSL Zertifikate von FTPS Servern zu verifizieren, um Man-in-the-Middle Angriffe zu verhindern.

Es ist aber möglich über php-cURL das selbst signierte Zertifikat zu verifizieren:

public function checkFTPSCertificate(): bool
{
    $ftp_certificate = 'path/to/cert.crt'

    $ftp_server = 'ftp://foo.de/';
    $ftp_user = 'user';
    $ftp_password = 'password';

    $ch = curl_init();

    // curl_setopt($ch, CURLOPT_VERBOSE, '1');
    curl_setopt($ch, CURLOPT_URL, $ftp_server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERPWD, $ftp_user . ':' . $ftp_password);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);


    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1'); // Überprüfung des Serverzertifikats
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '2');
    curl_setopt($ch, CURLOPT_CAINFO , $ftp_certificate);
    curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_ALL);
    curl_setopt($ch, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS);

    $result = curl_exec($ch);
    $error_no = curl_errno($ch);
    $error_msg = curl_error($ch);
    curl_close ($ch);
    return $error_no == 0 && empty($error_msg);
}
Kategorien
Amazon AWS

Festplatte von EC2 t2 Instanz vergrößern

Um die Festplatte einer EC2 Instanz zu vergrößern muss man als erstes das Volume vergrößern über die Console und dann auf der Instanz folgende Befehle ausführen im Normalfall (AWS Dokumentation):

## Root-Partition bestimmen
df -h

## Partition vergrößern
# amazon linux 2
sudo growpart /dev/xvda 1
# amazon linux 2023
sudo growpart /dev/nvme0n1 1

##Dateisystem vergrößern
sudo yum install xfsprogs
sudo xfs_growfs -d /

# verifizieren der Änderungen
df -h
Kategorien
Server Administration

Linux grep mit Filepattern und Ausgabe von mehreren Zeilen bei Erfolg

grep -A4 --include \*pattern\*.xml searchText *
Kategorien
Server Administration

Linux unzip/entpacken aller Dateien in einen Unterordner

unzip \*.zip -d unzipDir
Kategorien
proftp

proftp log user traffic mit mod_sql

Um den User Traffic in proftp mitzuloggen in einer MySQL Datenbank, muss man nur in der User Tabelle eine Spalte „traffic“ hinzufügen vom Typ BIGINT, Default 0:

ALTER TABLE `ftpuser` ADD COLUMN `traffic` BIGINT NOT NULL DEFAULT '0';

Dann kan man einen SQLNamedQuery verwenden in der sql.conf, um die Menge des Traffics mitzuschneiden:

SQLLog RETR,STOR,APPE extendedlog
SQLNamedQuery extendedlog UPDATE "traffic= (traffic + %b) WHERE userid='%u'" ftpuser

Achtung, die Verwendung führt zu erhöhtem Traffic auf der Datenbank.

Kategorien
PHP 7

PHP: ftp_fget(): Entering Passive Mode (10,1,0,139,213,156).

Die Fehlermeldung:

 ftp_fget(): Entering Passive Mode (10,1,0,139,213,156)

bedeutet, dass der FTP Client eine neue passive Verbindung auf der IP 10.1.0.139 auf Port 213 * 256 + 156 = Port 54684 aufmachen soll.

Am einfachsten händelt man diese Situation, wenn man sich neu verbindet mit ftp_connect() und es nochmal versucht und eine passive Verbindung aufbaut mit ftp_pasv();

 

Kategorien
PHP Symfony

Gaufrette mit File Streams arbeiten

Um mit Gaufrette (Symfony Extension) auch Stream Operationen an Dateien durchführen zu können, kann man den etwas dürr dokumentierten Stream Wrapper verwenden.

Dazu konfiguriert man in der gaufrette.yaml:

knp_gaufrette:
    stream_wrapper: ~
    filesystems:
        backup1:
            adapter: backup

Und kann dann z.B. folgender Maßen eine csv. Datei schreiben:

$stream = fopen('gaufrette://backup1/datei.csv', 'w+');

fputcsv($stream, [1,2,3]);
Kategorien
Amazon AWS

AWS: verifizieren einer Email Adresse in SES ohne Zugriff auf das Postfach

Um bei Amazon SES Email verschicken zu können, muss man die E-Mail Adresse erst verifizieren. Dies ist ein Problem, wenn man zwar Zugriff auf die Domain hat, aber keinen Mail-Server eingerichtet hat.

Um das Problem zu umgehen, verifiziert man erst die Domain in SES und richtet dann unter Configure Email Receiving die zu verifierende E-Mail Adresse ein und verbindet diese mit einem SNS Topic. Danach kann man eine Subscription einrichten auf das SNS Topic via Email und sich so die Verifikations-Email weiterleiten lassen auf ein vorhandenes Postfach.