• email
  • facebook
  • linkedin
  • google+
  • pinteres

Webes felület a rendszert kiszolgáló adatbázishoz

Ez a leírás elavult, újabb változata megtalálható ezen a linken, amely Ubuntu 12.04-es telepítést mutat be.

MailAdmin felület

Készítettem egy kis alkalmazást/szkriptet Rubyban, aminek a segítségével weben keresztül is elérhetjük és módosíthatjuk a teljes levelezési rendszerünket kiszolgáló adatbázist.

A Ruby kód

A csomag, amely letölthető innen, három fájlt tartalmaz. Egy css fájlt, egy rhtml fájlt, amit a mod_ruby majd lefuttat (ez tulajdonképpen egy HTML fájl, ami ruby kódot is tartalmaz, hasonlatosan a PHP-hoz), és egy rb fájlt, ami a tulajdonképpeni alkalmazás, ebbe emeltem ki az osztályokat.

A kód felépítésének részleteit nem írom ide le -- a ruby fájl kommentezve van, onnan a lényeg kiderül. Mondjuk nem árt kis rubyban szerzett kódolási tapasztalat a megértéséhez.

Ha bárki bővíteni szeretné, csak bátran (a licensz GPL v2) -- örömmel látok minden javaslatot.

A szkript egyébként (ha jól tudom) egyetlen dolgot nem tud: az adatokat nem lehet törölni. Ennek több oka van. Egyrészt megszoktam, hogy adatbázisból, ha lehet, nem törlünk, inkább boolean active mezőkkel dolgozunk. Másrészt a törlés implementálása fölöslegesen nagy macera lett volna, mivel ha domain bejegyzést törlünk, hozzá kapcsolódóan át kell nézni a többi táblát is, és törölni a domainhez kapcsolódó e-mail cím és aliasz bejegyzéseket. Főleg ez utóbbinál lehet gond az automatizálással -- ezt jobb előbb mindig átnézni. És mindezt sokkal könnyebb adatbázisból elvégezni, az egyébként is ritka törlési alkalmakon, mint beilleszteni a kódba.

Példa egy domain törlésére, a hozzá kapcsolódó e-mail és aliasz bejegyzésekkel együtt SQL-ből:

DELETE FROM domains WHERE domain = 'pelda.hu'
DELETE FROM users WHERE email LIKE '%pelda.hu';
DELETE FROM aliases WHERE destination LIKE '%pelda.hu%';

A telepítés

A beüzemeléshez először is a Rubyt kell telepítenünk. Én a szerverre a következő csomagokat raktam fel:

  • ruby ruby1.8 ruby1.8-dev ruby1.8-examples ruby1.8-elisp
    • vele: libruby1.8
  • libapache2-mod-ruby
    • vele: libapache-ruby1.8
  • libpgsql-ruby1.8
  • irb1.8
    • vele: libreadline-ruby1.8
  • rdoc1.8
  • eruby
    • vele: liberuby

Persze ezekből nem kell mindegyik most nekünk, lehet értelemszerűen válogatni. Igaz, nem árt, ha va egy használható ruby környezetünk a szerveren.

A webes admin felület beüzemeléséhez töltsük le a csomagot, hozzunk létre valahol egy mailadmin könyvtárat, és helyezzük el benne a fájlokat. A mailadmin.rb fájlban adjuk meg az adatbázis felhasználót és jelszót:

PGconn.connect('localhost', 5432, '', '', 'mail', '*ADMINUSER*', '*ADMINPASS*')

Az Apache megfelelő konfigurációs fájljában pedig a kívánt VirtualHost bejegyzés alatt a következőkre van szükség a futtatáshoz:

<Directory /data/httpsdir/mailadmin>
  DirectoryIndex index.rhtml
  SetHandler None

  Options +ExecCGI
  AddType text/html .rhtml
  RubyRequire apache/eruby-run
  <Files *.rhtml>
    SetHandler ruby-object
    RubyHandler Apache::ERubyRun.instance
  </Files>
</Directory>

Az iménti beállítások mellett erősen ajánlott, hogy az oldalt autentikációval védjük és HTTPS-en futtassuk -- ne feledjük, ezek kritikus adatok, és nem szeretnénk, hogy illetéktelenek kavarjanak az adatbázisunkban!