X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=route.c;h=f72d6b0b929135604d8e9394cd5723b552723949;hp=aaa560634b2e14850ce897e4617f78f981993ccc;hb=fc716483209769069666cb50fc4b3c924a2dec97;hpb=8bb49ccb7b3eba0a3f20d3b097541304b3580f70 diff --git a/route.c b/route.c index aaa5606..f72d6b0 100644 --- a/route.c +++ b/route.c @@ -1890,6 +1890,8 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset) struct route_action *action = NULL; unsigned long comp_len; int j, jj; + char isdn_port[10]; + char *argv[11]; /* check also number of args below */ char callerid[64], callerid2[64], redirid[64]; int integer; char *string; @@ -1953,7 +1955,7 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset) goto match_string_prefix; case MATCH_EXTENSION: - string = e_ext.name; + string = e_ext.number; goto match_string; case MATCH_DIALING: @@ -2068,7 +2070,20 @@ struct route_action *EndpointAppPBX::route(struct route_ruleset *ruleset) break; case MATCH_EXECUTE: - if (system(cond->string_value) == 0) + j = 0; + argv[j++] = (char *)"/bin/sh"; + argv[j++] = (char *)"-c"; + argv[j++] = cond->string_value; + argv[j++] = cond->string_value; + argv[j++] = e_extdialing; + argv[j++] = (char *)numberrize_callerinfo(e_callerinfo.id, e_callerinfo.ntype, options.national, options.international); + argv[j++] = e_callerinfo.extension; + argv[j++] = e_callerinfo.name; + SPRINT(isdn_port, "%d", e_callerinfo.isdn_port); + argv[j++] = isdn_port; + argv[j++] = e_callerinfo.imsi; + argv[j++] = NULL; /* check also number of args above */ + if (execve("/bin/sh", argv, environ) == 0) istrue = 1; break;