clamav-milter.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. 'use strict';
  2. 'require form';
  3. 'require fs';
  4. 'require uci';
  5. 'require view';
  6. return view.extend({
  7. load: function() {
  8. },
  9. render: function() {
  10. let m, s, o;
  11. m = new form.Map('clamav-milter', _('ClamAV Milter'), _('Configuration'));
  12. // Section
  13. s = m.section(form.TypedSection, 'clamav-milter', _('Settings'));
  14. s.anonymous = true;
  15. s.addremove = false;
  16. // Advanced Tab
  17. s.tab('tab_advanced', _('Settings'));
  18. // clamav_milter_config_file
  19. o = s.taboption('tab_advanced', form.Value, 'clamav_milter_config_file', _('clamav-milter config file'));
  20. o.datatype = 'string';
  21. o.value('/etc/clamav/clamav-milter.conf');
  22. o.placeholder = '/etc/clamav/clamav-milter.conf';
  23. // Foreground
  24. o = s.taboption('tab_advanced', form.ListValue, 'Foreground', _('Run in foreground'));
  25. o.value('false', _('No'));
  26. o.value('true', _('Yes'));
  27. o.placeholder = 'false';
  28. // PidFile
  29. o = s.taboption('tab_advanced', form.Value, 'PidFile', _('PID file'));
  30. o.datatype = 'string';
  31. o.value('/var/run/clamav/clamav-milter.pid');
  32. o.placeholder = '/var/run/clamav/clamav-milter.pid';
  33. // User
  34. o = s.taboption('tab_advanced', form.Value, 'User', _('User'));
  35. o.datatype = 'string';
  36. o.value('nobody');
  37. o.placeholder = 'nobody';
  38. // MilterSocketGroup
  39. o = s.taboption('tab_advanced', form.Value, 'MilterSocketGroup', _('Milter socket group'));
  40. o.datatype = 'string';
  41. o.value('nogroup');
  42. o.placeholder = 'nogroup';
  43. // ReadTimeout
  44. o = s.taboption('tab_advanced', form.Value, 'ReadTimeout', _('Read timeout'));
  45. o.value('120');
  46. // OnClean
  47. o = s.taboption('tab_advanced', form.ListValue, 'OnClean', _('On-clean action'));
  48. o.value('Accept', _('Accept'));
  49. o.value('Reject', _('Reject'));
  50. o.value('Defer', _('Defer'));
  51. o.value('Blackhole', _('Blackhole'));
  52. o.value('Quarantine', _('Quarantine'));
  53. // OnInfected
  54. o = s.taboption('tab_advanced', form.ListValue, 'OnInfected', _('On-infected action'));
  55. o.value('Accept', _('Accept'));
  56. o.value('Reject', _('Reject'));
  57. o.value('Defer', _('Defer'));
  58. o.value('Blackhole', _('Blackhole'));
  59. o.value('Quarantine', _('Quarantine'));
  60. // OnFail
  61. o = s.taboption('tab_advanced', form.ListValue, 'OnFail', _('On-fail action'));
  62. o.value('Accept', _('Accept'));
  63. o.value('Reject', _('Reject'));
  64. o.value('Defer', _('Defer'));
  65. // AddHeader
  66. o = s.taboption('tab_advanced', form.ListValue, 'AddHeader', _('Add header'));
  67. o.value('Replace', _('Replace'));
  68. o.value('Yes', _('Yes'));
  69. /*
  70. // LogFile
  71. o = s.taboption('tab_advanced', form.Value, 'LogFile', _('Logfile'));
  72. o.value('/tmp/clamav-milter.log');
  73. o.placeholder = '/tmp/clamav-milter.log';
  74. // LogFileUnlock
  75. o = s.taboption('tab_advanced', form.ListValue, 'LogFileUnlock', _('Unlock logfile'));
  76. o.value('false', _('No'));
  77. o.value('true', _('Yes'));
  78. // LogFileMaxSize
  79. o = s.taboption('tab_advanced', form.Value, 'LogFileMaxSize', _('Max size of log file'));
  80. o.value('512K', _('512K'));
  81. o.value('1M', _('1M'));
  82. o.value('2M', _('2M'));
  83. */
  84. // LogTime
  85. o = s.taboption('tab_advanced', form.ListValue, 'LogTime', _('Log time with each message'));
  86. o.value('false', _('No'));
  87. o.value('true', _('Yes'));
  88. // LogVerbose
  89. o = s.taboption('tab_advanced', form.ListValue, 'LogVerbose', _('Enable verbose logging'));
  90. o.value('false', _('No'));
  91. o.value('true', _('Yes'));
  92. // Debug
  93. o = s.taboption('tab_advanced', form.ListValue, 'Debug', _('Debug logging'));
  94. o.value('false', _('No'));
  95. o.value('true', _('Yes'));
  96. o.placeholder = 'true';
  97. // LogSyslog
  98. o = s.taboption('tab_advanced', form.ListValue, 'LogSyslog', _('Log to syslog'));
  99. o.value('false', _('No'));
  100. o.value('true', _('Yes'));
  101. o.placeholder = 'true';
  102. // LogFacility
  103. o = s.taboption('tab_advanced', form.ListValue, 'LogFacility', _('Syslog facility'));
  104. o.value('LOG_KERN');
  105. o.value('LOG_USER');
  106. o.value('LOG_MAIL');
  107. o.value('LOG_DAEMON');
  108. o.value('LOG_AUTH');
  109. o.value('LOG_LPR');
  110. o.value('LOG_NEWS');
  111. o.value('LOG_UUCP');
  112. o.value('LOG_CRON');
  113. o.value('LOG_LOCAL0');
  114. o.value('LOG_LOCAL1');
  115. o.value('LOG_LOCAL2');
  116. o.value('LOG_LOCAL3');
  117. o.value('LOG_LOCAL4');
  118. o.value('LOG_LOCAL5');
  119. o.value('LOG_LOCAL6');
  120. o.value('LOG_LOCAL7');
  121. // cannot do o.depends - it removes the option if dep condition is not met, thereby causing a startup error
  122. // o.depends('LogSyslog', 'true');
  123. // LogInfected
  124. o = s.taboption('tab_advanced', form.ListValue, 'LogInfected', _('Log infections'));
  125. o.value('Off', _('Off'));
  126. o.value('Basic', _('Basic'));
  127. o.value('Full', _('Full'));
  128. // LogClean
  129. o = s.taboption('tab_advanced', form.ListValue, 'LogClean', _('Log clean'));
  130. o.value('Off', _('Off'));
  131. o.value('Basic', _('Basic'));
  132. o.value('Full', _('Full'));
  133. // MaxFileSize
  134. o = s.taboption('tab_advanced', form.Value, 'MaxFileSize', _('Max size of scanned file'));
  135. o.datatype = 'string';
  136. o.value('512K', _('512K'));
  137. o.value('1M', _('1M'));
  138. o.value('2M', _('2M'));
  139. o.value('25M', _('25M'));
  140. o.value('50M', _('50M'));
  141. o.placeholder = '25M';
  142. // SupportMultipleRecipients
  143. o = s.taboption('tab_advanced', form.ListValue, 'SupportMultipleRecipients', _('Support multiple recipients'));
  144. o.value('false', _('No'));
  145. o.value('true', _('Yes'));
  146. // RejectMsg
  147. o = s.taboption('tab_advanced', form.TextValue, 'RejectMsg', _('Rejection log message'));
  148. o.wrap = 'off';
  149. o.rows = 3;
  150. o.monospace = true;
  151. o.editable = true;
  152. o.placeholder = _('Rejecting Harmful Email: %v found.')
  153. // TemporaryDirectory
  154. o = s.taboption('tab_advanced', form.Value, 'TemporaryDirectory', _('Temporary directory'));
  155. o.datatype = 'string';
  156. o.value('/tmp');
  157. o.placeholder = '/tmp';
  158. // MilterSocket
  159. o = s.taboption('tab_advanced', form.Value, 'MilterSocket', _('Local socket'));
  160. o.datatype = 'string';
  161. o.value('unix:/var/run/clamav/clamav-milter.sock');
  162. o.placeholder = 'unix:/var/run/clamav/clamav-milter.sock';
  163. // MilterSocketMode
  164. o = s.taboption('tab_advanced', form.Value, 'MilterSocketMode', _('Local socket'));
  165. o.datatype = 'string';
  166. o.value('666');
  167. o.placeholder = '666';
  168. // ClamdSocket
  169. o = s.taboption('tab_advanced', form.Value, 'ClamdSocket', _('clamd socket'));
  170. o.datatype = 'string';
  171. o.value('tcp:127.0.0.1:3310');
  172. o.placeholder = 'tcp:127.0.0.1:3310';
  173. // FixStaleSocket
  174. o = s.taboption('tab_advanced', form.ListValue, 'FixStaleSocket', _('Fix stale socket'));
  175. o.value('false', _('No'));
  176. o.value('true', _('Yes'));
  177. return m.render();
  178. },
  179. });