[OpenSER-Users] SIP SIMPLE - XMPP interoperability issue
Jeremy McNamara
jj at nufone.net
Sat Apr 26 21:30:45 CEST 2008
Gaoqiang Qian wrote:
>Hello everyone,
>
>I have setup the openser server with the very basic default
>configuration. Now I have to configure my openser server to connect
>with a xmpp envoironment on another host with a purpose of piloting
>the SIP SIMPLE - XMPP IOP.
>
>So does anyone here have successful experience of configure openser to
>connect with XMPP on different hosts? Or could someone provide me some
>instruction how to configure it.
>
>
>
I have not been able to make SIMPLE -> XMPP work. I have attached my
config below.
Also, what I do not understand is how the jabber server (jabberd2 in my
case) knows how to deal with the
sip_username<delim>openser_domain at xmpp_domain sitaution.
My jabber secret is the default secret.
Here is my config:
listen=udp:1.2.3.4:5060
mpath="/usr/local/lib/openser/modules"
children = 8
debug = 3
fork = yes
log_stderror = no
disable_tcp = no
log_facility = LOG_DAEMON
tcp_children = 4
mhomed = no
server_signature = yes
reply_to_via = no
sip_warning = no
check_via = no
dns = no
rev_dns = no
disable_core_dump = no
dns_try_ipv6 = yes
dns_use_search_list = yes
loadmodule "usrloc.so"
modparam("usrloc", "db_url", "mysql://user:pass@localhost/openser")
modparam("usrloc", "db_mode", 2)
loadmodule "mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "registrar.so"
loadmodule "avpops.so"
loadmodule "pua.so"
modparam("pua", "db_url", "mysql://user:pass@localhost/openser")
loadmodule "pua_mi.so"
loadmodule "pua_usrloc.so"
modparam("pua_usrloc", "default_domain", "valid.domian.name")
loadmodule "rr.so"
modparam("rr", "enable_full_lr", 1)
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
loadmodule "xmpp.so"
modparam("xmpp", "domain_separator", "*")
modparam("xmpp", "gateway_domain", "valid.domain.name")
modparam("xmpp", "xmpp_domain", "valid.domain.name")
modparam("xmpp", "xmpp_host", "valid.domain.name")
modparam("xmpp", "backend", "component")
loadmodule "pua_xmpp.so"
modparam("pua_xmpp", "server_address", "sip:1.2.3.4:5060")
loadmodule "xlog.so"
modparam("xlog", "buf_size", 4096)
modparam("xlog", "force_color", 0)
loadmodule "uri.so"
loadmodule "presence.so"
modparam("presence", "db_url", "mysql://user:pass@localhost/openser")
modparam("presence", "max_expires", 60)
modparam("presence", "server_address", "sip:1.2.3.4:5060")
loadmodule "presence_xml.so"
modparam("presence_xml", "db_url","mysql://user:pass@localhost/openser")
modparam("presence_xml", "force_active", 1)
#### Main Routing Block ####
route {
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (msg:len >= max_len) {
sl_send_reply("513", "Message too big");
exit;
};
if (has_totag()) {
if (loose_route()) {
route(1);
} else {
if (is_method("SUBSCRIBE") && $rd = "1.2.3.4") {
# in-dialog subscribe requests
route(2);
exit;
}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# non loose-route, but stateful
ACK; must be an ACK after a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching
transaction ... ignore and discard.\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
if (is_method("CANCEL")) {
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# record routing
if (!is_method("REGISTER|MESSAGE"))
record_route();
if (!uri==myself)
route(1);
if(is_method("PUBLISH|SUBSCRIBE"))
route(2);
if (is_method("MESSAGE")) {
# THIS DOESN'T WORK EITHER :(
xlog("Processed MESSAGE method\n");
if (xmpp_send_message()) {
t_reply("200", "Accepted");
} else {
sl_send_reply("404", "Not found");
}
exit;
}
if (is_method("REGISTER")) {
sl_send_reply("100", "Trying");
#if (!www_authorize("", "subscriber")) {
# www_challenge("", "0");
# exit;
#};
if(!save("location")) {
xlog("L_ERR", "Saving contact failed - RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
sl_reply_error();
exit;
}
xlog("L_INFO", "Registration Successful - RURI=$ru
F=$fu\n");
exit;
};
if ($rU==NULL) {
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
if (is_method("INVITE")) {
xlog("L_INFO", "In invite\n");
if (!lookup("location")) {
xlog("L_ERR", "URI Unknown: $ru\n");
sl_send_reply("404", "Not Found");
exit;
}
}
route(1);
}
xlog("Unhandled message type: M=$rm RURI=$ru F=$fu T=$tu IP=$si
ID=$ci\n");
t_reply("503", "Service unavailable");
exit;
}
route[1] {
if (!t_relay()) {
sl_reply_error();
};
exit;
}
route[2] {
xlog("L_INFO", "Dealing with $rm F:$fu T:$tu\n");
sl_send_reply("100","trying");
if (!t_newtran()) {
sl_reply_error();
exit;
};
if(is_method("PUBLISH")) {
if($hdr(Sender)!= NULL) {
handle_publish("$hdr(Sender)");
} else {
handle_publish("");
}
t_release();
} else {
if(is_method("SUBSCRIBE")) {
handle_subscribe();
if (($hdr(Event)== "presence") && (uri =~
"^sip:.+ at valid.domain.name")) {
xlog("L_INFO", "In subscribe, winfo\n");
pua_xmpp_req_winfo("$ruri",
"$hdr(Expires)");
}
t_release();
}
}
exit;
}
onreply_route[1] {
exit;
}
More information about the sr-users
mailing list