Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
8c53ae33
...
8c53ae33271abc10fa0ac450bfd20ea601e03475
authored
2006-10-16 14:51:57 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Test auth schemes
1 parent
e4049b44
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
130 additions
and
0 deletions
examples/muauth.c
examples/muauth.c
0 → 100644
View file @
8c53ae3
/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 2006 Free Software Foundation, Inc.
GNU Mailutils is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Mailutils is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Mailutils; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301 USA */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <unistd.h>
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <string.h>
#include <mailutils/mailutils.h>
const
char
*
program_version
=
"muauth ("
PACKAGE_STRING
")"
;
static
char
doc
[]
=
"muauth -- test mailutils authentication and authorization schemes"
;
static
char
args_doc
[]
=
"key"
;
static
const
char
*
capa
[]
=
{
"auth"
,
"license"
,
"common"
,
NULL
};
static
struct
argp_option
options
[]
=
{
{
"password"
,
'p'
,
"STRING"
,
0
,
"user password"
,
0
},
{
"uid"
,
'u'
,
NULL
,
0
,
"test getpwuid functions"
,
0
},
{
"name"
,
'n'
,
NULL
,
0
,
"test getpwnam functions"
,
0
},
{
NULL
},
};
enum
mu_auth_key_type
key_type
=
mu_auth_key_name
;
char
*
password
;
static
error_t
parse_opt
(
int
key
,
char
*
arg
,
struct
argp_state
*
state
)
{
switch
(
key
)
{
case
'p'
:
password
=
arg
;
break
;
case
'u'
:
key_type
=
mu_auth_key_uid
;
break
;
case
'n'
:
key_type
=
mu_auth_key_name
;
break
;
default:
return
ARGP_ERR_UNKNOWN
;
}
return
0
;
}
static
struct
argp
argp
=
{
options
,
parse_opt
,
args_doc
,
doc
,
NULL
,
NULL
,
NULL
};
int
main
(
int
argc
,
char
*
argv
[])
{
int
rc
,
index
;
struct
mu_auth_data
*
auth
;
void
*
key
;
uid_t
uid
;
MU_AUTH_REGISTER_ALL_MODULES
();
mu_argp_init
(
program_version
,
NULL
);
mu_argp_parse
(
&
argp
,
&
argc
,
&
argv
,
0
,
capa
,
&
index
,
NULL
);
if
(
index
==
argc
)
{
mu_error
(
"not enough arguments, try `%s --help' for more info"
,
argv
[
0
]);
return
1
;
}
if
(
key_type
==
mu_auth_key_uid
)
{
uid
=
strtoul
(
argv
[
index
],
NULL
,
0
);
key
=
&
uid
;
}
else
key
=
argv
[
index
];
rc
=
mu_get_auth
(
&
auth
,
key_type
,
key
);
printf
(
"mu_get_auth => %d, %s
\n
"
,
rc
,
mu_strerror
(
rc
));
if
(
rc
==
0
)
{
printf
(
"user name: %s
\n
"
,
auth
->
name
);
printf
(
"password: %s
\n
"
,
auth
->
passwd
);
printf
(
"uid: %lu
\n
"
,
(
unsigned
long
)
auth
->
uid
);
printf
(
"gid: %lu
\n
"
,
(
unsigned
long
)
auth
->
gid
);
printf
(
"gecos: %s
\n
"
,
auth
->
gecos
);
printf
(
"home: %s
\n
"
,
auth
->
dir
);
printf
(
"shell: %s
\n
"
,
auth
->
shell
);
printf
(
"mailbox: %s
\n
"
,
auth
->
mailbox
);
printf
(
"change_uid: %d
\n
"
,
auth
->
change_uid
);
rc
=
mu_authenticate
(
auth
,
password
);
printf
(
"mu_authenticate => %d, %s
\n
"
,
rc
,
mu_strerror
(
rc
));
mu_auth_data_free
(
auth
);
}
return
rc
!=
0
;
}
Please
register
or
sign in
to post a comment