How to set PIN after conference created?
Hi everyone, I'm new to FreeSWITCH. I've managed to set up many features quite easily but I'm struggling with mod_conference. I want to allow a user to create a conference and set its PIN by dialling a special number 81<conference_number>*<pin>: <extension name="initiate_conference"> <condition field="destination_number" expression="^81(\d*)\*(\d*)$"> <action application="log" data="INFO Creating conference $1 with PIN $2"/> <action application="answer"/> <action application="conference" data="$1@default+$2"/> </condition> </extension> Other users can dial into the same conference using a different access number, but are challenged for the PIN set by the first user: <extension name="join_conference"> <condition field="destination_number" expression="^82(\d*)$"> <action application="answer"/> <action application="conference" data="$1"/> </condition> </extension> There is no <param name="pin" ...> set in <configuration name="conference.conf"><profiles><profile name="default">. I was expecting <action application="conference" data="$1@default+$2"/> to create the conference and set its PIN, so that a subsequent <action application="conference" data="$1"/> would be challenged to provide the same PIN. Instead what happens is the first caller has the required PIN set for their call, but the second caller is not challenged to provide the PIN at all. Looking at the code in mod_conference.c on git checkout v1.0.6 I see there only 2 ways conference->pin can be set: via <param name="pin" .../> in the profile or via API 'conference $1 pin $2'. I was expecting there would be a third way: assigning conference->pin = dpin when creating a new conference. Although I find this a bit confusing it could be by design. I tried using the API to set the PIN after the conference has been created but I lack the knowledge to do this successfully. I've tried: * <action application="set" data="result=${conference($1 pin $2)}"/> after <action application="conference" data="$1@default+$2"/> - no actions execute after the <action application="conference"> * <action application="set" data="result=${conference($1 pin $2)}"/> before <action application="conference" data="$1@default+$2"/> - unsurprisingly, it reports conference not found * <action application="export" data="nolocal:api_on_answer=conference $1 pin $2"/> - appears not to execute but it's difficult to be sure in this case Thanks in advance for any help you can provide! Best regards, Duncan
This is one of those cases where the devs tried very hard not to force feed specific functionality onto the user. The bottom line here is that the devs consider mod_conference's primary function to be that of getting channels into a conference, muxing the audio, etc. Things like PINs and security, etc. can all be handled in the dialplan. This is, indeed, by design. Instead of forcing the security into mod_conference itself we let the FS implementor decide how he/she wants to perform security functions. One advantage to doing all the security in the dialplan is that you have a lot of power and flexibility: you do security however YOU feel is best. I believe that if you start viewing PINs and security/privacy from the perspective that they are functions of the dialplan instead of functions of mod_conference then you will be able to solve your problem much easier. -MC On Tue, Mar 29, 2011 at 4:17 AM, Duncan Pierce <duncan.pierce@gmail.com> wrote:
Hi everyone, I'm new to FreeSWITCH. I've managed to set up many features quite easily but I'm struggling with mod_conference. I want to allow a user to create a conference and set its PIN by dialling a special number 81<conference_number>*<pin>: <extension name="initiate_conference"> <condition field="destination_number" expression="^81(\d*)\*(\d*)$"> <action application="log" data="INFO Creating conference $1 with PIN $2"/> <action application="answer"/> <action application="conference" data="$1@default+$2"/> </condition> </extension> Other users can dial into the same conference using a different access number, but are challenged for the PIN set by the first user: <extension name="join_conference"> <condition field="destination_number" expression="^82(\d*)$"> <action application="answer"/> <action application="conference" data="$1"/> </condition> </extension> There is no <param name="pin" ...> set in <configuration name="conference.conf"><profiles><profile name="default">. I was expecting <action application="conference" data="$1@default+$2"/> to create the conference and set its PIN, so that a subsequent <action application="conference" data="$1"/> would be challenged to provide the same PIN. Instead what happens is the first caller has the required PIN set for their call, but the second caller is not challenged to provide the PIN at all. Looking at the code in mod_conference.c on git checkout v1.0.6 I see there only 2 ways conference->pin can be set: via <param name="pin" .../> in the profile or via API 'conference $1 pin $2'. I was expecting there would be a third way: assigning conference->pin = dpin when creating a new conference. Although I find this a bit confusing it could be by design. I tried using the API to set the PIN after the conference has been created but I lack the knowledge to do this successfully. I've tried: * <action application="set" data="result=${conference($1 pin $2)}"/> after <action application="conference" data="$1@default+$2"/> - no actions execute after the <action application="conference"> * <action application="set" data="result=${conference($1 pin $2)}"/> before <action application="conference" data="$1@default+$2"/> - unsurprisingly, it reports conference not found * <action application="export" data="nolocal:api_on_answer=conference $1 pin $2"/> - appears not to execute but it's difficult to be sure in this case Thanks in advance for any help you can provide! Best regards, Duncan _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Thanks for responding Michael. Do you have any hints for getting started with implementing PIN security in the dialplan? I can see how a PIN could be prompted for and gathered but I can't see how to "attach" a PIN to a conference. Best regards, Duncan On 29 March 2011 16:37, Michael Collins <msc@freeswitch.org> wrote:
This is one of those cases where the devs tried very hard not to force feed specific functionality onto the user. The bottom line here is that the devs consider mod_conference's primary function to be that of getting channels into a conference, muxing the audio, etc. Things like PINs and security, etc. can all be handled in the dialplan. This is, indeed, by design. Instead of forcing the security into mod_conference itself we let the FS implementor decide how he/she wants to perform security functions. One advantage to doing all the security in the dialplan is that you have a lot of power and flexibility: you do security however YOU feel is best.
I believe that if you start viewing PINs and security/privacy from the perspective that they are functions of the dialplan instead of functions of mod_conference then you will be able to solve your problem much easier.
-MC
On Tue, Mar 29, 2011 at 4:17 AM, Duncan Pierce <duncan.pierce@gmail.com> wrote:
Hi everyone, I'm new to FreeSWITCH. I've managed to set up many features quite easily but I'm struggling with mod_conference. I want to allow a user to create a conference and set its PIN by dialling a special number 81<conference_number>*<pin>: <extension name="initiate_conference"> <condition field="destination_number" expression="^81(\d*)\*(\d*)$"> <action application="log" data="INFO Creating conference $1 with PIN $2"/> <action application="answer"/> <action application="conference" data="$1@default+$2"/> </condition> </extension> Other users can dial into the same conference using a different access number, but are challenged for the PIN set by the first user: <extension name="join_conference"> <condition field="destination_number" expression="^82(\d*)$"> <action application="answer"/> <action application="conference" data="$1"/> </condition> </extension> There is no <param name="pin" ...> set in <configuration name="conference.conf"><profiles><profile name="default">. I was expecting <action application="conference" data="$1@default+$2"/> to create the conference and set its PIN, so that a subsequent <action application="conference" data="$1"/> would be challenged to provide the same PIN. Instead what happens is the first caller has the required PIN set for their call, but the second caller is not challenged to provide the PIN at all. Looking at the code in mod_conference.c on git checkout v1.0.6 I see there only 2 ways conference->pin can be set: via <param name="pin" .../> in the profile or via API 'conference $1 pin $2'. I was expecting there would be a third way: assigning conference->pin = dpin when creating a new conference. Although I find this a bit confusing it could be by design. I tried using the API to set the PIN after the conference has been created but I lack the knowledge to do this successfully. I've tried: * <action application="set" data="result=${conference($1 pin $2)}"/> after <action application="conference" data="$1@default+$2"/> - no actions execute after the <action application="conference"> * <action application="set" data="result=${conference($1 pin $2)}"/> before <action application="conference" data="$1@default+$2"/> - unsurprisingly, it reports conference not found * <action application="export" data="nolocal:api_on_answer=conference $1 pin $2"/> - appears not to execute but it's difficult to be sure in this case Thanks in advance for any help you can provide! Best regards, Duncan _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Duncan Pierce duncanpierce.org
On Tue, Mar 29, 2011 at 9:04 AM, Duncan Pierce <duncan.pierce@gmail.com> wrote:
Thanks for responding Michael. Do you have any hints for getting started with implementing PIN security in the dialplan? I can see how a PIN could be prompted for and gathered but I can't see how to "attach" a PIN to a conference.
In this case you'd need to keep a database of PINs and their corresponding conferences. You could do your lookup with mod_xml_curl which is the best long-term solution. In the short term you could do something in mod_lua/mod_perl via dialplan and have the script poll the database. Heck, you could even hard-code the pin into your dialplan if you're desperate to give it a test drive. :) -MC
participants (2)
-
Duncan Pierce
-
Michael Collins