~ubuntu-branches/ubuntu/lucid/ebox-openvpn/lucid

« back to all changes in this revision

Viewing changes to src/EBox/CGI/CreateClient.pm

  • Committer: Bazaar Package Importer
  • Author(s): Soren Hansen
  • Date: 2007-08-02 10:38:13 UTC
  • Revision ID: james.westby@ubuntu.com-20070802103813-dfbetdraf1435qoq
Tags: upstream-0.9.3
ImportĀ upstreamĀ versionĀ 0.9.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package EBox::CGI::OpenVPN::CreateClient;
 
2
# Description:
 
3
use strict;
 
4
use warnings;
 
5
use base 'EBox::CGI::ClientBase';
 
6
 
 
7
use EBox::Gettext;
 
8
use EBox::Global;
 
9
use EBox::OpenVPN;
 
10
use EBox::Config;
 
11
use Perl6::Junction qw(any);
 
12
use File::Slurp;
 
13
use File::Basename;
 
14
 
 
15
sub new # (error=?, msg=?, cgi=?)
 
16
{
 
17
        my $class = shift;
 
18
        my $self = $class->SUPER::new('title' => __('OpenVPN'),
 
19
                                      'template' => '/openvpn/createClient.mas',
 
20
                                      @_);
 
21
 
 
22
        $self->{domain} = 'ebox-openvpn';
 
23
        bless($self, $class);
 
24
        return $self;
 
25
}
 
26
 
 
27
 
 
28
sub requiredParameters
 
29
{
 
30
    my ($self) = @_;
 
31
    if ($self->param('create')) {
 
32
        [qw(create name proto caCertificatePath certificatePath certificateKey serverAddr serverPort service)];
 
33
    }
 
34
    else {
 
35
        return [];
 
36
    }
 
37
 
 
38
}
 
39
 
 
40
 
 
41
sub optionalParameters
 
42
{
 
43
    my ($self) = @_;
 
44
    if ($self->param('create')) {
 
45
        [qw( service )];
 
46
    }
 
47
    else {
 
48
        return [qw(submit)];
 
49
    }
 
50
}
 
51
 
 
52
 
 
53
 
 
54
 
 
55
sub actuate
 
56
{
 
57
    my ($self) = @_;
 
58
 
 
59
    if ($self->param('create')) {
 
60
        my $openVPN = EBox::Global->modInstance('openvpn');
 
61
 
 
62
        my $anyParamWithUpload = any(qw(caCertificatePath certificatePath certificateKey));
 
63
 
 
64
        my $name;
 
65
        my %params;
 
66
 
 
67
        foreach my $param (@{ $self->params() }) {
 
68
          if ($param eq 'name') {
 
69
            $name = $self->param('name');
 
70
            next;
 
71
          }
 
72
 
 
73
          my $paramValue;
 
74
          if ($param eq $anyParamWithUpload) {
 
75
            $paramValue = $self->upload($param);
 
76
          }
 
77
          else {
 
78
            $paramValue = $self->param($param);
 
79
          }
 
80
 
 
81
          $params{$param} = $paramValue;
 
82
        } 
 
83
 
 
84
 
 
85
        # for now we only suport one server
 
86
        my $serverAddr = delete $params{serverAddr};
 
87
        my $serverPort = delete $params{serverPort};
 
88
        my @servers = (
 
89
                       [$serverAddr => $serverPort],
 
90
                      );
 
91
 
 
92
        # remove blank parameters
 
93
        while (my ($key, $value) = each %params) {
 
94
            next if $value ne '';
 
95
            delete $params{$key};
 
96
        }
 
97
 
 
98
        $openVPN->newClient($name, servers => \@servers, %params);
 
99
 
 
100
    
 
101
        $self->setMsg(__x("New client {name} created", name => $name) );
 
102
        $self->{chain} = 'OpenVPN/Index';
 
103
    }
 
104
}
 
105
 
 
106
 
 
107
 
 
108
 
 
109
1;
 
110