-
Notifications
You must be signed in to change notification settings - Fork 909
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Topos: Added Call-ID mask #3334
Conversation
Added Call-ID mask for Topos using API call of Topoh
} | ||
|
||
tps_request_received(&msg, dialog); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the above change necessary? Should tps_request_received() be executed for initial (non-in-dialog) requests?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, it's required to mask the Call-ID for the inial Request.
Please refer to the changes in tps_msg.c function tps_request_received where it is masking the Call-ID and then returning back when dialog=0
if(dialog==0) {
tps_mask_callid(msg);
/* nothing to do for initial request other than Call-ID mask */
return 0;
}
This could have been done by checking (dialog==0) and calling tps_mask_callid(msg) directly in topos_mod.c insted of calling tps_request_received(&msg, dialog).
The concept which is followed is :
Any Request which is entered from the Upstream Call-ID mask is done
Any Request which is sent to Upstream Call-ID Un-mask is done
Any response which is entered from the Upstream Call-ID mask is done
Any response which is sent to Upstream Call-ID Un-mask is done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
During the kamailio config processing, the call-id must be the original value, not masked. The mask has to be done when the message is sent out, unmask has to be done when the message is received. You can compare with what's done by topoh for call-id masking/unmasking.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To mask the Call-ID after the processing will be a challenge as TOPOS is using Call-ID as the key and further it is identifying from the request/response as UPSTREAM / DOWNSTREAM after tps_storage_load_dialog function call.
which means when there is a message from Downstream we will not be able to UnMask first before loading the dialog from the database as we are not knowing the direction.
To solve this we will have to add additional cookies and headers similar to Topoh which will be too much additional processing instead this approach of masking when receiving from Upstream and hiding other headers before sending downstream and Unmasking before sending to Upstream and hiding other headers when received from downstream will be better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The config has to process the SIP message as it would be without topos (or topoh), otherwise things become more complex to track (accounting, troubleshooting, sipdump, ...). Masking the call id comes with a prefix:
If the prefix is not matched, unmasking is not done, see th_unmask_callid() from topoh.
At the end, even it has to be more complexity added to topos module, it is the way to go, instead of affecting everything else.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok thank you, I will close this PR and add a new PR with Call-ID mask when it is sent out downstream
Added Call-ID mask for Topos using API call of Topoh
Call ID mask using topoh API call instead of swapping with new ID. Call ID masking is done when a message is received from the upstream and unmasked before sending it to the upstream.
Pre-Submission Checklist
in
doc/
subfolder, the README file is autogenerated)Type Of Change
Checklist:
Description