Rev 485 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; |
2 | ; Remote Control Center(Client) |
||
3 | ; |
||
4 | ; Автор: Hex |
||
5 | ; Сайт: www.mestack.narod.ru |
||
6 | ; |
||
7 | ; Описание: |
||
8 | ; Программа, предназначенная для управления удалённым компьютером.Клиентская |
||
9 | ; часть. |
||
10 | ; |
||
11 | ; Compile with FASM for Menuet |
||
12 | ; Компилируется FASM'ом для Менуэт ОС |
||
13 | ; |
||
14 | |||
15 | |||
16 | use32 |
||
17 | org 0x0 |
||
18 | |||
19 | db 'MENUET01' ; 8 byte id |
||
20 | dd 0x01 ; header version |
||
21 | dd START ; start of code |
||
22 | dd I_END ; size of image |
||
23 | dd 0x5000 ; memory for app |
||
24 | dd 0x5000 ; esp |
||
25 | dd 0x0 , 0x0 ; I_Param , I_Icon |
||
26 | |||
27 | include 'lang.inc' |
||
485 | heavyiron | 28 | include '..\..\..\macros.inc' |
31 | halyavin | 29 | |
30 | START: ; start of execution |
||
31 | |||
32 | mov eax,53 ; open socket |
||
33 | mov ebx,0 |
||
34 | mov ecx,0x6000 ; local port |
||
35 | mov edx,0x6100 ; remote port |
||
36 | mov esi,dword [remote_ip] ; remote IP |
||
485 | heavyiron | 37 | mcall |
31 | halyavin | 38 | |
39 | mov [socket], eax |
||
40 | |||
41 | mov eax,53 ; send connect code |
||
42 | mov ebx,4 |
||
43 | mov ecx,[socket] |
||
44 | mov edx,1 |
||
45 | mov esi,connect |
||
485 | heavyiron | 46 | mcall |
31 | halyavin | 47 | |
485 | heavyiron | 48 | red: |
31 | halyavin | 49 | call draw_window ; at first, draw the window |
50 | |||
51 | still: |
||
52 | |||
53 | mov eax,23 ; wait here for event |
||
54 | mov ebx,1 |
||
485 | heavyiron | 55 | mcall |
31 | halyavin | 56 | |
57 | cmp eax,1 ; redraw request ? |
||
58 | jz red |
||
59 | cmp eax,2 ; key in buffer ? |
||
60 | jz key |
||
61 | cmp eax,3 ; button in buffer ? |
||
62 | jz button |
||
63 | |||
64 | jmp still |
||
65 | key: |
||
66 | mov eax,2 |
||
485 | heavyiron | 67 | mcall |
31 | halyavin | 68 | jmp still |
69 | |||
70 | button: |
||
71 | mov eax,17 |
||
485 | heavyiron | 72 | mcall |
31 | halyavin | 73 | |
74 | cmp ah,1 ; button id=1 ? |
||
75 | jnz noclose |
||
76 | mov eax, 53 |
||
77 | mov ebx, 1 |
||
78 | mov ecx, [socket] |
||
485 | heavyiron | 79 | mcall |
80 | or eax,-1 |
||
81 | mcall |
||
31 | halyavin | 82 | noclose: |
83 | |||
84 | cmp ah,2 ; SEND SHUTDOWN COMMAND? |
||
85 | je send_shutdown |
||
86 | |||
87 | cmp ah,3 ; SEND REBOOT COMMAND? |
||
88 | je send_reboot |
||
89 | |||
90 | cmp ah,4 ; SEND SAVEFI COMMAND? |
||
91 | je send_savefi |
||
92 | |||
93 | cmp ah,5 ; SEND SAVEHI COMMAND? |
||
94 | je send_savehi |
||
95 | |||
96 | cmp ah,6 ; SEND HOTREBOOT COMMAND? |
||
97 | je send_hotreboot |
||
98 | |||
99 | cmp ah,7 ; SEND EXIT COMMAND? |
||
100 | je send_exit |
||
101 | |||
102 | jmp still |
||
103 | |||
104 | |||
105 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
106 | ;; ;; |
||
107 | ;; SEND COMMANDS TO SERVER ;; |
||
108 | ;; ;; |
||
109 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
110 | send_shutdown: |
||
111 | |||
112 | mov eax,53 ; SEND CODE TO REMOTE |
||
113 | mov ebx,4 |
||
114 | mov ecx,[socket] |
||
115 | mov edx,1 |
||
116 | mov esi,sen_shutdown |
||
485 | heavyiron | 117 | mcall |
31 | halyavin | 118 | |
119 | jmp still |
||
120 | |||
121 | send_reboot: |
||
122 | |||
123 | mov eax,53 ; SEND CODE TO REMOTE |
||
124 | mov ebx,4 |
||
125 | mov ecx,[socket] |
||
126 | mov edx,1 |
||
127 | mov esi,sen_reboot |
||
485 | heavyiron | 128 | mcall |
31 | halyavin | 129 | |
130 | jmp still |
||
131 | |||
132 | send_savefi: |
||
133 | |||
134 | mov eax,53 ; SEND CODE TO REMOTE |
||
135 | mov ebx,4 |
||
136 | mov ecx,[socket] |
||
137 | mov edx,1 |
||
138 | mov esi,sen_savefi |
||
485 | heavyiron | 139 | mcall |
31 | halyavin | 140 | |
141 | jmp still |
||
142 | |||
143 | send_savehi: |
||
144 | |||
145 | mov eax,53 ; SEND CODE TO REMOTE |
||
146 | mov ebx,4 |
||
147 | mov ecx,[socket] |
||
148 | mov edx,1 |
||
149 | mov esi,sen_savehi |
||
485 | heavyiron | 150 | mcall |
31 | halyavin | 151 | |
152 | jmp still |
||
153 | |||
154 | send_hotreboot: |
||
155 | |||
156 | mov eax,53 ; SEND CODE TO REMOTE |
||
157 | mov ebx,4 |
||
158 | mov ecx,[socket] |
||
159 | mov edx,1 |
||
160 | mov esi,sen_hotreboot |
||
485 | heavyiron | 161 | mcall |
31 | halyavin | 162 | |
163 | jmp still |
||
164 | |||
165 | send_exit: |
||
166 | |||
167 | mov eax,53 ; SEND CODE TO REMOTE |
||
168 | mov ebx,4 |
||
169 | mov ecx,[socket] |
||
170 | mov edx,1 |
||
171 | mov esi,sen_exit |
||
485 | heavyiron | 172 | mcall |
31 | halyavin | 173 | |
174 | jmp still |
||
175 | |||
176 | get_data: |
||
177 | |||
178 | mov eax,53 |
||
179 | mov ebx,3 |
||
180 | mov ecx,[socket] |
||
485 | heavyiron | 181 | mcall |
31 | halyavin | 182 | |
183 | mov [edi],bl |
||
184 | inc edi |
||
185 | |||
186 | mov eax,53 |
||
187 | mov ebx,2 |
||
188 | mov ecx,[socket] |
||
485 | heavyiron | 189 | mcall |
31 | halyavin | 190 | |
191 | cmp eax,0 |
||
192 | jne get_data |
||
193 | |||
194 | mov eax,4 |
||
195 | mov ebx,30*65536+30 |
||
196 | mov ecx,0x000000 |
||
197 | mov edx,I_END |
||
198 | mov esi,15 |
||
485 | heavyiron | 199 | mcall |
31 | halyavin | 200 | |
201 | jmp still |
||
202 | ; ********************************************* |
||
203 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
||
204 | ; ********************************************* |
||
205 | |||
206 | |||
207 | draw_window: |
||
208 | |||
209 | mov eax,12 ; function 12:tell os about windowdraw |
||
210 | mov ebx,1 ; 1, start of draw |
||
485 | heavyiron | 211 | mcall |
31 | halyavin | 212 | |
213 | ; DRAW WINDOW |
||
214 | mov eax,0 ; function 0 : define and draw window |
||
215 | mov ebx,100*65536+250 ; [x start] *65536 + [x size] |
||
216 | mov ecx,60*65536+280 ; [y start] *65536 + [y size] |
||
551 | spraid | 217 | mov edx,0x14ffffff ; color of work area RRGGBB |
485 | heavyiron | 218 | mov edi,title ; WINDOW LABEL |
219 | mcall |
||
31 | halyavin | 220 | |
485 | heavyiron | 221 | |
31 | halyavin | 222 | mov eax,8 ; CONTROL BUTTONS |
223 | mov ebx,25*65536+9 |
||
224 | mov ecx,113*65536+9 |
||
225 | mov edx,2 |
||
226 | mov esi,0x667788 |
||
227 | newbut: |
||
485 | heavyiron | 228 | mcall |
31 | halyavin | 229 | add ecx,16*65536 |
230 | inc edx |
||
231 | cmp edx,8 |
||
232 | jb newbut |
||
233 | |||
234 | cld |
||
485 | heavyiron | 235 | mov eax,4 |
31 | halyavin | 236 | mov ebx,25*65536+50 ; draw info text with function 4 |
237 | mov ecx,0x000000 |
||
238 | mov edx,text |
||
239 | mov esi,40 |
||
240 | newline: |
||
485 | heavyiron | 241 | mcall |
31 | halyavin | 242 | add ebx,16 |
243 | add edx,40 |
||
244 | cmp [edx],byte 'x' |
||
245 | jnz newline |
||
246 | |||
247 | mov eax,12 ; function 12:tell os about windowdraw |
||
248 | mov ebx,2 ; 2, end of draw |
||
485 | heavyiron | 249 | mcall |
31 | halyavin | 250 | |
251 | ret |
||
252 | |||
253 | |||
254 | ; DATA AREA |
||
255 | |||
256 | |||
257 | text: |
||
132 | diamond | 258 | if lang eq ru |
31 | halyavin | 259 | db ' Время сервера: ' |
260 | db ' ' |
||
261 | db ' Меню управления сервером: ' |
||
262 | db ' ' |
||
263 | db ' - Выключить ' |
||
264 | db ' - Перезагрузить ' |
||
265 | db ' - Сохранить флоппи-имедж ' |
||
266 | db ' - Сохранить имедж Ж. диска ' |
||
267 | db ' - Горячий рестарт ядра ' |
||
268 | db ' - Закрытие серверной части ' |
||
269 | db ' ' |
||
270 | db ' Локальный адрес : 192.168.0.1 ' |
||
271 | db ' Удалённый адрес : 192.168.0.2 ' |
||
272 | db 'Адрес сервера - в конце исходника ' |
||
132 | diamond | 273 | db 'x' ; <- END MARKER, DONT DELETE |
31 | halyavin | 274 | |
132 | diamond | 275 | else |
276 | db ' On server: ' |
||
277 | db ' ' |
||
278 | db ' Server control menu: ' |
||
279 | db ' ' |
||
280 | db ' - Shutdown ' |
||
281 | db ' - Reboot ' |
||
282 | db ' - Save ramdisk image to floppy ' |
||
283 | db ' - Save ramdisk image to hard disk ' |
||
284 | db ' - Kernel restart ' |
||
285 | db ' - Close server part ' |
||
286 | db ' ' |
||
287 | db ' Local address : 192.168.0.1 ' |
||
288 | db ' Remote address : 192.168.0.2 ' |
||
289 | db 'Address of server is in end of source ' |
||
290 | db 'x' ; <- END MARKER, DONT DELETE |
||
291 | end if |
||
31 | halyavin | 292 | |
485 | heavyiron | 293 | title db 'Remote Control Center(Client)',0 |
31 | halyavin | 294 | |
485 | heavyiron | 295 | |
31 | halyavin | 296 | socket dd 0x0 |
297 | |||
298 | remote_ip db 192,168,0,2 |
||
299 | |||
300 | sen_shutdown db 'S' |
||
301 | sen_reboot db 'R' |
||
302 | sen_savefi db 'F' |
||
303 | sen_savehi db 'H' |
||
304 | sen_hotreboot db 'O' |
||
305 | sen_exit db 'E' |
||
306 | connect db 'C' |
||
307 | |||
308 | I_END:->-> |