39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| {
 | |
|     sub gen_pwd {
 | |
|         use MIME::Base64 qw(encode_base64);
 | |
|         my $p = "not set due to error";
 | |
|         if ( open( RANDOM, "/dev/urandom" ) ){
 | |
|             my $buf;
 | |
|             # 57 bytes is a full line of Base64 coding, and contains
 | |
|             # 456 bits of randomness - given a perfectly random /dev/random
 | |
|             if ( read( RANDOM, $buf, 57 ) != 57 ){
 | |
|                 warn("Short read from /dev/random: $!");
 | |
|             }
 | |
|             else{
 | |
|                 $p = encode_base64($buf);
 | |
|                 chomp $p;
 | |
|             }
 | |
|             close RANDOM;
 | |
|         }
 | |
|         else{
 | |
|             warn "Could not open /dev/urandom: $!";
 | |
|         }
 | |
|         return $p;
 | |
|     }
 | |
| 
 | |
|     my $rec = $DB->get('smanager')
 | |
|         || $DB->new_record('smanager', {type => 'service'});
 | |
| 
 | |
|     my $pwd = $rec->prop('Secrets');
 | |
|     if (not $pwd or length($pwd) < 57){
 | |
|         my $pwd = gen_pwd();
 | |
|         $rec->set_prop('Secrets', $pwd);
 | |
|     }
 | |
| 
 | |
|     my $theme = $rec->prop('Theme');
 | |
|     if (not $theme){
 | |
|         $rec->set_prop('Theme', 'default');
 | |
|     }
 | |
| 
 | |
| }
 | 
