Posts in Category "Application"

How to stop Event pages (CQ) from being indexed

This article (and link below) is intended for Licensed (On-Premise) customers who have a standalone instance or cluster of CQ servers to serve up the Events Management piece of the Adobe Connect platform.  If you would like to stop event pages from being indexed in search engines like Google, you can follow this quick article below on adding robots.txt to the root of the CQ instances.

http://crxdelight.com/2012/02/04/how-to-protect-your-cq-instances-from-google-searches/

How to Solve Port 80 Problems when running Adobe Connect on windows server and logs shows port 80 is already in use.

Mostly in such situation the homepage wouldn’t show up however the console page works just fine.

There are a number of well-known Windows programs which use port 80:

IIS
The most likely culprit is Microsoft Internet Information Server.

SQL Server Reporting Services
SSRS can remain active even if you uninstall SQL Server. To stop the service:

  1. Open SQL Server Configuration Manager.
  2. Select “SQL Server Services” in the left-hand pane.
  3. Double-click “SQL Server Reporting Services”.
  4. Hit Stop.
  5. Switch to the Service tab and set the Start Mode to “Manual”.

Or

You can also stop the services from services.msc

Whats Using Port 80?

Further detective work is necessary if IIS and SSRS are not to blame. Enter the following on the command line:

netstat -aon

The active TCP addresses and ports will be listed — locate the line with local address “0.0.0.0:80″ and note the PID value.

Now right-click the task bar and select Start Task Manager. Navigate to the Processes tab and, if necessary, click View > Select Columns… to ensure “PID (Process Identifier)” is checked. You can now locate the PID you noted above. The description and properties should help you determine which application is using the port.

The Task Manager allows you to kill the process, but be a little wary about doing that — especially if it’s “NT Kernel & System”.

I Hope this would be helpful at some instances

Thanks

Identifying Telephony Disconnects

One common request from Adobe Connect users is to find out why a user may have gotten disconnected from a conference call while using Adobe Connect.  The important thing to realize here is that Adobe Connect will only disconnect a user from a conference call (with integrated telephony adaptor in place) if that user or a host in the meeting very deliberately choses one of a couple of options to disconnect the user.

The options for the in-meeting telephony disconnects are shown below:

tel1

This is what an individual user can access to disconnect their phone.

tel2

This is what a Meeting Host can do in the Attendee List pod, to hang up a user’s line.

Other than using these options, Adobe Connect does NOT send API commands to the telephony provider to hang up a conference user.  So a common scenario we may have is to identify whether Adobe hung up a user (via a very deliberate action) or whether the user was hung up by an external action (external to Adobe Connect). We do so by looking at the Adobe logs in conjunction with the Telephony Provider’s logs (PGI, InterCall, MeetingOne, Arkadin, etc).

On the Telephony Provider side, they can also differentiate between receiving an API from Adobe to disconnect a user vs just getting notification that the line is no longer active (which happens when a user is hung up for a reason between the Provider and Adobe).

User phone connections can drop for a variety of reasons.  Cell phone reception being dropped, IP phone connections (relying on an internet connection) going up and down (VPN, etc), user accidentally hanging up their own phone, a provider or carrier setting that sets a maximum connection time that gets exceeded, or a general carrier outage or issue in between Adobe and the Provider.  This is the most common.  Sometimes we see where a specific carrier will have a routing issue or other type of problem and it will interrupt that user’s connection to the conference.  These are outside of the realm of Adobe support and what needs to happen in this case is that the users must open a ticket with their Provider and through their Provider, they can have them track the possible route of the calls through the specific carriers involved, to see where the disconnect and problem occurred.

With regards to log analysis (overview article of the applicable logs needed), here is a breakdown (example) of the two scenarios for each of the main telephony providers we serve on our Hosted and Licensed environment (sans Avaya). ( I have ‘x’ed out some items like urls, conference codes, and phone numbers ):

MeetingOne

For an Adobe responsible hangup (deliberate):

In the meeting (application.log) log we will see:

2014-01-23 08:39:02 5552 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-23 08:39:02 5552 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-23 08:39:02 5552 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out -

In the MeetingOne_Adaptor.log we will see:

Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.MeetingOneAdobeConnectAdaptor hangUp
INFO: entering hangUp
confId=5471dac0-fda8-4319-b8fe-c6b2a6942e73telephonyUserId=29834e741439299a5f251ed
Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.bridge.BridgeProxyImpl hangUp
INFO: Bridge proxy – hangUp
Jan 23, 2014 8:39:02 AM com.meetingone.adobeconnect.bridge.BridgeProxyImpl sendXML2APIServer
INFO: posting xml to http://xxxxxxxxxx:80/api/audio?token=BRZ5930ecc7e013c5e76828ba7714390c7ae1d1b8

In the TelephonyService.log we will see:

[2014-01-23 08:39:02,255] [FCSj_Worker:8] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=29834e741439299a5f251ed, conference-id=5471dac0-fda8-4319-b8fe-c6b2a6942e73, unset=true, action=conference-call-out, adaptor-id=meetingone-adaptor}
[2014-01-23 08:39:02,768] [FCSj_Worker:8] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}

For an external hangup (not due to Adobe):

In the meeting (application.log) log we will see:

2014-01-23 08:51:47 5552 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status  { userID=1, phoneStatus=0 } –
2014-01-23 08:51:47 5552 (s)2641173 shouldBeKilled p_userID=1 advUserDesc.isNotInLive=false –
2014-01-23 08:51:47 5552 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-23 08:51:47 5552 (s)2641173 dispatchRPCEventToClient: userId=1 p_evtObj.type=userPhoneStatusChanged -

In the MeetingOne_Adaptor.log we will see:

Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.BridgeProxyEventPump parseEvents
INFO: <?xml version=”1.0″ encoding=”UTF-8″?>
<m1_api_events>
<api_response id=”29834e74:1439299a5f2:-514b” status=”0″ >
<events>
<event source_id=”xxxxxxxxxx” source=”audio” timestamp=”2014-01-23T09:49:59.458-07:00″ id=”2706933″><type>OnHangUp</type><parameters count=”4″><int_param name=”status”>0</int_param><string_param name=”participant_id”>81652</string_param><string_param name=”room_id”></string_param><int_param name=”reason”>0</int_param></parameters></event>
</events>
</api_response>
</m1_api_events>
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher run
INFO: processing events…
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher run
INFO: received event OnHangUp
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.messageDispatcher ProcessHangupResponse
INFO: ProcessHangupResponse
Jan 23, 2014 8:51:47 AM com.meetingone.adobeconnect.bridge.BridgeProxyEventPump GetEvents
INFO: Get events

In the TelephonyService.log we will see:

[2014-01-23 08:51:47,249] [Timer-6] (DEBUG) rtmp.RTMPConnection  – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=29834e741439299a5f25157, conference-id=5471dac0-fda8-4319-b8fe-c6b2a6942e73}

 

Arkadin

For an Adobe responsible hangup (deliberate):

In the meeting (application.log) log we will see:

2014-01-24 11:47:45 42656 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-24 11:47:45 42656 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-24 11:47:45 42656 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out -

In the Arkadin_Adaptor.log we will see:

[11:47:45] – [Verbose] [122421585] =>Bamboo : POST: <Arka_Trans MessageId=”Adobe2285″>    <Arka_Drop UserId=”111248954663623″ ResponseURL=”https://xxxxxxx.adobeconnect.com/servlet/bamboo” ConfId=”6505088d-bf01-4b66-8b7c-35e2cf195a06\1″ MessageId=”Adobe2284″/></Arka_Trans>
[11:47:45] – [Info] [122421585] drop(122421585<6505088d-bf01-4b66-8b7c-35e2cf195a06\1>, Jim Johnson<111248954663623>)
[11:47:45] – [Verbose] [122421585] <=Adobe : hangUp(122421585, 7b15ec77-3c0a-439f-bc7f-d1fd77eb593b);
[11:47:46] – [Verbose] [122421585] =>Adobe : userOffline(7b15ec77-3c0a-439f-bc7f-d1fd77eb593b)
[11:47:46] – [Info] [122421585] PARTICIPANT_LEFT(122421585<6505088d-bf01-4b66-8b7c-35e2cf195a06\1>, Jim Johnson<111248954663623>)
[11:47:46] – [Verbose] [122421585] <=Bamboo : <Arka_NotifyUserLeave ConfId=”6505088d-bf01-4b66-8b7c-35e2cf195a06\1″ MessageId=”18″ UserId=”111248954663623″/>

In the TelephonyService.log we will see:

[2014-01-24 11:47:45,272] [FCSj_Worker:6] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=7b15ec77-3c0a-439f-bc7f-d1fd77eb593b, conference-id=xxxxxxxxxx, unset=true, action=conference-call-out, adaptor-id=arkadin-adaptor}
[2014-01-24 11:47:45,272] [FCSj_Worker:6] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}
[2014-01-24 11:47:46,600] [Thread :: bambooEvents] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=7b15ec77-3c0a-439f-bc7f-d1fd77eb593b, conference-id=xxxxxxxxxx}

For an external hangup (not due to Adobe):

In the meeting (application.log) log we will see:

2014-01-24 12:14:49 26224 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } –
2014-01-24 12:14:49 26224 (s)2641173 shouldBeKilled p_userID=2 advUserDesc.isNotInLive=true –
2014-01-24 12:14:49 26224 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-24 12:14:49 26224 (s)2641173 dispatchRPCEventToClient: userId=2 p_evtObj.type=userPhoneStatusChanged –
2014-01-24 12:14:49 26224 (s)2641173 Remove the user 2 –
2014-01-24 12:14:49 26224 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=2, eject=undefined } -

In the Arkadin_Adaptor.log we will see:

[12:14:49] – [Verbose] [122421585] <=Bamboo : <Arka_NotifyUserLeave ConfId=”9e73d0b5-0525-4e17-9d77-af7a1e42a0e7\1″ MessageId=”9″ UserId=”26147684307333456″/>
[12:14:49] – [Info] [122421585] PARTICIPANT_LEFT(122421585<9e73d0b5-0525-4e17-9d77-af7a1e42a0e7\1>, xxxxxxxxxx<26147684307333456>)
[12:14:49] – [Verbose] [122421585] =>Adobe : userOffline(4d267465-ebd1-4968-893c-1428e61eaa2b)

In the TelephonyService.log we will see:

[2014-01-24 12:14:49,679] [Thread :: bambooEvents] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=4d267465-ebd1-4968-893c-1428e61eaa2b, conference-id=122421585}

 

InterCall

For an Adobe responsible hangup (deliberate):

In the meeting (application.log) log we will see:

2014-01-24 12:41:38 80764 (s)2641173 TelephonyServiceConnector, Calling action: conference-call-out –
2014-01-24 12:41:38 80764 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-24 12:41:38 80764 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS RESP-10 conference-call-out -

In the Intercall_Adaptor.log we will see:

[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Conference Code: xxxxxxxxx
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Conversation Id: xxxxxx.adobeconnect.com_intercall-adaptor_323_-555337
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Connect part Id: Jim Johnson_196253313@1-xxx-xxx-xxxx
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Intercall part Id: 1
[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) Intercall.IntercallConference – FCSj_Worker:11:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:hangUp:Intercall-1.3:intercall-adaptor:Hanging up user

In the TelephonyService.log we will see:

[2014-01-24 12:41:38,208] [FCSj_Worker:11] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=Jim Johnson_196253313@1-xxx-xxx-xxxx, conference-id=xxxxxx.adobeconnect.com_intercall-adaptor_323_-555337, unset=true, action=conference-call-out, adaptor-id=intercall-adaptor}
[2014-01-24 12:41:38,302] [FCSj_Worker:11] (DEBUG) rtmp.RTMPConnection – Returning telephony action response to MeetingApp. acrion: conference-call-out, response: {code=ok}

For an external hangup (not due to Adobe):

In the meeting (application.log) log we will see:

2014-01-27 11:09:58 99308 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } –
2014-01-27 11:09:58 99308 (s)2641173 shouldBeKilled p_userID=2 advUserDesc.isNotInLive=true –
2014-01-27 11:09:58 99308 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-27 11:09:58 99308 (s)2641173 dispatchRPCEventToClient: userId=2 p_evtObj.type=userPhoneStatusChanged –
2014-01-27 11:09:58 99308 (s)2641173 Remove the user 2 –
2014-01-27 11:09:58 99308 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=2, eject=undefined } -

In the Intercall_Adaptor.log we will see:

[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallEventHandler – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallEventHandler:onEvent:Intercall-1.3::Event received:
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallEventHandler – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallEventHandler:onEvent:Intercall-1.3::Got events for conversation xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503: com.intercall.www.CCAPICallback.xsd.spi.event.ParticipantLeftEvent@ceebb956
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallCallback – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallCallback:onParticipantLeftEvent:Intercall-1.3:intercall-adaptor:Now handling ParticipantLeftEvent for conversation ID xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Conference Code:xxxxxxxx
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Conversation Id: xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:ConnectPartId: 3
[2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) Intercall.IntercallConference – http-bio-9443-exec-6:com.macromedia.breeze_ext.telephony.Intercall.IntercallConference:removeParticipant:Intercall-1.3:intercall-adaptor:Removing this participant

In the TelephonyService.log we will see:

 [2014-01-27 11:09:58,902] [http-bio-9443-exec-6] (DEBUG) rtmp.RTMPConnection  – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=3, conference-id=xxxxxx.adobeconnect.com_intercall-adaptor_251_-523503}

PGI

For an Adobe responsible hangup (deliberate):

In the meeting (application.log) log we will see:

2014-01-27 11:35:33 120876 (s)2641173 Asc-Telephony IS_HANG_UP_USER Hangup a user. TS CALL-10 conference-call-out –
2014-01-27 11:35:33 120876 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=2, phoneStatus=0 } -

In the Premiere_Adaptor.log we will see:

[2014-01-27 11:35:33,628] [FCSj_Worker:15] (DEBUG) gateway.PTekGateway – PREMIERE TEL v800.000[FCSj_Worker:15]com.macromedia.breeze_ext.premiere.gateway.PTekGateway.hangUp:628:hangUp request received for confId:xxxxxx telephonyUserId:2501-129866748
[2014-01-27 11:35:33,629] [FCSj_Worker:15] (DEBUG) gateway.PTekConnection – PREMIERE TEL v800.000[premiere-adaptor][FCSj_Worker:15]com.macromedia.breeze_ext.premiere.gateway.Util$LoggingOutputStream.flush:162:
<PremiereConferencing ID=”xxxxxx” MsgID=”107″ PW=”xxxxxxxx” WebID=”xxxxxx” WebPW=”xxxxxxxx”>
<HangupParticipant ConfID=”xxxxxx” PartID=”2501-129866748″/>
</PremiereConferencing>
[2014-01-27 11:35:33,913] [Thread-677] (DEBUG) gateway.ConnectionHandler – PREMIERE TEL v800.000[premiere-adaptor][Thread-677]com.macromedia.breeze_ext.premiere.gateway.Util$LoggingOutputStream.flush:162:
<PremiereConferencing>
<UnsolicitedPartInfo>
<Result ErrorCode=”0″/>
<Participant ANI=”xxxxxxxxxx” ConfID=”xxxxxx” Connected=”False” DNIS=”xxxxxxxxxx” EndDate=”20140127″ EndTime=”173533″ Hold=”False” InQA=”False” IsQATalker=”False” ListenLevel=”0″ ListenOnly=”False” Mute=”False” PartID=”2501-129866748″ PartType=”Normal” StartDate=”20140127″ StartTime=”173417″ SubConfID=”” VoiceLevel=”0″/>
</UnsolicitedPartInfo>
</PremiereConferencing>

In the TelephonyService.log we will see:

[2014-01-27 11:35:33,628] [FCSj_Worker:15] (DEBUG) rtmp.RTMPConnection – Calling telephony action on request from MeetingApp. action: conference-call-out, parameters: {telephony-user-id=2501-129866748, conference-id=xxxxxx, unset=true, action=conference-call-out, adaptor-id=premiere-adaptor}
[2014-01-27 11:35:33,913] [Thread-677] (DEBUG) rtmp.RTMPConnection – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=2501-129866748, conference-id=xxxxxx}

For an external hangup (not due to Adobe):

In the meeting (application.log) log we will see:

2014-01-27 11:38:03 120876 (s)2641173 Asc-UserManager IS_SET_USER_PHONE_STATUS set user phone status { userID=3, phoneStatus=0 } –
2014-01-27 11:38:03 120876 (s)2641173 shouldBeKilled p_userID=3 advUserDesc.isNotInLive=true –
2014-01-27 11:38:03 120876 (s)2641173 dispatchEventToClient: p_evtObj.type=userPhoneStatusChanged p_isAdvancedEvent=true –
2014-01-27 11:38:03 120876 (s)2641173 dispatchRPCEventToClient: userId=3 p_evtObj.type=userPhoneStatusChanged –
2014-01-27 11:38:03 120876 (s)2641173 Remove the user 3 –
2014-01-27 11:38:03 120876 (s)2641173 Asc-UserManager IS_REMOVE_USER Removing user. { userID=3, eject=undefined } -

In the Premiere_Adaptor.log we will see:

<Participant ANI=”xxxxxxxxxx” ConfID=”xxxxxxx” Connected=”False” DNIS=”xxxxxxxxxx” EndDate=”20140127″ EndTime=”173803″ Hold=”False” InQA=”False” IsQATalker=”False” ListenLevel=”0″ ListenOnly=”False” Mute=”False” PartID=”2501-130152300″ PartType=”Normal” StartDate=”20140127″ StartTime=”173634″ SubConfID=”” VoiceLevel=”0″/>
</UnsolicitedPartInfo>
</PremiereConferencing>
[2014-01-27 11:38:04,019] [Thread-677] (INFO ) gateway.ConnectionHandler  – PREMIERE TEL v800.000[premiere-adaptor][Thread-677]com.macromedia.breeze_ext.premiere.gateway.ConnectionHandler.onUnsolicitedPartInfoMsg:337:Got error code: 0

In the TelephonyService.log we will see:

 [2014-01-27 11:38:04,019] [Thread-677] (DEBUG) rtmp.RTMPConnection  – Calling MeetingApp method. methodName: telephonyUserOffline, parameters: {telephony-user-id=2501-130152300, conference-id=4040116}

 

Using iframe to Invoke an Adobe Connect-hosted URL

Make sure that the iframe reference is formatted correctly.

When referencing an a meeting archive recording, it is best to first move an archive from under its parent meeting to the Connect Central content library before referring to it via iframe.

Do not let the URL of the archive recording redirect to Connect Central login page. To bypass the login screen you may either parse a username and password as a parameter in the URL or you may set permissions on the referenced content URL in Connect Central to allow for public viewing.  The latter option is usually the best. To avoid exposing the genuine user’s password as plain text in a GET request, it is usually best to simply make the recording public in Connect Central then link it. Alternatively, you may also create a new user in Connect Central with no other permissions except access to the referenced URL.

Referencing content in Connect Central that is set to public viewing:

<iframe src=http://connectdomainname.adobeconnect.com/customurl1″></iframe>

Referencing content by parsing a username and password:

<iframe src=”http://connectdomainname.adobeconnect.com/username?login=username@adobe.com&password=userpassword&account-id=12345678” width=”600″ height=”600″></iframe>

When referring to multiple URLs whether archives or MP4s or other Connect-hosted links, be sure to use a separate iframe reference for each Conenct URL rather than attempting to wrap all URLs in a single iframe reference. For example, two public links together in a table might look like this:

  <tr>
    <td width=”600″><iframe src=”http://connectdomainname.adobeconnect.com/customurl1″></iframe></td>
  </tr>
  <tr>
    <td><iframe src=”http://connectdomainname.adobeconnect.com/customurl2″></iframe></td>
  </tr>

Configuring Adobe Connect to take Advantage of Database Mirroring

Full redundancy requires that the Connect database be either mirrored or clustered; Adobe uses mirroring as the preferred solution.

The following example settings in the custom.ini file are needed to configure Connect to take advantage of SQL Mirroring:

DB_NAME=ConnectDBName

DB_HOST=ConnectDBPrimaryHostName

DB_BACKUP_HOST=ConnectDBSecondaryHostName

DB_URL=jdbc:macromedia:sqlserver://{DB_HOST}:{DB_PORT};databaseName={DB_NAME};user={DB_USER};password={DB_PASSWORD};AlternateServers=({DB_BACKUP_HOST}:{DB_PORT};DatabaseName={DB_NAME});ConnectionRetryCount=12;ConnectionRetryDelay=10;FailoverMode=extended;FailoverPreconnect=false;FailoverGranularity=atomic

Note: Change the first three variables as appropriate, but do not make any changes to the DB_URL.  It is all one line and it pulls the values from the other three entries in custom.ini:

The follwoing setting is always pudent whether using mirroring or clustering, but it is particularly important if you are clustering SQL. If you are running the Connect SQL database in a SQL cluster rather than in a mirrored environment, you will want to make sure that Connect makes multiple database connection attempts during SQL fail-over. If Connect loses its SQL database, the entire Connect cluster will go down and it will wait for an administrator to manually reconnect to the database through launching the Connect configuration console on port 8510. Add the following to the custom.ini file to support any delays in clustered SQL fail-over:

DB_URL_CONNECTION_RETRY_COUNT = 15
DB_URL_CONNECTION_RETRY_DELAY= 30

The actual JDBC string That invokes these variables is in the config.ini file:

DB_URL=jdbc:macromedia:sqlserver://{DB_HOST}:{DB_PORT};databaseName={DB_NAME};user={DB_USER};password={DB_PASSWORD};ConnectionRetryCount={DB_URL_CONNECTION_RETRY_COUNT};ConnectionRetryDelay={DB_URL_CONNECTION_RETRY_DELAY}

Save the custom.ini and cycle the services.

 

 

Event Template Account Logo will not Publish

Issue: The Connect Events template account logo in AEM does not change when you attempt publish a new template logo

Solution: To change the account logo on Event templates, you need to change the account logo of the Connect account from within Connect Central:

Click on the the thumbnail image to see the Customization page in Connect Central: Administration > Customization > Customize Central

Event-logo-CC.fw

 

For more information on Connect Central customization options see the following help link: Customize the Adobe Connect Central user interface

For more customization options see the following resource: Extensions : Solution extensions

For more information on Events Templates see the following tutorials:

Creating and Editing Event Templates

Resetting the Default Event Templates in Adobe Connect

Creating a Two Person Event Template with Adobe Connect

Event Administration in Adobe Connect 9

Adobe Connect 9: Event Migration Guide

Improving the Performance of Connect Meeting Clustered Fail-over

To improve the performance of Connect Meeting fail-over in a cluster, make the following changes to the custom.ini file and cycle the FMS and Connect services or reboot the connect servers:

The installation documentation for clustering originally prescribed setting the MEETING_TIMEOUT variable to 0 as shown:

#For Connect 8&9 Cluster fail-over add the following
MEETING_TIMEOUT=0
MEETING_CONNECT_BACK_TIME=1

We have discovered that in versions of Connect 9 prior to 9.2, setting the MEETING_TIMEOUT variable to 1 insures that a meeting will only have one active session while setting the MEETING_TIMEOUT variable to 0 opens the possibility (although rare) of a meeting having more than one active session. The result is a bit odd. Everyone could be happily in an ongoing Connect meeting while one attendee is alone in what appears to be the same meeting. This is usually triggered by an some form interruption in the isolated users meeting session such as from a brief outage in the network connection of the isolated user.

The recommended custom.ini setting for Connect 9 servers prior to version 9.2 looks as follows:

#For Connect 9 Cluster fail-over add the following
MEETING_TIMEOUT=1
MEETING_CONNECT_BACK_TIME=1

Save the custom.ini after making the change and cycle the Flash Management Sever and Adobe Connect Server services.

In Connect version 9.2, the meeting timeout session may be set back to 0 as we have made the appropriate code changes to insure the functionality works as originally intended even if a user experiences network interruptions and must reconnect to the meeting.

SSL Configuration Checklist for Connect with AEM-based Events

This supplemental checklist alongside the  Adobe Connect installation guide and the SSL Configuration guide, will help expedite your SSL implementation of Connect with AEM-Events:

1. Always begin with a fully functional installation of Connect and AEM-based Events before adding SSL; Do not attempt to secure a server that is not fully tested to run all features without SSL: A server running all features in the clear with no problems manifested is the only place to begin.

2. Decide whether to use hardware-based or software-based SSL and obtain appropriate public certificates and FQDN’s. If needed, see Mohit’s excellent instructions to generate CSRs. If you are using software-based SSL, stunnel can either be installed locally or on a separate server. If you are using hardware-based SSL you will want to refer to the relevant third-party documentation along with that provided by Adobe. For F5 BIG-IP LTM, the following articles along with this blog article and the resources aforementioned will help:

For information about stunnel installation options with Connect 9, see Jim’s blog post on Adobe Connect 9.0.0.1 and 9.1 stunnel installation options. Within the 9.0.0.1 installation folder, under  \Adobe Connect 9.0.0.1\Adobe Connect\Merge_Modules, we provide the installer for  stunnel-4.53.  From there, you can install Stunnel 4.53 for your SSL deployment. Adobe QE has tested stunnel version 4.56 collocated with Connect – installed within the Connect installation directory. These days it is arguably prudent to use the latest security option tested. Depending on the version of Connect you are running, if you wish to use stunnel locally, then you would create and/or populate the stunnel directory under the root install directory: Connect\9.1.2\stunnel.

Click on this thumbnail diagram below to see what it would look like with a hardware-based SSL accelerator:

C9SSLAEMSingle

Click on this thumbnail diagram below to see what it would look like with stunnel collocated with Connect:

C9SSLAEMStunnel

The rest of this checklist & summary will assume stunnel is being used collocated with Connect, but the configuration variables will apply to hardware-based external SSL acceleration options as well and even a casual glance back at these diagrams will help you infer the differences.

The sample file editing offered herein will be based on the single server stunnel example depicted in the diagram above.

3. Four FQDN’s are required: This is how our working example FQDN list would appear in a host file.

  • 192.167.21.176  connectmtg.domain.com
  • 192.167.21.175 connect.domain.com
  • 192.167.21.174:443  cqauthor.domain.com
  • 192.167.21.173:443  cqpublisher.domain.com

4. Four certificates (or a wildcard certificate) is needed; here is the list of certificates for SSL following our example:

  • connectmtg.domain.com
  • connect.domain.com
  • cqauthor.domain.com
  • cqpublisher.domain.com

Note: These are depicted in our working example as a wildcard certificate: domain.com. If the certificates are not trusted public certificates, then meeting rooms will not open; self-signed certificates will not work with meeting unless they are installed on all clients. Place the certificates into the stunnel installation directory: \Connect\9.1.2\stunnel\

5. Backup and edit the stunnel.conf file: in the \Connect\9.1.2\stunnel\ directory to set up the four VIPs and pools:

stunnel.conf for four servers on one
; Protocol version (all, SSLv2, SSLv3, TLSv1)
sslVersion = all
; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
TIMEOUTclose=0
options = DONT_INSERT_EMPTY_FRAGMENTS
; Service-level configuration
[https-vip]
; incoming vip for https (to secure Connect Application Traffic)
; ip address of the server with stunnel on it
; listens on port 443
accept =192.167.21.175:443
; ip of the connect server
; send the unecrypted request to port 8443
connect =127.0.0.1:8443
; Certificate info for Connect cert key in stunnel root
cert = domain.com.cert.pem
key = domain.com.key.pem
[rtmps-vip]
; incoming vip for fms (to secure Connect Meeting Traffic)
accept = 192.167.21.176:443
; ip of the fms server
; Send unencrypted request to 1935
connect = 127.0.0.1:1935
; Certificate info for Connect meeting cert key in stunnel root
cert = domain.com.cert.pem
key = domain.com.key.pem
[CQ_Author-vip]
; incoming vip for CQ-Author (to secure AEM-based Events Authoring)
accept = 192.167.21.174:443
; ip of the CQ Author server
; Send unencrypted request to 4502
connect = 127.0.0.1:4502
; Certificate info for CQ Author cert key in stunnel root
cert = domain.com.cert.pem
key = domain.com.key.pem
[CQ_Publisher-vip]
; incoming vip for CQ-Publisher (to secure AEM-based Events Publishing)
accept = 192.167.21.173:443
; ip of the CQ Publisher server
; Send unencrypted request to 4503
connect = 127.0.0.1:4503
; Certificate info for CQ Publisher cert key in stunnel root
cert = domain.com.cert.pem
key = domain.com.key.pem

6. Next backup and edit the custom.ini file: By default, the custom.ini will point to 4502 and 4502 for CQ Author and Publisher respectively; you must change the links to reflect https rather than http and also change the  names to the correct FQDNs and also enable SSL for Connect with these following entries:

CQ_AUTHOR_SERVER=https://author.adobeconnect.com
CQ_PUBLISH_SERVER=https://publisher.adobeconnect.com
DOMAIN_COOKIE=adobeconnect.com
ADMIN_PROTOCOL=https://
SSL_ONLY=yes
RTMP_SEQUENCE=rtmps://external-host:443/?rtmp://localhost:8506/

7. Next backup and edit the server.xml file; in the \appserv\conf\ directory; uncomment two sections depicted here to enable SSL:

<Executor name=”httpsThreadPool”
namePrefix=”https-8443-”
maxThreads=”350″
minSpareThreads=”25″/>

<Connector port=”8443″ protocol=”HTTP/1.1″
executor=”httpsThreadPool”
enableLookups=”false”
acceptCount=”250″
connectionTimeout=”20000″
SSLEnabled=”false”
scheme=”https”
secure=”true”
proxyPort=”443″
URIEncoding=”utf-8″/>

Note: Be sure to test the server.xml file for correct editing by opening it in a browser and viewing any syntax errors.

8. After configuring the stunnel.conf, the custom.ini and the server.xml file for all four server instances, stop all five the services in the following order:

  • Adobe Connect CQ Author
  • Adobe Connect CQ Publisher
  • Adobe Connect Server
  • Adobe Flash Media Server
  • stunnel

9. After all services are completely stopped, start all five services in reverse order; do not cheat and just restart each one successively.

  • stunnel
  • Adobe Flash Media Server
  • Adobe Connect Server
  • Adobe Connect CQ Publisher
  • Adobe Connect CQ Author

10. Open a browser on the Connect server; go to localhost:4502 and log into CQ5 Author as an administrator and edit the URL

  • Select CRXDE Lite on the menu list on the right side of the screen
  • Go to: content>connect>c1>jcr:content
  • Scroll to the serverURL line
    • Edit the URL for https
    • https://cqauthor.domain.com

11. Open a browser on the Connect server and go to localhost:4503 and log into CQ5 Publisher as an administrator and edit the URL

  • Select CRXDE Lite on the right menu list
  • Go to content>connect>c1>jcr content
  • Scroll to the serverURL line
    • Edit the URL for https
    • https://cqpublisher.domain.com

12. Open a browser on the Connect server and go to localhost:4502/system/console/configmgr and log in as an administrator and edit the author externalizer name and statistics URL

  • Scroll to and edit the Day CQ Link Externalizer and edit the hostname value to reflect the FQDN of the Author server
  • cqauthor.domain.com
  • Scroll to and edit the Day CQ WCM Page Statistics and edit the localhost:4502 URL to reflect the FQDN of the Author server and HTTPS
  • https://cqauthor.domain.com/libs/wcm/stats/tracker

13. Open a browser on the Connect server and go to localhost:4503/system/console/configmgr and log in as an administrator and edit the publisher externalizer name and statistics URL

  • Scroll to and edit the Day CQ Link Externalizer and edit the hostname value to reflect the FQDN of the Publisher server
  • cqpublisher.domain.com
  • Scroll to and edit the Day CQ WCM Page Statistics and edit the localhost:4503 URL to reflect the FQDN of the Author server and HTTPS
  • https://cqpublisher.domain.com/libs/wcm/stats/tracker

14. Stop all services and and restart as shown in steps 8 & 9 or reboot the server

15. Log into Connect and test all features including the Events module.

Troubleshooting appendix:

  • Check to make sure all five  services are running and start any that are not running.
  • Once all the services are up, click on the stunnel.exe icon in the stunnel directory and insure that stunnel runs without errors
    • If stunnel.exe throws an error then examine the stunnel.conf for syntax problems
    • If stunnel.exe starts successfully then look elsewhere for problems
  • If  Firefox browsers Fail to Connect when stunnel is used to secure Adobe Connect, then double check to be sure that the
    • sslVersion = all
    • fips = no
  • To make certain the help files are served via SSL, follow the instructions in Jim’s blog article: Changing the Help Links to use HTTPS://
  • Make sure there is not a passphrase on stunnel: see Jim’s blog article Adobe Connect Stunnel prompting for passphrase when server/services restarts
  • If stunnel does not start with Connect upon reboot, this technique will help: Stunnel does not Startup with Connect
  • Depending on the version of Connect you are running, you may need to add the certificate to the java CA certificates in Connect in order to allow images in the AEM-based Events module to appear in Connect. Ignore this step unless you are running Connect 9.0.0.1 and even then, if at all possible, simply use a later version of Connect instead as this issue has been fixed and this workaround is made superfluous for later versions:
    • For 9.0.0.1, export and then import the SSL certificate: Log into Connect and click on the lock in the URL line to the left of HTTPS and click the button in the pop-up: More Information>View Certificates>Details>Export to export the SSL certificate. Save the certificate in the jre\bin directory in the root install directory for Connect: Connect\9.1.2\jre\bin
    • Use the command prompt to complete the importation: F:\Connect\9.1.2\jre\bin> keytool -import -trustcacerts -alias connect -file certificate-name -keystore cacerts
      • The default password is changeit.
      • Overwrite any existing certificate.
      • The italicized alias connect is a variable
      • The italicized certificate-name must match the name of the certificate

Adobe Connect 9.2 Announced

Last week (12/10) Adobe announced Adobe Connect 9.2, which is due in early 2014.  This release will bring several key enhancements to Adobe Connect including a new filmstrip mode for the video pod, a redesigned workflow for new users, and the ability to register and login to events using your social media profiles.

The Connect blog post around the release is live here. 

The Featured Topic on the Connectusers homepage is now set to reflect the 9.2 announcement. Included on connectusers are the following:

– Video tutorial on the integration with social profiles

– Tutorial on using the new video pod

– What’s New with Adobe Connect 9.2  (overview document)

 

Connect on-premise server: Warning messages in Event viewer, registry connection rejected

On some installations of Connect on-premise in combination with FMG you might observe a large number of regular warning messages for the FMS Edge process in the Windows Event viewer as well as the servers edge.log file.

The message in \Connect\logs\support\diagnostic\edge.00.log would look like this:

Connection rejected by server. Reason : [ Server.Reject ] : Registry connection rejected, this adaptor is _defaultRoot_ and the registry only accepts connections on originhost -

In the Event Viewer you would see this in regular intervals:

event_viewer_registryConnectionRejected

 

If you see these in the logs on your Connect server machine and FMG is hosted on the same machine, do the following:

1. Browse to: C:\Connect\9.1.1\Flash Media Gateway\2.0.1.19_8x8\conf\

or if you run 9.0.x browse to:   C:\Connect\Flash Media Gateway\2.0.1.15\conf\

2. Take a backup copy of the rtmp.xml

3. Open the file rtmp.xml in an XML friendly editor like Notepad++ or Textpad.

4. Locate this section at the top:

<Registrations>
<LegService>
<!-- List of FMS & service names for LegService registry connnections                    -->
<!-- Format is <Server host = "Flash Media server IP/hostname">servicename</Server>        -->
<!-- Please refer to documentations for applicable restriction on the values            -->
<Server host = "localhost">telephony</Server>
</LegService>
<ControlService>
<!-- List of FMS & service names for ControlService registry connections    -->
<!-- Format is <Server host = "server IP/hostname">servicename</Server>        -->
<!-- Sample entry:                                                            -->
<Server host = "localhost">telephony_control</Server>
</ControlService>
</Registrations>

5.  In the above section, modify these two lines:

<Server host = “localhost”>telephony</Server>

<Server host = “localhost”>telephony_control</Server>

to include a port number:

<Server host = “localhost:8506“>telephony</Server>

<Server host = “localhost:8506“>telephony_control</Server>

6. Save the changes and restart the FMG service.