libauth(3)
π libauth β routines for writing nnrpd resolvers and authenticators π
okay bestie, so this is libauth(3), a page from the InterNetNews Documentation, and it's literally the little C helper library that makes writing nnrpd resolvers and authenticators not a whole nightmare. come sit, i got you π«Ά
β¨ SYNOPSIS β¨
#include "libauth.h"
struct res_info {
struct sockaddr *client;
struct sockaddr *local;
char *clienthostname;
};
struct auth_info {
char *username;
char *password;
};
struct auth_info *get_auth_info(FILE *);
struct res_info *get_res_info (FILE *);
void free_auth_info(struct auth_info*);
void free_res_info (struct res_info*);
πΈ DESCRIPTION πΈ
These functions are basically a convenient C frontend to the nnrpd external authentication interface, which is documented over in doc/external-auth. that's the whole vibe β¨
okay important thing: using this library is not required. fr fr. especially if you're writing external resolvers and authenticators in languages that aren't C β you'll have to implement the necessary functionality yourself, no cap. π
The get_auth_info() and get_res_info() functions allocate sufficient memory for a struct auth_info or struct res_info and any necessary fields, then hand you back a pointer to the struct with the fields filled in from information supplied by nnrpd. (the FILE* parameter generally should be "stdin", just so you know π)
Both functions return NULL on error. and the caller β that's you, bestie β is responsible for deallocating the memory by using the functions below. don't ghost your mallocs π
The string fields of both structs are straightforward, lowkey no drama. but here's the iconic part: the client and local fields of struct res_info actually point to instances of struct sockaddr_in (or struct sockaddr_in6 if IPv6 support is compiled in). highkey important, don't forget π¦
The free_auth_info() and free_res_info() functions free the struct passed in as argument and all necessary fields. they're the cleanup crew, they ate π
π BUGS π
okay so there are some quirks, let's talk about them:
- In many cases, nnrpd provides more information than is normally useful (for example, even when calling an authenticator, the resolver information is often provided.) like okay girl, oversharing much π
- On the other hand, in certain cases it provides less information than might be expected (for example, if nnrpd is reading from
stdinrather than a socket). so it's giving inconsistent, ngl. - The implementation is capable of handling at least the first of these issues, but that functionality is not exposed in the interface. tragic. the potential is there and it's justβ¦ sitting there. π
Also, at present, libauth.h and its implementation are located in authprogs/; perhaps they should be moved to include/ and lib/, respectively? not me asking the real questions π€
π HISTORY π
Written by Jeffrey M. Vinocur <jeff@litech.org> for InterNetNews.
$Id: libauth.pod 8200 2008-11-30 13:31:30Z iulius $
π SEE ALSO π
nnrpd(8)readers.conf(5)doc/external-auth
and that's the whole page bestie, you're so welcome π this was the libauth(3) man page, INN 2.6.4, dated 2015-09-12. go write a resolver, i believe in you. periodt. πβ¨π¦
π¦ where this page comes from
- ubuntu jammy: inn2-dev 2.6.4-2build4
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms