add socks proxy function