Skip to content
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

Closed
wants to merge 1 commit into from

Conversation

toharish
Copy link
Contributor

@toharish toharish commented Jan 21, 2023

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

  • Commit message has the format required by CONTRIBUTING guide
  • Commits are split per component (core, individual modules, libs, utils, ...)
  • Each component has a single commit (if not, squash them into one commit)
  • No commits to README files for modules (changes must be done to docbook files
    in doc/ subfolder, the README file is autogenerated)

Type Of Change

  • Small bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds new functionality)
  • Breaking change (fix or feature that would change existing functionality)

Checklist:

  • PR should be backported to stable branches
  • Tested changes locally
  • Related to issue #XXXX (replace XXXX with an open issue number)

Description

Added Call-ID mask for Topos using API call of Topoh
}

tps_request_received(&msg, dialog);

Copy link
Member

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?

Copy link
Contributor Author

@toharish toharish Jan 23, 2023

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

Copy link
Member

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.

Copy link
Contributor Author

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.

Copy link
Member

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.

Copy link
Contributor Author

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

@toharish toharish closed this Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants