Add the Cisco call-id to the Access-Request packet too.

git-svn-id: http://yate.null.ro/svn/yate/trunk@6093 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2016-02-15 15:31:43 +00:00
parent 95280ee6ab
commit dd5c21a636
1 changed files with 29 additions and 18 deletions

View File

@ -1176,8 +1176,7 @@ void RadiusClient::addAttributes(NamedList& params, NamedList* list)
NamedString* s = list->getParam(i);
if (!s)
continue;
if (s->name().startsWith("inc:",false)) {
String attr = s->name().substr(4).trimBlanks();
if ((s->name() == YSTRING("rad_include")) || s->name().startsWith("inc:",false)) {
if (*s == *list)
Debug(&__plugin,DebugWarn,"Section '%s' includes itself!",s->c_str());
else
@ -1384,6 +1383,8 @@ bool AuthHandler::received(Message& msg)
String user;
if (!radclient.prepareAttributes(msg,false,&user))
return false;
bool cisco = msg.getBoolValue(s_fmtCisco,radclient.addCisco());
bool quintum = msg.getBoolValue(s_fmtQuintum,radclient.addQuintum());
// TODO: process plaintext password
if ((proto == "digest") || (proto == "sip")) {
const char* resp = msg.getValue("response");
@ -1413,24 +1414,34 @@ bool AuthHandler::received(Message& msg)
int sep = address.find(':');
if (sep >= 0)
address = address.substr(0,sep);
if (radclient.addCisco())
if (cisco)
radclient.addAttribute("h323-remote-address",address);
if (radclient.addQuintum())
if (quintum)
radclient.addAttribute("Quintum-h323-remote-address",address);
String billid = msg.getValue("billid");
if (billid) {
// create a Cisco-compatible conference ID
MD5 cid(billid);
String confid;
confid << cid.hexDigest().substr(0,8) << " ";
confid << cid.hexDigest().substr(8,8) << " ";
confid << cid.hexDigest().substr(16,8) << " ";
confid << cid.hexDigest().substr(24,8);
confid.toUpper();
if (s_cisco)
radclient.addAttribute("h323-conf-id",confid);
if (s_quintum)
radclient.addAttribute("Quintum-h323-conf-id",confid);
if (cisco || quintum) {
const String& billid = msg[YSTRING("billid")];
if (billid) {
// create a Cisco-compatible conference ID
MD5 cid(billid);
String confid;
confid << cid.hexDigest().substr(0,8) << " ";
confid << cid.hexDigest().substr(8,8) << " ";
confid << cid.hexDigest().substr(16,8) << " ";
confid << cid.hexDigest().substr(24,8);
confid.toUpper();
String tmp("call-id=");
if (address.null())
address = s_localAddr.host();
tmp << billid << "@" << address;
if (cisco) {
radclient.addAttribute("h323-conf-id",confid);
radclient.addAttribute("Cisco-AVPair",tmp);
}
if (quintum) {
radclient.addAttribute("Quintum-h323-conf-id",confid);
radclient.addAttribute("Quintum-AVPair",tmp);
}
}
}
ObjList result;