Today I had to install MySQL Proxy on one of our servers.

What I found was that the current stable version 0.7.2 requires more resent version of Glib2 then what comes with CentOS 5.4.

So here is what I did in order to build it with a different version of glib2 then the default installation:

LUA: download & install from source

  • Required packages: readline readline-devel
  • yum install readline readline-devel

MySQL proxy requires:

  • lua
  • glib2 > 2.16
  • libevent
  • libevent-devel
  • yum install libevent libevent-devel

Build glib:
./configure --prefix=/usr/local/glib2 --disable-selinux --disable-fam --enable-threads --enable-gc-friendly

Build mysql-proxy:

export GLIB_DIR='/usr/local/glib2'
export GLIB_CFLAGS="-I$GLIB_DIR/include/glib-2.0 -I$GLIB_DIR/lib/glib-2.0/include/"
export GMODULE_CFLAGS="-I$GLIB_DIR/include/glib-2.0 -I$GLIB_DIR/lib/glib-2.0/include/"
export GTHREAD_CFLAGS="-pthread -I$GLIB_DIR/include/glib-2.0 -I$GLIB_DIR/lib/glib-2.0/include/"
export GLIB_LIBS="-L$GLIB_DIR/lib -lglib-2.0"
export GMODULE_LIBS="-Wl,--export-dynamic -L$GLIB_DIR/lib -lgmodule-2.0 -ldl -lglib-2.0"
export GTHREAD_LIBS="-pthread -L$GLIB_DIR/lib -lgthread-2.0 -lglib-2.0"
./configure --prefix=/usr/local/mysql-proxy --with-lua
make -j4
make install

Posted by HackMan
Dated: 26th November 2009
Filled Under: Linux General, Technology
Comments: 1 Comment

Един силно интелектуален разговор между мениджъри:

[hackman] Ще ви подаря моя снимка в цял ръст…
[hackman] Да си я сложите във вшата стая :)
[hackman] Само като я гледате и ще работите по-добре :P
<[dev]> а не може ли само гол от кръста на долу и в гръб
<[dev]> ще вдига мотивацията
<[dev]> и други неща
<[dev]> …
[hackman] много космясъл моя гъз… ама щом ще дига мотивацията…
[hackman] ще викна колегата с големия Canonc да направи снимката :)
<[dev]> хери фетиш
<[dev]> той да не зуумне много че да ти влезе оня ми ти обектив
<[dev]> като на слон

Posted by HackMan
Dated: 27th July 2009
Filled Under: Uncategorized
Comments: 1 Comment

I started to use syscalls in Perl scripts a long time ago. One of the main issues I face every time I install a script on a new machine is creating Perl header files from the C headers.

It is supposed to be done very easy:

# cd /usr/include
# h2ph *.h
# h2ph */*.h

With this we should have our Perl headers generated… However I found that on many distributions, the system headers asm/unisd.h have their includes like this:

# ifdef __i386__
# include "unistd_32.h"
# else
# include "unistd_64.h"
# endif

This is a big problem as h2ph skips lines with quotes and it expects that the header files should be something like this:


# ifdef __i386__
# include <unistd_32.h>
# else
# include <unistd_64.h>
# endif

So I have to manually fix this stupid bug in order to use the syscalls I need.

What I mainly use from the syscalls are:

__NR_getpriority - used for renice
__NR_setpriority - used for renice
__NR_ioprio_get - used for ionice
__NR_ioprio_set - used for ionice

Posted by HackMan
Dated: 24th February 2009
Filled Under: Linux General, Technology
Comments: Post the 1st one!

Вчера си потвърдих хотелчето за P2P и на 25-26 ще съм в Търново :)

В допълнение на това вчера си намерих полети и хотел за Hacking At Random(http://har2009.org). Така, че и до Холандия ще се ходи Август месец :) Тъй като

И като капак на всичко са двете почивки, тази във Велинград която беше предния weekend и тази във Виена в началото на Април…

По всичко изглежда, че тази година ще ми е най-пълната с пътувания :)

Posted by HackMan
Dated: 20th February 2009
Filled Under: Uncategorized
Comments: Post the 1st one!

Тези дни много неща се случиха около апартамента ми :)

След цяла година мързел и нежелание да свърша каквото и да е около апартамента, последната седмица свърших страшно много :)

На първо място прибрах и подредих в спалнята. Толкова приятно не ми е било от много, много време :)

Миналата седминца си поръчах и платих шкафовете за кухнята след 2 месечно чакане на фирмата :( Тази седмица трябва да дойдат и да ми ги монтират :)

В Събота се разходих и си харесах холова гарнитура, като си купих 2 канапета, 3-ка и 2-ка с 2 футьойла.

Днес, свалих гипсокартона в кухнята и с брат ми напазарихме нов гипсокартон, и го подготвихме за монтаж. Изчистих в кухнята(много тежка задача). Изместих почти вскичко, което беше в кухнята и го стоварих в хола за да може като дойдат мебелите всичко да стане лесно.

Изхвърлих всички строителни боклуци, които имах от предният ремонт стоварени пред вратата.

Подготвям се утре да монтирам газовият бойлер. Остана да направя 2 тръби за свързване на бойлера и ще съм готов :)

Posted by HackMan
Dated: 9th February 2009
Filled Under: Uncategorized
Comments: Post the 1st one!

Разговор след събуждане по телефона в 2 сутринта :)

[kolegata> u da go eba :)
[kolegata> mi ok
[kolegata> pravq go togava
[kolegata> ako ima neshto shte ti svirq
[hackman> aaa… ai sq… az i samo s chekiq she se zadovolq… :)
[hackman> nqma nujda da se prestaravash :)
[kolegata> xaxaxaxax
[kolegata> axa
[hackman> chak da mi svirish :)
[kolegata> xaxa
[kolegata> ok :)
[kolegata> po4vam

Posted by HackMan
Dated: 30th January 2009
Filled Under: Uncategorized
Comments: 1 Comment

Вчера се чух със собственика на Data.bg. Хората си търсят администратор който да поддържа инфраструктурата им.

Ако има някой желаещ да се обади.

Posted by HackMan
Dated: 28th January 2009
Filled Under: Uncategorized
Comments: 3 Comments

Налага ни се скоро да мигрираме един web server. Но с цел по-лесно и сигурно мигриране решихме, че няма да сменяме DNS записите преди да са минали 24-48h. Това обаче наложи един нерпиятен проблем със статистиките за трафика към сайта :)
Всички request-и започват да идват от един адрес заради NAT-а който правим за да закараме трафика към новият сървър.
След доста мислене се отказах да правя каквото и да било за да реша този проблем…

Но вчера по случайност ми хрумна една идея която изглежда много добре.

Ако приемем, че имаме машина X, машина Y и в момента сайта се намира на машина X, то неможе просто да закараме целия трафик от един порт на машина X до същият порт на машина Y и връзката да се осъществи… Затова на мен ми хрумна следната гениално тъпа идея :). На машина X се пуска man-in-the-middle proxy което хваща http & https заявките, и във всяка заявка слага един допълнителен header със IP-то на посетителят. След това на машина У се слага още едно малко по-сложно man-in-the-middle proxy, то хваща дошлият пакет, маха header-а с IP-то и генерира пакет със Spoofed адрес към web server-а все едно е от съответното IP :) След това с 2 NAT-а закарваме отговорът от web server-а обратно на клиента :) Готиното на тази ситуация е, че ние си имаме сертификатите и просто използваме атаката за да си свършим работата :)

Като цяло решението е сложничко за реализация и затова не сме го правили… но идеята ми се струва доста добра :)

Posted by HackMan
Dated: 11th January 2009
Filled Under: Technology
Comments: 2 Comments

Днес реших да си подкарам UMTS картата която имам от фирмата. Под slack-а всеки път беше с доста аквилибристики при смяна на ядро :) Във федорката обаче се оказа страшно лесно.

  yum install comgt wvdial

копирах си wvdial.conf-а от slack-а създадох нов udev rules файл (/etc/udev/rules.d/48-umts.rules):

BUS=="usb", KERNEL=="ttyUSB0", SYSFS{interface}=="Data Interface", \
  SYMLINK+="umts", RUN+="/usr/local/sbin/mtel.sh"
BUS=="usb", KERNEL=="ttyUSB2", SYSFS{interface}=="Data Interface", \
  SYMLINK+="gsm"

Скрипта който се стартира е нещо много просто:

#!/bin/bash
finished=1
count=0
while [ "$finished" == 1 ] || [ "$count" < 5 ]; do
        if ( /usr/bin/comgt -d /dev/ttyUSB0 ); then
                finished=0
        fi
        let count++
        sleep 1
done
if [ "$finished" == 0 ]; then
        sleep 1
        /usr/bin/wvdial mtel
fi
Posted by HackMan
Dated: 29th December 2008
Filled Under: Fedora, Technology
Comments: 1 Comment

След почти година без блог най-накрая се навих да си направя подарък по празниците и да го дигна това нещо наново :)

Ха да ми е честит ;)

Posted by HackMan
Dated: 26th December 2008
Filled Under: Uncategorized
Comments: 4 Comments