[ Impressum ]

LiveCode NetValidatorLib

www.Rozek.de > LiveCode > NetValidatorLib
Die "NetValidatorLib" ist ein kleiner LiveCode [1] "Library Stack" mit einer Reihe von Kommandos und Funktionen für die Validierung numerischer IP-Adressen, symbolischer Host-Namen und EMail-Adressen.

Download und Installation

Die "NetValidatorLib" liegt als unverschlüsselter LiveCode-Stack bereit und kann von hier aus heruntergeladen werden:
Nach dem Herunterladen legen Sie die "NetValidatorLib" einfach in einem Verzeichnis Ihrer Wahl ab - eine explizite Installation ist nicht erforderlich.

Verwendung in Desktop-Anwendungen

Die "NetValidatorLib" wurde als LiveCode "Library Stack" implementiert und muss deshalb vor ihrer Verwendung zunächst einmalig mithilfe der Anweisung

start using stack "NetValidatorLib"

eingebunden werden. Zweckmäßigerweise wird diese Anweisung im Rahmen einer preOpenStack-Prozedur von einem MainStack ausgeführt.

Soll aus dem MainStack später eine eigenständige Anwendung werden, muss die "NetValidatorLib" außerdem Bestandteil der Liste der "Stack Files" zu diesem MainStack sein (am einfachsten geschieht dies mithilfe der "Standalone Application Settings" aus der LiveCode-Entwicklungsumgebung heraus).

Verwendung in mobilen Anwendungen

Die "NetValidatorLib" kann auch in mobilen Anwendungen eingesetzt werden. Allerdings muss sie dann - anders als für eigenständige Desktop-Anwendungen - in die Liste der "non-stack files" aufgenommen und mithilfe der Anweisung

start using stack (specialFolderPath("engine") & "/NetValidatorLib.livecode")

in den MainStack eingebunden werden. Die Liste der "non-stack files" findet sich ebenfalls auf der Seite "Copy Files" in den "Standalone Application Settings" der LiveCode-Entwicklungsumgebung.

Funktionsübersicht

Die "NetValidatorLib" enthält insgesamt vier Gruppen von Kommandos und Funktionen:
  • Kommandos zur Validierung numerischer IP-Adressen, symbolischer Host-Namen und EMail-Adressen
    prüfen die übergebenen Werte auf formale Korrektheit und werfen im Fehlerfall eine Ausnahme;
     
  • Funktionen zur Validierung numerischer IP-Adressen, symbolischer Host-Namen und EMail-Adressen
    prüfen die übergebenen Werte auf formale Korrektheit und liefern true im Erfolgs- bzw. false im Fehlerfall;
     
  • Kommandos zur Validierung optionaler Argumente (allowXXX)
    prüfen die übergebenen Argumente (sofern vorhanden) auf formale Korrektheit und werfen im Fehlerfall eine Ausnahme;
     
  • Kommandos zur Validierung erforderlicher Argumente (expectXXX)
    prüfen das Vorhandensein der erwarteten Argumente und deren Inhalt auf formale Korrektheit - im Fehlerfall wird eine Ausnahme geworfen.
Die zuerst genannte Gruppe enthält die eigentliche Funktionalität - alle anderen Kommandos und Funktionen vereinfachen lediglich deren Nutzung.

Kommandos zur Validierung Netz-bezogener Angaben

Die Namen der Kommandos aus dieser Gruppe beginnen alle mit validate. Entspricht das mitgegebene Argument Candidate der überprüften Syntax, läuft die Prozedur ohne weitere Vorkommnisse durch und das aufrufende Skript kann fortgesetzt werden. Anderenfalls wird eine dem Fehler entsprechende Ausnahme geworfen, die das aufrufende Skript auswerten kann.

Die Kommandos sind (in alphabetischer Reihenfolge):


validateEMailAddress <Candidate>


validateEMailAddress stellt sicher, dass der übergebene Candidate eine (gemäß RFC 5322 - ohne die ohnehin zu vermeidenden "quoted-string" Formate) gültige EMail-Adresse enthält.

validateHostName <Candidate>


validateHostName stellt sicher, dass der übergebene Candidate einen (gemäß RFC 1035, Abschnitt 2.3.1) gültigen DNS-Namen enthält.

validateIPAddress <Candidate>


validateIPAddress stellt sicher, dass der übergebene Candidate eine gültige numerische IPv4- oder IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validateIPv4Address <Candidate>


validateIPv4Address stellt sicher, dass der übergebene Candidate eine gültige numerische IPv4-Adresse enthält.

validateIPv6Address <Candidate>


validateIPv6Address stellt sicher, dass der übergebene Candidate eine gültige numerische IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validateIPHost <Candidate>


validateIPHost stellt sicher, dass der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4- bzw. IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validateIPv4Host <Candidate>


validateIPv4Host stellt sicher, dass der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4-Adresse enthält.

validateIPv6Host <Candidate>


validateIPv6Host stellt sicher, dass der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validatePortNumber <Candidate>


validatePortNumber stellt sicher, dass der übergebene Candidate eine gültige Port-Nummer (d.h. eine ganze Zahl im Bereich 0...65535) enthält.

Funktionen zur Validierung Netz-bezogener Angaben

Die Namen der Funktionen aus dieser Gruppe beginnen alle mit valid. Entspricht das mitgegebene Argument Candidate der überprüften Syntax, kehrt die Funktion am Ende mit dem Ergebnis true zurück. Anderenfalls wird false zurückgegeben (jedoch keine Ausnahme geworfen!).

Die Funktionen sind (in alphabetischer Reihenfolge):

validEMailAddress <Candidate>


validEMailAddress prüft, ob der übergebene Candidate eine (gemäß RFC 5322 - ohne die ohnehin zu vermeidenden "quoted-string" Formate) gültige EMail-Adresse enthält.


validHostName <Candidate>


validHostName prüft, ob der übergebene Candidate einen (gemäß RFC 1035, Abschnitt 2.3.1) gültigen DNS-Namen enthält.

validIPAddress <Candidate>


validIPAddress prüft, ob der übergebene Candidate eine gültige numerische IPv4- oder IPv6-Adresse enthält. Die Funktion unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validIPv4Address <Candidate>


validIPv4Address prüft, ob der übergebene Candidate eine gültige numerische IPv4-Adresse enthält.

validIPv6Address <Candidate>


validIPv6Address prüft, ob der übergebene Candidate eine gültige numerische IPv6-Adresse enthält. Die Funktion unterstützt eine ganze Reihe von Formaten - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validIPHost <Candidate>


validIPHost prüft, ob der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4- bzw. IPv6-Adresse enthält. Die Funktion unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validIPv4Host <Candidate>


validIPv4Host prüft, ob der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4-Adresse enthält.

validIPv6Host <Candidate>


validIPv6Host prüft, ob der übergebene Candidate entweder einen gültigen DNS-Namen oder eine gültige numerische IPv6-Adresse enthält. Die Funktion unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

validPortNumber <Candidate>


validPortNumber prüft, ob der übergebene Candidate eine gültige Port-Nummer (d.h. eine ganze Zahl im Bereich 0...65535) enthält.

Validierung optionaler Argumente

Diese Gruppe von Kommandos (deren Name mit "allow" beginnt) validiert optionale Argumente - von den Kommandos zur Validierung mandatorischer Argument unterschieden sich diese Prozeduren dadurch, dass das übergebene Argument auch empty sein darf.

Die Kommandos sind (in alphabetischer Reihenfolge):

allowEMailAddress <ArgName>, <ArgValue>


allowEMailAddress stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder eine (gemäß RFC 5322 - ohne die ohnehin zu vermeidenden "quoted-string" Formate) gültige EMail-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowHostName <ArgName>, <ArgValue>


allowHostName stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder einen (gemäß RFC 1035, Abschnitt 2.3.1) gültigen DNS-Namen enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPAddress <ArgName>, <ArgValue>


allowIPAddress stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder eine gültige numerische IPv4- oder IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPv4Address <ArgName>, <ArgValue>


allowIPv4Address stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder eine gültige numerische IPv4-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPv6Address <ArgName>, <ArgValue>


allowIPv6Address stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder eine gültige numerische IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPHost <ArgName>, <ArgValue>


allowIPHost stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder einen gültigen DNS-Namen bzw. eine gültige numerische IPv4- oder IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPv4Host <ArgName>, <ArgValue>


allowIPv4Host stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowIPv6Host <ArgName>, <ArgValue>


allowIPv6Host stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder entweder einen gültigen DNS-Namen oder eine gültige numerische IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

allowPortNumber <ArgName>, <ArgValue>


allowPortNumber stellt sicher, dass der übergebene ArgValue entweder fehlt (d.h. empty ist) oder eine gültige Port-Nummer (d.h. eine ganze Zahl im Bereich 0...65535) enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

Validierung erforderlicher Argumente

Diese Gruppe von Kommandos (deren Name mit "expect" beginnt) validiert mandatorische Argumente - von den Kommandos zur Validierung optionaler Argument unterschieden sich diese Prozeduren dadurch, dass das übergebene Argument niemals empty sein darf.

Die Kommandos sind (in alphabetischer Reihenfolge):

expectEMailAddress <ArgName>, <ArgValue>


expectEMailAddress stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und eine (gemäß RFC 5322 - ohne die ohnehin zu vermeidenden "quoted-string" Formate) gültige EMail-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectHostName <ArgName>, <ArgValue>


expectHostName stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und einen (gemäß RFC 1035, Abschnitt 2.3.1) gültigen DNS-Namen enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPAddress <ArgName>, <ArgValue>


expectIPAddress stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und eine gültige numerische IPv4- oder IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPv4Address <ArgName>, <ArgValue>


expectIPv4Address stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und eine gültige numerische IPv4-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPv6Address <ArgName>, <ArgValue>


expectIPv6Address stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und eine gültige numerische IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPHost <ArgName>, <ArgValue>


expectIPHost stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und einen gültigen DNS-Namen bzw. eine gültige numerische IPv4- oder IPv6-Adresse enthält. Das Kommando unterstützt eine ganze Reihe von Formaten von IPv6-Adressen - einschließlich solcher mit doppelten Doppelpunkten und/oder nachfolgender "dotted-quad"-Notationen.

ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPv4Host <ArgName>, <ArgValue>


expectIPv4Host stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und entweder einen gültigen DNS-Namen oder eine gültige numerische IPv4-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectIPv6Host <ArgName>, <ArgValue>


expectIPv6Host stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und entweder einen gültigen DNS-Namen oder eine gültige numerische IPv6-Adresse enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

expectPortNumber <ArgName>, <ArgValue>


expectPortNumber stellt sicher, dass der übergebene ArgValue vorhanden (also nicht empty) ist und eine gültige Port-Nummer (d.h. eine ganze Zahl im Bereich 0...65535) enthält. ArgName muss ein syntaktisch korrekter, nicht-leerer LiveCode-Bezeichner sein und wird dazu verwendet, für eine evtl. zu werfende Ausnahme eine sinnvolle Fehlermeldung zu bilden.

System-Anforderungen

Die "NetValidatorLib" benötigt LiveCode 6.x oder neuer und funktioniert unabhängig vom jeweiligen Betriebssystem sowohl auf stationären wie auch auf mobilen Plattformen.

Abhängigkeiten

Die "NetValidatorLib" verwendet intern die "BasicLib" und die "ValidatorLib" - beim Einsatz der "NetValidatorLib" müssen diese beiden also ebenfalls vorhanden sein.

Automatisierte Tests

Für die "NetValidatorLib" steht auch ein separater Stack mit automatisierten Tests dieser Bibliothek bereit:
Beim Öffnen dieses Stack wird zugleich auch das Kommando performTests ausgeführt, welches für die eigentlichen Tests zuständig ist. Am Ende sollte die "Message Box" der LiveCode-Entwicklungsumgebung erscheinen und die Meldung

all tests passed

angezeigt werden - anderenfalls sollte dort stattdessen eine Fehlermeldung mit Hinweisen zum fehlgeschlagenen Test zu finden sein.

Bekannte Fehler

Derzeit sind keine Fehler der "NetValidatorLib" bekannt.

Lizenz-Hinweis

Die "NetValidatorLib" und die zugehörigen Tests unterliegen der "Creative Commons Namensnennung 4.0 Unported Lizenz", was im Wesentlichen bedeutet, dass Sie beides (selbst in kommerziellem Rahmen) sowohl verwenden als auch verändern dürfen, sofern Sie Ihre Änderungen als solche kenntlich machen und an geeigneter Stelle auf mich als den ursprünglichen Autor hinweisen.

                       
Viel Spaß mit LiveCode und der "NetValidatorLib"! Creative Commons Lizenzvertrag

Literaturhinweise

[1]
(RunRev Ltd.)
LiveCode | Create apps for multiple platforms. Quickly. Easily. Free
LiveCode ist eine (dem legendären HyperCard von Apple) nachempfundene Entwicklungsumgebung sowohl für stationäre (Windows, Linux, MacOS X) als auch für mobile (IOS, Android) Anwendungen. Ein visueller Editor ermöglicht den schnellen Entwurf von Bedienoberflächen, die der englischen Sprache nachempfundene Programmiersprache erlaubt auch Nicht-Programmierprofis die Entwicklung professioneller Anwendungen und das Konzept der "Modifikation am laufenden Programm" vereinfacht Test und Fehlerbehebung.