X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/3857519629ca8fbcf3466c3fc761a5bb6ed32d53..HEAD:/src/src/auths/external.c diff --git a/src/src/auths/external.c b/src/src/auths/external.c index f6aa527f2..de0d07f86 100644 --- a/src/src/auths/external.c +++ b/src/src/auths/external.c @@ -2,6 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ +/* Copyright (c) The Exim Maintainers 2023 - 2024 */ /* Copyright (c) Jeremy Harris 2019-2020 */ /* See the file NOTICE for conditions of use and distribution. */ /* SPDX-License-Identifier: GPL-2.0-or-later */ @@ -13,6 +14,8 @@ method defined in RFC 4422 Appendix A. #include "../exim.h" + +#ifdef AUTH_EXTERNAL /* Remainder of file */ #include "external.h" /* Options specific to the external authentication mechanism. */ @@ -41,7 +44,7 @@ auth_external_options_block auth_external_option_defaults = { #ifdef MACRO_PREDEF /* Dummy values */ -void auth_external_init(auth_instance *ablock) {} +void auth_external_init(driver_instance *ablock) {} int auth_external_server(auth_instance *ablock, uschar *data) {return 0;} int auth_external_client(auth_instance *ablock, void * sx, int timeout, uschar *buffer, int buffsize) {return 0;} @@ -60,12 +63,17 @@ enable consistency checks to be done, or anything else that needs to be set up. */ void -auth_external_init(auth_instance *ablock) +auth_external_init(driver_instance * a) { -auth_external_options_block * ob = (auth_external_options_block *)ablock->options_block; -if (!ablock->public_name) ablock->public_name = ablock->name; -if (ablock->server_condition) ablock->server = TRUE; -if (ob->client_send) ablock->client = TRUE; +auth_instance * ablock = (auth_instance *)a; +auth_external_options_block * ob = a->options_block; + +if (!ablock->public_name) + ablock->public_name = a->name; +if (ablock->server_condition) + ablock->server = TRUE; +if (ob->client_send) + ablock->client = TRUE; } @@ -79,7 +87,7 @@ if (ob->client_send) ablock->client = TRUE; int auth_external_server(auth_instance * ablock, uschar * data) { -auth_external_options_block * ob = (auth_external_options_block *)ablock->options_block; +auth_external_options_block * ob = ablock->drinst.options_block; int rc; /* If data was supplied on the AUTH command, decode it, and split it up into @@ -135,8 +143,7 @@ auth_external_client( uschar *buffer, /* buffer for reading response */ int buffsize) /* size of buffer */ { -auth_external_options_block *ob = - (auth_external_options_block *)(ablock->options_block); +auth_external_options_block * ob = ablock->drinst.options_block; const uschar * text = ob->client_send; int rc; @@ -152,5 +159,28 @@ return OK; -#endif /*!MACRO_PREDEF*/ +# ifdef DYNLOOKUP +# define external_auth_info _auth_info +# endif + +auth_info external_auth_info = { +.drinfo = { + .driver_name = US"external", /* lookup name */ + .options = auth_external_options, + .options_count = &auth_external_options_count, + .options_block = &auth_external_option_defaults, + .options_len = sizeof(auth_external_options_block), + .init = auth_external_init, +# ifdef DYNLOOKUP + .dyn_magic = AUTH_MAGIC, +# endif + }, +.servercode = auth_external_server, +.clientcode = auth_external_client, +.version_report = NULL, +.macros_create = NULL, +}; + +#endif /*!MACRO_PREDEF*/ +#endif /*AUTH_EXTERNAL*/ /* End of external.c */