[-] maximalian@sopuli.xyz 2 points 4 months ago* (last edited 4 months ago)

There're 2 conditions in my question. In the links the solutions described are partial, though. A part of a part. That is, "how to identify a keyword", "how to redirect if ...".

But how to actually put them all together? For instance, how to merge "if a keyword then redirect via a pre-specified, random sub-proxy"? How to them add into all that "otherwise, use no proxy"?

[-] maximalian@sopuli.xyz 1 points 4 months ago
[-] maximalian@sopuli.xyz 2 points 4 months ago* (last edited 4 months ago)
  1. client -> HaProxy -> if keyword --> sub-proxy (random) -> website
  2. client -> HaProxy -> if no keyword --> website
[-] maximalian@sopuli.xyz -2 points 4 months ago

at what point should one have laughed?

11
submitted 4 months ago* (last edited 4 months ago) by maximalian@sopuli.xyz to c/programming@programming.dev

I have a server (S-1) with HAProxy and a number of residential proxies (PR-s) as login-passwords-port. There're multiple users who will connect to the internet via S-1.

I want to have HAProxy to forward incomming traffic of the users via a random proxy amoung PR-s with 2 conditions:

  1. only when there's certain, pre-defined keyword in the URL, traffic must be routed via a proxy.
  2. In all other cases, it must go to a requested resource directly as is, without a proxy

How would I implement this?


(1) client -> HaProxy -> if keyword --> sub-proxy (random) -> website

(2) client -> HaProxy -> if no keyword --> website

2

In Squid config, is there any variable - %VAR - that contains the current unique request id or anything similar?

I'll need to pass that into an external script, for instance:

# squi.conf
auth_param basic program %REQUEST_ID(???) /etc/squid/my_auth.py

This may not be an authentication script, this is just an example.

I've searched but haven't found anything about it.

[-] maximalian@sopuli.xyz 8 points 5 months ago* (last edited 5 months ago)

Man, your autism makes the vaccines stronger.

9

Let's say, I have a python script which handles ACL:

#squid.conf
# [............]

# sub-proxies/peers
cache_peer 01.01.01.99 parent 34433 0 no-query no-digest name=peer1
cache_peer 01.01.02.99 parent 34433 0 no-query no-digest name=peer2
cache_peer 01.01.03.99 parent 34433 0 no-query no-digest name=peer3
cache_peer 01.01.04.99 parent 34433 0 no-query no-digest name=peer4


external_acl_type my_acl_helper ttl=30 %LOGIN ./my_acl_helper.py
acl session_acl external my_acl_helper

# [............]

In my_acl_helper.py there's some tricky logic of selecting a peer to be used for a request.

How should my_acl_helper.py report back to Squid which peer it's choosen? In what format? As far as I've found out, it could only be OK or ERR. But the IP:port or the alias of a peer will be needed as well. How?

maximalian

joined 5 months ago