fred-mod-whoisd-3.12.2
whois-client.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-2018 CZ.NIC, z. s. p. o.
3  *
4  * This file is part of FRED.
5  *
6  * FRED is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * FRED is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with FRED. If not, see <https://www.gnu.org/licenses/>.
18  */
27 #ifndef WHOIS_CLIENT_H
28 #define WHOIS_CLIENT_H
29 
30 #include "Logger.h"
31 
40 #define CORBA_OK 0
42 #define CORBA_OK_LIMIT 1
43 #define CORBA_SERVICE_FAILED 2
44 #define CORBA_INTERNAL_ERROR 3
45 #define CORBA_UNKNOWN_ERROR 4
54 #define TIME_BUFFER_LENGTH 60
55 
56 #define MAX_ERROR_MSG_LEN 100
57 
61 #define MAX_OBJECT_COUNT 100
62 
65 typedef void *service_Whois;
68 typedef void *service_Logger;
69 
70 #define T_NONE 0 /* Nothing. */
71 #define T_DOMAIN 1 /* Object type domain. */
72 #define T_NSSET 2 /* Object type nsset. */
73 #define T_CONTACT 4 /* Object type contact. */
74 #define T_REGISTRAR 8 /* Object type registrar. */
75 #define T_KEYSET 16 /* Object type keyset. */
76 
80 typedef enum {
81  SA_NONE = 0,
82  SA_REGISTRANT,
83  SA_ADMIN_C,
84  SA_TEMP_C,
85  SA_NSSET,
86  SA_KEYSET,
87  SA_NSERVER,
88  SA_TECH_C
90 
94 /*
95  * This enum reflects database table request_type
96  */
97 typedef enum {
98  Info = 1105,
100 
104 typedef struct {
107  int type;
108  const char *value;
110 
112 typedef struct {
113  char *domain;
114  char *registrant;
115  char **admin_c;
116  char **temp_c;
117  char *nsset;
118  char *keyset;
119  char *registrar;
120  char **status;
121  char *registered;
122  char *changed;
123  char *expire;
125  int *status_ids;
126 }obj_domain;
127 
129 typedef struct {
130  char *nsset;
131  char **nserver;
132  char **nserver_addrs;
133  char **tech_c;
134  char *registrar;
135  char *created;
136  char *changed;
137 }obj_nsset;
138 
140 typedef struct {
141  int key_tag;
142  int alg;
144  char *digest;
147 
149 typedef struct {
150  int flags;
151  int protocol;
152  int alg;
153  char *public_key;
154 } keyset_dnskey;
155 
157 typedef struct {
158  char *keyset;
160  char **tech_c;
165  char *registrar;
166  char *created;
167  char *changed;
168 } obj_keyset;
169 
171 typedef struct {
172  char *contact;
173  char *org;
174  char *name;
175  char **address;
176  char *phone;
177  char *fax_no;
178  char *e_mail;
179  char *registrar;
180  char *created;
181  char *changed;
182  int disclose;
185 }obj_contact;
186 
188 typedef struct {
189  char *registrar;
190  char *org;
191  char *url;
192  char *phone;
193  char **address;
195 
197 typedef struct {
198  int type;
199  union {
200  obj_domain d;
201  obj_nsset n;
202  obj_keyset k;
203  obj_contact c;
204  obj_registrar r;
205  }obj;
207 
219 int
221  const whois_request *wr,
222  general_object *objects,
223  char *timebuf,
224  char *errmsg);
225 
235 void whois_release_data(general_object *object_list);
236 
237 int check_duplicates(int type, char *handle, general_object *objects, int index_free);
238 
249 int
251  const char *sourceIP,
252  const char *content,
253  ccReg_RequestProperties *properties,
254  ccReg_TID *log_entry_id,
255  char *errmsg);
256 
267 int
269  const char *content,
270  ccReg_RequestProperties *properties,
271  ccReg_TID log_entry_id,
272  CORBA_long result_code,
273  char *errmsg);
274 
275 #endif /* WHOIS_CLIENT_H */
keyset_dnskey::protocol
int protocol
= 3
Definition: whois-client.h:151
obj_nsset::created
char * created
Date of nsset creation.
Definition: whois-client.h:135
whois_request::type
int type
type of the objects we're looking for
Definition: whois-client.h:107
log_whois_request
static apr_status_t log_whois_request(whois_request *wr, conn_rec *c, char *content, whoisd_server_conf *sc, ccReg_TID *log_entry_id)
Call fred-logd now it mostly returns APR_SUCCESS because logger failure isn't fatal to whois itself o...
Definition: mod_whoisd.c:1001
obj_nsset::changed
char * changed
Last update of nsset.
Definition: whois-client.h:136
whois_release_data
void whois_release_data(general_object *object_list)
Release data.
Definition: whois-client.c:1434
whois_close_log_message
int whois_close_log_message(service_Logger service, const char *content, ccReg_RequestProperties *properties, ccReg_TID log_entry_id, CORBA_long result_code, char *errmsg)
Update and close existing event using logging daemon.
Definition: whois-client.c:1262
obj_keyset::ds
keyset_dsrecord * ds
Delegation signer records.
Definition: whois-client.h:162
recurse_domain
static int recurse_domain(service_Whois service, int rec, obj_domain *d, general_object *objects, int *index_free, char *errmsg)
The function does recursion on domain.
Definition: whois-client.c:991
whois_output_filter
static apr_status_t whois_output_filter(ap_filter_t *f, apr_bucket_brigade *bb)
Whois output filter inserts in front of every <LF>, which is not preceeded by <CR>,...
Definition: mod_whoisd.c:1391
MAX_WHOIS_REQUEST_LENGTH
#define MAX_WHOIS_REQUEST_LENGTH
Maximal length of input line.
Definition: mod_whoisd.c:94
obj_contact::contact
char * contact
Handle of contact.
Definition: whois-client.h:172
obj_keyset::registrar
char * registrar
Handle of registrar.
Definition: whois-client.h:165
whois_request::axe
search_axis axe
which object type is used as search criteria
Definition: whois-client.h:105
MAX_RETRIES
#define MAX_RETRIES
Max # of retries when COMM_FAILURE exception during CORBA call occurs.
Definition: whois-client.c:53
obj_registrar
Structure holding registrar data.
Definition: whois-client.h:188
IS_SEARCH_SET
#define IS_SEARCH_SET(wr)
checks if there is any kind of search set in the query
Definition: mod_whoisd.c:120
obj_contact::org
char * org
Organization name.
Definition: whois-client.h:173
obj_domain::status_ids
int * status_ids
Untranslated status numbers from corba.
Definition: whois-client.h:125
get_registrar_by_handle
static int get_registrar_by_handle(service_Whois service, const char *handle, general_object *objects, int *index_free, char *errmsg)
Search registrar by handle.
Definition: whois-client.c:243
recurse_keyset
static int recurse_keyset(service_Whois service, int rec, obj_keyset *k, general_object *objects, int *index_free, char *errmsg)
The function does recursion on keyset.
Definition: whois-client.c:592
obj_contact::phone
char * phone
Phone number.
Definition: whois-client.h:176
indexlist
static const char * indexlist
List of attributes which can be used in search, this is displayed with -q indexes.
Definition: mod_whoisd.c:159
translate_status
static int translate_status(service_Whois service, general_object *objects, char *errmsg)
Translate status ids by domain objects to appropriate strings.
Definition: whois-client.c:880
MIN_WHOIS_REQUEST_LENGTH
#define MIN_WHOIS_REQUEST_LENGTH
Minimal length of input line.
Definition: mod_whoisd.c:93
obj_domain::registrar
char * registrar
Handle of registrar.
Definition: whois-client.h:119
print_keyset_object
static void print_keyset_object(apr_bucket_brigade *bb, obj_keyset *k)
Function prints keyset information to bucket brigade.
Definition: mod_whoisd.c:477
DEFAULT_DISCLAIMER
#define DEFAULT_DISCLAIMER
This default disclaimer should never be used in production release.
Definition: mod_whoisd.c:81
copy_keyset
static void copy_keyset(general_object *obj, ccReg_KeySetDetail *c_keyset)
Copy corba representation of keyset object to our representation.
Definition: whois-client.c:494
get_keyset_by_handle
static int get_keyset_by_handle(service_Whois service, const char *handle, int rec, general_object *objects, int *index_free, char *errmsg)
Search keyset by handle and dependent objects if recursion is switched on.
Definition: whois-client.c:684
whoisd_server_conf::object
char * object
Name of whois object.
Definition: mod_whoisd.c:105
TIME_BUFFER_LENGTH
#define TIME_BUFFER_LENGTH
Length of buffer used to hold time of response generation (must be enough even for RFC822 date).
Definition: whois-client.h:54
keyset_dsrecord::alg
int alg
Algorithm type.
Definition: whois-client.h:142
set_whois_protocol
static const char * set_whois_protocol(cmd_parms *cmd, void *dummy, int flag)
Routine disables or enables the operation of mod_whois.
Definition: mod_whoisd.c:1490
whois_release_data
void whois_release_data(general_object *objects)
Release data of any of the objects.
Definition: whois-client.c:1434
templatelist
static const char * templatelist
List of templates for all five object types.
Definition: mod_whoisd.c:182
obj_domain::registrant
char * registrant
Registrant.
Definition: whois-client.h:114
CORBA_SERVICE_FAILED
#define CORBA_SERVICE_FAILED
Could not obtain object's reference.
Definition: whois-client.h:43
whoisd_module
module AP_MODULE_DECLARE_DATA whoisd_module
Whois module declaration.
Definition: mod_whoisd.c:96
ID_STATUS_OBJ_LINKED
#define ID_STATUS_OBJ_LINKED
ID of object status 'Linked'.
Definition: whois-client.c:44
service_Whois
void * service_Whois
reference to the whois corba service
Definition: whois-client.h:65
obj_keyset::changed
char * changed
Last update of keyset.
Definition: whois-client.h:167
obj_registrar::registrar
char * registrar
Handle of registrar.
Definition: whois-client.h:189
obj_nsset::nserver
char ** nserver
Nameservers in nsset.
Definition: whois-client.h:131
keyset_dnskey::flags
int flags
key properties.
Definition: whois-client.h:150
obj_domain::registered
char * registered
Date of domain registration.
Definition: whois-client.h:121
keyset_dsrecord::digest_type
int digest_type
Digest type (must be SHA-1)
Definition: whois-client.h:143
obj_keyset
Structure holding keyset data.
Definition: whois-client.h:157
whois_postconfig_hook
static int whois_postconfig_hook(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
Postconfig hook is a good occasion to check consistency of mod_whoisd configuration and to initialize...
Definition: mod_whoisd.c:1447
IS_NOT_COMM_FAILURE_EXCEPTION
#define IS_NOT_COMM_FAILURE_EXCEPTION(_ev)
True if CORBA exception is COMM_FAILURE, which is used in retry loop.
Definition: whois-client.c:57
obj_contact::disclose
int disclose
Whether this contact is published: 1 for true if this flag is set, only contact and registrar field a...
Definition: whois-client.h:182
create_whoisd_config
static void * create_whoisd_config(apr_pool_t *p, server_rec *s)
Create server configuration for whoisd module.
Definition: mod_whoisd.c:1677
obj_contact::fax_no
char * fax_no
Fax number.
Definition: whois-client.h:177
MAXQPARLEN
#define MAXQPARLEN
Maximal length of -q parameter.
Definition: mod_whoisd.c:92
obj_keyset::keyset
char * keyset
Handle of keyset.
Definition: whois-client.h:158
copy_nsset
static void copy_nsset(general_object *obj, ccReg_NSSetDetail *c_nsset)
Copy corba representation of nsset object to our representation.
Definition: whois-client.c:441
get_contact_by_handle
static int get_contact_by_handle(service_Whois service, const char *handle, general_object *objects, int *index_free, char *errmsg)
Search contact by handle.
Definition: whois-client.c:321
obj_nsset
Structure holding nsset data.
Definition: whois-client.h:129
general_object
Structure able to hold any of the five types of whois objects.
Definition: whois-client.h:197
obj_nsset::tech_c
char ** tech_c
Handles of techical contacts.
Definition: whois-client.h:133
whoisd_server_conf::whoisd_enabled
int whoisd_enabled
Enabled/disabled flag.
Definition: mod_whoisd.c:102
keyset_dnskey::alg
int alg
algorithm type
Definition: whois-client.h:152
print_registrar_object
static void print_registrar_object(apr_bucket_brigade *bb, obj_registrar *r)
Function prints registrar information to bucket brigade.
Definition: mod_whoisd.c:569
obj_keyset::created
char * created
Date of keyset creation.
Definition: whois-client.h:166
print_nsset_object
static void print_nsset_object(apr_bucket_brigade *bb, obj_nsset *n)
Function prints nsset information to bucket brigade.
Definition: mod_whoisd.c:407
NULL_STRDUP
#define NULL_STRDUP(src)
Call strdup on string only if it is not empty, otherwise return NULL.
Definition: whois-client.c:64
obj_domain::nsset
char * nsset
Nsset handle.
Definition: whois-client.h:117
copy_domain
static void copy_domain(general_object *obj, ccReg_DomainDetail *c_domain)
Copy corba representation of domain object to our representation.
Definition: whois-client.c:938
raised_exception
#define raised_exception(ev)
A shortcut for testing of CORBA exception appearence.
Definition: whois-client.c:51
ap_log_cerror
#define ap_log_cerror(mark, level, status, c,...)
This is wrapper function for compatibility reason.
Definition: mod_whoisd.c:114
obj_keyset::tech_c
char ** tech_c
Handles of technical contacts.
Definition: whois-client.h:160
obj_domain::changed
char * changed
Last update of domain.
Definition: whois-client.h:122
whoisd_server_conf::disclaimer
char * disclaimer
Disclaimer as a string.
Definition: mod_whoisd.c:104
general_object::obj
union general_object::@0 obj
Union that can represent any of the objects.
obj_contact::e_mail
char * e_mail
Email.
Definition: whois-client.h:178
keyset_dsrecord
Delegation signer record (part of keyset object)
Definition: whois-client.h:140
whois-client.h
obj_keyset::keys
keyset_dnskey * keys
DNS Keys.
Definition: whois-client.h:163
register_hooks
static void register_hooks(apr_pool_t *p)
Function registering hooks of whoisd module.
Definition: mod_whoisd.c:1690
print_intro
static void print_intro(apr_bucket_brigade *bb, conn_rec *c, const char *disclaimer, const char *timestamp)
Print whois disclaimer into the bucket brigade.
Definition: mod_whoisd.c:237
obj_domain::expire
char * expire
Expiration date of domain.
Definition: whois-client.h:123
obj_domain::keyset
char * keyset
KeySet handle.
Definition: whois-client.h:118
get_nsset_by_handle
static int get_nsset_by_handle(service_Whois service, const char *handle, int rec, general_object *objects, int *index_free, char *errmsg)
Search nsset by handle and dependent objects if recursion is switched on.
Definition: whois-client.c:624
wrap_str
static char * wrap_str(const char *str)
Function wraps strings passed from XML parser into strings accepted by CORBA.
Definition: mod_whoisd.c:982
whois_request
Whois request structure.
Definition: whois-client.h:104
CORBA_OK_LIMIT
#define CORBA_OK_LIMIT
No error, but limit on # of objects was reached.
Definition: whois-client.h:42
get_keyset_by_attr
static int get_keyset_by_attr(service_Whois service, const char *key, ccReg_KeySetInvKeyType attr, int rec, general_object *objects, int *index_free, char *errmsg)
Search keyset by its attribute and dependent objects if recursion is switched on.
Definition: whois-client.c:817
whoisd_server_conf
Configuration structure of whoisd module.
Definition: mod_whoisd.c:101
process_whois_connection
static int process_whois_connection(conn_rec *c)
Connection handler of mod_whoisd module.
Definition: mod_whoisd.c:1131
whoisd_server_conf::logger_object
char * logger_object
Name of logger object.
Definition: mod_whoisd.c:106
keyset_dnskey
DNSKey record (part of keyset object)
Definition: whois-client.h:149
print_contact_object
static void print_contact_object(apr_bucket_brigade *bb, obj_contact *c)
Function prints contact information to bucket brigade.
Definition: mod_whoisd.c:530
obj_registrar::address
char ** address
Address information.
Definition: whois-client.h:193
obj_domain::status
char ** status
Status array for domain.
Definition: whois-client.h:120
obj_contact
Structure holding contact data.
Definition: whois-client.h:171
getobjtype
static int getobjtype(int *bittype, const char *strtype)
Function converts object type from string form to bit form.
Definition: mod_whoisd.c:945
whois_close_log_message
int whois_close_log_message(service_Logger service, const char *content, ccReg_RequestProperties *properties, ccReg_TID log_entry_id, CORBA_long result_code, char *errmsg)
Update and close existing event using logging daemon.
Definition: whois-client.c:1262
CORBA_INTERNAL_ERROR
#define CORBA_INTERNAL_ERROR
Internal error == malloc failed.
Definition: whois-client.h:44
keyset_dsrecord::max_sig_life
int max_sig_life
Signature expiration period.
Definition: whois-client.h:145
whois_action_type
whois_action_type
For now, only one action type is performed by whois.
Definition: whois-client.h:97
get_domain_by_handle
static int get_domain_by_handle(service_Whois service, const char *handle, int rec, general_object *objects, int *index_free, char *errmsg)
Search domain by fqdn and dependent objects if recursion is switched on.
Definition: whois-client.c:1060
obj_domain::temp_c
char ** temp_c
Temporary contacts.
Definition: whois-client.h:116
obj_contact::changed
char * changed
Last update of contact.
Definition: whois-client.h:181
whois_log_new_message
int whois_log_new_message(service_Logger service, const char *sourceIP, const char *content, ccReg_RequestProperties *properties, ccReg_TID *log_entry_id, char *errmsg)
Log a message using logging daemon.
Definition: whois-client.c:1189
obj_nsset::nserver_addrs
char ** nserver_addrs
IP Addresses for each nameserver.
Definition: whois-client.h:132
usagestr
static const char * usagestr
Error message in case of incorrect usage.
Definition: mod_whoisd.c:124
obj_contact::name
char * name
Name of contact.
Definition: whois-client.h:174
keyset_dsrecord::key_tag
int key_tag
Key tag for DNSKEY RR (RFC 4043 for details)
Definition: whois-client.h:141
whois_corba_call
int whois_corba_call(service_Whois service, const whois_request *wr, general_object *objects, char *timebuf, char *errmsg)
The core function of whois module performs actual query.
Definition: whois-client.c:1333
obj_registrar::url
char * url
URL of registrar's web pages.
Definition: whois-client.h:191
obj_nsset::nsset
char * nsset
Handle of nsset.
Definition: whois-client.h:130
whoisd_cmds
static const command_rec whoisd_cmds[]
Structure defining configuration options for whoisd module.
Definition: mod_whoisd.c:1656
get_nsset_by_attr
static int get_nsset_by_attr(service_Whois service, const char *key, ccReg_NSSetInvKeyType attr, int rec, general_object *objects, int *index_free, char *errmsg)
Search nsset by its attribute and dependent objects if recursion is switched on.
Definition: whois-client.c:749
obj_domain::domain
char * domain
Domain name.
Definition: whois-client.h:113
MAXARGS
#define MAXARGS
Maximal number of whois arguments.
Definition: mod_whoisd.c:89
read_request
static char * read_request(conn_rec *c, int *http_status)
This will read whois request (one line of text).
Definition: mod_whoisd.c:851
IS_OBJECT_NOT_FOUND
#define IS_OBJECT_NOT_FOUND(_ev)
True if CORBA exception is ObjectNotFound.
Definition: whois-client.c:60
get_domain_by_attr
static int get_domain_by_attr(service_Whois service, const char *key, ccReg_DomainInvKeyType attr, int rec, general_object *objects, int *index_free, char *errmsg)
Search domain by its attribute and dependent objects if recursion is switched on.
Definition: whois-client.c:1125
whois_request::norecursion
int norecursion
if true, recursion is switched off
Definition: whois-client.h:106
obj_contact::registrar
char * registrar
Handle of registrar.
Definition: whois-client.h:179
obj_contact::created
char * created
Date of contact creation.
Definition: whois-client.h:180
MAX_ERROR_MSG_LEN
#define MAX_ERROR_MSG_LEN
Length of buffer used to hold error message from corba backend.
Definition: whois-client.h:56
set_logger_object
static const char * set_logger_object(cmd_parms *cmd, void *dummy, const char *name)
Routine sets name under which logger object is registered by nameservice.
Definition: mod_whoisd.c:1592
LC_UNIX_WHOIS
const int LC_UNIX_WHOIS
code of the servie according to the database table ‘service’
Definition: whois-client.c:73
general_object::type
int type
Object type number.
Definition: whois-client.h:198
whoisd_server_conf::disclaimer_filename
const char * disclaimer_filename
File with disclaimer.
Definition: mod_whoisd.c:103
whois_log_new_message
int whois_log_new_message(service_Logger service, const char *sourceIP, const char *content, ccReg_RequestProperties *properties, ccReg_TID *log_entry_id, char *errmsg)
Log a new event using logging daemon.
Definition: whois-client.c:1189
obj_domain
Structure holding domain data.
Definition: whois-client.h:112
check_duplicates
int check_duplicates(int type, char *handle, general_object *objects, int index_free)
Check for duplicates in array of objects.
Definition: whois-client.c:182
get_corba_service
static void * get_corba_service(conn_rec *c, char *name)
Definition: mod_whoisd.c:594
whois_corba_call
int whois_corba_call(service_Whois service, const whois_request *wr, general_object *objects, char *timebuf, char *errmsg)
Call the right function for the specific object type / search axis / handle combination.
Definition: whois-client.c:1333
obj_domain::admin_c
char ** admin_c
Administrators.
Definition: whois-client.h:115
RETR_SLEEP
#define RETR_SLEEP
Sleep interval in microseconds between retries.
Definition: whois-client.c:55
obj_nsset::registrar
char * registrar
Handle of registrar.
Definition: whois-client.h:134
service_Logger
void * service_Logger
reference to the logger corba service
Definition: whois-client.h:68
recurse_nsset
static int recurse_nsset(service_Whois service, int rec, obj_nsset *n, general_object *objects, int *index_free, char *errmsg)
The function does recursion on nsset.
Definition: whois-client.c:560
print_domain_object
static void print_domain_object(apr_bucket_brigade *bb, obj_domain *d)
Function prints domain information to bucket brigade.
Definition: mod_whoisd.c:371
set_whois_object
static const char * set_whois_object(cmd_parms *cmd, void *dummy, const char *name)
Routine sets name under which is registered whois object by nameservice.
Definition: mod_whoisd.c:1628
obj_contact::address
char ** address
Address information.
Definition: whois-client.h:175
CORBA_OK
#define CORBA_OK
No error occured.
Definition: whois-client.h:40
obj_domain::validated_to
char * validated_to
Not NULL if it is an ENUM domain.
Definition: whois-client.h:124
send_error
static void send_error(conn_rec *c, const char *disclaimer, int nerr)
Routine trigerred upon error.
Definition: mod_whoisd.c:315
keyset_dsrecord::digest
char * digest
Digests in Delegation Signer records.
Definition: whois-client.h:144
whois_request::value
const char * value
value to search for
Definition: whois-client.h:108
set_disclaimer_file
static const char * set_disclaimer_file(cmd_parms *cmd, void *dummy, const char *a1)
Routine accepts name of file with disclaimer, it also reads the file and stores disclaimer in server ...
Definition: mod_whoisd.c:1513
IP_ADDR_LEN
const int IP_ADDR_LEN
maximum length of a string containing IP address
Definition: whois-client.c:68
obj_registrar::org
char * org
Organization.
Definition: whois-client.h:190
MAX_OBJECT_COUNT
#define MAX_OBJECT_COUNT
Length of array for result objects and also a limit for maximal number of objects returned by whois q...
Definition: whois-client.h:61
keyset_dnskey::public_key
char * public_key
base64 encoded public key
Definition: whois-client.h:153
check_duplicates
int check_duplicates(int type, char *handle, general_object *objects, int index_free)
Check for duplicates in array of objects.
Definition: whois-client.c:182
search_axis
search_axis
Axes used in reverse searches.
Definition: whois-client.h:80
process_whois_query
static apr_status_t process_whois_query(conn_rec *c, whoisd_server_conf *sc, whois_request *wr, ccReg_TID log_entry_id)
Whois request processor.
Definition: mod_whoisd.c:655
obj_registrar::phone
char * phone
Phone number.
Definition: whois-client.h:192
MAXAXELEN
#define MAXAXELEN
Maximal length of search axe identifier.
Definition: mod_whoisd.c:91