Changeset 1235
- Timestamp:
- 03/12/10 10:03:10 (2 years ago)
- Files:
-
- 1 modified
-
trunk/unxsBind/interfaces/admin/resource.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/unxsBind/interfaces/admin/resource.c
r1233 r1235 1013 1013 && cName[i]!='*' ) 1014 1014 { 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 (.)"; 1016 1017 cNameStyle="type_fields_req"; 1017 1018 return(2); … … 1679 1680 else if(!strcmp(cRRType,"NAPTR")) 1680 1681 { 1681 unsigned long uResult=0; 1682 char cAux1[100]={""}; 1683 char cAux2[100]={""}; 1684 1682 register int i; 1683 unsigned uI=0; 1684 1685 1685 if(!cName[0]) 1686 1686 { 1687 gcMessage="<blink>Error: </blink>Must specify e164.arpa Origin or FQDN";1688 1687 cNameStyle="type_fields_req"; 1689 return(16);1688 gcMessage="<blink>Error: </blink>cName: Resource name required"; 1690 1689 } 1691 1690 else 1692 1691 { 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 { 1704 1700 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 { 1711 1705 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 { 1719 1710 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 { 1769 1740 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 1773 1755 1774 1756 }
