00001
00002
00003
00012 #include "webcit.h"
00013
00014
00015 #define TRUE 1
00016 #define FALSE 0
00018 typedef unsigned char byte;
00029 void stuff_to_cookie(char *cookie, int session,
00030 char *user, char *pass, char *room)
00031 {
00032 char buf[SIZ];
00033 int i;
00034
00035 sprintf(buf, "%d|%s|%s|%s|", session, user, pass, room);
00036 strcpy(cookie, "");
00037 for (i=0; i<strlen(buf); ++i) {
00038 sprintf(&cookie[i*2], "%02X", buf[i]);
00039 }
00040 }
00041
00048 int xtoi(char *in, size_t len)
00049 {
00050 int val = 0;
00051 char c = 0;
00052 while (isxdigit((byte) *in) && (len-- > 0))
00053 {
00054 c = *in++;
00055 val <<= 4;
00056 val += isdigit((unsigned char)c)
00057 ? (c - '0')
00058 : (tolower((unsigned char)c) - 'a' + 10);
00059 }
00060 return val;
00061 }
00062
00074 void cookie_to_stuff(char *cookie, int *session,
00075 char *user, size_t user_len,
00076 char *pass, size_t pass_len,
00077 char *room, size_t room_len)
00078 {
00079 char buf[SIZ];
00080 int i, len;
00081
00082 strcpy(buf, "");
00083 len = strlen(cookie) * 2 ;
00084 for (i=0; i<len; ++i) {
00085 buf[i] = xtoi(&cookie[i*2], 2);
00086 buf[i+1] = 0;
00087 }
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 if (session != NULL)
00102 *session = extract_int(buf, 0);
00103 if (user != NULL)
00104 extract_token(user, buf, 1, '|', user_len);
00105 if (pass != NULL)
00106 extract_token(pass, buf, 2, '|', pass_len);
00107 if (room != NULL)
00108 extract_token(room, buf, 3, '|', room_len);
00109 }