home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 February / PCWorld_2003-02_cd.bin / Komunik / sambar / sambar53b3.exe / include / sambar.h < prev   
Encoding:
C/C++ Source or Header  |  2002-11-26  |  26.7 KB  |  1,008 lines

  1. /*
  2. ** SAMBAR.H
  3. **
  4. **      This is the public WIN32 header file for the Sambar 
  5. **        Server application.
  6. **
  7. **        Confidential Property of Tod Sambar
  8. **        (c) Copyright Tod Sambar 1996-1997
  9. **        All rights reserved.
  10. **
  11. **
  12. ** History:
  13. ** Chg#    Date    Description                                                Resp
  14. ** ----    -------    -------------------------------------------------------    ----
  15. **        10AUG96    Created                                                    sambar
  16. **        11APR97    Added server start/stop APIs                            sambar
  17. */
  18.  
  19. #if     !defined(__SAMBAR_H__)
  20. #define __SAMBAR_H__
  21.  
  22. /*
  23. ** Types
  24. */
  25. typedef int                            SA_RETCODE;
  26. typedef long                        SA_INT;
  27. typedef int                            SA_BOOL;
  28. typedef void                        SA_VOID;
  29. typedef unsigned char                SA_BYTE;
  30. typedef unsigned char                SA_CHAR;
  31.  
  32. #ifndef TEXT
  33. #define TEXT(x)                        (x)
  34. #endif
  35.  
  36. #ifndef MAX
  37. #define MAX(a,b)                    ((SA_INT)(a) > (SA_INT)(b) ? (a) : (b))
  38. #endif
  39.  
  40. #ifndef MIN
  41. #define MIN(a,b)                    ((SA_INT)(a) < (SA_INT)(b) ? (a) : (b))
  42. #endif
  43.  
  44. /*
  45. ** Public Structures
  46. */
  47. #define SA_CTX                        SA_VOID
  48. #define SA_CONN                        SA_VOID
  49. #define SA_PARAMS                    SA_VOID
  50. #define SA_REC                        SA_VOID
  51. #define SA_PROFILE                    SA_VOID
  52.  
  53.  
  54. /*
  55. ** Return Codes
  56. */
  57. #define SA_SUCCEED                    1
  58. #define SA_FAIL                        0
  59.  
  60. /*
  61. ** Log Levels
  62. */
  63. #define SA_LOG_FATAL                10
  64. #define SA_LOG_ERROR                20
  65. #define SA_LOG_WARN                    30
  66. #define SA_LOG_INFO                    40
  67. #define SA_LOG_TRACE                50
  68.  
  69.  
  70. /*
  71. ** Error Codes
  72. */
  73. #define SA_E_DOCFOLLOWS                (SA_INT)-1
  74. #define SA_E_INTERNALSYSTEM            (SA_INT)0
  75. #define SA_E_ALREADYLOGGEDIN        (SA_INT)1
  76. #define SA_E_BADCOOKIE                (SA_INT)2
  77. #define SA_E_INVALIDLOGIN            (SA_INT)3
  78. #define SA_E_MAXLOGINS                (SA_INT)4
  79. #define SA_E_ALREADYDEFINED            (SA_INT)5
  80. #define SA_E_INVALIDDATA            (SA_INT)6
  81. #define SA_E_NOTIMPLEMENTED            (SA_INT)7
  82. #define SA_E_FORBIDDEN                (SA_INT)8
  83. #define SA_E_NOTFOUND                (SA_INT)9
  84. #define SA_E_DUPLICATE                (SA_INT)10
  85. #define SA_E_DBOPFAILED                (SA_INT)11
  86. #define SA_E_BADGATEWAY                (SA_INT)12
  87. #define SA_E_REDIRECT                (SA_INT)13
  88. #define SA_E_USRDEF1                (SA_INT)14
  89. #define SA_E_USRDEF2                (SA_INT)15
  90. #define SA_E_USRDEF3                (SA_INT)16
  91. #define SA_E_USRDEF4                (SA_INT)17
  92. #define SA_E_USRDEF5                (SA_INT)18
  93. #define SA_E_USRDEF6                (SA_INT)19
  94. #define SA_E_USRDEF7                (SA_INT)20
  95. #define SA_E_USRDEF8                (SA_INT)21
  96. #define SA_E_USRDEF9                (SA_INT)22
  97. #define SA_E_USRDEF10                (SA_INT)23
  98. #define SA_E_USRDEF11                (SA_INT)24
  99. #define SA_E_USRDEF12                (SA_INT)25
  100. #define SA_E_USRDEF13                (SA_INT)26
  101. #define SA_E_USRDEF14                (SA_INT)27
  102. #define SA_E_USRDEF15                (SA_INT)28
  103. #define SA_E_USRDEF16                (SA_INT)29
  104. #define SA_E_USRDEF17                (SA_INT)30
  105. #define SA_E_USRDEF18                (SA_INT)31
  106. #define SA_E_USRDEF19                (SA_INT)32
  107. #define SA_E_USRDEF20                (SA_INT)33
  108. #define SA_E_TIMEOUT                (SA_INT)34
  109. #define SA_E_SHUTDOWN                (SA_INT)35
  110. #define SA_E_SERVERDOWN                (SA_INT)36
  111. #define SA_E_PAUSED                    (SA_INT)37
  112. #define SA_E_MAXCGIS                (SA_INT)38
  113. #define SA_E_INUSE                    (SA_INT)39
  114. #define SA_E_RESTART                (SA_INT)40
  115. #define SA_E_INTERRUPTED            (SA_INT)41
  116. #define SA_E_SSLONLY                (SA_INT)42
  117. #define SA_E_VERSIONCONTROL            (SA_INT)43
  118. #define SA_E_PERMANENTREDIRECT        (SA_INT)44
  119. #define SA_E_GONE                    (SA_INT)45
  120. #define SA_E_MAXELEMENTS            (SA_INT)46
  121. #define SA_E_LOGINWAIT                (SA_INT)47
  122. #define SA_E_MAXLENGTH                (SA_INT)48
  123. #define SA_E_MAXREQUESTS            (SA_INT)49
  124. #define SA_E_REQUESTWAIT            (SA_INT)50
  125. #define SA_E_NOTENABLED                (SA_INT)51
  126. #define SA_E_LOCKED                    (SA_INT)52
  127. #define SA_E_NOCONTENT                (SA_INT)53
  128. #define SA_E_CREATED                (SA_INT)54
  129. #define SA_E_INITIALIZING            (SA_INT)55
  130.  
  131.  
  132. /*
  133. ** Actions
  134. */
  135. #define    SA_GET                        (SA_INT)1
  136. #define    SA_SET                        (SA_INT)2
  137. #define    SA_CLEAR                    (SA_INT)3
  138.  
  139. /*
  140. ** Misc Defines
  141. */
  142. #define SA_NULLTERM                    (SA_INT)-3
  143.  
  144. /*
  145. ** Context Properties
  146. */
  147. #define SA_CTXPROP_SYSADMIN            (SA_INT)1
  148. #define SA_CTXPROP_HOMEDIR            (SA_INT)2
  149. #define SA_CTXPROP_LOGDIR            (SA_INT)3
  150. #define SA_CTXPROP_APPLICDIR        (SA_INT)5
  151. #define SA_CTXPROP_SERVERSW            (SA_INT)7
  152. #define SA_CTXPROP_SERVERPORT        (SA_INT)8
  153. #define SA_CTXPROP_SERVERNAME        (SA_INT)9
  154. #define SA_CTXPROP_SERVERIP            (SA_INT)10
  155. #define SA_CTXPROP_BUILDID            (SA_INT)11
  156. #define SA_CTXPROP_HTTPLOGFUNC        (SA_INT)12
  157. #define SA_CTXPROP_LICENSETYPE        (SA_INT)14
  158. #define SA_CTXPROP_AUTHLOGINS        (SA_INT)15
  159. #define SA_CTXPROP_NTAUTH            (SA_INT)16
  160. #define SA_CTXPROP_RADIUSAUTH        (SA_INT)17
  161. #define SA_CTXPROP_SQLAUTH            (SA_INT)18
  162. #define SA_CTXPROP_DOCSDIR            (SA_INT)19
  163. #define SA_CTXPROP_ALERTLOGFUNC        (SA_INT)20
  164.  
  165. /*
  166. ** Connection Properties
  167. */
  168. #define SA_CONNPROP_HOST            (SA_INT)1
  169. #define SA_CONNPROP_AGENT            (SA_INT)2
  170. #define SA_CONNPROP_REFERER            (SA_INT)3
  171. #define SA_CONNPROP_REQUEST            (SA_INT)4
  172. #define SA_CONNPROP_REQUESTMETHOD    (SA_INT)5
  173. #define SA_CONNPROP_USERNAME        (SA_INT)6
  174. #define SA_CONNPROP_NAME            (SA_INT)7
  175. #define SA_CONNPROP_PASSWORD        (SA_INT)8
  176. #define SA_CONNPROP_IPADDR            (SA_INT)9
  177. #define SA_CONNPROP_DOCSDIR            (SA_INT)10
  178. #define SA_CONNPROP_DOCSPATH        (SA_INT)11
  179. #define SA_CONNPROP_ROOTDIR            (SA_INT)12
  180. #define SA_CONNPROP_REQUESTHOST        (SA_INT)13
  181. #define SA_CONNPROP_PRIVS            (SA_INT)14
  182. #define SA_CONNPROP_GROUP            (SA_INT)15
  183. #define SA_CONNPROP_URL                (SA_INT)16
  184.  
  185. /*
  186. ** Scheduler Time Arguments
  187. */
  188. #define SA_SCHEDULETIME_TIMEOUT        (SA_INT)1        /* Every 2 minutes    */
  189. #define SA_SCHEDULETIME_HOURLY        (SA_INT)2        /* Every hour         */
  190. #define SA_SCHEDULETIME_DAILY        (SA_INT)3        /* Every day         */
  191. #define SA_SCHEDULETIME_WEEKLY        (SA_INT)4        /* Every week         */
  192. #define SA_SCHEDULETIME_MONTHLY        (SA_INT)5        /* Every month         */
  193.  
  194. /*
  195. ** Next Page Argument
  196. */
  197. #define SA_PAGE_ARG                    TEXT("RCpage")
  198. #define SA_REDIRECT_ARG                TEXT("RCredirect")
  199.  
  200. /*
  201. ** System Administrator & User Folders
  202. */
  203. #define SA_ADMIN_FOLDER                TEXT("sysadmin")
  204. #define SA_USER_FOLDER                TEXT("sysuser")
  205.  
  206. /*
  207. ** Default group
  208. */
  209. #define SA_DEFAULT_GROUP            TEXT("other")
  210.  
  211. /*
  212. ** RPC authorization types
  213. */
  214. #define SA_AUTHORIZATION_ALL        (SA_INT)0        /* All clients */
  215. #define SA_AUTHORIZATION_USER        (SA_INT)1        /* Logged in users only */
  216. #define SA_AUTHORIZATION_ADMIN        (SA_INT)2        /* Admin only */
  217. #define SA_AUTHORIZATION_SCRIPT        (SA_INT)3        /* Only inside scripts */
  218.  
  219. /*
  220. ** RPC parameters
  221. */
  222. typedef struct sa__init
  223. {
  224.     SA_BOOL            i_build;            /* Build the config dir if not found */
  225.     SA_VOID            *i_hWnd;            /* MS-Window handle */
  226.     SA_CHAR            *i_configdir;        /* Path to config dir */
  227.     SA_CHAR            *i_servicename;        /* Service name */
  228.     SA_VOID            *i_logfunc;            /* HTTP log callback */
  229.     SA_VOID            *i_statusfunc;        /* Server startup status callback */
  230. } SA_INIT;
  231.  
  232. /*
  233. ** RPC parameters
  234. */
  235. typedef struct sa__rpcparam
  236. {
  237.     SA_CHAR            *name;                /* Parameter name */
  238.     SA_BOOL            required;            /* Required or optional param */
  239.     SA_CHAR            *descr;                /* Parameter description */
  240. } SA_RPCPARAM;
  241.  
  242. typedef struct sa__arg
  243. {
  244.     SA_CHAR            *value;                /* Parameter value */
  245.     struct sa__arg    *next;
  246. } SA_ARG;
  247.  
  248. /*
  249. ** Scalar parameters
  250. */
  251. typedef struct sa__scalararg
  252. {
  253.     SA_CHAR            *name;                /* Argument name */
  254.     SA_CHAR            *descr;                /* Argument description */
  255. } SA_SCALARARG;
  256.  
  257. /*
  258. ** Request-handler modules
  259. */
  260. typedef struct sa__request
  261. {
  262.         SA_INT        method;                /* SA_METHOD_* */
  263.         SA_CHAR        *uri;                /* URI requested. */
  264.         SA_INT         urilen; 
  265.         SA_CHAR        *path;                /* path to requested URI. */
  266.         SA_INT         pathlen; 
  267.         SA_CHAR     *args;
  268.         SA_INT         argslen; 
  269.         SA_CHAR     *content;
  270.         SA_INT         contentlen;
  271.         SA_CHAR     *pathinfo;
  272.         SA_INT         pathinfolen;
  273. } SA_REQUEST;
  274.  
  275. #define SA_METHOD_GET                (SA_INT)1
  276. #define SA_METHOD_POST                (SA_INT)2
  277. #define SA_METHOD_PUT                (SA_INT)3
  278. #define SA_METHOD_HEAD                (SA_INT)4
  279. #define SA_METHOD_PATCH                (SA_INT)5
  280. #define SA_METHOD_PROPFIND            (SA_INT)6
  281. #define SA_METHOD_PROPPATCH            (SA_INT)7
  282. #define SA_METHOD_DELETE            (SA_INT)8
  283. #define SA_METHOD_CONNECT            (SA_INT)9
  284. #define SA_METHOD_COPY                (SA_INT)10
  285. #define SA_METHOD_MKCOL                (SA_INT)11
  286. #define SA_METHOD_MOVE                (SA_INT)12
  287. #define SA_METHOD_OPTIONS            (SA_INT)13
  288. #define SA_METHOD_TRACE                (SA_INT)14
  289. #define SA_METHOD_LOCK                (SA_INT)15
  290. #define SA_METHOD_UNLOCK            (SA_INT)16
  291. #define SA_METHOD_SEARCH            (SA_INT)17
  292. #define SA_METHOD_CHECKOUT            (SA_INT)18
  293. #define SA_METHOD_UNCHECKOUT        (SA_INT)19
  294. #define SA_METHOD_CHECKIN            (SA_INT)20
  295. #define SA_METHOD_MKRESOURCE        (SA_INT)21
  296. #define SA_METHOD_REPORT            (SA_INT)22
  297.  
  298. /*
  299. ** HTTP Log callback structure
  300. */
  301. typedef struct sa__httplog
  302. {
  303.         SA_INT         size; 
  304.         SA_INT         status; 
  305.         SA_CHAR        *method;
  306.         SA_CHAR     *timestamp;
  307.         SA_CHAR     *request;
  308.         SA_CHAR     *args;
  309.         SA_CHAR     *vhost;
  310.         SA_CHAR     *user;                /* User IP Address */
  311.         SA_CHAR        *username;
  312.         SA_CHAR        *referer;
  313.         SA_CHAR        *agent;
  314.  
  315.         /* Include system statistics.                                    */
  316.         SA_INT         allconns;             /* Total network connections    */
  317.         SA_INT         httpconns;             /* # of HTTP connections        */
  318.         SA_INT         threads;             /* Total threads                */
  319. } SA_HTTPLOG;
  320.  
  321. typedef struct sa__alertlog
  322. {
  323.         SA_CHAR     *timestamp;
  324.         SA_CHAR        *system;
  325.         SA_CHAR        *activity;
  326.         SA_CHAR        *msg;
  327.  
  328.         /* Include system statistics.                                    */
  329.         SA_INT         allconns;             /* Total network connections    */
  330.         SA_INT         httpconns;             /* # of HTTP connections        */
  331.         SA_INT         threads;             /* Total threads                */
  332. } SA_ALERTLOG;
  333.  
  334. /*
  335. ** Password Management
  336. */
  337. #define SA_PASSWD_FILE                TEXT("passwd")
  338. #define SA_MAX_NAME                    (SA_INT)64
  339. #define SA_MAX_PATH                    (SA_INT)512
  340. #define SA_MAX_VALUE                (SA_INT)1000
  341.  
  342. typedef struct sa__ftp
  343. {
  344.     SA_INT        privs;                                    /* FTP access */
  345.     SA_INT        ftpmax;                                    /* Maximum FTP MB */
  346.     SA_INT        dirlen;
  347.     SA_CHAR        dir[SA_MAX_NAME + 1];                    /* FTP root dir */
  348.     SA_INT        grouplen;
  349.     SA_CHAR        group[SA_MAX_NAME + 1];
  350. } SA_FTP;
  351.  
  352. typedef struct sa__mboxinfo
  353. {
  354.     SA_INT        folders;
  355.     SA_INT        readsize;
  356.     SA_INT        unreadsize;
  357. } SA_MBOXINFO;
  358.  
  359. typedef struct sa__sip
  360. {
  361.     SA_INT        unused;                                    /* SIP access */
  362. } SA_SIP;
  363.  
  364. typedef struct sa__passwd
  365. {
  366.     SA_INT        privs;                                    /* Upload privs */
  367.     SA_INT        ftpmax;                                    /* FTP max upload */
  368.     SA_INT        dirlen;
  369.     SA_INT        namelen;
  370.     SA_INT        grouplen;
  371.     SA_INT        passwordlen;
  372.     SA_CHAR        name[SA_MAX_NAME + 1];                    /* Symbolic name */
  373.     SA_CHAR        group[SA_MAX_NAME + 1];
  374.     SA_CHAR        password[SA_MAX_NAME + 1];
  375.     SA_CHAR        dir[SA_MAX_NAME + 1];                    /* FTP dir */
  376.  
  377. } SA_PASSWD;
  378.  
  379. typedef struct sa__user
  380. {
  381.     SA_INT        grouplen;
  382.     SA_INT        usernamelen;
  383.     SA_CHAR        group[SA_MAX_NAME + 1];
  384.     SA_CHAR        username[SA_MAX_NAME + 1];
  385. } SA_USER;
  386.  
  387. typedef struct sa__group
  388. {
  389.     SA_INT        namelen;
  390.     SA_CHAR        name[SA_MAX_NAME + 1];
  391. } SA_GROUP;
  392.  
  393. /*
  394. ** FTP/Document Manager/HTTP PUT Priviledges
  395. */
  396. #define SA_PRIV_NOACCESS            (SA_INT)0
  397. #define SA_PRIV_READONLY            (SA_INT)1
  398. #define SA_PRIV_READWRITE            (SA_INT)2
  399.  
  400. /*
  401. ** Server Types
  402. */
  403. #define SA_SERVERTYPE_HTTP            (SA_INT)100
  404. #define SA_SERVERTYPE_HTTPPROXY        (SA_INT)101
  405. #define SA_SERVERTYPE_FTP            (SA_INT)102
  406. #define SA_SERVERTYPE_SMTPPROXY        (SA_INT)103
  407. #define SA_SERVERTYPE_POP3PROXY        (SA_INT)104
  408. #define SA_SERVERTYPE_IMAP4PROXY    (SA_INT)105
  409. #define SA_SERVERTYPE_BRIDGEPROXY    (SA_INT)106
  410. #define SA_SERVERTYPE_NNTPPROXY        (SA_INT)107
  411. #define SA_SERVERTYPE_FTPPROXY        (SA_INT)108
  412. #define SA_SERVERTYPE_SOCKSPROXY    (SA_INT)109
  413. #define SA_SERVERTYPE_TELNETPROXY    (SA_INT)110
  414. #define SA_SERVERTYPE_REALPROXY        (SA_INT)111
  415. #define SA_SERVERTYPE_SMTP            (SA_INT)112
  416. #define SA_SERVERTYPE_POP3            (SA_INT)113
  417. #define SA_SERVERTYPE_IMAP4            (SA_INT)114
  418. #define SA_SERVERTYPE_TELNET        (SA_INT)115
  419. #define SA_SERVERTYPE_DNS            (SA_INT)116
  420. #define SA_SERVERTYPE_SIP            (SA_INT)117
  421. #define SA_SERVERTYPE_DHCP            (SA_INT)118
  422. #define SA_SERVERTYPE_TFTP            (SA_INT)119
  423. #define SA_SERVERTYPE_TCPPROXY        (SA_INT)120
  424. #define SA_SERVERTYPE_UDPPROXY        (SA_INT)121
  425.  
  426. /*
  427. ** Record Flags
  428. */ 
  429. #define SA_REC_CREATE                (SA_INT)0x0001
  430. #define SA_REC_DELETE                (SA_INT)0x0002
  431.  
  432.  
  433. /*
  434. ** Sambar Server callbacks
  435. */
  436. typedef SA_RETCODE                (* SA_INITFUNC)(SA_CTX *ctx);
  437. typedef SA_RETCODE                (* SA_EXITFUNC)(SA_CTX *ctx);
  438. typedef SA_RETCODE                (* SA_LOGINFUNC)(SA_CTX *ctx, SA_CONN *conn, 
  439.                                     SA_CHAR *username, SA_INT usernamelen, 
  440.                                     SA_CHAR *password, SA_INT passwordlen, 
  441.                                     SA_INT *infop);
  442. typedef SA_RETCODE                (* SA_LOGOUTFUNC)(SA_CTX *ctx, SA_CONN *conn);
  443. typedef SA_RETCODE                (* SA_PROFILEFUNC)(SA_CTX *ctx, SA_CONN *conn,
  444.                                     SA_INT action, SA_CHAR *name, 
  445.                                     SA_INT namelen, SA_VOID *datap);
  446. typedef SA_RETCODE                (* SA_REQUESTFUNC)(SA_CTX *ctx, SA_CONN *conn,
  447.                                     SA_CHAR *uri, SA_INT urilen, 
  448.                                     SA_PARAMS *params, SA_INT *infop);
  449. typedef SA_RETCODE                (* SA_RPCFUNC)(SA_CTX *ctx, SA_CONN *conn,
  450.                                     SA_PARAMS *params, SA_INT *infop);
  451. typedef SA_RETCODE                (* SA_SCALARFUNC)(SA_CTX *ctx, SA_CONN *conn,
  452.                                     SA_CHAR *filename, SA_ARG *args, 
  453.                                     SA_CHAR *value);
  454. typedef SA_RETCODE                (* SA_PROPFUNC)(SA_CTX *ctx, SA_VOID *argp, 
  455.                                     SA_CHAR *name, SA_CHAR *value);
  456. typedef SA_RETCODE                (* SA_FTPFUNC)(SA_CTX *ctx, SA_CHAR *name,
  457.                                     SA_INT namelen, SA_CHAR *password, 
  458.                                     SA_INT passwordlen, SA_FTP *ftpresp);
  459. typedef SA_RETCODE                (* SA_SIPFUNC)(SA_CTX *ctx, SA_CHAR *name,
  460.                                     SA_INT namelen, SA_CHAR *password, 
  461.                                     SA_INT passwordlen, SA_SIP *sipresp);
  462. typedef SA_RETCODE                (* SA_TELNETFUNC)(SA_CTX *ctx, SA_CHAR *name,
  463.                                     SA_INT namelen, SA_CHAR *password, 
  464.                                     SA_INT passwordlen);
  465. typedef SA_RETCODE                (* SA_MAILFUNC)(SA_CTX *ctx, SA_CHAR *name,
  466.                                     SA_INT namelen, SA_CHAR *password, 
  467.                                     SA_INT passwordlen);
  468. typedef SA_RETCODE                (* SA_NETCONNECTFUNC)(SA_CTX *ctx, 
  469.                                     SA_CHAR *ipaddr, SA_INT servertype);
  470. typedef SA_RETCODE                (* SA_HTTPPROXYFUNC)(SA_CTX *ctx, SA_CONN *conn,
  471.                                     SA_CHAR *host, SA_INT hostlen,
  472.                                     SA_CHAR *url, SA_INT urllen);
  473. typedef SA_RETCODE                (* SA_ENVTFUNC)(SA_CTX *ctx, SA_CONN *conn,
  474.                                     SA_CHAR *buffer, SA_INT buflen, 
  475.                                     SA_CHAR *data);
  476. typedef SA_RETCODE                (* SA_MODULEFUNC)(SA_CTX *ctx, SA_CONN *conn,
  477.                                     SA_REQUEST *request, SA_INT *infop);
  478. typedef SA_VOID                    (* SA_HTTPLOGFUNC)(SA_CTX *ctx, 
  479.                                     SA_HTTPLOG *httplog);
  480. typedef SA_VOID                    (* SA_ALERTLOGFUNC)(SA_CTX *ctx, 
  481.                                     SA_ALERTLOG *alertlog);
  482. typedef SA_RETCODE                (* SA_SCHEDULEFUNC)(SA_CTX *ctx, SA_CHAR *name,
  483.                                     SA_VOID *argp);
  484. typedef SA_VOID                    (* SA_RASFUNC)(SA_CTX *ctx, SA_CHAR *ip,
  485.                                     SA_CHAR *previp, SA_BOOL connected);
  486. typedef SA_VOID                    (* SA_STATUSFUNC)(SA_CTX *ctx, SA_CHAR *status);
  487.  
  488.  
  489. /*
  490. ** Sambar Server Function Prototypes
  491. */
  492. #ifdef    WIN32
  493. #define SA_PUBLIC                __cdecl
  494. #define SA_EXPORT                __declspec(dllexport)
  495. #else    /* UNIX */
  496. #define SA_PUBLIC
  497. #define SA_EXPORT
  498. #endif
  499.  
  500. #if defined(__cplusplus)
  501. extern "C" {
  502. #endif    /* defined(__cplusplus) */
  503.  
  504. /*
  505. ** Sambar Server startup/shutdown
  506. */
  507. extern SA_RETCODE SA_EXPORT        sa_server(
  508.                                 SA_VOID            *hWnd
  509.                                 );
  510. extern SA_RETCODE SA_EXPORT        sa_server2(
  511.                                 SA_VOID            *serverinit
  512.                                 );
  513. extern SA_BOOL SA_EXPORT        sa_stopped(
  514.                                 void
  515.                                 );
  516. extern SA_RETCODE SA_EXPORT        sa_shutdown(
  517.                                 SA_BOOL            restart
  518.                                 );
  519. extern SA_RETCODE SA_EXPORT        sa_pause(
  520.                                 SA_BOOL            unpause
  521.                                 );
  522. /*
  523. ** General Functions
  524. */
  525.  
  526. extern SA_RETCODE SA_EXPORT        sa_cgi_exec(
  527.                                 SA_CTX            *ctx,
  528.                                 SA_CONN            *conn,
  529.                                 SA_REQUEST        *request
  530.                                 );
  531. extern SA_RETCODE SA_EXPORT        sa_wincgi_exec(
  532.                                 SA_CTX            *ctx,
  533.                                 SA_CONN            *conn,
  534.                                 SA_REQUEST        *request
  535.                                 );
  536. extern SA_RETCODE SA_EXPORT        sa_cmd_init(
  537.                                 SA_CTX            *ctx,
  538.                                 SA_CHAR            *name,
  539.                                 SA_RPCPARAM        *params,
  540.                                 SA_INT            numparams,
  541.                                 SA_INT            authorization,
  542.                                 SA_CHAR            *descr,
  543.                                 SA_RPCFUNC        funcp
  544.                                 );
  545. extern SA_RETCODE SA_EXPORT        sa_scalar_init(
  546.                                 SA_CTX            *ctx,
  547.                                 SA_CHAR            *name,
  548.                                 SA_SCALARARG    *args,
  549.                                 SA_INT            numargs,
  550.                                 SA_CHAR            *descr,
  551.                                 SA_SCALARFUNC    funcp
  552.                                 );
  553. extern SA_RETCODE SA_EXPORT        sa_props_load(
  554.                                 SA_CTX            *ctx,
  555.                                 SA_CHAR            *filename,
  556.                                 SA_CHAR            *section,
  557.                                 SA_VOID            *argp,
  558.                                 SA_PROPFUNC        funcp
  559.                                 );
  560. extern SA_RETCODE SA_EXPORT        sa_send_file(
  561.                                 SA_CONN            *conn,
  562.                                 SA_CHAR            *filename
  563.                                 );
  564. extern SA_RETCODE SA_EXPORT        sa_send_macro(
  565.                                 SA_CONN            *conn,
  566.                                 SA_CHAR            *macroname
  567.                                 );
  568. extern SA_RETCODE SA_EXPORT        sa_send_header(
  569.                                 SA_CONN            *conn,
  570.                                 SA_CHAR            *buffer,
  571.                                 SA_INT            buflen
  572.                                 );
  573. extern SA_RETCODE SA_EXPORT        sa_params(
  574.                                 SA_CTX            *ctx,
  575.                                 SA_CONN            *conn,
  576.                                 SA_PARAMS        **paramsp
  577.                                 );
  578. extern SA_RETCODE SA_EXPORT        sa_param(
  579.                                 SA_CTX            *ctx,
  580.                                 SA_PARAMS        *params,
  581.                                 SA_CHAR            *name,
  582.                                 SA_CHAR            **valuep,
  583.                                 SA_INT            *valuelenp
  584.                                 );
  585. extern SA_RETCODE SA_EXPORT        sa_param_set(
  586.                                 SA_CTX            *ctx,
  587.                                 SA_PARAMS        *params,
  588.                                 SA_CHAR            *name,
  589.                                 SA_CHAR            *value,
  590.                                 SA_INT            valuelen
  591.                                 );
  592. extern SA_RETCODE SA_EXPORT        sa_state_get(
  593.                                 SA_CTX            *ctx,
  594.                                 SA_CONN            *conn,
  595.                                 SA_CHAR            *name,
  596.                                 SA_CHAR            **valuep,
  597.                                 SA_INT            *valuelenp
  598.                                 );
  599. extern SA_RETCODE SA_EXPORT        sa_state_set(
  600.                                 SA_CTX            *ctx,
  601.                                 SA_CONN            *conn,
  602.                                 SA_CHAR            *name,
  603.                                 SA_CHAR            *value,
  604.                                 SA_INT            valuelen
  605.                                 );
  606. extern SA_VOID SA_EXPORT        sa_log(
  607.                                 SA_CTX            *ctx,
  608.                                 SA_CHAR            *buffer
  609.                                 );
  610. extern SA_VOID SA_EXPORT        sa_log2(
  611.                                 SA_CTX            *ctx,
  612.                                 SA_INT            loglevel,
  613.                                 SA_CHAR            *buffer
  614.                                 );
  615. extern SA_VOID SA_EXPORT        sa_observe(
  616.                                 SA_CTX            *ctx,
  617.                                 SA_CHAR            *buffer
  618.                                 );
  619. extern SA_RETCODE SA_EXPORT        sa_include(
  620.                                 SA_CTX            *ctx,
  621.                                 SA_CONN            *conn,
  622.                                 SA_CHAR            *uri,
  623.                                 SA_CHAR            *args
  624.                                 );
  625. extern SA_RETCODE SA_EXPORT        sa_get_macro(
  626.                                 SA_CTX            *ctx,
  627.                                 SA_CHAR            *macroname,
  628.                                 SA_CHAR            **macrop,
  629.                                 SA_INT            *macrolenp
  630.                                 );
  631. extern SA_RETCODE SA_EXPORT        sa_get_mime(
  632.                                 SA_CTX            *ctx,
  633.                                 SA_CHAR            *name,
  634.                                 SA_INT            namelen,
  635.                                 SA_CHAR            **mimetypep
  636.                                 );
  637. extern SA_RETCODE SA_EXPORT        sa_get_realpath(
  638.                                 SA_CTX            *ctx,
  639.                                 SA_CONN            *conn,
  640.                                 SA_CHAR            *name,
  641.                                 SA_INT            namelen,
  642.                                 SA_CHAR            *path,
  643.                                 SA_INT            maxpath
  644.                                 );
  645. extern SA_RETCODE SA_EXPORT        sa_get_realpath2(
  646.                                 SA_CTX            *ctx,
  647.                                 SA_VOID            *vhost,
  648.                                 SA_CHAR            *name,
  649.                                 SA_INT            namelen,
  650.                                 SA_CHAR            *path,
  651.                                 SA_INT            maxpath
  652.                                 );
  653. extern SA_RETCODE SA_EXPORT        sa_get_userpath(
  654.                                 SA_CTX            *ctx,
  655.                                 SA_CONN            *conn,
  656.                                 SA_CHAR            *dir,
  657.                                 SA_CHAR            *path,
  658.                                 SA_INT            maxpath
  659.                                 );
  660. extern SA_INT SA_EXPORT            sa_wildcmp(
  661.                                 SA_CTX            *ctx,
  662.                                 SA_CHAR            *wildstr,
  663.                                 SA_INT            wildstrlen,
  664.                                 SA_CHAR            *arg,
  665.                                 SA_INT            arglen
  666.                                 );
  667. extern SA_RETCODE SA_EXPORT        sa_schedule_task(
  668.                                 SA_CTX            *ctx,
  669.                                 SA_CHAR            *name,
  670.                                 SA_SCHEDULEFUNC    func,
  671.                                 SA_VOID            *argp,
  672.                                 SA_INT            when
  673.                                 );
  674.                                 
  675.  
  676. /*
  677. ** Mail Utility Functions
  678. */
  679. extern SA_RETCODE SA_EXPORT        sa_smtpmail(
  680.                                 SA_CTX            *ctx,
  681.                                 SA_CONN            *conn,
  682.                                 SA_CHAR            *username,
  683.                                 SA_CHAR            *password,
  684.                                 SA_CHAR            *from,
  685.                                 SA_CHAR            *tolist,
  686.                                 SA_CHAR            *cclist,
  687.                                 SA_CHAR            *bcclist,
  688.                                 SA_CHAR            *subject,
  689.                                 SA_CHAR            *message,
  690.                                 SA_CHAR            *messagemime,
  691.                                 SA_CHAR            *attachment,
  692.                                 SA_CHAR            *attachmime
  693.                                 );
  694.  
  695. extern SA_RETCODE SA_EXPORT        sa_mbox_create(
  696.                                 SA_CTX            *ctx,
  697.                                 SA_CHAR            *user
  698.                                 );
  699. extern SA_RETCODE SA_EXPORT        sa_mbox_delete(
  700.                                 SA_CTX            *ctx,
  701.                                 SA_CHAR            *user
  702.                                 );
  703. extern SA_BOOL SA_EXPORT        sa_mbox_exists(
  704.                                 SA_CTX            *ctx,
  705.                                 SA_CHAR            *user
  706.                                 );
  707. extern SA_RETCODE SA_EXPORT        sa_mbox_info(
  708.                                 SA_CTX            *ctx,
  709.                                 SA_CHAR            *user,
  710.                                 SA_MBOXINFO        *info
  711.                                 );
  712. extern SA_RETCODE SA_EXPORT        sa_mlist_delete(
  713.                                 SA_CTX            *ctx,
  714.                                 SA_CHAR            *user
  715.                                 );
  716.  
  717. /*
  718. ** Context Functions
  719. */
  720. extern SA_RETCODE SA_EXPORT        sa_ctx_global(
  721.                                 SA_CTX            **ctxp
  722.                                 );
  723. extern SA_RETCODE SA_EXPORT        sa_ctx_key(
  724.                                 SA_CTX            *ctx,
  725.                                 SA_INT            action,
  726.                                 SA_CHAR            *key,
  727.                                 SA_VOID            **valuep
  728.                                 );
  729. extern SA_RETCODE SA_EXPORT        sa_ctx_props(
  730.                                 SA_CTX            *ctx,
  731.                                 SA_INT            action,
  732.                                 SA_INT            property,
  733.                                 SA_BYTE            *buffer,
  734.                                 SA_INT            buflen,
  735.                                 SA_INT            *outlenp
  736.                                 );
  737. extern SA_RETCODE SA_EXPORT        sa_envt_init(
  738.                                 SA_CTX            *ctx,
  739.                                 SA_CHAR            *name,
  740.                                 SA_CHAR            *value
  741.                                 );
  742. extern SA_RETCODE SA_EXPORT        sa_envt_prop(
  743.                                 SA_CTX            *ctx,
  744.                                 SA_CONN            *conn,
  745.                                 SA_BYTE            *prop,
  746.                                 SA_INT            proplen,
  747.                                 SA_CHAR            *buffer
  748.                                 );
  749.  
  750. /*
  751. ** Connection Functions
  752. */
  753. extern SA_RETCODE SA_EXPORT        sa_conn_key(
  754.                                 SA_CONN            *conn,
  755.                                 SA_INT            action,
  756.                                 SA_CHAR            *key,
  757.                                 SA_VOID            **valuep
  758.                                 );
  759. extern SA_RETCODE SA_EXPORT        sa_conn_props(
  760.                                 SA_CONN            *conn,
  761.                                 SA_INT            action,
  762.                                 SA_INT            property,
  763.                                 SA_BYTE            *buffer,
  764.                                 SA_INT            buflen,
  765.                                 SA_INT            *outlenp
  766.                                 );
  767. extern SA_RETCODE SA_EXPORT        sa_conn_send(
  768.                                 SA_CONN            *conn,
  769.                                 SA_CHAR            *buffer,
  770.                                 SA_INT            buflen
  771.                                 );
  772. extern SA_RETCODE SA_EXPORT        sa_conn_flush(
  773.                                 SA_CONN            *conn
  774.                                 );
  775. extern SA_RETCODE SA_EXPORT        sa_conn_redirect(
  776.                                 SA_CONN            *conn,
  777.                                 SA_CHAR            *location,
  778.                                 SA_CHAR            *buffer,
  779.                                 SA_INT            buflen
  780.                                 );
  781. extern SA_RETCODE SA_EXPORT        sa_conn_login(
  782.                                 SA_CONN            *conn,
  783.                                 SA_CHAR            *user,
  784.                                 SA_INT            userlen,
  785.                                 SA_CHAR            *password,
  786.                                 SA_INT            passwordlen,
  787.                                 SA_INT            *infop
  788.                                 );
  789. extern SA_RETCODE SA_EXPORT        sa_conn_maptourl(
  790.                                 SA_CONN            *conn,
  791.                                 SA_CHAR            *path,
  792.                                 SA_CHAR            *buffer
  793.                                 );
  794. extern SA_RETCODE SA_EXPORT        sa_conn_maptodavdir(
  795.                                 SA_CONN            *conn,
  796.                                 SA_CHAR            *path,
  797.                                 SA_CHAR            *buffer
  798.                                 );
  799.  
  800. /*
  801. ** User/Password Management Routines
  802. */
  803. extern SA_RETCODE SA_EXPORT        sa_passwd_verify(
  804.                                 SA_CTX            *ctx,
  805.                                 SA_CHAR            *username,
  806.                                 SA_INT            usernamelen,
  807.                                 SA_CHAR            *password,
  808.                                 SA_INT            passwordlen,
  809.                                 SA_BOOL            *statusp
  810.                                 );
  811. extern SA_RETCODE SA_EXPORT        sa_passwd_lookup(
  812.                                 SA_CTX            *ctx,
  813.                                 SA_CHAR            *username,
  814.                                 SA_INT            usernamelen,
  815.                                 SA_PASSWD        *passwd
  816.                                 );
  817. extern SA_RETCODE SA_EXPORT        sa_passwd_sqlauth(
  818.                                 SA_CTX            *ctx,
  819.                                 SA_CONN            *conn,
  820.                                 SA_CHAR            *username,
  821.                                 SA_INT            usernamelen,
  822.                                 SA_CHAR            *password,
  823.                                 SA_INT            passwordlen,
  824.                                 SA_PASSWD        *passwd
  825.                                 );
  826. extern SA_RETCODE SA_EXPORT        sa_passwd_add(
  827.                                 SA_CTX            *ctx,
  828.                                 SA_CHAR            *username,
  829.                                 SA_INT            usernamelen,
  830.                                 SA_PASSWD        *passwd
  831.                                 );
  832. extern SA_RETCODE SA_EXPORT        sa_passwd_update(
  833.                                 SA_CTX            *ctx,
  834.                                 SA_CHAR            *username,
  835.                                 SA_INT            usernamelen,
  836.                                 SA_PASSWD        *passwd
  837.                                 );
  838. extern SA_RETCODE SA_EXPORT        sa_passwd_delete(
  839.                                 SA_CTX            *ctx,
  840.                                 SA_CHAR            *username,
  841.                                 SA_INT            usernamelen
  842.                                 );
  843. extern SA_RETCODE SA_EXPORT        sa_passwd_list(
  844.                                 SA_CTX            *ctx,
  845.                                 SA_USER            *users,
  846.                                 SA_INT            numusers,
  847.                                 SA_INT            *countp
  848.                                 );
  849.  
  850. /*
  851. ** Group Management Routines
  852. */
  853. extern SA_RETCODE SA_EXPORT        sa_group_add(
  854.                                 SA_CTX            *ctx,
  855.                                 SA_CHAR            *name,
  856.                                 SA_INT            namelen
  857.                                 );
  858. extern SA_RETCODE SA_EXPORT        sa_group_delete(
  859.                                 SA_CTX            *ctx,
  860.                                 SA_CHAR            *name,
  861.                                 SA_INT            namelen
  862.                                 );
  863. extern SA_RETCODE SA_EXPORT        sa_group_list(
  864.                                 SA_CTX            *ctx,
  865.                                 SA_GROUP        *groups,
  866.                                 SA_INT            numgroups,
  867.                                 SA_INT            *countp
  868.                                 );
  869.  
  870. /*
  871. ** Profile Functions
  872. */
  873. extern SA_RETCODE SA_EXPORT        sa_profile_init(
  874.                                 SA_CTX            *ctx,
  875.                                 SA_CHAR            *username,
  876.                                 SA_INT            usernamelen,
  877.                                 SA_PROFILE        **profilep
  878.                                 );
  879. extern SA_RETCODE SA_EXPORT        sa_profile_exit(
  880.                                 SA_CTX            *ctx,
  881.                                 SA_PROFILE        *profile
  882.                                 );
  883. extern SA_RETCODE SA_EXPORT        sa_profile_save(
  884.                                 SA_CTX            *ctx,
  885.                                 SA_PROFILE        *profile
  886.                                 );
  887. extern SA_RETCODE SA_EXPORT        sa_profile_get(
  888.                                 SA_CTX            *ctx,
  889.                                 SA_PROFILE        *profile,
  890.                                 SA_CHAR            *name,
  891.                                 SA_INT            namelen,
  892.                                 SA_CHAR            **datap
  893.                                 );
  894. extern SA_RETCODE SA_EXPORT        sa_profile_set(
  895.                                 SA_CTX            *ctx,
  896.                                 SA_PROFILE        *profile,
  897.                                 SA_CHAR            *name,
  898.                                 SA_INT            namelen,
  899.                                 SA_CHAR            *value
  900.                                 );
  901.  
  902.  
  903. /*
  904. ** Search Functions
  905. */
  906. extern SA_RETCODE SA_EXPORT        sa_search_add(
  907.                                 SA_CTX            *ctx,
  908.                                 SA_CHAR            *indexname,
  909.                                 SA_CHAR            *title,
  910.                                 SA_CHAR            *url,
  911.                                 SA_CHAR            *data,
  912.                                 SA_INT            datalen
  913.                                 );
  914.  
  915. /*
  916. ** RAS Functions
  917. */
  918. extern SA_RETCODE SA_EXPORT        sa_ras_disconnect(
  919.                                 SA_CTX            *ctx,
  920.                                 SA_BOOL            *activep
  921.                                 );
  922.  
  923. /*
  924. ** Record Functions
  925. */
  926. extern SA_RETCODE SA_EXPORT        sa_rec_init(
  927.                                 SA_CTX            *ctx,
  928.                                 SA_CHAR            *filename,
  929.                                 SA_INT            flags,
  930.                                 SA_INT            reclen,
  931.                                 SA_REC            **recp
  932.                                 );
  933. extern SA_RETCODE SA_EXPORT        sa_rec_exit(
  934.                                 SA_REC            *rec,
  935.                                 SA_INT            flags
  936.                                 );
  937. extern SA_RETCODE SA_EXPORT        sa_rec_insert(
  938.                                 SA_REC            *rec,
  939.                                 SA_BYTE            *data,
  940.                                 SA_INT            *idp
  941.                                 );
  942. extern SA_RETCODE SA_EXPORT        sa_rec_update(
  943.                                 SA_REC            *rec,
  944.                                 SA_INT            id,
  945.                                 SA_BYTE            *data
  946.                                 );
  947. extern SA_RETCODE SA_EXPORT        sa_rec_delete(
  948.                                 SA_REC            *rec,
  949.                                 SA_INT            id
  950.                                 );
  951. extern SA_RETCODE SA_EXPORT        sa_rec_fetch(
  952.                                 SA_REC            *rec,
  953.                                 SA_INT            id,
  954.                                 SA_BYTE            *data
  955.                                 );
  956. extern SA_RETCODE SA_EXPORT        sa_rec_next(
  957.                                 SA_REC            *rec,
  958.                                 SA_INT            lastid,
  959.                                 SA_BYTE            *data,
  960.                                 SA_INT            *idp
  961.                                 );
  962.  
  963. /*
  964. ** General Utilities
  965. */
  966. extern SA_INT SA_EXPORT            sa_dirsize(
  967.                                 SA_CHAR            *dirpath
  968.                                 );
  969. extern SA_INT SA_EXPORT            sa_dirfiles(
  970.                                 SA_CHAR            *dirpath
  971.                                 );
  972. extern SA_RETCODE SA_EXPORT        sa_gzip(
  973.                                 SA_CHAR            *filename,
  974.                                 SA_CHAR            *ext
  975.                                 );
  976. extern SA_RETCODE SA_EXPORT        sa_gunzip(
  977.                                 SA_CHAR            *filename,
  978.                                 SA_CHAR            *ext
  979.                                 );
  980. extern SA_RETCODE SA_EXPORT        sa_compress(
  981.                                 SA_BYTE            *in,
  982.                                 SA_INT            inlen,
  983.                                 SA_BYTE            *out,
  984.                                 SA_INT            *outlenp
  985.                                 );
  986. extern SA_RETCODE SA_EXPORT        sa_uncompress(
  987.                                 SA_BYTE            *in,
  988.                                 SA_INT            inlen,
  989.                                 SA_BYTE            *out,
  990.                                 SA_INT            *outlenp
  991.                                 );
  992. extern SA_RETCODE SA_EXPORT        sa_encrypt(
  993.                                 SA_CHAR            *arg,
  994.                                 SA_CHAR            *buffer,
  995.                                 SA_INT            maxlen
  996.                                 );
  997. extern SA_RETCODE SA_EXPORT        sa_decrypt(
  998.                                 SA_CHAR            *arg,
  999.                                 SA_CHAR            *buffer,
  1000.                                 SA_INT            maxlen
  1001.                                 );
  1002.  
  1003. #if defined(__cplusplus)
  1004. }
  1005. #endif    /* defined(__cplusplus) */
  1006.  
  1007. #endif /* __SAMBAR_H__ */
  1008.