aboutsummaryrefslogtreecommitdiff
path: root/src/progman.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-12-16 14:58:07 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2015-12-16 14:58:07 +0200
commit6bb908898b833ec69c66e918de732af5bad68934 (patch)
treedd715a052f67849d38aedaa25eafa93241e938df /src/progman.c
parent9cb7455b12462a3679ed5208540793d802570481 (diff)
downloadpies-6bb908898b833ec69c66e918de732af5bad68934.tar.gz
pies-6bb908898b833ec69c66e918de732af5bad68934.tar.bz2
Implement authentication on control socket.
* Makefile.am (SUBDIRS): Add src. * configure.ac: Check for crypt.h and PAM Build ident/Makefile * grecs: Update. * ident/Makefile.am: New file. * ident/ident.c: New file. * ident/ident.h: New file. * ident/identity.h: New file. * ident/pam.c: New file. * ident/provider.c: New file. * ident/system.c: New file. * lib/Makefile.am: Add arraymember.c * lib/arraymember.c: New file. * lib/libpies.h (is_array_member): New proto. * src/Makefile.am (LDADD): Add libident.a and @PAM_LIBS@ * src/acl.c (acl_entry): Remove groups. Add new members: names and name_match. (pies_acl_create): Deep copy the locus. Set free_entry function for the list. (pies_acl_free): Free locus. (_parse_from): Set free_entry function for the list. (_parse_group): Parse the "user" construct. (parse_acl_line): Deep copy the locus. Allow for null value. (acl_keywords): Update docstrings. (_acl_check): Rewrite identity checks. * src/acl.h (acl_input)<user,groups>: Remove. <identity>: New member. (pies_acl_free): New proto. * src/ctl.c (identity): New global. (cmdtab): New command: auth (ctlio) <addr,addrlen>: New members. (ctlio_create): Start from authenticated state only if no identity_providers are configured. (cmd_auth): New function. (cmd_help): Print only commands that are available in the current state. (ctl_accept): Initialize io->addr and io->addrlen. * src/inetd-bi.c: Change call to check_acl * src/pies.c: Include identity.h (control_keywords): New statement "identity-acl" (pies_keywords): New statement "identity-provider" (config_init): Register identity mechanisms. (config_parse): New function. (config_help): Print help on identity-provider statements. (main): Use config_parse to parse grecs-style configurations. * src/pies.h: Include identity.h (check_acl): Change argument list. All callers changed. (control): Remove acl. Add conn_acl and id_acl instead. * src/progman.c (check_acl): Change argument list. Take identity as the 3rd argument.
Diffstat (limited to 'src/progman.c')
-rw-r--r--src/progman.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/progman.c b/src/progman.c
index 12969ab..1ec5a8d 100644
--- a/src/progman.c
+++ b/src/progman.c
@@ -1303,3 +1303,4 @@ prog_start (struct prog *prog)
int
-check_acl (pies_acl_t acl, struct sockaddr *s, socklen_t salen)
+check_acl (pies_acl_t acl, struct sockaddr *s, socklen_t salen,
+ pies_identity_t identity)
{
@@ -1313,4 +1314,3 @@ check_acl (pies_acl_t acl, struct sockaddr *s, socklen_t salen)
input.addrlen = salen;
- input.user = NULL;
- input.groups = NULL;
+ input.identity = identity;
@@ -1376,4 +1376,4 @@ _prog_accept (struct prog *p)
- if (check_acl (p->v.p.comp->acl, (struct sockaddr *)&addr, addrlen)
- || check_acl (pies_acl, (struct sockaddr *)&addr, addrlen))
+ if (check_acl (p->v.p.comp->acl, (struct sockaddr *)&addr, addrlen, NULL)
+ || check_acl (pies_acl, (struct sockaddr *)&addr, addrlen, NULL))
{

Return to:

Send suggestions and report system problems to the System administrator.