vpn_ipsec_keys.php 6.59 KB
Newer Older
Ad Schellevis's avatar
Ad Schellevis committed
1
<?php
2

Ad Schellevis's avatar
Ad Schellevis committed
3
/*
4 5 6
    Copyright (C) 2014-2015 Deciso B.V.
    Copyright (C) 2003-2005 Manuel Kasper <mk@neon1.net>
    All rights reserved.
7

8 9
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
10

11 12
    1. Redistributions of source code must retain the above copyright notice,
       this list of conditions and the following disclaimer.
13

14 15 16
    2. Redistributions in binary form must reproduce the above copyright
       notice, this list of conditions and the following disclaimer in the
       documentation and/or other materials provided with the distribution.
17

18 19 20 21 22 23 24 25 26 27
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    POSSIBILITY OF SUCH DAMAGE.
Ad Schellevis's avatar
Ad Schellevis committed
28 29
*/

30
require_once("guiconfig.inc");
Ad Schellevis's avatar
Ad Schellevis committed
31 32
require_once("vpn.inc");
require_once("filter.inc");
33
require_once("services.inc");
34
require_once("pfsense-utils.inc");
35
require_once("interfaces.inc");
Ad Schellevis's avatar
Ad Schellevis committed
36

37
if (!isset($config['ipsec']) || !is_array($config['ipsec'])) {
38
    $config['ipsec'] = array();
39
}
40

Ad Schellevis's avatar
Ad Schellevis committed
41
if (!is_array($config['ipsec']['mobilekey'])) {
42
    $config['ipsec']['mobilekey'] = array();
43 44
} else {
    ipsec_mobilekey_sort();
Ad Schellevis's avatar
Ad Schellevis committed
45 46
}

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['act']) && isset($_POST['id']) && is_numericint($_POST['id']) && $_POST['act'] == "del") {
        // delete entry
        if (isset($config['ipsec']['mobilekey'][$_POST['id']])) {
            unset($config['ipsec']['mobilekey'][$_POST['id']]);
            write_config(gettext("Deleted IPsec Pre-Shared Key"));
            mark_subsystem_dirty('ipsec');
            header("Location: vpn_ipsec_keys.php");
            exit;
        }
    } elseif (isset($_POST['apply'])) {
        // apply changes
        $retval = vpn_ipsec_configure();
        /* reload the filter in the background */
        filter_configure();
62
        $savemsg = get_std_save_message();
63 64 65 66 67
        if (is_subsystem_dirty('ipsec')) {
            clear_subsystem_dirty('ipsec');
        }
    } else {
      // nothing to post, redirect
68 69
        header("Location: vpn_ipsec_keys.php");
        exit;
70
    }
Ad Schellevis's avatar
Ad Schellevis committed
71 72
}

73
$service_hook = 'ipsec';
Ad Schellevis's avatar
Ad Schellevis committed
74 75 76

include("head.inc");

77
?>
78

79
<body>
80 81
<script type="text/javascript">
$( document ).ready(function() {
82 83 84 85
  // link delete buttons
  $(".act_delete").click(function(){
    var id = $(this).attr("id").split('_').pop(-1);
    BootstrapDialog.show({
Fabian Franz's avatar
Fabian Franz committed
86
        type:BootstrapDialog.TYPE_DANGER,
87 88 89
        title: "<?= gettext("IPsec");?>",
        message: "<?= gettext("Do you really want to delete this Pre-Shared Key?");?>",
        buttons: [{
90 91 92 93
                label: "<?= gettext("No");?>",
                action: function(dialogRef) {
                    dialogRef.close();
                }}, {
94 95 96 97 98 99 100
                  label: "<?= gettext("Yes");?>",
                  action: function(dialogRef) {
                    $.post(window.location, {act: 'del', id:id}, function(data) {
                          location.reload();
                    });
                    dialogRef.close();
                }
101
            }]
102 103
    });
  });
104 105 106
});
</script>

Ad Schellevis's avatar
Ad Schellevis committed
107 108
<?php include("fbegin.inc"); ?>

109
<section class="page-content-main">
110 111
  <div class="container-fluid">
    <div class="row">
112
<?php
113 114 115 116
if (isset($savemsg)) {
    print_info_box($savemsg);
}
if (is_subsystem_dirty('ipsec')) {
117
    print_info_box_apply(gettext("The IPsec tunnel configuration has been changed") . ".<br />" . gettext("You must apply the changes in order for them to take effect."));
118
}
119

120 121
?>
      <section class="col-xs-12">
122 123 124 125 126
        <div class="tab-content content-box col-xs-12">
          <form action="vpn_ipsec_keys.php" method="post">
            <div class="table-responsive">
              <table class="table table-striped">
                <tr>
127 128 129 130
                  <td><?=gettext("Identifier"); ?></td>
                  <td><?=gettext("Pre-Shared Key"); ?></td>
                  <td>
                    <a href="vpn_ipsec_keys_edit.php" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></a>
131 132
                  </td>
                </tr>
133 134
<?php           $i = 0;
                $userkeys = array();
135 136 137 138 139 140 141
foreach ($config['system']['user'] as $id => $user) {
    if (!empty($user['ipsecpsk'])) {
        $userkeys[] = array('ident' => $user['name'], 'pre-shared-key' => $user['ipsecpsk'], 'id' => $id);
        ;
    }
}
foreach ($userkeys as $secretent) :
142
?>
143 144 145 146 147 148 149 150 151 152 153 154
<tr>
  <td>
    <?=$secretent['ident'] == 'allusers' ? gettext("ANY USER") : htmlspecialchars($secretent['ident']) ;?>
  </td>
  <td>
    <?=htmlspecialchars($secretent['pre-shared-key']);?>
  </td>
  <td>
    <a href="system_usermanager.php?userid=<?=$secretent['id'];
?>&act=edit" title="<?=gettext("edit"); ?>" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-pencil"></span></a>
  </td>
</tr>
155
<?php           $i++;
156
endforeach; ?>
157 158
<?php
                $i = 0;
159
foreach ($config['ipsec']['mobilekey'] as $secretent) :
160
?>
161 162 163 164 165 166 167 168 169 170 171
<tr>
  <td>
    <?=htmlspecialchars($secretent['ident']);?>
  </td>
  <td>
    <?=htmlspecialchars($secretent['pre-shared-key']);?>
  </td>
  <td>
    <a href="vpn_ipsec_keys_edit.php?id=<?=$i;
?>" title="<?=gettext("edit key"); ?>" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-pencil"></span></a>
    <a id="del_<?=$i;
172
?>" title="<?=gettext("delete key"); ?>" class="act_delete btn btn-default btn-xs"><span class="fa fa-trash text-muted"></span></a>
173 174
  </td>
</tr>
175
<?php           $i++;
176
endforeach; ?>
177
                <tr>
178
                  <td colspan="2"></td>
179
                  <td>
180
                    <a href="vpn_ipsec_keys_edit.php" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></a>
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
                  </td>
                </tr>
              </table>
            </div>
          </form>
          <div class="container-fluid">
            <span class="text-danger">
              <strong><?=gettext("Note"); ?>:<br /></strong>
            </span>
            <?=gettext("PSK for any user can be set by using an identifier of any/ANY");?>
          </div>
        </div>
      </section>
    </div>
  </div>
196
</section>
Ad Schellevis's avatar
Ad Schellevis committed
197

198
<?php include("foot.inc");