Потестите плиз прокси

Тема в разделе "WASM.NETWORKS", создана пользователем Flasher, 29 апр 2007.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Хочется услышать Ваши замечания и поправки.
    Писал вроде как по всем правилам rfc.
    http socks4 socks5 в одном флаконе.
    Довольно объемний код получился, но думаю это не помеха для Вас.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Вовремя. Спасибо! Тока хотел заняться проксями, но влом было. Щас поковыряемс :)
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Вопрос по сокс5: ты не обрабатываешь запрос, который клиент посылает при соединении? Ты ведь просто посылаешь клиенту, что надо авторизироваться по методу 2. А согласно rfc ты должен выбрать соотв. метод из тех, которые предлагает клиент. Т.е. если клиент не поддерживает метод "02", то ты должен вернуть ему "FF", а ты в любом случае возвращаешь "02". Разве это правильно?

    Кроме того, на неизвестные команды типа UDP ASSOCIATE тоже надо отвечать. Хотя бы вернуть "07" - шоб клиент знал, что такое ты не обрабатываешь. То же самое и с адресами -на IP6 и др. неплохо бы возвращать "08". Мелочь конечно, но все-таки.

    И еще: зачем функции select в первом параметре ты передаешь 10h? Этот параметр ведь игнорируется. Или нет?

    И еще: зачем в сокс5 для операции CONNECT ты вызываешь bind для нового сокета? Что вообще делает эта функция и нужна ли она тут? Т.к. я, любопытства ради, убрал эту функцию - тем не менее мой socks5-сервер (написанный по твоим иходникам, но сильно переделанный :)) нормально подключил через себя мирку. Или у этой функции есть тайный смысл? :)

    И еще: в тех же сокс5, когда уже обрабатываешь оба сокета, ты передаешь ф-ии select таймер 30 сек. Зачем? Если ни один из сокетов не "сработает", ты ж все равно не узнаешь об ошибке (если таковая будет и select при этом вернет не -1). Т.е. зачем ты используешь таймер? Ведь в любом случае он ниче тебе не дает. Не проще ли вместо последнего параметра передавать 0, шоб функция "блокировалась"? Или и тут есть тайный смысл? :)

    И еще: когда в сокс5 поступает команда BIND ты открываешь нулевой порт. Почему именно нулевой??? Я думал (чисто интуитивно), что клиент должен указать перед этим номер порта, который стоит открыть. Или я не прав?

    П.С.: что делает ф-я select? Читаю, читаю, а понять не могу :dntknw: Точнее, суть я понял. Но вот не совсем. Короче, этой функции передаются указатели на структуру, которая состоит из счетчика (первый дворд) и массива хэндлов сокетов (причем количество элементов массива равно значению первого дворда). Прально? Т.е. структура может иметь размер всего 2 дворда? А то в масме она объявлена как 260 байт, а не 8... :-/ Или все-таки 260?

    Второй момент: после возвращения, если ф-я отработала удачно, в переданных ей структурах будут лежать: 1 дворд - счетчик "просигнализированных хендлов", а после него - сами эти "просигнализированные" хэндлы. Я правильно понял работу функции select?
     
  4. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Разве ? Сервер тут крыша, как скажет так и будет :))

    Про
    и
    и
    Не буду отвечать, ибо Вы не совсем понимайте как работает функция select.
    bind нужен для того чтоб потом из сокета выдрать local port, ибо по rfc при успешном возвращении нуно отправить порт и ип.
    Когда указываешь номер порта ноль, сокет биндится на первом свободном порту, это как правило выше 1024 порта.
    Не совсем понял суть вопроса.
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Все-таки не согласен. Ведь если клиент не поддерживает авторизацию по методу "02", то надо сказать ему, что сервер не может такое обработать.

    Эт точно. Но все-таки, смысл первого и последнего параметра вроде ж понял. По ним же и был вопрос. Ладно, проехали.

    Суть вопроса была в сути работы функции select. Правильно ли я понял, почитав SDK, параметры (и их формат), передаваемые этой функции, и что она возвращает?
     
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    У меня приложение рушится постояно по адресу 0040127d память не может быть рид ....не зависимо от того какой 5 и 4 использутся.....рушится всегда ....У меня ХР СП2 атлон 64
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А при чем тут соксы, если эта процедура в обработке http идет??? :) Ты точно правильный запрос послал?
     
  8. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Как я его должен послать .....тестил на Аське с поддержкой всех проксей ...... телнетом рушится не успел приконектится ....и еще Эксплорером ....
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Ну шоб первый байт был 04 или 05. Ты говоришь, что тестишь на соксах. А ошибка происходит в обработчике http. Код правильный. Если ты посылаешь правильный сокс запрос, то такой ошибки не возникнет. Значит ты не так настроил аську. Надо бы это дело в отладчике глянуть. Но у меня нет аськи - тока миранда.
     
  10. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Дык у меня тоже миранда ......там я и настроил ....все варианты пробовал рушится .....
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    у меня мирка работает через прокси. Правда это просиходит через мой прокси, но он написан по мотивам Flash'а. Хотя вот тока шо запустил через его проксю - тоже все путем. Ну кроме аськи (irc протокол работает стабильно). Аська - это возможно глюк моего инета. Но ирц в мирке работает.

    Возможно ты что-то не так настроил.

    П.С.: хотелось бы услышать автора по поводу моего вопроса в #5
     
  12. mc black

    mc black Member

    Публикаций:
    0
    Регистрация:
    19 янв 2005
    Сообщения:
    213
    Адрес:
    Russia, N.Novgorod
    У меня не получилось потестить прокси, т.к. он, насколько я понял, не может подключаться в свою очередь на другой прокси с авторизацией, т.е. я смогу скорее всего его тестить у себя дома с DialUp, но накак не на работе, где у меня на выход в инет уже стоит http-прокси. При попытке подключаться через него твоя программа вылетает с ошибкой. Не помешало бы как-то обрабатывать разные ошибки подключения. Хотя пример как я понял весьма занимательный и поучительный :) Спасибо!