Fork of TinyCA2 because of discontinued upstream
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
tinyca/tinyca2

144 lines
3.6 KiB

#!/usr/bin/perl -w
#
# $Id: tinyca2,v 1.6 2006/07/04 19:53:16 sm Exp $
#
# Copyright (c) Stephan Martin <sm@sm-zone.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
BEGIN { unshift(@INC, './lib'); # put here the location of the modules
}
use strict;
use Gtk2 '-init';
use MIME::Base64;
use POSIX;
use Locale::gettext;
use File::Basename;
use OpenSSL;
use CA;
use GUI;
use HELPERS;
use GUI::TCONFIG;
use GUI::HELPERS;
use GUI::CALLBACK;
use GUI::WORDS;
use GUI::X509_infobox;
use GUI::X509_browser;
use CERT;
use REQ;
use KEY;
use TCONFIG;
my $init = {};
$init->{'progdir'} = dirname($0);
setlocale(LC_MESSAGES, "");
bindtextdomain("tinyca2", $init->{'progdir'}."/locale/");
textdomain("tinyca2");
# https://bugs.gentoo.org/show_bug.cgi?id=78576
$ENV{XLIB_SKIP_ARGB_VISUALS}= '1';
my $cfg = HELPERS::read_global_cfg();
# location of openssl
$init->{'opensslbin'} = $cfg->{paths}{opensslbin} // "/usr/bin/openssl";
$init->{'zipbin'} = $cfg->{paths}{zipbin} // "/usr/bin/zip";
$init->{'tarbin'} = $cfg->{paths}{tarbin} // "/bin/tar";
if(not -x $init->{'opensslbin'}) {
printf(gettext("Can't execute %s.\n"), $init->{'opensslbin'});
print gettext("Configure correct path to openssl.\n");
exit(1);
}
if(not -x $init->{'zipbin'}) {
print gettext("zip command not found, support disabled.\n");
print gettext("Configure correct path to zip.\n");
}
if(not -x $init->{'tarbin'}) {
print gettext("tar command not found, support disabled.\n");
print gettext("Configure correct path to tar.\n");
}
# directory with the templates
$init->{'templatedir'} = $cfg->{paths}{templatedir} // $init->{'progdir'}."/templates";
if(not -d $init->{'templatedir'}) {
print gettext("Can't find templatedir.\n");
print gettext("Please configure correct path with templates.\n");
exit(1);
}
# location for CA files
if( exists $ENV{'TINYCA_BASEDIR'}) {
$init->{'basedir'} = $ENV{'TINYCA_BASEDIR'}
} else {
$init->{'basedir'} = $cfg->{paths}{basedir} // $ENV{HOME}."/.TinyCA";
}
if( exists $ENV{'TINYCA_EXPORTDIR'}) {
$init->{'exportdir'} = $ENV{'TINYCA_EXPORTDIR'};
} else {
$init->{'exportdir'} = $cfg->{paths}{exportdir} // $ENV{HOME};
}
umask(0077);
# read user config
$init->{'cfg'} = HELPERS::read_user_cfg();
$init->{'debug'} = (($cfg->{global}->{debug} // '') eq 'true') ? 1 : 0;
printd('Debug mode enabled');
# create main object and initialize CA
my $gui = GUI->new($init);
# and now run...
$gui->{'mw'}->show_all();
if(defined($gui->{'posx'}) && defined($gui->{'posy'})) {
printd("Moving window to $gui->{'posx'},$gui->{'posy'}");
$gui->{'mw'}->move($gui->{'posx'}, $gui->{'posy'});
}
# decide what to do on startup
if(@{$gui->{'CA'}->{'calist'}}) {
$gui->{'CA'}->get_open_name($gui);
} else {
$gui->{'CA'}->get_ca_create($gui);
}
sub _ {
my $s = gettext(@_);
utf8::decode($s);
return($s);
}
sub printd {
print STDERR "DEBUG: @_\n" if $init->{'debug'};
}
Gtk2->main();
HELPERS::update_user_cfg($gui);
printd("normal exit in main");
exit(0);