summaryrefslogtreecommitdiff
path: root/lib/VNDB/Config.pm
blob: 8ed858f19d91b8a7858d7db35ddbb271e8039d03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package VNDB::Config;

use strict;
use warnings;
use Exporter 'import';
our @EXPORT = ('config');

my $ROOT = $INC{'VNDB/Config.pm'} =~ s{/lib/VNDB/Config\.pm$}{}r;

# Default config options
my $config = {
    url             => 'http://localhost:3000',

    tuwf => {
        db_login      => [ 'dbi:Pg:dbname=vndb', 'vndb_site', undef ],
        cookie_prefix => 'vndb_',
    },

    skin_default      => 'angel',
    placeholder_img   => 'http://s.vndb.org/s/angel/bg.jpg', # Used in the og:image meta tag
    scrypt_args       => [ 65536, 8, 1 ], # N, r, p
    scrypt_salt       => 'another-random-string',
    form_salt         => 'a-private-string-here',
    source_url        => 'https://code.blicky.net/yorhel/vndb',
    admin_email       => 'contact@vndb.org',
    login_throttle    => [ 24*3600/10, 24*3600 ], # interval between attempts, max burst (10 a day)
    board_edit_time   => 7*24*3600, # Time after which posts become immutable
    graphviz_path     => '/usr/bin/dot',
    convert_path      => '/usr/bin/convert',
    identify_path     => '/usr/bin/identify',
    trace_log         => 0,

    scr_size          => [ 136, 102 ], # w*h of screenshot thumbnails
    ch_size           => [ 256, 300 ], # max. w*h of char images
    cv_size           => [ 256, 400 ], # max. w*h of cover images

    Multi => {
        Core        => {},
        Maintenance => {},
    },
};


my $config_file = do $ROOT.'/data/conf.pl';
my $config_merged;

sub config {
    $config_merged ||= do {
        my $c = $config;
        $c->{$_} = $config_file->{$_} for grep !/^(Multi|tuwf)$/, keys %$config_file;
        $c->{Multi}{$_} = $config_file->{Multi}{$_} for keys %{ $config_file->{Multi} || {} };
        $c->{tuwf}{$_}  = $config_file->{tuwf}{$_}  for keys %{ $config_file->{tuwf}  || {} };

        $c->{url_static} ||= $c->{url};
        $c->{version} ||= `git -C "$ROOT" describe` =~ s/\-g[0-9a-f]+$//rg =~ s/\r?\n//rg;
        $c->{root} = $ROOT;
        $c->{Multi}{Core}{log_level} ||= 'debug';
        $c->{Multi}{Core}{log_dir}   ||= $ROOT.'/data/log';
        $c
    };
    $config_merged
}

1;