2009. jún. 14.
OpenID hackolás WordPress-ben
Először is le kell tölteni az openid-s plugint: http://wordpress.org/extend/plugins/openid/
A telepítés a http://wordpress.org/extend/plugins/openid/installation/ oldalon olvasható módon történik.
Ezek után a probléma a delegálással lehet. Nekem a myopenid-s acc-cal nem működött elsőre. Azt hinné az ember, hogy ha a WordPress-ben bele megy a Felhasználók részben, ott rákattint a fiókjának szerkesztésére, majd az "OpenID Delegation" résznél megadja az openid-ját, akkor már szuperül megy a dolog. Hát nem! :(
A delegálás valami miatt itt nem jó. Ugyan elmentődik, meg minden, de ha megpróbálok bejelentkezni, akkor vagy error-t dob, vagy egy új user-t regel be, attól függően, hogy a beállításoknál engedélyezve van-e a regisztráció.
Az egész dolog csak akkor működik, ha a felhasználói fiók szerkesztésekor a Users menü résznél a "Your OpenIDs" pontra kattintva veszünk föl account-okat. Ezután rendesen megy a login.
Nem tudom, hogy ez csak a myopenid miatt van-e (írtak fórumon, vagy valahol, valami SSL-es bugot), vagy a centaur-os home-os cím miatt, de sikerült megoldani, szóval most boldog vagyok. :)
Igen, fizikát kéne tanulni :S
2009. jún. 6.
WordPress permalink beállítások Centaur-on
A beállítások látszólag jók voltak, a WordPress-nek volt írási joga is (ez sem egyszerű ám nálunk), létrejött a .htaccess fájl. Az Apache konfigurációjába is engedélyezve voltak a szükséges dolgok, amik a http://codex.wordpress.org/Using_Permalinks linken szerepelnek (mod_rewrite engedélyezve, FollowSymLink opció bekapcsolva, AllowOverride FileInfo, AllowOverride All, minden, ami kell), és mégsem működött jól az átírási szabály, a linkek halottak voltak.
Odáig fajult a dolog, hogy én is feltettem egy WordPress-t a home-omba (mindig ez a vége, ha megakarom oldani a dolgot), és elkezdtem játszani a home-omra vonatkozó Apache beállításokkal. A globális opciókat felülírva, csak az én könyvtáramra vonatkozóan beállítottam csak azokat a dolgokat, amiket a leírás is mondott, és láss csodát, működött.
Következő lépésként egyessével kapcsolgattam vissza a globális opciókat, és kiderült a hiba oka. Az Apache beállításokban engedélyezve volt a MultiViews opció, ami logikusan okozta a hibát. Kikapcsolás után rendesen működött a felhasználónak is.
Összefoglalva: ha nem megy a Permalink WordPress alatt, annak ellenére, hogy minden be van állítva (mod_rewrite, FollowSymLink, AllowOverride FileInfo, AllowOverride All), ellenőrizzük a MultiViews opciót is.
2009. ápr. 1.
Elegem van

Én nem értem, hogy történhetett már megint. Szilárd account-jával beléptek, és valahogy benne volt a sudoers-ben. A többit ki lehet találni.
Nincs sem időm, sem kedvem ehhez az egészhez. Azon gondolkodom, hogy lemondok a posztomról.
Április bolondja :)
A kódért köszönet Dolgos Dánielnek, és Tolnai Gábornak.
Hasonló megborulások várhatóak több KSzK által hostolt, üzemeltetett honlapon is a nap folyamán. :)
2009. febr. 14.
Címjegyzék visszaállítása a Roundcube Webmail-ben manuálisan
Jelen írás feltételezi, hogy rendelkezünk a régi adatbázisunkról biztonsági mentéssel!
A régi adatbázist elküldtem melegebb éghajlatra, és egy teljesen üreset hoztam létre. Ez természetesen azzal járt, hogy a benne levő címjegyzékek, felhasználók törlődtek. Tudom, hogy ennek sokan nem fognak örülni, de csak egy e-mail, és máris visszakerül minden szükséges, és pótolhatatlan adatuk.
Hogyan?
Egyszerűen. Tegyük fel, hogy megkaptuk Kala Pál nevű felhasználónktól a reklamációt, hogy márpedig nagyon gyorsan állítsuk helyre neki a címjegyzékét. A következőekben részletesen leírom, hogy miket kell végrehajtani, de előtte néhány megjegyzés a követhetőségért.
A roundcube_db a Roundcube-hoz tartozó aktuális adatbázisom neve, a roundcube_db_backup pedig a régi adatbázis, ezért ezeket tessék a saját konfigurációnknak megfelelőre cserélni. Az előforduló neveket, e-mail címeket szintén tessék cserélgetni értelem szerűen.
mysql -p
mysql> USE roundcube_db_backup;
mysql> SELECT * FROM users WHERE username = "kala.pal";
Ezek után egy ehhez hasonló kimenetet kapunk:
+---------+-----------+-----------------+-------+---------------------+---------------------+----------+--------------- ---------------------------+
| user_id | username | mail_host | alias | created | last_login | language | preferences |
+---------+-----------+-----------------+-------+---------------------+---------------------+----------+--------------- ---------------------------+
| 641 | kala.pal | imap.sch.bme.hu | | 2008-10-29 19:06:13 | 2009-02-12 10:54:23 | hu_HU | a:2:{s:16:"mes e_sort_order";s:4:"DESC";} |
+---------+-----------+-----------------+-------+---------------------+---------------------+----------+--------------- ---------------------------+
1 row in set (0.00 sec)
Ebből nekünk a felhasználó azonosítójára van szükségünk, amit a user_id oszlop tartalmaz. Esetünkben ez a 641.
mysql> SELECT * FROM contacts WHERE user_id = "641";
+------------+---------------------+-----+------------+-----------------------+-----------+---------+-------+---------+
| contact_id | changed | del | name | email | firstname | surname | vcard | user_id |
+------------+---------------------+-----+------------+-----------------------+-----------+---------+-------+---------+
| 345 | 2009-02-14 13:48:52 | 0 | Gép Elek | gep.elek@email.cim.hu | | | NULL | 641 |
| 543 | 2009-02-14 13:48:55 | 0 | Halász Gabriella | gaboo.mano@sehol.se | | | NULL | 641 |
| 578 | 2008-11-08 21:33:23 | 0 | [kszk] | kszk@mail.cim.hu | | | NULL | 641 |
+------------+---------------------+-----+------------+-----------------------+-----------+---------+-------+---------+
3 rows in set (0.00 sec)
Ezeket a sorokat kell majd a roundcube_db contacts táblájába bele tenni, de előtte még szükségünk van Kala Pál azonosítóira az aktuális adatbázisunkban.
mysql> USE roundcube_db;
mysql> SELECT * FROM users WHERE username = "kala.pal";
mysql> SELECT * FROM contacts;
Az utolsó parancs kiadása után nézzük meg, hogy mi a legutolsó contact_id, mert nekünk eggyel nagyobb értéket kell megadnunk az új adatok megadásánál. Az utolsó oszlopban kala.pal user_id-ját kell megadni, ami esetünkben most 2.
mysql> INSERT INTO contacts (contact_id, changed, del, name, email, firstname, surname, vcard, user_id) VALUES(3,"2008-11-08 21:33:23",0,"[kszk]","kszk@mail.cim.hu","","",NULL,2);
Ezt minden egyes sorral elvégezve felhasználónk már használhatja is újra a címjegyzékét.
2008. dec. 29.
Roundcube webmail telepítése, és frissítése
(Majdnem) Karácsonyi időtöltés gyanánt frissítenem kellett a szerveremen levő Roundcube Webmail ,,böngésző-alapú többnyelvű IMAP klienst''.
Ennek oka a Klaci által írt e-mail, amiből csak néhány sort idéznék:
,,Hatodik erzekem azt sugja, hogy lassan ideje lenne centauron roundcube-t frissiteni.
...
http://secunia.com/advisories/33169/
...
Amugy kellemes karacsonyt, es boldog uj evet mindenkinek! :)
"
Hát kellemest. Valójában már költözéskor meg kellett volna ejtenem a dolgot, de hajnali 3-kor már nem volt kedvem hozzákezdeni.
Előkészületek
Először gyártottam egy "Karbantartás alatt" lapot, amit szépen betettem a webmail-ek helyére. Így nézett ki a dolog:
Ezután készítettem backup-ot mindenről. Ez egy nagyon fontos lépés, hasznát is vettem a későbbiekben.
Nekem két változata volt a webmailnek. Volt egy "stable" a /var/roundcube könyvtárban, és egy "testing" a /var/www/vhost/roundcube könyvtárban. Ezeket letaroltam:
tar cvzf roundcube.20081224.tar.gz /var/roundcube/
tar cvzf roundcube.20081224.tar.gz /var/www/vhost/roundcube/
Majd a MySQL adatbázisokból is készítettem egy dump-ot:
mysqldump --user=root -p --opt roundcubemail | gzip -c -9 > /root/backup_roundcube_20081224/roundcube_20081224.sql.gz
mysqldump --user=root -p --opt rcwmtestingdb | gzip -c -9 > /root/backup_roundcube_20081224/roundcube_test_20081224.sql.gz
A Roundcube telepítése
A telepítés előtt ellenőrizni kell néhány előkövetelmény meglétét. Szükségünk van egy Apache webszerverre (jó esetben ilyennel már rendelkezünk :) ), a PHP 4.3.1-es verziójára (minimum, nekem 5.2.0-ás van) és PCRE-re (Perl Compatibile Regular Expression). Adatbázisnak MySQL, de más adatbázismotor is támogatott (pl. PostgreSQL).
A PHP beállításait nem árt ellenőrizni. A php.ini (/etc/php5/apache/php.ini) fájlban keressük meg a következő sorokat:
hibalog:
error_reporting = E_ALL & ~E_NOTICE
fájl feltöltés engedélyezése (levélmellékletek miatt):
file_uploads = On
fájl feltöltési limit (a mellékleteknek megfelelően, a levelező szerverhez szinkronizálva)
upload_max_filesize = 10M
Ha ezek megvannak, akkor kezdődhet a telepítés:
Szerezzük be a legújabb Roundcube verziót innen! (A post írásakor ez a 0.2-beta.)
Csomagoljuk ki a cél könyvtárba a fájlt! (Nekem ez most a /var/www/vhost/roundcube lesz.)
Ellenőrizzük le, hogy a roundcube könyvtár /temp és /logs alkönyvtáraihoz hozzá fér-e a webszerverünk! Ha nem, akkor
chown -R www-data roundcube_konyvtar/temp
chmod +w roundcube_konyvtar/temp
chown -R www-data roundcube_konyvtar/logs
chmod +w roundcube_konyvtar/logsHozzunk létre az adatbázist! Ehhez a következő lépéseket hajtsuk végre:
Indítsuk el a MySQL adatbázis kezelőt adminisztrációs jogokkal! (root-ként mysql -p, majd adjuk meg a jelszót!)
Hozzunk létre egy új adatbázist!
CREATE DATABASE roundcube_testing DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;Adjunk hozzá egy felhasználót, és jelszót az új adatbázisunkhoz!
GRANT ALL PRIVILEGES ON roundcube_testing.* TO roundcube_tester@localhost IDENTIFIED BY 'jelszó';
A 'jelszót' értelem szerűen cseréljük le ki!
Az esetleges hazárdok elkerülése végett adjuk ki a következő parancsot is:
FLUSH PRIVILEGES;
Hozzuk létre az adatbázis tábláit! Ehhez a következő parancsot adjuk ki:
mysql -p -D roundcube_testing < /roundcube_mappa/SQL/mysql5.initial.sql
, ahol a mysql5 helyett a saját adatbázis-kezelőnknek megfelelő változatot használjuk!
Nevezzük át a
/roundcube_mappa/config/*.inc.php.dist
fájlokat
/roundcube_mappa/config/*.inc.php-reSzerkesszük meg a /roundcube mappa/config/main.inc.php fájl tartalmát:
$rcmail_config['default_host'] = 'ssl://imap.sch.bme.hu:993'; //IMAP SSL támogatással
$rcmail_config['default_port'] = 993;
$rcmail_config['mail_domain'] = 'sch.bme.hu';
$rcmail_config['smtp_server'] = 'ssl://mail.sch.bme.hu';
$rcmail_config['smtp_port'] = 465; //SMTP SSL
$rcmail_config['session_lifetime'] = 10;
A szerverek elérési útját értelemszerűen cseréljük ki a nekünk megfelelőre!Adjuk meg a /roundcube_mappa/config/db.inc.php beállításait:
$rcmail_config['db_dnsw'] = 'mysql://roundcube_tester:jelszó@localhost/roundcube_testing';Kezdjünk el őrülni! Az új webes levelezőkliensünk elvileg működik. :)
A Roundcube frissítése
A Roundcube frissítése hasonló a telepítéshez, ám itt nem kell új adatbázist létrehozni, csak az adatbázist tábláit kell frissíteni a következő módon:
mysql -p -D roundcubemail < /var/roundcube/SQL/mysql.update.sql
Ezután a main.inc.php és db.inc.php fájlokat kell kicsit átalakítani, ahogy az már a telepítésnél is le van írva.
Személyes gondok :)
Miután frissítettem a webmail-t a következő error-ral találtam magam szemben. A bejelentkező felület szépen megjelent, ahol megadtam a szükséges sztringeket, ám a „Belépés” gombra kattintás után ezt kaptam:
SERVICE CURRENTLY NOT AVAILABLE!
Error No. [0x01F4]
Hosszas kutakodás, adatbázis törlés, újrapakolás, tesztelgetés, hazárdok észlelése, káromkodás után a következő megoldást találtam:
A main.inc.php fájlban a
$rcmail_config['enable_caching'] = TRUE;
sor értéket FALSE-ra állítottam!
Ezután a hiba megszűnt. Sikeresen frissítettük a kliensünket. :)
Az eredmények itt láthatóak (kipróbálni csak SCHAccount-tal rendelkezők tudják ;)):
https://webmail.sch.bme.hu
https://roundcube.sch.bme.hu
2008. nov. 15.
PostgreSQL adatbázis létrehozása és a hozzátartozó jogosultságok beállítása
A MySQL adatbázisok létrehozása egyszerű: elindítom a konzolt, kiadok néhány SQL parancsot, aztán már megy is az e-mail az eléréshez szükséges adatokkal. A PostgreSQL még ennél is egyszerűbbnek tűnt, hiszen itt a következőket kell csak tenni:
createuser -P -E
Ezután meg kell adni a felhasználó nevét, majd 3 kérdésre kell helyesen válaszolnunk :)
Shall the new role be a superuser? (y/n) (A helyes válasz az "n")
Shall the new role be allowed to create databases? (y/n) (A helyes válasz az "n")
Shall the new role be allowed to create more new roles? (y/n) (A helyes válasz az "n")
Természetesen mindezt akár kapcsolókkal is megadhatjuk:
createuser -P -E -S -D -R
Ezután létrehozzuk az adatbázist:
createdb -O felhasznalo -E utf8 adatbazis
A -O kapcsolóval megadjuk az adatbázis tulajdonosát, az -E kapcsolóval pedig szerintem mindenki rájön mit tudunk közölni a rendszerrel :)
Ezek után elvileg készen vagyunk, vagyis úgy gondoltam, hogy így van. Tévedtem.
A PostgreSQL rendszer jogosultság kezelése eltérő a már számomra "ismert" MySQL-től. Miután létrehoztam a felhasználót, és még magamnak is kreáltam egyet, majd egy adatbázist, amelynek a tulajdonosának a felhasználót adtam meg, meglepődve tapasztaltam, hogy én is hozzáférek az adatbázishoz. Sőt, nem csak hozzáférek, de új táblát is létre tudok benne hozni. Ugyan a már létezőket nem tudom módosítani, sem olvasni, de minden jogom megvan ahhoz, hogy jól telerakjam mindenféle crap-pel. Ez így nagyon nem jó!
A megoldásra először Cassus vezetett rá, aztán pedig Roadkill erősített meg a dologban. A PostgreSQL konfigurációs fájljai között van egy pg-hba.conf nevű. (Nekem a Debian rendszeremen a /etc/postgresql/8.1/main könyvtárba található) Ebben a fájlban lehet megadni, hogy melyik felhasználó honnan, és melyik adatbázishoz férjen hozzá. A következő sort kell beszúrni a többi közé:
local adatbazis felhasznalo md5
Ezután újra kell indítani az adatbázis rendszert, hogy az új szabályok érvénybe léphessenek:
/etc/init.d/postgresql-8.1 restart
Ha ezek után megpróbálunk egy olyan adatbázishoz hozzáférni, amihez nincs jogosultságunk, akkor a következő hibaüzenetet kapjuk:
psql: FATAL: no pg_hba.conf entry for host "[local]", user "reedcourty", database "adatbazis", SSL off
Ha valakinek kedve szottyanna egy kicsit megismerkedni a PostgreSQL-lel, akkor látogassa meg a http://www.postgresql.org oldalt, vagy pedig egyszerűen csak essen neki a http://www.postgresql.org/docs/8.1/interactive/index.html címen található dokumentációnak.
Források:
- sysadmin@sch :)
- http://www.postgresql.org/docs/8.1/interactive/app-createuser.html
- http://www.postgresql.org/docs/8.1/interactive/app-createdb.html
- http://www.postgresql.org/docs/8.0/static/client-authentication.html
2008. aug. 26.
PostScript fájlok importálása GIMP-be

Hm... Mondom jó, akkor telepítsünk Ghostscript-et. Letöltöm, telepítem, GIMP-et indítom, ps fájl megkeres, megnyit. Semmi, vagyis ugyanaz a hiba. A GS_PROG változót megpróbáltam beállítani, ennek a gswin32.exe-hez kell a teljes útvonalat megadni, de ez sem segített a problémán.
Néhány fórum bejegyzés után megtaláltam a megoldást. A GIMP /bin mappájába kell a Ghostscript /bin/gswin32c.exe fájl bemásolni, és így minden naccerűen müxik.
