Добрый день всем.
Давно читаю ваш форум, почерпнул много полезного в процессе своего развития. И вот столкнулся с проблемой, которую не могу решить с помощью поисковиков и своего личного опыта.Задача - установка прокси-гейта для msn&icq на роутер + cisco.
Выбор пал на imspector, http://www.imspector.org/
Т.к. протоколы, особенно icq, меняются нынче каждые 2-3 недели, необходимо поддерживать софт в актуальном состоянии.
Что имеем на входе:
1. Существует портированная версия в портах 0.5(patch-Makefile, patch-main.cpp, patch-imspector.conf). Версия старая, наличие старого протокола, отсутствия многих функций типа ssl & sert.
2. Существует информация по приведению сборки к корректному виду для BSD-систем, информация вся достаточно старая и в новых сборках не достаточно актуальная.
3. Необходимо устанавливать и обновлять версии из daily-snapshots. Текущий релиз версии 0.9.
Версию из портов я поставил, настроил, сначала пробовал закинуть трафик на неё ipnat & ipfw fwd, не срослось, запущенный инспектор в режиме дебага ругался что он не видит трафика pf, настроил pf - закрутил трафик, дело пошло. Но при попытке использовать скомпилированный icqprotocolplugin версии 0.5, естественно выбрасывал ошибку:
####################
# imspector -d
imspector: Protocol Plugin name: Gadu-Gadu IMSpector protocol plugin
imspector: Protocol Plugin name: ICQ-AIM IMSpector protocol plugin
imspector: Protocol Plugin name: IRC IMSpector protocol plugin
imspector: Protocol Plugin name: MSN IMSpector protocol plugin
imspector: Protocol Plugin name: Yahoo IMSpector protocol plugin
imspector: Bad-words: Loaded 86 bad-words, replacing with '*' and blocking at 1
imspector: Filter Plugin name: Bad-words IMSpector filter plugin
imspector: Misc: Blocking all file transfers
imspector: Misc: Blocking all webcams
imspector: Filter Plugin name: Misc IMSpector filter plugin
imspector: Listening on 0.0.0.0:16667
imspector: Logging Plugin name: Debug IMSpector logging plugin
imspector: Logging Plugin name: File IMSpector logging plugin
imspector: Connection from: 10.10.1.16:1904
imspector: ICQ-AIM: Login request, uin: 349547485, pass: *тут пароль*
imspector: ICQ-AIM: Login response, uin: 349547485
imspector: ICQ-AIM: Stored cookie, uin: 349547485
imspector: Finished with child: 10.10.1.16:1904
imspector: Connection from: 10.10.1.16:1905
imspector: ICQ-AIM: Found cookie, uin: 349547485
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0003
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0015
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0017
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0018
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0013
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0006
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0007
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 0008
imspector: ICQ-AIM: uin: 349547485, unknown family: 0001 subtype: 000e
........... и т.д.
####################
Взял я версию imspector-20090920 - http://www.imspector.org/downloads/snapshots/imspector-20090...
Внес свои изменения основываясь на специфике старых патчей и изменений которые посчитал нужным(выложу файлы) в файлы Makefile, main.cpp, imspector.conf
И получил следующее при сборке(т.е. она как бы идёт но при компиляции есть косяк):
##########
# make install
c++ -O2 -fno-strict-aliasing -pipe main.cpp -c
c++ -O2 -fno-strict-aliasing -pipe protocolplugin.cpp -c
c++ -O2 -fno-strict-aliasing -pipe loggingplugin.cpp -c
c++ -O2 -fno-strict-aliasing -pipe filterplugin.cpp -c
c++ -O2 -fno-strict-aliasing -pipe responderplugin.cpp -c
c++ -O2 -fno-strict-aliasing -pipe socket.cpp -c
c++ -O2 -fno-strict-aliasing -pipe options.cpp -c
c++ -O2 -fno-strict-aliasing -pipe tools.cpp -c
c++ socket.o options.o tools.o -fPIC -shared -Wl,-soname,libimspector.so -o libimspector.so
c++ main.o protocolplugin.o loggingplugin.o filterplugin.o responderplugin.o libimspector.so -o imspector -L/usr/bin/lib -lssl
c++ -O2 -fno-strict-aliasing -pipe msnprotocolplugin.cpp -c
c++ msnprotocolplugin.o libimspector.so -fPIC -shared -Wl,-soname,msnprotocolplugin.so -o msnprotocolplugin.so
c++ -O2 -fno-strict-aliasing -pipe icqprotocolplugin.cpp -c
icqprotocolplugin.cpp: In function `int getmessage(char**, char*, int, std::string&, int&, int&)':
icqprotocolplugin.cpp:676: error: invalid conversion from `char**' to `const char**'
*** Error code 1
##############
icqprotocolplugin.cpp | grep "int getmessage"
#########
int getmessage(GET_ARGS, std::string &message, int &mestart, int &melength);
#########
icqprotocolplugin.cpp | grep GET_ARGS
#define GET_ARGS char **p, char *startp, int lengthp
##############
Куда копать дальше - ума не представляю.
Нашел на одном сишном форуме описание проблемы char -> const char, пробовал в строке GET_ARGS изменить в разных вариациях - лезут другие ошибки.
Помогите адаптировать сборку.
Конечно крайний случай это установка на отдельную машину CentOS либо RHEL, там установка RPM(там они на данный софт все аткульаные) и заворот трафика с BSD туда, но ведь 0.5 версия работает - а значит вариант с компиляцией 0.9 тоже решаем, к тому же на сайте производителя ПО указано явно:
The supported platforms are at present Linux and BSD when using the pf firewall, but porting to other UNIXs should be trivial.