Changeset 1209

Show
Ignore:
Timestamp:
03/05/10 08:25:06 (2 years ago)
Author:
Gary
Message:

unxsBind initial commit of NAPTR RR support.

Location:
trunk/unxsBind
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/unxsBind/data/tRRType.txt

    r1208 r1209  
    1 1       A       1       1       1164326458      1       1164372645      1       0       None    IpNumber        IP Number       Not Used        IPv4 dotted quad IP number      Not used        Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    2 2       NS      1       1       1164327003      1       1164372655      1       0       None    FQNameServer    Name Server     Not Used        Fully qualified name server. Ex. ns1.isp.net.   Not used        Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    3 3       MX      1       1       1164327172      1       1164373529      1       1       MxPreference    FQDomainName    Preference Number       Mail Server     A number. Lower is higher priority. Ex. 10      Fully qualified mail server. Ex. mail.isp.net.  Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    4 4       HINFO   1       1       1164327316      1       1164372682      1       1       HardwareType    OperatingSystem Operating System        Hardware Type   Ex1. Solaris Ex2. Linux CentOS  Ex1. Quad Xeon Ex2. Sun Blade 2000      Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    5 5       CNAME   1       1       1164327455      1       1164372694      1       0       None    FQCanonicalName Canonical Name  Not Used        Usually the zone name or another zone domain    Not used        Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    6 6       TXT     1       1       1164327557      1       1170167809      1       0       None    TextRecord      Text in double quotes   Not Used        Ex. "v=spf1 mx ~all"    Not used        Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
    7 7       PTR     1       1       1164327757      1       1164328917      1       0       None    FQDomainName    Domain Name     Not Used        Ex. bart.isp.net.       Not used        PTR Name        Usually the last octet of an IP number of a class C arpa zone   ValidPTRName    1                                       0       0       0       0 
    8 8       SRV     1       1       1195137855      1       1218569944      1       1       None    None    Priority        Weight  The priority of the target host, lower value means more preferred.      A relative weight for records with the same priority.   Service The symbolic name of the desired service. (E.g.: _sip._tcp.example.com.)        None    1       Port    Target  TCP or UDP port on which the ser        The hostname of the machine prov        1       1       0       0 
    9 9       AAAA    1       1       1267715002      0       0       1       0       None    IpNumberv6      IPv6 Number     Not Used        IPv6 colon hex IP number. Must have 7 colons.   Not used        Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.                0                                       0       0       0       0 
     11       A       1       1       1164326458      1       1267802432      1       0               IpNumber        IP Number               IPv4 dotted quad IP number, e.g. 200.32.12.109          Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     22       NS      1       1       1164327003      1       1267802536      1       0               FQNameServer    Name Server             Fully qualified name server. E.g. ns1.isp.net.          Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     33       MX      1       1       1164327172      1       1267802617      1       1       MxPreference    FQDomainName    Preference Number       Mail Server     A number. Lower is higher priority. Ex. 10      Fully qualified mail server. Ex. mail.isp.net.  Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     44       HINFO   1       1       1164327316      1       1267802660      1       1       HardwareType    OperatingSystem Operating System        Hardware Type   Ex1. Solaris Ex2. Linux CentOS  Ex1. Quad Xeon Ex2. Sun Blade 2000      Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     55       CNAME   1       1       1164327455      1       1267802720      1       0               FQCanonicalName Canonical Name          Usually the FQDN zone name or another FQDN zone domain.         Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     66       TXT     1       1       1164327557      1       1267802765      1       0               TextRecord      Text in double quotes           Ex. "v=spf1 mx ~all"            Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     77       PTR     1       1       1164327757      1       1267802853      1       0               FQDomainName    Domain Name             A FQDN. Ex. bart.isp.net.               PTR Name        Usually the last octet of an IP number of a class C arpa zone.  ValidPTRName    1                                                       0       0 
     88       SRV     1       1       1195137855      1       1267802262      1       1       Number  Number  Priority        Weight  The priority of the target host, lower value means more preferred.      A relative weight for records with the same priority.   Service The symbolic name of the desired service. (E.g.: _sip._tcp.example.com.)        Service 1       Port    Target  Port    Target  Port number of service. The FQDN canonical hostname of the server providing the service.        1       1 
     99       AAAA    1       1       1267715002      1       1267802902      1       0               IpNumberv6      IPv6 Number             IPv6 colon hex IP number. Must have 7 colons.           Resource Name   If empty is the zone, if partial the zone is appended, if fully qualified must end in zone name.        RRName1 1                                                       0       0 
     1010      NAPTR   1       1       1267801662      1       1267803686      1       1       Number  Number  Order   Preference      Order number. Ex. 100   Preference number for same order if exists. Ex. 10      e164.arpa Origin or FQDN        Ex1: 4.3.2.1.5.5.5.0.0.8.1.e164.arpa. for tel:+1-800-555-1234. Ex2: example.com.        RRNameNAPTR     1       Enum    NAPTRRegex      Flags+ENUM      Regex (+optional SRV)   Ex1: "S" "SIP+D2U" Ex2: "U" "E2U+sip"   E.g. "!^.*$!sip:customer-service@example.com!" _sip._udp.example.com    1       1 
  • trunk/unxsBind/language.h

    r166 r1209  
    451451#define LANG_FT_tResource_uZone "Belongs to this tZone" 
    452452#define LANG_FL_tResource_cName "cName" 
    453 #define LANG_FT_tResource_cName "Host name" 
     453#define LANG_FT_tResource_cName "Resource name or @" 
    454454#define LANG_FL_tResource_uTTL "uTTL" 
    455455#define LANG_FT_tResource_uTTL "Resource record TTL in seconds" 
     
    824824#define LANG_FT_tResourceImport_uResource "Primary Key" 
    825825#define LANG_FL_tResourceImport_cName "cName" 
    826 #define LANG_FT_tResourceImport_cName "Host name" 
     826#define LANG_FT_tResourceImport_cName "Resource name or @" 
    827827#define LANG_FL_tResourceImport_uTTL "uTTL" 
    828828#define LANG_FT_tResourceImport_uTTL "Resource record TTL in seconds" 
     
    978978#define LANG_FT_tDeletedResource_uZone "Belongs to this tZone" 
    979979#define LANG_FL_tDeletedResource_cName "cName" 
    980 #define LANG_FT_tDeletedResource_cName "Host name" 
     980#define LANG_FT_tDeletedResource_cName "Resource name or @" 
    981981#define LANG_FL_tDeletedResource_uTTL "uTTL" 
    982982#define LANG_FT_tDeletedResource_uTTL "Resource record TTL in seconds" 
  • trunk/unxsBind/tresource.c

    r166 r1209  
    4040//uCreatedBy: uClient for last insert 
    4141static unsigned uCreatedBy=0; 
    42 #define ISM3FIELDS 
    4342//uCreatedDate: Unix seconds date last insert 
    4443static long uCreatedDate=0; 
     
    290289        OpenRow(LANG_FL_tResource_uResource,"black"); 
    291290        printf("<input title='%s' type=text name=uResource value=%u size=16 maxlength=10 " 
    292 ,LANG_FT_tResource_uResource,uResource); 
     291                ,LANG_FT_tResource_uResource,uResource); 
    293292        if(guPermLevel>=20 && uMode) 
    294293        { 
     
    312311//cName 
    313312        OpenRow(LANG_FL_tResource_cName,"black"); 
    314         printf("<input title='%s' type=text name=cName value=\"%s\" size=40 maxlength=100 " 
    315 ,LANG_FT_tResource_cName,EncodeDoubleQuotes(cName)); 
     313        printf("<input title='%s' type=text name=cName value=\"%s\" size=40 maxlength=100 ", 
     314                        LANG_FT_tResource_cName,EncodeDoubleQuotes(cName)); 
    316315        if(guPermLevel>=0 && uMode) 
    317316        { 
     
    326325        OpenRow(LANG_FL_tResource_uTTL,"black"); 
    327326        printf("<input title='%s' type=text name=uTTL value=%u size=16 maxlength=10 " 
    328 ,LANG_FT_tResource_uTTL,uTTL); 
     327                        ,LANG_FT_tResource_uTTL,uTTL); 
    329328        if(guPermLevel>=0 && uMode) 
    330329        { 
     
    345344        OpenRow(LANG_FL_tResource_cParam1,EmptyString(cParam1)); 
    346345        printf("<input title='%s' type=text name=cParam1 value=\"%s\" size=80 maxlength=255 " 
    347 ,LANG_FT_tResource_cParam1,EncodeDoubleQuotes(cParam1)); 
     346                ,LANG_FT_tResource_cParam1,EncodeDoubleQuotes(cParam1)); 
    348347        if(guPermLevel>=0 && uMode) 
    349348        { 
     
    358357        OpenRow(LANG_FL_tResource_cParam2,"black"); 
    359358        printf("<input title='%s' type=text name=cParam2 value=\"%s\" size=80 maxlength=255 " 
    360 ,LANG_FT_tResource_cParam2,EncodeDoubleQuotes(cParam2)); 
     359                ,LANG_FT_tResource_cParam2,EncodeDoubleQuotes(cParam2)); 
    361360        if(guPermLevel>=0 && uMode) 
    362361        { 
     
    371370        OpenRow(LANG_FL_tResource_cParam3,"black"); 
    372371        printf("<input title='%s' type=text name=cParam3 value=\"%s\" size=80 maxlength=255 " 
    373 ,LANG_FT_tResource_cParam3,EncodeDoubleQuotes(cParam3)); 
     372                ,LANG_FT_tResource_cParam3,EncodeDoubleQuotes(cParam3)); 
    374373        if(guPermLevel>=0 && uMode) 
    375374        { 
     
    384383        OpenRow(LANG_FL_tResource_cParam4,"black"); 
    385384        printf("<input title='%s' type=text name=cParam4 value=\"%s\" size=80 maxlength=255 " 
    386 ,LANG_FT_tResource_cParam4,EncodeDoubleQuotes(cParam4)); 
     385                ,LANG_FT_tResource_cParam4,EncodeDoubleQuotes(cParam4)); 
    387386        if(guPermLevel>=0 && uMode) 
    388387        { 
     
    397396        OpenRow(LANG_FL_tResource_cComment,"black"); 
    398397        printf("<textarea title='%s' cols=40 wrap=hard rows=3 name=cComment " 
    399 ,LANG_FT_tResource_cComment); 
     398                ,LANG_FT_tResource_cComment); 
    400399        if(guPermLevel>=0 && uMode) 
    401400        { 
     
    410409        OpenRow(LANG_FL_tResource_uOwner,"black"); 
    411410        if(guPermLevel>=20 && uMode) 
    412         { 
    413         printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey(TCLIENT,"cLabel",uOwner),uOwner); 
    414         } 
    415         else 
    416         { 
    417         printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey(TCLIENT,"cLabel",uOwner),uOwner); 
    418         } 
     411                printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey(TCLIENT,"cLabel",uOwner),uOwner); 
     412        else 
     413                printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey(TCLIENT,"cLabel",uOwner),uOwner); 
    419414//uCreatedBy 
    420415        OpenRow(LANG_FL_tResource_uCreatedBy,"black"); 
    421416        if(guPermLevel>=20 && uMode) 
    422         { 
    423         printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uCreatedBy),uCreatedBy); 
    424         } 
    425         else 
    426         { 
    427         printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uCreatedBy),uCreatedBy); 
    428         } 
     417                printf("%s<input type=hidden name=uCreatedBy value=%u >\n", 
     418                                ForeignKey(TCLIENT,"cLabel",uCreatedBy),uCreatedBy); 
     419        else 
     420                printf("%s<input type=hidden name=uCreatedBy value=%u >\n", 
     421                                ForeignKey(TCLIENT,"cLabel",uCreatedBy),uCreatedBy); 
    429422//uCreatedDate 
    430423        OpenRow(LANG_FL_tResource_uCreatedDate,"black"); 
     
    437430        OpenRow(LANG_FL_tResource_uModBy,"black"); 
    438431        if(guPermLevel>=20 && uMode) 
    439         { 
    440         printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uModBy),uModBy); 
    441         } 
    442         else 
    443         { 
    444         printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uModBy),uModBy); 
    445         } 
     432                printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uModBy),uModBy); 
     433        else 
     434                printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey(TCLIENT,"cLabel",uModBy),uModBy); 
    446435//uModDate 
    447436        OpenRow(LANG_FL_tResource_uModDate,"black"); 
     
    463452        MYSQL_RES *res; 
    464453 
    465         sprintf(gcQuery,"SELECT uResource FROM tResource\ 
    466                                 WHERE uResource=%u" 
    467                                                         ,uResource); 
     454        sprintf(gcQuery,"SELECT uResource FROM tResource WHERE uResource=%u",uResource); 
    468455        mysql_query(&gMysql,gcQuery); 
    469456        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql)); 
     
    480467        //sprintf(gcQuery,"New record %u added"); 
    481468        uResource=mysql_insert_id(&gMysql); 
    482 #ifdef ISM3FIELDS 
    483469        uCreatedDate=luGetCreatedDate("tResource",uResource); 
    484470        iDNSLog(uResource,"tResource","New"); 
    485 #endif 
    486471 
    487472        if(!uMode) 
    488473        { 
    489         sprintf(gcQuery,LANG_NBR_NEWRECADDED,uResource); 
    490         tResource(gcQuery); 
     474                sprintf(gcQuery,LANG_NBR_NEWRECADDED,uResource); 
     475                tResource(gcQuery); 
    491476        } 
    492477 
     
    496481void DeletetResource(void) 
    497482{ 
    498 #ifdef ISM3FIELDS 
    499483        sprintf(gcQuery,"DELETE FROM tResource WHERE uResource=%u AND ( uOwner=%u OR %u>9 )" 
    500484                                        ,uResource,guLoginClient,guPermLevel); 
    501 #else 
    502         sprintf(gcQuery,"DELETE FROM tResource WHERE uResource=%u" 
    503                                         ,uResource); 
    504 #endif 
    505485        mysql_query(&gMysql,gcQuery); 
    506486        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql)); 
     
    509489        if(mysql_affected_rows(&gMysql)>0) 
    510490        { 
    511 #ifdef ISM3FIELDS 
    512491                iDNSLog(uResource,"tResource","Del"); 
    513 #endif 
    514492                tResource(LANG_NBR_RECDELETED); 
    515493        } 
    516494        else 
    517495        { 
    518 #ifdef ISM3FIELDS 
    519496                iDNSLog(uResource,"tResource","DelError"); 
    520 #endif 
    521497                tResource(LANG_NBR_RECNOTDELETED); 
    522498        } 
     
    577553        MYSQL_RES *res; 
    578554        MYSQL_ROW field; 
    579 #ifdef ISM3FIELDS 
    580555        unsigned uPreModDate=0; 
    581556 
    582         sprintf(gcQuery,"SELECT uResource,uModDate FROM tResource WHERE uResource=%u" 
    583                         ,uResource); 
    584 #else 
    585         sprintf(gcQuery,"SELECT uResource FROM tResource WHERE uResource=%u" 
    586                         ,uResource); 
    587 #endif 
    588  
     557        sprintf(gcQuery,"SELECT uResource,uModDate FROM tResource WHERE uResource=%u",uResource); 
    589558        mysql_query(&gMysql,gcQuery); 
    590559        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql)); 
     
    598567 
    599568        field=mysql_fetch_row(res); 
    600 #ifdef ISM3FIELDS 
    601569        sscanf(field[1],"%u",&uPreModDate); 
    602570        if(uPreModDate!=uModDate) tResource(LANG_NBR_EXTMOD); 
    603 #endif 
    604  
    605571        Update_tResource(field[0]); 
    606572        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql)); 
    607573        //sprintf(query,"record %s modified",field[0]); 
    608574        sprintf(gcQuery,LANG_NBRF_REC_MODIFIED,field[0]); 
    609 #ifdef ISM3FIELDS 
    610575        uModDate=luGetModDate("tResource",uResource); 
    611576        iDNSLog(uResource,"tResource","Mod"); 
    612 #endif 
    613577        tResource(gcQuery); 
    614578 
     
    668632                else 
    669633                        sprintf(cBuf14,"---"); 
    670                 printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td><textarea disabled>%s</textarea><td>%s<td>%s<td>%s<td>%s<td>%s</tr>" 
     634                printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>" 
     635                                "<textarea disabled>%s</textarea><td>%s<td>%s<td>%s<td>%s<td>%s</tr>" 
    671636                        ,field[0] 
    672637                        ,field[0] 
  • trunk/unxsBind/tresourcefunc.h

    r1207 r1209  
    589589 
    590590        } 
     591        //Very initial NAPTR validation. Needs much more work to follow RFC2915 and RFC3403. 
     592        else if(!strcmp(cRRType,"NAPTR")) 
     593        { 
     594                register int i; 
     595                unsigned uI=0; 
     596 
     597                if(!cName[0]) 
     598                { 
     599                        guMode=uMode; 
     600                        tResource("cName: Resource name required"); 
     601                } 
     602                else 
     603                { 
     604                        register int x=0; 
     605                         
     606                        //All lowercase 
     607                        for(x=0;x<strlen(cName);x++) 
     608                                cName[x]=tolower(cName[x]); 
     609                }        
     610                if(!cParam1[0]) 
     611                { 
     612                        guMode=uMode; 
     613                        tResource("cParam1: Order value required"); 
     614                } 
     615                if(!cParam2[0]) 
     616                { 
     617                        guMode=uMode; 
     618                        tResource("cParam2: Preference value required"); 
     619                } 
     620                if(!cParam3[0]) 
     621                { 
     622                        guMode=uMode; 
     623                        tResource("cParam3: Flags and ENUM double quoted strings required"); 
     624                } 
     625                if(!cParam4[0]) 
     626                { 
     627                        guMode=uMode; 
     628                        tResource("cParam4: Double quoted regex string and optional SRV target required."); 
     629                } 
     630 
     631                sscanf(cParam1,"%u",&uI); 
     632                if(!uI && !(isdigit(cParam1[0]))) 
     633                { 
     634                        guMode=uMode; 
     635                        tResource("cParam1: Must specify numerical order"); 
     636                } 
     637 
     638                uI=0; 
     639                sscanf(cParam2,"%u",&uI); 
     640                if(!uI && (!isdigit(cParam2[0]))) 
     641                { 
     642                        guMode=uMode; 
     643                        tResource("cParam2: Must specify numerical preference"); 
     644                } 
     645 
     646                //Check for double quotes 
     647                uI=0; 
     648                for(i=0;cParam3[i];i++) 
     649                        if(cParam3[i]=='\"') uI++; 
     650                if(uI!=4 || cParam3[0]!='\"' || cParam3[strlen(cParam3)-1]!='\"') 
     651                { 
     652                        guMode=uMode; 
     653                        tResource("cParam3: Must double quote both flags and ENUM string." 
     654                                        " First and last char must be \". Ex: \"U\" \"E2U+sip\""); 
     655                } 
     656 
     657                uI=0; 
     658                for(i=0;cParam4[i];i++) 
     659                        if(cParam4[i]=='\"') uI++; 
     660                if(uI<2 || cParam4[0]!='\"') 
     661                { 
     662                        guMode=uMode; 
     663                        tResource("Must double quote REGEX. First char must be \"." 
     664                                        " Ex: \"!^.*$!sip:customer-service@example.com!\" _sip._udp.example.com"); 
     665                } 
     666 
     667        } 
    591668        else if(1) 
    592669        {