Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ispconfig/ispconfig3
  • RealOpty/ispconfig3
  • Horfic/ispconfig3
  • kingcody/ispconfig3
  • mbethke/ispconfig3
  • harkman/ispconfig3
  • stefanheinen/ispconfig3
  • JanKraljic/ispconfig3
  • pulsweb/ispconfig3
  • kayyy/ispconfig3
  • mwacht/ispconfig3
  • schuetzm/ispconfig3
  • gbg/ispconfig3
  • jproxx/ispconfig3
  • Nilpo/ispconfig3
  • Cambra/ispconfig3
  • crackerizer/ispconfig3
  • simonswine/ispconfig3
  • zbuzanic/ispconfig3
  • alexalouit/ispconfig3
  • guilhermefilippo/ispconfig3
  • kotishe/ispconfig3
  • Rescue9/ispconfig3
  • DmitriyLyalyuev/ispconfig3
  • simon.levesque/ispconfig3
  • Viktor/ispconfig3
  • Dr4c0/ispconfig3
  • stefanmcds-mnt/ispconfig3
  • Konflikted/ispconfig3
  • Schoene/ispconfig3
  • stefan.eertwegh/ispconfig3
  • Quest/ispconfig3
  • bst2002/ispconfig3
  • jphustman/ispconfig3
  • lepirlouit/ispconfig3
  • lolo888/ispconfig3
  • Quetzal/ispconfig3
  • kolorafa/ispconfig3
  • jdsn/ispconfig3
  • mk/ispconfig3
  • jnorell/ispconfig3
  • madalin/ispconfig3
  • edspiner/ispconfig3
  • blu3bird/ispconfig3
  • ITManager/ispconfig3
  • virtualweb/ispconfig3
  • dirkd/ispconfig3
  • jcdirks/ispconfig3
  • bvbmedia/ispconfig3
  • CSoellinger/ispconfig3
  • lutacon/ispconfig3
  • armsby/ispconfig3
  • psantos/ispconfig3
  • pkdevbox_y/ispconfig3
  • tlanger/ispconfig3
  • Krauser/ispconfig3
  • ochorocho/ispconfig3
  • aisfrond/ispconfig3
  • ldrrp/ispconfig3
  • steglicd/ispconfig3
  • darkalex/ispconfig3
  • b.dokimakis/ispconfig3
  • MarioSteinitz/ispconfig3
  • bweston/ispconfig3
  • bob/ispconfig3
  • HHGAG/ispconfig3
  • ark74/ispconfig3
  • fuerni/ispconfig3
  • hexblot/ispconfig3
  • maxxer/ispconfig3
  • JustDevZero/ispconfig3
  • habeggerl/ispconfig3
  • phpexpert/ispconfig3
  • Questler/ispconfig3
  • JanThiel/ispconfig3
  • joni_1993/ispconfig3
  • MePha/ispconfig3
  • flies/ispconfig3
  • macjohnny/ispconfig3
  • csegarra/ispconfig3
  • Tibius/ispconfig3
  • wairuru/ispconfig3
  • pdreissen/ispconfig3
  • mgiworx/ispconfig3
  • michielp/ispconfig3
  • ZarToK/ispconfig3
  • x-f/ispconfig3
  • tomlankhorst/ispconfig3
  • olivier.br/ispconfig3
  • hajti/ispconfig3
  • JaviSabalete/ispconfig3
  • dharman/ispconfig3
  • Martin-enavn/ispconfig3
  • Fr3k4Life/ispconfig3
  • Caldeira/ispconfig3
  • enavn/ispconfig3
  • cybernet2u/ispconfig3
  • Denny/ispconfig3
  • jbbr/ispconfig3
  • kakohari/ispconfig3
  • almere/ispconfig3
  • Kyokata/ispconfig3
  • burn/ispconfig3
  • feldsam/ispconfig3
  • woutervddn/ispconfig3
  • tm/ispconfig3
  • blount/ispconfig3
  • pravdomil/ispconfig3
  • manyk/ispconfig3
  • Poppabear/ispconfig3
  • t1st3/ispconfig3
  • scrat14/ispconfig3
  • ncomputers.org/ispconfig3
  • wlisik/ispconfig3
  • CupOfTea696/ispconfig3
  • ogmelch/ispconfig3
  • techwolf12/ispconfig3
  • timo.boldt/ispconfig3
  • DemoFreak/ispconfig3
  • EndelWar/ispconfig3
  • maanus/ispconfig3
  • ms217/ispconfig3
  • luisvivasb/ispconfig3
  • Ismir/ispconfig3
  • truongld/ispconfig3
  • nhutphan/ispconfig3
  • ram/ispconfig3
  • josemorenoasix/ispconfig3
  • onestepp/ispconfig3
  • gguglielmetti/ispconfig3
  • andre/ispconfig3
  • omig/ispconfig3
  • liane/ispconfig3
  • PVasileff/ispconfig3
  • mattanja/ispconfig3
  • dnl-jst/ispconfig3
  • jkalousek/ispconfig3
  • lgg42/ispconfig3
  • ispcomm/ispconfig3
  • moglgasy/ispconfig3
  • natanfelles/ispconfig3
  • cristiandeluxe/ispconfig3
  • pete/ispconfig3
  • Sosha/ispconfig3
  • shr3k/ispconfig3
  • niceit/ispconfig3
  • dani/ispconfig3
  • Ongaro/ispconfig3
  • Djidel/ispconfig3
  • andre.ballensiefen/ispconfig3
  • qroac/ispconfig3
  • magenbrot/ispconfig3
  • doekia/ispconfig3
  • edersonmora/ispconfig3
  • zucha.imz/ispconfig3
  • ckc/ispconfig3
  • Sroka/ispconfig3
  • batgau/ispconfig3
  • isp/ispconfig3
  • oboumati/ispconfig3
  • mscholz/ispconfig3
  • katiak/ispconfig3
  • jamiroph/ispconfig3
  • buhlerax/ispconfig3
  • johan/ispconfig3
  • KordianBruck/ispconfig3
  • trs997/ispconfig3
  • Funclineal/ispconfig3
  • xals/ispconfig3
  • sververda/ispconfig3
  • presure/ispconfig3
  • vojtech.myslivec/ispconfig3
  • helmo/ispconfig3
  • brody/ispconfig3
  • GameO7er/ispconfig3
  • webslice/ispconfig3
  • ufoonline/ispconfig3
  • alwin/ispconfig3
  • t.heller/ispconfig3
  • philipp/ispconfig3
  • andrzejs/ispconfig3
  • pixcept/ispconfig3
  • tgmedia/ispconfig3
  • Nardol/ispconfig3
  • m42e/ispconfig3
  • condless/ispconfig3
  • alesak/ispconfig3
  • MasonChase/ispconfig3
  • brt/ispconfig3
  • Rusek/ispconfig3
  • credz/ispconfig3
  • fiftyz/ispconfig3
  • dciancu/ispconfig3
  • thom/ispconfig3
  • florian030/ispconfig3
  • Mixasik/ispconfig3
  • SimonSparks/ispconfig3
  • eurodomenii/ispconfig3
  • vitex/ispconfig3
  • mitho/ispconfig3
  • CaptainStarbuck/ispconfig3
  • renky/ispconfig3
  • d--j/ispconfig3
  • inetspec/ispconfig3
  • Christian/ispconfig3
  • lukav/ispconfig3
  • galgenjunge/ispconfig3
  • gody/ispconfig3
  • kpendic/ispconfig3
  • diciannove/ispconfig3
  • tbasler/ispconfig3
  • logifech/ispconfig3
  • maximaweb/ispconfig3
  • tommaso-perondi/ispconfig3
  • francoisPE/ispconfig3
  • elgeorge2k/ispconfig3
  • francoisgrizzlydev/ispconfig3
  • Chris_UK/ispconfig3
  • mrutkowski/ispconfig3
  • mladen074/ispconfig3
  • trogper/ispconfig3
  • Lokutos/ispconfig3
  • manoaratefy/ispconfig3
  • GwynethLlewelyn/ispconfig3
  • tim427/ispconfig3
  • mapreri/ispconfig3
  • gsubiron/ispconfig3
  • eriam/ispconfig3
  • Steveorevo/ispconfig3
  • Jens/ispconfig3
  • ebela/ispconfig3
  • typoworx/ispconfig3
  • teuto.net/ispconfig3
  • sonority/ispconfig3
  • element/ispconfig3
  • Petar/ispconfig3
  • ewsp/ispconfig3
  • bicisteadm/ispconfig3
  • ivmm/ispconfig3
  • blinkenbox/ispconfig3
  • Samgarr/ispconfig3
  • B.Richard/ispconfig3
  • ahrasis/ispconfig3
  • nephi.aust/ispconfig3
  • beastycoding/ispconfig3
  • luttje/ispconfig3
  • hairy/ispconfig3
  • styxtdo/ispconfig3
  • SGr33n/ispconfig3
  • mepstein/ispconfig3
  • kobuki/ispconfig3
  • dachris/ispconfig3
  • mina/ispconfig3
253 results
Show changes
Commits on Source (6)
......@@ -46,6 +46,59 @@ class rspamd_plugin {
}
}
private function isValidEmail($email) {
$atIndex = strrpos($email, '@');
if($atIndex === false) {
return false;
}
$domain = substr($email, $atIndex + 1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if($localLen > 64) {
return false;
} elseif($domainLen < 1 || $domainLen > 255) {
return false;
} elseif(substr($local, 0, 1) == '.' || substr($local, -1, 1) == '.') {
return false; // first or last sign is dot
} elseif(strpos($local, '..') !== false) {
return false; // two dots not allowed
} elseif(!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
return false; // invalid character
} elseif(strpos($domain, '..') !== false) {
return false; // two dots not allowed
} elseif($local && !preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
// character not valid in local part unless
// local part is quoted
if(!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
return false;
}
}
$domain_array = explode('.', $domain);
for($i = 0; $i < count($domain_array); $i++) {
if(!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $domain_array[$i])) {
return false;
}
}
if(!preg_match("/^\[?[0-9\.]+\]?$/", $domain)) {
$domain_array = explode('.', $domain);
if(count($domain_array) < 2) {
return false; // Not enough parts to domain
}
for($i = 0; $i < count($domain_array); $i++) {
if(!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
return false;
}
}
}
return true;
}
/*
This function is called when the plugin is loaded
*/
......@@ -190,62 +243,69 @@ class rspamd_plugin {
$app->system->mkdirpath($this->users_config_dir);
}
$app->load('tpl');
$tpl = new tpl();
$tpl->newTemplate('rspamd_users.inc.conf.master');
$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
$tpl->setVar('priority', $settings_priority);
if($type === 'spamfilter_user') {
if($data[$use_data]['local'] === 'Y') {
if(!$this->isValidEmail($app->functions->idn_encode($email_address))) {
if(is_file($settings_file)) {
unlink($settings_file);
}
} else {
$app->load('tpl');
$tpl = new tpl();
$tpl->newTemplate('rspamd_users.inc.conf.master');
$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
$tpl->setVar('priority', $settings_priority);
if($type === 'spamfilter_user') {
if($data[$use_data]['local'] === 'Y') {
$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
} else {
$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
}
$spamfilter = $data[$use_data];
} else {
$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
// need to get matching spamfilter user if any
$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
}
if(!isset($policy['rspamd_spam_tag_level'])) {
$policy['rspamd_spam_tag_level'] = 6.0;
}
if(!isset($policy['rspamd_spam_tag_method'])) {
$policy['rspamd_spam_tag_method'] = 'add_header';
}
if(!isset($policy['rspamd_spam_kill_level'])) {
$policy['rspamd_spam_kill_level'] = 15.0;
}
if(!isset($policy['rspamd_virus_kill_level'])) {
$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
}
$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
$tpl->setVar('spam_lover', true);
}
if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
$tpl->setVar('virus_lover', true);
}
$tpl->setVar('greylisting', $greylisting);
if(isset($policy['rspamd_spam_greylisting_level'])) {
$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
} else {
$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
$tpl->setVar('greylisting_level', 0.1);
}
$spamfilter = $data[$use_data];
} else {
$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
// need to get matching spamfilter user if any
$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
}
if(!isset($policy['rspamd_spam_tag_level'])) {
$policy['rspamd_spam_tag_level'] = 6.0;
}
if(!isset($policy['rspamd_spam_tag_method'])) {
$policy['rspamd_spam_tag_method'] = 'add_header';
}
if(!isset($policy['rspamd_spam_kill_level'])) {
$policy['rspamd_spam_kill_level'] = 15.0;
}
if(!isset($policy['rspamd_virus_kill_level'])) {
$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
}
$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
$tpl->setVar('rspamd_spam_tag_method', floatval($policy['rspamd_spam_tag_method']));
$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
$tpl->setVar('spam_lover', true);
}
if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
$tpl->setVar('virus_lover', true);
}
$tpl->setVar('greylisting', $greylisting);
if(isset($policy['rspamd_spam_greylisting_level'])) {
$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
} else {
$tpl->setVar('greylisting_level', 0.1);
$app->system->file_put_contents($settings_file, $tpl->grab());
}
$app->system->file_put_contents($settings_file, $tpl->grab());
}
if($mail_config['content_filter'] == 'rspamd'){
......@@ -318,20 +378,32 @@ class rspamd_plugin {
$filter_rcpt = substr($filter_rcpt, 1);
}
}
$tpl = new tpl();
$tpl->newTemplate('rspamd_wblist.inc.conf.master');
$tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter'));
$tpl->setVar('record_id', $record_id);
// we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists
$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20));
$tpl->setVar('from', $filter_from);
$tpl->setVar('recipient', $filter_rcpt);
$tpl->setVar('hostname', $filter['hostname']);
$tpl->setVar('ip', $filter['ip']);
$tpl->setVar('wblist', $filter['wb']);
$app->system->file_put_contents($wblist_file, $tpl->grab());
if(!$this->isValidEmail($filter_from)) {
$filter_from = '';
}
if(!$this->isValidEmail($filter_rcpt)) {
$filter_rcpt = '';
}
if(($global_filter === true && !$filter_from && !$filter_rcpt) || ($global_filter === false && (!$filter_from || !$filter_rcpt))) {
if(is_file($wblist_file)) {
unlink($wblist_file);
}
} else {
$tpl = new tpl();
$tpl->newTemplate('rspamd_wblist.inc.conf.master');
$tpl->setVar('list_scope', ($global_filter ? 'global' : 'spamfilter'));
$tpl->setVar('record_id', $record_id);
// we need to add 10 to priority to avoid mailbox/domain spamfilter settings overriding white/blacklists
$tpl->setVar('priority', intval($data['new']['priority']) + ($global_filter ? 10 : 20));
$tpl->setVar('from', $filter_from);
$tpl->setVar('recipient', $filter_rcpt);
$tpl->setVar('hostname', $filter['hostname']);
$tpl->setVar('ip', $filter['ip']);
$tpl->setVar('wblist', $filter['wb']);
$app->system->file_put_contents($wblist_file, $tpl->grab());
}
} elseif(is_file($wblist_file)) {
unlink($wblist_file);
}
......