MiscUtils.h
上传用户:woshihumen
上传日期:2013-07-18
资源大小:484k
文件大小:6k
源码类别:

Email服务器

开发平台:

Visual C++

  1. /*
  2.  *  XMail by Davide Libenzi ( Intranet and Internet mail server )
  3.  *  Copyright (C) 1999,..,2004  Davide Libenzi
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  *
  19.  *  Davide Libenzi <davidel@xmailserver.org>
  20.  *
  21.  */
  22. #ifndef _MISCUTILS_H
  23. #define _MISCUTILS_H
  24. #define LOCK_FILE_WAITSTEP          1
  25. #define INVALID_FSCAN_HANDLE        ((FSCAN_HANDLE) 0)
  26. #define HASH_INIT_VALUE             5381
  27. typedef struct FSCAN_HANDLE_struct {
  28. } *FSCAN_HANDLE;
  29. struct AddressFilter {
  30. SYS_UINT8 Addr[sizeof(NET_ADDRESS)];
  31. SYS_UINT8 Mask[sizeof(NET_ADDRESS)];
  32. };
  33. int MscUniqueFile(char const *pszDir, char *pszFilePath);
  34. int MscRecvTextFile(const char *pszFileName, BSOCK_HANDLE hBSock, int iTimeout,
  35.     int (*pStopProc) (void *) = NULL, void *pParam = NULL);
  36. int MscSendTextFile(const char *pszFileName, BSOCK_HANDLE hBSock, int iTimeout,
  37.     int (*pStopProc) (void *) = NULL, void *pParam = NULL);
  38. char *MscTranslatePath(char *pszPath);
  39. void *MscLoadFile(char const *pszFilePath, unsigned int &uFileSize);
  40. int MscLockFile(const char *pszFileName, int iMaxWait, int iWaitStep = LOCK_FILE_WAITSTEP);
  41. int MscGetTimeNbrString(char *pszTimeStr, int iStringSize, time_t tTime = 0);
  42. int MscGetTime(struct tm &tmLocal, int &iDiffHours, int &iDiffMins, time_t tCurr = 0);
  43. char *MscStrftime(struct tm const *ptmTime, char *pszDateStr, int iSize);
  44. int MscGetTimeStr(char *pszTimeStr, int iStringSize, time_t tCurr = 0);
  45. int MscGetDirectorySize(char const *pszPath, bool bRecurse, unsigned long &ulDirSize,
  46. unsigned long &ulNumFiles, int (*pFNValidate) (char const *) = NULL);
  47. FSCAN_HANDLE MscFirstFile(char const *pszPath, int iListDirs, char *pszFileName);
  48. int MscNextFile(FSCAN_HANDLE hFileScan, char *pszFileName);
  49. void MscCloseFindFile(FSCAN_HANDLE hFileScan);
  50. int MscGetFileList(char const *pszPath, const char *pszListFile, int iListDirs = 1);
  51. int MscCreateEmptyFile(const char *pszFileName);
  52. int MscClearDirectory(const char *pszPath, int iRecurseSubs = 1);
  53. int MscCopyFile(const char *pszCopyTo, const char *pszCopyFrom);
  54. int MscAppendFile(const char *pszCopyTo, const char *pszCopyFrom);
  55. int MscCopyFile(FILE * pFileOut, FILE * pFileIn, unsigned long ulBaseOffset,
  56. unsigned long ulCopySize);
  57. int MscMoveFile(char const *pszOldName, char const *pszNewName);
  58. char *MscGetString(FILE * pFile, char *pszBuffer, int iMaxChars);
  59. char *MscFGets(char *pszLine, int iLineSize, FILE * pFile);
  60. char *MscGetConfigLine(char *pszLine, int iLineSize, FILE * pFile, bool bSkipComments = true);
  61. int MscGetPeerHost(SYS_SOCKET SockFD, char *pszFQDN);
  62. int MscGetSockHost(SYS_SOCKET SockFD, char *pszFQDN);
  63. int MscGetServerAddress(char const *pszServer, SYS_INET_ADDR & SvrAddr, int iPortNo = 0);
  64. int MscSplitFQDN(const char *pszFQDN, char *pszHost, char *pszDomain);
  65. char *MscLogFilePath(char const *pszLogFile, char *pszLogFilePath);
  66. int MscFileLog(char const *pszLogFile, char const *pszFormat, ...);
  67. int MscSplitPath(char const *pszFilePath, char *pszDir, char *pszFName, char *pszExt);
  68. int MscGetFileName(char const *pszFilePath, char *pszFileName);
  69. int MscCreateClientSocket(char const *pszServer, int iPortNo, int iSockType,
  70.   SYS_SOCKET * pSockFD, SYS_INET_ADDR * pSvrAddr,
  71.   SYS_INET_ADDR * pSockAddr, int iTimeout);
  72. int MscCreateServerSockets(int iNumAddr, SYS_INET_ADDR const *pSvrAddr, int iPortNo,
  73.    int iListenSize, SYS_SOCKET * pSockFDs, int &iNumSockFDs);
  74. int MscGetMaxSockFD(SYS_SOCKET const *pSockFDs, int iNumSockFDs);
  75. int MscAcceptServerConnection(SYS_SOCKET const *pSockFDs, int iNumSockFDs,
  76.       SYS_SOCKET * pConnSockFD, int &iNumConnSockFD, int iTimeout);
  77. int MscLoadAddressFilter(char const *const *ppszFilter, int iNumTokens, AddressFilter & AF);
  78. bool MscAddressMatch(AddressFilter const &AF, NET_ADDRESS const &TestAddr);
  79. int MscCheckAllowedIP(char const *pszMapFile, const SYS_INET_ADDR & PeerInfo, bool bDefault);
  80. char **MscGetIPProperties(char const *pszFileName, const SYS_INET_ADDR & PeerInfo);
  81. int MscMD5Authenticate(const char *pszPassword, const char *pszTimeStamp, const char *pszDigest);
  82. char *MscExtractServerTimeStamp(char const *pszResponse, char *pszTimeStamp, int iMaxTimeStamp);
  83. int MscBase64FileEncode(char const *pszBoundary, char const *pszFilePath, FILE * pFileOut);
  84. int MscRootedName(char const *pszHostName);
  85. int MscCramMD5(char const *pszSecret, char const *pszChallenge, char *pszDigest);
  86. SYS_UINT32 MscHashString(char const *pszBuffer, int iLength,
  87.  SYS_UINT32 uHashInit = HASH_INIT_VALUE);
  88. int MscSplitAddressPort(char const *pszConnSpec, char *pszAddress, int &iPortNo, int iDefPortNo);
  89. SYS_UINT16 MscReadUint16(void const *pData);
  90. SYS_UINT32 MscReadUint32(void const *pData);
  91. SYS_UINT64 MscReadUint64(void const *pData);
  92. void *MscWriteUint16(void *pData, SYS_UINT16 uValue);
  93. void *MscWriteUint32(void *pData, SYS_UINT32 uValue);
  94. void *MscWriteUint64(void *pData, SYS_UINT64 uValue);
  95. int MscCmdStringCheck(char const *pszString);
  96. int MscGetSectionSize(FileSection const *pFS, unsigned long *pulSize);
  97. #endif