Toon posts:

[feat]RFC 2732 implementeren in React (link van IPv6 adres)

Pagina: 1
Acties:
  • 1.992 views

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 08:06

Jaap-Jan

Geen IPv6- ready check meer :(

Topicstarter
Laat ik maar geen formeel geneuzel doen. :P

tim427 in "Het grote IPv6 topic". Het zou mooi zijn als het letterlijke IPv6-adres in deze post klikbaar zou zijn. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Enkel een regexp voor het matchen van IPv6 adressen is al behoorlijk huge:
code:
1
([a-f0-9]{1,4}(:[a-f0-9]{1,4})*|[a-f0-9]{1,4}(:[a-f0-9]{1,4})*::([a-f0-9]{1,4}(:[a-f0-9]{1,4})*)?|::([a-f0-9]{1,4}(:[a-f0-9]{1,4})*)?)(:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?

En dit limiteert nog niet eens het aantal 16-bit stukken tot max 8 (of minder bij het gebruik van compressie-indicatie of de IPv6/IPv4 mix-vorm).

tbh is het nut ook maar zeer gering, wanneer post je nu al ueberhaupt een link met een IPv4-adres in plaats van gewoon een hostname?

Het enige is dat [url="http://[2002:52d9:f073::52d9:f073]"]link[/url] (let op: link zal wel altijd tussen quotes moeten!) ook niet werkt; dat zou imo wel aangepast kunnen worden zodat er toch altijd een manier is om een link met een IPv6 adres te posten :)

[Voor 18% gewijzigd door crisp op 04-06-2009 00:15]

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

blegh, ::13.1.68.3 is volgens de tekst van rfc2373 een geldig IPv6 adres maar wordt niet gematched door de formele ABNF in diezelfde rfc (appendix B ) :X

eens kijken wat de status is van rfc3986, maar die maakt het niet simpeler :P

[Voor 24% gewijzigd door crisp op 04-06-2009 13:10]

Intentionally left blank


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 08:06

Jaap-Jan

Geen IPv6- ready check meer :(

Topicstarter
Ik zie het. Er moet volgens die ABNF minstens één hexadecimaal cijfer komen na een dubbele punt, terwijl dat voor IPv4 adressen niet hoeft. Lekker. :/

Misschien heb je hier wat aan: http://rfc-ref.org/RFC-TEXTS/3986/index.html. Kun je ook zien of ze obsolete zijn (zoals het geval was met die brakke RFC). :)




Dit is wat je dus nodig hebt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
IP-literal    = "[" ( IPv6address / IPvFuture  ) "]"

   IPvFuture     = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

   IPv6address   =                            6( h16 ":" ) ls32
                 /                       "::" 5( h16 ":" ) ls32
                 / [               h16 ] "::" 4( h16 ":" ) ls32
                 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
                 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
                 / [ *3( h16 ":" ) h16 ] "::"    h16 ":"   ls32
                 / [ *4( h16 ":" ) h16 ] "::"              ls32
                 / [ *5( h16 ":" ) h16 ] "::"              h16
                 / [ *6( h16 ":" ) h16 ] "::"

   h16           = 1*4HEXDIG
   ls32          = ( h16 ":" h16 ) / IPv4address
   IPv4address   = dec-octet "." dec-octet "." dec-octet "." dec-octet

   dec-octet     = DIGIT                 ; 0-9
                 / %x31-39 DIGIT         ; 10-99
                 / "1" 2DIGIT            ; 100-199
                 / "2" %x30-34 DIGIT     ; 200-249
                 / "25" %x30-35          ; 250-255


En hij is niet makkelijker, maar wel preciezer. Die eerdere RFC specificeerde helemaal niet dat er maximaal 8 van die 'hexdig'- blokken mochten zijn. :)

[Voor 67% gewijzigd door Jaap-Jan op 04-06-2009 13:29]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Jaap-Jan schreef op donderdag 04 juni 2009 @ 13:20:
[...]
En hij is niet makkelijker, maar wel preciezer. Die eerdere RFC specificeerde helemaal niet dat er maximaal 8 van die 'hexdig'- blokken mochten zijn. :)
Ook dat klopt en was me al opgevallen. Zoals je kon zien was ik al naar rfc3986 aan het kijken en ben ik al langzaam aan begonnen om een aantal van onze url-check functies uit te breiden met IPv6 support. Ik doe dat in eerste instantie met een simpele pre-selectie:
code:
1
\[[0-9a-f.:]+\]

waarna ik dat na een eventuele match verder check op validity; op die manier houdt ik het nog enigszins overzichtelijk en performant - rfc3986 wil je niet meer in 1 regexp stoppen (waar dat met rfc2396 nog prima kon) :P

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Inmiddels wordt een IPv6 adres tussen quotes in een [url]-tag goed geparsed:

link

Intentionally left blank


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 08:06

Jaap-Jan

Geen IPv6- ready check meer :(

Topicstarter
Nice, dat heeft nog heel wat voeten in de aarde gehad. :P

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee