Kristian Larsson wrote:
On Thu, Feb 22, 2007 at 12:45:53AM +0000, Jon Farmer wrote:
Hi
I am trying to find a way to detect if the Invite URI starts with a *.
Perhaps I'm not really enlightened in the realms of URIs, but can a URI really contain a * ? I was under the impression that the only allowed characters were [A-z0-9-.] plus @ as a separator of username and domain.
Thankfully, this is IETF land and we can easily check:
SIP-URI = "sip:" [ userinfo ] hostport uri-parameters [ headers ] userinfo = ( user / telephone-subscriber ) [ ":" password ] "@" user = 1*( unreserved / escaped / user-unreserved ) unreserved = alphanum / mark alphanum = ALPHA / DIGIT mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" escaped = "%" HEXDIG HEXDIG user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
They userinfo part of a URI may actually contain quite a lot non-alphanumerical characters. Well, pretty much everything, really.
How do I match this as ser normally sees * as a wildcard.
I believe SER uses regular expression type of matching and thus * is not really a wildcard, but rather "0 or more instances of the previous character". Anyway to match a request-URI starting with '*' you simply do if (uri =~ /^*/) { #blaha }
Almost, but the scheme is part of the URI, so it would be
if (uri =~ "^sip:*") { ; }
Regards, Martin