[sr-dev] oma_status-icon auid
Peter Dunkley
peter.dunkley at crocodile-rcs.com
Tue Oct 4 16:05:59 CEST 2011
For what it is worth, here is my xhttp event_route (works with Bria,
Jitsi, and some OMA clients):
event_route[xhttp:request] {
xlog("L_INFO", "$rm: event_route[xhttp:request]\n");
xdbg("===== xhttp: request [$rv] $rm => $hu\n");
if($hu=~"^/xcap-root/") {
set_reply_close();
set_reply_no_connect();
# Jitsi...
if ($hu=~"^/xcap-root/resource-lists/users/.*/index$")
$var(doc_uri) = $(hu{re.subst,/(^\/xcap-root\/resource-lists\/users
\/.*\/).*$/\1generallist.xml/});
else if ($hu=~"^/xcap-root/pres-rules/users/.*/presrules$")
$var(doc_uri) = $(hu{re.subst,/(^\/xcap-root\/)pres-rules(\/users\/.*
\/)presrules/\1org.openmobilealliance.pres-rules\2pres-rules/});
else if ($hu=~"^/xcap-root/oma_status-icon/users/.*/.*$")
$var(doc_uri) = $(hu{re.subst,/(^\/xcap-root
\/)oma_status-icon(\/users\/.*\/).*
$/\1org.openmobilealliance.pres-content\2oma_status-icon\/preseImage/});
# Bria...
else if
($hu=~"^/xcap-root/resource-lists/users/.*/contacts-resource-list.xml$")
$var(doc_uri) = $(hu{re.subst,/(^\/xcap-root\/resource-lists\/users
\/.*\/).*$/\1generallist.xml/});
else if ($hu=~"^/xcap-root/resource-lists/users/.*/resource-list.xml
$")
$var(doc_uri) = $(hu{re.subst,/(^\/xcap-root\/resource-lists\/users
\/.*\/).*$/\1generallist.xml/});
# No modification required...
else
$var(doc_uri) = $hu;
# xcap ops
$xcapuri(u=>data) = $var(doc_uri);
if($xcapuri(u=>xuid)=~"^sip:.+ at .+")
$var(uri) = $xcapuri(u=>xuid);
else if($xcapuri(u=>xuid)=~".+ at .+")
$var(uri) = "sip:" + $xcapuri(u=>xuid);
else
$var(uri) = "sip:"+ $xcapuri(u=>xuid) + "@" + $Ri;
xlog("L_INFO", " $var(doc_uri) requested by $var(uri)\n");
if($xcapuri(u=>auid)=="xcap-caps") {
$var(xbody) =
"<?xml version='1.0' encoding='UTF-8'?>
<xcap-caps xmlns='urn:ietf:params:xml:ns:xcap-caps'>
<auids>
<auid>rls-services</auid>
<auid>pidf-manipulation</auid>
<auid>xcap-caps</auid>
<auid>resource-lists</auid>
<auid>pres-rules</auid>
<auid>org.openmobilealliance.pres-rules</auid>
<auid>org.openmobilealliance.user-profile</auid>
<auid>org.openmobilealliance.pres-content</auid>
</auids>
<extensions>
</extensions>
<namespaces>
<namespace>urn:ietf:params:xml:ns:rls-services</namespace>
<namespace>urn:ietf:params:xml:ns:pidf</namespace>
<namespace>urn:ietf:params:xml:ns:xcap-caps</namespace>
<namespace>urn:ietf:params:xml:ns:resource-lists</namespace>
<namespace>urn:ietf:params:xml:ns:pres-rules</namespace>
<namespace>urn:oma:xml:xdm:user-profile</namespace>
<namespace>urn:oma:xml:prs:pres-content</namespace>
</namespaces>
</xcap-caps>";
xhttp_reply("200", "OK", "application/xcap-caps+xml",
"$var(xbody)");
exit;
}
#!ifdef WITH_XHTTPAUTH
if (!www_authenticate("$(xcapuri(u=>xuid){uri.host})", "subscriber")) {
www_challenge("$(xcapuri(u=>xuid){uri.host})", "0");
exit;
}
if ($retcode == 2) {
xhttp_reply("403", "Forbidden", "", "");
exit;
}
#!endif
switch($rm) {
case "PUT":
#!ifdef WITH_XHTTPAUTH
# be sure only auth user updates its documents
if ($au!=$(var(uri){uri.user})) {
xhttp_reply("403", "Forbidden", "", "");
exit;
}
#!endif
xcaps_put("$var(uri)", "$var(doc_uri)", "$rb");
if($xcapuri(u=>auid)=~"pres-rules") {
pres_update_watchers("$var(uri)", "presence");
pres_refresh_watchers("$var(uri)", "presence", 1);
} else if ($xcapuri(u=>auid)=~"resource-lists") {
rls_update_subs("$var(uri)", "presence");
}
exit;
break;
case "GET":
#!ifdef WITH_XHTTPAUTH
$var(furi) = "sip:" + $au + "@" + $ar;
if ($au!=$(var(uri){uri.user})) {
# be sure only auth user gets its non-profile documents
if (!($xcapuri(u=>auid)=~"user-profile" ||
$xcapuri(u=>auid)=~"pres-content")) {
xhttp_reply("403", "Forbidden", "", "");
exit;
} else {
# be sure only permitted user gets others profile documents
pres_auth_status("$var(furi)", "$var(uri)");
#!ifdef WITH_PROFILEAUTHONLY
if ($retcode != 1) {
#!else
if ($retcode == 3) {
#!endif
xhttp_reply("403", "Forbidden", "", "");
exit;
}
}
}
#!endif
xcaps_get("$var(uri)", "$var(doc_uri)");
exit;
break;
case "DELETE":
#!ifdef WITH_XHTTPAUTH
# be sure only auth user deletes its documents
if ($au!=$(var(uri){uri.user})) {
xhttp_reply("403", "Forbidden", "", "");
exit;
}
#!endif
xcaps_del("$var(uri)", "$var(doc_uri)");
if($xcapuri(u=>auid)=~"pres-rules") {
pres_update_watchers("$var(uri)", "presence");
pres_refresh_watchers("$var(uri)", "presence", 1);
} else if ($xcapuri(u=>auid)=~"resource-lists") {
rls_update_subs("$var(uri)", "presence");
}
exit;
break;
}
}
# http ops
xhttp_reply("404", "Not Found", "", "");
exit;
}
On Tue, 2011-10-04 at 14:58 +0100, Peter Dunkley wrote:
> There is a limit of 64kb on documents in the DB.
>
> Andy Miller recently added a new configuration file option
> (sql_buffer_size) that lets you change that.
>
> Increasing the SQL buffer size and using the reg-ex's that I put in my
> last email should enable you to have avatars/icons with Jitsi.
>
> Regards,
>
> Peter
>
> On Tue, 2011-10-04 at 14:54 +0300, Juha Heinanen wrote:
>
> > Daniel-Constantin Mierla writes:
> >
> > > are the operations related to this only about storing/updating/fetching
> > > and removing some xml file/parts per user? If yes, then just the XCAP
> > > URL parser should be extended to support the auid, so it should not be
> > > complex at all.
> >
> > i started to work on it. when i try to put an icon to xcap server, i
> > get errors
> >
> > Oct 4 14:45:07 sip /usr/sbin/pres-serv[15261]: ERROR: <core> [tcp_read.c:321]: ERROR: tcp_read: buffer overrun, dropping
> > Oct 4 14:45:07 sip /usr/sbin/pres-serv[15261]: ERROR: <core> [tcp_read.c:882]: ERROR: tcp_read_req: error reading
> > Oct 4 14:45:07 sip /usr/sbin/pres-serv[15262]: ERROR: <core> [tcp_read.c:321]: ERROR: tcp_read: buffer overrun, dropping
> > Oct 4 14:45:07 sip /usr/sbin/pres-serv[15262]: ERROR: <core>
> > [tcp_read.c:882]: ERROR: tcp_read_req: error reading
> >
> > size of the icon is 61572 bytes and content length containing base64
> > encoded icon is 83285 bytes. is that too much for sip router or
> > what could the problem be?
> >
> > during put operation, wireshark shows lots of red, which means
> > tcp.flags.reset eq 1.
> >
> > -- juha
> >
> > _______________________________________________
> > sr-dev mailing list
> > sr-dev at lists.sip-router.org
> > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
--
Peter Dunkley
Technical Director
Crocodile RCS Ltd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20111004/8018b6f6/attachment-0001.htm>
More information about the sr-dev
mailing list