[enh] ssl : reload-certs for sysadmin + misc ssl fixes (including set_variables)
This commit is contained in:
		
							parent
							
								
									178823a9f0
								
							
						
					
					
						commit
						bb3bd0b14c
					
				| 
						 | 
					@ -133,6 +133,7 @@ class m_ssl {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            $dom->unlock();
 | 
					            $dom->unlock();
 | 
				
			||||||
            $this->last_certificate_id=$maxid;
 | 
					            $this->last_certificate_id=$maxid;
 | 
				
			||||||
 | 
					            variable_set('last_certificate_id',$this->last_certificate_id);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,7 +178,7 @@ class m_ssl {
 | 
				
			||||||
     * set the correct permissions
 | 
					     * set the correct permissions
 | 
				
			||||||
     * try to minimize zero-file-size risk or timing attack
 | 
					     * try to minimize zero-file-size risk or timing attack
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    function copycert($target,$id) {
 | 
					    private function copycert($target,$id) {
 | 
				
			||||||
        global $db;
 | 
					        global $db;
 | 
				
			||||||
        $db->query("SELECT * FROM certificate WHERE id=?",array($id));
 | 
					        $db->query("SELECT * FROM certificate WHERE id=?",array($id));
 | 
				
			||||||
        if (!$db->next_record()) return false;
 | 
					        if (!$db->next_record()) return false;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,6 +60,7 @@ UPDATE variable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DELETE FROM variable WHERE name IN (
 | 
					DELETE FROM variable WHERE name IN (
 | 
				
			||||||
  'mail_human_imaps','mail_human_pop3','mail_human_pop3s',
 | 
					  'mail_human_imaps','mail_human_pop3','mail_human_pop3s',
 | 
				
			||||||
  'mail_human_smtps','mail_human_submission'
 | 
					  'mail_human_smtps','mail_human_submission', 'mail_human_imap', 'mail_human_smtp',
 | 
				
			||||||
 | 
					  'ftp_human_name'
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					#!/usr/bin/php
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 function called by a sysadmin when (s)he want to reload all
 | 
				
			||||||
 | 
					 certificate configured for all subdomains, including system services.
 | 
				
			||||||
 | 
					 launch as root as :
 | 
				
			||||||
 | 
					 /usr/lib/alternc/reload-certs <enter>
 | 
				
			||||||
 | 
					 system services WILL BE RELOADED
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Bootstrap
 | 
				
			||||||
 | 
					require_once("/usr/share/alternc/panel/class/config_nochk.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!isset($ssl)) {
 | 
				
			||||||
 | 
					    echo "OUPS: reload-certs launched, but ssl module not installed, exiting\n";    
 | 
				
			||||||
 | 
					    exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (posix_getuid()!=0) {
 | 
				
			||||||
 | 
					    echo "This script MUST be launched as root, it should be able to overwrite files in /etc/ssl/private\n";
 | 
				
			||||||
 | 
					    exit(-1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// force reloading all valid certificates in the proper vhosts : 
 | 
				
			||||||
 | 
					variable_set('last_certificate_id',0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ssl->cron_new_certs();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// forcibly reload all services (new certificates may apply)
 | 
				
			||||||
 | 
					$services=array("postfix","dovecot","proftpd","apache2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					foreach($services as $service) {
 | 
				
			||||||
 | 
					    echo "Reloading $service\n";
 | 
				
			||||||
 | 
					    passthru("service $service reload");
 | 
				
			||||||
 | 
					    echo "Done...\n";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,12 @@ if (!isset($argv[1])) {
 | 
				
			||||||
    echo "FATAL: must be launched from functions_hosting.sh !\n";
 | 
					    echo "FATAL: must be launched from functions_hosting.sh !\n";
 | 
				
			||||||
    exit();
 | 
					    exit();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (posix_getuid()!=0) {
 | 
				
			||||||
 | 
					    echo "This script MUST be launched as root, it should be able to overwrite files in /etc/ssl/private\n";
 | 
				
			||||||
 | 
					    exit(-1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ( ($argv[1]=="create" || $argv[1]=="postinst" || $argv[1]=="delete") ) {
 | 
					if ( ($argv[1]=="create" || $argv[1]=="postinst" || $argv[1]=="delete") ) {
 | 
				
			||||||
    if (count($argv)<5) {
 | 
					    if (count($argv)<5) {
 | 
				
			||||||
        echo "FATAL: create/postinst/delete need 4 parameters: type domain mail value\n";
 | 
					        echo "FATAL: create/postinst/delete need 4 parameters: type domain mail value\n";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue