Jó volt, szép volt.
Kiemelt támogatók
BIG FISH
Pentaschool
WISH
Macasoft
G'Roby
23vnet
Kiskapu
 

  5k – górcső : fsguide 0.1

screenshotelkövette: Turcsányi Tamás
LEÍRÁS


Leírás

fsguide 0.1
-----------

Az fsguide egy webes Norton Commander klón, amely (többek között)
akkor hasznos, ha épp nem férhetünk hozzá shell segítségével a
szerveren levő fileokhoz, viszont alapvető fileműveleteket
szeretnénk végezni azon.

Értelemszerűen nem csak a webdokumentumok (pl. htdocs) alatti
könyvtárakat érhetjük el vele, hanem a filerendszerben bármit, ami az
adott felhasználó (pl. az Apache által használt www-data, wwwrun)
számára engedélyezve van. Ilyen módon megjeleníthető, másolható,
törölhető vele tetszőleges file, alkönyvtár.

Tudása röviden:
- kétpaneles megjelenés
- a fileok kijelölése checkboxok segítségével történik.
  Akár "keresztbemásolni" is lehet a két panel között,
  vagyis fileok mindkét panelbeli kijelölését követően másolást,
  mozgatást kezdeményezve egy menetben kerülnek át a fileok az
  átellenes oldalon mutatott alkönyvtárakba, illetve törlést
  kezdeményezve egyszerre törlődnek mindkét panelben levő fileok.
- alkönyvtárak és fileok rekurzív másolása, mozgatása, törlése
- fileok, alkönyvtárak átnevezése (több kijelölt file esetén is csak
  az első filet)
- alkönyvtárak létrehozása (két gombra bontva - alkönyvtár létrehozása
  a jobb oldalra illetve a bal oldalra)
- egysoros navigátor mindkét panelen, a navigátorsor alkönyvtár-
  tagjaira kattintva az alkönyvtárszerkezet adott szintjére léphetünk
- lehetőségek fileok megnyitásakor:
  - a .php és .inc kiterjesztésű fileok source highlighttal jelennek meg
  - a PHP által felismert képfileoknál a képeket mutatja meg,
    ezáltal sokat segíthet mondjuk Windowsos gépről tekintve meg egy
    Linuxos szerver filerendszerét: így ugyanis pl. képfileok
"távoli"
    válogatása azonnal megoldható a szerver teljes területén
    (persze a jogosultságok megfelelő kiosztása esetén))
  - minden egyéb filenál vizsgálatot végez a
    #09 (tab)
    #10 (CR)
    #12 (lapdobás)
    #13 (LF)
    karakterekre.
    Az eredménytől függően:
    -- Ha e karaktereken kívül más speciális karaktert nem talál, akkor
       a filet egyszerű szövegfileként jeleníti meg, amelyet 10000
       karakterenként lapozgatva lehet áttekinteni.
    -- Ha egyéb vezérlőkaraktereket vagy az ISO-8859-2-ben nem
       definiált karaktereket is talál, akkor a filet binárisként
       kezeli, és lapozgatva áttekinthetővé teszi. Ezesetben a
       vezérlőkarakterek, illetve az ISO-8859-2 kódlapban nem
       definiált karakterek (0x7F-0x9F) .-ra cserélten jelennek meg,
       amelyek így nem zavarhatják meg a böngészőket (ha egy binárisként
       megjelenített file forrását validátorral szeretnénk ellenőrizni,
       ügyeljünk arra, hogy közvetlenül a mutatott forrást
       validáljuk, vagyis ne másoljuk mondjuk notepadból clipboardon
       át más fileba, hiszen eközben az operációs rendszer
       "elkonvertálhatja" a karaktereket.
- Windows és Linux alatt is használható
- fileműveletek esetén támaszkodik a PHP saját hibaüzeneteire,
  amelyek minden fontos információt tartalmaznak arról, hogy miért nem
  sikerült a művelet. Ez alól van egy kivétel, a www-data számára
  jogosulatlan alkönyvtár esete, itt az adott panelben egy "R"
  betűvel tájékoztat a hibáról.

Függvények:
-----------
panel - egy panel tartalmát készíti el
c     - összeállítja a teljes HTML oldalt
cop   - fileok megjelenítését végzi el
cp    - másolást, mozgatást, törlést végző segédfüggvény
cdo   - wrapper a cp()-hez, feldolgozza a beérkező paramétereket
_d    - segédfüggvény, a dirname() időnként sajátos működésén segít
_r    - segédfüggvény, alkönyvtárnevek azonos kezeléséhez Win alatt
_fl   - a cdo() függvény számára összeállít egy tömböt a HTML
        checkboxok ($_REQUEST tömb) értékei alapján
_n    - c() segédfüggvénye, a navigátorsort állítja össze
_frm  - a formot állítja össze az alkönyvtárlétrehozáshoz és
        átnevezéshez

Telepítés:
----------
Az fsguidenak értelemszerűen semmi különös igénye nincs, de 
persze teljeskörű teszteléséhez ki kell alakítani a használt
szerveren egy tesztkörnyezetet, ahová másolni lehet vele, stb.

Az fsguide biztonságosabbá tétele demonstrációs célokra:
-------------------------------------------------------
Amennyiben az fsguide bemutatási célokból felkerül egy publikus
webszerverre, érdemes a webszervert előzetesen úgy konfigurálni, hogy
a webszerver által használt user (pl. www-data, wwrun, stb.) csak
azokra a helyekre juthasson el, ahová valóban szabad neki.

Ez egy megfelelően (=biztonságosan) beállított webszerveren nyilván
alapértelmezés szerint is adott (everyone jogai levéve onnan, ahol
nem szükséges, stb.), de ha mégsem, az fsguideban egy egyszerű
paraméterellenőrzéssel megelőzhető a hozzáférésbeli problémák
nagy része:

if (
    !eregi('^\/usr\/local\/httpd\/htdocs.*$',$lt) ||
    !eregi('^\/usr\/local\/httpd\/htdocs.*$',$rt) ||
    eregi('\.\.',$lt) ||
    eregi('\.\.',$rt)
   )
  die('access denied');

Természetesen további alkönyvtárak tetszés szerint engedélyezhetőek
további eregi() kifejezéseket beiktatva (de ellenőrizzük minden
esetben mind az $rt, mint az $lt változók tartalmát).
Ezt a kódrészletet kevésbé biztonságosan beállított webszerveren
érdemes a kód switch($t) előtti sorában elhelyezni.

Nem garantált, hogy ezen kódrészlet használatával minden lehetséges
betörési kísérletet, vagy nem rendeltetésszerű használatból (pl. URL
átírása) eredő problémát sikerül megelőzni.

Mindezek azonban kizárólag ---továbbfejlesztésre--- vonatkozó
lehetőségek, a program jószándékú és rendeltetésszerű használata
esetén nincs jelentőségük.

Készítette:
-----------
(C) 2003, Turcsányi Tamás -- trajic##kukac##demoscene.hu

///////////////////////////////////////////////////////////////////////////////

to get the readme file in English, check http://www.demoscene.hu/trajic
Valid XHTML 1.0! Valid CSS!