[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