You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
8.0 KiB
C

2 years ago
/*********************************************************************
*<EFBFBD>ļ<EFBFBD>˵<EFBFBD><EFBFBD>: <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: logos
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2014/01/22
*<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>־: 2014/01/22 logos create
***********************************************************************/
#pragma once
#ifndef DLL_INCLUDE_LOGIN_H
#define DLL_INCLUDE_LOGIN_H
#ifndef WINAPI
#define WINAPI __stdcall
#endif
#ifndef EXPORT_C
#define EXPORT_C extern "C"
#endif
#ifndef MAX_NAME_LEN
#define MAX_NAME_LEN 32
#endif
#ifndef MAX_PWD_LEN
#define MAX_PWD_LEN 16
#endif
#define MAX_LIMIT_CNT 32 //Ȩ<><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
enum EMUserGroup
{//<2F>û<EFBFBD><C3BB>ȼ<EFBFBD>
EUser_Level0 = 0, //δ<><CEB4>¼
EUser_Level1, //OP
EUser_Level2, //admin
EUser_Level3, //system
EUser_Level4, //root
};
struct TUser
{//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
char name[MAX_NAME_LEN]; //<2F>û<EFBFBD><C3BB><EFBFBD>
unsigned int group; //<2F><><EFBFBD><EFBFBD>
unsigned int limit; //Ȩ<><C8A8> -- λ
};
struct TUserLimit
{//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
char name[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
char desc[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD>
};
enum EM_ERR_USER
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ERR_NO_LOGIN = -1100, //δ<><CEB4>¼
ERR_NO_LIMIT, //<2F><>Ȩ<EFBFBD><C8A8>
ERR_USER_EXIST, //<2F>û<EFBFBD><C3BB>Ѵ<EFBFBD><D1B4><EFBFBD>
ERR_USER_TOO_LONG, //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ERR_PWD_TOO_LONG, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ERR_INVALID_USER, //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ч
ERR_INVALID_PWD, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
ERR_INVALID_LIMIT, //<2F><>Ч<EFBFBD><D0A7>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
ERR_REPEAT_LIMIT, //<2F>ظ<EFBFBD><D8B8><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
ERR_LIMIT_OVER, //Ȩ<><C8A8><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
};
/****************************************************
*Function: <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
*Intput: NULL
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI user_init();
/****************************************************
*Function: <EFBFBD>ͷ<EFBFBD>ģ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Դ
*Intput: NULL
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI user_deinit();
/****************************************************
*Function: <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>½,<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>get_cur_limit<EFBFBD><EFBFBD>ȡȨ<EFBFBD><EFBFBD>
*Intput: lpUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
lpPwd <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI login(const char* lpUser, const char* lpPwd);
/****************************************************
*Function: <EFBFBD>û<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>½
*Intput: NULL
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI logout();
/****************************************************
*Function: <EFBFBD>޸<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ϣ, Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD>
*Intput: lpOldUser Ҫ<EFBFBD>޸ĵ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
lpNewUser <EFBFBD>µ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD> Ĭ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
group <EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> admin/system Ĭ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
limit <EFBFBD>µ<EFBFBD>Ȩ<EFBFBD><EFBFBD> Ĭ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI change_user(const char* lpOldUser, const char* lpNewUser = 0, unsigned int group = 0, unsigned int limit = 0);
/****************************************************
*Function: <EFBFBD>޸<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Intput: lpUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
lpOldPwd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lpNewPwd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI change_pwd(const char* lpUser, const char* lpOldPwd, const char* lpNewPwd);
/****************************************************
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD>
*Intput: lpUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI clear_pwd(const char* lpUser);
/****************************************************
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
*Intput: lpUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
lpPwd <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
group <EFBFBD><EFBFBD><EFBFBD><EFBFBD> admin/system
limit Ȩ<EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI add_user(const char* lpUser, const char* lpPwd, unsigned int group, unsigned int limit);
/****************************************************
*Function: ɾ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
*Intput: lpUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI del_user(const char* lpUser);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><EFBFBD>б<EFBFBD>
*Intput: pstUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>NULL<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Output: pstUser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI get_user_list(TUser* pstUser = 0);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
*Intput: NULL
*Output: NULL
*Return: <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>,ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>NULL
******************************************************/
EXPORT_C const char* WINAPI get_cur_user();
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
*Intput: NULL
*Output: pname <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI get_cur_users(char* pname);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Intput: pszuser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>ʶ<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD>
*Output: NULL
*Return: <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
******************************************************/
EXPORT_C unsigned int WINAPI get_user_group(const char* pszuser = 0);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD>Ȩ<EFBFBD><EFBFBD>
*Intput: pszuser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>ʶ<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD>
*Output: NULL
*Return: <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
******************************************************/
EXPORT_C unsigned int WINAPI get_user_limit(const char* pszuser = 0);
/****************************************************
*Function: <EFBFBD>жϵ<EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
*Intput: pszname Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pszuser <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>ʶ<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD>
*Output: NULL
*Return: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>ʶ<EFBFBD>У<EFBFBD>0<EFBFBD><EFBFBD>ʶû<EFBFBD><EFBFBD>
******************************************************/
EXPORT_C int WINAPI chk_user_limit(const char* pszname, const char* pszuser = 0);
/****************************************************
*Function: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>32<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
*Intput: index <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0,32)
pszname <EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
pszdesc <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵģ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
*PS: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>޵Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>chk_user_limit<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϵ<EFBFBD>ǰ<EFBFBD>û<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
******************************************************/
EXPORT_C int WINAPI add_limit(const char* pszname, const char* pszdesc = 0);
/****************************************************
*Function: ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
*Intput: index <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
*PS: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
******************************************************/
EXPORT_C int WINAPI del_limit(int index);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡȨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
*Intput: pstlimit Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>NULL
*Output: pstlimit Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Return: <EFBFBD>ɹ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
*PS: <EFBFBD>ȴ<EFBFBD>NULL<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>new<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>б<EFBFBD>
******************************************************/
EXPORT_C int WINAPI get_limit_list(TUserLimit* pstlimit = 0);
/****************************************************
*Function: <EFBFBD><EFBFBD>ȡȨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Ҳ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ijȨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*Intput: pszname Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pszdesc Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>NULL
*Output: NULL
*Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0
******************************************************/
EXPORT_C int WINAPI get_limit_info(const char* pszname, char* pszdesc = 0);
#endif //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>