Skip to content

Commit

Permalink
Merge pull request #997 from josaphatim/fixed-providers-that-doesnot-…
Browse files Browse the repository at this point in the history
…support-scripts-inclusion

Handled providers that don't permit scripts inclusion
  • Loading branch information
kroky authored May 7, 2024
2 parents 23eb1d1 + 956fc59 commit 9fbf1aa
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 32 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"ext-openssl": "*",
"ext-session": "*",
"ezyang/htmlpurifier": "^4.17",
"henrique-borba/php-sieve-manager": "^1.0.2",
"henrique-borba/php-sieve-manager": "^1.0",
"league/commonmark": "^2.4",
"paragonie/random_compat": "^2.0.18",
"php": ">=7.4",
Expand Down
14 changes: 7 additions & 7 deletions composer.lock
100755 → 100644

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 62 additions & 0 deletions modules/sievefilters/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,68 @@ function generate_main_script($script_list)
}
}

if (!hm_exists('save_main_script')) {
function save_main_script($client, $main_script, $scripts)
{
$success = $client->putScript(
'main_script',
$main_script
);
if (! $success && strpos($client->getErrorMessage(), 'failed to include') !== false) {
$main_script = '';
foreach ($scripts as $scriptName) {
if ($scriptName == 'main_script') {
$client->removeScripts('main_script');
continue;
}
$script = $client->getScript($scriptName);
if (strpos($script, 'failed to include') !== false) {
$script = substr($script, strpos($script, '#'));
$client->putScript(
$scriptName,
$script
);
}
$main_script .= $script . "\n";
}
$main_script = format_main_script($main_script);
$ret = $client->putScript(
'main_script',
$main_script
);
if (! $ret) {
throw new Exception($client->getErrorMessage());
}
}
}
}

if (!hm_exists('format_main_script')) {
function format_main_script($script)
{
// We need to remove require statements found in middle of script
$lines = explode("\n", $script);
$reqs = [];
foreach ($lines as $key => $line) {
if (preg_match('/^require (\[.+\]);$/', $line, $matches)) {
unset($lines[$key]);
$reqs = array_merge($reqs, json_decode($matches[1]));
} else if (preg_match('/^#/', $line)) {
unset($lines[$key]);
}
}
$reqs = array_unique($reqs);
$reqs = array_map(function($req) {
return '"' . $req . '"';
}, $reqs);

$script = 'require [' . implode(',', $reqs) . '];' . "\n";
$script .= implode("\n", $lines);

return $script;
}
}

if (!hm_exists('generate_script_name')) {
function generate_script_name($name, $priority)
{
Expand Down
30 changes: 6 additions & 24 deletions modules/sievefilters/modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,7 @@ public function process() {
}
$scripts = $client->listScripts();
$main_script = generate_main_script($scripts);
$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();
Hm_Msgs::add('Script removed');
Expand Down Expand Up @@ -191,10 +188,7 @@ public function process() {
$scripts = $client->listScripts();
$main_script = generate_main_script($scripts);

$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();
Hm_Msgs::add('Script removed');
Expand Down Expand Up @@ -270,10 +264,7 @@ public function process() {
'blocked_senders',
$script_parsed
);
$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();
} catch (Exception $e) {
Expand Down Expand Up @@ -427,10 +418,7 @@ public function process() {
'blocked_senders',
$script_parsed
);
$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();

Expand Down Expand Up @@ -590,10 +578,7 @@ public function process() {
'blocked_senders',
$script_parsed
);
$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();

Expand Down Expand Up @@ -1010,10 +995,7 @@ public function process() {
$scripts = $client->listScripts();
$main_script = generate_main_script($scripts);

$client->putScript(
'main_script',
$main_script
);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();
} catch (Exception $e) {
Expand Down

0 comments on commit 9fbf1aa

Please sign in to comment.