-$config_file = rel2abs($config_file);
-$hosts_file = rel2abs($hosts_file);
-$session_file = rel2abs($session_file);
+my $config = Config::Tiny->new;
+ $config = Config::Tiny->read($conf_file);
+
+my $get_config_opts = sub
+{
+ my ($section, $options) = @_;
+
+ die "$0: Section $section missing in $conf_file\n" unless exists $config->{$section};
+
+ my %options;
+ @options{@$options} = @{$config->{$section}}{@$options};
+
+ foreach my $option (@$options) {
+ die "$0: Option $option not set in $conf_file\n" unless defined $options{$option} && length $options{$option};
+ }
+
+ return @options{@$options};
+};
+
+my ($hosts_file, $session_file) = map rel2abs($_, $Bin), $get_config_opts->('path', [ qw(hosts_file session_file) ]);
+
+my ($server_url) = $get_config_opts->('url', [ qw(server_url) ]);
+my ($netz, $name) = $get_config_opts->('data', [ qw(netz name) ]);