<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta name="generator" content="pandoc" /> <title></title> <style type="text/css">code{white-space: pre;}</style> <link rel="stylesheet" href="/en/github.css" type="text/css" /> </head> <body> <h1 id="dynamic-configuration-dconf">Dynamic Configuration (DCONF)</h1> <p>ClamAV supports a limited set of configuration options that may be enabled or disabled via settings in the <code>*.cfg</code> database. At this time, these settings are distributed in <code>daily.cfg</code>.</p> <p>The goal of DCONF is to enable the ClamAV team to rapidly disable new or experimental features for specific ClamAV versions if a significant defect is discovered after release.</p> <p>This database is small, and the settings are largely vestigial. The team has not had a need to disable many features in a long time, and so the ClamAV versions in the settings at this time should no longer be in use.</p> <p>The strings and values referenced in <code>daily.cfg</code> are best cross-referenced with the macros and structures defined here:</p> <ul> <li><a href="https://github.com/Cisco-Talos/clamav-devel/blob/dev/0.101/libclamav/dconf.h#L49" class="uri">https://github.com/Cisco-Talos/clamav-devel/blob/dev/0.101/libclamav/dconf.h#L49</a></li> <li><a href="https://github.com/Cisco-Talos/clamav-devel/blob/dev/0.101/libclamav/dconf.c#L54" class="uri">https://github.com/Cisco-Talos/clamav-devel/blob/dev/0.101/libclamav/dconf.c#L54</a></li> </ul> <p>The format for a DCONF signature is:</p> <pre> Category:Flags:StartFlevel:EndFlevel </pre> <p><code>Category</code> may be one of:</p> <ul> <li>PE</li> <li>ELF</li> <li>MACHO</li> <li>ARCHIVE</li> <li>DOCUMENT</li> <li>MAIL</li> <li>OTHER</li> <li>PHISHING</li> <li>BYTECODE</li> <li>STATS</li> <li>PCRE</li> </ul> <p><code>Flags</code>:</p> <p>Every feature that may be configured via DCONF is listed in <code>struct dconf_module modules</code> in <code>libclamav/dconf.c</code>. Any given feature may be default-on or default-off. Default-on features have the 4th field set to a <code>1</code> and default off are set to <code>0</code>. The <code>Flags</code> field for a given <code>Category</code> overrides the defaults for all of the options listed under that category.</p> <p>A settings of <code>0x0</code>, for example, means that all options the category be disabled.</p> <p>The macros listed in <code>libclamav/dconf.h</code> will help you identify which bits to set to get the desired results.</p> <p><code>StartFlevel</code>:</p> <p>This is the <a href="../../UserManual/Signatures/FunctionalityLevels.html">FLEVEL</a> of the minimum ClamAV engine for which you want the settings to be in effect.</p> <p><code>EndFlevel</code>:</p> <p>This is the <a href="../../UserManual/Signatures/FunctionalityLevels.html">FLEVEL</a> of the maximum ClamAV engine for which you want the settings to be in effect. You may wish to select <code>255</code> to override the defaults of future releases.</p> <hr /> <h2 id="example">Example</h2> <p>Consider the <code>OTHER_CONF_PDFNAMEOBJ</code> option in the <code>category</code> <code>OTHER</code>.</p> <pre> #define OTHER_CONF_UUENC 0x1 // Default: 1 #define OTHER_CONF_SCRENC 0x2 // Default: 1 #define OTHER_CONF_RIFF 0x4 // Default: 1 #define OTHER_CONF_JPEG 0x8 // Default: 1 #define OTHER_CONF_CRYPTFF 0x10 // Default: 1 #define OTHER_CONF_DLP 0x20 // Default: 1 #define OTHER_CONF_MYDOOMLOG 0x40 // Default: 1 #define OTHER_CONF_PREFILTERING 0x80 // Default: 1 #define OTHER_CONF_PDFNAMEOBJ 0x100 // Default: 1 #define OTHER_CONF_PRTNINTXN 0x200 // Default: 1 #define OTHER_CONF_LZW 0x400 // Default: 1 </pre> <p>All of the <code>OTHER</code> options, including <code>OTHER_CONF_PDFNAMEOBJ</code> are default-on. To disable the option for ClamAV v0.100.X but leave the other options in their default settings, we would need to set the flags to:</p> <pre> 0110 1111 1111 ^pdfnameobj off </pre> <p>Or in hex: <code>0x6FF</code></p> <p>The example setting to place in <code>daily.cfg</code> then woudl be:</p> <pre> OTHER:0x6FF:90:99 </pre> </body> </html>