roth-digital.de https://www.roth-digital.de Informatiker Dr. Michael Roth aus Augsburg - Memorial Page Thu, 25 Jul 2019 20:42:45 +0000 de-DE hourly 1 https://wordpress.org/?v=5.2.2 Repository size limitation on GitLab CE https://www.roth-digital.de/2018/11/30/repository-size-limitation-on-gitlab-ce/ Fri, 30 Nov 2018 21:49:34 +0000 https://www.roth-digital.de/?p=601 Keine ähnlichen Artikel gefunden. ]]> To limit the size of an project the enterprise edition (EE) from GitLab is required.

To bring this useful feature to the community edition (CE) I developed a python script which can be used as a pre-receive hook to block commits if the repository exceeds a given size.

Two limits must be specified. If a repository exceeds the first limit a warning is send to the user. After exceeding the second limit no commits to the repository are possible.

The full project can be found at

https://git.rz.uni-augsburg.de/rothmich/gitlab-repository-size-limit

]]>
VLANs mit systemd-networkd konfigurieren https://www.roth-digital.de/2018/08/02/vlans-mit-systemd-networkd-konfigurieren/ Thu, 02 Aug 2018 20:20:17 +0000 https://www.roth-digital.de/?p=563 Keine ähnlichen Artikel gefunden. ]]> Mit den neuen vSwitches erlaubt Hetzner Server standortübergreifend mit einem getaggten VLAN zu verbinden. Die Wiki-Seite erklärt die Konfiguration mit ifupdown. Allerdings benutzt das Herzner-Image Ubuntu 18.04 systemd-networkd zum Verwalten der Netzwerkkonfiguration. Aus diesem Grund möchte ich hier meine Konfiguration teilen.

Die Konfigurationsdateien befinden sich im Ordner /etc/systemd/network. Dort befindet sich normalerweise eine Datei pro Interface. Bei mir ist es eine Datei mit dem Namen 10-enp0s31f6.network. Diese muss um einen Eintrag für das neue VLAN erweitert werden. Im Abschnitt [Network] muss die Zeile VLAN=vlan.4000 hinzugefügt werden. Wobei vlan.4000 der Name der weiteren Konfigurationsdateien ist. Die geänderte Datei sieht bei mir folgendermaßen aus:

### Hetzner Online GmbH installimage
[Match]
Name=enp0s31f6

[Network]
Address=x:x:x:x::2/64
Gateway=x.x.x.x
Gateway=fe80::1
VLAN=vlan.4000

[Address]
Address=x.x.x.x
Peer=x.x.x.x/32

Da ich vlan.4000 als  Name gewählt habe, erwartet systemd nun zwei weitere Dateien vlan.4000.netdev und vlan.4000.network in diesem Ordner.

Hier der Inhalt von vlan.4000.netdev:

[NetDev]
Name=vlan.4000
Kind=vlan

[VLAN]
Id=4000

Die letzte Zeile enthält die im Hetzner Robot gewählte VLAN-ID.

Die Datei vlan.4000.network enhält die IP-Konfiguration. In meinem Fall habe ich ein privates Subnetz gewählt und jedem Server eine eigene statische IP-Adresse zugewiesen.

[Match]
Name=vlan.4000

[Network]
DHCP=no

[Address]
Address=192.168.50.0/24

Die letzte Zeile enthält die IP-Adresse des Servers und muss für jeden Server angepasst werden.

Bei mehreren VLANs, müssen einfach mehrer VLAN-Zeilen in die Datei für das Interface, hier 10-enp0s31f6.network, eingefügt werden. Wichtig ist hierbei, dass ein anderer Name, z.B: vlan.4001, gewählt wird. Anschließen müssen dann auch für diesen Namen die .netdev und .network-Dateien angelegt werden, z.B. vlan.4001.netdev und vlan.4001.network. In der netdev-Datei muss dann die entsprechende VLAN-ID und in der network-Datei die verwendete IP-Adresse eingetragen werden.

]]>
owncloud conf 2016: OC ♥ FS https://www.roth-digital.de/2016/09/10/owncloud-conf-2016-oc-%e2%99%a5-fs/ Sat, 10 Sep 2016 20:32:16 +0000 https://www.roth-digital.de/?p=578 Ähnliche Artikel:
  1. ownCloud mit Kerberos und NFSv4 Integration
  2. Nützliche Plugins für Joomla
]]>
Oft besitzen Unternehmen bereits einen Fileserver. Daher wäre es wünschenswert, wenn ownCloud einfach in die vorhanden Infrastruktur eingebunden werden kann. Und damit bereits vorhandene AAI benutzt werden kann und die Daten auf den NAS Fileservern einfach über ownCloud erreichbar sind.

Dazu haben wir heute einen Vortrag auf der owncloud Entwicklerkonferenz gehalten. Hier das Video und die Vortragsfolien.

]]>
ownCloud mit Kerberos und NFSv4 Integration https://www.roth-digital.de/2016/04/12/owncloud-mit-kerberos-und-nfsv4-integration/ Tue, 12 Apr 2016 05:22:36 +0000 https://www.roth-digital.de/?p=591 Ähnliche Artikel:
  1. owncloud conf 2016: OC ♥ FS
]]>
Heute sind die Proceedings der Tagung „Cloudspeicher im Hochschuleinsatz 2015“ erschienen. Die Tagung fand am 07. und 08. Mai 2015 am IT-Service-Center (tubIT) der Technischen Universität Berlin statt. Mein Kollege und ich habe einen Beitrag geschrieben. Wir wollen erklären, wie wir ownCloud über NFS an unseren NAS Fileserver angebunden haben.

Es wird Kerberos benutzt um sich mit dem Fileserver zu verbinden, dadurch muss auf dem ownCloud-Server kein Passwort gespeichert werden und ownCloud greift mit den Nutzerrechten auf die Daten zu.

Durch den Zugriff ohne gespeicherte Passwörter ist Sharing in der aktuellen Form nicht möglich, da ownCloud versucht mit den Zugangsdaten des Teilenden zuzugreifen. Da diese aber nicht immer vorhanden sind, haben wir uns eine neue Methode überlegt.

Beim Teilen werden die Rechte auf dem Fileserver angepasst, dadurch kann ownCloud mit den Zugangsdaten des Empfängers auf die geteilte Datei zugreifen. Zusätzlich ist der Zugriff auf die Datei ebenfalls über SMB bzw NFS direkt auf den Fileserver möglich.

]]>
SSL error: Unable to get private key from https://www.roth-digital.de/2015/02/02/ssl-error-unable-to-get-private-key-from/ https://www.roth-digital.de/2015/02/02/ssl-error-unable-to-get-private-key-from/#comments Mon, 02 Feb 2015 16:50:43 +0000 http://www.roth-digital.de/?p=504 Keine ähnlichen Artikel gefunden. ]]> OpenSSL recently changed the default behaviour for key generation. The command openssl req -newkey rsa:2048 used to generate RSA keys in the PKCS #1 format. In these format the key starts with -----BEGIN RSA PRIVATE KEY-----.

The new behaviour is to generate RSA keys in the  PKCS #8 format. Now the key file starts with -----BEGIN PRIVATE KEY-----.

If you try to load the new key format into MySQL you will get the error:

SSL error: Unable to get private key from

Adding RSA into the key preamble removes the error message but does not solves the problem nor change the key format. This will lead to the error:

ERROR 2026 (HY000): SSL connection error: protocol version mismatch

To get the key working with MySQL it is necessary to convert the format. This can be done with:

openssl rsa -in key.pem -out key.pem

[UPDATE] If the key is in the correct format and the error persists check the file permissions. The key must be readable by the mysql user, usually mysql. The simpest way is the change the ownership to mysql:mysql.

[1] http://askubuntu.com/questions/194074/enabling-ssl-in-mysql

]]>
https://www.roth-digital.de/2015/02/02/ssl-error-unable-to-get-private-key-from/feed/ 2
Multi-Domain Projects on AWS Elastic Beanstalk https://www.roth-digital.de/2013/01/26/multi-domain-projects-on-aws-elastic-beanstalk/ https://www.roth-digital.de/2013/01/26/multi-domain-projects-on-aws-elastic-beanstalk/#comments Sat, 26 Jan 2013 13:12:14 +0000 http://www.roth-digital.de/?p=409 Keine ähnlichen Artikel gefunden. ]]> Using Elastic Beanstalk from  Amazon Web Services is a create way to deploy large projects and be ready for a gain in visitors. Because I have a few projects which are too small to deploy each project as its own Elastic Beanstalk  application I looked for a way to deploy several projects with multiple Domains into one AWS EB application.

In the past the only way to configure application environments was to use customized AMIs. This would mean that I can not update my application to newer Amazon AMIs. So I would have to update my AMI regularly on my own.

A new and better way is to use the new configuration files. After deploying an application the configuration files, stored in the folder .ebextensions on the root directory of the applichation, are processed. All configuration files must end with ‚.config‘.

The Elastic Beanstalk uses regular EC2 instances with an apache webserver. So I used the configuration files to create an file inside the apache folder to tell the webserver how to handle multiple domains. The deployed PHP application is stored inside the /var/www/html folder.

Here is the configuration file. I saved it under .ebextensions/vhost.config

files:
  "/etc/httpd/conf.d/vhost.conf":
    mode: "000644"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80

      <VirtualHost *:80>
        ServerName www.projekt1.de
        ServerAlias projekt1.de
        DocumentRoot /var/www/html/projekt1/
      </VirtualHost>
      <VirtualHost *:80>
        ServerName static.projekt1.de
        DocumentRoot /var/www/html/static/
      </VirtualHost>

The lines after the content entry were copied into a new file /etc/httpd/conf.d/vhost.conf. The webserver reads this file on startup an creates new vhosts with different root folders. All requests for www.projekt1.de or projekt1.de use /var/www/html/projekt1/ als document root. Requests to static.projekt1.de use folder static inside the application as document root.

For detailed information on how to configure multiple domains in apache read the VirtualHost Examples from the apache project page.

If you have any questions, problems or suggestions please write a comment on this post.

]]>
https://www.roth-digital.de/2013/01/26/multi-domain-projects-on-aws-elastic-beanstalk/feed/ 2
AssociateTag in Zendframework Amazon Anfragen https://www.roth-digital.de/2012/01/06/associatetag-in-zendframework-amazon-anfragen/ Fri, 06 Jan 2012 22:20:27 +0000 http://blog.roth-digital.de/?p=356 Ähnliche Artikel:
  1. Änderung in der Amazon Product Advertising API
  2. phplist und Amazon Simple Email Service
]]>
Wie bereits erwähnt hat Amazon die Product Advertising API geändert. Daher ist nun bei jeder Anfrage eine PartnerId (engl. AssociateTag) notwendig, sonst wird folgende Fehlermeldung ausgegeben:

Your request is missing required parameters.
Required parameters include AssociateTag.

Es gibt zwei Möglichkeit dieses AssociateTag im Zendframework zu setzen. Die PartnerID  kann an die beiden Anfrage itemLookup() und itemSearch() im Optionen-Array mit übergeben werden.

$aws = new RD_Amazon_Query($awsID,'DE',$awsKey);
$item=$aws->category('All')->itemLookup($asin,
                                    array('ResponseGroup' => 'OfferFull, BrowseNodes,Large',
                                          'MerchantId' => 'Amazon',
                                          'AssociateTag' => 'rothdigital-21');

Als Alternative kann die Methode AssociateTag(‚rothdigital-21‘)  benutzt werden um den Wert als Methodenaufruf zu setzten. Wichtig ist, dass die Category bei Anfragen als erstes gesetzt wird und dann erst AssociateTag.

$aws = new RD_Amazon_Query($awsID,'DE',$awsKey);
$item=$aws->category('All')->AssociateTag('rothdigital-21')
                           ->itemLookup($asin,
                                    array('ResponseGroup' => 'OfferFull, BrowseNodes,Large',
                                          'MerchantId' => 'Amazon');

Diese beiden Wege funktionieren mit Zendframework 1.11. Es gibt schon einen Bug-Report, der vorschlägt die PartnerId in den Konstruktor zu übernehmen. Daher kann sich das Verhalten im nächsten Release des Zendframework wieder ändern. Sollten Sie Änderungen feststellen, benutzen Sie einfach hier die Kommentarfunktion.

]]>
phplist und Amazon Simple Email Service https://www.roth-digital.de/2011/11/04/phplist-und-amazon-simple-email-service/ Fri, 04 Nov 2011 12:46:28 +0000 http://blog.roth-digital.de/?p=338 Ähnliche Artikel:
  1. Änderung in der Amazon Product Advertising API
  2. AssociateTag in Zendframework Amazon Anfragen
]]>
phplist ist ein browserbasiertes Programm, das es erlaubt Newsletter an eine große Anzahl von Empfängern zu senden. Es können Templates angelegt werden und so das Aussehen der E-Mail individuell angepasst werden. Falls ein Server auf einmal viele E-Mails sendet kann dies von einigen Mailservern als Spamversand interpretiert werden und der Newslettersender kann auf einer Blacklist landen. Um dies zu verhindern kann man mit phplist die E-Mails zeitlich versetzt senden und beispielsweise mit einem Cronjob so alle fünf Minuten 100 E-Mails senden.

Diese Methode ist aber sehr zeitaufwendig. Bei vielen Empfänger kann sich der E-Mailversand über mehrere Stunden oder Tage hinziehen. Eine Alternative ist der Amazon Simple Email Service. Dieser Dienst ermöglicht das einfache und schnelle Versenden von vielen E-Mails. Amazon hat die eignen Mailserver auf mehreren Whitelisten eingetragen und überwacht die Qualität der E-Mails, daher können diese Server nicht so einfach auf Blacklists landen.

phplist unterstützt die Verbindung zu Amazon SES leider erst in der Entwicklungsversion 2.11.6. Um Amazon SES zu nutzen sind folgende Änderungen in der Datei config/config.php notwendig:

define('PHPMAILER',0);
define('AWS_ACCESSKEYID','Your Access Key ID');
define('AWS_SECRETKEY','Your corresponding secret key');
define('AWS_POSTURL','https://email.us-east-1.amazonaws.com/');

Eine genaue Anleitung ist unter http://www.phplist.com/?lid=515 zu finden.

]]>
Änderung in der Amazon Product Advertising API https://www.roth-digital.de/2011/11/03/anderung-in-der-amazon-product-advertising-api/ Wed, 02 Nov 2011 23:07:38 +0000 http://blog.roth-digital.de/?p=320 Ähnliche Artikel:
  1. AssociateTag in Zendframework Amazon Anfragen
  2. phplist und Amazon Simple Email Service
]]>
Seit dem 26. Oktober 2011 ist für das Abfragen von Produktinformationen über die Amazon Product Advertising API die Angabe eine Partner-ID, auch „associate tag“ genannt, notwendig. Alle Anfrage ohne diese Partner-ID liefert folgenden Fehler:

Your request is missing required parameters.
Required parameters include AssociateTag.

Eine Partner-ID kann auf der Seite https://partnernet.amazon.de einfach und kostenlos beantragt werden.

Unter Perl empfehle ich den Einsatz des CPAN Moduls Net::Amazon. Ab der Version 0.61, die am 28. Oktober 2011, erschienen ist, kann beim Konstruktor das Parameter associate_tag übergeben werden. Das Erzeugen des Objekts sieht dann wie folgt aus:

  my $ua = Net::Amazon->new(
      associate_tag => 'YOUR_AMZN_ASSOCIATE_TAG',
      token         => 'YOUR_AMZN_TOKEN',
      secret_key    => 'YOUR_AMZN_SECRET_KEY',
  );

Eine genaue Anleitung ist auf der CPAN-Seite zu finden.

]]>
Dropbox mit Truecrypt sichern https://www.roth-digital.de/2011/06/20/dropbox-mit-truecrypt-sichern/ Mon, 20 Jun 2011 09:27:52 +0000 http://blog.roth-digital.de/?p=292 Ähnliche Artikel:
  1. phplist und Amazon Simple Email Service
]]>
Dropbox ist ein Cloud-Dienst, der Daten zwischen mehreren Computern abgleicht. Dazu stellt Dropbox jedem angemeldeten Benutzer kostenlos 2 GB Speicher zur Verfügung. Um den Dienst zu nutzen muss auf jedem Computer, auf dem die Daten abgeglichen werden sollen, der Dropbox-Client installiert sein. Dann landen alle Dateien, die in einem speziellen Ordner geschoben werden auf dem Dropbox-Server und werden von dort auf alle anderen verknüpften Computer des Benutzers übertragen. Leider ist nicht klar, wie die Daten auf dem Dropbox-Server gesichert werden und wer alles Zugriff auf diese hat.

Um die Daten in der Cloud zu sichern kann mit Truecrypt ein verschlüsselter Container angelegt werden, der dann als zusätzliche Festplatte in das System eingehängt wird. Da Dropbox neue Dateien automatisch abgleicht, muss in Truecrypt eingestellt werden, dass der Zeitstempel der Container-Datei nicht geändert werden soll. Dann überträgt Dropbox nicht mehr die komplette Datei, sonder nur die Teile die sich geändert haben. Eine genaue Anleitung ist auf diesem Blog zu finden.

Um die Daten zu synchronisieren darf der Container nicht geöffnet sein. Die verschlüsselte Festplatte sollte also ausgehängt werden, bevor der Computer in den Ruhezustand gesetzt wird.

Mit dieser einfachen Änderung sind die Daten auf jedem Computer verfügbar und sicher. Leider können die Daten nun nicht mehr über das Webinterface von Dropbox bearbeitet werden. Was meiner Meinung aber für die zusätzliche Sicherheit eine hinnehmbare Einschränkung ist.

]]>