wg-admin 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +14 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +31 -1
- data/.ruby-version +1 -1
- data/.travis.yml +3 -3
- data/Gemfile.lock +108 -82
- data/TODO.markdown +3 -3
- data/exe/wg-admin +2 -0
- data/lib/wire_guard/admin/cli.rb +10 -3
- data/lib/wire_guard/admin/cli/clients.rb +16 -2
- data/lib/wire_guard/admin/cli/helpers.rb +3 -3
- data/lib/wire_guard/admin/cli/networks.rb +1 -3
- data/lib/wire_guard/admin/cli/peers.rb +2 -1
- data/lib/wire_guard/admin/cli/servers.rb +17 -3
- data/lib/wire_guard/admin/client.rb +14 -9
- data/lib/wire_guard/admin/repository.rb +31 -0
- data/lib/wire_guard/admin/server.rb +2 -3
- data/lib/wire_guard/admin/templates/client.rb +6 -6
- data/lib/wire_guard/admin/templates/server.rb +7 -7
- data/lib/wire_guard/admin/version.rb +1 -1
- data/wg-admin.gemspec +15 -13
- metadata +71 -57
- data/.dependabot/config.yml +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4361bef43715dc99416edb18c4cab3f0229ca8d38072903726901a2578d8324
|
|
4
|
+
data.tar.gz: 042fa0ab74e47e2ec33429935598b120be011633cbd37e6da5334d110d0db629
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b5a62ccbe1dcce89c49946c4d066cc3f99dcb60a3baa9464375798acfe4efc2907dd27735fdda39e8922b6bb36c25cabd0f958eb11c4e2abb0b6bc226f292c3b
|
|
7
|
+
data.tar.gz: ad2fc708a5282a30052895aae1fd118ab97c2815021ac65a99c5e7444fce02abc1571d43b5a0549bc668efc933531b282fd102807e78c9f738abc30d4b60f735
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: bundler
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: daily
|
|
7
|
+
open-pull-requests-limit: 10
|
|
8
|
+
ignore:
|
|
9
|
+
- dependency-name: rubocop-rspec
|
|
10
|
+
versions:
|
|
11
|
+
- 1.41.0
|
|
12
|
+
commit-message:
|
|
13
|
+
prefix: bump
|
|
14
|
+
include: scope
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require: rubocop-rspec
|
|
2
2
|
|
|
3
3
|
AllCops:
|
|
4
|
-
TargetRubyVersion:
|
|
4
|
+
TargetRubyVersion: 3.0
|
|
5
5
|
|
|
6
6
|
DisplayCopNames:
|
|
7
7
|
Enabled: true
|
|
@@ -9,9 +9,39 @@ AllCops:
|
|
|
9
9
|
DisplayStyleGuide:
|
|
10
10
|
Enabled: true
|
|
11
11
|
|
|
12
|
+
NewCops: enable
|
|
13
|
+
|
|
12
14
|
Metrics/BlockLength:
|
|
13
15
|
Exclude:
|
|
14
16
|
- spec/**/*
|
|
15
17
|
|
|
16
18
|
Layout/LineLength:
|
|
17
19
|
Max: 180
|
|
20
|
+
|
|
21
|
+
Layout/SpaceAroundMethodCallOperator:
|
|
22
|
+
Enabled: true
|
|
23
|
+
|
|
24
|
+
Lint/RaiseException:
|
|
25
|
+
Enabled: true
|
|
26
|
+
|
|
27
|
+
Lint/StructNewOverride:
|
|
28
|
+
Enabled: true
|
|
29
|
+
|
|
30
|
+
Style/ExponentialNotation:
|
|
31
|
+
Enabled: true
|
|
32
|
+
|
|
33
|
+
Style/HashEachMethods:
|
|
34
|
+
Enabled: true
|
|
35
|
+
|
|
36
|
+
Style/HashTransformKeys:
|
|
37
|
+
Enabled: true
|
|
38
|
+
|
|
39
|
+
Style/HashTransformValues:
|
|
40
|
+
Enabled: true
|
|
41
|
+
|
|
42
|
+
RSpec/NestedGroups:
|
|
43
|
+
Max: 5
|
|
44
|
+
|
|
45
|
+
Metrics/CyclomaticComplexity:
|
|
46
|
+
Exclude:
|
|
47
|
+
- "lib/wire_guard/admin/**/*"
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.0.2
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,53 +1,66 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
wg-admin (0.0.
|
|
5
|
-
thor
|
|
4
|
+
wg-admin (0.0.3)
|
|
5
|
+
thor
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
aruba (0.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
rspec-expectations (
|
|
16
|
-
thor (
|
|
17
|
-
ast (2.4.
|
|
18
|
-
backports (3.17.1)
|
|
10
|
+
aruba (2.0.0)
|
|
11
|
+
bundler (>= 1.17, < 3.0)
|
|
12
|
+
childprocess (>= 2.0, < 5.0)
|
|
13
|
+
contracts (>= 0.16.0, < 0.18.0)
|
|
14
|
+
cucumber (>= 4.0, < 8.0)
|
|
15
|
+
rspec-expectations (~> 3.4)
|
|
16
|
+
thor (~> 1.0)
|
|
17
|
+
ast (2.4.2)
|
|
19
18
|
builder (3.2.4)
|
|
20
19
|
byebug (11.1.3)
|
|
21
|
-
childprocess (
|
|
22
|
-
coderay (1.1.
|
|
23
|
-
contracts (0.
|
|
24
|
-
cucumber (
|
|
25
|
-
builder (>= 2.
|
|
26
|
-
cucumber-core (~>
|
|
27
|
-
cucumber-
|
|
28
|
-
cucumber-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
cucumber-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
20
|
+
childprocess (4.1.0)
|
|
21
|
+
coderay (1.1.3)
|
|
22
|
+
contracts (0.17)
|
|
23
|
+
cucumber (7.0.0)
|
|
24
|
+
builder (~> 3.2, >= 3.2.4)
|
|
25
|
+
cucumber-core (~> 10.0, >= 10.0.1)
|
|
26
|
+
cucumber-create-meta (~> 6.0, >= 6.0.1)
|
|
27
|
+
cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
|
|
28
|
+
cucumber-gherkin (~> 20.0, >= 20.0.1)
|
|
29
|
+
cucumber-html-formatter (~> 16.0, >= 16.0.1)
|
|
30
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
31
|
+
cucumber-wire (~> 6.0, >= 6.0.1)
|
|
32
|
+
diff-lcs (~> 1.4, >= 1.4.4)
|
|
33
|
+
mime-types (~> 3.3, >= 3.3.1)
|
|
34
|
+
multi_test (~> 0.1, >= 0.1.2)
|
|
35
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
|
36
|
+
cucumber-core (10.0.1)
|
|
37
|
+
cucumber-gherkin (~> 20.0, >= 20.0.1)
|
|
38
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
39
|
+
cucumber-tag-expressions (~> 3.0, >= 3.0.1)
|
|
40
|
+
cucumber-create-meta (6.0.1)
|
|
41
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
42
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
|
43
|
+
cucumber-cucumber-expressions (12.1.1)
|
|
44
|
+
cucumber-gherkin (20.0.1)
|
|
45
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
46
|
+
cucumber-html-formatter (16.0.1)
|
|
47
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
48
|
+
cucumber-messages (17.0.1)
|
|
49
|
+
cucumber-tag-expressions (3.0.1)
|
|
50
|
+
cucumber-wire (6.1.0)
|
|
51
|
+
cucumber-core (~> 10.0, >= 10.0.1)
|
|
52
|
+
cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
|
|
53
|
+
cucumber-messages (~> 17.0, >= 17.0.1)
|
|
54
|
+
diff-lcs (1.4.4)
|
|
55
|
+
ffi (1.15.3)
|
|
56
|
+
formatador (0.3.0)
|
|
57
|
+
guard (2.18.0)
|
|
45
58
|
formatador (>= 0.2.4)
|
|
46
59
|
listen (>= 2.7, < 4.0)
|
|
47
60
|
lumberjack (>= 1.0.12, < 2.0)
|
|
48
61
|
nenv (~> 0.1)
|
|
49
62
|
notiffany (~> 0.0)
|
|
50
|
-
pry (>= 0.
|
|
63
|
+
pry (>= 0.13.0)
|
|
51
64
|
shellany (~> 0.0)
|
|
52
65
|
thor (>= 0.18.1)
|
|
53
66
|
guard-bundler (3.0.0)
|
|
@@ -60,76 +73,89 @@ GEM
|
|
|
60
73
|
guard-compat (~> 1.1)
|
|
61
74
|
rspec (>= 2.99.0, < 4.0)
|
|
62
75
|
inifile (3.0.0)
|
|
63
|
-
|
|
64
|
-
listen (3.2.1)
|
|
76
|
+
listen (3.6.0)
|
|
65
77
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
66
78
|
rb-inotify (~> 0.9, >= 0.9.10)
|
|
67
|
-
lumberjack (1.2.
|
|
68
|
-
method_source (0.
|
|
69
|
-
|
|
79
|
+
lumberjack (1.2.8)
|
|
80
|
+
method_source (1.0.0)
|
|
81
|
+
mime-types (3.3.1)
|
|
82
|
+
mime-types-data (~> 3.2015)
|
|
83
|
+
mime-types-data (3.2021.0704)
|
|
70
84
|
multi_test (0.1.2)
|
|
71
85
|
nenv (0.3.0)
|
|
72
86
|
notiffany (0.1.3)
|
|
73
87
|
nenv (~> 0.1)
|
|
74
88
|
shellany (~> 0.0)
|
|
75
|
-
parallel (1.
|
|
76
|
-
parser (
|
|
77
|
-
ast (~> 2.4.
|
|
78
|
-
pry (0.
|
|
79
|
-
coderay (~> 1.1
|
|
80
|
-
method_source (~>
|
|
81
|
-
pry-byebug (3.
|
|
89
|
+
parallel (1.20.1)
|
|
90
|
+
parser (3.0.2.0)
|
|
91
|
+
ast (~> 2.4.1)
|
|
92
|
+
pry (0.14.1)
|
|
93
|
+
coderay (~> 1.1)
|
|
94
|
+
method_source (~> 1.0)
|
|
95
|
+
pry-byebug (3.8.0)
|
|
82
96
|
byebug (~> 11.0)
|
|
83
97
|
pry (~> 0.10)
|
|
84
98
|
rainbow (3.0.0)
|
|
85
|
-
rake (13.0.
|
|
86
|
-
rb-fsevent (0.
|
|
99
|
+
rake (13.0.6)
|
|
100
|
+
rb-fsevent (0.11.0)
|
|
87
101
|
rb-inotify (0.10.1)
|
|
88
102
|
ffi (~> 1.0)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
rspec-
|
|
93
|
-
|
|
94
|
-
rspec-
|
|
95
|
-
rspec-
|
|
103
|
+
regexp_parser (2.1.1)
|
|
104
|
+
rexml (3.2.5)
|
|
105
|
+
rspec (3.10.0)
|
|
106
|
+
rspec-core (~> 3.10.0)
|
|
107
|
+
rspec-expectations (~> 3.10.0)
|
|
108
|
+
rspec-mocks (~> 3.10.0)
|
|
109
|
+
rspec-core (3.10.1)
|
|
110
|
+
rspec-support (~> 3.10.0)
|
|
111
|
+
rspec-expectations (3.10.1)
|
|
96
112
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
97
|
-
rspec-support (~> 3.
|
|
98
|
-
rspec-mocks (3.
|
|
113
|
+
rspec-support (~> 3.10.0)
|
|
114
|
+
rspec-mocks (3.10.2)
|
|
99
115
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
100
|
-
rspec-support (~> 3.
|
|
101
|
-
rspec-support (3.
|
|
102
|
-
rubocop (
|
|
103
|
-
jaro_winkler (~> 1.5.1)
|
|
116
|
+
rspec-support (~> 3.10.0)
|
|
117
|
+
rspec-support (3.10.2)
|
|
118
|
+
rubocop (1.19.0)
|
|
104
119
|
parallel (~> 1.10)
|
|
105
|
-
parser (>=
|
|
120
|
+
parser (>= 3.0.0.0)
|
|
106
121
|
rainbow (>= 2.2.2, < 4.0)
|
|
122
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
123
|
+
rexml
|
|
124
|
+
rubocop-ast (>= 1.9.1, < 2.0)
|
|
107
125
|
ruby-progressbar (~> 1.7)
|
|
108
|
-
unicode-display_width (>= 1.4.0, <
|
|
109
|
-
rubocop-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
127
|
+
rubocop-ast (1.10.0)
|
|
128
|
+
parser (>= 3.0.1.1)
|
|
129
|
+
rubocop-rake (0.6.0)
|
|
130
|
+
rubocop (~> 1.0)
|
|
131
|
+
rubocop-rspec (2.4.0)
|
|
132
|
+
rubocop (~> 1.0)
|
|
133
|
+
rubocop-ast (>= 1.1.0)
|
|
134
|
+
ruby-progressbar (1.11.0)
|
|
112
135
|
shellany (0.0.1)
|
|
113
|
-
|
|
114
|
-
|
|
136
|
+
sys-uname (1.2.2)
|
|
137
|
+
ffi (~> 1.1)
|
|
138
|
+
thor (1.1.0)
|
|
139
|
+
unicode-display_width (2.0.0)
|
|
115
140
|
|
|
116
141
|
PLATFORMS
|
|
117
142
|
ruby
|
|
118
143
|
|
|
119
144
|
DEPENDENCIES
|
|
120
|
-
aruba
|
|
145
|
+
aruba
|
|
121
146
|
bundler (~> 2.1)
|
|
122
|
-
guard
|
|
123
|
-
guard-bundler
|
|
124
|
-
guard-rspec
|
|
125
|
-
inifile
|
|
126
|
-
pry
|
|
127
|
-
pry-byebug
|
|
128
|
-
rake
|
|
129
|
-
rspec
|
|
130
|
-
rubocop
|
|
131
|
-
rubocop-
|
|
147
|
+
guard
|
|
148
|
+
guard-bundler
|
|
149
|
+
guard-rspec
|
|
150
|
+
inifile
|
|
151
|
+
pry
|
|
152
|
+
pry-byebug
|
|
153
|
+
rake
|
|
154
|
+
rspec
|
|
155
|
+
rubocop
|
|
156
|
+
rubocop-rake
|
|
157
|
+
rubocop-rspec
|
|
132
158
|
wg-admin!
|
|
133
159
|
|
|
134
160
|
BUNDLED WITH
|
|
135
|
-
2.
|
|
161
|
+
2.2.22
|
data/TODO.markdown
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
1
|
+
# TODO
|
|
2
|
+
|
|
3
|
+
*
|
data/exe/wg-admin
CHANGED
data/lib/wire_guard/admin/cli.rb
CHANGED
|
@@ -51,12 +51,19 @@ Available'
|
|
|
51
51
|
def config(name)
|
|
52
52
|
warn "Using database #{repository.path}" if options[:verbose]
|
|
53
53
|
peer = repository.find_peer(network, name)
|
|
54
|
-
|
|
55
54
|
case peer
|
|
56
55
|
when Server
|
|
57
|
-
puts Templates::Server.new(
|
|
56
|
+
puts Templates::Server.new(
|
|
57
|
+
server: peer,
|
|
58
|
+
network: network,
|
|
59
|
+
clients: repository.clients(network)
|
|
60
|
+
).render
|
|
58
61
|
when Client
|
|
59
|
-
puts Templates::Client.new(
|
|
62
|
+
puts Templates::Client.new(
|
|
63
|
+
client: peer,
|
|
64
|
+
network: network,
|
|
65
|
+
servers: repository.servers(network)
|
|
66
|
+
).render
|
|
60
67
|
else
|
|
61
68
|
raise "No template defined for #{peer}"
|
|
62
69
|
end
|
|
@@ -10,15 +10,18 @@ module WireGuard
|
|
|
10
10
|
class Clients < Thor
|
|
11
11
|
extend ClassHelpers
|
|
12
12
|
include InstanceHelpers
|
|
13
|
+
default_command :list
|
|
13
14
|
|
|
14
|
-
# rubocop:disable Metrics/AbcSize
|
|
15
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
15
16
|
desc 'add NAME', 'Adds a new client with the given NAME'
|
|
16
17
|
long_desc 'Adds a new client to the configuration database.'
|
|
17
18
|
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
18
19
|
method_option :ip, desc: 'the IP address of the new client', aliases: '-i', required: false
|
|
20
|
+
method_option :private_key, desc: 'The private key of the new client', aliases: '-P', required: false
|
|
19
21
|
def add(name)
|
|
20
22
|
warn "Using database #{repository.path}" if options[:verbose]
|
|
21
23
|
client = Client.new(name: name, ip: ip)
|
|
24
|
+
client.private_key = options[:private_key] if options[:private_key]
|
|
22
25
|
repository.add_peer(network, client)
|
|
23
26
|
if options[:verbose]
|
|
24
27
|
warn 'New client was successfully added:'
|
|
@@ -29,6 +32,17 @@ module WireGuard
|
|
|
29
32
|
raise Thor::Error, "Error: #{e.message}"
|
|
30
33
|
end
|
|
31
34
|
|
|
35
|
+
desc 'remove NAME', 'Removes the client with the given NAME'
|
|
36
|
+
long_desc 'Removes an existing client from the configuration database.'
|
|
37
|
+
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
38
|
+
def remove(name)
|
|
39
|
+
warn "Using database #{repository.path}" if options[:verbose]
|
|
40
|
+
repository.remove_peer(network, name)
|
|
41
|
+
warn 'Client was successfully removed.' if options[:verbose]
|
|
42
|
+
rescue StandardError => e
|
|
43
|
+
raise Thor::Error, "Error: #{e.message}"
|
|
44
|
+
end
|
|
45
|
+
|
|
32
46
|
desc 'list', 'Lists all clients'
|
|
33
47
|
long_desc 'For a given network, lists all clients in the configuration database.'
|
|
34
48
|
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
@@ -43,7 +57,7 @@ module WireGuard
|
|
|
43
57
|
rescue StandardError => e
|
|
44
58
|
raise Thor::Error, "Error: #{e.message}"
|
|
45
59
|
end
|
|
46
|
-
# rubocop:enable Metrics/AbcSize
|
|
60
|
+
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
47
61
|
end
|
|
48
62
|
end
|
|
49
63
|
end
|
|
@@ -9,11 +9,11 @@ module WireGuard
|
|
|
9
9
|
#
|
|
10
10
|
module ClassHelpers
|
|
11
11
|
def default_network
|
|
12
|
-
if repository.networks.size
|
|
13
|
-
ENV['WG_ADMIN_NETWORK']
|
|
14
|
-
else
|
|
12
|
+
if repository.networks.size == 1
|
|
15
13
|
nw = repository.networks.first
|
|
16
14
|
ENV.fetch('WG_ADMIN_NETWORK', "#{nw}/#{nw.prefix}")
|
|
15
|
+
else
|
|
16
|
+
ENV['WG_ADMIN_NETWORK']
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -11,8 +11,8 @@ module WireGuard
|
|
|
11
11
|
class Networks < Thor
|
|
12
12
|
extend ClassHelpers
|
|
13
13
|
include InstanceHelpers
|
|
14
|
+
default_command :list
|
|
14
15
|
|
|
15
|
-
# rubocop:disable Metrics/AbcSize
|
|
16
16
|
desc 'list', 'Lists all known networks'
|
|
17
17
|
long_desc 'List the networks in the configuration database.'
|
|
18
18
|
def list
|
|
@@ -27,8 +27,6 @@ module WireGuard
|
|
|
27
27
|
rescue StandardError => e
|
|
28
28
|
raise Thor::Error, "Error: #{e.message}"
|
|
29
29
|
end
|
|
30
|
-
# rubocop:enable Metrics/AbcSize
|
|
31
|
-
|
|
32
30
|
desc 'add NETWORK', 'Adds a new network'
|
|
33
31
|
long_desc 'Adds a new network to the configuration database.'
|
|
34
32
|
def add(network)
|
|
@@ -10,6 +10,7 @@ module WireGuard
|
|
|
10
10
|
class Peers < Thor
|
|
11
11
|
extend ClassHelpers
|
|
12
12
|
include InstanceHelpers
|
|
13
|
+
default_command :list
|
|
13
14
|
|
|
14
15
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
15
16
|
desc 'list', 'Lists all peers'
|
|
@@ -21,7 +22,7 @@ module WireGuard
|
|
|
21
22
|
warn "No clients in network #{network}." if repository.networks.empty?
|
|
22
23
|
end
|
|
23
24
|
repository.peers(network).each do |peer|
|
|
24
|
-
if
|
|
25
|
+
if $stdout.tty?
|
|
25
26
|
puts peer
|
|
26
27
|
else
|
|
27
28
|
puts peer.name
|
|
@@ -10,20 +10,23 @@ module WireGuard
|
|
|
10
10
|
class Servers < Thor
|
|
11
11
|
extend ClassHelpers
|
|
12
12
|
include InstanceHelpers
|
|
13
|
+
default_command :list
|
|
13
14
|
|
|
14
|
-
# rubocop:disable Metrics/MethodLength, Metrics/
|
|
15
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
15
16
|
desc 'add NAME', 'Adds a new server'
|
|
16
17
|
long_desc 'Adds a new server with the given public DNS NAME to the configuration database.'
|
|
17
18
|
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
18
19
|
method_option :ip, desc: 'the (private) IP address of the new server (within the VPN)', aliases: '-i', required: false
|
|
19
20
|
method_option :port, desc: 'port to listen on', aliases: '-p', required: false
|
|
20
|
-
method_option :allowed_ips, desc: 'The range of allowed IP addresses that this server is routing', aliases: '-a', required: false
|
|
21
|
+
method_option :allowed_ips, desc: 'The range of allowed IP addresses that this server is routing. Defaults to the network.', aliases: '-a', required: false
|
|
21
22
|
method_option :device, desc: 'The network device used for forwarding traffic', aliases: '-d', required: false
|
|
23
|
+
method_option :private_key, desc: 'The private key of the new server', aliases: '-P', required: false
|
|
22
24
|
def add(name)
|
|
23
25
|
warn "Using database #{repository.path}" if options[:verbose]
|
|
24
26
|
server = Server.new(name: name, ip: ip, allowed_ips: options[:allowed_ips] || repository.find_network(network))
|
|
25
27
|
server.device = options[:device] if options[:device]
|
|
26
28
|
server.port = options[:port] if options[:port]
|
|
29
|
+
server.private_key = options[:private_key] if options[:private_key]
|
|
27
30
|
repository.add_peer(network, server)
|
|
28
31
|
if options[:verbose]
|
|
29
32
|
warn 'New server was successfully added:'
|
|
@@ -34,6 +37,17 @@ module WireGuard
|
|
|
34
37
|
raise Thor::Error, "Error: #{e.message}"
|
|
35
38
|
end
|
|
36
39
|
|
|
40
|
+
desc 'remove NAME', 'Removes the server with the given NAME'
|
|
41
|
+
long_desc 'Removes an existing server from the configuration database.'
|
|
42
|
+
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
43
|
+
def remove(name)
|
|
44
|
+
warn "Using database #{repository.path}" if options[:verbose]
|
|
45
|
+
repository.remove_peer(network, name)
|
|
46
|
+
warn 'Server was successfully removed.' if options[:verbose]
|
|
47
|
+
rescue StandardError => e
|
|
48
|
+
raise Thor::Error, "Error: #{e.message}"
|
|
49
|
+
end
|
|
50
|
+
|
|
37
51
|
desc 'list', 'Lists all servers'
|
|
38
52
|
long_desc 'For a given network, lists all servers in the configuration database.'
|
|
39
53
|
method_option :network, desc: 'network', aliases: '-n', default: default_network
|
|
@@ -48,7 +62,7 @@ module WireGuard
|
|
|
48
62
|
rescue StandardError => e
|
|
49
63
|
raise Thor::Error, "Error: #{e.message}"
|
|
50
64
|
end
|
|
51
|
-
# rubocop:enable Metrics/MethodLength, Metrics/
|
|
65
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
|
52
66
|
end
|
|
53
67
|
end
|
|
54
68
|
end
|
|
@@ -22,22 +22,23 @@ module WireGuard
|
|
|
22
22
|
# @see https://github.com/pirate/wireguard-docs#peernodedevice
|
|
23
23
|
#
|
|
24
24
|
class Client
|
|
25
|
-
attr_reader :name, :ip, :
|
|
25
|
+
attr_reader :name, :ip, :public_key, :private_key
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
def initialize(name:, ip:, private_key: nil, public_key: nil)
|
|
27
|
+
def initialize(name:, ip:, private_key: nil)
|
|
29
28
|
raise ArgumentError, 'name must be present' if name.nil?
|
|
30
29
|
raise ArgumentError, 'name must not be empty' if name.empty?
|
|
31
30
|
raise ArgumentError, 'ip must be present' if ip.nil?
|
|
32
31
|
raise ArgumentError, 'private_key must not be empty' if private_key&.empty?
|
|
33
|
-
raise ArgumentError, 'public_key must not be empty' if public_key&.empty?
|
|
34
32
|
|
|
35
33
|
@name = name
|
|
36
34
|
@ip = ip
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
self.private_key = private_key || generate_private_key
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def private_key=(private_key)
|
|
39
|
+
@private_key = private_key
|
|
40
|
+
@public_key = generate_public_key
|
|
39
41
|
end
|
|
40
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
41
42
|
|
|
42
43
|
def to_s
|
|
43
44
|
"#{self.class.name.split('::').last} #{name}: #{ip}"
|
|
@@ -52,7 +53,11 @@ module WireGuard
|
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
def ==(other)
|
|
55
|
-
name == other.name
|
|
56
|
+
name == if other.respond_to?(:name)
|
|
57
|
+
other.name
|
|
58
|
+
else
|
|
59
|
+
other
|
|
60
|
+
end
|
|
56
61
|
end
|
|
57
62
|
|
|
58
63
|
private
|
|
@@ -61,7 +66,7 @@ module WireGuard
|
|
|
61
66
|
Open3.popen3('wg pubkey') do |stdin, stdout, stderr, waiter|
|
|
62
67
|
stdin.write(private_key)
|
|
63
68
|
stdin.close
|
|
64
|
-
raise InvocationError, stderr.lines unless waiter.value.success?
|
|
69
|
+
raise InvocationError, stderr.read.lines unless waiter.value.success?
|
|
65
70
|
|
|
66
71
|
stdout.read.chomp
|
|
67
72
|
end
|
|
@@ -44,6 +44,15 @@ module WireGuard
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
#
|
|
48
|
+
# Raised if the peer is not known
|
|
49
|
+
#
|
|
50
|
+
class UnknownPeer < StandardError
|
|
51
|
+
def initialize(peer, network)
|
|
52
|
+
super("Peer #{peer} is unknown in network #{network}.")
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
47
56
|
attr_reader :path
|
|
48
57
|
|
|
49
58
|
def initialize(path)
|
|
@@ -104,6 +113,9 @@ module WireGuard
|
|
|
104
113
|
end
|
|
105
114
|
end
|
|
106
115
|
|
|
116
|
+
#
|
|
117
|
+
# Delete an existing network
|
|
118
|
+
#
|
|
107
119
|
def delete_network(network)
|
|
108
120
|
raise ArgumentError, 'network must be an IP address range' unless network.is_a?(IPAddr)
|
|
109
121
|
|
|
@@ -127,6 +139,25 @@ module WireGuard
|
|
|
127
139
|
end
|
|
128
140
|
end
|
|
129
141
|
|
|
142
|
+
#
|
|
143
|
+
# Remove a peer from the given network
|
|
144
|
+
#
|
|
145
|
+
def remove_peer(network, peer_or_name)
|
|
146
|
+
name = if peer_or_name.respond_to?(:name)
|
|
147
|
+
peer_or_name.name
|
|
148
|
+
else
|
|
149
|
+
peer_or_name
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
raise UnknownPeer.new(name, network) unless find_peer(network, name)
|
|
153
|
+
|
|
154
|
+
@backend.transaction do
|
|
155
|
+
raise UnknownNetwork, network unless @backend.root?(network)
|
|
156
|
+
|
|
157
|
+
@backend[network].delete(name)
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
130
161
|
#
|
|
131
162
|
# Find the next address within the given network that is not assigned to a peer
|
|
132
163
|
#
|
|
@@ -18,13 +18,12 @@ module WireGuard
|
|
|
18
18
|
def initialize(
|
|
19
19
|
name:,
|
|
20
20
|
ip:,
|
|
21
|
+
allowed_ips:,
|
|
21
22
|
private_key: nil,
|
|
22
|
-
public_key: nil,
|
|
23
23
|
port: 51_820,
|
|
24
|
-
allowed_ips:,
|
|
25
24
|
device: 'eth0'
|
|
26
25
|
)
|
|
27
|
-
super(name: name, ip: ip, private_key: private_key
|
|
26
|
+
super(name: name, ip: ip, private_key: private_key)
|
|
28
27
|
|
|
29
28
|
raise ArgumentError, 'port must be present' if port.nil?
|
|
30
29
|
raise ArgumentError, 'port number is invalid' unless (1..65_535).cover?(port.to_i)
|
|
@@ -16,9 +16,9 @@ module WireGuard
|
|
|
16
16
|
|
|
17
17
|
[Interface]
|
|
18
18
|
PrivateKey = <%= client.private_key %>
|
|
19
|
-
Address = <%= client.ip
|
|
20
|
-
|
|
19
|
+
Address = <%= client.ip %>/<%= network.prefix %>
|
|
21
20
|
<% servers.each do |server| %>
|
|
21
|
+
|
|
22
22
|
[Peer]
|
|
23
23
|
PublicKey = <%= server.public_key %>
|
|
24
24
|
EndPoint = <%= server.name %>:<%= server.port %>
|
|
@@ -28,13 +28,13 @@ module WireGuard
|
|
|
28
28
|
CLIENT_TEMPLATE
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
attr_reader :client, :servers
|
|
31
|
+
attr_reader :client, :network, :servers
|
|
32
32
|
|
|
33
|
-
def initialize(client
|
|
33
|
+
def initialize(client:, network:, servers:)
|
|
34
34
|
@client = client
|
|
35
|
+
@network = network
|
|
35
36
|
@servers = servers
|
|
36
|
-
|
|
37
|
-
super(@template)
|
|
37
|
+
super(self.class.template, trim_mode: '<>')
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def render
|
|
@@ -15,28 +15,28 @@ module WireGuard
|
|
|
15
15
|
# generated by wg-admin
|
|
16
16
|
|
|
17
17
|
[Interface]
|
|
18
|
-
Address = <%= server.ip
|
|
18
|
+
Address = <%= server.ip %>/<%= network.prefix %>
|
|
19
19
|
ListenPort = <%= server.port %>
|
|
20
20
|
PrivateKey = <%= server.private_key %>
|
|
21
21
|
# PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <%= server.device %> -j MASQUERADE
|
|
22
22
|
# PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <%= server.device %> -j MASQUERADE
|
|
23
|
-
|
|
24
23
|
<% clients.each do |client| %>
|
|
24
|
+
|
|
25
25
|
[Peer]
|
|
26
26
|
# Name = <%= client.name %>
|
|
27
27
|
PublicKey = <%= client.public_key %>
|
|
28
|
-
AllowedIPs = <%= client.ip
|
|
28
|
+
AllowedIPs = <%= client.ip %>/<%= client.ip.prefix %>
|
|
29
29
|
<% end %>
|
|
30
30
|
SERVER_TEMPLATE
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
attr_reader :server, :clients
|
|
33
|
+
attr_reader :server, :network, :clients
|
|
34
34
|
|
|
35
|
-
def initialize(server
|
|
35
|
+
def initialize(server:, network:, clients:)
|
|
36
36
|
@server = server
|
|
37
|
+
@network = network
|
|
37
38
|
@clients = clients
|
|
38
|
-
|
|
39
|
-
super(@template)
|
|
39
|
+
super(self.class.template, trim_mode: '<>')
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def render
|
data/wg-admin.gemspec
CHANGED
|
@@ -21,20 +21,22 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.bindir = 'exe'
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
23
23
|
spec.require_paths = ['lib']
|
|
24
|
+
spec.required_ruby_version = '~> 3.0'
|
|
24
25
|
|
|
25
|
-
spec.add_runtime_dependency 'thor'
|
|
26
|
+
spec.add_runtime_dependency 'thor'
|
|
26
27
|
|
|
27
|
-
spec.add_development_dependency 'aruba'
|
|
28
|
-
spec.add_development_dependency 'bundler', '~>
|
|
29
|
-
spec.add_development_dependency 'guard'
|
|
30
|
-
spec.add_development_dependency 'guard-bundler'
|
|
31
|
-
spec.add_development_dependency 'guard-rspec'
|
|
32
|
-
spec.add_development_dependency 'inifile'
|
|
33
|
-
spec.add_development_dependency 'pry'
|
|
34
|
-
spec.add_development_dependency 'pry-byebug'
|
|
35
|
-
spec.add_development_dependency 'rake'
|
|
36
|
-
spec.add_development_dependency 'rspec'
|
|
37
|
-
spec.add_development_dependency 'rubocop'
|
|
38
|
-
spec.add_development_dependency 'rubocop-
|
|
28
|
+
spec.add_development_dependency 'aruba'
|
|
29
|
+
spec.add_development_dependency 'bundler', '~>2.1'
|
|
30
|
+
spec.add_development_dependency 'guard'
|
|
31
|
+
spec.add_development_dependency 'guard-bundler'
|
|
32
|
+
spec.add_development_dependency 'guard-rspec'
|
|
33
|
+
spec.add_development_dependency 'inifile'
|
|
34
|
+
spec.add_development_dependency 'pry'
|
|
35
|
+
spec.add_development_dependency 'pry-byebug'
|
|
36
|
+
spec.add_development_dependency 'rake'
|
|
37
|
+
spec.add_development_dependency 'rspec'
|
|
38
|
+
spec.add_development_dependency 'rubocop'
|
|
39
|
+
spec.add_development_dependency 'rubocop-rake'
|
|
40
|
+
spec.add_development_dependency 'rubocop-rspec'
|
|
39
41
|
end
|
|
40
42
|
# rubocop:enable Metrics/BlockLength
|
metadata
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wg-admin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steffen Uhlig
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-08-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: aruba
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0
|
|
33
|
+
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0
|
|
40
|
+
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: bundler
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,142 +56,156 @@ dependencies:
|
|
|
56
56
|
name: guard
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: guard-bundler
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - "
|
|
73
|
+
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: '0'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - "
|
|
80
|
+
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
82
|
+
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: guard-rspec
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- - "
|
|
87
|
+
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
89
|
+
version: '0'
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- - "
|
|
94
|
+
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: inifile
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- - "
|
|
101
|
+
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
103
|
+
version: '0'
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
|
-
- - "
|
|
108
|
+
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
110
|
+
version: '0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: pry
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- - "
|
|
115
|
+
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0
|
|
117
|
+
version: '0'
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- - "
|
|
122
|
+
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0
|
|
124
|
+
version: '0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: pry-byebug
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- - "
|
|
129
|
+
- - ">="
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
131
|
+
version: '0'
|
|
132
132
|
type: :development
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- - "
|
|
136
|
+
- - ">="
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
138
|
+
version: '0'
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
name: rake
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
142
142
|
requirements:
|
|
143
|
-
- - "
|
|
143
|
+
- - ">="
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version:
|
|
145
|
+
version: '0'
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
|
-
- - "
|
|
150
|
+
- - ">="
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version:
|
|
152
|
+
version: '0'
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: rspec
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
|
157
|
-
- - "
|
|
157
|
+
- - ">="
|
|
158
158
|
- !ruby/object:Gem::Version
|
|
159
|
-
version:
|
|
159
|
+
version: '0'
|
|
160
160
|
type: :development
|
|
161
161
|
prerelease: false
|
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
163
|
requirements:
|
|
164
|
-
- - "
|
|
164
|
+
- - ">="
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
|
-
version:
|
|
166
|
+
version: '0'
|
|
167
167
|
- !ruby/object:Gem::Dependency
|
|
168
168
|
name: rubocop
|
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
|
170
170
|
requirements:
|
|
171
|
-
- - "
|
|
171
|
+
- - ">="
|
|
172
172
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: 0
|
|
173
|
+
version: '0'
|
|
174
174
|
type: :development
|
|
175
175
|
prerelease: false
|
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
177
|
requirements:
|
|
178
|
-
- - "
|
|
178
|
+
- - ">="
|
|
179
179
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: 0
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: rubocop-rake
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
181
195
|
- !ruby/object:Gem::Dependency
|
|
182
196
|
name: rubocop-rspec
|
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
|
184
198
|
requirements:
|
|
185
|
-
- - "
|
|
199
|
+
- - ">="
|
|
186
200
|
- !ruby/object:Gem::Version
|
|
187
|
-
version:
|
|
201
|
+
version: '0'
|
|
188
202
|
type: :development
|
|
189
203
|
prerelease: false
|
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
205
|
requirements:
|
|
192
|
-
- - "
|
|
206
|
+
- - ">="
|
|
193
207
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
208
|
+
version: '0'
|
|
195
209
|
description: wg-admin is an administration tool for WireGuard configuration.
|
|
196
210
|
email:
|
|
197
211
|
- steffen@familie-uhlig.net
|
|
@@ -200,7 +214,7 @@ executables:
|
|
|
200
214
|
extensions: []
|
|
201
215
|
extra_rdoc_files: []
|
|
202
216
|
files:
|
|
203
|
-
- ".dependabot
|
|
217
|
+
- ".github/dependabot.yml"
|
|
204
218
|
- ".gitignore"
|
|
205
219
|
- ".rspec"
|
|
206
220
|
- ".rubocop.yml"
|
|
@@ -231,23 +245,23 @@ homepage: https://github.com/uhlig-it/wg-admin
|
|
|
231
245
|
licenses:
|
|
232
246
|
- MIT
|
|
233
247
|
metadata: {}
|
|
234
|
-
post_install_message:
|
|
248
|
+
post_install_message:
|
|
235
249
|
rdoc_options: []
|
|
236
250
|
require_paths:
|
|
237
251
|
- lib
|
|
238
252
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
239
253
|
requirements:
|
|
240
|
-
- - "
|
|
254
|
+
- - "~>"
|
|
241
255
|
- !ruby/object:Gem::Version
|
|
242
|
-
version: '0'
|
|
256
|
+
version: '3.0'
|
|
243
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
258
|
requirements:
|
|
245
259
|
- - ">="
|
|
246
260
|
- !ruby/object:Gem::Version
|
|
247
261
|
version: '0'
|
|
248
262
|
requirements: []
|
|
249
|
-
rubygems_version: 3.
|
|
250
|
-
signing_key:
|
|
263
|
+
rubygems_version: 3.2.22
|
|
264
|
+
signing_key:
|
|
251
265
|
specification_version: 4
|
|
252
266
|
summary: WireGuard administration tool
|
|
253
267
|
test_files: []
|
data/.dependabot/config.yml
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
update_configs:
|
|
3
|
-
- package_manager: "ruby:bundler"
|
|
4
|
-
directory: "/"
|
|
5
|
-
update_schedule: "live"
|
|
6
|
-
automerged_updates:
|
|
7
|
-
- match:
|
|
8
|
-
dependency_type: "development"
|
|
9
|
-
update_type: "all"
|
|
10
|
-
- match:
|
|
11
|
-
dependency_type: "production"
|
|
12
|
-
update_type: "semver:minor"
|
|
13
|
-
version_requirement_updates: auto
|
|
14
|
-
commit_message:
|
|
15
|
-
prefix: "bump"
|
|
16
|
-
include_scope: true
|