lanet 0.5.0 → 1.0.0
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/CHANGELOG.md +67 -0
- data/Gemfile.lock +1 -1
- data/README.md +71 -18
- data/index.html +467 -190
- data/lib/lanet/cli.rb +1 -5
- data/lib/lanet/encryptor.rb +138 -79
- data/lib/lanet/file_transfer.rb +64 -72
- data/lib/lanet/receiver.rb +62 -6
- data/lib/lanet/sender.rb +35 -3
- data/lib/lanet/traceroute.rb +66 -92
- data/lib/lanet/version.rb +1 -1
- data/lib/lanet.rb +2 -0
- metadata +6 -3
data/index.html
CHANGED
|
@@ -1,194 +1,454 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
+
|
|
3
4
|
<head>
|
|
4
5
|
<meta charset="UTF-8">
|
|
5
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Lanet - Secure
|
|
7
|
+
<title>Lanet v1.0.0 - Secure LAN Communication Library</title>
|
|
7
8
|
<style>
|
|
9
|
+
* {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:root {
|
|
16
|
+
--primary: #3498db;
|
|
17
|
+
--secondary: #2ecc71;
|
|
18
|
+
--dark: #2c3e50;
|
|
19
|
+
--light: #ecf0f1;
|
|
20
|
+
--accent: #e74c3c;
|
|
21
|
+
--warning: #f39c12;
|
|
22
|
+
--bg: #ffffff;
|
|
23
|
+
--text: #34495e;
|
|
24
|
+
--border: #e1e8ed;
|
|
25
|
+
--shadow: rgba(0, 0, 0, 0.08);
|
|
26
|
+
}
|
|
27
|
+
|
|
8
28
|
body {
|
|
9
|
-
font-family: 'Segoe UI',
|
|
10
|
-
line-height: 1.
|
|
11
|
-
color:
|
|
12
|
-
|
|
13
|
-
|
|
29
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
|
|
30
|
+
line-height: 1.6;
|
|
31
|
+
color: var(--text);
|
|
32
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
33
|
+
min-height: 100vh;
|
|
14
34
|
padding: 20px;
|
|
15
|
-
background-color: #f4f6f9; /* Lighter background color */
|
|
16
35
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
36
|
+
|
|
37
|
+
.container {
|
|
38
|
+
max-width: 1200px;
|
|
39
|
+
margin: 0 auto;
|
|
40
|
+
background: var(--bg);
|
|
41
|
+
border-radius: 16px;
|
|
42
|
+
box-shadow: 0 20px 60px var(--shadow);
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Header */
|
|
47
|
+
header {
|
|
48
|
+
background: linear-gradient(135deg, var(--primary) 0%, #2980b9 100%);
|
|
49
|
+
color: white;
|
|
50
|
+
padding: 60px 40px;
|
|
51
|
+
text-align: center;
|
|
52
|
+
position: relative;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
header::before {
|
|
57
|
+
content: '';
|
|
58
|
+
position: absolute;
|
|
59
|
+
top: 0;
|
|
60
|
+
left: 0;
|
|
61
|
+
right: 0;
|
|
62
|
+
bottom: 0;
|
|
63
|
+
background: url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><defs><pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse"><path d="M 40 0 L 0 0 0 40" fill="none" stroke="rgba(255,255,255,0.05)" stroke-width="1"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
|
|
64
|
+
opacity: 0.3;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
header h1 {
|
|
68
|
+
font-size: 3.5rem;
|
|
69
|
+
font-weight: 700;
|
|
70
|
+
margin-bottom: 15px;
|
|
71
|
+
position: relative;
|
|
72
|
+
z-index: 1;
|
|
22
73
|
}
|
|
74
|
+
|
|
75
|
+
header .version {
|
|
76
|
+
display: inline-block;
|
|
77
|
+
background: rgba(255, 255, 255, 0.2);
|
|
78
|
+
padding: 8px 20px;
|
|
79
|
+
border-radius: 30px;
|
|
80
|
+
font-size: 0.9rem;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
margin-top: 10px;
|
|
83
|
+
backdrop-filter: blur(10px);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
header .tagline {
|
|
87
|
+
font-size: 1.3rem;
|
|
88
|
+
margin-top: 20px;
|
|
89
|
+
opacity: 0.95;
|
|
90
|
+
font-weight: 300;
|
|
91
|
+
position: relative;
|
|
92
|
+
z-index: 1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* What's New Banner */
|
|
96
|
+
.whats-new {
|
|
97
|
+
background: linear-gradient(135deg, var(--secondary) 0%, #27ae60 100%);
|
|
98
|
+
color: white;
|
|
99
|
+
padding: 30px 40px;
|
|
100
|
+
text-align: center;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.whats-new h2 {
|
|
104
|
+
font-size: 1.8rem;
|
|
105
|
+
margin-bottom: 15px;
|
|
106
|
+
display: flex;
|
|
107
|
+
align-items: center;
|
|
108
|
+
justify-content: center;
|
|
109
|
+
gap: 10px;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.whats-new .emoji {
|
|
113
|
+
font-size: 2rem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.whats-new p {
|
|
117
|
+
font-size: 1.1rem;
|
|
118
|
+
opacity: 0.95;
|
|
119
|
+
max-width: 800px;
|
|
120
|
+
margin: 0 auto;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Content */
|
|
124
|
+
.content {
|
|
125
|
+
padding: 50px 40px;
|
|
126
|
+
}
|
|
127
|
+
|
|
23
128
|
h2 {
|
|
24
|
-
color:
|
|
25
|
-
|
|
26
|
-
margin
|
|
129
|
+
color: var(--dark);
|
|
130
|
+
font-size: 2rem;
|
|
131
|
+
margin: 40px 0 20px 0;
|
|
132
|
+
padding-bottom: 10px;
|
|
133
|
+
border-bottom: 3px solid var(--primary);
|
|
134
|
+
display: inline-block;
|
|
27
135
|
}
|
|
136
|
+
|
|
28
137
|
h3 {
|
|
29
|
-
color:
|
|
30
|
-
|
|
31
|
-
margin
|
|
32
|
-
}
|
|
33
|
-
h4 {
|
|
34
|
-
color: #34495e; /* Darker color for sub-subheadings */
|
|
35
|
-
margin-top: 25px;
|
|
36
|
-
margin-bottom: 5px;
|
|
138
|
+
color: var(--primary);
|
|
139
|
+
font-size: 1.4rem;
|
|
140
|
+
margin: 30px 0 15px 0;
|
|
37
141
|
}
|
|
142
|
+
|
|
38
143
|
p {
|
|
39
|
-
margin-bottom: 15px; /* Increased paragraph spacing */
|
|
40
|
-
color: #555; /* Slightly softer paragraph text color */
|
|
41
|
-
}
|
|
42
|
-
ul, ol {
|
|
43
144
|
margin-bottom: 15px;
|
|
44
|
-
color:
|
|
145
|
+
color: var(--text);
|
|
146
|
+
font-size: 1.05rem;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Feature Grid */
|
|
150
|
+
.features-grid {
|
|
151
|
+
display: grid;
|
|
152
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
153
|
+
gap: 25px;
|
|
154
|
+
margin: 30px 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.feature-card {
|
|
158
|
+
background: var(--bg);
|
|
159
|
+
border: 2px solid var(--border);
|
|
160
|
+
border-radius: 12px;
|
|
161
|
+
padding: 25px;
|
|
162
|
+
transition: all 0.3s ease;
|
|
163
|
+
position: relative;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.feature-card::before {
|
|
168
|
+
content: '';
|
|
169
|
+
position: absolute;
|
|
170
|
+
top: 0;
|
|
171
|
+
left: 0;
|
|
172
|
+
width: 4px;
|
|
173
|
+
height: 100%;
|
|
174
|
+
background: linear-gradient(180deg, var(--primary), var(--secondary));
|
|
175
|
+
transform: scaleY(0);
|
|
176
|
+
transition: transform 0.3s ease;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.feature-card:hover {
|
|
180
|
+
transform: translateY(-5px);
|
|
181
|
+
box-shadow: 0 10px 30px var(--shadow);
|
|
182
|
+
border-color: var(--primary);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.feature-card:hover::before {
|
|
186
|
+
transform: scaleY(1);
|
|
45
187
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
188
|
+
|
|
189
|
+
.feature-card h3 {
|
|
190
|
+
margin-top: 0;
|
|
191
|
+
display: flex;
|
|
192
|
+
align-items: center;
|
|
193
|
+
gap: 10px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.feature-icon {
|
|
197
|
+
font-size: 1.5rem;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* Badge */
|
|
201
|
+
.badge {
|
|
202
|
+
display: inline-block;
|
|
203
|
+
background: var(--secondary);
|
|
204
|
+
color: white;
|
|
205
|
+
padding: 4px 12px;
|
|
206
|
+
border-radius: 20px;
|
|
207
|
+
font-size: 0.75rem;
|
|
208
|
+
font-weight: 600;
|
|
209
|
+
text-transform: uppercase;
|
|
210
|
+
letter-spacing: 0.5px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.badge.new {
|
|
214
|
+
background: var(--accent);
|
|
215
|
+
animation: pulse 2s infinite;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@keyframes pulse {
|
|
219
|
+
|
|
220
|
+
0%,
|
|
221
|
+
100% {
|
|
222
|
+
opacity: 1;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
50% {
|
|
226
|
+
opacity: 0.7;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* Code Block */
|
|
231
|
+
.code-block {
|
|
232
|
+
background: var(--dark);
|
|
233
|
+
color: var(--light);
|
|
234
|
+
padding: 25px;
|
|
235
|
+
border-radius: 10px;
|
|
51
236
|
overflow-x: auto;
|
|
52
|
-
|
|
53
|
-
font-
|
|
237
|
+
margin: 20px 0;
|
|
238
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
239
|
+
font-size: 0.95rem;
|
|
240
|
+
line-height: 1.6;
|
|
241
|
+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
|
|
54
242
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
color:
|
|
243
|
+
|
|
244
|
+
.code-block code {
|
|
245
|
+
color: var(--light);
|
|
58
246
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
box-shadow: 0 3px 20px rgba(0, 0, 0, 0.08); /* Softer, more subtle shadow */
|
|
63
|
-
padding: 40px; /* Increased container padding */
|
|
64
|
-
}
|
|
65
|
-
.feature {
|
|
66
|
-
margin: 25px 0; /* Increased feature margin */
|
|
67
|
-
padding-left: 25px; /* Increased padding */
|
|
68
|
-
border-left: 5px solid #2ecc71; /* Thicker feature border */
|
|
69
|
-
}
|
|
70
|
-
.security-feature {
|
|
71
|
-
background-color: #e8f4fc;
|
|
72
|
-
padding: 20px; /* Increased padding */
|
|
73
|
-
margin: 15px 0; /* Increased margin */
|
|
74
|
-
border-radius: 8px; /* More rounded corners */
|
|
75
|
-
}
|
|
76
|
-
.security-feature ul li {
|
|
77
|
-
margin-bottom: 8px; /* Spacing in security feature lists */
|
|
78
|
-
}
|
|
79
|
-
.cli-example {
|
|
80
|
-
background-color: #2c3e50;
|
|
81
|
-
color: #ecf0f1;
|
|
82
|
-
padding: 15px 20px; /* Increased padding */
|
|
83
|
-
margin: 15px 0; /* Increased margin */
|
|
84
|
-
border-radius: 8px; /* More rounded corners */
|
|
85
|
-
font-family: 'Courier New', Courier, monospace;
|
|
86
|
-
position: relative;
|
|
87
|
-
font-size: 0.95em; /* Slightly smaller font size in CLI examples */
|
|
247
|
+
|
|
248
|
+
.code-block .comment {
|
|
249
|
+
color: #95a5a6;
|
|
88
250
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
color: #
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
padding: 25px; /* Increased padding */
|
|
102
|
-
border-radius: 8px; /* More rounded corners */
|
|
103
|
-
}
|
|
104
|
-
.output-example {
|
|
105
|
-
background-color: #f0f0f0;
|
|
106
|
-
padding: 15px; /* Increased padding */
|
|
107
|
-
margin: 15px 0; /* Increased margin */
|
|
108
|
-
border-radius: 8px; /* More rounded corners */
|
|
109
|
-
font-family: 'Courier New', Courier, monospace;
|
|
110
|
-
font-size: 0.9em;
|
|
111
|
-
border-left: 5px solid #9b59b6; /* Thicker border */
|
|
112
|
-
}
|
|
113
|
-
.tab-container {
|
|
114
|
-
border: 1px solid #ddd;
|
|
115
|
-
border-radius: 8px; /* More rounded corners */
|
|
116
|
-
overflow: hidden;
|
|
117
|
-
margin: 25px 0; /* Increased margin */
|
|
251
|
+
|
|
252
|
+
.code-block .keyword {
|
|
253
|
+
color: #e74c3c;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.code-block .string {
|
|
257
|
+
color: #2ecc71;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* Tabs */
|
|
261
|
+
.tabs {
|
|
262
|
+
margin: 30px 0;
|
|
118
263
|
}
|
|
264
|
+
|
|
119
265
|
.tab-buttons {
|
|
120
266
|
display: flex;
|
|
121
|
-
|
|
122
|
-
|
|
267
|
+
gap: 10px;
|
|
268
|
+
flex-wrap: wrap;
|
|
269
|
+
margin-bottom: 20px;
|
|
123
270
|
}
|
|
271
|
+
|
|
124
272
|
.tab-button {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
273
|
+
background: var(--light);
|
|
274
|
+
border: 2px solid var(--border);
|
|
275
|
+
padding: 12px 24px;
|
|
276
|
+
border-radius: 8px;
|
|
128
277
|
cursor: pointer;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
color:
|
|
278
|
+
font-size: 1rem;
|
|
279
|
+
font-weight: 500;
|
|
280
|
+
transition: all 0.3s ease;
|
|
281
|
+
color: var(--text);
|
|
133
282
|
}
|
|
283
|
+
|
|
134
284
|
.tab-button:hover {
|
|
135
|
-
background
|
|
136
|
-
color:
|
|
285
|
+
background: var(--primary);
|
|
286
|
+
color: white;
|
|
287
|
+
border-color: var(--primary);
|
|
137
288
|
}
|
|
289
|
+
|
|
138
290
|
.tab-button.active {
|
|
139
|
-
background
|
|
140
|
-
|
|
141
|
-
color:
|
|
142
|
-
|
|
291
|
+
background: var(--primary);
|
|
292
|
+
color: white;
|
|
293
|
+
border-color: var(--primary);
|
|
294
|
+
box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3);
|
|
143
295
|
}
|
|
296
|
+
|
|
144
297
|
.tab-content {
|
|
145
298
|
display: none;
|
|
146
|
-
|
|
147
|
-
background-color: #fff; /* White background for tab content */
|
|
299
|
+
animation: fadeIn 0.3s ease;
|
|
148
300
|
}
|
|
301
|
+
|
|
149
302
|
.tab-content.active {
|
|
150
303
|
display: block;
|
|
151
304
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
305
|
+
|
|
306
|
+
@keyframes fadeIn {
|
|
307
|
+
from {
|
|
308
|
+
opacity: 0;
|
|
309
|
+
transform: translateY(10px);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
to {
|
|
313
|
+
opacity: 1;
|
|
314
|
+
transform: translateY(0);
|
|
315
|
+
}
|
|
163
316
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
317
|
+
|
|
318
|
+
/* Improvements Box */
|
|
319
|
+
.improvements {
|
|
320
|
+
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
|
321
|
+
border-radius: 12px;
|
|
322
|
+
padding: 30px;
|
|
323
|
+
margin: 30px 0;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.improvements h3 {
|
|
327
|
+
margin-top: 0;
|
|
170
328
|
}
|
|
171
|
-
|
|
329
|
+
|
|
330
|
+
.improvements ul {
|
|
331
|
+
list-style: none;
|
|
332
|
+
padding: 0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.improvements li {
|
|
336
|
+
padding: 10px 0;
|
|
337
|
+
padding-left: 30px;
|
|
338
|
+
position: relative;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.improvements li::before {
|
|
342
|
+
content: '✓';
|
|
343
|
+
position: absolute;
|
|
344
|
+
left: 0;
|
|
345
|
+
color: var(--secondary);
|
|
172
346
|
font-weight: bold;
|
|
173
|
-
|
|
347
|
+
font-size: 1.2rem;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* Stats */
|
|
351
|
+
.stats {
|
|
352
|
+
display: grid;
|
|
353
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
354
|
+
gap: 20px;
|
|
355
|
+
margin: 30px 0;
|
|
174
356
|
}
|
|
357
|
+
|
|
358
|
+
.stat {
|
|
359
|
+
text-align: center;
|
|
360
|
+
padding: 25px;
|
|
361
|
+
background: var(--light);
|
|
362
|
+
border-radius: 10px;
|
|
363
|
+
border: 2px solid var(--border);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.stat-value {
|
|
367
|
+
font-size: 2.5rem;
|
|
368
|
+
font-weight: 700;
|
|
369
|
+
color: var(--primary);
|
|
370
|
+
display: block;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.stat-label {
|
|
374
|
+
color: var(--text);
|
|
375
|
+
font-size: 0.9rem;
|
|
376
|
+
margin-top: 5px;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/* Footer */
|
|
175
380
|
footer {
|
|
176
|
-
|
|
381
|
+
background: var(--dark);
|
|
382
|
+
color: var(--light);
|
|
383
|
+
padding: 40px;
|
|
384
|
+
text-align: center;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
footer a {
|
|
388
|
+
color: var(--primary);
|
|
389
|
+
text-decoration: none;
|
|
390
|
+
font-weight: 500;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
footer a:hover {
|
|
394
|
+
text-decoration: underline;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/* Responsive */
|
|
398
|
+
@media (max-width: 768px) {
|
|
399
|
+
header h1 {
|
|
400
|
+
font-size: 2.5rem;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
header .tagline {
|
|
404
|
+
font-size: 1.1rem;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.content {
|
|
408
|
+
padding: 30px 20px;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.features-grid {
|
|
412
|
+
grid-template-columns: 1fr;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.tab-buttons {
|
|
416
|
+
flex-direction: column;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.tab-button {
|
|
420
|
+
width: 100%;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* Install Section */
|
|
425
|
+
.install-section {
|
|
426
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
427
|
+
color: white;
|
|
428
|
+
padding: 40px;
|
|
429
|
+
border-radius: 12px;
|
|
430
|
+
margin: 40px 0;
|
|
177
431
|
text-align: center;
|
|
178
|
-
color: #7f8c8d;
|
|
179
|
-
padding-top: 20px;
|
|
180
|
-
border-top: 1px solid #ddd; /* Added top border to footer */
|
|
181
432
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
433
|
+
|
|
434
|
+
.install-section h2 {
|
|
435
|
+
color: white;
|
|
436
|
+
border: none;
|
|
437
|
+
margin: 0 0 20px 0;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.install-section .code-block {
|
|
441
|
+
background: rgba(0, 0, 0, 0.3);
|
|
442
|
+
backdrop-filter: blur(10px);
|
|
185
443
|
}
|
|
186
444
|
</style>
|
|
187
445
|
</head>
|
|
446
|
+
|
|
188
447
|
<body>
|
|
189
448
|
<div class="container">
|
|
190
449
|
<h1>Lanet</h1>
|
|
191
|
-
<p>A secure network communication library that enables reliable and protected message exchange between devices
|
|
450
|
+
<p>A secure network communication library that enables reliable and protected message exchange between devices
|
|
451
|
+
on the same network.</p>
|
|
192
452
|
|
|
193
453
|
<h2>Key Features</h2>
|
|
194
454
|
|
|
@@ -205,9 +465,11 @@
|
|
|
205
465
|
<h4>Benefits of Digital Signatures:</h4>
|
|
206
466
|
<ul>
|
|
207
467
|
<li><strong>Authentication</strong>: Verify that the message came from the claimed sender</li>
|
|
208
|
-
<li><strong>Data Integrity</strong>: Ensure the message hasn't been tampered with during transit
|
|
468
|
+
<li><strong>Data Integrity</strong>: Ensure the message hasn't been tampered with during transit
|
|
469
|
+
</li>
|
|
209
470
|
<li><strong>Non-repudiation</strong>: Senders cannot deny sending a message they signed</li>
|
|
210
|
-
<li><strong>Protection against MITM attacks</strong>: Detect man-in-the-middle tampering attempts
|
|
471
|
+
<li><strong>Protection against MITM attacks</strong>: Detect man-in-the-middle tampering attempts
|
|
472
|
+
</li>
|
|
211
473
|
</ul>
|
|
212
474
|
</div>
|
|
213
475
|
</div>
|
|
@@ -224,13 +486,15 @@
|
|
|
224
486
|
|
|
225
487
|
<div class="feature">
|
|
226
488
|
<h3>File Transfer <span class="badge badge-new">New in v0.3.0</span></h3>
|
|
227
|
-
<p>Securely transfer files between devices with encryption, digital signatures, and integrity verification
|
|
489
|
+
<p>Securely transfer files between devices with encryption, digital signatures, and integrity verification.
|
|
490
|
+
</p>
|
|
228
491
|
</div>
|
|
229
492
|
|
|
230
493
|
<div class="feature">
|
|
231
494
|
<h3>Mesh Networking <span class="badge badge-new">New in v0.4.0</span></h3>
|
|
232
|
-
<p>Create resilient, decentralized mesh networks that enable communication between devices even without
|
|
233
|
-
|
|
495
|
+
<p>Create resilient, decentralized mesh networks that enable communication between devices even without
|
|
496
|
+
direct connectivity.</p>
|
|
497
|
+
|
|
234
498
|
<div class="security-feature">
|
|
235
499
|
<h4>Benefits of Mesh Networking:</h4>
|
|
236
500
|
<ul>
|
|
@@ -244,17 +508,24 @@
|
|
|
244
508
|
</div>
|
|
245
509
|
|
|
246
510
|
<div class="feature">
|
|
247
|
-
<h3>Advanced Traceroute <span class="badge badge-new">New in v0.5.
|
|
248
|
-
<p>Analyze network paths with multi-protocol traceroute capabilities to understand connectivity and
|
|
249
|
-
|
|
511
|
+
<h3>Advanced Traceroute <span class="badge badge-new">New in v0.5.1</span></h3>
|
|
512
|
+
<p>Analyze network paths with multi-protocol traceroute capabilities to understand connectivity and
|
|
513
|
+
troubleshoot network issues.</p>
|
|
514
|
+
|
|
250
515
|
<div class="security-feature">
|
|
251
516
|
<h4>Features of Advanced Traceroute:</h4>
|
|
252
517
|
<ul>
|
|
253
|
-
<li><strong>Multi-protocol support</strong>: Use ICMP, UDP, or TCP protocols for different network
|
|
254
|
-
|
|
518
|
+
<li><strong>Multi-protocol support</strong>: Use ICMP, UDP, or TCP protocols for different network
|
|
519
|
+
environments</li>
|
|
520
|
+
<li><strong>Load balancing detection</strong>: Identify multi-path routing and load balancers in the
|
|
521
|
+
network</li>
|
|
255
522
|
<li><strong>Response time analysis</strong>: Measure latency at each hop in the network path</li>
|
|
256
|
-
<li><strong>Customizable parameters</strong>: Adjust max hops, timeouts, and query count for
|
|
257
|
-
|
|
523
|
+
<li><strong>Customizable parameters</strong>: Adjust max hops, timeouts, and query count for
|
|
524
|
+
different scenarios</li>
|
|
525
|
+
<li><strong>Hostname resolution</strong>: Automatically resolve IP addresses to hostnames for easier
|
|
526
|
+
identification</li>
|
|
527
|
+
<li><strong>Fallback mechanism</strong>: Automatically uses system traceroute when elevated
|
|
528
|
+
permissions aren't available</li>
|
|
258
529
|
</ul>
|
|
259
530
|
</div>
|
|
260
531
|
</div>
|
|
@@ -262,7 +533,8 @@
|
|
|
262
533
|
<h2>Command Line Interface</h2>
|
|
263
534
|
|
|
264
535
|
<div class="note">
|
|
265
|
-
<strong>Note:</strong> All Lanet commands have detailed help available. Try
|
|
536
|
+
<strong>Note:</strong> All Lanet commands have detailed help available. Try
|
|
537
|
+
<code>lanet [command] --help</code> for more options.
|
|
266
538
|
</div>
|
|
267
539
|
|
|
268
540
|
<div class="cli-section">
|
|
@@ -280,12 +552,12 @@
|
|
|
280
552
|
</div>
|
|
281
553
|
|
|
282
554
|
<div class="output-example">
|
|
283
|
-
Key pair generated!
|
|
284
|
-
Private key saved to: /home/user/.lanet_keys/lanet_private.key
|
|
285
|
-
Public key saved to: /home/user/.lanet_keys/lanet_public.key
|
|
555
|
+
Key pair generated!
|
|
556
|
+
Private key saved to: /home/user/.lanet_keys/lanet_private.key
|
|
557
|
+
Public key saved to: /home/user/.lanet_keys/lanet_public.key
|
|
286
558
|
|
|
287
|
-
IMPORTANT: Keep your private key secure and never share it.
|
|
288
|
-
Share your public key with others who need to verify your messages.
|
|
559
|
+
IMPORTANT: Keep your private key secure and never share it.
|
|
560
|
+
Share your public key with others who need to verify your messages.
|
|
289
561
|
</div>
|
|
290
562
|
|
|
291
563
|
<h4>Send a Signed Message</h4>
|
|
@@ -295,7 +567,8 @@ Share your public key with others who need to verify your messages.
|
|
|
295
567
|
|
|
296
568
|
<h4>Send a Signed & Encrypted Message</h4>
|
|
297
569
|
<div class="cli-example">
|
|
298
|
-
lanet send --target 192.168.1.5 --message "Secure signed message" --key "my_secret_key"
|
|
570
|
+
lanet send --target 192.168.1.5 --message "Secure signed message" --key "my_secret_key"
|
|
571
|
+
--private-key-file lanet_private.key
|
|
299
572
|
</div>
|
|
300
573
|
|
|
301
574
|
<h4>Broadcast a Signed Message</h4>
|
|
@@ -315,10 +588,10 @@ Share your public key with others who need to verify your messages.
|
|
|
315
588
|
|
|
316
589
|
<p>Example output when receiving a signed message:</p>
|
|
317
590
|
<div class="output-example">
|
|
318
|
-
Message from 192.168.1.5:
|
|
319
|
-
Content: Hello, this is a signed message
|
|
320
|
-
Signature: ✓ VERIFIED
|
|
321
|
-
----------------------------------------
|
|
591
|
+
Message from 192.168.1.5:
|
|
592
|
+
Content: Hello, this is a signed message
|
|
593
|
+
Signature: ✓ VERIFIED
|
|
594
|
+
----------------------------------------
|
|
322
595
|
</div>
|
|
323
596
|
</div>
|
|
324
597
|
|
|
@@ -391,7 +664,8 @@ Signature: ✓ VERIFIED
|
|
|
391
664
|
|
|
392
665
|
<p>Send a file with encryption and digital signature:</p>
|
|
393
666
|
<div class="cli-example">
|
|
394
|
-
lanet send-file --target 192.168.1.5 --file document.pdf --key "my_secret_key" --private-key-file
|
|
667
|
+
lanet send-file --target 192.168.1.5 --file document.pdf --key "my_secret_key" --private-key-file
|
|
668
|
+
lanet_private.key
|
|
395
669
|
</div>
|
|
396
670
|
|
|
397
671
|
<h4>Receive Files</h4>
|
|
@@ -401,15 +675,16 @@ Signature: ✓ VERIFIED
|
|
|
401
675
|
|
|
402
676
|
<p>With signature verification:</p>
|
|
403
677
|
<div class="cli-example">
|
|
404
|
-
lanet receive-file --output ./downloads --encryption-key "my_secret_key" --public-key-file
|
|
678
|
+
lanet receive-file --output ./downloads --encryption-key "my_secret_key" --public-key-file
|
|
679
|
+
lanet_public.key
|
|
405
680
|
</div>
|
|
406
681
|
|
|
407
682
|
<p>Example output during file transfer:</p>
|
|
408
683
|
<div class="output-example">
|
|
409
|
-
Receiving file: document.pdf from 192.168.1.5
|
|
410
|
-
Size: 1048576 bytes
|
|
411
|
-
Transfer ID: 8a7b6c5d-4e3f-2g1h-0i9j-8k7l6m5n4o3p
|
|
412
|
-
Progress: 75% (786432/1048576 bytes)
|
|
684
|
+
Receiving file: document.pdf from 192.168.1.5
|
|
685
|
+
Size: 1048576 bytes
|
|
686
|
+
Transfer ID: 8a7b6c5d-4e3f-2g1h-0i9j-8k7l6m5n4o3p
|
|
687
|
+
Progress: 75% (786432/1048576 bytes)
|
|
413
688
|
</div>
|
|
414
689
|
</div>
|
|
415
690
|
|
|
@@ -443,13 +718,13 @@ Progress: 75% (786432/1048576 bytes)
|
|
|
443
718
|
|
|
444
719
|
<p>Example output when viewing mesh info:</p>
|
|
445
720
|
<div class="output-example">
|
|
446
|
-
Mesh Node ID: 4f9a8b7c-6d5e-4f3e-2d1c-0b9a8b7c6d5e
|
|
721
|
+
Mesh Node ID: 4f9a8b7c-6d5e-4f3e-2d1c-0b9a8b7c6d5e
|
|
447
722
|
|
|
448
|
-
Connected nodes:
|
|
449
|
-
|
|
450
|
-
|
|
723
|
+
Connected nodes:
|
|
724
|
+
b1c2d3e4-f5g6-7h8i-9j0k-l1m2n3o4p5q6 (192.168.1.5, last seen 12s ago)
|
|
725
|
+
c5d4e3f2-g1h0-i9j8-k7l6-m5n4o3p2q1r0 (192.168.1.10, last seen 5s ago)
|
|
451
726
|
|
|
452
|
-
Message cache: 24 messages
|
|
727
|
+
Message cache: 24 messages
|
|
453
728
|
</div>
|
|
454
729
|
</div>
|
|
455
730
|
|
|
@@ -478,20 +753,20 @@ Message cache: 24 messages
|
|
|
478
753
|
|
|
479
754
|
<p>Example output of a traceroute:</p>
|
|
480
755
|
<div class="output-example">
|
|
481
|
-
Tracing route to github.com using UDP protocol
|
|
482
|
-
Maximum hops: 30, Timeout: 1s, Queries: 3
|
|
483
|
-
======================================================================
|
|
484
|
-
TTL
|
|
485
|
-
----------------------------------------------------------------------
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
======================================================================
|
|
494
|
-
Trace complete.
|
|
756
|
+
Tracing route to github.com using UDP protocol
|
|
757
|
+
Maximum hops: 30, Timeout: 1s, Queries: 3
|
|
758
|
+
======================================================================
|
|
759
|
+
TTL IP Address Hostname Response Time
|
|
760
|
+
----------------------------------------------------------------------
|
|
761
|
+
1 192.168.1.1 router.home 2.34ms
|
|
762
|
+
2 172.16.42.1 isp-gateway.net 8.72ms
|
|
763
|
+
3 216.58.223.14 15.35ms
|
|
764
|
+
4 172.217.170.78 edge-router.google.com 22.89ms
|
|
765
|
+
5 * * Request timed out
|
|
766
|
+
6 140.82.121.4 github.com 45.23ms
|
|
767
|
+
Destination unreachable
|
|
768
|
+
======================================================================
|
|
769
|
+
Trace complete.
|
|
495
770
|
</div>
|
|
496
771
|
</div>
|
|
497
772
|
|
|
@@ -741,10 +1016,11 @@ end</code></pre>
|
|
|
741
1016
|
<pre><code>gem install lanet</code></pre>
|
|
742
1017
|
|
|
743
1018
|
<h2>Documentation</h2>
|
|
744
|
-
<p>For complete documentation, please visit the <a href="https://github.com/davidesantangelo/lanet">GitHub
|
|
1019
|
+
<p>For complete documentation, please visit the <a href="https://github.com/davidesantangelo/lanet">GitHub
|
|
1020
|
+
repository</a>.</p>
|
|
745
1021
|
|
|
746
1022
|
<footer style="margin-top: 40px; text-align: center; color: #7f8c8d;">
|
|
747
|
-
<p>Lanet v0.5.
|
|
1023
|
+
<p>Lanet v0.5.1 - Secure Network Communications Library</p>
|
|
748
1024
|
</footer>
|
|
749
1025
|
</div>
|
|
750
1026
|
|
|
@@ -767,4 +1043,5 @@ end</code></pre>
|
|
|
767
1043
|
}
|
|
768
1044
|
</script>
|
|
769
1045
|
</body>
|
|
1046
|
+
|
|
770
1047
|
</html>
|