Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL-Proxy, изменение отправляемых sql-запросов 
:(
    Опции темы
exploys
Дата 4.6.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Необходимо написать что-то наподобии sql-proxy на c++. Т.е. перехватывать и изменять SQL запросы посылаемые от клиента серверу.
Т.е. клиент конектиться к моему приложению, которое изменяет запросы и посылает в СУБД. А результат выполенния запроса в неизменном виде возвращает клиенту.

Как лучше сделать и может есть какие-то простые примеры таких вот "редиректоров" любых tcip/ip пакетов?
В какую сторону копать?
PM MAIL   Вверх
SenkraD
Дата 4.6.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 1
Всего: 23



exploys,  если клиент знает, что между ним и СУБД есть вы -
тоесть оно посылает запросы вам, то всё просто:
    - получили запрос
    - отпарсили, если нужно
    - изменили и(или) что-то добавили
    - послали запрос на СУБД
    - получили ответ от CУБД
    - отослали ответ к клиенту

Если же клиент думает, что конектится к СУБД, а тут вы, то
    - парсим пакет
    - ищем запрос
    - все пунктики с первого варианта

по поводу готовых "редиректоров", если под конкретную СУБД,
то думаю найдёте, а под все сразу вряд ли


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
exploys
Дата 4.6.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Есть mysql-proxy, но нужно написать более универсальную.
А нету вообще просто самых простых исходников редиректоров tcp пакетов? И чтоб держало тысячи подключений.
Или книгу с примерами не посоветуете.

Добавлено через 7 минут и 5 секунд
Да кстати инетересует вариент именно клиент думает, что конектится к СУБД.
В основном интересует, как создать такой полностью прозрачный прокси. Хотябы самый простой пример.
PM MAIL   Вверх
exploys
Дата 5.6.2010, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Попробовал сделать порт маппинг через TIdMappedPortTCP.

Попробовал перенаправлять трафик из браузера на мой прокси UserGate который висит на порте:8088
На форму кинул Button1 и IdMappedPortTCP1
Обработчик кнопки
Код:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{

    IdMappedPortTCP1->DefaultPort = 8087;
    IdMappedPortTCP1->MappedHost = "127.0.0.1";
    IdMappedPortTCP1->MappedPort = 8088;
    IdMappedPortTCP1->TerminateWaitTime = 500000;
    IdMappedPortTCP1->Active = true;
}
//---------------------------------------------------------------------------

Жму кнопку, появляется открытый порт 8087. Браузер настроен на прокси на 8087.
Открываю сайты в браузере, сайты открываются, но постоянно эксепшен:


Код

---------------------------
Debugger Exception Notification
---------------------------
Project TestTCPIP.exe raised exception class EIdNotASocket with message 'Socket Error # 10038
Socket operation on non-socket.'.
---------------------------
Break   Continue   Help   
---------------------------


А если пытаюсь маппить трафик с 3307 на 3306, где у меня висит MySQL, то тупо клиент MySQL подвисает.
Может там нужны ещё какие-то компоненты?
Или кинтье какие-нить простые рабочие исходники плиз. 
PM MAIL   Вверх
exploys
Дата 8.6.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Все дело было в Indy10, включая Тибуроновскую.
Все решилось переходом на Indy9.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.