Re: [asterisk-users] Forward loop protection...

2015-06-03 Thread A J Stiles
On Tuesday 02 Jun 2015, Carlos Chavez wrote:
  Ia had a server overload today because someone did a call forward
 to their own extension.  To do a call forward I write a key called CFWD
 with the extensión number and number to dial .  The main script tests if
 the key/value exists and dials the number stored in the database.  What
 is an easy way to prevent dumb people from creating a loop?

There currently is no easy way to prevent an infinite forwarding loop.  If you 
come up with one, then you might well earn yourself a Nobel Prize for solving 
the Halting Problem .

The obvious bodge is to set a hard limit on depth of recursion; if an actual 
real, live person is not reached within, say, five hops then the call should go 
to  (the originally-called party's)  voicemail.

-- 
AJS

Note:  Originating address only accepts e-mail from list!  If replying off-
list, change address to asterisk1list at earthshod dot co dot uk .

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-03 Thread dk


-Original Message-
From: asterisk-users-boun...@lists.digium.com 
[mailto:asterisk-users-boun...@lists.digium.com] On Behalf Of A J Stiles
Sent: Wednesday, June 3, 2015 3:08 AM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] Forward loop protection...

On Tuesday 02 Jun 2015, Carlos Chavez wrote:
  Ia had a server overload today because someone did a call forward 
 to their own extension.  To do a call forward I write a key called 
 CFWD with the extensión number and number to dial .  The main script 
 tests if the key/value exists and dials the number stored in the 
 database.  What is an easy way to prevent dumb people from creating a loop?

There currently is no easy way to prevent an infinite forwarding loop.  If you 
come up with one, then you might well earn yourself a Nobel Prize for solving 
the Halting Problem .

The obvious bodge is to set a hard limit on depth of recursion; if an actual 
real, live person is not reached within, say, five hops then the call should go 
to  (the originally-called party's)  voicemail.

--
AJS


Deciding on the mailbox to use is problematic! The dialed-party may be away for 
an extended period and wants voice mail handled by the forwarded-to party.

  --Don




-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-03 Thread Kevin Larsen
 Deciding on the mailbox to use is problematic! The dialed-party may 
 be away for an extended period and wants voice mail handled by the 
 forwarded-to party.

And then you have the users who would work around this by sharing their 
voicemail passwords. Not quite as bad as sharing your computer log on 
credentials, but still, something I would like to avoid if possible.-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

[asterisk-users] Forward loop protection...

2015-06-02 Thread Carlos Chavez
Ia had a server overload today because someone did a call forward 
to their own extension.  To do a call forward I write a key called CFWD 
with the extensión number and number to dial .  The main script tests if 
the key/value exists and dials the number stored in the database.  What 
is an easy way to prevent dumb people from creating a loop?


--
Telecomunicaciones Abiertas de México S.A. de C.V.
Carlos Chávez
+52 (55)9116-91161


--
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
  http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-02 Thread Kevin Larsen
  Ia had a server overload today because someone did a call forward 
 to their own extension.  To do a call forward I write a key called CFWD 
 with the extensión number and number to dial .  The main script tests if 

 the key/value exists and dials the number stored in the database.  What 
 is an easy way to prevent dumb people from creating a loop?

Right after you have read the number to call forward to, compare it to the 
number you are call forwarding from. If it matches, play the user an error 
message and have them try again.

And no matter what you do, the dumb people will come up with more creative 
ways to tank your phone system. A large amount of my dialplan code is 
taking into account the stupid things they have done and handling it 
properly if they do it again. I swear, if you could harness their 
creativity for good you could solve the world's problems 10 times over.-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-02 Thread dk
 

 

From: asterisk-users-boun...@lists.digium.com
[mailto:asterisk-users-boun...@lists.digium.com] On Behalf Of Kevin Larsen
Sent: Tuesday, June 2, 2015 4:09 PM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] Forward loop protection...

 

  Ia had a server overload today because someone did a call forward 
 to their own extension.  To do a call forward I write a key called CFWD 
 with the extensión number and number to dial .  The main script tests if 
 the key/value exists and dials the number stored in the database.  What 
 is an easy way to prevent dumb people from creating a loop?

Right after you have read the number to call forward to, compare it to the
number you are call forwarding from. If it matches, play the user an error
message and have them try again. 

And no matter what you do, the dumb people will come up with more creative
ways to tank your phone system. A large amount of my dialplan code is taking
into account the stupid things they have done and handling it properly if
they do it again. I swear, if you could harness their creativity for good
you could solve the world's problems 10 times over.

 

The loop checking is a bit more challenging than that. If Bob forwards to
Fred and Fred forwards to Sue, all is well when Bob and Fred head out for a
beer. A little later, we’re in deep doo-do0 when Sue forwards to Bob. 

 

  --Don

 

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-02 Thread SamyGo
Could this possibly mean that any person who has CF set should never be
available as CF Destination. Simple db entry/check can have this done.

On Tue, Jun 2, 2015 at 5:34 PM, d...@donkelly.biz wrote:





 *From:* asterisk-users-boun...@lists.digium.com [mailto:
 asterisk-users-boun...@lists.digium.com] *On Behalf Of *Kevin Larsen
 *Sent:* Tuesday, June 2, 2015 4:09 PM
 *To:* Asterisk Users Mailing List - Non-Commercial Discussion
 *Subject:* Re: [asterisk-users] Forward loop protection...



   Ia had a server overload today because someone did a call forward
  to their own extension.  To do a call forward I write a key called CFWD
  with the extensión number and number to dial .  The main script tests if
  the key/value exists and dials the number stored in the database.  What
  is an easy way to prevent dumb people from creating a loop?

 Right after you have read the number to call forward to, compare it to the
 number you are call forwarding from. If it matches, play the user an error
 message and have them try again.

 And no matter what you do, the dumb people will come up with more creative
 ways to tank your phone system. A large amount of my dialplan code is
 taking into account the stupid things they have done and handling it
 properly if they do it again. I swear, if you could harness their
 creativity for good you could solve the world's problems 10 times over.



 The loop checking is a bit more challenging than that. If Bob forwards to
 Fred and Fred forwards to Sue, all is well when Bob and Fred head out for a
 beer. A little later, we’re in deep doo-do0 when Sue forwards to Bob.



   --Don



 --
 _
 -- Bandwidth and Colocation Provided by http://www.api-digital.com --
 New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

 asterisk-users mailing list
 To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-02 Thread dk
 

 

From: asterisk-users-boun...@lists.digium.com 
[mailto:asterisk-users-boun...@lists.digium.com] On Behalf Of Kevin Larsen
Sent: Tuesday, June 2, 2015 5:12 PM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] Forward loop protection...

 

 The loop checking is a bit more challenging than that. If Bob 
 forwards to Fred and Fred forwards to Sue, all is well when Bob and 
 Fred head out for a beer. A little later, we’re in deep doo-do0 when
 Sue forwards to Bob. 

 Could this possibly mean that any person who has CF set should never
 be available as CF Destination. Simple db entry/check can have this done. 

That just goes to show that the problem can get complex pretty quickly. Using 
the original example above, it might be that you want to allow the Bob to Fred 
to Sue forwards, but only stop it if the Sue to Bob link is established, thus 
creating the loop. I wonder if you could do some kind of recursive check where 
you follow each forward and if you ever come back around to a number you have 
already checked you know there is a loop. 

To reuse the example above, on the creation of the Bob to Fred forward, the 
database is checked to see if Fred has any forwards. He doesn't, so is at the 
end of the forwarding chain. Now Fred forwards to Sue. Again, she is at the end 
of the chain, so it is allowed. When Sue goes to forward to Bob, the check 
shows that Bob has a forward. Not a problem, but we create a temporary list 
that has Sue's number in it. Then we check the next stage of forwarding. Bob 
forwards to Fred. Fred's is checked against our temporary list and doesn't 
match, so we are still good. Bob's number is now added to the temporary list 
and we check the forward Fred has in place. Fred forward's to Sue. We check 
Sue's number against the temporary list and it does exist. Thus we have a loop 
detected and the forward can now be denied. 

I am guessing with the recursion involved you might want to do the check 
outside of Asterisk and pass the result back in. I will also state that I have 
not had to do this deep checking in the past, so these are just some initial 
thoughts on how I would start approaching the problem. Of course, this also 
assumes that Bob, Fred, and Sue are all on the same phone system. If you don't 
have a shared database to look at, the problem just got harder indeed. 

 

Classic Centrex forwarding required that the target party answer or that call 
forwarding is forced by repeating the attempt. If calls were provisionally 
forwarded and an attempt was made to complete a call from the forwarding party 
to the target, it wouldn’t be too challenging to see if the forwarded call ends 
up at the initiating extension. This would be effective even if there were 
multiple phone systems involved (if caller ID wasn’t messed with).

 

  --Don

 

 

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Re: [asterisk-users] Forward loop protection...

2015-06-02 Thread Kevin Larsen
 The loop checking is a bit more challenging than that. If Bob 
 forwards to Fred and Fred forwards to Sue, all is well when Bob and 
 Fred head out for a beer. A little later, we’re in deep doo-do0 when
 Sue forwards to Bob. 

 Could this possibly mean that any person who has CF set should never
 be available as CF Destination. Simple db entry/check can have this 
done.

That just goes to show that the problem can get complex pretty quickly. 
Using the original example above, it might be that you want to allow the 
Bob to Fred to Sue forwards, but only stop it if the Sue to Bob link is 
established, thus creating the loop. I wonder if you could do some kind of 
recursive check where you follow each forward and if you ever come back 
around to a number you have already checked you know there is a loop.

To reuse the example above, on the creation of the Bob to Fred forward, 
the database is checked to see if Fred has any forwards. He doesn't, so is 
at the end of the forwarding chain. Now Fred forwards to Sue. Again, she 
is at the end of the chain, so it is allowed. When Sue goes to forward to 
Bob, the check shows that Bob has a forward. Not a problem, but we create 
a temporary list that has Sue's number in it. Then we check the next stage 
of forwarding. Bob forwards to Fred. Fred's is checked against our 
temporary list and doesn't match, so we are still good. Bob's number is 
now added to the temporary list and we check the forward Fred has in 
place. Fred forward's to Sue. We check Sue's number against the temporary 
list and it does exist. Thus we have a loop detected and the forward can 
now be denied.

I am guessing with the recursion involved you might want to do the check 
outside of Asterisk and pass the result back in. I will also state that I 
have not had to do this deep checking in the past, so these are just some 
initial thoughts on how I would start approaching the problem. Of course, 
this also assumes that Bob, Fred, and Sue are all on the same phone 
system. If you don't have a shared database to look at, the problem just 
got harder indeed.
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users