Christian Kruse: IDNA-Implementation in JS

Hoi z'samme,

ich habe eine IDNA-Implementation in JavaScript gebaut:

http://wwwtech.de/idna/

Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:

– Nameprep wird drüberlaufen gelassen
– Punycode wird drüberlaufen gelassen
– Die einzelnen Labels werden im Sinne von IDNA korrekt kodiert

Man kann also damit den Hostnamen in die ASCII- und/oder die
Unicode-Darstellung umwandeln. Das ganze wird Teil einer umfangreicheren
Bibliothek zur Überprüfung von URLs per JavaScript ;-)

Der Nameprep-Teil basiert zu grossen Teilen auf einer fertigen
Implementation von Mark Davis, der so freundlich war, seinen Code unter
der ICU-Lizenz zur Verfügung zu stellen.

Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
haltet ;)

Grüße,
 CK

--
Toilettenspruch II. | Toilettenspruch I.
Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"
http://wwwtech.de/
  1. Moin!

    Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
    Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
    übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:

    – Nameprep wird drüberlaufen gelassen
    – Punycode wird drüberlaufen gelassen
    – Die einzelnen Labels werden im Sinne von IDNA korrekt kodiert

    Ich halte es ein klein wenig für fragwürdig, warum die Ergebnisse des "to ASCII" Großbuchstaben im "Umlautteil" hervorbringen, obgleich Domainnamen case-insensitive sind.

    Ansonsten sind mir keine Auffälligkeiten begegnet. Allerdings wird das ganze Dilemma der Umlautdomains hier deutlich: Mehr als die Wandlung von "hellö-wörld.de" nach "xn--hell-wrld-37AC.de" passiert nicht - diese Konversion aber allen DNS-suchenden Clients aufzubürden war der Schwachsinn des Jahrhunderts.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. Hi,

      diese Konversion aber allen DNS-suchenden Clients aufzubürden war der Schwachsinn des Jahrhunderts.

      Also ich finde die Einführung der Umlaut-Domains an sich noch viel schwachsinniger ;-)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. 你好 Sven,

      Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
      Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
      übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:

      – Nameprep wird drüberlaufen gelassen
      – Punycode wird drüberlaufen gelassen
      – Die einzelnen Labels werden im Sinne von IDNA korrekt kodiert

      Ich halte es ein klein wenig für fragwürdig, warum die Ergebnisse des "to
      ASCII" Großbuchstaben im "Umlautteil" hervorbringen, obgleich Domainnamen
      case-insensitive sind.

      Das war ein kleiner Bug bei der case_flags behandlung, danke, ist gefixed ;)

      Allerdings wird das ganze Dilemma der Umlautdomains hier deutlich: Mehr
      als die Wandlung von "hellö-wörld.de" nach "xn--hell-wrld-37AC.de"
      passiert nicht diese Konversion aber allen DNS-suchenden Clients
      aufzubürden war der Schwachsinn des Jahrhunderts.

      Das macht im Idealfall die Resolver-Bibliothek, die Applikation hat damit
      dann wenig zu tun ;) Sie muss natürlich trotzdem von wissen und deshalb
      doch die ganze Chause implementieren, weil sie ja irgendwie die
      syntaktische Korrektheit sicherstellen muss…

      Vor allem nervig ist, dass von 6627 Zeilen, die die Implementation
      insgesamt hat, allein 5652 Zeilen Zeichentabellen sind…

      再见,
       克里斯蒂安

      --
      Toilettenspruch II. | Toilettenspruch I.
      "Ich muss auflegen, mein Essen ist gleich fertig."
      "Oh, was gibt 's denn?"
      "Hmm. Die Packung liegt schon im Muell, keine Ahnung.
      http://wwwtech.de/
  2. hallo CK,

    ich habe eine IDNA-Implementation in JavaScript gebaut:
      http://wwwtech.de/idna/

    Wärs nicht sinnvoll, auf dieser Seite noch einen kurzen Text zu schreiben, was das Teil eigentlich tut und wozu es eventuell was nutzt?

    Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
    haltet ;)

    Naja, es tut seine Arbeit. Die Zielsetzung bedarf halt noch einer Erläuterung. Nimm eine fiktive Domain "ürks.de" - die Schaltfläche "to Unicode" bewirkt anscheinend gar nix. Die Schaltfläche "to ASCII" wandelt die Eingabe nach "xn--rks-goA.de" um. Klasse, sieht nett aus. Und nun weiter?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. 你好 Christoph,

      ich habe eine IDNA-Implementation in JavaScript gebaut:
        http://wwwtech.de/idna/

      Wärs nicht sinnvoll, auf dieser Seite noch einen kurzen Text zu
      schreiben, was das Teil eigentlich tut und wozu es eventuell was nutzt?

      Nein, das habe ich ja hierher geschrieben.

      Nimm eine fiktive Domain "ürks.de" - die Schaltfläche "to Unicode"
      bewirkt anscheinend gar nix.

      Natürlich nicht – das ist ja bereits die Unicode-Darstellung.

      Die Schaltfläche "to ASCII" wandelt die Eingabe nach "xn--rks-goA.de" um.
      Klasse, sieht nett aus. Und nun weiter?

      Das ist die ASCII-Darstellung einer Umlaut-Domain. Das ist die Aufgabe
      von IDNA: Kodierung der Labels einer Domain, so dass alle Unicode-Zeichen
      in ASCII dargestellt werden können und natürlich die Umkehrung dieser
      Kodierung.

      再见,
       克里斯蒂安

      --
      Toilettenspruch II. | Toilettenspruch I.
      <g[oma]> peter lustig ist auf jeden fall besser als peter huth, obwohl der auch lustig ist.
      http://wwwtech.de/
  3. Hallo Freunde des gehobenen Forumsgenusses,

    Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
    haltet ;)

    Konvertiere mal den String "ÄÖÜ" ein paar Mal nach ASCII und wieder zurück,
    das ergibt lustige Zeichen, die ich noch nie gesehen habe ;-)

    Gruß
    Alexander Brock

    --
    [latex]\lim_{3 \to 4}{\sqrt{3}} = 2[/latex]
    1. 你好 Alexander,

      Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
      haltet ;)

      Konvertiere mal den String "ÄÖÜ" ein paar Mal nach ASCII und wieder
      zurück, das ergibt lustige Zeichen, die ich noch nie gesehen habe ;-)

      Danke – Fehler behoben. Ich hatte die Divisionen nicht richtig behandelt,
      ich habe Float-Divisionen gemacht aber Integer-Divisionen gewollt :)

      再见,
       克里斯蒂安

      --
      Toilettenspruch II. | Toilettenspruch I.
      Gernot Back: Was ich damit sagen will: Dein Gelaber fängt an, sogar mich zu nerven.
      http://wwwtech.de/
  4. Lieber Christian,

    ich habe eine IDNA-Implementation in JavaScript gebaut:

    http://wwwtech.de/idna/

    Du hast einfach zuviel Zeit! ;-)

    so short

    Christoph Zurnieden

    PS:
    »»Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"

    Man sagt, das läge an den vielen Galois-Felder rauchenden primitiven Polynomen und es hätte auch schon so einige Asymp-Tote gegeben! Das nimmt doch gar kein Ende, wenn man die nicht schnell an die kurze Markov-Kette legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug im Hilbertraum abkühlen läßt!
    CZ

    [1] Na, wer ist hier gemeint? ;-)

    1. 你好 Christoph,

      ich habe eine IDNA-Implementation in JavaScript gebaut:

      http://wwwtech.de/idna/

      Du hast einfach zuviel Zeit! ;-)

      Hehe, kann man zuviel Zeit haben? ;)

      »» Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"

      Man sagt, das läge an den vielen Galois-Felder rauchenden primitiven
      Polynomen und es hätte auch schon so einige Asymp-Tote gegeben! Das nimmt
      doch gar kein Ende, wenn man die nicht schnell an die kurze Markov-Kette
      legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug
      im Hilbertraum abkühlen läßt!
      CZ

      [1] Na, wer ist hier gemeint? ;-)

      Keine Ahnung, sags mir ;) Das andere habe ich herauslesen können, aber zu
      [1] fällt mir gerad nix ein *g*

      再见,
       克里斯蒂安

      --
      Toilettenspruch II. | Toilettenspruch I.
      Wer sich zu überschwänglich freut, wir später Grund zum Weinen haben.
      http://wwwtech.de/
      1. Hi,

        Du hast einfach zuviel Zeit! ;-)

        Hehe, kann man zuviel Zeit haben? ;)

        Ja, kann man, denn dann hätte ich meine eigentliches Anliegen -- die Frage, ob mit Absicht keine Fehlermeldung mehr kommt, wenn man zuviel geschrieben hat (ist mir bei  diesem Post passiert, als ich probierte, ob es nicht vielleicht doch paßt) -- auch vorgebracht, statt die Zeit mit dem Zusammenbasteln eines recht flachen Scherz auf Deine Signatur zu verplempern.
        Tja, so geht's einem ;-)

        legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug

        aber zu [1] fällt mir gerad nix ein *g*

        Denis Diderot (*Langres 5.10.1713 - †Paris 31.7.1784)
        Tsk, tsk, tsk!
        ;-)

        so short

        Christoph Zurnieden

        1. 你好 Christoph,

          Du hast einfach zuviel Zeit! ;-)

          Hehe, kann man zuviel Zeit haben? ;)

          Ja, kann man, denn dann hätte ich meine eigentliches Anliegen -- die
          Frage, ob mit Absicht keine Fehlermeldung mehr kommt, wenn man zuviel
          geschrieben hat

          Der Fehler ist schon lange, lange gefixed. Es müsste nur mal ein gewisser
          Herr Seiler mal ein Update auf eine aktuelle Version machen… ;)

          再见,
           克里斯蒂安

          --
          Toilettenspruch II. | Toilettenspruch I.
          Unsere Vorstellungen von der Ewigkeit sind genauso nuetlich wie die Mutmassungen eines Kuehkens ueber die Aussenwelt bevor es die Eierschale aufbricht.
          http://wwwtech.de/
          1. Hi,

            Der Fehler ist schon lange, lange gefixed. Es müsste nur mal ein gewisser
            Herr Seiler mal ein Update auf eine aktuelle Version machen… ;)

            es ist doch immer wieder sehr erquicklich wenn man jemanden hat auf den man alle Schuld abwälzen kann, gelle? ;-)

            Soll ich jetzt in euer Bugzilla eintragen:"Einspielung der Bugfixes noch nicht erfolgt"?

            so short

            Christoph Zurnieden