All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
enum.h
Go to the documentation of this file.
/*
* pdns.h
*
* PWLib library for ENUM lookup
*
* Portable Windows Library
*
* Copyright (C) 2004 Post Increment
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Portable Windows Library.
*
* The Initial Developer of the Original Code is Post Increment
*
* Contributor(s): ______________________________________.
*
* $Revision: 24177 $
* $Author: rjongbloed $
* $Date: 2010-04-05 06:52:04 -0500 (Mon, 05 Apr 2010) $
*/
#ifndef PTLIB_ENUM_H
#define PTLIB_ENUM_H
#ifdef P_USE_PRAGMA
#pragma interface
#endif
#include <ptclib/pdns.h>
#if P_DNS
namespace PDNS {
#ifndef NAPTR_SRV
#define NAPTR_SRV 35
#endif
class NAPTRRecord : public PObject
{
PCLASSINFO(NAPTRRecord, PObject);
public:
Comparison Compare(const PObject & obj) const;
void PrintOn(ostream & strm) const;
WORD order;
WORD preference;
PString flags;
PString service;
PString regex;
PString replacement;
};
PDECLARE_SORTED_LIST(NAPTRRecordList, PDNS::NAPTRRecord)
public:
void PrintOn(ostream & strm) const;
NAPTRRecord * GetFirst(const char * service = NULL);
NAPTRRecord * GetNext(const char * service = NULL);
PDNS::NAPTRRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results);
void UnlockOrder()
{ orderLocked = false; }
protected:
PINDEX currentPos;
int lastOrder;
PBoolean orderLocked;
};
inline PBoolean GetRecords(const PString & domain, NAPTRRecordList & recordList)
{ return Lookup<NAPTR_SRV, NAPTRRecordList, NAPTRRecord>(domain, recordList); }
void SetENUMServers(const PStringArray & serverlist);
PBoolean ENUMLookup(
const PString & dn,
const PString & service,
const PStringArray & domains,
PString & URL
);
PBoolean ENUMLookup(const PString & dn,
const PString & service,
PString & URL
);
/* Uniform Resource Name Resolver Discovery System URN RDS
This can be used to Host URI domains on hosting servers.
This implementation follows RFC 2915 sect 7.1 Example 2:
Example
Question: find h323:me@a.com by looking up mydomain.com
Query the top most NAPTR record of mydomain.com for h323:me@a.com
IN NAPTR 100 10 "" "" ^h323:(.+)@([a-z0-9\-\.]*);*(.*)$/\2.subs.mydomain.com/i
this converts a.com to a.com.subs.mydomain.com
Query H323+D2U NAPTR record for a.com.subs.mydomain.com
IN NAPTR 100 50 "s" "H323+D2U" "" _h323ls._udp.host.com
Query SRV records for host.com
_h323ls._udp.host.com 172800 IN SRV 0 0 1719 gk.host.com
Answer: find h323:me@a.com by LRQ to gk.host.com:1719
*/
void SetRDSServers(const PStringArray & servers);
PBoolean RDSLookup(const PURL & url,
const PString & service,
PStringList & dn
);
PBoolean RDSLookup(const PURL & url,
const PString & service,
const PStringArray & naptrSpaces,
PStringList & returnStr
);
}; // namespace PDNS
#endif // P_DNS
#endif // PTLIB_ENUM_H
// End Of File ///////////////////////////////////////////////////////////////
PDNS::NAPTRRecord::service
PString service
Definition: enum.h:60
PDNS::NAPTRRecord::replacement
PString replacement
Definition: enum.h:62
SetRDSServers
void SetRDSServers(const PStringArray &servers)
Set the Default NAPTR server to lookup.
PDNS::orderLocked
PBoolean orderLocked
Definition: enum.h:80
PDNS::NAPTRRecord::preference
WORD preference
Definition: enum.h:58
SetENUMServers
void SetENUMServers(const PStringArray &serverlist)
Set the default ENUM domain search list.
pdns.h
PObject::Comparison
Comparison
Result of the comparison operation performed by the Compare() function.
Definition: object.h:1184
PDNS::lastOrder
int lastOrder
Definition: enum.h:79
PStringArray
This is an array collection class of PString objects.
Definition: pstring.h:2024
PDNS::UnlockOrder
void UnlockOrder()
Definition: enum.h:74
PBoolean
BOOL PBoolean
Definition: object.h:102
PDNS::currentPos
PINDEX currentPos
Definition: enum.h:78
PDNS::NAPTRRecord::flags
PString flags
Definition: enum.h:59
PDNS::NAPTRRecord::order
WORD order
Definition: enum.h:57
PString
The character string class.
Definition: pstring.h:108
DnsRecord
Definition: pdns.h:152
PDNS::NAPTRRecord::regex
PString regex
Definition: enum.h:61
PDNS::GetNext
NAPTRRecord * GetNext(const char *service=NULL)
PDNS::PrintOn
void PrintOn(ostream &strm) const
PStringList
This is a list collection class of PString objects.
Definition: pstring.h:2184
PDNS::GetFirst
NAPTRRecord * GetFirst(const char *service=NULL)
PDNS::HandleDNSRecord
PDNS::NAPTRRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results)
PDNS::NAPTRRecord::PrintOn
void PrintOn(ostream &strm) const
Output the contents of the object to the stream.
GetRecords
PBoolean GetRecords(const PString &domain, NAPTRRecordList &recordList)
Definition: enum.h:83
PDNS::NAPTRRecord::Compare
Comparison Compare(const PObject &obj) const
Compare the two objects and return their relative rank.
PObject
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
RDSLookup
PBoolean RDSLookup(const PURL &url, const PString &service, PStringList &dn)
Perform a lookup of the specified url on the NAPTR server list (set by SetNAPTRServers) that uses the...
PURL
This class describes a Universal Resource Locator.
Definition: url.h:54
ENUMLookup
PBoolean ENUMLookup(const PString &dn, const PString &service, const PStringArray &domains, PString &URL)
Perform a lookup of the specified DN using the specified service and domain list. ...
PDNS::NAPTRRecord
Definition: enum.h:50
PDECLARE_SORTED_LIST
#define PDECLARE_SORTED_LIST(cls, T)
Begin declaration of a sorted list class.
Definition: lists.h:1028