[SR-Users] Stripping variable amount of digits
Iñaki Baz Castillo
ibc at aliax.net
Thu Sep 16 20:28:44 CEST 2010
2010/9/16 Iñaki Baz Castillo <ibc at aliax.net>:
> Hi, I get a prefix string from a database and store it in
> $var(prefix). Such prefix can contain any number of digits (no fixed
> length).
> Now I must to check if the RURI username begins with that prefix and
> in that case strip it.
>
> I can get the first step (detect it) using pcre_match function:
>
> if pcre_match("$rU", "^$var(prefix)") {
> # Prefix match.
>
>
> But I cannot get the second part working (stripping it). I've tryed everything:
>
> - strip() is not valid as just allows an integer (no pv).
>
> - subst_user() doesn't accept pv:
> if subst_user("/^$var(prefix)(.*)$/\1/")
>
>
> Any ideas please? Thanks a lot.
Finally I got it in an ugly way (assuming that prefix has as maximun 7 digits):
-------------------
# Check that the dialed number begins with the
# configured 'prefix_in'. If not drop the call.
#
if ! pcre_match("$rU", "^$var(prefix)") {
xlog("L_NOTICE", "prefix doesn't match =>403\n");
send_reply("403", "Forbidden: Wrong Prefix");
exit;
}
# If so, strip the prefix.
#
$var(prefix_in_length) = $(var(client_prefix_in){s.len});
switch($var(prefix_in_length)) {
case 1:
strip(1);
break;
case 2:
strip(2);
break;
case 3:
strip(3);
break;
case 4:
strip(4);
break;
case 5:
strip(5);
break;
case 6:
strip(6);
break;
case 7:
strip(7);
break;
}
------------------
Any suggestion providing a more ellegant way is welcome :)
--
Iñaki Baz Castillo
<ibc at aliax.net>
More information about the sr-users
mailing list