Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/619dev/minghe
/ functions
Functions
194 in github.com/619dev/minghe
⨍
Functions
194
◇
Types & classes
24
↓ 22 callers
Function
build_response
从 SIP 请求构建响应 复制原始请求的 Via、From、To、Call-ID、CSeq 头部, 并设置指定的状态码和原因短语。
src/sip/parser.rs:102
↓ 13 callers
Function
md5_hex
计算 MD5 哈希并返回小写十六进制字符串
src/sip/registrar.rs:464
↓ 10 callers
Function
build_outbound_request
( request: &str, target_uri: &str, domain: &str, contact_uri: &str, )
src/sip/router.rs:825
↓ 8 callers
Method
protect_rtp
加密 RTP 数据包为 SRTP 数据包 步骤: 1. 解析 RTP 头部(至少 12 字节) 2. 使用 AES-CM 加密载荷 3. 计算并附加 HMAC-SHA1-80 认证标签(10 字节) 输入:完整的 RTP 数据包 输出:SRTP 数据包 = RTP头部 + 加密载荷 + 认证标签
src/media/srtp.rs:300
↓ 7 callers
Method
cleanup_call
清理呼叫资源
src/sip/router.rs:760
↓ 6 callers
Function
extract_extension
从 SIP URI 中提取用户部分(分机号) 支持格式: - `sip:1001@domain` - `sips:1001@domain` - `<sip:1001@domain>` - `"Display" <sip:1001@domain>;tag=xxx`
src/sip/parser.rs:36
↓ 6 callers
Function
extract_header_value
通用头部值提取 根据头部名称从 SIP 请求文本中提取对应的值
src/sip/parser.rs:333
↓ 6 callers
Method
parse
从字节切片解析 RTP 头部
src/media/srtp.rs:634
↓ 6 callers
Function
rewrite_sdp
修改 SDP 中的媒体地址和端口,并注入指定的 SDES crypto key 将 SDP 中的 c= 行替换为服务器中继地址, 将 m=audio 行的端口替换为中继端口,并将 RTP/AVP 规范化为 RTP/SAVP。 服务器作为媒体 B2BUA,每一侧使用独立的 SDES 密钥。
src/sip/parser.rs:653
↓ 6 callers
Method
unprotect_rtp
解密 SRTP 数据包为 RTP 数据包 步骤: 1. 验证 HMAC-SHA1-80 认证标签 2. 使用 AES-CM 解密载荷 输入:完整的 SRTP 数据包 输出:RTP 数据包 = RTP头部 + 明文载荷
src/media/srtp.rs:355
↓ 5 callers
Function
extract_body
提取 SIP 消息体(SDP)
src/sip/parser.rs:515
↓ 5 callers
Function
extract_call_id
从 SIP 消息中提取 Call-ID
src/sip/parser.rs:317
↓ 5 callers
Function
extract_uri_from_header
从 From/To 头部提取 URI 支持标准格式和 SIP 紧凑格式: - From / f: - To / t: - Contact / m:
src/sip/parser.rs:603
↓ 5 callers
Function
first_header_line
(msg: &str, name: &str, compact: Option<&str>)
src/sip/router.rs:991
↓ 5 callers
Function
registered_contact_uri
(extension: &str, domain: &str, registrar: &RegistrarService)
src/sip/router.rs:1009
↓ 4 callers
Function
build_forwarded_invite_response
( original_invite: &str, callee_response: &str, status_code: u16, reason: &str, contact_ur
src/sip/router.rs:890
↓ 4 callers
Function
build_response_with_headers
从 SIP 请求构建带有额外头部的响应
src/sip/parser.rs:153
↓ 4 callers
Method
derive_session_keys
RFC 3711 密钥派生函数(KDF) 从主密钥和主盐值派生会话密钥、会话盐值和会话认证密钥。 使用 AES-CM 伪随机函数(PRF)。 - label 0x00 → 会话加密密钥(128 位) - label 0x01 → 会话盐值(112 位) - label 0x02 → 会话认证密钥
src/media/srtp.rs:209
↓ 4 callers
Function
parse_crypto_attribute
解析 SDP `a=crypto` 属性行 输入格式:`a=crypto:TAG SUITE inline:KEY` 或不带 `a=` 前缀的版本 返回 (tag, suite_name, base64_key) # 示例 ``` let line = "a=crypto:1 AES_CM_
src/media/srtp.rs:544
↓ 4 callers
Function
server_contact_uri
(extension: &str, domain: &str)
src/sip/router.rs:1005
↓ 4 callers
Method
stream_state_mut
(&mut self, ssrc: u32)
src/media/srtp.rs:477
↓ 4 callers
Method
to_sdes_attribute
生成 SDES `a=crypto` 属性值 返回格式:`a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:<base64>`
src/media/srtp.rs:169
↓ 3 callers
Method
aes_cm_encrypt
AES-CM(Counter Mode)加解密 RFC 3711 Section 4.1.1: IV = (k_s XOR (SSRC || packet_index)) 左填充到 16 字节 由于 CTR 模式加密和解密操作完全相同,此函数同时用于加密和解密。
src/media/srtp.rs:414
↓ 3 callers
Function
build_acceptor
构建 TLS Acceptor
src/tls.rs:389
↓ 3 callers
Function
extract_contact_uri
提取 Contact 头部的 URI 从 SIP 请求文本中提取 Contact 头部的 URI 值
src/sip/parser.rs:284
↓ 3 callers
Function
make_rtp_packet
(ssrc: u32, sequence: u16, payload: &[u8])
src/media/srtp.rs:708
↓ 3 callers
Method
prf_derive
AES-CM PRF 派生函数 — 派生最多 16 字节的密钥材料 按照 RFC 3711 Section 4.3.1: 输入 x = label || r (其中 r = key_derivation_rate,默认为 0) IV = (master_salt XOR (label << 48)
src/media/srtp.rs:225
↓ 3 callers
Function
reason_phrase
(response: &str)
src/sip/router.rs:995
↓ 2 callers
Method
allocate_port_pair
分配一对 RTP/RTCP 端口(偶数为 RTP,偶数+1 为 RTCP)
src/media/relay.rs:69
↓ 2 callers
Method
compute_auth_tag
计算 HMAC-SHA1-80 认证标签 输入:已认证部分(SRTP 头部 + 加密载荷)+ ROC(4 字节) 输出:截断到 80 位(10 字节)的 HMAC-SHA1 值
src/media/srtp.rs:464
↓ 2 callers
Function
estimate_roc
(state: SrtpStreamState, sequence: u16)
src/media/srtp.rs:482
↓ 2 callers
Function
extract_expires
提取 Expires 头部值
src/sip/parser.rs:484
↓ 2 callers
Function
extract_request_uri
提取请求 URI 从 SIP 请求的第一行提取 Request-URI
src/sip/parser.rs:367
↓ 2 callers
Function
extract_status_code
提取响应状态码 从 SIP 响应消息的第一行提取状态码
src/sip/parser.rs:386
↓ 2 callers
Function
extract_to_tag
提取 To 头部中的 tag 参数
src/sip/parser.rs:446
↓ 2 callers
Function
generate_and_save_cert
生成自签名证书并保存到 certs/ 目录
src/tls.rs:206
↓ 2 callers
Function
generate_nonce
生成随机 nonce(32 字节十六进制字符串)
src/sip/registrar.rs:322
↓ 2 callers
Method
get_media_addr
获取媒体地址 如果配置中 `media_addr` 为空,则自动检测本机 IP 地址。
src/config.rs:162
↓ 2 callers
Function
header_lines
(msg: &str, name: &str, compact: Option<&str>)
src/sip/router.rs:972
↓ 2 callers
Function
is_cert_expiring_soon
检查 PEM 编码的证书是否即将过期 解析证书的 Not After 时间,如果距离到期不足 RENEWAL_DAYS_BEFORE 天则返回 true
src/tls.rs:170
↓ 2 callers
Function
load_certs_from_path
从文件路径加载证书链
src/tls.rs:355
↓ 2 callers
Function
load_key_from_path
从文件路径加载私钥
src/tls.rs:375
↓ 2 callers
Method
lookup
查找分机的注册信息
src/sip/registrar.rs:257
↓ 2 callers
Function
parse_authorization
解析 Authorization 头部值 输入格式:`Digest username="1001", realm="minghe.local", nonce="xxx", uri="sip:minghe.local", response="yyy"`
src/sip/registrar.rs:330
↓ 2 callers
Method
prf_derive_auth
AES-CM PRF 派生函数 — 派生认证密钥(20 字节,需要多个 AES 块)
src/media/srtp.rs:262
↓ 2 callers
Method
start_cleanup_task
启动后台清理任务
src/sip/registrar.rs:306
↓ 2 callers
Function
suite_with_same_key_as
(suite: &SrtpCryptoSuite)
src/media/srtp.rs:719
↓ 2 callers
Method
total_header_len
计算完整 RTP 头部长度(包括固定头部、CSRC 列表和扩展头)
src/media/srtp.rs:691
↓ 2 callers
Method
unregister_writer
注销分机的写入通道
src/sip/router.rs:118
↓ 2 callers
Function
update_stream_state_after_success
(state: &mut SrtpStreamState, sequence: u16, guessed_roc: u32)
src/media/srtp.rs:500
↓ 1 callers
Function
build_outbound_request_bytes
( request: &[u8], target_uri: &str, domain: &str, contact_uri: &str, )
src/sip/router.rs:813
↓ 1 callers
Method
cleanup_expired
清理过期的注册
src/sip/registrar.rs:284
↓ 1 callers
Method
cleanup_expired
清理过期事务(超过 32 秒,Timer B)
src/sip/transaction.rs:102
↓ 1 callers
Method
clear_connection_extension
清除连接关联的分机号(显式注销后调用)
src/sip/server.rs:76
↓ 1 callers
Function
constant_time_eq
常量时间比较两个字节切片(防止时序攻击)
src/media/srtp.rs:598
↓ 1 callers
Method
create_session
创建新的中继会话(如果已存在则返回现有会话)
src/media/relay.rs:96
↓ 1 callers
Method
current
获取当前的 TlsAcceptor 快照
src/tls.rs:48
↓ 1 callers
Function
extract_audio_media_addr_from_sdp
(sdp: &str)
src/sip/router.rs:1054
↓ 1 callers
Function
extract_called_extension
(request: &str)
src/sip/router.rs:1016
↓ 1 callers
Function
extract_cseq_method
提取 CSeq 头部中的方法名
src/sip/parser.rs:467
↓ 1 callers
Function
extract_from_tag
提取 From 头部中的 tag 参数
src/sip/parser.rs:425
↓ 1 callers
Function
extract_method
提取 SIP 方法名 从 SIP 消息的第一行提取方法(REGISTER, INVITE, BYE 等) 如果是响应消息,返回 None
src/sip/parser.rs:350
↓ 1 callers
Function
extract_srtp_crypto_from_sdp
(sdp: &str)
src/sip/router.rs:1025
↓ 1 callers
Function
frame_sip_message
TCP 消息帧分界 在 TCP 缓冲区中查找完整的 SIP 消息边界。 SIP over TCP 使用 Content-Length 头部来确定消息体长度。 返回完整消息的总字节长度(头部 + 空行 + 消息体), 如果缓冲区中没有完整消息则返回 None。
src/sip/parser.rs:532
↓ 1 callers
Function
generate_branch
生成 Via 分支参数 格式:z9hG4bK + 随机十六进制字符串 RFC 3261 要求分支参数以 "z9hG4bK" 开头
src/sip/parser.rs:83
↓ 1 callers
Function
generate_self_signed
使用 rcgen 生成自签名证书
src/tls.rs:270
↓ 1 callers
Function
generate_tag
生成随机标签(用于 From/To 头部的 tag 参数)
src/sip/parser.rs:89
↓ 1 callers
Method
get_connection_extension
获取连接的分机号
src/sip/server.rs:92
↓ 1 callers
Method
get_password
获取指定分机的密码 优先返回独立密码,未配置则返回默认密码
src/sip/registrar.rs:85
↓ 1 callers
Method
get_writer
获取分机的写入通道
src/sip/router.rs:125
↓ 1 callers
Method
handle_ack
处理 ACK 请求
src/sip/router.rs:516
↓ 1 callers
Method
handle_bye
处理 BYE 请求
src/sip/router.rs:550
↓ 1 callers
Method
handle_callee_response
处理来自被叫的响应(100/180/200 等) 作为 B2BUA,使用原始 INVITE 的头部信息重建响应转发给主叫。 被叫的响应中包含被叫的 Via 头部,不能直接转发给主叫, 否则主叫会因 Via 不匹配而忽略响应。
src/sip/router.rs:308
↓ 1 callers
Method
handle_cancel
处理 CANCEL 请求
src/sip/router.rs:627
↓ 1 callers
Function
handle_connection
处理单个 TLS 连接
src/sip/server.rs:158
↓ 1 callers
Method
handle_invite
处理 INVITE 请求 流程: 1. 提取被叫号码 2. 检查被叫是否在线 3. 分配媒体中继端口 4. 生成 SRTP 密钥 5. 转发 INVITE 到被叫(修改 SDP) 6. 返回 100 Trying 给主叫
src/sip/router.rs:139
↓ 1 callers
Method
handle_register
处理 REGISTER 请求 完整流程: 1. 从 To/From URI 提取分机号 2. 验证分机号在有效范围内 3. 检查 Authorization 头部 - 无:返回 401 + WWW-Authenticate 挑战 - 有:验证 Digest 响应 - 成功:注册/注销,返回 200
src/sip/registrar.rs:103
↓ 1 callers
Method
has_connection_for_extension
检查是否仍有其他连接关联到指定分机
src/sip/server.rs:84
↓ 1 callers
Method
is_registered
检查分机是否在线(已注册且未过期)
src/sip/registrar.rs:273
↓ 1 callers
Function
is_request
判断消息是否为 SIP 请求
src/sip/parser.rs:580
↓ 1 callers
Function
is_response
判断消息是否为 SIP 响应
src/sip/parser.rs:589
↓ 1 callers
Function
parse_cert_pem
从 PEM 字节解析证书
src/tls.rs:335
↓ 1 callers
Function
parse_key_pem
从 PEM 字节解析私钥
src/tls.rs:346
↓ 1 callers
Function
print_banner
打印启动横幅
src/main.rs:25
↓ 1 callers
Function
process_sip_message
处理一条完整的 SIP 消息
src/sip/server.rs:243
↓ 1 callers
Function
rebuild_request_with_sdp
重建带有新 SDP 的 SIP 请求
src/sip/router.rs:771
↓ 1 callers
Method
register
注册或更新分机
src/sip/registrar.rs:241
↓ 1 callers
Method
register_connection
注册连接
src/sip/server.rs:55
↓ 1 callers
Method
register_shutdown
注册停止信号发送器
src/media/relay.rs:149
↓ 1 callers
Method
register_writer
注册分机的写入通道(由 server 模块在注册成功后调用)
src/sip/router.rs:111
↓ 1 callers
Method
reload
热重载:替换内部的 TlsAcceptor
src/tls.rs:53
↓ 1 callers
Method
remove_connection
注销连接
src/sip/server.rs:98
↓ 1 callers
Method
remove_session
移除中继会话并停止中继任务
src/media/relay.rs:130
↓ 1 callers
Function
rewrite_sdp_with_crypto
修改 SDP 中的媒体地址和端口,可选注入 SDES crypto key
src/sip/parser.rs:658
↓ 1 callers
Function
run
启动 SIP TLS 服务器
src/sip/server.rs:105
↓ 1 callers
Function
run_relay
运行 SRTP B2BUA 媒体中继 为指定的呼叫建立两个 UDP socket,双向中继 SRTP 数据包。 采用"地址学习"机制:从首个收到的数据包中获取远端地址。 SRTP B2BUA 模式下会解密并重加密;普通 RTP 模式下透明转发。
src/media/relay.rs:178
↓ 1 callers
Method
set_connection_extension
设置连接的分机号(注册成功后调用)
src/sip/server.rs:68
↓ 1 callers
Function
setup_tls
初始化 TLS,返回可热重载的 TlsAcceptor 如果配置中指定了证书路径,从磁盘加载。 否则自动生成自签名证书。
src/tls.rs:64
↓ 1 callers
Function
should_strip_for_sdes_srtp
(line: &str)
src/sip/parser.rs:731
↓ 1 callers
Function
split_digest_params
分割 Digest 参数(处理引号内的逗号)
src/sip/registrar.rs:385
next →
1–100 of 194, ranked by callers