Subversion Repositories Kolibri OS

Rev

Rev 485 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.     mcall
  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.     mcall
  47.  
  48. red:
  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
  55.     mcall
  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
  67.     mcall
  68.     jmp  still
  69.  
  70. button:
  71.     mov  eax,17
  72.     mcall
  73.  
  74.     cmp  ah,1                  ; button id=1 ?
  75.     jnz  noclose
  76.     mov  eax, 53
  77.     mov  ebx, 1
  78.     mov  ecx, [socket]
  79.     mcall
  80.     or  eax,-1
  81.     mcall
  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
  117.   mcall
  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
  128.   mcall
  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
  139.   mcall
  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
  150.   mcall
  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
  161.   mcall
  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
  172.   mcall
  173.  
  174.   jmp  still
  175.  
  176.   get_data:
  177.  
  178.   mov  eax,53
  179.   mov  ebx,3
  180.   mov  ecx,[socket]
  181.   mcall
  182.  
  183.   mov  [edi],bl
  184.   inc  edi
  185.  
  186.   mov  eax,53
  187.   mov  ebx,2
  188.   mov  ecx,[socket]
  189.   mcall
  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
  199.   mcall
  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
  211.     mcall
  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]
  217.     mov  edx,0x14ffffff            ; color of work area RRGGBB
  218.     mov  edi,title                 ; WINDOW LABEL
  219.     mcall
  220.  
  221.                        
  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:
  228.     mcall
  229.     add  ecx,16*65536
  230.     inc  edx
  231.     cmp  edx,8
  232.     jb   newbut
  233.  
  234.     cld
  235.     mov  eax,4
  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:
  241.     mcall
  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
  249.     mcall
  250.  
  251.     ret
  252.  
  253.  
  254. ; DATA AREA
  255.  
  256.  
  257. text:
  258. if lang eq ru
  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 'Адрес сервера - в конце исходника       '
  273.     db 'x' ; <- END MARKER, DONT DELETE
  274.  
  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
  292.  
  293. title  db 'Remote Control Center(Client)',0
  294.  
  295.  
  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:
  309.