Subversion Repositories Kolibri OS

Rev

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: