# # Script. Support for: # -SNMP through SNMPStats module # -ACCOUNTING through acc module # -LEST COST ROUTING through LCR module # -MULTIDOMINIO through domain and pdt module # -LOGs though xlog module # -ENUM through ENUM module # -PERMISSIONS # -XLOG # -USER PREFERENCES with Serweb (Call transfer, call, ....) # # # # # # -USERLOC REPLICATION # FLAGS: # - 1: Accounting # - 2: Missed calls # - 13: Log flag # ----------- global configuration parameters ------------------------ debug=5 fork=yes log_stderror=no listen=192.168.1.129 # INSERT YOUR IP ADDRESS HERE port=5060 children=7 dns=no rev_dns=no alias=xxxx.com #set module path mpath="//lib/openser/modules/" loadmodule "mysql.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "uri.so" loadmodule "uri_db.so" loadmodule "domain.so" loadmodule "textops.so" loadmodule "avpops.so" loadmodule "permissions.so" loadmodule "enum.so" loadmodule "acc.so" loadmodule "dialog.so" loadmodule "mi_fifo.so" loadmodule "snmpstats.so" loadmodule "xlog.so" loadmodule "lcr.so" loadmodule "pdt.so" modparam("auth_db|permissions|uri_db|usrloc|avpops|acc|lcr|avpops|pdt|domain", "db_url", "mysql://openser:openserrw@192.168.1.130/openser") # permissions module parameters modparam("permissions", "address_table", "address") modparam("permissions", "grp_col", "grp") modparam("permissions", "ip_addr_col", "ip_addr") modparam("permissions", "mask_col", "mask") modparam("permissions", "port_col", "port") modparam("permissions", "db_mode", 1) # enum module parameters modparam("enum", "domain_suffix", "pstn.com.") # domain module parameters modparam("domain", "db_mode", 1) # pdt modules pdt modparam("pdt", "db_table", "pdt") modparam("pdt", "sdomain_column", "sdomain") modparam("pdt", "prefix_column", "prefix") modparam("pdt", "domain_column", "domain") # uri_db module parameters modparam("uri_db", "use_domain", 1) # usrloc module parameters modparam("usrloc", "use_domain", 1) # xlog module parameters modparam("xlog", "buf_size", 8192) # auth_db module parameters modparam("auth_db", "calculate_ha1", 1) modparam("auth_db", "password_column", "password") # usrloc module parameters modparam("usrloc", "db_mode", 2) # rr module parameters modparam("rr", "enable_full_lr", 1) # tm module parameters modparam("tm", "fr_inv_timer", 27) # modparam("tm", "fr_inv_timer_avp", "inv_timeout") modparam("tm", "fr_timer", 10) # modparam("tm", "fr_timer_avp", "gen_timeout") # permissions module parameters modparam("permissions", "db_mode", 1) modparam("permissions", "trusted_table", "trusted") # avpops module parameters modparam("avpops", "avp_table", "usr_preferences") modparam("avpops", "use_domain", 1) modparam("avpops", "uuid_column", "uuid") modparam("avpops", "username_column", "username") modparam("avpops", "domain_column", "domain") modparam("avpops", "attribute_column", "attribute") modparam("avpops", "value_column", "value") modparam("avpops", "type_column", "type") # modparam("avpops", "avp_table", "usr_preferences") # modparam("avpops","avp_aliases","serial_fork=i:665") # modparam("avpops","db_scheme","scheme1:username_column=username;value_col=contact;value_type=string;table=location") # acc module parameters modparam("acc", "db_flag", 1) modparam("acc", "db_missed_flag", 2) modparam("acc", "report_ack", 0) modparam("acc", "detect_direction", 1) modparam("acc", "multi_leg_info", "src_leg=$avp(i:901);dst_leg=$avp(i:902);src_dom=$avp(i:903);dst_dom=$avp(i:904)") #modparam("acc", "log_fmt", "cdfimorstup") #modparam("acc", "log_level", 1) #modparam("acc", "failed_transactions", 1) #modparam("acc", "report_cancels", 1) # snmpstats module parameters modparam("snmpstats", "sipEntityType", "registrarServer") modparam("snmpstats", "sipEntityType", "proxyServer") modparam("snmpstats", "MsgQueueMinorThreshold", 2) modparam("snmpstats", "MsgQueueMajorThreshold", 5) modparam("snmpstats", "dlg_minor_threshold", 1) modparam("snmpstats", "dlg_major_threshold", 3) modparam("snmpstats", "snmpgetPath", "/usr/local/bin/") modparam("snmpstats", "snmpCommunity", "public") # dialog module parameters modparam("dialog", "dlg_flag", 4) # mi_fifo module parameters modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") route { # ----------------------------------------------------------------- # Debug flag # ----------------------------------------------------------------- setflag(13); if (isflagset(13) && !is_method("ACK") && !is_method("REGISTER")) { #debug route route(13); }; # ----------------------------------------------------------------- # Sanity Check Section # ----------------------------------------------------------------- if (!mf_process_maxfwd_header("10")) { sl_send_reply("483", "Too Many Hops"); exit; }; if (msg:len > max_len) { sl_send_reply("513", "Message Overflow"); exit; }; # ----------------------------------------------------------------- # Record Route Section # ----------------------------------------------------------------- if (method!="REGISTER") { record_route(); }; # ----------------------------------------------------------------- # Loose Route Section # ----------------------------------------------------------------- if (loose_route()) { if ((method=="INVITE" || method=="REFER") && !has_totag()) { sl_send_reply("403", "Forbidden"); return; }; if (method=="INVITE") { if (!allow_trusted()) { if (!proxy_authorize("","subscriber")) { proxy_challenge("","0"); exit; } else if (!check_from()) { sl_send_reply("403", "Use From=ID"); exit; }; }; consume_credentials(); }; if (is_method("BYE")) { setflag(1); # Empieza el accounting setflag(2); # Tambien para llamadas perdidas avp_printf("$avp(i:901)", "$fU"); avp_printf("$avp(i:902)", "$rU"); avp_printf("$avp(i:903)", "$fd"); avp_printf("$avp(i:904)", "$rd"); }; route(1); exit; }; # ------------------------------------------------------------------------ # Accounting Section # # NOTE: We test for flag 14 because we do not want to record Click2Dial # entries # ------------------------------------------------------------------------ if ((method=="INVITE" || method=="BYE") && !isflagset(14)) { setflag(1); setflag(2); avp_printf("$avp(i:901)", "$fU"); avp_printf("$avp(i:902)", "$rU"); avp_printf("$avp(i:903)", "$fd"); avp_printf("$avp(i:904)", "$rd"); }; # ----------------------------------------------------------------- # Call Type Processing Section # ----------------------------------------------------------------- # Mensajes hacia fuera, aplica a todos los mensajes que recibe el proxy if (!is_uri_host_local()) { # Cheque si el dominio del RURI esta en la tablas domain if (is_from_local() || allow_source_address("0")) {# || allow_trusted()) # Cheuqea si el dominio del FROM esta en las tablas de domain esta permitido route(1); # lo enruto hacia fuera } else { sl_send_reply("403", "Forbidden"); }; return; # sale }; # Mensajes hacia dominios controlados por el proxy, aplica a todos los mensajes que recibe el proxy. if (method=="ACK") { route(1); return; } if (method=="CANCEL") { route(1); return; } else if (method=="INVITE") { log("### ROUTE 3 ENTRA\n"); route(3); log("### ROUTE 3 SALE\n"); return; } else if (method=="REGISTER") { route(2); return; }; lookup("aliases"); if (!is_uri_host_local()) { log("### URI NO LOCAL\n"); route(1); return; }; if (!lookup("location")) { sl_send_reply("404", "User Not Found"); return; }; route(1); } route[1] { # ----------------------------------------------------------------- # Default Message Handler # ----------------------------------------------------------------- if (!t_relay()) { sl_reply_error(); }; } route[2] { # ----------------------------------------------------------------- # REGISTER Message Handler # ---------------------------------------------------------------- sl_send_reply("100", "Trying"); if (!allow_source_address("0")) { if (!www_authorize("","subscriber")) { if (isflagset(13)) { xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu Authorization for $fu ($si) requested\n"); }; www_challenge("","0"); return; } else { if (isflagset(13)){ xlog("L_NOTICE","OPENSER_NAME: $mi route[$rm][2] \ $fu Authorization OK\n"); }; }; if (!check_to()) { if (isflagset(13)){ xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu -> $ru REPLY 401 - Unauthorized check_to() failed\n"); }; sl_send_reply("401", "Unauthorized"); return; }; consume_credentials(); }; if (!save("location")) { if (isflagset(13)) { xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu save(location) Failed\n"); }; sl_reply_error(); return(0); } else { if (isflagset(13)) { xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu save(location)OK\n"); }; }; # Quitar la siguiente linea en el proxy de backup t_replicate("sip:192.168.1.130"); } route[3] { # ----------------------------------------------------------------- # INVITE Message Handler # ----------------------------------------------------------------- log("#### ENTRA EN ALIASES\n"); lookup("aliases"); log("#### SALE DE ALIASES\n"); # Primero se cheque si la peticion va dirigida a un dominio controlado por el proxy, si no es asi la llamada no deberia progresar (hay que hacerlo) if (!is_uri_host_local()) { log("####### NO ES MYSELF\n"); route(1); return; }; # Si el RURI tiene el dominio pstn.com significa que la peticion viene de un GW y por tanto hay que aplicar ENUM /*if ($rd == "pstn.com") { #*/ if (uri=~"^sip:[0-9].*@pstn.com:5060") { xlog("L_INFO","Enum lookup"); prefix("+"); enum_query("pstn.com",""); } if (uri=~"^sip:[0-9][0-9][0-9][0-9]@.*") { log("####### MENSAJE DE BUZ?N 81XX\n"); route(7); return; } if (uri=~"^sip:8[0-9][0-9]@.*") { log("####### MENSAJE DE BUZ?N 8XX\n"); route(7); return; } if (uri=~"^sip:7[0-9][0-9][0-9]@.*") { log("####### MENSAJE DE BUZ?N 7XX\n"); route(7); return; } # PLAN NACIONAL DE NUMERACI? TELEFONICA if ((uri=~"^sip:[0-9]{9}@") || (uri=~"^sip:0[0-9].*@") || (uri=~"^sip:000[1-9].*@")) { # PSTN log("####### GATEWAY\n"); if route(9) { route(5); }; return; }; # PLAN DE NUMERACION PRIVADO: # USER: XYZ + DOMAIN # DIAL PLAN: AB+XYZ|XYZ (AB Prefix company ID, XYZ Extension ID) # Openser is in charge of striping in case of dialing AB+XYZ if (uri=~"^sip:[0-9]{5}@") { prefix2domain("0", "0"); }; # Mensajes hacia fuera if (!is_uri_host_local()) { # Cheque si el dominio del RURI esta en la tablas domain if (is_from_local() || allow_source_address("0")) { #allow_trusted()) {# Cheuqea si el dominio del FROM esta en las tablas de domain esta permitido route(1); # lo enruto hacia fuera } else { sl_send_reply("403", "Forbidden"); }; return; # sale }; #### AQUI VEMOS SI HAY ALGUN CONTACTO REGISTRADO if (!lookup("location")) { sl_send_reply("404", "Not Found"); exit; }; #### VEMOS SI TIENE ACTIVADO EL BUZON PARA OCUPADO #### CAPTURAMOS LOS ERRORES t_on_failure("1"); route(1); } route[5] { # ----------------------------------------------------------------- # PSTN Handler # ----------------------------------------------------------------- if (!load_gws()){ sl_send_reply("500", "Internal server error, unable to load phone gateways"); return; }; if (!next_gw()) { sl_send_reply("503", "Service not available - No gateways"); return; }; t_on_failure("2"); route(1); } route[6] { # ---------------------------------------------------------- # Call Forwarding Handler # # This must be done as a route block because sl_send_reply() cannot be # called from the failure_route block # ---------------------------------------------------------- log("### ENTRA EN CALL FORWARDING\n"); lookup("aliases"); if (!is_uri_host_local()) { if (!isflagset(22)) { append_branch(); }; route(1); return; }; if (uri=~"^sip:0[0-9]*@") { route(5); return; }; if (!lookup("location")) { sl_send_reply("404", "User Not Found"); return; }; route(1); } # ----------------------------------------------------------------- # VoiceMail hadler # ----------------------------------------------------------------- route[7] { log("### ENTRA EN CALL VOICEMAIL\n"); if (uri=~"^sip:81[0-9][1-9]@.*") { strip(1); }; #if (uri=~"^sip:71[0-9][1-9]@.*") { # strip(1); #}; rewritehost("192.168.222.203"); # INSERT YOUR PSTN GATEWAY IP ADDRESS route(1); } route[8] { # ----------------------------------------------------------------- # User verify # ----------------------------------------------------------------- # Check for known domain(s) if (!is_from_local()) { if (isflagset(13)){ xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu Unknown domain\n"); sl_send_reply("403", "Unknown domain"); }; return(0); }; # Check to see that the user has not been disabled /*if (is_user_in("From", "disabled")) { if (isflagset(13)){ xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $fu Your account has been disabled\n"); }; sl_send_reply("403", "Your account has been disabled"); return(0); };*/ /*if (is_user_in("To", "disabled")) { if (isflagset(13)) { xlog("L_NOTICE", "OPENSER_NAME: $mi route[$rm][2] \ $tu That account has been disabled\n"); }; sl_send_reply("403", "That account has been disabled"); return(0); };*/ } route[9] { # ----------------------------------------------------------------- # Default Message Handler with Proxy Authentication # ----------------------------------------------------------------- if(method=="ACK") { #these you never proxy authenticate route(1); return; }; if(method=="BYE" || method=="CANCEL") { #these you never proxy authenticate route(1); return; }; xlog("L_INFO", "Proxy auth $fd $dP destination:$du $dd $ds"); if (!route(8)) { #verify the user return(0); }; # if (!is_user_in("From", "noauth")) { #no authentication required if (!proxy_authorize("","subscriber")) { proxy_challenge("","0"); return; } else if (!check_from()) { sl_send_reply("403", "Use From=ID"); return; }; consume_credentials(); # }; # if (is_user_in("Credentials", "local")) { # Uncomment to use the group options # route(1); # }else{ # sl_send_reply("403", "Denied, you are not allowed this route"); # }; return; } ######################################################################## # Request route 'normalize-e164' ######################################################################## route[10] { # European numbering plans look like this: # CC = country code (i.e. 43 for Austria) # NDC = national destination code (i.e. 1 for Vienna) # SN = subscriber number (i.e. 4001234) # # CC + NDC + SN, i.e. 4314001234 # # Within the same CC+NDC, it can be omitted, so if # +4314001234 wants to call +4315002345, one can dial # just 5002345. # # Within the same CC, CC can be ommitted and a "0" is prefixed # to NDC, so if +4314001234 wants to call +4326003456, # one can dial 026003456. # # For international calls, either "00" or + is prefixed, like # +49123456780 or 0049123456789. # #avp_delete("$avp(s:orig_callee_user)/g"); #avp(s:orig_callee_user) = $rU; if(uri =~ "^sip:(\+[1-9])?[0-9]+@") { # looks like a PSTN number if(uri =~ "^sip:0[1-9][0-9]+@") { # we have format 0+NDC+SN strip(1); #prefix("+34"); } else if(uri =~ "^sip:00[1-9]+@") { # we have format 00 + CC + NDC + SN strip(2); prefix("+"); } else if(!uri =~ "^sip:\+[1-9][0-9]+@") { # unknown format, maybe NDC wasn't added before? xlog("L_INFO", "Not normalized callee '$avp(s:orig_callee_user)' to E.164 format - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); return(-1); } # else we have "+" + CC + NDC + SN xlog("L_INFO", "Normalized callee '$avp(s:orig_callee_user)' to E.164 format '$rU' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); return(1); } else { xlog("L_INFO", "Not normalized callee '$avp(s:orig_callee_user)' to E.164 format - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); return(-1); } } ## vemos en que estado est? cuando hay FMC especialmente chequeamos si recibe RINGING onreply_route[2] { log("##### Entra en ONREPLY\n"); } failure_route[1] { log("### ENTRA EN FAUIURE\n"); if (t_check_status("487")) { return; }; } failure_route[2] { xlog("L_INFO", "Failure route for PSTN entered - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); if(!t_check_status("408|500|503")) { xlog("L_INFO", "No failover routing needed for this response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); exit; } if(!next_gw()) { xlog("L_ERR", "Failed to select next PSTN gateway - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); exit; } t_on_failure("1"); route(1); } route[13] { # ----------------------------------------------------------------- # Debuging info # ----------------------------------------------------------------- if (status=="100") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 100 Trying\n"); } else if (status=="180") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 180 Ringing\n"); } else if (status=="181") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 181 Call Is Being Forwarded\n"); } else if (status=="182") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 182 Queued\n"); } else if (status=="183") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 183 Session Progress\n"); } else if (status=="200") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 200 OK\n"); } else if (status=="202") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 202 Accepted\n"); } else if (status=="300") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 300 Multiple Choices $ct\n"); } else if (status=="301") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 301 Moved Permanently $ct\n"); } else if (status=="302") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 302 Moved Temporarily $ct\n"); } else if (status=="305") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 305 Use Proxy\n"); } else if (status=="380") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 380 Alternative Service\n"); } else if (status=="400") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 400 Bad Request\n"); } else if (status=="401") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 401 Unauthorized\n"); } else if (status=="402") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 402 Payment Required\n"); } else if (status=="403") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 403 Forbidden\n"); } else if (status=="404") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 404 Not Found\n"); } else if (status=="405") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 405 Method Not Allowed\n"); } else if (status=="406") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 406 Not Acceptable\n"); } else if (status=="407") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 407 Proxy Authentication Required\n"); } else if (status=="408") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 408 Request Timeout\n"); } else if (status=="409") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 409 Conflict\n"); } else if (status=="410") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 410 Gone\n"); } else if (status=="411") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 411 Length Required\n"); } else if (status=="412") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 412 Conditional Request Failed\n"); } else if (status=="413") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 413 Request Entity Too Large\n"); } else if (status=="414") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 414 Request-URI Too Long\n"); } else if (status=="415") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 415 Unsupported Media Type\n"); } else if (status=="416") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 416 Unsupported URI Scheme\n"); } else if (status=="420") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 420 Bad Extension\n"); } else if (status=="421") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 421 Extension Required\n"); } else if (status=="422") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 422 Session Interval Too Small\n"); } else if (status=="423") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 423 Interval Too Brief\n"); } else if (status=="429") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 429 Provide Referrer Identity\n"); } else if (status=="480") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 480 Temporarily Unavailable\n"); } else if (status=="481") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 481 Call Leg/Transaction Does Not Exist\n"); } else if (status=="482") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 482 Loop Detected\n"); } else if (status=="483") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 483 Too Many Hops\n"); } else if (status=="484") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 484 Address Incomplete\n"); } else if (status=="485") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 485 Ambiguous\n"); } else if (status=="486") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 486 Busy Here\n"); } else if (status=="487") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 487 Busy Here; Request Terminated\n"); } else if (status=="488") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 488 Not Acceptable Here\n"); } else if (status=="489") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 489 Bad Event\n"); } else if (status=="491") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 491 Request Pending\n"); } else if (status=="493") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 493 Undecipherable\n"); } else if (status=="494") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 494 Security Agreement Required\n"); } else if (status=="500") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 500 Server Internal Error\n"); } else if (status=="501") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 501 Not Implemented\n"); } else if (status=="502") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 502 Bad Gateway\n"); } else if (status=="503") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 503 Service Unavailable\n"); } else if (status=="504") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 504 Server Timeout\n"); } else if (status=="505") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 505 Version Not Supported\n"); } else if (status=="513") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 513 Message Too Large\n"); } else if (status=="580") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 580 Precondition Failure\n"); } else if (status=="600") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 600 Busy Everywhere\n"); } else if (status=="603") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 603 Decline\n"); } else if (status=="604") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 604 Does Not Exist Anywhere\n"); } else if (status=="606") { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status 606 Not Acceptable\n"); } else { xlog("L_NOTICE", "OPENSER_NAME: $mi $rm $fu -> $ru status not listed\n"); }; xlog("L_NOTICE", "OPENSER_NAME: $mi $mb\n"); return; }