Przeniosłem na razie bloga (i w sumie nie tylko) z Dreamhosta, z którego radośnie rezygnuję, na home.pl. Przenosiny odbyły się z problemami, konkretnie dwoma:

  1. nie mogłem się zalogować do panelu administracyjnego WordPressa
  2. spi… się kodowanie

Problemy naprawione, a dla potomności:

Problem pierwszy: problem z zalogowaniem się. Problemu by nie było, gdybym zostawił dokładnie taki sam prefix tabel jaki był na dreamhoście. Niestety, wpadłem na pomysł zmiany prefiksu, i tu się wszystko rozjechało. Trzeba było poza aktualizacją pliku wp-config.php (która była oczywista) zaktualizować także zawartośc tabel PREFIX_options i PREFIX_users, zmieniając nazwom opcji prefiksy ze starego (u mnie np wp_opcja) na nowy (w moim przypadku byłoby to coś na kształt urzeniawp_opcja). Bez tego wyświetla się w kółko komunikat że nie mam uprawnień do zobaczenia żadnej strony w panelu…

Problem drugi: kodowanie. Nie udało mi się tutaj zrobić żadnej sztuczki, żadnego prostego zabiegu, nic. W końcu po prostu na dumpie z bazy danych wykonałem szereg operacji podstawiania ‘krzaczków’ na odpowiadające im litery. Zmienionego dumpa wrzuciłem z powrotem do bazy, do tego dodałem opcję (mój plik konfiguracyjny ma kilka lat) DB_CHARSET do pliku konfiguracyjnego, i zaczęło działać poprawnie. Porażka troszkę, ale cóż robić :(

Na tą chwilę wszystko powinno już działać OK, i to zdecydowanie szybciej - Dreamhost do demonów szybkości raczej nie należy ;) Liczę też że dużo bardziej niezawodnie ;)

Jeszcze tylko dopowiem, że przy całej walce z Wordpressem na home, gdzie nie ma shella, wydatnie pomogła mi moja kolejna zabawka: wwwshell.php. Wbrew moim obawom, działa to całkiem nieźle, i gdyby nie brak historii i reakcji na enter po komendzie (tak, wiem, łatwo to naprawić zmieniając typ pola na <input type="text" />), to prawie nie byłoby różnicy ze zwykłym shellem ;)


Jako, że zbliża się koniec ważności mojego konta na DreamHost, a przedłużać go zamiaru nawet namniejszego nie mam, zaczęłem się przygotowywać do migracji. Jeszcze nie wiem gdzie pójdę sobie, ale pójdę na pewno :)

Jedną z rzeczy z tym związanych jest usunięcie mojego repo (repo.urzenia.net). Cała jego zawartość znajdzie się niedługo jako konkretne projekty na code.google.com. W sumie już wszystko przeniosłem, poza BlipApi.php, które też się tam niedługo znajdzie. Nowe adresy projektów to:

mPack
zestaw bibliotek pomocnych przy tworzeniu serwisów w PHP: m-pack.googlecode.com.
useless-scripts
kilka skryptów które wykorzystuje w mojej codziennej pracy na komputerze: useless-scripts.googlecode.com. Tutaj też dostał się mój ostatni “produkt” killer.pl.
WP Blip!
Plugin do WordPressa, wyświetlający na nim ostatnie wpisy z serwisu Blip!: wp-blip.googlecode.com.

Przed chwilą dokonałem jednej korekty w skrypcie: jako że czasem nie mogę się połączyć i pobrać blacklisty, stworzyłem możliwość 5-okrotnej (domyślnie - ustala to zmienna TRIES) próby pobrania blacklisty SBLAM!. Dopiero po pięciu próbach skrypt zakończy działalność. Każda kolejna próba jest opóźniona o domyślnie 5 (zmienna DELAY) sekund, przy czym każda kolejna próba dodaje do wartości samą siebie, czyli po drugim niepowodzeniu DELAY ustawi się na wartość 2*DELAY. Przykład:

  • pierwsza próba - z marszu
  • druga próba - po pięciu sekundach
  • trzecia próba - po dziesięciu sekundach
  • czwarta próba - po dwudziestu sekundach
  • piąta próba - po czterdziestu sekundach

Dodatkowym “fiuczerem” jest wywalenie stamtąd wszystkich polskich znaków - coś mi się wysypywał skrypt przez nie, a nie mam teraz czasu na debugowanie dlaczego.

Skrypt do pobrania z adresu: urzenia.net/wp-content/sblam_blacklist_update.txt.


porneL jakiś czas temu zaczął publikować czarną listę spamerów. Uznałem to za świetny pomysł z jego strony, wart wykorzystania. Chwilę później napisałem skrypcik, który pobiera aktualną blacklistę, i dodaje ją do pliku .htaccess na serwerze, blokującym odwiedzającym z tego adresu IP na dostanie się do naszej witryny. Oczywiście mowa tylko o spamerach :)

Skrypt jest bardzo prosty - pobiera blacklistę, dopisuje ją do .htaccess, robiąc wcześniej kopię zapasową, i kończy pracę. Równie prosta jest jego konfiguracja wewnątrz:

HTACCESS
wskazuje na plik .htaccess który będziemy uaktualniać. W przykładowym skrypcie jest ona generowana, jednak nie widzę przeszkód aby wpisać ją na sztywno, np: HTACCESS = '/home/user/public_html/.htaccess'.
BKPDIR
Katalog w którym zostanie utworzona kopia zapasowa .htaccess. Jeśli puste, przyjmuje że kopia zapasowa będzie tworzona w katalogu macierzystym obecnego .htaccess.
BLACKLIST
url do pliku z blacklistą
DEBUG
Jeśli przyjmie wartość prawdy logicznej (np, True, 1) to na stderr będzie wypisywać komunikaty z pracy skryptu.

Skrypt (jego już druga wersja) jest na licencji GPL v.2. Ja nie biorę odczywiście odpowiedzialności za jego nieprawidłowe działanie :) Ale wszelkie błędy i raporty można zgłaszać do mnie, a ja będę starał się je poprawiać :) Do pobrania stąd: urzenia.net/wp-content/sblam_blacklist_update.txt (warto zmienić rozszerzenie pliku na .py).

Jeszcze słówko o najlepszym użyciu:

Ja osobiście wstawiłem sobie do crona linijkę:

12 6 * * * /home/mysz/bin/sblam_blacklist_update.py

Dzięki czemu o godzinie 6.12 każdego dnia mam uaktualnianą blacklistę spamerów :)


dzieki sponsoringowi (;) ) sadu, uaktualnilem, a wrecz przepisalem skrypta perms. z nowych rzeczy: przelaczniki ‘-d’ i ‘-f’ mozna stosowac oddzielnie. jesli ktorys z nich nie zostanie podany, to prawa dla danej rzeczy nie zostana zmienione.
dodalem tez przelaczniki ‘-o’, ‘-a’, ‘-g’, ‘-b’, ktore odpowiadaja za zmiane wlasciciela i grupy pliku/katalogu. mozna tez ustalac, czy np. zmiana wlasciciela ma byc tylko dla plikow, tylko dla katalogow czy tez i dla plikow i dla katalogow.

dokladniejszy opis

na ta chwile wyszlo mi z tego fajne narzadko (imo of koz ;) ). dziala ladnie i sprawnie, ale oczywiscie wymaga jeszcze przetestowania w wiekszych warunkach bojowych ;) w czasie moich testow sprawdzalo sie ok.

najbardziej zadowolony jestem z tego, ze napisalem go zupelnie na sucho - tj. bez mozliwosci sprawdzania w trakcie czy dziala. w sadzie mam tylko windowsa, gdzie zmiana praw i wlasciciela niespecjalnie dziala. przetestowalem dopiero po powrocie do domu ;) i poza dwoma banalami (w sumie nie wiedzialem wczesniej, ze sys.exc_info()[1] zwraca obiekt, a nie tresc wyjatku). wiec styklo dodac str() i poszlo :) jestem z siebie dumny :P


kiedys napisalem sobie skrypcik, ktory mi sluzy jako ‘zolte karteczki’ do stosowania na konsoli - przy logowaniu sie na serwer wyswietlami co musze na nim zrobic, a czego nie zrobilem poprzednim razem ;)
wczoraj, jako ze mialem chwile w sadzie na ‘takie rzeczy’, odswiezylem go nieco i poprawilem i rozszerzylem o kilka drobiazgow. dziala calkiem fajnie imo ;) gdyby ktos sie chcial pobawic, testnac, czy po prostu uzywac, to mozna szukac po prawej stronie w menu, poddzial skrypty. wszelkie uwagi poprosze na maila, odnosnie dzialania, nie dzialania, lub ewentualnych rozszerzen programu ;)