From e629a35ea29dd9da9f61511130cbbee6d910e4cf Mon Sep 17 00:00:00 2001 From: "Jannis M. Hoffmann" Date: Fri, 6 May 2022 02:24:42 +0200 Subject: switched to toml config format improved security with load over require --- lib/JWebmail/Plugin/TOMLConfig.pm | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/JWebmail/Plugin/TOMLConfig.pm (limited to 'lib/JWebmail/Plugin') diff --git a/lib/JWebmail/Plugin/TOMLConfig.pm b/lib/JWebmail/Plugin/TOMLConfig.pm new file mode 100644 index 0000000..20a2950 --- /dev/null +++ b/lib/JWebmail/Plugin/TOMLConfig.pm @@ -0,0 +1,61 @@ +package JWebmail::Plugin::TOMLConfig; + +use Mojo::Base Mojolicious::Plugin::Config; + +use TOML::Tiny 'from_toml'; + + +has parse_func => sub { \&from_toml }; + + +sub parse { + my ($self, $content, $_file, $_plugin_conf, $_app) = @_; + + my $config = $self->parse_func->($content); + die "parse_func must return hash ref" unless ref $config eq 'HASH'; + + return $config; +} + +sub register { shift->SUPER::register(shift, {ext => 'toml', %{shift()}}) } + + +1 + +__END__ + +=encoding utf-8 + +=head1 NAME + +TOMLConfig - Reads in TOML config files. + +=head1 SYNOPSIS + + $app->plugin('TOMLConfig'); + + @@ my_app.toml + + # global section + key = "val" # line comment + [section] + other_key = "other_val" + number_key = 5 + [other.section] + values = ["key1", "key2", "key3"] + +=head1 DESCRIPTION + +TOML is my favorite config format :) + +=head1 OPTIONS + +=head2 default + +Sets default configuration values. + +=head1 DEPENDENCIES + +TOML::Tiny + +=cut -- cgit v1.2.3