Wireless PC lock
felipeЯ съм мале хакер!
Оо, да!
От ония готините, дето ровят в кода, а не от лошите, дето проникват в мрежи, хихи
В смисъл написах първото си нещо за Линукс. За една джаджа, за която нямаше софтуер, който да ми върши работа (откога искам да кажа това).
Бях поръчал на сестрата на Деси да ми донесе тази джаджа. Състои се от предавател и приемател на USB. Ръгваш приемателя в USB-то, тръгваш си с предавателя и на повече от няколко метра компютъра се заключва. Яко, но софтуерът, с който идва устройството е:
- грозен
- за Windows
- единственото, което прави е да заключи компютъра
А пък аз искам да е
- красиво
- за Linux
- да прави такива хубави неща като промяна на статуса на ICQ-то и спиране на музиката
Първо трябваше да го подкарам като устройство. Намерих един драйвер, ама с него не стана, случайно намерих друг, който като се вдигне и прави устройство /dev/lock0 и в тоя файл пише или един код, когато устройството е в обхват, или нула, ако не е.
Оставаше само да направя софтуер, който чете файла. Ама аз със С-то съм скаран. Но го имаше написано. За демон. Взех кода за четене на файла, но къде да го пъхна. Първо беше идеята за плъгин на GAIM. Взех един примерен плъгин на Perl, правих нещо по него, пъхнах го където пишеше, че трябва уж да са, ама нищо не стана. След време загрях – това е за GAIM 1.5, аз съм с 2.0 бета 5. Явно ще се чака, щото пък документация за плъгини на С въобще няма.
Следващата цел беше плъгин за rhythmbox-а. Първо страшна мъка да компилирам примерния плъгин. То не беха промени в configure и make скриптовете, то не беха develop пакети на GNOME-а…
После остана “само” да напиша кода. Примерният плъгин е празен. Почнах с него и гледах от плъгина за управление на rhythmbox-а с инфрачервено дистанционно. Накрая стигнах до една API функция, дето трябвало било да извиква дадена функция ако на даден файл/сокет нещо стане. Ами… не работеше. Абе аз как да го правя? Пуснах в плъгина да се върти безкраен цикъл и да проверява файла, ама той като не пуска управлението и не се изпълнява главния цикъл на събитията и програмата зависва(понеже е Линукс само програмата). Накрая из документацията на GTK открих линк към Main Event Loop и почнах да чета там. Хареса ми една функция, която задава дадена функция да се изпълнява на определен интервал. Написах я да проверява файла. Не работеше. Днес ме глождеше много и като отидох на работа влезнах през едно SSH да пробвам различни неща, карайки Деси да пуска и спира програмата за слушане на музика. Открих, че ползвам изоставена API функция. Използвах нова версия и в един момент Деси каза, че работело. Аз докато не се върнах да видя лично се смеех да се надявам. Оставаше само да се допише музиката не само да се спира като се отдалеча, но и да се включва като се приближа. В момента е точно така.
Остава само да направя така, че модулът като създаде динамично файла /dev/lock0 да бъде с права за четене от всички. Но това е бях кахър, до тогава ще си го променям ръчно при всяко пускане на Линукса.
Благодарности на хората от канал #rhythmbox, които ми помогнаха да компилирам примерния плъгин (и които никога няма да прочетат този блог, пък и не говорят български, но въпреки това – БЛАГОДАРЯ!).






