The source code for this example is in the auth.c file in the nsapi/examples/ or plugins/nsapi/examples subdirectory of the server root directory.
#include "nsapi.h" typedef struct { char *name; char *pw; } user_s; static user_s user_set[] = { {"joe", "shmoe"}, {"suzy", "creamcheese"}, {NULL, NULL} }; #include "frame/log.h" #ifdef __cplusplus extern "C" #endif NSAPI_PUBLIC int hardcoded_auth(pblock *param, Session *sn, Request *rq) { /* Parameters given to us by auth-basic */ char *pwfile = pblock_findval("userdb", param); char *user = pblock_findval("user", param); char *pw = pblock_findval("pw", param); /* Temp variables */ register int x; for(x = 0; user_set[x].name != NULL; ++x) { /* If this isn’t the user we want, keep going */ if(strcmp(user, user_set[x].name) != 0) continue; /* Verify password */ if(strcmp(pw, user_set[x].pw)) { log_error(LOG_SECURITY, "hardcoded-auth", sn, rq, "user %s entered wrong password", user); /* This will cause the enforcement function to ask */ /* user again */ return REQ_NOACTION; } /* If we return REQ_PROCEED, the username will be accepted */ return REQ_PROCEED; } /* No match, have it ask them again */ log_error(LOG_SECURITY, "hardcoded-auth", sn, rq, "unknown user %s", user); return REQ_NOACTION; }