Clamav杀毒软件源码分析笔记 三

本文介绍了Clamav杀毒软件的源码分析,特别是其配置文件的解析过程。文章详细讲解了如何读取配置文件、解析配置参数,如LogFileMaxSize,并展示了核心解析函数`parsecfg`的工作原理。此外,还提到了配置文件中不同选项的作用,如日志文件大小设置等。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                 
  Clamav杀毒软件源码分析笔记[三]


刺猬@http://blog.csdn.net/littlehedgehog





[获取配置文件信息]


说来比较打击积极性的是我们还得做一番比较麻烦的但是却又没多少挑战性的事业,因为如果clamd这个服务端全部都用命令行来指定信息的话,Clamav估计会没有市场,因为打字就会累死管理员。我们要设置比如像多久升级一次啊,升级服务器在哪里下载这些东西这些乱七八糟的东西,我们都要给程序指定。去看看配置文件吧,想想看如果那些都要靠人来输入,这容易让人抓狂。但是配置文件这个是必须要看的。我们捡一个例子来说:



  1. # Maximal size of the log file.
  2. # Value of 0 disables the limit.
  3. # You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
  4. # and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size
  5. # in bytes just don't use modifiers.
  6. # Default: 1M
  7. #LogFileMaxSize 2M

就看最后一行了吧,这里是设置log日志文件的大小,参数就是LogFileMaxSize,而参数值就是2M,中间用空格隔开。这里设置log文件因为clamd是后台作业的,它就像哑巴一样,没有终端可以提供给它打印信息。当然它在后台还是可以打开文件的,所以就让它往log文件里面写内容,我们事后来查


这里是分析的主函数,贴着方便分析。


  1. //分析配置文件 message表示是否要显示信息
  2. struct cfgstruct *parsecfg(const char *cfgfile, int messages)
  3. {
  4.     char buff[LINE_LENGTH], *name, *arg;
  5.     FILE *fs;
  6.     int line = 0, i, found, ctype, calc;
  7.     struct cfgstruct *copt = NULL;
  8.     struct cfgoption *pt;
  9.     struct cfgoption cfg_options[] =
  10.     {
  11.         { "LogFile", OPT_STR
  12.         },
  13.         { "LogFileUnlock", OPT_NOARG},
  14.         { "LogFileMaxSize", OPT_COMPSIZE},
  15.         { "LogTime", OPT_NOARG},
  16.         { "LogClean", OPT_NOARG},
  17.         { "LogVerbose", OPT_NOARG}, /* clamd + freshclam */
  18.         { "LogSyslog", OPT_NOARG},
  19.         { "LogFacility", OPT_STR},
  20.         { "PidFile", OPT_STR},
  21.         { "TemporaryDirectory", OPT_STR},
  22.         { "DisableDefaultScanOptions", OPT_NOARG},
  23.         { "ScanPE", OPT_NOARG},
  24.         { "DetectBrokenExecutables", OPT_NOARG},
  25.         { "ScanMail", OPT_NOARG},
  26.         { "MailFollowURLs", OPT_NOARG},
  27.         { "ScanHTML", OPT_NOARG},
  28.         { "ScanOLE2", OPT_NOARG},
  29.         { "ScanArchive", OPT_NOARG},
  30.         { "ScanRAR", OPT_NOARG},
  31.         { "ArchiveMaxFileSize", OPT_COMPSIZE},
  32.         { "ArchiveMaxRecursion", OPT_NUM},
  33.         { "ArchiveMaxFiles", OPT_NUM},
  34.         { "ArchiveMaxCompressionRatio", OPT_NUM},
  35.         { "ArchiveLimitMemoryUsage", OPT_NOARG},
  36.         { "ArchiveBlockEncrypted", OPT_NOARG},
  37.         { "ArchiveBlockMax", OPT_NOARG},
  38.         { "DataDirectory", OPT_STR}, /* obsolete */
  39.         { "DatabaseDirectory", OPT_STR}, /* clamd + freshclam */
  40.         { "TCPAddr", OPT_STR},
  41.         { "TCPSocket", OPT_NUM},
  42.         { "LocalSocket", OPT_STR},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值