ssh-hull 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +44 -0
  3. data/.gitignore +27 -0
  4. data/.rubocop.yml +62 -0
  5. data/.tool-versions +1 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +142 -0
  8. data/LICENSE +19 -0
  9. data/README.md +12 -0
  10. data/Rakefile +7 -0
  11. data/bin/bundle +114 -0
  12. data/bin/rake +29 -0
  13. data/bin/rspec +29 -0
  14. data/bin/rubocop +29 -0
  15. data/bomb +12 -0
  16. data/config/locales/en.yml +71 -0
  17. data/config/locales/fr.yml +71 -0
  18. data/exe/ssh-hull +12 -0
  19. data/exe/ssh-tunnel +1 -0
  20. data/lib/ssh-hull/cli.rb +113 -0
  21. data/lib/ssh-hull/logger.rb +6 -0
  22. data/lib/ssh-hull/ui/application.rb +47 -0
  23. data/lib/ssh-hull/ui/forms/application_form.rb +69 -0
  24. data/lib/ssh-hull/ui/forms/host_form.rb +27 -0
  25. data/lib/ssh-hull/ui/forms/tunnel_form.rb +31 -0
  26. data/lib/ssh-hull/ui/helpers/application_window_helper.rb +233 -0
  27. data/lib/ssh-hull/ui/helpers/common/form_helper.rb +169 -0
  28. data/lib/ssh-hull/ui/helpers/common/minimize_helper.rb +46 -0
  29. data/lib/ssh-hull/ui/helpers/common/modal_helper.rb +43 -0
  30. data/lib/ssh-hull/ui/helpers/common/toolbar_helper.rb +106 -0
  31. data/lib/ssh-hull/ui/helpers/common/translation_helper.rb +18 -0
  32. data/lib/ssh-hull/ui/helpers/common/tree_view_helper.rb +40 -0
  33. data/lib/ssh-hull/ui/helpers/host_window_helper.rb +230 -0
  34. data/lib/ssh-hull/ui/helpers/tunnel_window_helper.rb +96 -0
  35. data/lib/ssh-hull/ui/models/config.rb +82 -0
  36. data/lib/ssh-hull/ui/models/host.rb +90 -0
  37. data/lib/ssh-hull/ui/models/tunnel.rb +118 -0
  38. data/lib/ssh-hull/ui/status_icon.rb +45 -0
  39. data/lib/ssh-hull/ui/windows/about_window.rb +32 -0
  40. data/lib/ssh-hull/ui/windows/application_window.rb +42 -0
  41. data/lib/ssh-hull/ui/windows/hosts/delete_window.rb +56 -0
  42. data/lib/ssh-hull/ui/windows/hosts/edit_window.rb +39 -0
  43. data/lib/ssh-hull/ui/windows/hosts/new_window.rb +45 -0
  44. data/lib/ssh-hull/ui/windows/tunnels/delete_window.rb +57 -0
  45. data/lib/ssh-hull/ui/windows/tunnels/edit_window.rb +39 -0
  46. data/lib/ssh-hull/ui/windows/tunnels/new_window.rb +45 -0
  47. data/lib/ssh-hull/version.rb +17 -0
  48. data/lib/ssh-tunnel.rb +94 -0
  49. data/resources/gresources.xml +13 -0
  50. data/resources/ui/about_window.glade +48 -0
  51. data/resources/ui/application_window.glade +196 -0
  52. data/resources/ui/hosts/delete_window.glade +74 -0
  53. data/resources/ui/hosts/edit_window.glade +331 -0
  54. data/resources/ui/hosts/new_window.glade +328 -0
  55. data/resources/ui/tunnels/delete_window.glade +73 -0
  56. data/resources/ui/tunnels/edit_window.glade +305 -0
  57. data/resources/ui/tunnels/new_window.glade +305 -0
  58. data/snap/snapcraft.yaml +48 -0
  59. data/spec/factories/host.rb +22 -0
  60. data/spec/factories/tunnel.rb +16 -0
  61. data/spec/spec_helper.rb +31 -0
  62. data/spec/ssh_tunnel/ui/forms/host_form_spec.rb +103 -0
  63. data/spec/ssh_tunnel/ui/forms/tunnel_form_spec.rb +132 -0
  64. data/spec/ssh_tunnel/ui/models/host_spec.rb +116 -0
  65. data/spec/ssh_tunnel/ui/models/tunnel_spec.rb +43 -0
  66. data/spec/ssh_tunnel_spec.rb +45 -0
  67. data/ssh-hull.gemspec +38 -0
  68. metadata +320 -0
@@ -0,0 +1,73 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.38.2 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.18"/>
5
+ <template class="SSHTunnelUIWindowsTunnelsDeleteWindow" parent="GtkWindow">
6
+ <property name="can-focus">False</property>
7
+ <property name="resizable">False</property>
8
+ <property name="modal">True</property>
9
+ <property name="window-position">center</property>
10
+ <property name="default-width">350</property>
11
+ <property name="default-height">100</property>
12
+ <property name="type-hint">dialog</property>
13
+ <property name="skip-taskbar-hint">True</property>
14
+ <property name="gravity">center</property>
15
+ <child>
16
+ <object class="GtkBox">
17
+ <property name="visible">True</property>
18
+ <property name="can-focus">False</property>
19
+ <property name="orientation">vertical</property>
20
+ <child>
21
+ <object class="GtkLabel" id="label_confirm">
22
+ <property name="visible">True</property>
23
+ <property name="can-focus">False</property>
24
+ <property name="vexpand">True</property>
25
+ <property name="label" translatable="yes">Are you sure?</property>
26
+ </object>
27
+ <packing>
28
+ <property name="expand">True</property>
29
+ <property name="fill">True</property>
30
+ <property name="position">0</property>
31
+ </packing>
32
+ </child>
33
+ <child>
34
+ <object class="GtkActionBar">
35
+ <property name="visible">True</property>
36
+ <property name="can-focus">False</property>
37
+ <child>
38
+ <object class="GtkButton" id="button_cancel">
39
+ <property name="label">gtk-cancel</property>
40
+ <property name="visible">True</property>
41
+ <property name="can-focus">True</property>
42
+ <property name="receives-default">True</property>
43
+ <property name="use-stock">True</property>
44
+ </object>
45
+ <packing>
46
+ <property name="pack-type">end</property>
47
+ <property name="position">0</property>
48
+ </packing>
49
+ </child>
50
+ <child>
51
+ <object class="GtkButton" id="button_submit">
52
+ <property name="label">gtk-apply</property>
53
+ <property name="visible">True</property>
54
+ <property name="can-focus">True</property>
55
+ <property name="receives-default">True</property>
56
+ <property name="use-stock">True</property>
57
+ </object>
58
+ <packing>
59
+ <property name="pack-type">end</property>
60
+ <property name="position">0</property>
61
+ </packing>
62
+ </child>
63
+ </object>
64
+ <packing>
65
+ <property name="expand">False</property>
66
+ <property name="fill">True</property>
67
+ <property name="position">1</property>
68
+ </packing>
69
+ </child>
70
+ </object>
71
+ </child>
72
+ </template>
73
+ </interface>
@@ -0,0 +1,305 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.38.2 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.18"/>
5
+ <template class="SSHTunnelUIWindowsTunnelsEditWindow" parent="GtkWindow">
6
+ <property name="visible">True</property>
7
+ <property name="can-focus">False</property>
8
+ <property name="has-focus">True</property>
9
+ <property name="is-focus">True</property>
10
+ <property name="type">popup</property>
11
+ <property name="modal">True</property>
12
+ <property name="window-position">center</property>
13
+ <property name="type-hint">dialog</property>
14
+ <property name="skip-taskbar-hint">True</property>
15
+ <property name="gravity">center</property>
16
+ <child>
17
+ <object class="GtkBox">
18
+ <property name="visible">True</property>
19
+ <property name="can-focus">False</property>
20
+ <property name="orientation">vertical</property>
21
+ <child>
22
+ <!-- n-columns=3 n-rows=7 -->
23
+ <object class="GtkGrid">
24
+ <property name="visible">True</property>
25
+ <property name="can-focus">False</property>
26
+ <child>
27
+ <object class="GtkLabel" id="label_name">
28
+ <property name="visible">True</property>
29
+ <property name="can-focus">False</property>
30
+ <property name="halign">start</property>
31
+ <property name="margin-start">10</property>
32
+ <property name="margin-end">5</property>
33
+ <property name="margin-top">10</property>
34
+ <property name="margin-bottom">5</property>
35
+ <property name="label" translatable="yes">Name</property>
36
+ </object>
37
+ <packing>
38
+ <property name="left-attach">0</property>
39
+ <property name="top-attach">0</property>
40
+ </packing>
41
+ </child>
42
+ <child>
43
+ <object class="GtkEntry" id="input_name">
44
+ <property name="visible">True</property>
45
+ <property name="can-focus">True</property>
46
+ <property name="margin-end">10</property>
47
+ <property name="margin-top">10</property>
48
+ <property name="margin-bottom">5</property>
49
+ <property name="hexpand">True</property>
50
+ </object>
51
+ <packing>
52
+ <property name="left-attach">1</property>
53
+ <property name="top-attach">0</property>
54
+ </packing>
55
+ </child>
56
+ <child>
57
+ <object class="GtkLabel" id="label_local_host">
58
+ <property name="visible">True</property>
59
+ <property name="can-focus">False</property>
60
+ <property name="halign">start</property>
61
+ <property name="margin-start">10</property>
62
+ <property name="margin-end">5</property>
63
+ <property name="margin-top">5</property>
64
+ <property name="margin-bottom">5</property>
65
+ <property name="label" translatable="yes">Local Host</property>
66
+ </object>
67
+ <packing>
68
+ <property name="left-attach">0</property>
69
+ <property name="top-attach">2</property>
70
+ </packing>
71
+ </child>
72
+ <child>
73
+ <object class="GtkLabel" id="label_local_port">
74
+ <property name="visible">True</property>
75
+ <property name="can-focus">False</property>
76
+ <property name="halign">start</property>
77
+ <property name="margin-start">10</property>
78
+ <property name="margin-end">5</property>
79
+ <property name="margin-top">5</property>
80
+ <property name="margin-bottom">5</property>
81
+ <property name="label" translatable="yes">Local Port</property>
82
+ </object>
83
+ <packing>
84
+ <property name="left-attach">0</property>
85
+ <property name="top-attach">3</property>
86
+ </packing>
87
+ </child>
88
+ <child>
89
+ <object class="GtkLabel" id="label_remote_host">
90
+ <property name="visible">True</property>
91
+ <property name="can-focus">False</property>
92
+ <property name="halign">start</property>
93
+ <property name="margin-start">10</property>
94
+ <property name="margin-end">5</property>
95
+ <property name="margin-top">5</property>
96
+ <property name="margin-bottom">5</property>
97
+ <property name="label" translatable="yes">Remote Host</property>
98
+ </object>
99
+ <packing>
100
+ <property name="left-attach">0</property>
101
+ <property name="top-attach">4</property>
102
+ </packing>
103
+ </child>
104
+ <child>
105
+ <object class="GtkLabel" id="label_remote_port">
106
+ <property name="visible">True</property>
107
+ <property name="can-focus">False</property>
108
+ <property name="halign">start</property>
109
+ <property name="margin-start">10</property>
110
+ <property name="margin-end">5</property>
111
+ <property name="margin-top">5</property>
112
+ <property name="margin-bottom">5</property>
113
+ <property name="label" translatable="yes">Remote Port</property>
114
+ </object>
115
+ <packing>
116
+ <property name="left-attach">0</property>
117
+ <property name="top-attach">5</property>
118
+ </packing>
119
+ </child>
120
+ <child>
121
+ <object class="GtkEntry" id="input_local_host">
122
+ <property name="visible">True</property>
123
+ <property name="can-focus">True</property>
124
+ <property name="margin-end">10</property>
125
+ <property name="margin-top">5</property>
126
+ <property name="margin-bottom">5</property>
127
+ <property name="hexpand">True</property>
128
+ </object>
129
+ <packing>
130
+ <property name="left-attach">1</property>
131
+ <property name="top-attach">2</property>
132
+ </packing>
133
+ </child>
134
+ <child>
135
+ <object class="GtkEntry" id="input_local_port">
136
+ <property name="visible">True</property>
137
+ <property name="can-focus">True</property>
138
+ <property name="margin-end">10</property>
139
+ <property name="margin-top">5</property>
140
+ <property name="margin-bottom">5</property>
141
+ <property name="hexpand">True</property>
142
+ </object>
143
+ <packing>
144
+ <property name="left-attach">1</property>
145
+ <property name="top-attach">3</property>
146
+ </packing>
147
+ </child>
148
+ <child>
149
+ <object class="GtkEntry" id="input_remote_host">
150
+ <property name="visible">True</property>
151
+ <property name="can-focus">True</property>
152
+ <property name="margin-end">10</property>
153
+ <property name="margin-top">5</property>
154
+ <property name="margin-bottom">5</property>
155
+ <property name="hexpand">True</property>
156
+ </object>
157
+ <packing>
158
+ <property name="left-attach">1</property>
159
+ <property name="top-attach">4</property>
160
+ </packing>
161
+ </child>
162
+ <child>
163
+ <object class="GtkEntry" id="input_remote_port">
164
+ <property name="visible">True</property>
165
+ <property name="can-focus">True</property>
166
+ <property name="margin-end">10</property>
167
+ <property name="margin-top">5</property>
168
+ <property name="margin-bottom">5</property>
169
+ <property name="hexpand">True</property>
170
+ </object>
171
+ <packing>
172
+ <property name="left-attach">1</property>
173
+ <property name="top-attach">5</property>
174
+ </packing>
175
+ </child>
176
+ <child>
177
+ <object class="GtkLabel" id="label_type">
178
+ <property name="visible">True</property>
179
+ <property name="can-focus">False</property>
180
+ <property name="halign">start</property>
181
+ <property name="margin-start">10</property>
182
+ <property name="margin-end">5</property>
183
+ <property name="margin-top">5</property>
184
+ <property name="margin-bottom">5</property>
185
+ <property name="label" translatable="yes">Type</property>
186
+ </object>
187
+ <packing>
188
+ <property name="left-attach">0</property>
189
+ <property name="top-attach">1</property>
190
+ </packing>
191
+ </child>
192
+ <child>
193
+ <object class="GtkComboBoxText" id="input_type">
194
+ <property name="visible">True</property>
195
+ <property name="can-focus">False</property>
196
+ <property name="margin-end">10</property>
197
+ <property name="margin-top">5</property>
198
+ <property name="margin-bottom">5</property>
199
+ </object>
200
+ <packing>
201
+ <property name="left-attach">1</property>
202
+ <property name="top-attach">1</property>
203
+ </packing>
204
+ </child>
205
+ <child>
206
+ <object class="GtkLabel" id="label_auto_start">
207
+ <property name="visible">True</property>
208
+ <property name="can-focus">False</property>
209
+ <property name="halign">start</property>
210
+ <property name="margin-left">10</property>
211
+ <property name="margin-right">5</property>
212
+ <property name="margin-start">10</property>
213
+ <property name="margin-end">5</property>
214
+ <property name="margin-top">5</property>
215
+ <property name="margin-bottom">10</property>
216
+ <property name="label" translatable="yes">Auto Start</property>
217
+ </object>
218
+ <packing>
219
+ <property name="left-attach">0</property>
220
+ <property name="top-attach">6</property>
221
+ </packing>
222
+ </child>
223
+ <child>
224
+ <object class="GtkCheckButton" id="input_auto_start">
225
+ <property name="visible">True</property>
226
+ <property name="can-focus">True</property>
227
+ <property name="receives-default">False</property>
228
+ <property name="margin-top">5</property>
229
+ <property name="margin-bottom">10</property>
230
+ <property name="draw-indicator">True</property>
231
+ </object>
232
+ <packing>
233
+ <property name="left-attach">1</property>
234
+ <property name="top-attach">6</property>
235
+ </packing>
236
+ </child>
237
+ <child>
238
+ <placeholder/>
239
+ </child>
240
+ <child>
241
+ <placeholder/>
242
+ </child>
243
+ <child>
244
+ <placeholder/>
245
+ </child>
246
+ <child>
247
+ <placeholder/>
248
+ </child>
249
+ <child>
250
+ <placeholder/>
251
+ </child>
252
+ <child>
253
+ <placeholder/>
254
+ </child>
255
+ <child>
256
+ <placeholder/>
257
+ </child>
258
+ </object>
259
+ <packing>
260
+ <property name="expand">True</property>
261
+ <property name="fill">True</property>
262
+ <property name="position">0</property>
263
+ </packing>
264
+ </child>
265
+ <child>
266
+ <object class="GtkActionBar">
267
+ <property name="visible">True</property>
268
+ <property name="can-focus">False</property>
269
+ <child>
270
+ <object class="GtkButton" id="button_cancel">
271
+ <property name="label">gtk-cancel</property>
272
+ <property name="visible">True</property>
273
+ <property name="can-focus">True</property>
274
+ <property name="receives-default">True</property>
275
+ <property name="use-stock">True</property>
276
+ </object>
277
+ <packing>
278
+ <property name="pack-type">end</property>
279
+ <property name="position">0</property>
280
+ </packing>
281
+ </child>
282
+ <child>
283
+ <object class="GtkButton" id="button_submit">
284
+ <property name="label">gtk-apply</property>
285
+ <property name="visible">True</property>
286
+ <property name="can-focus">True</property>
287
+ <property name="receives-default">True</property>
288
+ <property name="use-stock">True</property>
289
+ </object>
290
+ <packing>
291
+ <property name="pack-type">end</property>
292
+ <property name="position">0</property>
293
+ </packing>
294
+ </child>
295
+ </object>
296
+ <packing>
297
+ <property name="expand">False</property>
298
+ <property name="fill">True</property>
299
+ <property name="position">1</property>
300
+ </packing>
301
+ </child>
302
+ </object>
303
+ </child>
304
+ </template>
305
+ </interface>