Subversion Repositories Kolibri OS

Rev

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