.. -*-coding: utf-8-*- ======================== CdE-Kurier Spezifikation ======================== :Author: Klaus Aehlig, Roland Koebler :Date: 2010-08-24 .. contents:: Inhalt :backlinks: none .. sectnum:: Datenformat =========== Die CdE-Kurier-Daten bestehen aus verschiedenen "Nachrichten" im Textformat mit folgendem zeilenweisen Aufbau: - ``BEGIN CDEKURIER`` - Zeilen in der Form:: :[ \t]+ - Zeilen, die mit Whitespace anfangen, setzen die Zeile davor fort; führender Whitespace wird beim logischen Zusammensetzen der Zeilen zu einem Leerzeichen zusammengefasst. - ``END CDEKURIER`` Text-Encoding: ASCII bzw. UTF-8. Andere Encodings sind ebenfalls möglich, sofern die Nachricht in ein anderes Format verpackt, und das Encoding korrekt angegeben ist (z.B. "Content-Type:" bei E-Mails). Schlüsselworte -------------- ``ID: `` | verpflichtend oder implizit als ``Message-ID:`` im news-Header | Eindeutige ID. | Wird normalerweise nicht angegeben, sondern aus der ``Message-ID`` der news-Message extrahiert. ``TYPE: BIETE|SUCHE|CANCEL`` | optional, default: ``BIETE`` | mögliche Werte: ``BIETE``, ``SUCHE``, ``CANCEL`` | Bestimmt, welche weiteren Schlüsselworte vorkommen müssen/dürfen. ``AUTH: `` | optional | Kann verwendet werden, um irgendeine Art der Authentifizierung mitzuspeichern, um im Fehlerfall bzw. bei unsachgemäßer Verwendung die Quelle der Nachricht nachvollziehen zu können. | Das Token kann dabei z.B. eine E-Mail-Adresse, eine IP-Adresse (z.B. bei einem Webformular) oder ein Login-Name sein. Anlegen eines Eintrags (``TYPE: BIETE`` bzw. ``TYPE: SUCHE``): ``PICKUP-DATE: YYYY-MM-DD HH:MM`` | verpflichtend, ``HH:MM`` ist optional | bei ``BIETE``: Spätestmöglicher Zeitpunkt, zu dem etwas zu transportierendes noch mitgenommen werden kann. | bei ``SUCHE``: Frühestmöglicher Zeitpunkt, zu dem etwas zu transportierendes schon abgeliefert werden kann. ``PICKUP-PLACE: ``: | verpflichtend | Menschenverständliche Erklärung, wo die Reise beginnt. ``DROPOFF-DATE: YYYY-MM-DD HH:MM`` | verpflichtend, ``HH:MM`` ist optional | bei ``BIETE``: Frühestmöglicher Zeitpunkt, zu dem der transportierende Gegendstand weiter gegeben werden kann. | bei ``SUCHE``: Spätestmöglicher Zeitpunkt, zu dem der transportierende Gegendstand weiter gegeben sein muss. ``DROPOFF-PLACE: `` | verpflichtend | Menschenverständliche Erklärung, wo die Reise endet. ``CONTACT: `` | verpflichtend | Eine Möglichkeit, die Person zu kontaktieren, die etwas mitnehmen kann (``BIETE``) bzw. die eine Mitnahmemöglichkeit sucht (``SUCHE``). | Steht die Person in der CdE-Datenbank, genügt der Name. Andernfalls sollte eine gültige E-Mail-Adresse oder eine gültige Telefonnummer angegeben werden. ``PICKUP|DROPOFF-POSTCODE: cc `` | optional | Postleitzahl des Start-/Zielorts. | ``cc`` = country code (wie bei den DNS Toplevel Domains) | ```` = Postleitzahl nach den Gepflogenheiten des jeweiligen Landes. | Beispiel: ``uk SA2 8PP`` ``PICKUP|DROPOFF-EVENT: xxYYYY-n`` | optional | Gibt an, dass Beginn/Ende der Reise eine entsprechende CdE-Veranstaltung ist. | ``xx`` = Kürzel der Veranstaltung | ``wa``: WinterAkademie | ``pa``: PfingstAkademie | ``sa``: SommerAkademie | ``ma``: Multinationale Akademie | ``jgw``: JGW-Akademie | weitere Kürzel werden evtl. in Zukunft definiert | ``YYYY`` = Jahr der Veranstaltung | ``-n`` = laufende Nummer (chronologisch) unter allen Veranstaltungen, die in den ersten zwei Merkmalen uebereinstimmen. Falls weggelassen: ``-1`` ``ROUTE: `` | optional | Informationen zur Route, damit evtl. auch unterwegs Gegenstände mitgenommen/weitergegeben werden können. ``COMMENT: `` | optional | Menschenlesbarer Kommentar, Einschränkungen etc. Streichen eines Eintrags (``TYPE: CANCEL``): Falls ein Eintrag nicht mehr stimmt, man doch kein Gepäck mehr mitnehmen kann oder schon jemand gefunden wurde, der das Gepäck mitnimmt, sollte der Eintrag gestrichen werden. Für Einträge, die nur deshalb nicht mehr relevant sind, weil ``DROPOFF-DATE`` schon vorbei ist, sollen *keine* CANCEL-Meldungen verschickt werden. ``CANCEL-ID: `` | verpflichtend oder implizit als ``In-Reply-To:`` im news-Header | Gibt die ID des Eintrags an, der gestrichen werden soll. ``COMMENT: `` | optional | Menschenlesbarer Kommentar. Sonst keine weiteren Zeilen. Weitere Schlüsselworte können später eingeführt werden; es sollen also keine Annahmen gemacht werden, dass ein bestimmtes Schlüsselwort ungenutzt ist. Allerdings wird zugesichert, dass nie Schlüsselworte, die mit ``X-`` anfangen, ins offizielle Protokoll aufgenommen werden. Infrastruktur ============= Die Nachrichten werden dezentral über news verteilt: - Pro news-Message darf nur eine Nachricht enthalten sein (=ein ``BEGIN CDEKURIER...END CDEKURIER``-Block). - Content-Type der news ist ``text/plain``, bei Multipart-Messages muss die Nachricht im ersten ``text/plain``-Bodypart stehen. - Das Schlüsselwort ``ID:`` wird weggelassen; die ID wird implizit als ``Message-ID:`` im news-Header angegeben. - Statt dem Schlüsselwort ``CANCEL-ID:`` soll die ID des zu streichenden Eintrags implizit im ``In-Reply-To:``-Feld im news-Header angegeben werden. - Text außerhalb des ``CDEKURIER``-Blocks wird ignoriert. Zudem kann/soll es verschiedene Anbindungen an dieses news-System geben: - Webformular - E-Mail Zur besseren Übersichtlichkeit wird folgendes empfohlen: - Betreff-Zeilen (falls vorhanden, z.B. bei news oder E-Mail) für die verschiedenen Nachrichten-Typen:: -> SUCHE -> CANCEL - Threading: ``CANCEL``-Einträge sollen per Threading den ursprünglichen Beiträgen zugeordnet werden; Thread-Hijacking soll vermieden werden. Datenschutz =========== Die personenbezogenen Daten, die in CdE-Kurier eingegeben werden, unterliegen dem Datenschutz und dürfen *nur* für die Zwecke des CdE-Kurier verwendet werden. Die Daten dürfen nur CdE-intern veröffentlicht werden. Veraltete sowie gestrichene Daten sollen sobald wie möglich gelöscht werden; spätestens nach 90 Tagen müssen sie gelöscht sein. Beispiele ========= (Die Umlaute in den news-Headern sind in den Beispielen zur besseren Übersichtlichkeit nicht passend codiert.) Mitnahmeangebot:: Date: ... From: ... To: ... Subject: München -> Stralsund 2010-07-10 Message-ID: <1278661023.42000@cde-muenchen.de> BEGIN CDEKURIER PICKUP-DATE: 2010-07-10 10:00 PICKUP-PLACE: München PICKUP-POSTCODE: de 80339 DROPOFF-DATE: 2010-07-10 13:00 DROPOFF-PLACE: Stralsund CONTACT: Erika Vogel COMMENT: Da ich fliege, kann ich nur kleine/leichte Gegenstände mitnehmen. END CDEKURIER Mitnahmesuche:: Date: ... From: ... To: ... Subject: SUCHE nähe München -> SommerAkademie 2010 Message-ID: <1278663591.27396@cde-muenchen.de> BEGIN CDEKURIER TYPE: SUCHE PICKUP-DATE: 2010-07-26 PICKUP-PLACE: nähe München DROPOFF-DATE: 2010-07-31 DROPOFF-PLACE: Feriendorf am Eisenberg DROPOFF-EVENT: sa2010 CONTACT: Otto Leiter COMMENT: Ich habe einiges an schwerem Kursmaterial für meinen Kurs. Wäre toll, wenn jemand einen Teil davon transportieren könnte! END CDEKURIER Streichen eines Eintrags:: Date: ... From: ... To: ... Subject: CANCEL Message-ID: <1278667385.76213@cde-muenchen.de> In-Reply-To: <1278663591.27396@cde-muenchen.de> BEGIN CDEKURIER TYPE: CANCEL COMMENT: Hab eine Transportmöglichkeit gefunden. =) END CDEKURIER