Skip to content
Snippets Groups Projects
client-handshake.c 27 KiB
Newer Older
  • Learn to ignore specific revisions
  • 		pt->serv_buf[len++] = 2;
    		/* username password method */
    		pt->serv_buf[len++] = SOCKS_AUTH_USERNAME_PASSWORD;
    		/* no authentication method */
    		pt->serv_buf[len++] = SOCKS_AUTH_NO_AUTH;
    
    	case SOCKS_MSG_USERNAME_PASSWORD:
    		n = strlen(wsi->vhost->socks_user);
    
    		passwd_len = strlen(wsi->vhost->socks_password);
    
    		/* the subnegotiation version */
    		pt->serv_buf[len++] = SOCKS_SUBNEGOTIATION_VERSION_1;
    		/* length of the user name */
    
    		pt->serv_buf[len++] = n;
    
    		/* user name */
    		strncpy((char *)&pt->serv_buf[len], wsi->vhost->socks_user,
    			context->pt_serv_buf_size - len);
    
    		len += n;
    
    		/* length of the password */
    		pt->serv_buf[len++] = passwd_len;
    		/* password */
    		strncpy((char *)&pt->serv_buf[len], wsi->vhost->socks_password,
    			context->pt_serv_buf_size - len);
    		len += passwd_len;
    
    		break;
    
    	case SOCKS_MSG_CONNECT:
    		p = (char*)&net_num;
    
    
    		/* socks version */
    		pt->serv_buf[len++] = SOCKS_VERSION_5;
    		/* socks command */
    		pt->serv_buf[len++] = SOCKS_COMMAND_CONNECT;
    		/* reserved */
    		pt->serv_buf[len++] = 0;
    		/* address type */
    		pt->serv_buf[len++] = SOCKS_ATYP_DOMAINNAME;
    
    		/* skip length, we fill it in at the end */
    		n = len++;
    
    		/* the address we tell SOCKS proxy to connect to */
    
    Andy Green's avatar
    Andy Green committed
    		strncpy((char *)&(pt->serv_buf[len]), wsi->stash->address,
    
    			context->pt_serv_buf_size - len);
    
    Andy Green's avatar
    Andy Green committed
    		len += strlen(wsi->stash->address);
    
    		net_num = htons(wsi->c_port);
    
    		/* the port we tell SOCKS proxy to connect to */
    
    		pt->serv_buf[len++] = p[0];
    		pt->serv_buf[len++] = p[1];
    
    		/* the length of the address, excluding port */
    
    Andy Green's avatar
    Andy Green committed
    		pt->serv_buf[n] = strlen(wsi->stash->address);
    
    		break;
    		
    	default:
    		return;