Ticket #461 (closed Feature Requests: duplicate)

Opened 3 years ago

Last modified 1 year ago

Define permission groups for access to outbound trunks/features/extensions

Reported by: dzverdzver Assigned to: nobody
Priority: minor Milestone: 2.3
Component: Core Version: next release
Keywords: Cc:
Confirmation: SVN Revision (if applicable):
Backend Engine: All Backend Engine Version:

Description (Last modified by gregmac)

Problem:
When extension is forwarded, dialparties.agi replaces 
the target extension and bridges the call to 
Local/TN@from-internal, (TN="target number") - 
where 'from-internal' is hard-coded; as opposed to 
using the appropiate context from which the forwarded 
call "would" originate.

Consider the following situation:
Different extensions can dial different pattern sets.
This may be used if different set of outbound or other 
restrictions are applied to different users.
The natural way to achieve this is placing extensions 
A and B into different (predefined) contexts which 
determine their calling abilities.

Concrete example:
Ext. B has no overseas calling permission.
This is to say, ext. B is placed in such default 
context (call it from-internal-local) which can NOT 
dial overseas (i.e. 011... pattern does not belong to 
from-internal-local context)
However, as it stands currently the user B can 
passthrough his blocking of overseas calls, simply 
forwarding his extension to 011... number (using *72 
for example), and further dialing his own extension.
Dialparties.agi would bridge the call using 
predefined 'from-internal' context, and what user can 
dial this way depends on 'from-internal' context, 
rather than the context of his extension B.

I see two ways (simple and complex) for deailing with 
this:
- Simple: Call forwarding process must take into 
account the dialing abilities of the forwarded 
extension. I.e. extension should not be able to be 
forwarded by its owner to a # that this extension can 
not dial naturally.
- More complex (the one I used): Upon extension 
forward, the "context of the person who forwarded the 
extension" is stored in DB, and further used by 
dialparties.agi as "authoritative context", i.e. the 
context into which the chan_local bridging should 
occur. It works like that:
1) B can not dial overseas 011... (belongs to from-
internal-local context)
2) B forwards its extension to 011... overseas #. 
(saving in DB not only the fw number but altogether 
its context as "auth context" under which CF should be 
done)
3) B dials its own extension.
4) dialparties.agi expands the call to 
Local/011...@from-internal-local, thereby 
using "authoritative context for forwarding" instead 
of hardcoded "from-internal"
5) But from-internal-local can not dial 011..., so 
chan_local expanded call fails
6) The original call to B also fails

As alternative scenario:
1) B can dial overseas 011... (belongs to from-
internal-everywhere context)
2) B forwards its extension to 011... overseas #. 
(saving in DB not only the fw number but altogether 
its context from-internal-everywhere as "auth context" 
under which CF should be done)
3) A can NOT dial overseas. 
4) A dials extension of B.
4) dialparties.agi expands the call to 
Local/011...@from-internal-everywhere, thereby 
using "authoritative context for forwarding" 
(belonging to B) instead of hardcoded "from-internal"
5) Because from-internal-everywhere context can dial 
011..., the chan_local expanded call succeeds
6) The original call of A also succeeds, although A 
has no overseas rights. Because the expanded call 
proceeded under rights of B, not A. Obviously, in the 
CDR we will have one call originating from A-to-B 
(pure internal call); and second call originating from 
B-to-011.... I.e. B is responsible (and in charge) to 
where he forwards his own extension. If B is to be 
billed for his calls, such forwarded calls are charged 
to B, as it should be naturally.

Obviously the second approach requires also changes to 
dialparties.agi (which I did). Some additional 
trickeries are needed to deal properly with righths 
for chained forwarding (A->B->C->...) where 
dialparties.agi recursively expands the calls.

I was unable to use the 1st approach as I do not know 
how to "check the ability to dial the number to which 
forwarding is about to be set", without 
actually "ringing" this number. 

Change History

03/23/06 22:35:36 changed by qldrob

  • summary changed from chan_local context for cf(b) in dialparties.agi hardcoded to Define permission groups for access to outbound trunks.
Logged In: YES 
user_id=943208

I appreciate your long, and verbose post (really, not being
sarcastic - I realise it's hard to tell in this medium).
What you're actually saying is that you want permissions on
who can call what. This is an exisiting feature request.
I've changed the topic of this, and will leave it open.
Thank you for being helpfull on your feature requests!

06/26/06 16:43:12 changed by gregmac

  • description changed.

#566 marked as dupe

06/26/06 16:52:28 changed by gregmac

  • summary changed from Define permission groups for access to outbound trunks to Define permission groups for access to outbound trunks/features/extensions.

This should be done by allowing/disallowing access to routes on a per-extension/device basis, or by creating a group and allowing access to that group.

Probably this should be group-based. An outbound calling group (need a better name than that) would have a list of routes it was allowed to call, and it would create a context:

[routegroup-localonly] include => outrt-002-local include => outrt-001-emerg include => ext-local include => app-cf-on include => app-cf-off

This would be the context that the device/user is placed into, instead of from-internal, so it would include all the applications access as well.

Each device/user should have a drop-down to select which group it's in. We'll have to decide how to determine permissions to use when different groups are set for device and user. (Does device or user override? does adhoc vs fixed make a difference?)

07/17/06 17:42:28 changed by gregmac

  • status changed from assigned to closed.
  • resolution changed from None to duplicate.

#735, #692 marked as dupes

07/17/06 17:42:44 changed by gregmac

  • status changed from closed to reopened.
  • resolution deleted.

10/16/06 03:57:41 changed by RobThomas

  • milestone set to 2.3.

11/28/06 02:03:26 changed by naftali5

see #1447

01/08/07 11:46:49 changed by

  • milestone deleted.

Milestone 2.3 deleted

01/08/07 12:08:13 changed by vgster

  • milestone set to 2.3.

06/05/07 03:55:53 changed by lazytt

  • status changed from reopened to closed.
  • resolution set to duplicate.
  • engine_version changed.
  • svn_rev changed.

Depreciated if favor of/ marked as dup of #461

06/05/07 06:27:59 changed by vgster

dup of itself?

Donate



Support
Download
Develop
Forums
News
Documentation
Paid Support
About

Paid Ads