Changeset 1235

Show
Ignore:
Timestamp:
03/12/10 10:03:10 (2 years ago)
Author:
Hugo
Message:

idnsAdmin: replaced NAPTR validation code

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/unxsBind/interfaces/admin/resource.c

    r1233 r1235  
    10131013                                && cName[i]!='*' ) 
    10141014                { 
    1015                         gcMessage="<blink>Error: </blink>Name can be empty or have only letters, numbers, the default origin @ symbol. Or dashes (-) and periods (.)"; 
     1015                        gcMessage="<blink>Error: </blink>Name can be empty or have only letters, " 
     1016                                "numbers, the default origin @ symbol. Or dashes (-) and periods (.)"; 
    10161017                        cNameStyle="type_fields_req"; 
    10171018                        return(2); 
     
    16791680        else if(!strcmp(cRRType,"NAPTR")) 
    16801681        { 
    1681                 unsigned long uResult=0; 
    1682                 char cAux1[100]={""}; 
    1683                 char cAux2[100]={""}; 
    1684                  
     1682                register int i; 
     1683                unsigned uI=0; 
     1684 
    16851685                if(!cName[0]) 
    16861686                { 
    1687                         gcMessage="<blink>Error: </blink>Must specify e164.arpa Origin or FQDN"; 
    16881687                        cNameStyle="type_fields_req"; 
    1689                         return(16); 
     1688                        gcMessage="<blink>Error: </blink>cName: Resource name required"; 
    16901689                } 
    16911690                else 
    16921691                { 
    1693                         if(!strstr(cName,"e164.arpa.") && !strstr(cName,gcZone) && !strstr(cName,"@")) 
    1694                         { 
    1695                                 gcMessage="<blink>Error: </blink>Must specify e164.arpa Origin or FQDN"; 
    1696                                 cNameStyle="type_fields_req"; 
    1697                                 return(16); 
    1698                         } 
    1699                 } 
    1700                 uResult=strtoul(cParam1,NULL,10); 
    1701                 if(errno==EINVAL) 
    1702                 { 
    1703                         gcMessage="<blink>Error: </blink>Order must be a numerical value"; 
     1692                        register int x=0; 
     1693                         
     1694                        //All lowercase 
     1695                        for(x=0;x<strlen(cName);x++) 
     1696                                cName[x]=tolower(cName[x]); 
     1697                }        
     1698                if(!cParam1[0]) 
     1699                { 
    17041700                        cParam1Style="type_fields_req"; 
    1705                         return(16); 
    1706                 } 
    1707                 uResult=strtoul(cParam2,NULL,10); 
    1708                 if(errno==EINVAL) 
    1709                 { 
    1710                         gcMessage="<blink>Error: </blink>Preference must be a numerical value"; 
     1701                        gcMessage="<blink>Error: </blink>cParam1: Order value required"; 
     1702                } 
     1703                if(!cParam2[0]) 
     1704                { 
    17111705                        cParam2Style="type_fields_req"; 
    1712                         return(16); 
    1713                 } 
    1714  
    1715                 sscanf(cParam3,"%s %s",cAux1,cAux2); 
    1716                 if(!cAux1[0] || !cAux2[0]) 
    1717                 { 
    1718                         gcMessage="<blink>Error: </blink>Must specify Flags+ENUM, e.g: \"U\" \"E2U+sip\""; 
     1706                        gcMessage="<blink>Error: </blink>cParam2: Preference value required"; 
     1707                } 
     1708                if(!cParam3[0]) 
     1709                { 
    17191710                        cParam3Style="type_fields_req"; 
    1720                         return(16); 
    1721                 } 
    1722                 if((strstr(cAux1,"S")!=NULL)) 
    1723                 { 
    1724                         if((strstr(cAux1,"A")!=NULL)  
    1725                                 || (strstr(cAux1,"U")!=NULL) 
    1726                                 || (strstr(cAux1,"P")!=NULL)) 
    1727                         { 
    1728                                 gcMessage="<blink>Error: </blink>The S, A, U and P flags are all mutually exclusive"; 
    1729                                 cParam3Style="type_fields_req"; 
    1730                                 return(16); 
    1731                         } 
    1732                 } 
    1733                 if((strstr(cAux1,"A")!=NULL)) 
    1734                 { 
    1735                         if((strstr(cAux1,"S")!=NULL)  
    1736                                 || (strstr(cAux1,"U")!=NULL) 
    1737                                 || (strstr(cAux1,"P")!=NULL)) 
    1738                         { 
    1739                                 gcMessage="<blink>Error: </blink>The S, A, U and P flags are all mutually exclusive"; 
    1740                                 cParam3Style="type_fields_req"; 
    1741                                 return(16); 
    1742                         } 
    1743                 } 
    1744                 if((strstr(cAux1,"U")!=NULL)) 
    1745                 { 
    1746                         if((strstr(cAux1,"A")!=NULL)  
    1747                                 || (strstr(cAux1,"S")!=NULL) 
    1748                                 || (strstr(cAux1,"P")!=NULL)) 
    1749                         { 
    1750                                 gcMessage="<blink>Error: </blink>The S, A, U and P flags are all mutually exclusive"; 
    1751                                 cParam3Style="type_fields_req"; 
    1752                                 return(16); 
    1753                         } 
    1754                 } 
    1755                 if((strstr(cAux1,"P")!=NULL)) 
    1756                 { 
    1757                         if((strstr(cAux1,"A")!=NULL)  
    1758                                 || (strstr(cAux1,"U")!=NULL) 
    1759                                 || (strstr(cAux1,"S")!=NULL)) 
    1760                         { 
    1761                                 gcMessage="<blink>Error: </blink>The S, A, U and P flags are all mutually exclusive"; 
    1762                                 cParam3Style="type_fields_req"; 
    1763                                 return(16); 
    1764                         } 
    1765                 } 
    1766                 if(strstr(cAux2,"E2U")==NULL) 
    1767                 { 
    1768                         gcMessage="<blink>Error: </blink>Malformed ENUM data"; 
     1711                        gcMessage="<blink>Error: </blink>cParam3: Flags and ENUM double quoted strings required"; 
     1712                } 
     1713                if(!cParam4[0]) 
     1714                { 
     1715                        cParam4Style="type_fields_req"; 
     1716                        gcMessage="<blink>Error: </blink>cParam4: Double quoted regex string and optional SRV target required."; 
     1717                } 
     1718 
     1719                sscanf(cParam1,"%u",&uI); 
     1720                if(!uI && !(isdigit(cParam1[0]))) 
     1721                { 
     1722                        cParam1Style="type_fields_req"; 
     1723                        gcMessage="<blink>Error: </blink>cParam1: Must specify numerical order"; 
     1724                } 
     1725 
     1726                uI=0; 
     1727                sscanf(cParam2,"%u",&uI); 
     1728                if(!uI && (!isdigit(cParam2[0]))) 
     1729                { 
     1730                        cParam2Style="type_fields_req"; 
     1731                        gcMessage="<blink>Error: </blink>cParam2: Must specify numerical preference"; 
     1732                } 
     1733 
     1734                //Check for double quotes 
     1735                uI=0; 
     1736                for(i=0;cParam3[i];i++) 
     1737                        if(cParam3[i]=='\"') uI++; 
     1738                if(uI!=4) 
     1739                { 
    17691740                        cParam3Style="type_fields_req"; 
    1770                         return(16); 
    1771                 } 
    1772                  
     1741                        gcMessage="<blink>Error: </blink>cParam3: Must double quote both flags and ENUM string." 
     1742                                        " Ex: \"U\" \"E2U+sip\""; 
     1743                } 
     1744 
     1745                uI=0; 
     1746                for(i=0;cParam4[i];i++) 
     1747                        if(cParam4[i]=='\"') uI++; 
     1748                if(uI<2) 
     1749                { 
     1750                        cParam4Style="type_fields_req"; 
     1751                                gcMessage="<blink>Error: </blink>Must double quote REGEX." 
     1752                                        " Ex: \"!^.*$!sip:customer-service@example.com!\" _sip._udp.example.com"; 
     1753                } 
     1754 
    17731755 
    17741756        }