Rev 7283 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3368 | leency | 1 | //Leency & SoUrcerer, LGPL |
2 | |||
3 | //libraries |
||
4509 | leency | 4 | #define MEMSIZE 0x100000 |
4152 | leency | 5 | #include "../lib/kolibri.h" |
6 | #include "../lib/strings.h" |
||
7 | #include "../lib/mem.h" |
||
8 | #include "../lib/dll.h" |
||
5499 | leency | 9 | #include "../lib/gui.h" |
7219 | leency | 10 | #include "../lib/fs.h" |
4152 | leency | 11 | #include "../lib/list_box.h" |
5499 | leency | 12 | #include "../lib/socket.h" |
4509 | leency | 13 | #include "../lib/draw_buf.h" |
14 | #include "../lib/cursor.h" |
||
5979 | leency | 15 | #include "../lib/collection.h" |
3368 | leency | 16 | //*.obj libraries |
5499 | leency | 17 | #include "../lib/obj/box_lib.h" |
18 | #include "../lib/obj/network.h" |
||
7283 | leency | 19 | #include "../lib/obj/http.h" |
7049 | leency | 20 | #include "../lib/obj/libio.h" |
21 | #include "../lib/obj/libimg.h" |
||
5499 | leency | 22 | #include "../lib/obj/netcode.h" |
23 | #include "../lib/obj/iconv.h" |
||
7506 | leency | 24 | //patterns |
7283 | leency | 25 | #include "../lib/patterns/history.h" |
26 | #include "../lib/patterns/http_downloader.h" |
||
3368 | leency | 27 | //images |
4152 | leency | 28 | byte letter_icons[sizeof(file "img/letter_icons.raw")] = FROM "img/letter_icons.raw"; |
29 | #include "img/letter_icons.h" |
||
3368 | leency | 30 | |
7283 | leency | 31 | _http http = {0}; |
32 | bool old_tag_parser_mode = false; |
||
33 | bool debug_mode = false; |
||
34 | char accept_language[]= "Accept-Language: ru\n"; |
||
7281 | leency | 35 | |
3368 | leency | 36 | //connection algorithm |
37 | enum { |
||
38 | STOP, |
||
4139 | hidnplayr | 39 | RESOLVE, |
40 | OPEN_CONNECTION, |
||
3368 | leency | 41 | GET_ANSWER_CONNECT, |
42 | SEND_USER, |
||
43 | GET_ANSWER_USER, |
||
44 | SEND_PASS, |
||
45 | GET_ANSWER_PASS, |
||
46 | SEND_NLIST, |
||
47 | GET_ANSWER_NLIST, |
||
48 | SEND_NSTAT, |
||
49 | GET_ANSWER_NSTAT, |
||
50 | SEND_RETR, |
||
4164 | leency | 51 | GET_ANSWER_RETR |
3368 | leency | 52 | }; |
53 | |||
54 | //WindowDefinitions |
||
55 | #define WIN_W 600 |
||
56 | #define WIN_H 440 |
||
57 | #define WIN_MIN_W 500 |
||
58 | #define WIN_MIN_H 380 |
||
5714 | punk_joker | 59 | #define LOGIN_HEADER "Login - Email client Liza 0.9.4" |
60 | #define OPTIONS_HEADER "Options - Email client Liza 0.9.4" |
||
61 | #define MAILBOX_HEADER "Mail Box - Email client Liza 0.9.4" |
||
4139 | hidnplayr | 62 | #define BUFFERSIZE 512 |
3368 | leency | 63 | proc_info Form; |
64 | #define LBUMP 0xFFFfff |
||
65 | |||
66 | //progress_bar definitions |
||
67 | char cur_st_percent; |
||
68 | dword cur_st_text; |
||
69 | |||
70 | //connection data |
||
71 | #define DEFAULT_POP_PORT 110; |
||
72 | char POP_server_path[128]; |
||
73 | dword POP_server_port; |
||
74 | char login[128]; |
||
75 | char request[256+22]; |
||
76 | int request_len; |
||
77 | char connection_status; |
||
4139 | hidnplayr | 78 | dword socketnum; |
3368 | leency | 79 | |
4139 | hidnplayr | 80 | sockaddr_in sockaddr; |
81 | |||
3368 | leency | 82 | int aim; |
83 | int ticks; |
||
84 | |||
4139 | hidnplayr | 85 | char immbuffer[BUFFERSIZE]; |
3368 | leency | 86 | |
4164 | leency | 87 | llist mail_list; |
88 | llist letter_view; |
||
89 | |||
4870 | leency | 90 | dword TAB_H = false; //19; |
91 | dword TAB_W = 150; |
||
92 | dword TOOLBAR_H = 31; //50; |
||
93 | dword STATUSBAR_H =15; |
||
94 | dword col_bg; |
||
95 | dword panel_color; |
||
96 | dword border_color; |
||
97 | |||
6932 | leency | 98 | bool open_in_a_new_window = false; |
99 | |||
5520 | leency | 100 | progress_bar wv_progress_bar = {0, 10, 83, 150, 12, 0, 0, 100, 0xeeeEEE, 8072B7EBh, 0x9F9F9F}; |
4870 | leency | 101 | |
102 | int http_transfer; |
||
4509 | leency | 103 | char version[]=" WebView 0.1"; |
104 | #include "..\TWB\TWB.c" |
||
105 | |||
3368 | leency | 106 | #include "settings.c" |
107 | #include "login.c" |
||
4164 | leency | 108 | #include "letter_attr.c" |
3368 | leency | 109 | #include "mail_box.c" |
110 | #include "parselist.c" |
||
111 | |||
4509 | leency | 112 | void main() { |
5651 | pavelyakov | 113 | |
4509 | leency | 114 | CursorPointer.Load(#CursorFile); |
5626 | leency | 115 | load_dll(boxlib, #box_lib_init,0); |
116 | load_dll(network_lib, #network_lib_init,0); |
||
117 | load_dll(netcode_lib, #base64_encode,0); |
||
118 | load_dll(libio, #libio_init,1); |
||
119 | load_dll(libimg, #libimg_init,1); |
||
5690 | leency | 120 | load_dll(iconv_lib, #iconv_open,0); |
3368 | leency | 121 | OpenMailDat(); |
7506 | leency | 122 | SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK); |
3368 | leency | 123 | LoginBoxLoop(); |
124 | } |
||
125 | |||
126 | |||
4509 | leency | 127 | int DefineWindow(dword wtitle) { |
5674 | pavelyakov | 128 | system.color.get(); |
6746 | leency | 129 | DefineAndDrawWindow(GetScreenWidth()-WIN_W/2,GetScreenHeight()-WIN_H/2, WIN_W, WIN_H, 0x73,system.color.work, 0,0); |
3368 | leency | 130 | DrawTitle(wtitle); |
131 | GetProcessInfo(#Form, SelfInfo); |
||
132 | if (Form.status_window>2) return 0; //rolled_up |
||
133 | if (Form.width < WIN_MIN_W) MoveSize(OLD,OLD,WIN_MIN_W,OLD); |
||
134 | if (Form.height < WIN_MIN_H) MoveSize(OLD,OLD,OLD,WIN_MIN_H); |
||
135 | return 1; |
||
136 | } |
||
137 | |||
138 | |||
4509 | leency | 139 | void OpenMailDat() { |
3368 | leency | 140 | char read_data[512], pass_b64[256]; |
141 | ReadFile(0, 512, #read_data, "/sys/network/mail.dat"); |
||
142 | if (!read_data) |
||
143 | { |
||
4169 | leency | 144 | strcpy(#email_text, "testliza@ya.ru"); |
4164 | leency | 145 | strcpy(#pass_text, "kolibri"); |
3368 | leency | 146 | } |
147 | else |
||
148 | { |
||
5625 | leency | 149 | strcpy(#pass_b64, strchr(#read_data, '\n')); |
3368 | leency | 150 | base64_decode stdcall (#pass_b64, #pass_text, strlen(#pass_b64)); |
5625 | leency | 151 | ESBYTE[strchr(#read_data, '\n')] = NULL; |
3368 | leency | 152 | strcpy(#email_text, #read_data); |
153 | } |
||
154 | pass_box.size = pass_box.pos = strlen(#pass_text); |
||
155 | login_box.size = login_box.pos = strlen(#email_text); |
||
156 | } |
||
157 | |||
4509 | leency | 158 | void SaveAndExit() { |
3368 | leency | 159 | char write_data[512], pass_b64[256]; |
4139 | hidnplayr | 160 | Close(socketnum); |
3368 | leency | 161 | strcpy(#write_data, #email_text); |
4153 | leency | 162 | chrcat(#write_data, '\n'); |
3368 | leency | 163 | base64_encode stdcall (#pass_text, #pass_b64, strlen(#pass_text)); |
164 | strcat(#write_data, #pass_b64); |
||
7227 | leency | 165 | CreateFile(strlen(#write_data)+1, #write_data, "/sys/network/mail.dat"); |
3368 | leency | 166 | ExitProcess(); |
167 | } |
||
168 | |||
4169 | leency | 169 | |
4509 | leency | 170 | int GetRequest(dword command, text) { |
4166 | leency | 171 | strcpy(#request, command); |
172 | if (text) |
||
173 | { |
||
174 | chrcat(#request, ' '); |
||
175 | strcat(#request, text); |
||
176 | } |
||
177 | strcat(#request, "\n"); |
||
178 | return strlen(#request); |
||
179 | } |
||
3368 | leency | 180 | |
4509 | leency | 181 | void StopConnect(dword message) { |
4166 | leency | 182 | if (message) notify(message); |
183 | aim = STOP; |
||
4169 | leency | 184 | Close(socketnum); |
4166 | leency | 185 | } |
186 | |||
7038 | leency | 187 | void EventShowLinkMenu(dword _left, _top) |
188 | { |
||
189 | //do nothing, stub |
||
190 | return; |
||
191 | } |
||
192 | |||
3368 | leency | 193 | stop:>> |
194 |