А что тут сложного? это еще проще чем обычный. Действия такие: 1) тупо считываешь целеком HTTP запрос 2) Ищи первый пробел. после него начинается домен. 3) ставиш указатель на начало домента и запоминаеш его. 4) далее ищи опять пробел начиная с имени домена 5) как нашел пробел так замени его на 0x00 6) начиная от имени домена ищи символ : 7) если его нет, то дефолтовый порт = 80 8) если есть : то заменяй его на 0x00 а то, что после него прогоняй через atoi и получай номер порта. 9) коннектся на нужный домен и порт 10) если всё норм то посылаеш "HTTP/1.1 200 OK\r\n\r\n" и затем делай обычный портмаппинг 11) если не смог подрубиться то посылай "HTTP/1.0 502 Bad Gateway\r\nContent-Length: 15\r\n\r\n502 Bad Gateway" и закрывай соединение 12) если при парсинге заголовка возникла ошибка (чтото не нашел) то посылай "HTTP/1.0 400 Bad Request\r\nContent-Length: 15\r\n\r\n400 Bad Request" и закрывай соединение
клиент шле т примерно такие данные: CONNECT www.site.comort HTTP/1.1 CONNECT www.site.com HTTP/1.1 и если получил 200 OK то уже может посылать какие угодно данные.