home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / CHIPCD_3_98.iso / software / testsoft / pcany / pca_80pl.exe / data.2 / data / COMPUSRV.SCR next >
Text File  |  1997-12-02  |  8KB  |  177 lines

  1. description "Przyk│adowy skrypt logowania do Compuserve"
  2. ;
  3. ; Jest to przyk│adowy skrypt, kt≤ry pokazuje jak zalogowaµ siΩ Compuserve.
  4. ; Twoja nazwa i has│o s╣ zapisane (w postaci zakodowanej) w pliku
  5. ; COMPUSRV.DAT. Je£li tego pliku nie ma, zostaniesz poproszony o podanie
  6. ; nazwy do logowania i has│a, gdy zostanie odebrane zapytanie.
  7. ; Skrypt ten wy£wietla wszystkie ekrany i automatycznie podaje Twoj╣ nazwΩ i has│o.
  8. ; Po wy£wietleniu g│≤wnego menu skrypt siΩ ko±czy.
  9. ; Mo┐esz odzyskaµ kontrolΩ nad klawiatur╣ po wy£wietleniu g│≤wnego menu, je£li
  10. ; naci£niesz ESC lub je£li przez 10 sekund nie pojawi siΩ ┐adna, rozpoznawalna komenda.
  11.  
  12. ;==========================================================================
  13. ;                          DEKLARACJA ZMIENNYCH
  14. ;==========================================================================
  15.       string _s1[120]                   ;│a±cuch do r≤┐nych zastosowa±
  16.       string _s2[120]                   ;│a±cuch do r≤┐nych zastosowa± 
  17.       string _name[30]                  ;tu jest przechowywana nazwa
  18.       string _password[16]              ;tu jest przechowywane has│o
  19.       string _datFile[80]               ;tu jest przechowywana nazwa pliku DAT
  20.       string _key[1]                    ;zmienna przechowuj╣ca naci£niΩcie klawisza
  21.       integer _i1                       ;zmienna ca│kowita do r≤┐nych zastosowa±
  22. ;==========================================================================
  23. ;                              PROCEDURA Gú╙WNA
  24. ;==========================================================================
  25.       clear screen                      ;wyczyszczenie ekranu
  26.  
  27.       _datFile = "COMPUSRV.DAT"         ;nazwa zakodowanego pliku danych
  28.  
  29.       find first _datFile               ;sprawdzenie istnienia pliku DAT
  30.       if ($result == 0) goto @l5        ;jeszcze go nie ma - zostanie utworzony p≤ƒniej
  31.  
  32.       open 1 _datFile                   ;otwarcie pliku
  33.       read line 1 _name 30 0            ;czytanie nazwy do logowania
  34. ;Dla zwiΩkszenia bezpiecze±stwa u┐ytkownik powinien wprowadziµ klucz kodowania
  35.       decrypt _name "MICKEY"            ;dekodowanie
  36.       trim _name                        ;usuniΩcie zbΩdnych spacji
  37.       read line 1 _password 16 0        ;czytanie has│a
  38.       decrypt _password "MICKEY"        ;dekodowanie
  39.       trim _password                    ;usuniΩcie zbΩdnych spacji
  40.       close 1                           ;zamkniΩcie pliku
  41.  
  42. @l5:
  43.       set cancel on                     ;w│╣czenie mo┐liwo£ci anulowania skryptu klawiszem ESC
  44.       on cancel goto @cancel
  45.  
  46.       on timeout goto @timeout          ;ustawienie ca│kowitego czasu oczekiwania
  47.       set timeout 20                    ;na 20 sekund
  48.  
  49.       set disconnect on                 ;ustawienie pu│apek roz│╣czenia
  50.       on disconnect goto @disconnect
  51.  
  52.       Send string "^C"                  ;powiadomienie o obecno£ci
  53.  
  54. @L10:                                       ;tu zaczyna siΩ g│≤wna pΩtla:
  55.       Gosub @getPrompt                  ;oczekiwanie zapytanie (monit)
  56.       if ($result < 0) goto @timeout    ;po przekroczeniu czasu oczekiwania, nastΩpuje zako±czenie skryptu
  57.  
  58. @L40:
  59.       index _s1 "User Id:"              ;po zapytaniu o identyfikator (nazwΩ do logowania) nastΩpuje wys│anie identyfikatora
  60.       if ($RESULT == 0) goto @L50
  61.       strcmp _name ""                   ;je£li nie ma nazwy
  62.       if ($result == 0) then gosub @getData ;zostaje ona wprowadzona przez u┐ytkownika
  63.       Send string _name                 ;wys│anie nazwy
  64.       Send string "^M"                  ;oraz kodu CR
  65.       Goto @L10
  66.  
  67. @L50:                                       ;po zapytaniu o has│o nastΩpuje wys│anie has│a
  68.       Set ignorecase off                ;ustawienie nierozr≤┐niania wielko£ci liter has│a
  69.       Index _s1 "Password:"             ;sprawdzenie has│a
  70.       If ($result == 0) goto @L55       ;skok je£li siΩ nie zgadza
  71.       Send string _password             ;w przeciwnym razie wys│anie has│a
  72.       Send string "^M"                  ;oraz kodu CR
  73.  
  74.       Goto @end
  75.  
  76. @L55:
  77.       Set ignorecase on
  78.       Goto @L10
  79.  
  80. @timeout:                                   ;przekroczenie czasu oczekiwania - zako±czenie skryptu
  81.       Type string "^M^J(przekroczenie czasu oczekiwania)^M^J"
  82.       Goto @end
  83.  
  84. @cancel:                                    ;anulowanie przez u┐ytkownika - zako±czenie skryptu
  85.       set cancel off
  86. @cancel1:
  87.       type string "^M^JAnulowanie przez u┐ytkownika^M^J"
  88.       type string "Roz│╣czyµ (T/N) ?: " ;pytanie o roz│╣czenie
  89.       _s1 = ""                          ;wyzerowanie zmiennej wej£ciowej
  90.       input _s1 1                       ;wprowadzenie odpowiedzi
  91.       upper _s1
  92.       strcmp _s1 "T"
  93.       if ($result == 0) goto @cancel2   ;je£li "Tak", skok do @cancel2, aby roz│╣czyµ
  94.       strcmp _s1 "N"
  95.       if ($result != 0) goto @cancel1   ;skok, gdy nie zosta│o wprowadzone ani "Tak", ani "Nie"
  96.       goto @end                         ;je£li "Nie", nie roz│╣cza i zostaje w trybie terminala
  97.                                                 
  98. @cancel2:
  99.       type string "^M^JROZúÑCZANIE..."
  100.       Hang
  101.       End
  102. @disconnect:                                ;roz│╣czenie - koniec skryptu
  103.       Type string "^M^J(Roz│╣czono)^M^J"
  104.       Goto @end
  105.  
  106. @end:
  107.       beep                              ;informacja dƒwiΩkowa o zako±czeniu skryptu
  108.       type string "^M^J[JESTEî W TRYBIE TERMINALA]^M^J"
  109.       end terminal
  110.  
  111.  
  112. ;==========================================================================
  113. ;                        PODPROGRAMY
  114. ;==========================================================================
  115.  
  116. ; "@getPrompt" - oczekuje na zapytanie i przechowuje wprowadzon╣ warto£µ w _s1.
  117. ;                Wszystkie odebrane linie s╣ wy£wietlane.
  118. ;                Warto£µ zwrotna: >=0, d│ugo£µ │a±cucha
  119. ;                         < 0, przekroczenie czasu
  120. @getPrompt:
  121.       on timeout goto @g2
  122.       wait receive 10                   ;oczekiwanie na odbi≤r
  123.       _s1 = ""
  124.       on timeout goto @g1
  125.       set timeout 2                     ;oczekiwanie przez 2 sekundy na liniΩ
  126.       receive line _s1                  ;(przekroczenie czasu po odbiorze monitu)
  127.       type line _s1                     ;pe│na linia - wy£wietlenie na ekranie
  128.       goto @getPrompt                   ;oczekiwanie na nastΩpn╣ liniΩ
  129.  
  130. @g1:                                        ;nie odebrano kodu LF - zapytanie (monit)
  131.       Type string _s1                   ;wy£wietlenie na ekranie
  132.       strlen _s1 _i1
  133.       goto @g3                          ;i powr≤t
  134.  
  135. @g2:                                        ;przekroczenie czasu oczekiwania bez odbioru czegokolwiek
  136.       _i1 = -1                          ;wyst╣pi│ b│╣d
  137. @g3:
  138.       on timeout goto @timeout          ;odtworzenie czasu oczekiwania
  139.       set timeout 20
  140.       return _i1                        ;zwraca d│ugo£µ linii lub -1 po przekroczeniu czasu oczekiwania
  141.  
  142.  
  143. ; @getData: wprowadzenie nazwy logowania i has│a przez u┐ytkownika oraz zapisanie tych danych na dysku.
  144. @getData:
  145.       set cancel off
  146. @gd2:
  147.       type string "^M^J^Jwprowadƒ identyfikator CompuServe: "
  148.       _s1 = ""                          ;zerowanie zmiennej wej£ciowej
  149.       input _s1 30                      ;wprowadzenie nazwy
  150.       _name = _s1
  151.       encrypt _s1 "MICKEY"              ;zakodowanie jej
  152.       type string "^M^J^Jwprowadƒ has│o: "
  153.       _s2 = ""
  154.       input _s2 16                      ;wprowadzenie has│a
  155.       _password = _s2
  156.       encrypt _s2 "MICKEY"              ;zakodowanie go
  157.  
  158.       type string "^M^J^JOK (T/N) ?:"   ;pytanie, czy dane s╣ OK
  159. @gd0:
  160.       input key _key                    ;wprowadzenie T lub N
  161.       upper _key                        ;zmiana na wielkie litery
  162.       strcmp _key "T"
  163.       if ($result == 0) goto @gd1       ;skok je£li "Tak", aby zapisaµ dane w pliku
  164.       strcmp _key "N"
  165.       if ($result != 0) goto @gd0       ;skok, gdy nie naci£niΩto T lub N
  166.       goto @gd2                         ;skok je£li "Nie", aby zapytaµ ponownie
  167. @gd1:                                       ;zapisanie danych w pliku
  168.       create 1 _datfile                 ;utworzenie pliku
  169.       write string 1 _s1                ;zapisanie nazwy
  170.       write string 1 "^@"               ;nastΩpnie znak "null"
  171.       write string 1 _s2                ;zapisanie has│a
  172.       write string 1 "^@"               ;nastΩpnie znak "null"
  173.       close 1                           ;zamkniΩcie pliku
  174.       set cancel on
  175.       return                            ;zako±czenie
  176.  
  177.