summaryrefslogtreecommitdiffstats
path: root/ldap-site-mngmt/webinterface/syntax_check.php
diff options
context:
space:
mode:
Diffstat (limited to 'ldap-site-mngmt/webinterface/syntax_check.php')
-rw-r--r--ldap-site-mngmt/webinterface/syntax_check.php268
1 files changed, 268 insertions, 0 deletions
diff --git a/ldap-site-mngmt/webinterface/syntax_check.php b/ldap-site-mngmt/webinterface/syntax_check.php
new file mode 100644
index 00000000..4784d6d3
--- /dev/null
+++ b/ldap-site-mngmt/webinterface/syntax_check.php
@@ -0,0 +1,268 @@
+<?php
+/*
+ Syntaxcheck 1.2 2006/08/08
+
+ A class for checking syntax of forms data
+ Copyright (c) Tarik Gasmi, All Rights Reserved
+*/
+
+
+class Syntaxcheck
+{
+
+ var $ERROR = "";
+ var $CLEAR = false;
+
+ function Syntaxcheck ()
+ {
+ return;
+ }
+
+ function clear_error ()
+ {
+ $this->ERROR = "";
+ }
+
+
+
+
+
+# Ist "dotted quad IPAddress" in gueltigem Bereich? true or false
+# Ueberprueft Format, fuehrende Nullen, und Werte > 255
+#
+# Ueberprueft nicht nach reservierten oder nicht-route-baren IPs.
+#
+function check_ip_syntax($IP)
+{
+ if($this->CLEAR) { $this->clear_error();}
+
+ $len = strlen($IP);
+ if( $len > 15 ){
+ $this->ERROR = "check_ip_syntax: too long [$IP][$len]";
+ return false;
+ }
+
+ $badcharacter = eregi_replace("([0-9\.]+)","",$IP);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_ip_syntax: Bad data in IP address [$badcharacter]";
+ return false;
+ }
+
+ $chunks = explode(".",$IP);
+ $count = count($chunks);
+ if ($count != 4){
+ $this->ERROR = "check_ip_syntax: not a dotted quad [$IP]";
+ return false;
+ }
+
+ while ( list ($key,$val) = each ($chunks) ){
+ if(ereg("^0",$val) && strlen($val) != 1){
+ $this->ERROR = "check_ip_syntax: Invalid IP segment [$val]";
+ return false;
+ }
+ $Num = $val;
+ settype($Num,"integer");
+ if($Num > 255){
+ $this->ERROR = "check_ip_syntax: Segment out of range [$Num]";
+ return false;
+ }
+ }
+
+ return true;
+
+}
+
+# Netzwerkaddresse
+function check_netip_syntax($IP)
+{
+ if($this->CLEAR) { $this->clear_error();}
+
+ if ( !($this->check_ip_syntax($IP)) ){
+ return false;
+ }
+ $chunks = explode(".",$IP);
+ if ( $chunks[3] != "0" ){
+ return false;
+ }
+ return true;
+}
+
+# MAC Adresse
+
+# Domainname
+
+# Hostname
+function is_hostname ($hostname = ""){
+
+ if($this->CLEAR) { $this->clear_error(); }
+
+ $web = false;
+
+ if(empty($hostname))
+ {
+ $this->ERROR = "is_hostname: No hostname submitted";
+ return false;
+ }
+
+ // Only a-z, 0-9, and "-" or "." are permitted in a hostname
+
+ // Patch for POSIX regex lib by Sascha Schumann sas@schell.de
+ $Bad = eregi_replace("[-A-Z0-9\.]","",$hostname);
+
+ if(!empty($Bad))
+ {
+ $this->ERROR = "is_hostname: invalid chars [$Bad]";
+ return false;
+ }
+
+ // See if we're doing www.hostname.tld or hostname.tld
+ if(eregi("^www\.",$hostname))
+ {
+ $web = true;
+ }
+
+ // double "." is a not permitted
+ if(ereg("\.\.",$hostname))
+ {
+ $this->ERROR = "is_hostname: Double dot in [$hostname]";
+ return false;
+ }
+ if(ereg("^\.",$hostname))
+ {
+ $this->ERROR = "is_hostname: leading dot in [$hostname]";
+ return false;
+ }
+
+ $chunks = explode(".",$hostname);
+
+ if( (gettype($chunks)) != "array")
+ {
+ $this->ERROR = "is_hostname: Invalid hostname, no dot seperator [$hostname]";
+ return false;
+ }
+
+ $count = ( (count($chunks)) - 1);
+
+ if($count < 1)
+ {
+ $this->ERROR = "is_hostname: Invalid hostname [$count] [$hostname]\n";
+ return false;
+ }
+
+ // Bug that can't be killed without doing an is_host,
+ // something.something will return TRUE, even if it's something
+ // stupid like NS.SOMETHING (with no tld), because SOMETHING is
+ // construed to BE the tld. The is_bigfour and is_country
+ // checks should help eliminate this inconsistancy. To really
+ // be sure you've got a valid hostname, do an is_host() on it.
+
+ if( ($web) and ($count < 2) )
+ {
+ $this->ERROR = "is_hostname: Invalid hostname [$count] [$hostname]\n";
+ return false;
+ }
+
+ $tld = $chunks[$count];
+
+ if(empty($tld))
+ {
+ $this->ERROR = "is_hostname: No TLD found in [$hostname]";
+ return false;
+ }
+
+ if(!$this->is_bigfour($tld))
+ {
+ if(!$this->is_country($tld))
+ {
+ $this->ERROR = "is_hostname: Unrecognized TLD [$tld]";
+ return false;
+ }
+ }
+
+
+ return true;
+}
+
+
+# Syntax Check für die Eingaben: Uhrzeit, Wochentag, Monatstag, Monatstag.Monat
+function check_timerange_syntax($mcday,$mcbeg,$mcend){
+
+ if($this->CLEAR) { $this->clear_error();}
+
+ $badcharacter = eregi_replace("([a-z0-9\.]+)","",$mcday);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_ip_syntax: Bad data in MC Day [$badcharacter]";
+ return false;
+ }
+ $badcharacter = eregi_replace("([x0-9]+)","",$mcbeg);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_ip_syntax: Bad data in MC Begin [$badcharacter]";
+ return false;
+ }
+ $badcharacter = eregi_replace("([x0-9]+)","",$mcend);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_ip_syntax: Bad data in MC End [$badcharacter]";
+ return false;
+ }
+
+ $lenmcday = strlen($mcday);
+ if (eregi("([a-z]+)",$mcday)){
+ if ($lenmcday > 2){$this->ERROR = "WOTAG > 2"; return false;}
+ if (eregi("([0-9\.]+)",$mcday)){$this->ERROR = "WOTAG enthaelt (0-9.)"; return false;}
+ #if (!(eregi("[mdsfx][aiorx]",$mcday))){return false;}
+ if (!(eregi("(m[io]|d[io]|s[ao]|fr|x)",$mcday))){$this->ERROR = "WOTAG falscher String"; return false;}
+ }
+ if (eregi("([0-9]+)",$mcday)){
+ if (eregi("[\.]",$mcday)){
+ preg_match("/[\.]/",$mcday,$treffer);
+ if (count($treffer) > 1){$this->ERROR = "mehr als 2 Punkte"; return false;};
+ $exp = explode('.',$mcday);
+ $day = $exp[0];
+ $lenday = strlen($day);
+ if ($lenday > 2){$this->ERROR = "TAG > 2"; return false;}
+ if (!(eregi("(0[1-9]|[0-2][0-9]|3[01])",$day))){$this->ERROR = "TAG nicht korrekt"; return false;}
+ $month = $exp[1];
+ $lenmonth = strlen($month);
+ if ($lenmonth > 2){$this->ERROR = "MONAT > 2"; return false;}
+ if (!(eregi("(0[0-9]|0[0-9]|1[0-2])",$month))){$this->ERROR = "Monat nicht korrekt"; return false;}
+
+ }
+ else{
+ if ($lenmcday > 2){$this->ERROR = "TAG > 2"; return false;}
+ if (!(eregi("(0[0-9]|[0-2][0-9]|3[01])",$mcday))){$this->ERROR = "Tag nicht korrekt"; return false;}
+ }
+ }
+
+ $lenmcbeg = strlen($mcbeg);
+ if ($lenmcbeg == 2){
+ if (!(eregi("(0[0-9]|1[0-9]|2[0-3]|x)",$mcbeg))){$this->ERROR = "Uhrzeit nicht korrekt"; return false;}
+ }
+ if ($lenmcbeg == 1){
+ if (!(eregi("([0-9]|x)",$mcbeg))){$this->ERROR = "Uhrzeit nicht korrekt"; return false;}
+ }
+ $lenmcend = strlen($mcend);
+ if ($lenmcend == 2){
+ if (!(eregi("(0[0-9]|1[0-9]|2[0-3]|x)",$mcend))){$this->ERROR = "Uhrzeit nicht korrekt"; return false;}
+ }
+ if ($lenmcend == 1){
+ if (!(eregi("([0-9]|x)",$mcend))){$this->ERROR = "Uhrzeit nicht korrekt"; return false;}
+ }
+
+ return true;
+}
+
+
+# Überprüft ob Menuposition ein Zahl ist
+function check_menuposition($menpos){
+
+ if($this->CLEAR) { $this->clear_error();}
+
+ $badcharacter = eregi_replace("([0-9]+)","",$menpos);
+ if(!empty($badcharacter)){
+ $this->ERROR = "check_menupostion: Bad data in Menu Position [$badcharacter]";
+ return false;
+ }
+}
+
+}
+?> \ No newline at end of file