fred-mod-whoisd-3.12.0
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 */
char * name
Name of contact.
Definition: whois-client.h:174
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
char * created
Date of nsset creation.
Definition: whois-client.h:135
keyset_dnskey * keys
DNS Keys.
Definition: whois-client.h:163
Structure holding nsset data.
Definition: whois-client.h:129
int type
Object type number.
Definition: whois-client.h:198
char * registrar
Handle of registrar.
Definition: whois-client.h:179
char * registrar
Handle of registrar.
Definition: whois-client.h:119
int norecursion
if true, recursion is switched off
Definition: whois-client.h:106
char ** nserver
Nameservers in nsset.
Definition: whois-client.h:131
Structure holding domain data.
Definition: whois-client.h:112
int digest_type
Digest type (must be SHA-1)
Definition: whois-client.h:143
int alg
Algorithm type.
Definition: whois-client.h:142
char * domain
Domain name.
Definition: whois-client.h:113
char * registered
Date of domain registration.
Definition: whois-client.h:121
Structure holding registrar data.
Definition: whois-client.h:188
char ** nserver_addrs
IP Addresses for each nameserver.
Definition: whois-client.h:132
Structure holding keyset data.
Definition: whois-client.h:157
search_axis
Axes used in reverse searches.
Definition: whois-client.h:80
char * expire
Expiration date of domain.
Definition: whois-client.h:123
char * phone
Phone number.
Definition: whois-client.h:176
char * registrant
Registrant.
Definition: whois-client.h:114
char * keyset
Handle of keyset.
Definition: whois-client.h:158
void * service_Whois
reference to the whois corba service
Definition: whois-client.h:65
char * registrar
Handle of registrar.
Definition: whois-client.h:134
char * changed
Last update of nsset.
Definition: whois-client.h:136
char * contact
Handle of contact.
Definition: whois-client.h:172
char * registrar
Handle of registrar.
Definition: whois-client.h:165
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
keyset_dsrecord * ds
Delegation signer records.
Definition: whois-client.h:162
char ** tech_c
Handles of technical contacts.
Definition: whois-client.h:160
int * status_ids
Untranslated status numbers from corba.
Definition: whois-client.h:125
const char * value
value to search for
Definition: whois-client.h:108
DNSKey record (part of keyset object)
Definition: whois-client.h:149
Delegation signer record (part of keyset object)
Definition: whois-client.h:140
char * changed
Last update of domain.
Definition: whois-client.h:122
char * created
Date of contact creation.
Definition: whois-client.h:180
char ** tech_c
Handles of techical contacts.
Definition: whois-client.h:133
void whois_release_data(general_object *object_list)
Release data.
Definition: whois-client.c:1434
Whois request structure.
Definition: whois-client.h:104
char * registrar
Handle of registrar.
Definition: whois-client.h:189
search_axis axe
which object type is used as search criteria
Definition: whois-client.h:105
char * org
Organization name.
Definition: whois-client.h:173
char * created
Date of keyset creation.
Definition: whois-client.h:166
char * fax_no
Fax number.
Definition: whois-client.h:177
int alg
algorithm type
Definition: whois-client.h:152
int type
type of the objects we&#39;re looking for
Definition: whois-client.h:107
char * org
Organization.
Definition: whois-client.h:190
char ** address
Address information.
Definition: whois-client.h:193
char * keyset
KeySet handle.
Definition: whois-client.h:118
char * nsset
Handle of nsset.
Definition: whois-client.h:130
char * url
URL of registrar&#39;s web pages.
Definition: whois-client.h:191
int key_tag
Key tag for DNSKEY RR (RFC 4043 for details)
Definition: whois-client.h:141
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
char ** temp_c
Temporary contacts.
Definition: whois-client.h:116
int flags
key properties.
Definition: whois-client.h:150
char * validated_to
Not NULL if it is an ENUM domain.
Definition: whois-client.h:124
char ** address
Address information.
Definition: whois-client.h:175
char * e_mail
Email.
Definition: whois-client.h:178
int max_sig_life
Signature expiration period.
Definition: whois-client.h:145
char * public_key
base64 encoded public key
Definition: whois-client.h:153
char ** status
Status array for domain.
Definition: whois-client.h:120
char * changed
Last update of keyset.
Definition: whois-client.h:167
whois_action_type
For now, only one action type is performed by whois.
Definition: whois-client.h:97
void * service_Logger
reference to the logger corba service
Definition: whois-client.h:68
Structure holding contact data.
Definition: whois-client.h:171
Structure able to hold any of the five types of whois objects.
Definition: whois-client.h:197
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
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
int protocol
= 3
Definition: whois-client.h:151
char * digest
Digests in Delegation Signer records.
Definition: whois-client.h:144
char * nsset
Nsset handle.
Definition: whois-client.h:117
char * phone
Phone number.
Definition: whois-client.h:192
char ** admin_c
Administrators.
Definition: whois-client.h:115
char * changed
Last update of contact.
Definition: whois-client.h:181