Trying to figure out how I can modify /etc/asterisk/extensions.conf - [ALLSTAR-PUBLIC] to only allow web transceiver connections on a specific private node.
Not easily. If you want something that controlled, I suggest a direct-connect IAX2 client instead.
I figured it out. Added the following code to the beginning of the [allstar-public] stanza, immediately after "exten => s,1,Ringing" and now it hangs up on any node besides my desired private node (1020) Not sure if it's all necessary, or the cleanest, as it was much playing with ChatGPT to get here, but it works...
; ONLY allow connections to this node
same => n,GotoIf($["${CALLERID(num)}" = "1020"]?allowed:hangit)
same => n(allowed),Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
; validate response
same => n,GotoIf($["${RESP}" = ""]?hangit)
same => n,GotoIf($["${RESP:0:1}" = "?"]?hangit)
same => n,GotoIf($["${RESP:0:5}" != "OHYES"]?hangit)
; parse values
same => n,Set(CALLSIGN=${RESP:5})
same => n,Set(NODENUM=${CALLERID(num)})
; allowlist mode
same => n,GotoIf($[${DB_KEYCOUNT(allowlist/${NODENUM})} = 0]?denylist)
same => n,GotoIf($[${DB_EXISTS(allowlist/${NODENUM}/${CALLSIGN})}]?connect)
same => n,NoOp(${CALLSIGN} not in allowlist)
same => n,Goto(hangit)
; denylist mode
same => n(denylist),GotoIf($[${DB_EXISTS(denylist/${NODENUM}/${CALLSIGN})}]?hangit:connect)
; connect caller
same => n(connect),Set(CALLERID(name)=${CALLSIGN})
same => n,Set(CALLERID(num)=0)
same => n,Wait(3)
same => n,Playback(rpt/connected-to&rpt/node,noanswer)
same => n,SayDigits(${NODENUM})
same => n,Rpt(${NODENUM},X)
same => n,Hangup()
; reject caller
same => n(hangit),Answer()
same => n,Wait(1)
same => n,Hangup()
I killed web transceiver on all of my nodes except one.
K8FBI on repeaterphone if you want to test it.
Only 1020 @ k8fbi.servebeer.com is allowed...