Authen-ACE
view release on metacpan or search on metacpan
int arg;
{
errno = 0;
switch (*name) {
case 'A':
if (strEQ(name, "ACM_OK")) return ACM_OK;
if (strEQ(name, "ACM_ACCESS_DENIED")) return ACM_ACCESS_DENIED;
if (strEQ(name, "ACM_NEXT_CODE_REQUIRED")) return ACM_NEXT_CODE_REQUIRED;
if (strEQ(name, "ACM_NEW_PIN_REQUIRED")) return ACM_NEW_PIN_REQUIRED;
if (strEQ(name, "ACM_NEW_PIN_ACCEPTED")) return ACM_NEW_PIN_ACCEPTED;
if (strEQ(name, "ACM_NEW_PIN_REJECTED")) return ACM_NEW_PIN_REJECTED;
break;
case 'C':
if (strEQ(name, "CANNOT_CHOOSE_PIN")) return CANNOT_CHOOSE_PIN;
break;
case 'M':
if (strEQ(name, "MUST_CHOOSE_PIN")) return MUST_CHOOSE_PIN;
break;
case 'U':
if (strEQ(name, "USER_SELECTABLE")) return USER_SELECTABLE;
break;
}
errno = EINVAL;
return 0;
not_there:
errno = ENOENT;
return 0;
}
union config_record configure;
MODULE = Authen::ACE PACKAGE = Authen::ACE
PROTOTYPES: ENABLE
double
constant(name,arg)
char * name
int arg
int
creadcfg()
SDClient *
sd_init()
CODE:
SDClient *sd = (SDClient *)malloc(sizeof(SDClient));
memset(sd, 0, sizeof(SDClient));
if (sd) RETVAL = (sd_init(sd) == 0)? sd : NULL;
OUTPUT:
RETVAL
void
sd_auth(sd, username="")
SDClient * sd
char * username
PPCODE:
{
int result;
if (strlen(username)) strncpy(sd->username, username, LENACMNAME);
EXTEND(sp, 1);
result = sd_auth(sd);
PUSHs(sv_2mortal(newSViv(result)));
if (result == ACM_OK) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVpv(sd->shell, strlen(sd->shell))));
}
}
void
sd_check(password="", username, sd)
char * password
char * username
SDClient * sd
PPCODE:
{
int result;
result = sd_check(password, username, sd);
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSViv(result)));
switch (result) {
case ACM_OK:
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVpv(sd->shell, strlen(sd->shell))));
break;
case ACM_ACCESS_DENIED:
break;
case ACM_NEXT_CODE_REQUIRED:
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSViv(sd->timeout)));
break;
case ACM_NEW_PIN_REQUIRED:
EXTEND(sp, 5);
PUSHs(sv_2mortal(newSVpv(sd->system_pin, strlen(sd->system_pin))));
PUSHs(sv_2mortal(newSViv(sd->min_pin_len)));
PUSHs(sv_2mortal(newSViv(sd->max_pin_len)));
PUSHs(sv_2mortal(newSViv(sd->user_selectable)));
PUSHs(sv_2mortal(newSViv(sd->alphanumeric)));
break;
}
}
void
sd_next(next, sd)
char * next
SDClient * sd
PPCODE:
{
int result;
EXTEND(sp, 1);
result = sd_next(next, sd);
PUSHs(sv_2mortal(newSViv(result)));
if (result == ACM_OK) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVpv(sd->shell, strlen(sd->shell))));
}
}
int
sd_pin(pin, canceled, sd)
char * pin
char canceled
SDClient * sd
int
sd_close()
( run in 2.106 seconds using v1.01-cache-2.11-cpan-71847e10f99 )