<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Untitled Document</TITLE><BASE
href=file://C:\Sistemas\WebPages\Processa\>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE type=text/css>BODY {
        FONT-SIZE: small; COLOR: #0000ff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
TD {
        FONT-SIZE: small; COLOR: #0000ff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
TH {
        FONT-SIZE: small; COLOR: #0000ff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
BODY {
        BACKGROUND-IMAGE: url(./Images/Marca.JPG)
}
</STYLE>
<META content="MSHTML 6.00.5730.11" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<DIV> I´m has a problem that my openser sometimes not
accounting bye method and this cause a call without pay. See
the openser.cfg:</DIV>
<DIV>#<BR># $Id: ser.cfg,v 1.25.2.1 2005/02/18 14:30:44 andrei Exp $<BR>#<BR>#
simple quick-start config script<BR># </DIV>
<DIV> </DIV>
<DIV># ----------- global configuration parameters
------------------------</DIV>
<DIV> </DIV>
<DIV>debug=4 # debug level (cmd
line: -dddddddddd)<BR>##--<BR>#<BR># Uncomment these lines to
daemonize<BR>fork=yes<BR>log_stderror=no # (cmd line: -E)<BR>##--<BR>#<BR>#
Uncomment these lines to enter debugging
mode<BR>#fork=no<BR>#log_stderror=yes<BR>##--</DIV>
<DIV> </DIV>
<DIV>alias=sip.processavoip.net<BR>listen=201.32.70.20<BR>#syn_branch=1<BR>memlog=3<BR>sip_warning=1<BR>server_signature=yes<BR>reply_to_via=0<BR>mhomed=0<BR>disable_dns_blacklist=yes</DIV>
<DIV> </DIV>
<DIV>unix_sock="/tmp/openser.sock"</DIV>
<DIV> </DIV>
<DIV>check_via=0 # (cmd. line:
-v)<BR>dns=no #
(cmd. line: -r)<BR>rev_dns=no # (cmd. line:
-R)<BR>port=5060<BR>children=4<BR>mpath="/usr/local/lib/openser/modules/"</DIV>
<DIV> </DIV>
<DIV># ------------------ module loading
----------------------------------</DIV>
<DIV> </DIV>
<DIV># Uncomment this if you want to use SQL database<BR>loadmodule
"mysql.so"<BR>loadmodule "sl.so"<BR>loadmodule "tm.so"<BR>loadmodule
"rr.so"<BR>loadmodule "maxfwd.so"<BR>loadmodule "usrloc.so"<BR>loadmodule
"registrar.so"<BR>loadmodule "textops.so"</DIV>
<DIV>loadmodule "auth.so" <BR>loadmodule
"auth_radius.so"<BR>loadmodule "uri.so"<BR>loadmodule "domain.so"<BR>loadmodule
"permissions.so"<BR>loadmodule "mediaproxy.so" <BR>loadmodule
"nathelper.so" <BR>loadmodule "acc.so"<BR>loadmodule
"xlog.so"<BR>loadmodule "dbtext.so"<BR>loadmodule "uri_db.so"<BR>loadmodule
"mi_fifo.so"<BR>loadmodule "group.so" <BR># ----------------- setting
module-specific parameters ---------------</DIV>
<DIV> </DIV>
<DIV># -- mi-fifo params --<BR>modparam("mi_fifo", "fifo_name",
"/tmp/openser_fifo")</DIV>
<DIV> </DIV>
<DIV># -- usrloc params --<BR>modparam("usrloc", "db_mode",
2)<BR>modparam("usrloc", "nat_bflag", 6)<BR>modparam("usrloc", "domain_column",
"fk_domains")<BR>modparam("usrloc", "user_column", "fk_accounts") </DIV>
<DIV> </DIV>
<DIV># -- rr params --<BR># add value to ;lr param to make some broken UAs
happy<BR>modparam("rr", "enable_full_lr", 1)</DIV>
<DIV> </DIV>
<DIV>## -- database params
--<BR>modparam("acc|usrloc|group|domain|uri_db|permissions", "db_url",
"mysql://root:master@localhost/openser")</DIV>
<DIV> </DIV>
<DIV># -- radius params --<BR>modparam("acc|auth_radius", "radius_config",
"/etc/radiusclient-ng/radiusclient.conf")</DIV>
<DIV> </DIV>
<DIV># -- radius permissions --<BR>modparam("permissions", "db_mode",
1)<BR>modparam("permissions", "trusted_table", "trusted")</DIV>
<DIV> </DIV>
<DIV># -- group params --<BR>modparam("group", "table",
"accounts_groups")<BR>modparam("group", "user_column",
"fk_accounts")<BR>modparam("group", "domain_column",
"fk_domains")<BR>modparam("group", "group_column",
"pk_accounts_groups")<BR>modparam("group", "use_domain", 0)</DIV>
<DIV> </DIV>
<DIV>## -- acc params --<BR>modparam("acc", "radius_missed_flag",
3)<BR>modparam("acc", "radius_flag", 2)<BR>#modparam("acc", "radius_extra",
"via=$hdr(Via[*]); email=$avp(s:email)")<BR>modparam("acc", "log_level",
2)<BR>modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")</DIV>
<DIV>modparam("acc", "radius_extra",
"User-Name=$fU;Suffix=$fd;Sip-Translated-Request-URI=$ru")<BR>modparam("acc",
"service_type", 15)<BR>modparam("acc", "failed_transaction_flag",
1)<BR>modparam("acc", "report_ack", 1)<BR>modparam("acc", "report_cancels",
1)<BR>modparam("acc", "log_missed_flag", 2)<BR>modparam("acc", "log_flag",
1)<BR>## -- acc params without radius --<BR>#modparam("acc", "db_missed_flag",
3)<BR>#modparam("acc", "db_flag", 2)<BR>#modparam("acc", "db_table_acc",
"call_history")<BR>#modparam("acc", "db_table_missed_calls",
"call_history_missed")</DIV>
<DIV> </DIV>
<DIV># -- uri_db params --<BR>modparam("uri_db", "subscriber_table",
"accounts")<BR>modparam("uri_db", "subscriber_domain_column",
"fk_domains")<BR>modparam("uri_db", "subscriber_user_column", "pk_accounts")
</DIV>
<DIV> </DIV>
<DIV># -- domain params --<BR>modparam("domain", "domain_table",
"domains")<BR>modparam("domain", "domain_col", "pk_domains")</DIV>
<DIV> </DIV>
<DIV># -- nathelper, mediaproxy nd registrar params --<BR>modparam("nathelper",
"sipping_bflag", 7)<BR>modparam("nathelper", "sipping_from",
"sip:pinger@openser.org")<BR>modparam("nathelper", "rtpproxy_disable",
1)<BR>modparam("nathelper", "natping_interval", 30)<BR>modparam("nathelper",
"ping_nated_only", 1) # Ping only clients behind
NAT<BR>modparam("registrar|nathelper", "received_avp", "$avp(i:42)") # to
configure nat at openser 1.2, 1.3 or 1.4<BR>modparam("mediaproxy",
"mediaproxy_socket", "/var/run/mediaproxy.sock")<BR>modparam("mediaproxy",
"natping_interval", 30)<BR>#modparam("mediaproxy", "sip_asymmetrics",
"/etc/openser/sip-clients")<BR>#modparam("mediaproxy", "rtp_asymmetrics",
"/etc/openser/rtp-clients")<BR>#modparam("registrar", "received_avp",
"$avp(s:rcv)") # to configure nat at openser 1.2, 1.3 or 1.4</DIV>
<DIV> </DIV>
<DIV><BR># -- tm params --<BR># set time for which ser will be waiting for a
final response;<BR># fr_inv_timer sets value for INVITE transactions,
fr_timer <BR># for all others<BR>#modparam("tm", "fr_inv_timer", 15
) #Tempo maximo do ring antes de atender<BR>#modparam("tm", "fr_timer",
1)<BR>#modparam("tm", "wt_timer", 1)</DIV>
<DIV> </DIV>
<DIV><BR># ------------------------- request routing logic
-------------------</DIV>
<DIV> </DIV>
<DIV># main routing logic</DIV>
<DIV> </DIV>
<DIV>route {</DIV>
<DIV> # initial sanity checks -- messages with<BR> #
max_forwards==0, or excessively long requests<BR> if
(!mf_process_maxfwd_header("10")) {<BR>
sl_send_reply("483","Muitos Hops"); <BR> log(1, "486: Muitos
Hops\n");<BR> exit;<BR> };<BR> if (msg:len
>= 2048 ) {<BR> sl_send_reply("513", "Message to
big");<BR> log(1, "513: Message too bi
\n");<BR> exit;<BR> };<BR> ##--<BR> # Eh
feita a gravacao de todas as mensagens para se certificar que todas as
mensagens<BR> # passem pelo proxy o que eh importante particularmente se
as entidades estao usando <BR> # um protocolo de transporte
diferente<BR> ##--<BR> if (method!="REGISTER")
{<BR> record_route();<BR> };<BR>
route(6);<BR> ##--<BR> # Secao de finalizacao da chamada<BR>
##--<BR> if (method=="BYE" || method=="CANCEL") {<BR>
end_media_session();<BR> };<BR> ##--<BR> # mensagens
subsequentes dentro de um dialogo deveriam tomar um caminho
pre-determinado<BR> # pela gravacao das rotas (record route)<BR>
##--<BR> if (loose_route()) {<BR> # marca a logica de
roteamento no pedido<BR> append_hf("P-hint:
rr_enforced\r\n"); <BR> if (has_totag() &&
(method=="INVITE" || method=="ACK")) {<BR>
xlog("L_ERR", "Main Route: Fixing SDP to $fu $rm (loose
route)\n");<BR> if (client_nat_test("3") ||
isflagset(5)) {<BR>
setbflag(6);<BR>
use_media_proxy();<BR> };<BR>
}; <BR> xlog("L_ERR", "Main Route: Loose Route
relaying\n");<BR> route(1);<BR>
exit;<BR> };<BR> if (!uri==myself) {<BR> # marca a
logica de roteamento no pedido<BR> append_hf("P-hint:
rr_enforced\r\n"); <BR> xlog("L_ERR", "Main Route:
Relaing mesage to proxy destination \n");<BR>
route(4);<BR> route(1);</DIV>
<DIV> };<BR> ##--<BR> # Verifica baseado na tabela de dominios
se a parte host da R-URI comtem um dos dominios<BR> # quais o proxy eh
responsavel<BR> ##--<BR> if (!is_uri_host_local())
{<BR> if (is_from_local() || allow_trusted())
{<BR> route(4);<BR>
route(1);<BR> } else {
<BR> sl_send_reply("403",
"Forbinden...");<BR> }<BR> exit;<BR>
};<BR> ##--<BR> # A rotina abixo eh chamada para marcar o registro
com NAT<BR> ##--<BR> if (method=="CANCEL") {<BR>
route(1);<BR> exit;<BR> } else if (method=="REGISTER")
{<BR> route(2);<BR> exit;<BR> } else
if (method=="INVITE") {<BR> route(3);<BR>
exit;<BR> };<BR> ##--<BR> # Verifica se existem aliases para
este endereco e se eles nao pertencem<BR> # a teste dominio encaminhamos
para frente<BR> ##--<BR> lookup("aliases");<BR> if
(uri!=myself) {<BR> xlog("L_ERR", "Main Route: aliases relayin
to other domain proxy\n");<BR> route(4);<BR>
route(1);<BR> exit;<BR> };<BR> ##--<BR> #
Verifica se encontra o usuario na base de localizacao<BR> ##--<BR>
if (!lookup("location")) {<BR> sl_send_reply("404", "Usuario
nao encontrado");<BR> exit;<BR> };<BR>
route(1);<BR> exit;<BR>}<BR> <BR>route[1] {<BR>
##--</DIV>
<DIV> # Envie isto agora; use "statefull fowarding" pois funciona de forma
confiavel de UDP para TCP<BR> # Ativa a contabilizacao das
chamadas<BR> ##--<BR> xlog("L_ERR", "Route[1]: Relaying
message\r\n");<BR> setflag(2);<BR> ##--<BR> # Ativa a
contabilizacao das chamadas perdidas<BR> ##--<BR>
setflag(3);<BR> t_on_reply("1");<BR> if (!t_relay())
{<BR> if (method=="INVITE" || method=="ACK")
{<BR> end_media_session();<BR>
};<BR> sl_reply_error();<BR> }; <BR>}
<BR> <BR>route[2] {<BR> ##--<BR> #
Tratamento padrao para as mensagens de Register<BR> ##--<BR>
sl_send_reply("100", "Registrando....");<BR> xlog("L_ERR", "Route[2]:
Trying Auth: $fu $si\n");<BR> if (isflagset(5) &&
client_nat_test("7")) {<BR> xlog("L_ERR", "Route[2]: Client
behind NAT - flag(6)\n");<BR>
setbflag(6);<BR> fix_nated_register();<BR>
force_rport();<BR> # se quiser usar natping options descomente
a linha abaixo<BR> # setbflag(7);<BR> };<BR> if
(!radius_www_authorize("")) {<BR> www_challenge("",
"0");<BR> xlog("L_ERR", "Route[2]: Client Unauthorized: $fu
$si\r\n");<BR> sl_send_reply("401",
"Unauthorized");<BR> exit;<BR> };<BR> if
(!check_to()) {<BR> xlog("L_ERR", "Route[2]: Client
Unauthorized: $fu $si\r\n");<BR> sl_send_reply("401",
"Unauthorized");<BR> exit;<BR> } else
{<BR> xlog("L_ERR", "Route[2]: Authenticate: $fu
$si\r\n");<BR> };<BR> consume_credentials();<BR> if
(!save("location")) {<BR> xlog("L_ERR", "Route[2]: Can't save
register location\r\n");<BR> sl_reply_error();<BR>
};<BR>}</DIV>
<DIV>route[3] {<BR> ##--<BR> # Tratamento padrao para as mensagens
de INVITE<BR> ##--<BR> xlog("L_ERR", "Route[3]: INVITE: $fu ->
$tu $ci\r\n");<BR># setflag(1);<BR> if (!allow_trusted())
{<BR> if (!radius_proxy_authorize(""))
{<BR> proxy_challenge("", "0"); # Realm will
be autogenerated<BR> exit;<BR> }
else if (!check_from()) {<BR> sl_send_reply("403",
"Usue from=ID");<BR> xlog("L_ERR", "Route[3]:
Error 403 $fu -> $tu\r\n");<BR>
exit;<BR> };<BR> }<BR>
consume_credentials();<BR> ##--<BR> # Verifica se existem aliases
para este endereco e se eles nao pertencem<BR> # a teste dominio
encaminhamos para frente<BR> ##--<BR> lookup("aliases");<BR>
if (uri!=myself) {<BR> xlog("L_ERR", "Main Route: aliases
relayin to other domain proxy\n");<BR>
route(4);<BR> route(1);<BR> }; <BR>
##--<BR> # VoIP Local<BR> ##--<BR> if
(uri=~"sip:[1-9][0-9]+@.*") {<BR> xlog("L_NOTICE", "OpenSER:
Ligacao VoIP local: $fU -> $tu\n");<BR> } else {<BR>
##--<BR> # Nacional<BR>
##--<BR> if (uri=~"sip:0[1-9][0-9]+@.*")
{<BR> xlog("L_NOTICE", "OpenSER: Ligacao Nacional:
$fU -> $tu\n");<BR> } else
{<BR> ##--<BR> #
Internacional<BR>
##--<BR> if (uri=~"sip:00[1-9][0-9]+@.*")
{<BR> xlog("L_NOTICE", "OpenSER:
Ligacao Interacional: $fU -> $tu\n");<BR>
};<BR> };<BR>
route(5);<BR> exit;<BR> };<BR> if
(!lookup("location")) {<BR> append_hf("P-hint: usuario nao
encontrado\r\n");</DIV>
<DIV> sl_send_reply("404", "Usuario nao encontrado");
<BR> exit;<BR> };<BR> append_hf("P_hint: usrloc
applied\r\n");<BR> t_on_failure("1");<BR> route(4);<BR>
route(1);<BR>}<BR> <BR>route[4] {<BR> ##--<BR> # Secao de
travessia do nat<BR> ##--<BR> if (isflagset(5))
{<BR> setbflag(6);<BR> };<BR> if (isflagset(5) ||
isbflagset(6) || isbflagset(7)) {<BR>
use_media_proxy();<BR> xlog("L_ERR", "Rota[4]: Travessia de
NAT mediaproxy\n");<BR> };<BR>} <BR>
<BR>route[5] {<BR> ##--<BR> # Encaminhamento para a rede publica
(PSTN)<BR> ##--<BR> xlog("L_ERR", "Route[5]: Relaying to
PSTN\n");<BR> rewritehostport("201.32.70.21");<BR>
route(4);<BR> route(1);<BR>}<BR> <BR>route[6] {<BR>
force_rport();<BR> if (nat_uac_test("19")) {<BR> if
(method=="REGISTER") {<BR>
fix_nated_register(); <BR> } else
{<BR> fix_nated_contact();<BR>
};<BR> setflag(5);<BR> };<BR>}
<BR> <BR>failure_route[1] {<BR> if
(t_check_status("487")) {<BR> exit;<BR> };<BR> if
(isbflagset(6) || isflagset(5)) {<BR>
end_media_session();</DIV>
<DIV> };</DIV>
<DIV>onreply_route[1] {<BR> ##--<BR> # Bloco de tratamento de
respostas<BR> ##--<BR> if ((isflagset(5) || isbflagset(6))
&& status=~"(180)|(183)|(2[0-9][0-9])") {<BR>
use_media_proxy();<BR>#
search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');<BR>
}<BR> if (isbflagset(6)) {<BR>
fix_nated_contact();<BR> }<BR>}</DIV>
<DIV>
<DIV class=Section1>
<DIV align=justify>
<TABLE border=0>
<TBODY>
<TR>
<TD colSpan=4>
<DIV align=justify>
<HR>
<DIV align=center><STRONG><FONT face="Arial, Helvetica, sans-serif"
size=2><SPAN lang=PT-BR
style="FONT-FAMILY: Arial; mso-ansi-language: PT-BR">Alcindo
Schleder</SPAN></FONT></STRONG></DIV></DIV></TD></TR>
<TR>
<TD colSpan=4>
<DIV align=justify>
<P align=center><FONT face="Arial, Helvetica, sans-serif" size=1><A
href="http://www.sistemaprocessa.com.br/" target=_blank>Sistema Processa
Acessoria e Comunicações Ltda. </A></FONT></P></DIV></TD></TR>
<TR>
<TD colSpan=4>
<DIV class=style3 align=center>
<UL>
<LI>
<DIV align=left>MSN: a_schleder@hotmail.com</DIV></LI>
<LI>
<DIV align=left>Skipe: alcindo_schleder</DIV></LI></UL></DIV></TD></TR>
<TR>
<TD colSpan=4><FONT face="Arial, Helvetica, sans-serif" size=1>Demétrio P.
dos Santos, 705 <?xml:namespace prefix = o /><o:p>- </o:p>95670-000 -
Gramado-RS-Brasil<o:p></o:p></FONT></TD></TR>
<TR>
<TD width=32><FONT face="Arial, Helvetica, sans-serif"
size=1>Celular</FONT></TD>
<TD noWrap width=95><FONT face="Arial, Helvetica, sans-serif" size=1><SPAN
class=GramE>+</SPAN> <B style="mso-bidi-font-weight: normal">55 54 9966
7591 </B></FONT></TD>
<TD width=145 colSpan=2><FONT face="Arial, Helvetica, sans-serif"
size=1><SPAN lang=PT-BR
style="FONT-FAMILY: Arial; mso-ansi-language: PT-BR"><A
href="mailto:alcindo@processa.org">alcindo@processa.org</A></SPAN></FONT><FONT
size=1><SPAN lang=PT-BR
style="FONT-FAMILY: Arial; mso-ansi-language: PT-BR"></SPAN></FONT></TD></TR>
<TR><FONT face="Arial, Helvetica, sans-serif" size=1><SPAN lang=PT-BR
style="FONT-FAMILY: Arial; mso-ansi-language: PT-BR">
<TD>Fone</TD>
<TD noWrap>+55 54 3286-1738</TD>
<TD colSpan=2><A
href="mailto:comercial@processa.org">comercial@processa.org</A></TD></SPAN></FONT></TR></TBODY></TABLE><FONT
face="Arial, Helvetica, sans-serif" size=1></FONT></DIV>
<P class=MsoNormal align=justify></SPAN><SPAN lang=PT-BR
style="mso-ansi-language: PT-BR"><o:p></o:p></SPAN></P></DIV></DIV></BODY></HTML>