diff options
-rwxr-xr-x | server/server/main.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/server/server/main.cpp b/server/server/main.cpp index 1adcd44..ee4660f 100755 --- a/server/server/main.cpp +++ b/server/server/main.cpp @@ -321,6 +321,41 @@ void session::proto_parser(std::vector<byte>& data) data.push_back(0x02); for(std::list<config::proxy_entry>::iterator it = cfg->get_proxy_list()->begin(), end = cfg->get_proxy_list()->end(); it != end; ++it) { + switch(it->type) + { + case config::HTTPS: + { + const char *str = "https://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::SOCKS4: + { + const char *str = "socks4://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::SOCKS5: + { + const char *str = "socks5://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::HTTP: + { + const char *str = "http://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + } if(!it->login.empty() && !it->password.empty()) { for(int i = 0; i < it->login.size(); ++ i) @@ -402,6 +437,41 @@ void session::proto_parser(std::vector<byte>& data) data.push_back(0x03); for(std::list<config::static_proxy_entry>::iterator it = cfg->get_static_proxy_list()->begin(), end = cfg->get_static_proxy_list()->end(); it != end; ++it) { + switch(it->type) + { + case config::HTTPS: + { + const char *str = "https://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::SOCKS4: + { + const char *str = "socks4://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::SOCKS5: + { + const char *str = "socks5://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + case config::HTTP: + { + const char *str = "http://"; + unsigned l = strlen(str); + for(int i = 0; i < l; i++) + data.push_back(str[i]); + } + break; + } if(!it->login.empty() && !it->password.empty()) { for(int i = 0; i < it->login.size(); ++ i) |