add get_client_ip function