summaryrefslogtreecommitdiff
path: root/op-mode-definitions/openvpn.xml
blob: 368cc9115119c7466d4aaa129021370acdd68a54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?xml version="1.0"?>
<interfaceDefinition>
  <node name="generate">
    <children>
      <node name="openvpn">
        <properties>
          <help>OpenVPN key generation tool</help>
        </properties>
        <children>
          <tagNode name="key">
            <properties>
              <help>Generate shared-secret key with specified file name</help>
              <completionHelp>
                <list>&lt;filename&gt;</list>
              </completionHelp>
            </properties>
            <command>
            result=1;
            key_path=$4
            full_path=

            # Prepend /config/auth if the path is not absolute
            if echo $key_path | egrep -ve '^/.*' &gt; /dev/null; then
                full_path=/config/auth/$key_path
            else
                full_path=$key_path
            fi

            key_dir=`dirname $full_path`
            if [ ! -d $key_dir ]; then
                echo "Directory $key_dir does not exist!"
                exit 1
            fi

            echo "Generating OpenVPN key to $full_path"
            sudo /usr/sbin/openvpn --genkey --secret "$full_path"
            result=$?
            if [ $result = 0 ]; then
              echo "Your new local OpenVPN key has been generated"
            fi
            /usr/libexec/vyos/validators/file-exists --directory /config/auth "$full_path"
          </command>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
  <node name="reset">
    <properties>
      <help>Reset a service</help>
    </properties>
    <children>
      <node name="openvpn">
        <children>
          <tagNode name="client">
            <properties>
              <help>Reset specified OpenVPN client</help>
              <completionHelp>
                <script>sudo ${vyos_completion_dir}/list_openvpn_clients.py --all</script>
              </completionHelp>
            </properties>
            <command>echo kill $4 | socat - UNIX-CONNECT:/tmp/openvpn-mgmt-intf &gt; /dev/null</command>
          </tagNode>
          <tagNode name="interface">
            <properties>
              <help>Reset OpenVPN process on interface</help>
              <completionHelp>
                <script>sudo ${vyos_completion_dir}/list_interfaces.py --type openvpn</script>
              </completionHelp>
            </properties>
            <command>sudo kill -SIGUSR1 $(cat /var/run/openvpn/$4.pid)</command>
          </tagNode>
        </children>
      </node>
    </children>
  </node>
  <node name="show">
    <children>
      <node name="interfaces">
        <children>
          <node name="openvpn">
            <properties>
              <help>Show OpenVPN interface information</help>
            </properties>
            <children>
              <leafNode name="detail">
                <properties>
                  <help>Show detailed OpenVPN interface information</help>
                </properties>
                <command>${vyatta_bindir}/vyatta-show-interfaces.pl --intf-type=openvpn --action=show</command>
              </leafNode>
            </children>
          </node>
          <tagNode name="openvpn">
            <properties>
              <help>Show OpenVPN interface information</help>
              <completionHelp>
                <script>sudo ${vyos_completion_dir}/list_interfaces.py --type openvpn</script>
              </completionHelp>
            </properties>
            <command>${vyatta_bindir}/vyatta-show-interfaces.pl --intf=$4</command>
            <children>
              <leafNode name="brief">
                <properties>
                  <help>Show summary of specified OpenVPN interface information</help>
                </properties>
                <command>${vyatta_bindir}/vyatta-show-interfaces.pl --intf="$4" --action=show-brief</command>
              </leafNode>
            </children>
          </tagNode>
        </children>
      </node>
      <node name="openvpn">
        <properties>
          <help>Show OpenVPN information</help>
        </properties>
        <children>
          <leafNode name="client">
            <properties>
              <help>Show tunnel status for OpenVPN client interfaces</help>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/show_openvpn.py --mode=client</command>
          </leafNode>
          <leafNode name="server">
            <properties>
              <help>Show tunnel status for OpenVPN server interfaces</help>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/show_openvpn.py --mode=server</command>
          </leafNode>
          <leafNode name="site-to-site">
            <properties>
              <help>Show tunnel status for OpenVPN site-to-site interfaces</help>
            </properties>
            <command>sudo ${vyos_op_scripts_dir}/show_openvpn.py --mode=site-to-site</command>
          </leafNode>
        </children>
      </node>
    </children>
  </node>
</interfaceDefinition>