mirror of
https://github.com/3proxy/3proxy.git
synced 2026-10-28 13:55:48 +08:00
Services: threadperclient with PAM, LDAP or Windows authentication
struct auth has blocks, for an authentication waiting other than in sockpoll(): PamAuth, LdapPlugin and WindowsAuthentication set it, and a service authenticating with one of them gives each client a thread. Incompatible for plugins, which have to be built again with the same version of 3proxy: struct auth has blocks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
5d3f1e9567
commit
df993b5304
@ -558,6 +558,7 @@ static int h_auth(int argc, unsigned char **argv){
|
||||
conf->authfuncs->desc = au->desc;
|
||||
conf->authfuncs->authenticate = au->authenticate;
|
||||
conf->authfuncs->authorize = au->authorize;
|
||||
conf->authfuncs->blocks = au->blocks;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -313,8 +313,11 @@ static int srvprepare(struct srvstart *s, int argc, char **argv){
|
||||
}
|
||||
|
||||
if(conf->authfuncs){
|
||||
struct auth *au;
|
||||
|
||||
srv->authfuncs = copyauth(conf->authfuncs);
|
||||
if(!srv->authfuncs) return 2;
|
||||
for(au = srv->authfuncs; au; au = au->next) if(au->blocks) srv->threadperclient = 1;
|
||||
}
|
||||
#else
|
||||
srv->needuser = 0;
|
||||
|
||||
@ -551,6 +551,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink,
|
||||
myalwaysauth.authenticate = ldapfunc;
|
||||
myalwaysauth.authorize = pluginlink->checkACL;
|
||||
myalwaysauth.desc = "ldap";
|
||||
myalwaysauth.blocks = 1;
|
||||
myalwaysauth.next = pluginlink->authfuncs->next;
|
||||
pluginlink->authfuncs->next = &myalwaysauth;
|
||||
|
||||
|
||||
@ -141,6 +141,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, unsigne
|
||||
pamauth.authenticate = pamfunc;
|
||||
pamauth.authorize = pluginlink->checkACL;
|
||||
pamauth.desc = "pam";
|
||||
pamauth.blocks = 1;
|
||||
pamauth.next = pluginlink->authfuncs->next;
|
||||
pluginlink->authfuncs->next = &pamauth;
|
||||
|
||||
|
||||
@ -80,6 +80,7 @@ PLUGINAPI int PLUGINCALL WindowsAuthentication(struct pluginlink * pluginlink, i
|
||||
alwaysauth.authenticate = windowsfunc;
|
||||
alwaysauth.authorize = pluginlink->checkACL;
|
||||
alwaysauth.desc = "windows";
|
||||
alwaysauth.blocks = 1;
|
||||
alwaysauth.next = pluginlink->authfuncs->next;
|
||||
pluginlink->authfuncs->next = &alwaysauth;
|
||||
loaded = 1;
|
||||
|
||||
@ -284,6 +284,7 @@ struct auth {
|
||||
AUTHFUNC authenticate;
|
||||
AUTHFUNC authorize;
|
||||
char * desc;
|
||||
int blocks; /* waits other than in sockpoll(): PAM, LDAP */
|
||||
};
|
||||
|
||||
struct iplist {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user