[fix] opendkim add and del are now idempotent
This commit is contained in:
parent
af3751742a
commit
e118f31397
|
@ -1137,10 +1137,12 @@ ORDER BY
|
||||||
function dkim_add($domain,$uid) {
|
function dkim_add($domain,$uid) {
|
||||||
global $db;
|
global $db;
|
||||||
$target_dir = "/etc/opendkim/keys/$domain";
|
$target_dir = "/etc/opendkim/keys/$domain";
|
||||||
if (file_exists($target_dir.'/alternc.txt')) return; // Do not generate if exist
|
|
||||||
|
// Create a dkim key when it's not already there :
|
||||||
|
if (!file_exists($target_dir.'/alternc.txt')) {
|
||||||
$this->shouldreloaddkim=true;
|
$this->shouldreloaddkim=true;
|
||||||
if (! is_dir($target_dir)) mkdir($target_dir); // create dir
|
if (! is_dir($target_dir)) mkdir($target_dir); // create dir
|
||||||
// Generate the key
|
// Generate the key, 1200 bits (better than 1024)
|
||||||
$old_dir=getcwd();
|
$old_dir=getcwd();
|
||||||
chdir($target_dir);
|
chdir($target_dir);
|
||||||
exec('opendkim-genkey -b 1200 -r -d '.escapeshellarg($domain).' -s "alternc" ');
|
exec('opendkim-genkey -b 1200 -r -d '.escapeshellarg($domain).' -s "alternc" ');
|
||||||
|
@ -1149,14 +1151,19 @@ ORDER BY
|
||||||
chown("$target_dir/alternc.private", 'opendkim');
|
chown("$target_dir/alternc.private", 'opendkim');
|
||||||
chgrp("$target_dir/alternc.private", 'opendkim');
|
chgrp("$target_dir/alternc.private", 'opendkim');
|
||||||
|
|
||||||
// Add line into files:
|
|
||||||
add_line_to_file("/etc/opendkim/KeyTable","alternc._domainkey.".$domain." ".$domain.":alternc:/etc/opendkim/keys/".$domain."/alternc.private");
|
add_line_to_file("/etc/opendkim/KeyTable","alternc._domainkey.".$domain." ".$domain.":alternc:/etc/opendkim/keys/".$domain."/alternc.private");
|
||||||
add_line_to_file("/etc/opendkim/SigningTable",$domain." alternc._domainkey.".$domain);
|
add_line_to_file("/etc/opendkim/SigningTable",$domain." alternc._domainkey.".$domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search for the subdomain entry, if it's not already there, create it:
|
||||||
|
$db->query("SELECT id FROM sub_domaines WHERE domaine=? AND sub='alternc._domainkey';",array($domain));
|
||||||
|
if (!$db->next_record()) {
|
||||||
// Add subdomaine entry
|
// Add subdomaine entry
|
||||||
$dkim_key=$this->dkim_get_entry($domain);
|
$dkim_key=$this->dkim_get_entry($domain);
|
||||||
$db->query("INSERT INTO sub_domaines SET domaine=?, compte=?, sub='alternc._domainkey', type='dkim', valeur=?;",array($domain,$uid,$dkim_key));
|
$db->query("INSERT INTO sub_domaines SET domaine=?, compte=?, sub='alternc._domainkey', type='dkim', valeur=?;",array($domain,$uid,$dkim_key));
|
||||||
// no need to do DNS_ACTION="UPDATE" => we are in the middle of a HOOK, so dns WILL BE reloaded for this domain
|
// no need to do DNS_ACTION="UPDATE" => we are in the middle of a HOOK, so dns WILL BE reloaded for this domain
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
@ -1173,6 +1180,8 @@ ORDER BY
|
||||||
del_line_from_file("/etc/opendkim/KeyTable","alternc._domainkey.".$domain." ".$domain.":alternc:/etc/opendkim/keys/".$domain."/alternc.private");
|
del_line_from_file("/etc/opendkim/KeyTable","alternc._domainkey.".$domain." ".$domain.":alternc:/etc/opendkim/keys/".$domain."/alternc.private");
|
||||||
del_line_from_file("/etc/opendkim/SigningTable",$domain." alternc._domainkey.".$domain);
|
del_line_from_file("/etc/opendkim/SigningTable",$domain." alternc._domainkey.".$domain);
|
||||||
}
|
}
|
||||||
|
$db->query("DELETE FROM sub_domaines WHERE domaine=? AND sub='alternc._domainkey';",array($domain));
|
||||||
|
// No need to do DNS_ACTION="UPDATE" => we are in the middle of a HOOK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue