- 博客(29)
- 资源 (4)
- 收藏
- 关注
原创 分离opensips错误日志
修改OpenSIPS日志保存路径OpenSIPS可以设置写入的设施,设施配置对应的log文件路径。默认配置的是log_facility=LOG_LOCAL0。如下配置:vim /etc/rsyslog.conf增加两行:local0.* /opt/opensips/logs/opensips.loglocal0.err /var/log/opensips/opensips_err.log然后重启rsyslog服务:/etc/init.d/rsyslog restart(如果删...
2021-08-16 16:53:26
304
原创 OPENSIPS系列之拉黑IP,防无效请求攻击
安装fail2banapt install -y fail2ban sendmail mailutils/etc/init.d/sendmail start配置fail2ban增加以下内容到配置文件/etc/fail2ban/jail.conf :[opensips]enabled = truefilter = opensipsaction = iptables-allports[name=opensips, protocol=all] sen..
2021-04-21 17:23:53
605
原创 opensips系列之共享内存,进程个数配置
共享内存配置修改/usr/local/opensips/etc/opensips/opensipsctlrc增加STARTOPTIONS="-m 512",表示修改共享内存的大小为512MOpenSIPS有自己的内存分配器,服务器内存分配及管理有以下几个特点:1.限制最大使用的内存范围;2.内存管理优于系统分配API;3.通过编译选项,可以选择多个内存分配器。OpenSIPS采用多进程应用设计方式,服务器通过共享内存屏蔽进程间通信的复杂问题,对外给用户提供了用于内存管理的API.
2021-04-21 11:09:10
972
原创 Freeswitch的一个内存泄漏分析
发现问题在平常开发过程中,要做一个细心的人,不轻易放过任何一个问题。这次发现Freeswitch的内存泄漏,是因为经常有关注测试环境的Freeswitch内存占用。发现在测试环境升级的第二天Freeswitch内存就升到了200-300M,非常异常!观察问题使用脚本定时统计Freeswitch的内存占用,同时打开Freeswitch的调试开关。export TPORT_DUMP=/usr/local/freeswitch/log/tport_sip.log输出Freeswi.
2021-04-16 18:29:32
1743
2
原创 在win10 arc diff提交后,phabricator界面显示context not available
解决方法:1、下载GNU diff工具,注意安装依赖包。1.1 Install GNU diff (http://gnuwin32.sourceforge.net/packages/diffutils.htm).1.2 create a bat file (mydiff.bat) with the following content:@echo off<full path of the diff.exe installed in step 1> -U9999999 -L %
2021-03-23 17:48:57
278
原创 如何分析TCP连接的内存占用情况
1、先查看服务器 PAGESIZE 设置,单位是 Byte,查出来是4096getconf PAGESIZE2、查看 tcp 连接分配的缓冲区内存大小设置,单位是 Bytecat /proc/sys/net/ipv4/tcp_rmem # TCP套接字的接收缓冲区大小cat /proc/sys/net/ipv4/tcp_wmem # TCP套接字的发送缓冲区大小查询结果:root@Develop02:~# cat /proc/sys/net/ipv4/tcp_rme
2021-03-10 10:14:17
3203
原创 360的evpp库的一处内存泄漏分析,shared_ptr的循环引用
场景使用evpp的evnsq的代码连接nsqlookupd进行Http查询,然后连接nsq,存在内存泄漏。类似于这样的代码:#include <evnsq/exp.h>#include <evnsq/consumer.h>#include <evpp/event_loop.h>int OnMessage(const evnsq::Message* msg) { LOG_INFO << "Received a message, i
2021-03-09 17:08:31
519
1
原创 arc Undefined index: Repository UUID 解决
问题:执行arc diff --trace后,碰到错误。No unit test engine is configured for this project.>>> [10] (+11,571) <exec> $ svn diff --depth empty --diff-cmd /Users/mac-mini2/Repository/phabricator/arcanist/scripts/repository/binary_safe_diff.sh -x -U3
2021-03-08 15:33:47
533
原创 Phabricator结合SVN的使用流程
术语phabricator怎么念http://www.howtopronounce.cc/phabricator安装安装mysqldocker search mysql 搜索docker pull mysql:5.6 下载docker images |grep mysql 查看docker run -p 3306:3306 --name mysql_docker -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs...
2021-03-01 16:41:27
789
原创 requests的get类型请求params参数中存在百分号‘%’的解决办法
比如这样的请求:curl http://172.18.41.220:8181?cmd=regipv6\&local_inner_ip=fe80::5484:7aff:fefe:9799服务端实际上收到的是:DEBUG: doGet param:{'cmd': 'regipv6', 'local_inner_ip': '%5Bfe80%3A%3A5484%3A7aff%3Afefe%3A9799%5D'}如何解决?网上给的办法是>>> import reques..
2021-01-06 20:50:18
1998
原创 docker系列之日常问题记录
日常问题问题1Unable to find image ' :latest' locallyFATA[0000] Invalid repository name ( ), only [a-z0-9-_.] are allowedrun.sh: line 4: -v: command not found解决方法:去掉 run.sh 的换行符\ 后面的多余空格docker run --name nginx --privileged=true --restart=always --net=.
2020-11-27 17:24:48
642
原创 FreeSwitch系列之监控
如何安装1、git clonehttps://gitee.com/chenvv0417/freeswitch-monitor.git2、效果图
2020-11-27 15:53:13
1155
4
原创 Opensips系列之使用自己的账号系统过滤非法请求
配置修改修改opensips.cfg,判断sip的from header的user在不在指定sip_register_table里面 else if (is_method("REGISTER")) { # auth_db模块中配置的数据库中的用户表 $var(auth_code) = fs_authorize("$fU", "sip_register_table"); if ( $var(auth_code) <= 0)
2020-11-23 13:44:38
396
原创 FreeSwitch系列之认证算法
直接看最后认证的源代码(sofia_reg.c:sofia_reg_parse_auth):for_the_sake_of_interop: if ((input = switch_mprintf("%s:%q", regstr, uri))) { switch_md5_string(uridigest, (void *) input, strlen(input)); } if (nc && cnonce && qop) {
2020-11-20 16:40:39
853
原创 FreeSwitch系列之注册流程处理
业务流程终端向服务器发送REGISTER请求sip消息示例: REGISTER sip:39.108.105.163 SIP/2.0 Max-Forwards: 10 Record-Route: <sip:39.108.105.163:5070;r2=on;lr> Record-Route: <sip:39.108.105.163:5070;transport=tcp;r2=on;lr> Via: SIP/2.0/UDP 39.10.
2020-11-12 17:27:45
1583
原创 FREESWITCH系列之内存泄漏排查总结
心路历程1.懵逼状态在接到这个任务的时候,对FreeSwitch处于一问三不知的情况,不了解FreeSwitch的业务,不了解流程,更要不要说代码了。但是还是硬着头皮上了,原本以为是个短期接触战,没想到被自己搞成了持久战。回过来头看,一开始对任务的难度还是低估了,没有做好持久战的准备。2.无头苍蝇状态在接到任务后,在没有先去了解业务的情况下,就开始了各种尝试。工具1:valgrind,跑了一段时间后,除了输出一堆无用的垃圾外,没什么用工具2:fmpool,开源的工具,使用该工具后,性
2020-11-12 09:08:40
2249
原创 FREESWITCH系列之调试技巧
打开日志开关export SOFIA_DEBUG=9export NUA_DEBUG=9export NTA_DEBUG=9export NEA_DEBUG=9export TPORT_DEBUG=9export TPORT_LOG=1export TPORT_DUMP=/usr/local/freeswitch/log/tport_sip.logexport SOA_DEBUG=9export IPTSEC_DEBUG=9export SU_DEBUG=9修改su的日志打印
2020-11-12 08:58:15
608
原创 FreeSwitch系列之接收消息处理流程
接收消息处理流程tport_wakeup_pri在profile clone线程中被触发。1、接收消息2、解析消息成结构体msg3、找到leg去处理请求4、创建irq5、执行leg的回调函数,转到nua_handle层去处理。6、找到method。7、执行三部曲:init-->preprocess-->reporttport_wakeup_pri =>tport_recv_event =>tport_recv_data(self);
2020-11-11 17:59:19
664
1
原创 FreeSwitch系列之mod_sofia启动流程
模块加载过程启动事件处理线程池启动事件处理线程池 :SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) => sofia_msg_thread_start(0); => sofia_msg_thread_run => sofia_process_dispatch_event => our_sofia_event_callback : 处理消息这个线程的
2020-11-11 16:38:41
916
原创 FREESWITCH系列之学习资料汇总
FreeSwitch架构篇FreeSwitch的架构https://blog.youkuaiyun.com/yetyongjin/article/details/96838256https://blog.youkuaiyun.com/hello_zyg/article/details/79125052FreeSwitch总体架构https://www.cnblogs.com/Braveliu/p/11325031.htmlSofia-Sip辅助文档Sofia-SIP辅助文档一 – Sofia-SIP源代
2020-11-11 16:30:53
402
1
原创 FREESWITCH系列之代码技巧
FreeSwitch是一款优秀的开源软件,里面很多代码技巧值得大家学习。1.条件判断转化成函数比如nta.c:2768,tport_is_stream把复杂的条件判断提取成一个函数,利用函数命名tport_is_stream让代码清晰易读。 stream = tport_is_stream(tport); /* Try to use compression on reverse direction if @Via has comp=sigcomp */ if (s
2020-11-06 18:06:28
475
原创 FreeSwitch系列之内存管理
1.sofia-sip库的内存管理home-based 内存管理机制,在需要分配许多内存块的情况下非常有用。分配器是通过分配中心保存各个分配内存块的引用来实现的。当分配中心释放,所有它保持引用的内存块都会被释放。为一个给定任务分配大量的内存块时基于home的内存管理将非常高效。分配将通过home内存来执行,home内存保留着每个分配内存块的地址。当home内存被释放时,它也将释放那些它跟踪的内存块。这大大简化了应用代码逻辑,不再需要维护每块分配的内存空间,不需要保留他们的地址也不再需要一个个单独释放
2020-11-02 19:27:02
1154
1
原创 使用GPERFOOLS排查内存泄漏
什么是gperftools一个优化的内存管理算法—tcmalloc性能优于malloc。一个用于CPU profile的工具,用于检测程序的性能热点,这个功能和gprof类似。一个用于堆检查工具,用于检测程序在是够有内存泄露,这个功能和valgrind类似。一个用于Heap profile的工具,用于监控程序在执行过程的内存使用情况。如何安装代码:https://github.com/gperftools/gperftoolsgit clone https://githu.
2020-10-27 17:57:04
687
原创 C++常见编译WARNING小结
首先要说的是大家不要对Warning视而不见,有时候通过Warning确实可以找到一些隐患。其次,未来新增代码应不允许Warning出现,有Warning需要修改掉。以下是常见的Warning小结。常见十大Warning1.warning: comparison between signed and unsigned integer expressions [-Wsign-compare]常见错误写法:std::vector<int> photo_id;for (int i
2020-10-09 09:41:38
7297
原创 PHP解压ZIP乱码问题
php版本:PHP 5.6.28原来的解压代码: $zip = new ZipArchive(); $flag = $zip->open($filePath); if ($flag !== true) { return $retJson; } $zip->extractTo($extractPath); $zip->close();如果zip文件含有文件名是B1+1231+伊利.jpg类似的文件,解压出来是B1+1
2020-09-18 16:07:18
614
原创 Timing Wheel的c++实现
必须的知识储备1、boost的circular_buffer。2、c++的shared_ptr和weak_ptr。3、Timing wheel,可以学习志伟的服务器网络框架设计.ppt。csmain的代码实现主要数据结构1、Entry结构持有连接(TCPConn)的弱引用。2、Entry的析构函数实现了连接的主动关闭。本质上就是把连接的管理交给了Entry结构。typedef std::weak_ptr<evpp::TCPConn> WeakTCPConnPtr
2020-07-02 09:52:51
464
原创 批量转换c++中非utf-8编码的文件
首先是查找非utf-8编码的文件:find . ! -iregex '.*\.svn.*' -type f -regextype posix-extended -regex ".*\.(cpp|cc|c|h)" -exec bash -c "enca -L zh_CN {}|grep GB2312 > /dev/null && echo {}" \;其次是批量转换:find . ! -iregex '.*\.svn.*' -type f -regextype posix
2020-06-18 11:15:32
395
原创 使用ASTYLE统一C++代码风格
如何统一使用统一的astyle配置:astyle --style=ansi --indent=spaces=4 -k1 -W1 -p -j -H -c -U -w -S -M -z2 -n下面详细解释一下各个参数的含义:1、指针对齐,我们选择k1。--align-pointer=type OR -k1 比如char* p--align-pointer=middle OR -k2 比如char * p--align-pointer=name OR -k3
2020-06-17 17:17:51
672
原创 如何展示XML,利用XSLT展示CATCH2单元测试报告的一次实践
在网上搜索只能找到将gtest单元测试的报告转换为HTML,没有catch2的模板。所以只能参考gtest的xslt模板。参考链接:https://blog.youkuaiyun.com/Neil4/article/details/104484792整理后相应的catch2的xslt模板如下:<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/
2020-06-16 20:15:59
661
3
csgate.apk
2020-06-19
C In Depth( ppt,C深度)
2009-02-12
正则表达式(regular expression)
2009-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人