e建网站,网站流量数据,网站注册短信验证怎么做,网站备案注意什么应朋友要求做了个简单的测试#xff0c;花费时间不过半小时#xff0c;记录如下#xff1a;
OpenSIPS IP 地址#xff1a;192.168.31.213
FreeSWITCH IP 地址#xff1a;192.168.31.166
加载 uac_registrant 模块#xff08;这个模块依赖 uac_auth 模块#xff0c;得…应朋友要求做了个简单的测试花费时间不过半小时记录如下
OpenSIPS IP 地址192.168.31.213
FreeSWITCH IP 地址192.168.31.166
加载 uac_registrant 模块这个模块依赖 uac_auth 模块得先加载向 FreeSWITCH 注册
先插入数据
INSERT INTO registrant (registrar, aor, username, password, expiry, binding_URI) VALUES (sip:192.168.31.166, sip:1001192.168.31.166, 1001, 1234, 3600, sip:1001192.168.31.213);
启动 OpenSIPS
fs_cli -x show registrations as xml 得到的是 result row_count1 row row_id1 reg_user1001/reg_user realm192.168.31.166/realm token2a77c9767b233f5ccaa268ce13c/token urlsofia/internal/sip:1001192.168.31.213/url expires1731729381/expires network_ip192.168.31.213/network_ip network_port5060/network_port network_protoudp/network_proto hostnameDESKTOP-QEPDSM1/hostname metadata/metadata /row /result fs_cli -x sofia global siptrace on
fs_cli -x chat sip|9999192.168.31.166|1001192.168.31.166|Hello,opensips
send 621 bytes to udp/[192.168.31.213]:5060 at 03:00:02.046311: ------------------------------------------------------------------------ MESSAGE sip:1001192.168.31.213 SIP/2.0 Via: SIP/2.0/UDP 120.229.53.37;rport;branchz9hG4bKDr1cHXev367Hc Max-Forwards: 70 From: 9999 sip:9999192.168.31.166;tag47HaZ55e0QZKc To: sip:1001192.168.31.213 Call-ID: 6abc3266-e8f8-4e8e-bfd4-ebbea2d3a45d CSeq: 91309209 MESSAGE User-Agent: FreeSWITCH-mod_sofia/1.10.12-dev-5976~218a00e2e9~64bit Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE Supported: timer, path, replaces Content-Type: text/html Content-Length: 14 X-FS-Sending-Message: 645cecc3-2d65-4f0b-b536-a89fe9060d44
Hello,opensips opensips.cfg 完整内容为暂时没有响应 FS 的 MESSAGE 请求
该文件是在 osipsconfig 产生的基础上做了少量修改而成
#
# OpenSIPS residential configuration script
# by OpenSIPS Solutions teamopensips-solutions.com
#
# This script was generated via make menuconfig, from
# the Residential scenario.
# You can enable / disable more features / functionalities by
# re-generating the scenario with different options.#
#
# Please refer to the Core CookBook at:
# https://opensips.org/Resources/DocsCookbooks
# for a explanation of possible statements, functions and parameters.
######## Global Parameters #########log_level3
log_stderrorno
log_facilityLOG_LOCAL0children4/* uncomment the following lines to enable debugging */
#debug_modeyes/* uncomment the next line to enable the auto temporary blacklisting ofnot available destinations (default disabled) */
#disable_dns_blacklistno/* uncomment the next line to enable IPv6 lookup after IPv4 dnslookup failures (default disabled) */
#dns_try_ipv6yes/* comment the next line to enable the auto discovery of local aliasesbased on reverse DNS on IPs */
auto_aliasesnolistenudp:192.168.31.213:5060 # CUSTOMIZE ME
listentcp:192.168.31.213:5060 # CUSTOMIZE ME####### Modules Section #########set module path
mpath/usr/local//lib64/opensips/modules/#### SIGNALING module
loadmodule signaling.so#### StateLess module
loadmodule sl.so#### Transaction Module
loadmodule tm.so
modparam(tm, fr_timeout, 5)
modparam(tm, fr_inv_timeout, 30)
modparam(tm, restart_fr_on_each_reply, 0)
modparam(tm, onreply_avp_mode, 1)#### Record Route Module
loadmodule rr.so
/* do not append from tag to the RR (no need for this script) */
modparam(rr, append_fromtag, 0)#### MAX ForWarD module
loadmodule maxfwd.so#### SIP MSG OPerationS module
loadmodule sipmsgops.so#### FIFO Management Interface
loadmodule mi_fifo.so
modparam(mi_fifo, fifo_name, /tmp/opensips_fifo)
modparam(mi_fifo, fifo_mode, 0666)#### URI module
loadmodule uri.so
modparam(uri, use_uri_table, 0)#### MYSQL module
loadmodule db_mysql.so#### HTTPD module
#loadmodule httpd.so
#modparam(httpd, port, 8888)#### USeR LOCation module
loadmodule usrloc.so
modparam(usrloc, nat_bflag, NAT)
modparam(usrloc, db_mode, 0)#### REGISTRAR module
loadmodule registrar.so
modparam(registrar, tcp_persistent_flag, TCP_PERSISTENT)
modparam(registrar, received_avp, $avp(received_nh))/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam(registrar, max_contacts, 10)#### ACCounting module
loadmodule acc.so
/* what special events should be accounted ? */
modparam(acc, early_media, 0)
modparam(acc, report_cancels, 0)
/* by default we do not adjust the direct of the sequential requests.if you enable this parameter, be sure the enable append_fromtagin rr module */
modparam(acc, detect_direction, 0)#### AUTHentication modules
loadmodule auth.so
loadmodule auth_db.so
modparam(auth_db, calculate_ha1, yes)
modparam(auth_db, password_column, password)
modparam(auth_db|uri, db_url,mysql://opensips:opensipsrwlocalhost/opensips) # CUSTOMIZE ME
modparam(auth_db, load_credentials, )#### NAT modules
loadmodule nathelper.so
modparam(nathelper, natping_interval, 10)
modparam(nathelper, ping_nated_only, 1)
modparam(nathelper, sipping_bflag, SIP_PING_FLAG)
modparam(nathelper, sipping_from, sip:pinger127.0.0.1) #CUSTOMIZE ME
modparam(nathelper, received_avp, $avp(received_nh))loadmodule rtpproxy.so
modparam(rtpproxy, rtpproxy_sock, udp:localhost:12221) # CUSTOMIZE MEloadmodule uac_auth.soloadmodule uac_registrant.so
modparam(uac_registrant, timer_interval, 10)
modparam(uac_registrant, db_url, mysql://opensips:opensipsrwlocalhost/opensips)#### MI_HTTP module
#loadmodule mi_http.soloadmodule proto_udp.so
loadmodule proto_tcp.so
####### Routing Logic ######### main request routing logicroute{# initial NAT handling; detect if the request comes from behind a NAT# and apply contact fixingforce_rport();if (nat_uac_test(23)) {if (is_method(REGISTER)) {fix_nated_register();setbflag(NAT);} else {fix_nated_contact();setflag(NAT);}}if (!mf_process_maxfwd_header(10)) {send_reply(483,Too Many Hops);exit;}if (has_totag()) {# handle hop-by-hop ACK (no routing required)if ( is_method(ACK) t_check_trans() ) {t_relay();exit;}# sequential request within a dialog should# take the path determined by record-routingif ( !loose_route() ) {# we do record-routing for all our traffic, so we should not# receive any sequential requests without Route hdr.send_reply(404,Not here);exit;}if (is_method(BYE)) {# do accounting even if the transaction failsdo_accounting(log,failed);}if (check_route_param(natyes))setflag(NAT);# route it out to whatever destination was set by loose_route()# in $du (destination URI).route(relay);exit;}# CANCEL processingif (is_method(CANCEL)) {if (t_check_trans())t_relay();exit;}# absorb retransmissions, but do not create transactiont_check_trans();if ( !(is_method(REGISTER) ) ) {if (is_myself($fd)) {# authenticate if from local subscriber# authenticate all initial non-REGISTER request that pretend to be# generated by local subscriber (domain from FROM URI is local)if (!proxy_authorize(, subscriber)) {proxy_challenge(, 0);exit;}if (!db_check_from()) {send_reply(403,Forbidden auth ID);exit;}consume_credentials();# caller authenticated} else {# if caller is not local, then called number must be localif (!is_myself($rd)) {send_reply(403,Relay Forbidden);exit;}}}# preloaded route checkingif (loose_route()) {xlog(L_ERR,Attempt to route with preloaded Routes [$fu/$tu/$ru/$ci]);if (!is_method(ACK))send_reply(403,Preload Route denied);exit;}# record routingif (!is_method(REGISTER|MESSAGE))record_route();# account only INVITEsif (is_method(INVITE)) {do_accounting(log);}if (!is_myself($rd)) {append_hf(P-hint: outbound\r\n);route(relay);}# requests for my domainif (is_method(PUBLISH|SUBSCRIBE)) {send_reply(503, Service Unavailable);exit;}if (is_method(REGISTER)) {# authenticate the REGISTER requestsif (!www_authorize(, subscriber)) {www_challenge(, 0);exit;}if (!db_check_to()) {send_reply(403,Forbidden auth ID);exit;}if ($proto tcp)setflag(TCP_PERSISTENT);if (isflagset(NAT)) {setbflag(SIP_PING_FLAG);}# store the registration and generate a SIP replyif (!save(location))xlog(failed to register AoR $tu\n);exit;}if ($rUNULL) {# request with no Username in RURIsend_reply(484,Address Incomplete);exit;}# do lookup with method filteringif (!lookup(location,m)) {if (!db_does_uri_exist()) {send_reply(420,Bad Extension);exit;}t_reply(404, Not Found);exit;}if (isbflagset(NAT)) setflag(NAT);# when routing via usrloc, log the missed calls alsodo_accounting(log,missed);route(relay);
}route[relay] {# for INVITEs enable some additional helper routesif (is_method(INVITE)) {if (isflagset(NAT)) {rtpproxy_offer(ro);}t_on_branch(per_branch_ops);t_on_reply(handle_nat);t_on_failure(missed_call);}if (isflagset(NAT)) {add_rr_param(;natyes);}if (!t_relay()) {send_reply(500,Internal Error);}exit;
}branch_route[per_branch_ops] {xlog(new branch at $ru\n);
}onreply_route[handle_nat] {if (nat_uac_test(1))fix_nated_contact();if ( isflagset(NAT) )rtpproxy_answer(ro);xlog(incoming reply\n);
}failure_route[missed_call] {if (t_was_cancelled()) {exit;}# uncomment the following lines if you want to block client# redirect based on 3xx replies.##if (t_check_status(3[0-9][0-9])) {##t_reply(404,Not found);## exit;##}}