1 /* spmfilter - mail filtering framework 2 * Copyright (C) 2009-2012 Axel Steiner and SpaceNet AG 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 3 of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 /*! 19 * @file smf_settings.h 20 * @brief Defines SMFSettings_T and config file parsing functions 21 * @details All config settings, defined in spmfilter.conf, are stored 22 * in a SMFSettings_T object and can be accessed via the 23 * corresponding function. 24 */ 25 26 #ifndef _SMF_SETTINGS_H 27 #define _SMF_SETTINGS_H 28 29 #include "spmfilter_config.h" 30 #include "smf_dict.h" 31 #include "smf_list.h" 32 33 /*! 34 * @enum SMFTlsOption_T 35 * @brief Possible types of TLS configuration 36 */ 37 typedef enum { 38 SMF_TLS_DISABLED, /**< TLS is disabled */ 39 SMF_TLS_ENABLED, /**< TLS is enabled */ 40 SMF_TLS_REQUIRED /**< TLS is enabled and required */ 41 } SMFTlsOption_T; 42 43 /*! 44 * @enum SMFConnectionType_T 45 * @brief Possible backend connection types 46 */ 47 typedef enum { 48 SMF_SQL_CONN, /**< SQL connection */ 49 SMF_LDAP_CONN /**< LDAP connection */ 50 } SMFConnectionType_T; 51 52 /*! 53 * @struct SMFSettings_T smf_settings.h 54 * @brief Holds spmfilter runtime configuration 55 */ 56 typedef struct { 57 int debug; /**< debug flag */ 58 char *config_file; /**< path to config file */ 59 char *queue_dir; /**< path to spool directory */ 60 char *engine; /**< configured engine */ 61 SMFList_T *modules; /**< all configured modules */ 62 int module_fail; /**< module fail behavior */ 63 char *nexthop; /**< next smtp hop */ 64 int nexthop_fail_code; /**< smtp code, when delivery to nexthop fails */ 65 char *nexthop_fail_msg; /**< smtp return message, when delivery to nexthop fails */ 66 char *backend; /**< configured lookup backend */ 67 char *backend_connection; /**< 68 * if multiple backend hosts are defined, 69 * it's possible to balance connections 70 * between all, or do failover connections. 71 * possible keys are: 72 * - balance 73 * load-balance connections among all hosts listed 74 * - failover 75 * failover connections in the order listed 76 */ 77 int add_header; /**< add spmfilter processing header */ 78 unsigned long max_size; /**< maximal message size in bytes */ 79 SMFTlsOption_T tls; /**< enable/disable TLS */ 80 char *lib_dir; /**< user defined directory path for shared libraries */ 81 char *pid_file; /**< path to pid file */ 82 char *bind_ip; /**< ip to bind daemon */ 83 int bind_port; /**< port to bind daemon (default 10025) */ 84 int listen_backlog; /**< listen queue backlog (default 511) */ 85 int foreground; /**< run daemon in foreground */ 86 char *user; /**< run daemon as user */ 87 char *group; /**< run daemon as group */ 88 int max_childs; /**< maximum number of allowed processes (default 10) */ 89 int spare_childs; /**< number of spare childs (default 2) */ 90 int syslog_facility; /**< syslog facility **/ 91 92 SMFDict_T *smtp_codes; /**< user defined smtp return codes */ 93 int smtpd_timeout; /**< time limit for receiving a remote SMTP client request (default 300s) */ 94 95 char *sql_driver; /**< sql driver name */ 96 char *sql_name; /**< sql database name */ 97 SMFList_T *sql_host; /**< list with sql database hosts */ 98 int sql_port; /**< sql database port */ 99 char *sql_user; /**< sql database username */ 100 char *sql_pass; /**< sql database password */ 101 char *sql_user_query; /**< sql user query */ 102 char *sql_encoding; /**< sql encoding */ 103 int sql_max_connections; /**< max. number of sql conncetions */ 104 105 char *ldap_uri; /**< ldap uri */ 106 SMFList_T *ldap_host; /**< list with ldap hosts */ 107 int ldap_port; /**< ldap port */ 108 char *ldap_binddn; /**< ldap bind dn */ 109 char *ldap_bindpw; /**< ldap bind password */ 110 char *ldap_base; /**< ldap search base */ 111 int ldap_referrals; /**< ldap referrals flag */ 112 char *ldap_scope; /**< ldap search scope */ 113 char *ldap_user_query; /**< ldap user query */ 114 SMFList_T *ldap_result_attributes; /**< list with ldap result attributes */ 115 116 SMFConnectionType_T lookup_connection_type; /**< lookup connection type */ 117 int lookup_persistent; /**< is the lookup connection persistent? */ 118 void *lookup_connection; /**< ldap or sql connection */ 119 120 SMFDict_T *groups; /**< custom setting groups */ 121 } SMFSettings_T; 122 123 124 /*! 125 * @fn int smf_settings_set_debug(SMFSettings_T *settings, int debug) 126 * @brief Set debug setting 127 * @param settings a SMFSettings_T object 128 * @param debug debug setting either 0 (false) or 1 (true) 129 * @returns 0 on success or -1 in case of error 130 */ 131 int smf_settings_set_debug(SMFSettings_T *settings, int debug); 132 133 /*! 134 * @fn int smf_settings_get_debug(SMFSettings_T *settings) 135 * @brief Get debug setting 136 * @param settings a SMFSettings_T object 137 * @returns debug setting 138 */ 139 int smf_settings_get_debug(SMFSettings_T *settings); 140 141 /*! 142 * @fn int smf_settings_set_config_file(SMFSettings_T *settings, char *cf) 143 * @brief Set path to config file 144 * @param settings a SMFSettings_T object 145 * @param cf config file 146 * @returns 0 on success or -1 in case of error 147 */ 148 int smf_settings_set_config_file(SMFSettings_T *settings, char *cf); 149 150 /*! 151 * @fn char *smf_settings_get_config_file(SMFSettings_T *settings) 152 * @brief Get config file path 153 * @param settings a SMFSettings_T object 154 * @returns config file path 155 */ 156 char *smf_settings_get_config_file(SMFSettings_T *settings); 157 158 /*! 159 * @fn int smf_settings_set_queue_dir(SMFSettings_T *settings, char *qd) 160 * @brief Set path to queue directory 161 * @param settings a SMFSettings_T object 162 * @param qd queue directory path 163 * @returns 0 on success or -1 in case of error 164 */ 165 int smf_settings_set_queue_dir(SMFSettings_T *settings, char *qd); 166 167 /*! 168 * @fn char *smf_settings_get_queue_dir(SMFSettings_T *settings) 169 * @brief Get queue directory path 170 * @param settings a SMFSettings_T object 171 * @returns queue directory 172 */ 173 char *smf_settings_get_queue_dir(SMFSettings_T *settings); 174 175 /*! 176 * @fn void smf_settings_set_engine(SMFSettings_T *settings, char *engine) 177 * @brief Set engine which should be used 178 * @param settings a SMFSettings_T object 179 * @param engine engine 180 */ 181 void smf_settings_set_engine(SMFSettings_T *settings, char *engine); 182 183 /*! 184 * @fn char *smf_settings_get_engine(SMFSettings_T *settings) 185 * @brief Get configured engine 186 * @param settings a SMFSettings_T object 187 * @returns engine 188 */ 189 char *smf_settings_get_engine(SMFSettings_T *settings); 190 191 /*! 192 * @fn void smf_settings_add_module(SMFSettings_T *settings, char *module) 193 * @brief Add available module to module list, which will be loaded at runtime. 194 * @param settings a SMFSettings_T object 195 * @param module module name 196 * @returns 0 on success or -1 in case of error 197 */ 198 int smf_settings_add_module(SMFSettings_T *settings, char *module); 199 200 /*! 201 * @fn SMFList_T *smf_settings_get_modules(SMFSettings_T *settings) 202 * @brief Get available modules 203 * @param settings a SMFSettings_T object 204 * @returns modules list 205 */ 206 SMFList_T *smf_settings_get_modules(SMFSettings_T *settings); 207 208 /*! 209 * @fn void smf_settings_set_module_fail(SMFSettings_T *settings, int i) 210 * @brief Set module_fail setting 211 * 1 = proceed and ignore 212 * 2 = cancel further processing and return permanet error 213 * 3 = cancel further processing and return temporary error (default) 214 * @param settings a SMFSettings_T object 215 * @param i module_fail value 216 */ 217 void smf_settings_set_module_fail(SMFSettings_T *settings, int i); 218 219 /*! 220 * @fn int smf_settings_get_module_fail(SMFSettings_T *settings); 221 * @brief Get module_fail setting 222 * @param settings a SMFSettings_T object 223 * @returns module_fail setting 224 */ 225 int smf_settings_get_module_fail(SMFSettings_T *settings); 226 227 /*! 228 * @fn void smf_settings_set_nexthop(SMFSettings_T *settings, char *nexthop) 229 * @brief Set nexthop setting. 230 * This parameter specifies the final destination, 231 * after a mail is processed by spmfilter. 232 * @param settings a SMFSettings_T object 233 * @param nexthop nexthtop string 234 */ 235 void smf_settings_set_nexthop(SMFSettings_T *settings, char *nexthop); 236 237 /*! 238 * @fn char *smf_settings_get_nexthop(SMFSettings_T *settings) 239 * @brief Get configured nexthop setting 240 * @param settings a SMFSettings_T object 241 * @returns nexthop 242 */ 243 char *smf_settings_get_nexthop(SMFSettings_T *settings); 244 245 /*! 246 * @fn void smf_settings_set_nexthop_fail_code(SMFSettings_T *settings, int i) 247 * @brief Set nexthop_fail_code setting 248 * If the delivery to the final destination fails 249 * for any reason, this code is used as response to 250 * the sending MTA (default 451). 251 * @param settings a SMFSettings_T object 252 * @param i nexthop_fail_code value 253 */ 254 void smf_settings_set_nexthop_fail_code(SMFSettings_T *settings, int i); 255 256 /*! 257 * @fn int smf_settings_get_nexthop_fail_code(SMFSettings_T *settings) 258 * @brief Get nexthop_fail_code setting 259 * @param settings a SMFSettings_T object 260 * @returns nexthop_fail_code 261 */ 262 int smf_settings_get_nexthop_fail_code(SMFSettings_T *settings); 263 264 /*! 265 * @fn void smf_settings_set_nexthop_fail_msg(SMFSettings_T *settings, char *msg) 266 * @brief Set nexthop_fail_msg setting. 267 * If the delivery to the final destination fails for any 268 * reason, this message is used as reponse for the sending 269 * MTA. (default "Requested action aborted: local error in processing"). 270 * @param settings a SMFSettings_T object 271 * @param msg nexthop fail message 272 */ 273 void smf_settings_set_nexthop_fail_msg(SMFSettings_T *settings, char *msg); 274 275 /*! 276 * @fn char *smf_settings_get_nexthop_fail_msg(SMFSettings_T *settings) 277 * @brief Get nexthop_fail_msg setting 278 * @param settings a SMFSettings_T object 279 * @returns nexthop fail message 280 */ 281 char *smf_settings_get_nexthop_fail_msg(SMFSettings_T *settings); 282 283 /*! 284 * @fn void smf_settings_set_backend(SMFSettings_T *settings, char *backend) 285 * @brief Set lookup backend. 286 * @param settings a SMFSettings_T object 287 * @param backend backend setting list 288 */ 289 void smf_settings_set_backend(SMFSettings_T *settings, char *backend); 290 291 /*! 292 * @fn char *smf_settings_get_backend(SMFSettings_T *settings) 293 * @brief Get backend setting 294 * @param settings a SMFSettings_T object 295 * @returns backend setting 296 */ 297 char *smf_settings_get_backend(SMFSettings_T *settings); 298 299 /*! 300 * @fn void smf_settings_set_backend_connection(SMFSettings_T *settings, char *conn) 301 * @brief Set backend_connection setting. 302 * If there are multiple server configured in the specified backend, 303 * it's possible to define a failover or load-balancing behaviour. 304 * Possible values are: 305 * balance = when you configure the backend profile for load 306 * balancing, spmfilter distributes connections across 307 * the list of hosts. If the actual host is not reachable, 308 * spmfilter switches back to failover configuration. 309 * failover = when you configure the backend profile for 310 * failover, spmfilter fails over to the next host in 311 * the list if it cannot connect to the first host. 312 * @param settings a SMFSettings_T object 313 * @param conn backend connection 314 */ 315 void smf_settings_set_backend_connection(SMFSettings_T *settings, char *conn); 316 317 /*! 318 * @fn char *smf_settings_get_backend_connection(SMFSettings_T *settings) 319 * @brief Get backend connection setting 320 * @param settings a SMFSettings_T object 321 * @returns backend connection 322 */ 323 char *smf_settings_get_backend_connection(SMFSettings_T *settings); 324 325 /*! 326 * @fn void smf_settings_set_add_header(SMFSettings_T *settings, int i) 327 * @brief Define if spmfilter should add it's own header 328 * @param settings a SMFSettings_T object 329 * @param i add_header value, either 1 (true) or 0 (false) 330 */ 331 void smf_settings_set_add_header(SMFSettings_T *settings, int i); 332 333 /*! 334 * @fn int smf_settings_get_add_header(SMFSettings_T *settings) 335 * @brief Get add_header setting 336 * @param settings a SMFSettings_T object 337 * @returns add_header value 338 */ 339 int smf_settings_get_add_header(SMFSettings_T *settings); 340 341 /*! 342 * @fn void smf_settings_set_max_size(SMFSettings_T *settings, unsigned long size) 343 * @brief Set max. allowed message size in byte 344 * @param settings a SMFSettings_T object 345 * @param size max_size setting 346 */ 347 void smf_settings_set_max_size(SMFSettings_T *settings, unsigned long size); 348 349 /*! 350 * @fn unsigned long smf_settings_get_max_size(SMFSettings_T *settings) 351 * @brief Get max_size setting in bytes 352 * @param settings a SMFSettings_T object 353 * @returns max_size value 354 */ 355 unsigned long smf_settings_get_max_size(SMFSettings_T *settings); 356 357 /*! 358 * @fn void smf_settings_set_tls(SMFSettings_T *settings, SMFTlsOption_T t) 359 * @brief Set tls setting 360 * @param settings a SMFSettings_T object 361 * @param t a SMFTlsOption_T value 362 */ 363 void smf_settings_set_tls(SMFSettings_T *settings, SMFTlsOption_T t); 364 365 /*! 366 * @fn SMFTlsOption_T smf_settings_get_tls(SMFSettings_T *settings) 367 * @brief Get tls setting 368 * @param settings a SMFSettings_T object 369 * @returns a SMFTlsOption_T value 370 */ 371 SMFTlsOption_T smf_settings_get_tls(SMFSettings_T *settings); 372 373 /*! 374 * @fn void smf_settings_set_lib_dir(SMFSettings_T *settings, char *lib_dir) 375 * @brief Set path to shared libraries, if needed. 376 * @param settings a SMFSettings_T object 377 * @param lib_dir path to shared libraries folder 378 */ 379 void smf_settings_set_lib_dir(SMFSettings_T *settings, char *lib_dir); 380 381 /*! 382 * @fn char *smf_settings_get_lib_dir(SMFSettings_T *settings) 383 * @brief Get shared library folder 384 * @param settings a SMFSettings_T object 385 * @returns shared library folder 386 */ 387 char *smf_settings_get_lib_dir(SMFSettings_T *settings); 388 389 /*! 390 * @fn void smf_settings_set_pid_file(SMFSettings_T *settings, char *pid_file) 391 * @brief Set pid file 392 * @param settings a SMFSettings_T object 393 * @param pid_file char pointer with pid file path 394 */ 395 void smf_settings_set_pid_file(SMFSettings_T *settings, char *pid_file); 396 397 /*! 398 * @fn char *smf_settings_get_pid_file(SMFSettings_T *settings) 399 * @brief Get current pid file 400 * @param settings a SMFSettings_T object 401 * @returns char pointer with pid file path 402 */ 403 char *smf_settings_get_pid_file(SMFSettings_T *settings); 404 405 /*! 406 * @fn void smf_settings_set_bind_ip(SMFSettings_T *settings, char *ip) 407 * @brief Set bind ip 408 * @param settings a SMFSettings_T object 409 * @param ip char pointer with ip 410 */ 411 void smf_settings_set_bind_ip(SMFSettings_T *settings, char *ip); 412 413 /*! 414 * @fn char *smf_settings_get_bind_ip(SMFSettings_T *settings) 415 * @brief Get current bind ip 416 * @param settings a SMFSettings_T object 417 * @returns char pointer with ip 418 */ 419 char *smf_settings_get_bind_ip(SMFSettings_T *settings); 420 421 /*! 422 * @fn void smf_settings_set_bind_port(SMFSettings_T *settings, int port) 423 * @brief Set bind port 424 * @param settings a SMFSettings_T object 425 * @param port port number 426 */ 427 void smf_settings_set_bind_port(SMFSettings_T *settings, int port); 428 429 /*! 430 * @fn int smf_settings_get_bind_port(SMFSettings_T *settings) 431 * @brief Get current bind port 432 * @param settings a SMFSettings_T object 433 * @returns port number 434 */ 435 int smf_settings_get_bind_port(SMFSettings_T *settings); 436 437 /*! 438 * @fn void smf_settings_set_listen_backlog(SMFSettings_T *settings, int backlog) 439 * @brief Set listen backlog 440 * @param settings a SMFSettings_T object 441 * @param backlog max. number of listen backlog queue 442 */ 443 void smf_settings_set_listen_backlog(SMFSettings_T *settings, int backlog); 444 445 /*! 446 * @fn int smf_settings_get_listen_backlog(SMFSettings_T *settings) 447 * @brief Get listen backlog number 448 * @param settings a SMFSettings_T object 449 * @returns listen backlog number 450 */ 451 int smf_settings_get_listen_backlog(SMFSettings_T *settings); 452 453 /*! 454 * @fn void smf_settings_set_foreground(SMFSettings_T *settings, int foreground) 455 * @brief Set foreground config option 456 * @param settings a SMFSettings_T object 457 * @param foreground foreground config options (1 = true, 0 = false) 458 */ 459 void smf_settings_set_foreground(SMFSettings_T *settings, int foreground); 460 461 /*! 462 * @fn int smf_settings_get_foreground(SMFSettings_T *settings) 463 * @brief Get foreground setting 464 * @param settings a SMFSettings_T object 465 * @returns foreground setting 466 */ 467 int smf_settings_get_foreground(SMFSettings_T *settings); 468 469 /*! 470 * @fn void smf_settings_set_user(SMFSettings_T *settings, char *user) 471 * @brief Set effective user 472 * @param settings a SMFSettings_T object 473 * @param user effective username 474 */ 475 void smf_settings_set_user(SMFSettings_T *settings, char *user); 476 477 /*! 478 * @fn char *smf_settings_get_user(SMFSettings_T *settings) 479 * @brief Get effective user 480 * @param settings a SMFSettings_T object 481 * @returns char pointer with username 482 */ 483 char *smf_settings_get_user(SMFSettings_T *settings); 484 485 /*! 486 * @fn void smf_settings_set_group(SMFSettings_T *settings, char *group) 487 * @brief Set effective group 488 * @param settings a SMFSettings_T object 489 * @param group effective groupname 490 */ 491 void smf_settings_set_group(SMFSettings_T *settings, char *group); 492 493 /*! 494 * @fn char *smf_settings_get_group(SMFSettings_T *settings) 495 * @brief Get effective group 496 * @param settings a SMFSettings_T object 497 * @returns char pointer with groupname 498 */ 499 char *smf_settings_get_group(SMFSettings_T *settings); 500 501 /*! 502 * @fn void smf_settings_set_max_childs(SMFSettings_T *settings, int max_childs) 503 * @brief Set the number of maximal allowed processes 504 * @param settings a SMFSettings_T object 505 * @param max_childs number of processes 506 */ 507 void smf_settings_set_max_childs(SMFSettings_T *settings, int max_childs); 508 509 /*! 510 * @fn int smf_settings_get_max_childs(SMFSettings_T *settings) 511 * @brief Get number of maxmimal allowed processes 512 * @param settings a SMFSettings_T object 513 * @returns number of processes 514 */ 515 int smf_settings_get_max_childs(SMFSettings_T *settings); 516 517 /*! 518 * @fn void smf_settings_set_spare_childs(SMFSettings_T *settings, int spare_childs) 519 * @brief Set the number of spare child processes 520 * @param settings a SMFSettings_T object 521 * @param spare_childs number of spare processes 522 */ 523 void smf_settings_set_spare_childs(SMFSettings_T *settings, int spare_childs); 524 525 /*! 526 * @fn int smf_settings_get_spare_childs(SMFSettings_T *settings) 527 * @brief Get number of spare processes 528 * @param settings a SMFSettings_T object 529 * @returns number of spare processes 530 */ 531 int smf_settings_get_spare_childs(SMFSettings_T *settings); 532 533 /*! 534 * @fn void smf_settings_set_syslog_facility(SMFSettings_T *settings, char *facility) 535 * @brief Set syslog facility 536 * @param settings a SMFSettings_T object 537 * @param facility syslog facility 538 */ 539 void smf_settings_set_syslog_facility(SMFSettings_T *settings, char *facility); 540 541 /*! 542 * @fn int smf_settings_get_syslog_facility(SMFSettings_T *settings) 543 * @brief Get syslog facility 544 * @param settings a SMFSettings_T object 545 * @returns syslog facility 546 */ 547 int smf_settings_get_syslog_facility(SMFSettings_T *settings); 548 549 /*! 550 * @fn int smf_settings_set_smtp_code(SMFSettings_T *settings, int code, char *msg) 551 * @brief Add smtp return code to list 552 * @param settings a SMFSettings_T object 553 * @param code smtp code 554 * @param msg smtp return message 555 * @returns 0 on success or -1 in case of error 556 */ 557 int smf_settings_set_smtp_code(SMFSettings_T *settings, int code, char *msg); 558 559 /*! 560 * @fn char *smf_settings_get_smtp_code(SMFSettings_T *settings, int code) 561 * @brief Get smtp return code message of given code 562 * @param settings a SMFSettings_T object 563 * @param code to look for 564 * @returns smtp return message for given code 565 */ 566 char *smf_settings_get_smtp_code(SMFSettings_T *settings, int code); 567 568 /*! 569 * @fn void smf_settings_set_smtpd_timeout(SMFSettings_T *settings, int timeout) 570 * @brief Set time limit for receiving a remote SMTP client request 571 * @param settings a SMFSettings_T object 572 * @param timeout timeout limit in seconds 573 */ 574 void smf_settings_set_smtpd_timeout(SMFSettings_T *settings, int timeout); 575 576 /*! 577 * @fn int smf_settings_get_smtpd_timeout(SMFSettings_T *settings) 578 * @brief Get time limit for receiving a remote SMTP client request 579 * @param settings a SMFSettings_T object 580 * @returns timeout smtpd timeout in seconds 581 */ 582 int smf_settings_get_smtpd_timeout(SMFSettings_T *settings); 583 584 /*! 585 * @fn void smf_settings_set_sql_driver(SMFSettings_T *settings, char *driver) 586 * @brief Set SQL driver, which should be used. 587 * Possible values are: 588 * - mysql 589 * - postgresql 590 * - sqlite 591 * @param settings a SMFSettings_T object 592 * @param driver sql_driver value 593 */ 594 void smf_settings_set_sql_driver(SMFSettings_T *settings, char *driver); 595 596 /*! 597 * @fn char *smf_settings_get_sql_driver(SMFSettings_T *settings) 598 * @brief Get sql_driver setting 599 * @param settings a SMFSettings_T object 600 * @returns sql_driver value 601 */ 602 char *smf_settings_get_sql_driver(SMFSettings_T *settings); 603 604 /*! 605 * @fn void smf_settings_set_sql_name(SMFSettings_T *settings, char *name) 606 * @brief Set SQL database name 607 * @param settings a SMFSettings_T object 608 * @param name database name 609 */ 610 void smf_settings_set_sql_name(SMFSettings_T *settings, char *name); 611 612 /*! 613 * @fn char *smf_settings_get_sql_name(SMFSettings_T *settings) 614 * @brief Get SQL database name 615 * @param settings a SMFSettings_T object 616 * @returns sql_name value 617 */ 618 char *smf_settings_get_sql_name(SMFSettings_T *settings); 619 620 /*! 621 * @fn int smf_settings_add_sql_host(SMFSettings_T *settings, char *host) 622 * @brief Set SQL host(s) 623 * @param settings a SMFSettings_T object 624 * @param host sql_host list 625 * @returns 0 on success or -1 in case of error 626 */ 627 int smf_settings_add_sql_host(SMFSettings_T *settings, char *host); 628 629 /*! 630 * @fn SMFList_T *smf_settings_get_sql_hosts(SMFSettings_T *settings) 631 * @brief Get SQL host(s) 632 * @param settings a SMFSettings_T object 633 * @returns sql_host list 634 */ 635 SMFList_T *smf_settings_get_sql_hosts(SMFSettings_T *settings); 636 637 /*! 638 * @fn void smf_settings_set_sql_port(SMFSettings_T *settings, int port) 639 * @brief Set SQL port 640 * @param settings a SMFSettings_T object 641 * @param port sql port 642 */ 643 void smf_settings_set_sql_port(SMFSettings_T *settings, int port); 644 645 /*! 646 * @fn int smf_settings_get_sql_port(SMFSettings_T *settings) 647 * @brief Get SQL port 648 * @param settings a SMFSettings_T object 649 * @returns sql_port value 650 */ 651 int smf_settings_get_sql_port(SMFSettings_T *settings); 652 653 /*! 654 * @fn void smf_settings_set_sql_user(SMFSettings_T *settings, char *user) 655 * @brief Set SQL username 656 * @param settings a SMFSettings_T object 657 * @param user sql user value 658 */ 659 void smf_settings_set_sql_user(SMFSettings_T *settings, char *user); 660 661 /*! 662 * @fn char *smf_settings_get_sql_user(SMFSettings_T *settings) 663 * @brief Get SQL username 664 * @param settings a SMFSettings_T object 665 * @returns sql_user value 666 */ 667 char *smf_settings_get_sql_user(SMFSettings_T *settings); 668 669 /*! 670 * @fn void smf_settings_set_sql_pass(SMFSettings_T *settings, char *pass) 671 * @brief Set SQL password 672 * @param settings a SMFSettings_T object 673 * @param pass sql_pass value 674 */ 675 void smf_settings_set_sql_pass(SMFSettings_T *settings, char *pass); 676 677 /*! 678 * @fn char *smf_settings_get_sql_pass(SMFSettings_T *settings) 679 * @brief Get SQL password 680 * @param settings a SMFSettings_T object 681 * @returns sql_pass value 682 */ 683 char *smf_settings_get_sql_pass(SMFSettings_T *settings); 684 685 /*! 686 * @fn void smf_settings_set_sql_user_query(SMFSettings_T *settings, char *query) 687 * @brief Set sql_user_query setting 688 * @param settings a SMFSettings_T object 689 * @param query sql user query value 690 */ 691 void smf_settings_set_sql_user_query(SMFSettings_T *settings, char *query); 692 693 /*! 694 * @fn char *smf_settings_get_sql_user_query(SMFSettings_T *settings) 695 * @brief Get sql_user_query setting 696 * @param settings a SMFSettings_T object 697 * @returns sql user query value 698 */ 699 char *smf_settings_get_sql_user_query(SMFSettings_T *settings); 700 701 /*! 702 * @fn void smf_settings_set_sql_encoding(SMFSettings_T *settings, char *encoding) 703 * @brief Set SQL encoding 704 * @param settings a SMFSettings_T object 705 * @param encoding sql encoding 706 */ 707 void smf_settings_set_sql_encoding(SMFSettings_T *settings, char *encoding); 708 709 /*! 710 * @fn char *smf_settings_get_sql_encoding(SMFSettings_T *settings) 711 * @brief Get SQL encoding 712 * @param settings a SMFSettings_T object 713 * @returns sql encoding 714 */ 715 char *smf_settings_get_sql_encoding(SMFSettings_T *settings); 716 717 /*! 718 * @fn void smf_settings_set_sql_max_connections(SMFSettings_T *settings, int i) 719 * @brief Set max. number of SQL connections 720 * @param settings a SMFSettings_T object 721 * @param i number of max allowed connections 722 */ 723 void smf_settings_set_sql_max_connections(SMFSettings_T *settings, int i); 724 725 /*! 726 * @fn int smf_settings_get_sql_max_connections(SMFSettings_T *settings) 727 * @brief Get max. number of SQL connections 728 * @param settings a SMFSettings_T object 729 * @returns number of max. connections 730 */ 731 int smf_settings_get_sql_max_connections(SMFSettings_T *settings); 732 733 /*! 734 * @fn void smf_settings_set_ldap_uri(SMFSettings_T *settings, char *uri) 735 * @brief Set LDAP uri 736 * @param settings a SMFSettings_T object 737 * @param uri ldap uri value 738 */ 739 void smf_settings_set_ldap_uri(SMFSettings_T *settings, char *uri); 740 741 /*! 742 * @fn char *smf_settings_get_ldap_uri(SMFSettings_T *settings) 743 * @brief Get LDAP uri 744 * @param settings a SMFSettings_T object 745 * @returns ldap uri value 746 */ 747 char *smf_settings_get_ldap_uri(SMFSettings_T *settings); 748 749 /*! 750 * @fn int smf_settings_add_ldap_host(SMFSettings_T *settings, char *host) 751 * @brief Set LDAP host(s) 752 * @param settings a SMFSettings_T object 753 * @param host ldap host list 754 * @returns 0 on success or -1 in case of error 755 */ 756 int smf_settings_add_ldap_host(SMFSettings_T *settings, char *host); 757 758 /*! 759 * @fn SMFList_T *smf_settings_get_ldap_hosts(SMFSettings_T *settings) 760 * @brief Get LDAP host(s) 761 * @param settings a SMFSettings_T object 762 * @returns ldap host list 763 */ 764 SMFList_T *smf_settings_get_ldap_hosts(SMFSettings_T *settings); 765 766 /*! 767 * @fn void smf_settings_set_ldap_port(SMFSettings_T *settings, int port) 768 * @brief Set LDAP port 769 * @param settings a SMFSettings_T object 770 * @param port ldap port value 771 */ 772 void smf_settings_set_ldap_port(SMFSettings_T *settings, int port); 773 774 /*! 775 * @fn int smf_settings_get_ldap_port(SMFSettings_T *settings) 776 * @brief Get LDAP port 777 * @param settings a SMFSettings_T object 778 * @returns ldap_port value 779 */ 780 int smf_settings_get_ldap_port(SMFSettings_T *settings); 781 782 /*! 783 * @fn void smf_settings_set_ldap_binddn(SMFSettings_T *settings, char *binddn) 784 * @brief Set LDAP binddn 785 * @param settings a SMFSettings_T object 786 * @param binddn ldap binddn value 787 */ 788 void smf_settings_set_ldap_binddn(SMFSettings_T *settings, char *binddn); 789 790 /*! 791 * @fn char *smf_settings_get_ldap_binddn(SMFSettings_T *settings) 792 * @brief Get LDAP binddn 793 * @param settings a SMFSettings_T object 794 * @returns ldap binddn value 795 */ 796 char *smf_settings_get_ldap_binddn(SMFSettings_T *settings); 797 798 /*! 799 * @fn void smf_settings_set_ldap_bindpw(SMFSettings_T *settings, char *bindpw) 800 * @brief Set LDAP bind password 801 * @param settings a SMFSettings_T object 802 * @param bindpw ldap bindpw value 803 */ 804 void smf_settings_set_ldap_bindpw(SMFSettings_T *settings, char *bindpw); 805 806 /*! 807 * @fn char *smf_settings_get_ldap_bindpw(SMFSettings_T *settings) 808 * @brief Get LDAP bind password 809 * @param settings a SMFSettings_T object 810 * @returns ldap_bindpw value 811 */ 812 char *smf_settings_get_ldap_bindpw(SMFSettings_T *settings); 813 814 /*! 815 * @fn void smf_settings_set_ldap_base(SMFSettings_T *settings, char *base) 816 * @brief Set LDAP search base 817 * @param settings a SMFSettings_T object 818 * @param base ldap base value 819 */ 820 void smf_settings_set_ldap_base(SMFSettings_T *settings, char *base); 821 822 /*! 823 * @fn char *smf_settings_get_ldap_base(SMFSettings_T *settings) 824 * @brief Get LDAP search base 825 * @param settings a SMFSettings_T object 826 * @returns ldap base value 827 */ 828 char *smf_settings_get_ldap_base(SMFSettings_T *settings); 829 830 /*! 831 * @fn void smf_settings_set_ldap_referrals(SMFSettings_T *settings, int i) 832 * @brief Set ldap_referrals setting 833 * @param settings a SMFSettings_T object 834 * @param i ldap referrals value 835 */ 836 void smf_settings_set_ldap_referrals(SMFSettings_T *settings, int i); 837 838 /*! 839 * @fn int smf_settings_get_ldap_referrals(SMFSettings_T *settings) 840 * @brief Get ldap_referrals setting 841 * @param settings a SMFSettings_T object 842 * @returns ldap referrals value 843 */ 844 int smf_settings_get_ldap_referrals(SMFSettings_T *settings); 845 846 /*! 847 * @fn void smf_settings_set_ldap_scope(SMFSettings_T *settings, char *scope) 848 * @brief Set LDAP scope 849 * Possible values are: 850 * - subtree 851 * - onelevel 852 * - base 853 * @param settings a SMFSettings_T object 854 * @param scope ldap scope value 855 */ 856 void smf_settings_set_ldap_scope(SMFSettings_T *settings, char *scope); 857 858 /*! 859 * @fn char *smf_settings_get_ldap_scope(SMFSettings_T *settings) 860 * @brief Get LDAP scope 861 * @param settings a SMFSettings_T object 862 * @returns ldap scope 863 */ 864 char *smf_settings_get_ldap_scope(SMFSettings_T *settings); 865 866 /*! 867 * @fn void smf_settings_set_ldap_user_query(SMFSettings_T *settings, char *query) 868 * @brief Set LDAP user query 869 * @param settings a SMFSettings_T object 870 * @param query ldap user query 871 */ 872 void smf_settings_set_ldap_user_query(SMFSettings_T *settings, char *query); 873 874 /*! 875 * @fn char *smf_settings_get_ldap_user_query(SMFSettings_T *settings) 876 * @brief Get LDAP user query 877 * @param settings a SMFSettings_T object 878 * @returns ldap user_query 879 */ 880 char *smf_settings_get_ldap_user_query(SMFSettings_T *settings); 881 882 /*! 883 * @fn int smf_settings_add_ldap_result_attribute(SMFSettings_T *settings, char *attribute) 884 * @brief Set LDAP result attribute(s) 885 * @param settings a SMFSettings_T object 886 * @param attribute name of ldap result attribute 887 * @returns 0 on success or -1 in case of error 888 */ 889 int smf_settings_add_ldap_result_attribute(SMFSettings_T *settings, char *attribute); 890 891 /*! 892 * @fn SMFList_T *smf_settings_get_ldap_result_attributes(SMFSettings_T *settings) 893 * @brief Get LDAP result attribute(s) 894 * @param settings a SMFSettings_T object 895 * @returns ldap result attribute list 896 */ 897 SMFList_T *smf_settings_get_ldap_result_attributes(SMFSettings_T *settings); 898 899 /*! 900 * @fn void smf_settings_set_lookup_persistent(SMFSettings_T *settings, int persistent) 901 * @brief Set lookup connection persistent 902 * @param settings a SMFSettings_T object 903 * @param persistent value as integer, 1 if true, 0 if false 904 */ 905 void smf_settings_set_lookup_persistent(SMFSettings_T *settings, int persistent); 906 907 /*! 908 * @fn int smf_settings_get_lookup_persistent(SMFSettings_T *settings) 909 * @brief Get the lookup persistent value 910 * @param settings a SMFSettings_T object 911 * @returns persistent value as integer, 1 if true, 0 if false 912 */ 913 int smf_settings_get_lookup_persistent(SMFSettings_T *settings); 914 915 /*! 916 * @fn char *smf_settings_group_get(SMFSettings_T *settings, char *group_name, char *key) 917 * @brief Returns the raw value associated with key under the selected group. 918 * @param settings a SMFSettings_T object 919 * @param group_name name of the settings section 920 * @param key a key 921 * @returns a newly allocated string or NULL if the specified key cannot be found. 922 */ 923 char *smf_settings_group_get(SMFSettings_T *settings, char *group_name, char *key); 924 925 /*! 926 * @fn int smf_settings_group_get_integer(SMFSettings_T *settings, char *group_name, char *key) 927 * @brief Returns the value associated with key under the selected group as an integer. 928 * @param settings a SMFSettings_T object 929 * @param group_name name of the settings section 930 * @param key a key 931 * @returns he value associated with the key as an integer, or 0 if the key was not found or could not be parsed. 932 */ 933 int smf_settings_group_get_integer(SMFSettings_T *settings, char *group_name, char *key); 934 935 /*! 936 * @fn int smf_settings_group_get_boolean(SMFSettings_T *settings, char *group_name, char *key) 937 * @brief Returns the boolean values associated with key under the selected group as integer. 938 * @param settings a SMFSettings_T object 939 * @param group_name name of the settings section 940 * @param key a key 941 * @returns the value associated with the key as a integer, 1 if true, 0 if false 942 */ 943 int smf_settings_group_get_boolean(SMFSettings_T *settings, char *group_name, char *key); 944 945 /*! 946 * @fn SMFList_T *smf_settings_group_get_list(SMFSettings_T *settings, char *group_name, char *key) 947 * @brief Returns the values associated with key under the selected group. 948 * @param settings a SMFSettings_T object 949 * @param group_name name of the settings section 950 * @param key a key 951 * @returns a newly allocated SMFList_T object or NULL on failure 952 */ 953 SMFList_T *smf_settings_group_get_list(SMFSettings_T *settings, char *group_name, char *key); 954 955 #endif /* _SMF_SETTINGS_H */ 956 957