Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > frox ломается на 220, faking ? "Frox. Please login


Автор: quasi 8.5.2008, 14:03
вот тут полный исходник исходник...
http://www.codase.com/search/display?file=L2dlbnRvbzIvdmFyL3RtcC9yZXBvcy9jb2Rhc
2UuYy9mcm94LTAuNy4xOC93b3JrL2Zyb3gtMC43LjE4L3NyYy9udHAuYw==&lang=c

Подскажите что в переменной faking, рыл рыл, если тут в первом ифе сделать !faking, то ломается на 
Код

static void connect_to_server(void)
    
if(faking && !config.fakentp)
        return;
    working = TRUE;
// почему он мне постоянно вот это строчку выбрасывает?
    send_cmessage(220, faking ? "Frox. Please login." :
              "Frox transparent ftp proxy. Login with username[@host[:port]]");
    info->greeting = FAKED;
    do {
        get_command(&cmd, &arg);
        if(!sstr_casecmp2(cmd, "QUIT"))
            die(INFO, "Client closed connecton", 0, 0, 0);
        if(sstr_casecmp2(cmd, "USER"))
            send_cmessage(530, "Please login with USER first");
    } while(sstr_casecmp2(cmd, "USER"));

    if(!faking)
        parseuser(arg);
    else
        sstr_cpy(info->username, arg);

    if(sstr_casecmp2(info->username, "ftp")
       && sstr_casecmp2(info->username, "anonymous"))
        info->anonymous = 0;
    else
        info->anonymous = 1;
}


этом...
Код

{
    /*Check for loops. Won't work if Listen undefined */
    if(info->server_control.address.sin_addr.s_addr
       == config.listen_address.sin_addr.s_addr &&
       info->server_control.address.sin_port
       == config.listen_address.sin_port)
        die(ERROR, "Attempt to connect to self. "
            "Do you need to set DoNTP to yes?",
            421, "Proxy tried to loop. Closing connection", 0);


ну или вот так сократить, что-бы просто юзера отдавал определенного, тоже  на 421 Proxy tried to loop. Closing connection
Код

if(faking && !config.fakentp)
        return;
    working = TRUE;
    if(sstr_casecmp2(info->username, "anonymous"))
        info->anonymous = 0;
else
    send_cmessage(220, faking ? "Frox. Please login." :
              "Frox transparent ftp proxy. Login with username[@host[:port]]");
    info->greeting = FAKED;

p.s. Ломается не на сборке, а при работе, т.е. у меня на клиенте сообщение 421 Proxy tried to loop. Closing connection или 220 Frox transparent ftp proxy. Login with username[@host[:port]]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)