Archive for the ‘Uncategorized’ Category

Mail server, forward non-spam mails only

Freitag, Februar 25th, 2022

We are running a mail server and redirecting all mails for former users via an entry in the /etc/aliases file. Unfortunately, we appeared on some spam detection services. I checked our mail logs, there are no indication that some of our hosts are sending SPAM themselves, so this must be our forwards. When users get SPAM, this will be forwarded to their external address. So, we are not sending SPAM, we are relaying it.

To stop this, I invented the following solution:

In /etc/aliases, we do not set a forward for this user, but a pipe:

testuser: /usr/bin/procmail -t -m FORWARD=testuser /etc/procmailrc

The /etc/procmailrc contains the following:

:0
* X-Spam-Level: \*\*\*\*\*\*
{ EXITCODE=77 HOST }

:0
! `cat /etc/forwards/$FORWARD`

Now, we just have to create a file in /etc/forwards for each user, e.g. /etc/forwards/testuser:

new-address@example.com

Wikidata SPARQL – get name and values for specific items

Sonntag, Oktober 10th, 2021

Something which took me quite some time to find out: how to get the name and some values for items where I already know the ID via SPARQL – usually examples query all items which have something in common (e.g. all cats or so). The magic is the „VALUES“ keyword – it’s actually really easy:

select ?item ?itemLabel ?herisId where {
  ?item wdt:P9154 ?herisId.
  VALUES ?item {wd:Q1534177 wd:Q133495}.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

Try it yourself!

Creating a conference website with in Drupal 8 (Also: use views to summarize values of fields)

Sonntag, November 15th, 2020

I’m creating a Drupal website for an upcoming conference where we have sessions with a list of contributions (talks, workshops, …). A contribution will be shown in several sessions (actually streamed as the conference will be online due to COVID-19).

Structure

I designed my content-types like this (I removed all non-relevant fields):

Contribution

  • Duration (field_duration), Integer (time in minutes)

Session

  • Start Date (field_start_date), Date with time
  • Contributions (field_contributions), Entity reference to content type Contribution, multiple values

Tasks

In the display of a Contribution I want to show in which sessions it will be shown and at what exact time (which is the start time of the session plus the sum of all preceding contributions).

Also, in the display of a Session I want to list all contributions with the exact start time (and end time).

Views

I found the module Views Cumulative Field, but found it not sufficent, so I looked for a different solution.

I solved this with views using Views Data Export:

View „Contribution Duration“
  • Create a view „Session Contributions Duration“, type „Data Export“, accepted format: „CSV“
  • List content of type „Contribution“
  • Add contextual filter „Content: ID“ (if not available, show all), allow multiple values (under „More“)
  • Add field „Content: ID“ (nid)
  • Add field „Duration“ (field_duration)

Example output:

nid,field_duration
4,15
6,30
11,30
View „Session Contributions Duration“
  • Create a view „Session Contributions Duration“, type „Data Export“, accepted: „CSV“
  • List content of type „Session“
  • Add Contextual Filter „Content: ID“ (if not available, show all)
  • Add field „Start Date“ (field_start_date), formatter „Plain“
  • Add field „Contributions“ (field_contribution_durations), formatter „View“ (Contribution Duration), view arguments „Field value“, multiple, implode with „,“, override with custom text:
    {{ field_contribution_durations|split("\n")|slice(1)|map(c => c|split(",")|join(":"))|join("|") }}

Example output:

field_start_date,field_contribution_durations
2020-11-25T10:00:00,4:15|6:30
2020-11-25T12:00:00,11:30
2020-11-26T10:00:00,4:15|6:30

(First field is the start_date of the session, second is the list of contributions separated by „|“, where the „:“ separates the ID of the contribution and the duration.

View „Sessions of Contribution“
  • Create a view „Sessions of Contribution“, type HTML List of fields (or other, this is for display).
  • List content of type „Session“
  • Add Contextual Filter „Content: Contributions“ ((if not available, hide)
  • Add field „Contributions“ (field_contributions), formatter „View“, View „Session Contributions Duration“, multiple false, rewrite text:
    {% set start_date = field_contributions|split("\n")[1]|split(",")[0] %}
    {% set durations = field_contributions|split("\n")[1]|split(",")[1]|split("|")|map(d => d|split(":")) %}
    {% set not_found = true %}
    {% set offset = 0 %}
    {% for c in durations if not_found %}
    {% if c[0] == arguments.field_contributions_target_id %}
    {% set not_found = false %}
    {% else %}
    {% set offset = offset + c[1] %}
    {% endif %}
    {% endfor %}
    {{ date(start_date)|date_modify("+" ~ offset ~ "minutes")|date('Y-m-d H:i') }}
Content Type „Contribution“, Manage Display:
  • Using Display Field Copy, I created a copy of the Node ID called Sessions. Use the View „Sessions of Contribution“ to display this value, and pass the field value (the Node ID) as only argument.
View „Contributions in Session“
  • Create a view „Sessions of Contribution“, type HTML List of fields (or other, this is for real display).
  • List content of type „Contribution“
  • Add relationship „Content using field_contributions“
  • Add contextual filter „Content: ID“ (if not available, hide), Relationship none, allow multiple values
  • Add contextual filter „Content: ID“ (if not available, show all), Relationship field_contributions
  • Add field „Content: ID“ (nid), Relationship none, Exclude from display
  • Add field „Content: ID“ (nid_1), Relationship field_contributions, Formatter View, View „Session Contributions Duration“, View Arguments Field Value, rewrite text:
    {% set offset = 0 %}
    {% set not_found = true %}
    {% set durations = nid_1|split("\n")[1]|split(",")[1]|split("|")|map(d => d|split(":")) %}
    {% set start_date = nid_1|split("\n")[1]|split(",")[0] %}
    {% for c in durations if not_found %}
    {% if c[0] == nid %}
    {% set not_found = false %}
    {% else %}
    {% set offset = offset + c[1] %}
    {% endif %}
    {% endfor %}
    {{ date(session_start)|date_modify("+" ~ offset ~ "minutes")|date('Y-m-d H:i') }}

When previewing this view, use something like „1,2/3“ where 1 and 2 are the IDs of contributions of a session and 3 the session ID.

Content Type „Session“, Manage Display:
  • Field „Contributions“: Format „View“, View „Contributions in Session“, View Arguments: Field Value and Entity ID, multiple implode by „,“.
View „Sessions“ (optional)
  • Create a view „Sessions“, type HTML List of fields (or other, this is for real display).
  • List content of type „Session“
  • Add field „Contributions“, Formatter View, View „Contributions in Session“, View Arguments: Field Value and Entity ID, multiple implode by „,“.

Conclusion

Of course, most of these views (except of the Data Exports) have additional fields, because sessions have names, contributions have titles and presenters. And the contribution lists also add the end date. I hope, you can figure out how to add this yourself.

Install OpenLDAP

Freitag, Oktober 18th, 2019

A few things to memorize about installing OpenLDAP with Samba and LAM:

Enable SSL

# File: ldap-ssl.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap-ssl.ldif
dn: cn=config
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/server.key
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/server.crt
-
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/DigiCertCA.crt

Make sure that OpenLDAP is allowed to read those files. Additionally, apparmor denied access to these files, so I had to allow this specifically for slapd.

After this, I updated the value SLAPD_SERVICES in /etc/default/slapd: SLAPD_SERVICES=“ldapi:/// ldaps:///“

Deny anonymous access

# File: ldap-ssl.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap-ssl.ldif
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon

dn: cn=config
changetype: modify
add: olcRequires
olcRequires: authc

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc

I created an additional organisational unit ou=services,dc=example,dc=com where all services are listed. This is also a great way of documenting which services exist in the network.

Secure access to sambaNTPassword (in the default installation, only access to userPassword is secured):

# File: updateOlcAcess.ldif
# ldapmodify -Y EXTERNAL -H ldapi:/// -f updateOlcAccess.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,sambaNTPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange,sambaPwdLastSet by self write by * read
olcAccess: {2}to * by * read

Allow ‚otherMailbox‘ values

We want to save additional mail addresses (e.g. when we want to reach the user privately). For this we use the ‚otherMailbox‘ attribute, which is not available in the normal schemas. We use extensibleObject for this:

# File: otherMailbox.ldif
dn: cn=user,ou=people,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: extensibleObject
-
add: otherMailbox
otherMailbox: user@external.com

Vortrag Linuxwochen 2019: Overpass API – die Datenbank zur OpenStreetMap

Donnerstag, Mai 2nd, 2019

Hier die Folien für meinen Vortrag auf den Linuxwochen 2019:

Auf Github gibt es denn Source code für die Folien (in Markdown).

Rad als U4 Schienenersatzverkehr Alternative

Montag, März 5th, 2018

Liebe SPÖ, Grüne, Fahrrad Wien, Radlobby. Wir müssen über Radverkehr im Sommer 2019 reden. Die U4 wird zw. Längenfeldgasse und Karlsplatz eingestellt. Natürlich gibt es einen Schienenersatzverkehr (SEV), aber was ist mit Radverkehr als Ergänzung?
Größere zusätzliche Kapazitäten kann nur der Radverkehr aufnehmen. Das hat ja bei der U4 Sperre zw. Hietzing und Hütteldorf sehr gut geklappt mit zusätzlichen Radabstellanlagen und Werbung.
Disclaimer: Einschätzung der Attraktivität / Befahrbarkeit von Straßenabschnitten sind sehr subjektiv und dies hier ist meine private Meinung. Bitte postet eigene Einschätzungen.
Zwischen Längenfeldgasse und Karlsplatz gibt es drei mögliche Radrouten: der Wientalradweg, die Mollardgasse oder die Margartenstraße. Alle nicht optimal:
– Wientalradweg: Hat sich in den letzten Jahren gut entwickelt, allerdings fehlt Anbindung ans Zentrum (Linke Wienzeile, beim Naschmarkt). Außerdem während der Bauarbeiten möglicherweise bei der Pilgramgasse (wegen Bau des Linienkreuzes U2/U4) unterbrochen.
– Mollardgasse: Eine gute Alternative zum Wientalradweg, allerdings fehlt genauso die Anbindung ans Zentrum (Linke Wienzeile, beim Naschmarkt). Interessant wäre die Gürtelquerung zur Ullmannstraße (geplant, siehe Hauptradverkehrsnetz?).
– Margaretenstraße: Wäre eine gute Radroute, leider teilweise Einbahn (zw. Margartenplatz und Gürtel nur stadtauswärts). Allerdings viel Mischverkehr. Weiterführung via Arndtgasse bis Meidling Hauptstraße.
Ad Linke Wienzeile: Derzeit Umleitung via Gumpendorfer Straße zum Zentrum: Sehr unattraktiv, weil dichter Autoverkehr. Alternative Kettenbrückengasse – Margartenstraße: Umweg, teilweise Radstreifen neben parkenden Autos.
Noch sind >1 Jahr Zeit. Zeit den Wientalradweg fertig zu bauen und die Margartenstraße zu öffnen. Dann hätte Wien leistungsfähige Alternativen zur U4. Und möglicherweise nachhaltige Mobilitätsänderungen.
Noch eine Idee: Zusätzliche Citybikestationen beim Karlsplatz und bei der Längenfeldgasse, damit die Citybikes als zusätzlicher SEV dienen können.

Zweirichtungsradweg Getreidemarkt

Mittwoch, Mai 10th, 2017

S.g. Herr Häupl! S.g. Frau Vassilakou! S.g. Magistratsabteilungen! S.g. Mobilitätsagentur!

Da unser Bürgermeister Michael Häupl noch Änderungen bezüglich des Radweges am Getreidemarkt in den Raum gestellt hat, möchte ich auch noch Verbesserungsvorschläge einbringen.

Ein großes Problem bleibt nämlich weiterhin bestehen: Die fehlende Verbindung vom Karlsplatz zum Getreidemarkt. Immerhin sind bei der Lehárgasse einige Institute der TU-Wien und das TU-Audimax. Hier könnte alleine ein Potential von mehreren tausend Radfahrten pro Tag bestehen. Auch die Verbindung Naschmarkt -> Museumsquartier / Mariahilfer Straße ist weiterhin nur mit großen Umwegen möglich.

Mein Vorschlag wäre, statt der Einrichtungsradwege auf beiden Seiten des Getreidemarktes einen Zweirichtungsradweg auf der westlichen Seite zu errichten. Man kann derzeit schon beobachten, dass viele Radfahrende den Einrichtungsradweg am Getreidemarkt (zwischen Naschmarkt und Lehárgasse) in Gegenrichtung benützen. Dieses Problem wird sich mit der Durchgängigkeit bis zum Museumsquartier nur verschlimmern.

Der Anschluß eines Zweirichtungsradweg an den Karlsplatz bei der Operngasse/Treitlstraße wäre viel einfacher zu realisieren als die Anbindung eines potentiellen Einrichtungsradweg an der Ostseite des Getreidemarktes.

Auch bei Errichtung der lange ausstehenden Verlängerung des Wientalradweges zum Ring wäre ein Zweirichtungsradweg auf der Westseite des Getreidemarktes sinnvoller.

Da ein Umbau des Einrichtungsradweges zwischen Naschmarkt und Lehárgasse derzeit wohl nicht zur Debatte steht, wäre eine nicht adäquate aber mögliche Lösung wäre die Umwandlung des bestehenden Einrichtungsradweges in einen Zweirichtungsradweg. Dieser wäre zwar sehr schmal, würde aber dazu führen, dass sich die Radfahrenden die in Gegenrichtung fahren wenigstens korrekt benehmen. Derzeit trauen sich viele nicht so recht und fahren dann so halb am Radweg und am
Gehweg was zu sehr unangenehmen Situationen führt – vor allem, da ja hier auf Grund des Gefälles recht hohe Geschwindigkeiten gefahren werden. Wenn der Zustand legalisiert würde, würden wenigstens alle korrekt rechts fahren.

Dann wäre es aber notwendig bei der Kreuzung Getreidemarkt # Lehárgasse ordentliche Aufstellflächen einzuplanen: Sowohl zum Abbiegen in die Lehargasse, als auch zur Querung in Richtung Graumanngasse.

Ich bitte Sie, die Planungen nochmal zu überdenken.

danke und grüße,
Stephan Bösch-Plepelits

Verkehrsberuhigung Goldschlagstraße

Sonntag, April 10th, 2016

Ich wurde auf eine geplante Verkehrsberuhigung in der Goldschlagstraße aufmerksam gemacht. Hier meine Anregungen die ich dazu geschickt hab:

S.g. Bezirksvorstehung Rudolfsheim-Fünfhaus!

Großteils mit Begeisterung hab ich die Präsentation zur geplanten Verkehrsberuhigung Goldschlagstraße gelesen! Ich hab früher in diesem
Gebiet gewohnt und komme noch immer regelmäßig vorbei, insofern hab ich
spezielles Interesse an diesem Gebiet. Leider hab ich von den
Informationsveranstaltungen nichts mitbekommen, sonst wäre ich bei
Möglichkeit hingekommen.

Ich denke, wenn es hier gelingt ein neues lebenswertes Viertel zu schaffen,
könnte dies ein Best Practice Beispiel werden wie Verkehrsberuhigung in
Wien zukünftig aussehen kann.

Ein paar Anregungen hätte ich dennoch:

* Sie wollen den Durchgangsverkehr ja auf die Hauptstraßen bündeln - das
  finde ich sehr wichtig. Ich verstehe aber nicht, warum dann 3 von 4
  Ost-West Straßen zwischen Stadthalle und Westbahnhof Durchgangsstraßen
  sein müssen. Würde es nicht reichen, wenn der Verkehr nur auf
  Felberstraße und Hütteldorfer Straße gebündelt würde? Die
  Straßenbahnlinien 9 und 49 würden es danken, wenn sie zukünftig
  unabhängig vim MIV Durchgangsverkehr verkehren könnten. Erst letztens
  mussten beide wegen eines Verkehrsunfalls in der Märzstraße eingestellt
  werden.

* Eigentlich würde es Sinn machen gleich das ganze Gebiet innerhalb eines
  "Durchgangsverkehrs-Cluster" zu verkehrsberuhigen, also das Gebiet:
  Gürtel - Schweglerstraße bzw. Felberstraße - Hütteldorfer Straße.
  Zumindest die Ausweitung zur Hütteldorfer Straße würde wirklich Sinn
  machen, da Sie dieses Gebiet verkehrlich sehr verbunden ist, was man auch
  daran sieht, dass es für die Einbahnlösungen mitgedacht werden muss.

* Die Oberflächenneugestaltung wie auf Seite 35 finde ich sehr attraktiv,
  mir fehlen allerdings Radabstellplätze und Sitzgelegenheiten. Ich finde,
  es sollte mindestens so viele Radabstellplätze wie PKW-Parkplätze geben,
  und bei jedem zweiten Baum ein Bankerl.

In gespannter Erwartung, wie das Ergebnis aussehen wird ...

Ring 150+

Mittwoch, April 29th, 2015
Ringstrasse neu (© Barcelona Regional)

Ringstrasse neu (© Barcelona Regional)

Gestern war ich bei einer Veranstaltung der Wiener Mobilitätsagentur, die anlässlich des 150-jahr Jubiläums der Eröffnung der Wiener Ringstraße in die Zukunft blicken wollte. Dazu gab es Präsentationen zweier internationaler Stadtplanungsteams und einer anschließenden Podiumsdiskussion. Hier ein paar Gedanken meinerseits dazu.

Was von beiden Teams als das größte Problem identifiziert wurde ist die starke Autodominanz am Ring. Das ist auch mein größter Kritikpunkt: Warum ist es notwendig eine Autobahn auf der angeblich „schönsten Straße der Welt“ zu haben? Auch die Gestaltung der Aufenthaltsräume ist minderwertig: Banaler Asphaltbelag; keine klare Strukturierung; jede Menge Kleinzeug: Straßenschilder, Mistkübel, Würstelstände – alles total heterogen angeordnet. Es ist total mühsam den Ring zu queren: Zuerst Gehsteig, dann Seitenfahrbahn durch parkende Autos, dann wieder Gehsteig mit Radweg, dann Warten an der Ampel an der Hauptfahrbahn und dann nochmal das Ganze.

Nun, wie kann die Zukunft aussehen? Also meiner Meinung nach (und das war auch so im Raum gestern) kann das Ziel nicht eine zukünftige Vision sein die dann innerhalb weniger Jahre umgesetzt wird – so wie es vor 150 Jahren war (und vermutlich auch ab den 1950er Jahren so war, als das derzeitige Straßenlayout geschaffen wurde). Gestaltungen sind immer Work-in-progress.

Die Frage ist nur: Wo anfangen?

Die Hauptidee gestern war: Mit den Anrainer_innen der Ringstraße (also: Staatsoper, die Museen, Parlament, Rathaus, Universitäten, …) anfangen und versuchen diese der Öffentlichkeit zu öffnen. Meiner Ansicht nach ist das nicht so wichtig und kann nur Teil der Zukunft sein.

Gestern war der Wunsch, dass die Straße „den Menschen“ gehören solle – Da bin ich voll dabei. Der motorisierte Individualverkehr (MIV) soll nur ein Gast auf der Ringstraße sein und nicht der Herrscher. Meines Erachtens ist dies der Knackpunkt und hier sollte begonnen werden.

Welche kurzfristigen Optionen für eine Re-organisation des MIV gibt es?

Nun, dass der MIV nicht auf die Existenz der Ringstraße angewiesen ist (richtig analysiert gestern) hat die EM2008 gezeigt, als der Ring gesperrt wurde. (Gestern wurde dafür plädiert, die EM2008 als „Öffnung des Ringes“ zu bezeichnen. Nein. Hier wurde nichts geöffnet, da ja der gesamte Ring mit 2m hohen Sperrgitter vollgestellt wurde und auch die Straßenbahn in diesem Bereich eingestellt wurde. Schlechtes Vorbild).

Mit einer Testphase, wie denn der Ring als Begegnungszone aussehen könnte, wäre ich vorsichtig. Dies hat bei der Mariahilferstraße schon nicht geklappt. Das Problem ist, dass sich die Menschen danach bewegen wie der Raum gestaltet ist und nicht, wie er gestaltet sein könnte.

Ich bin dafür die Ringstraße auf einen Fahrstreifen (mit 30 km/h!) zu reduzieren und links und rechts davon (also zwischen den Straßenbahngleisen) Radstreifen anzulegen. Der Ring ist derzeit schon eine der am stärksten befahrenen Radrouten und die ständigen Konflikte zwischen Fußgänger_innen und Radfahrer_innen können ganze Heute und Österreich Zeitungen füllen. So würde die Attraktivität der Radroute massiv steigen und die Konflikte von einem Tag auf den anderen aufhören. Den Füßgänger_innen steht somit auch auf einen Schlag deutlich mehr Platz zur Verfügung – welcher dann auch neu gestaltet werden kann.

In Bereichen wo die Fahrbahn zu breit ist (z.B. vor der Oper) wäre es denkbar auch den MIV in beiden Richtungen anzulegen. Eine Einbahn mit zwei Richtungsfahrstreifen würde nur zur Raserei verleiten. Eine Veränderung der Straßenbahngleise kommt in der Anfangsphase nicht in Frage. Gleise zu verlegen ist viel zu aufwendig.

Welche längerfristigen Optionen existieren?

Nun, ich denke was erhalten bleiben sollte wäre die Verwendung für Aufmärsche, Promenaden und Demonstrationen. Dafür ist es wichtig, die lineare Struktur in einer gewissen Breite zu erhalten. Insofern seh ich das oben gewählte Bild nicht als mögliche Zukunftsvision.

Bei einer Re-organisation der Straßenbahn würde ich die Gleise an den äußeren Rand nebeneinander verlegen. Dann ist weniger „Ring“ zu queren und würde den zentralen Bereich freilassen. Kleinere Veranstaltungen müssten dann die Straßenbahn nicht behindern.

In weiterer Folge kann man sicher darüber nachdenken eine Begegnungszone einzurichten. Dem MIV würde ich zumindest einen Fahrstreifen zuweisen, möglicherweise in abwechselnder Einbahn um Durchzugsverkehr zu verhindern.

Was natürlich zu bedenken ist, dass es verschiedenste Nutzer_innen gibt, die bis jetzt gar nicht erwähnt wurden: Fiaker, Reisebusse zum Ein- und Aussteigen, Tourismus-Panoramabusse, Taxi, Obdachlose, Arbeiter_innen (Würstelstände, …) … Die müssen da natürlich alle irgendwie unter einen Hut gebracht werden.

Ich bin gespannt auf die Zukunft.

Parc Diagonal Mar, Barcelona

Dienstag, Februar 16th, 2010



Parc Diagonal Mar, Barcelona

Originally uploaded by plepe

After all those winter pictures, I want to indulge you with some sunny pictures :)
In 2007 I went with some friends to Barcelona in Spain for a short holiday in the middle of April, because we got some cheap tickets with SkyEurope.
One day we spent in the new development area „Parc Diagonal Mar“ which is near the North-Eastern end of Avinguda Diagonal, a road which runs all through Barcelona diagonally. It’s an area near the seaside and was used by former textile industry, which went down during the last century.
Now it’s a very modern area for housing, with a big green area, lakes and some modern art, looking like a roller coaster track.