No presence information

Hi,
I have installed/configured webmeetings, kopano-presence and webapp-meetings plugin.
Messaging and video calls work normaly, the problem is I can’t see presence information nowhere in webapp, but looking at the logs, it’s updating presence status:

2018-04-24 16:22:59,492 - presence - DEBUG - spreed: user1 available
2018-04-24 16:23:00,424 - presence - DEBUG - spreed: user2 available
2018-04-24 16:24:03,581 - presence - DEBUG - spreed: user2 available
2018-04-24 16:24:04,529 - presence - DEBUG - spreed: user1 available

Is there anything else that needs to be done?

Hello,

I don’t think this answers your question directly but perhaps you can look at these two threads.

https://forum.kopano.io/topic/521/webmeeting-config/2
https://forum.kopano.io/topic/119/turn-server

@mcostan
I had already seen those threads.
As I said webmettings is working normally (can make video calls, send/receive messages), only presence isn’t available/shown in Webapp.

Hi @nbj,

is it like “you don’t know where these information are supposed to be displayed” or “you know where you’d find them, but they are missing”?

From the logging I would expect that it indeed does work. Could it be that your browser is blocking it? Which versions of WebApp and the Spreed plugin are you using?

There’s no presence information in webapp (not in GAB contacts or emails received) . My setup is one server with webapp/webmeetings (only apache) and other with kopano-core/Kopano-presence. I tried running webapp/webmeetings in the same server as Kopano-core but the result was the same.

It doesn’t seems to be a browser problem because I did a test installation with the univention server and presence worked as expected.

By the way, I fully translated WebApp and MDM to European Portuguese (Kopano-core and files plug-in are work in progress) . I have the po file and I could send it to you.

WebApp 3.4.12.1412+793.1
Webmeetings 0.29.5-1

Did a tcpdump in the server running kopano-core/kopano-presence and got this:
webapp does a PUT:

{"AuthenticationToken":"1524764456:nuno:MCPYJC86G9BIZWXB4ISDZSMO+BAECMT+OG7TEKIYLAG=","Type":"UserStatus","UserStatus":[{"user_id":"nuno@ola.pt","spreed":{"status":"unavailable","message":""}}]}

kopano-presence responds:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 0
Server: Werkzeug/0.10.4 Python/2.7.12
Date: Thu, 26 Apr 2018 17:42:16 GMT

after that webapp does a POST:

{"AuthenticationToken":"1524764836:nuno:LUPGH/HSUHZZKZQIEK7CH9NUJXJSXPNWZYPUVKONGGW=","Type":"UserStatus","UserStatus":[]}

with a response from server:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 51
Server: Werkzeug/0.10.4 Python/2.7.12
Date: Thu, 26 Apr 2018 17:42:19 GMT

{
    "Type": "UserStatus", 
    "UserStatus": []
}

So this why I get no presence information in webapp.

In the working uninvention server the first PUT it’s the same, but the POST is different:

{"AuthenticationToken":"1524765181:teste12:IU9YABEBYYBEFTU/FLX+0REEILHRFCQ3FK/MS73EIIS=","Type":"UserStatus","UserStatus":[{"user_id":"asdf"}]}

Server responds with:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 216
Server: Werkzeug/0.9.6 Python/2.7.9
Date: Thu, 26 Apr 2018 17:48:05 GMT

{
    "Type": "UserStatus", 
    "UserStatus": [
        {
            "user_id": "asdf", 
            "spreed": {
                "status": "available", 
                "message": ""
            }
        }
    ]
}

Don’t know if it’s the incomplete POST that’s causing the response to also be empty or if it’s unrelated. Any ideas what can be causing this behaviour?

I found this scripts (https://stash.kopano.io/users/jvanderwaa/repos/kopanocore/browse/ECtools/presence/test) to test the presence server and it works:

 curl -u presenca:presence -X GET -d '{"AuthenticationToken":"1524844924:nuno:CGPP7QJA5TJ78GAWCT5BXI8YLU2GHH4OL+QQM7PM3Y=", "Type": "UserStatus", "UserStatus": [{"user_id": "user1"}, {"user_id": "user2"}]}' https://wxxxxxx.xxxxxx.xx/webapp/presence -H "Content-Type: application/json"
{
    "Type": "UserStatus",
    "UserStatus": [
        {
            "user_id": "user1",
            "spreed": {
                "status": "available",
                "message": ""
            }
        },
        {
            "user_id": "user2",
            "spreed": {
                "status": "available",
                "message": ""
            }
        }
    ]

At this point I could say the problem was with webapp/webmeetings, but I changed the config files to use the kopano-core/kopano-presence running in the uninvention server and it works.

Running out of ideas. Any pointers?

If both systems are identical, then it must be something in your configuration. I’d recommend to get in touch with our support so they can have a look on your system.

Ps: https://stash.kopano.io/projects/KC/repos/kopanocore/browse would be the correct source repository.

@fbartels
Your post got me thinking, and even though both servers are running the LDAP plugin for authentication I went and tried with the unix plugin and VOILÁ, it works, I got presence information.

I’m using an Active Directory Windows 2012R2 back-end for authentication. Is there any special configuration needed for presence to work with this setup?

I know you just configured the Unix backend as a test, but I would urge not to use the Unix backend for production deployments. For one it’s vastly inferior to the ldap backend and for the other it’s not actively tested.

@nbj said in No presence information:

. Is there any special configuration needed for presence to work with this setup?

No, presence is pretty plug and play and does not really need configuration (it’s mostly only the secret/token). I can only imagine that this could be because of some attribute mapped in the ldap.propmap.cfg.

I would still urge you to get in contact with our support, so that we can investigate your configuration.

Figured out what the problem is. If I use the email address as ldap_loginname_attribute, presence does not work. If instead I use sAMAccountName presence works. Maybe has something to do with the ‘@’ in the user name?

Is this a bug or using email as the ldap_loginname_attribute isn’t supported in kopano-presence?

@fbartels
After applying the following modifications I finally got it working with the email address as the login.

First in /usr/share/kopano-webapp/client/kopano-debug.js ( not sure but it seems the part I modified comes from kopano-webapp/client/zarafa/core/data/UserIdObjectFactory.js):

// Add ZARAFA specific fields to the object
var recordEntryId = record.get('entryid');
var recordUsername = record.get('username');
var recordEmailAddress = record.get('email_address');
var recordSmtpAddress = record.get('smtp_address');

user.entryid = recordEntryId;

// Try to be smart to find the username and email address.
// Sometimes the username is available in the email_address field,
// sometimes the email address is available in the username field,
// and sometimes it is available in the smtp_address field.
if ( Ext.isString(recordUsername) && recordUsername.indexOf('@')==-1 ){
	user.username = recordUsername;
} else if ( Ext.isString(recordEmailAddress) && recordEmailAddress.indexOf('@')==-1 ){
	user.username = recordEmailAddress;
}

In my debugging recordUsername is empty/undefined because record.get(‘username’); returns nothing as there’s no username in record, eg:

account: ""
address_type: "ZARAFA"
assistant: ""
business2_telephone_number: ""
business2_telephone_number_mv: ""
business_telephone_number: ""
comment: ""
company_name: ""
country: ""
department_name: "IT"
display_name: "User2 Adeus"
display_type: 0
display_type_ex: 1073741824
email_address: "user2@adeus.pt"
entryid: "00000000ac21a95040d3ee48b319fba753304425010000000600000072000000457949424c762f4471306d7069456e355873375a41513d3d00000000"
fileas: "user2@adeus.pt"
full_name: "Adeus, User2"
given_name: "User2"
home2_telephone_number: ""
home2_telephone_number_mv: ""
home_telephone_number: ""
initials: ""
locality: ""
message_class: undefined
mobile_telephone_number: ""
object_type: 6
office_location: ""
office_telephone_number: ""
pager_telephone_number: ""
postal_code: ""
primary_fax_number: ""
search_key: "5a41524146413a55534552324041444555532e505400"
smtp_address: "user2@adeus.pt"
state_or_province: ""
street_address: ""
surname: "Adeus"
title: ""

Also noticed that email_address in record is populated with ldap_loginname_attribute.

So when you test else if ( Ext.isString(recordEmailAddress) && recordEmailAddress.indexOf('@')==-1 ){ user.username = recordEmailAddress; }, and are using an email as the login, it will fail and user.username will be empty. To make it work I changed it to else if ( Ext.isString(recordEmailAddress) { user.username = recordEmailAddress; }

The other file I modified was /usr/share/kopano-webapp/plugins/spreedwebrtc/jsspreedwebrtc-debug.js:

/**
* Will either add or remove an email_address to the watch list
*
* @param {String} email_address The email address to remove or add
* @param {String} remove optionally remove the user from the watch list
* @private
*/
updatePresenceWatchingList: function(email_address, entryId, smtp_address, remove) {


	if (!email_address || 0 === email_address.length) { return; }
	// skip non-Kopano email addresses
	if (email_address.indexOf('@') > -1) { return; }
	var index = this.presenceWatchingList.indexOf(email_address);

Same issue here. Removed if (email_address.indexOf('@') > -1) { return; }
so I don’t get an empty watch list and subsequent empty presence request.

With this modifications presence works using either sAMAccountName or mail as ldap_loginname_attribute.

Keep in mind that I’m no software developer nor do I know if there are implications anywhere else in Kopano. Hope this helps you solve the issue.