91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2.2MB
    文件類型: .bz2
    金幣: 1
    下載: 0 次
    發布日期: 2023-11-20
  • 語言: 其他
  • 標簽: authlib??

資源簡介

Postfix+courier-authlib+dovecot+Extmail與Extman郵箱系統

資源截圖

代碼片段和文件信息

/*
**?Copyright?1998?-?2008?Double?Precision?Inc.??See?COPYING?for
**?distribution?information.
*/

#if?HAVE_CONFIG_H
#include?“courier_auth_config.h“
#endif
#include
#include
#include
#include
#include

#include “auth.h“
#include “authcustom.h“
#include “courierauthstaticlist.h“


static?int?auth_custom_login(const?char?*service?char?*authdata
?????int?(*callback_func)(struct?authinfo?*?void?*)
?????int?*callback_arg)
{
const?char?*user?*pass;

if?((user=strtok(authdata?“\n“))?==?0?||
(pass=strtok(0?“\n“))?==?0)
{
errno=EPERM;
return?(-1);
}

return?authcustomcommon(user?pass?callback_func?callback_arg);
}

#include “libhmac/hmac.h“
#include “cramlib.h“

static?int?auth_custom_cram(const?char?*service
????const?char?*authtype
????char?*authdata
????int?(*callback_func)(struct?authinfo?*?void?*)
????void?*callback_arg)
{
struct cram_callback_info cci;

if?(auth_get_cram(authtype?authdata?&cci))
return?(-1);

cci.callback_func=callback_func;
cci.callback_arg=callback_arg;

return?authcustomcommon(cci.user?0?&auth_cram_callback?&cci);
}

int?auth_custom(const?char?*service?const?char?*authtype?char?*authdata
int?(*callback_func)(struct?authinfo?*?void?*)
void?*callback_arg)
{
if?(strcmp(authtype?AUTHTYPE_LOGIN)?==?0)
return?(auth_custom_login(service?authdata
callback_func?callback_arg));

return?(auth_custom_cram(service?authtype?authdata
?callback_func?callback_arg));
}


extern?int?auth_custom_pre(const?char?*userid?const?char?*service
????????int?(*callback)(struct?authinfo?*?void?*)
??void?*arg);

static?int?auth_custom_chgpwd(const?char?*service
??????const?char?*uid
??????const?char?*oldpwd
??????const?char?*newpwd)
{
/*
**?Insert?code?to?change?the?account‘s?password?here.
**
**?return?0?if?changed.
**
**?return?1?if?failed.
**?Set?errno?to?EPERM?if?we?had?a?temporary?failure?(such?as?invalid
**?old?pwd).
**
**?Set?errno?to?EINVAL?if?we?failed?because?we?did?not?recognize?uid.
*/

errno=EINVAL;
return?(-1);
}

static?void?auth_custom_idle()
{
/*
**?Insert?code?to?temporarily?deallocate?resources?after?remaining
**?idle?(as?part?of?authdaemond)?for?more?than?5?minutes.
*/
}

static?struct?authstaticinfo?authcustom_info={
“authcustom“
auth_custom
auth_custom_pre
authcustomclose
auth_custom_chgpwd
auth_custom_idle};


struct?authstaticinfo?*courier_authcustom_init()
{
return?&authcustom_info;
}

評論

共有 條評論

相關資源