@shumoku/core 0.2.4 → 0.2.13

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.
@@ -0,0 +1,558 @@
1
+ /**
2
+ * Sample network fixtures for testing and playground
3
+ */
4
+
5
+ export interface SampleFile {
6
+ name: string
7
+ content: string
8
+ }
9
+
10
+ /**
11
+ * Sample Network - Multi-file hierarchical structure
12
+ * Comprehensive example covering: HA routers, firewalls, VPN, DMZ, campus with multiple buildings
13
+ */
14
+ export const sampleNetwork: SampleFile[] = [
15
+ {
16
+ name: 'main.yaml',
17
+ content: `name: "Sample Network"
18
+ description: "Sample network with HA routers, firewall, DMZ and campus"
19
+
20
+ settings:
21
+ theme: light
22
+
23
+ subgraphs:
24
+ - id: cloud
25
+ label: "Cloud Services"
26
+ file: "./cloud.yaml"
27
+ vendor: aws
28
+ service: vpc
29
+ resource: virtual-private-cloud-vpc
30
+ style:
31
+ fill: "#f0f8ff"
32
+ stroke: "#0072bc"
33
+ strokeDasharray: "5 5"
34
+
35
+ - id: perimeter
36
+ label: "Perimeter (Edge + Security)"
37
+ file: "./perimeter.yaml"
38
+ style:
39
+ fill: "#fff5f5"
40
+ stroke: "#d4a017"
41
+ strokeWidth: 2
42
+
43
+ - id: dmz
44
+ label: "DMZ"
45
+ file: "./dmz.yaml"
46
+ style:
47
+ fill: "#fefce8"
48
+ stroke: "#ca8a04"
49
+
50
+ - id: campus
51
+ label: "Campus"
52
+ file: "./campus.yaml"
53
+ style:
54
+ fill: "#fffbf0"
55
+ stroke: "#d4a017"
56
+
57
+ links:
58
+ # Cloud to Perimeter (VPN)
59
+ - from:
60
+ node: vgw
61
+ port: tun0
62
+ ip: 169.254.100.1/30
63
+ to:
64
+ node: rt1
65
+ port: tun1
66
+ ip: 169.254.100.2/30
67
+ label: "IPsec VPN"
68
+ type: dashed
69
+
70
+ - from:
71
+ node: vgw
72
+ port: tun1
73
+ ip: 169.254.101.1/30
74
+ to:
75
+ node: rt2
76
+ port: tun1
77
+ ip: 169.254.101.2/30
78
+ label: "IPsec VPN"
79
+ type: dashed
80
+
81
+ # Perimeter to DMZ
82
+ - from:
83
+ node: fw1
84
+ port: dmz
85
+ ip: 10.100.0.2/24
86
+ to:
87
+ node: dmz-sw
88
+ port: uplink
89
+ ip: 10.100.0.1/24
90
+ label: "DMZ"
91
+ vlan: 100
92
+ bandwidth: 10G
93
+
94
+ # Perimeter to Campus
95
+ - from:
96
+ node: fw1
97
+ port: inside
98
+ ip: 10.0.2.1/30
99
+ to:
100
+ node: core-sw
101
+ port: eth1
102
+ ip: 10.0.2.2/30
103
+ label: "Active"
104
+ bandwidth: 10G
105
+
106
+ - from:
107
+ node: fw2
108
+ port: inside
109
+ ip: 10.0.2.5/30
110
+ to:
111
+ node: core-sw
112
+ port: eth2
113
+ ip: 10.0.2.6/30
114
+ label: "Standby"
115
+ bandwidth: 10G
116
+ `,
117
+ },
118
+ {
119
+ name: 'cloud.yaml',
120
+ content: `name: "Cloud Services"
121
+
122
+ nodes:
123
+ - id: cloud-services
124
+ label:
125
+ - "<b>Services VPC</b>"
126
+ - "CIDR: 172.16.0.0/16"
127
+ - "---"
128
+ - "DNS / DHCP / Monitoring"
129
+ type: server
130
+ vendor: aws
131
+ service: ec2
132
+ resource: instances
133
+
134
+ - id: vgw
135
+ label:
136
+ - "<b>VPN Gateway</b>"
137
+ - "Peer: 169.254.x.x"
138
+ type: vpn
139
+ vendor: aws
140
+ service: vpc
141
+ resource: vpn-gateway
142
+
143
+ links:
144
+ - from:
145
+ node: cloud-services
146
+ port: eth0
147
+ to:
148
+ node: vgw
149
+ port: vpc
150
+ label: "Internal"
151
+ `,
152
+ },
153
+ {
154
+ name: 'perimeter.yaml',
155
+ content: `name: "Perimeter Network"
156
+ description: "Edge routers and firewalls"
157
+
158
+ subgraphs:
159
+ - id: edge
160
+ label: "Edge (HA Routers)"
161
+ style:
162
+ fill: "#fff5f5"
163
+ stroke: "#d4a017"
164
+ strokeWidth: 2
165
+
166
+ - id: security
167
+ label: "Security"
168
+ style:
169
+ fill: "#fef2f2"
170
+ stroke: "#dc2626"
171
+ strokeWidth: 2
172
+
173
+ nodes:
174
+ # ========== Edge Layer ==========
175
+ - id: isp1
176
+ label:
177
+ - "<b>ISP Line #1</b>"
178
+ - "(Primary)"
179
+ type: internet
180
+ parent: edge
181
+
182
+ - id: isp2
183
+ label:
184
+ - "<b>ISP Line #2</b>"
185
+ - "(Secondary)"
186
+ type: internet
187
+ parent: edge
188
+
189
+ - id: rt1
190
+ label:
191
+ - "<b>Edge-RT-1 (Master)</b>"
192
+ - "Mgmt: 10.0.0.1"
193
+ - "VRRP VIP: 10.0.0.254"
194
+ type: router
195
+ vendor: yamaha
196
+ model: rtx3510
197
+ parent: edge
198
+
199
+ - id: rt2
200
+ label:
201
+ - "<b>Edge-RT-2 (Backup)</b>"
202
+ - "Mgmt: 10.0.0.2"
203
+ - "VRRP VIP: 10.0.0.254"
204
+ type: router
205
+ vendor: yamaha
206
+ model: rtx3510
207
+ parent: edge
208
+
209
+ # ========== Security Layer ==========
210
+ - id: fw1
211
+ label:
212
+ - "<b>FW-1 (Active)</b>"
213
+ - "Mgmt: 10.0.100.1"
214
+ type: firewall
215
+ vendor: juniper
216
+ model: SRX4100
217
+ parent: security
218
+
219
+ - id: fw2
220
+ label:
221
+ - "<b>FW-2 (Standby)</b>"
222
+ - "Mgmt: 10.0.100.2"
223
+ type: firewall
224
+ vendor: juniper
225
+ model: SRX4100
226
+ parent: security
227
+
228
+ links:
229
+ # ISP to Routers
230
+ - from:
231
+ node: isp1
232
+ port: eth0
233
+ ip: 203.0.113.2/30
234
+ to:
235
+ node: rt1
236
+ port: wan1
237
+ ip: 203.0.113.1/30
238
+ bandwidth: 10G
239
+
240
+ - from:
241
+ node: isp2
242
+ port: eth0
243
+ ip: 198.51.100.2/30
244
+ to:
245
+ node: rt2
246
+ port: wan1
247
+ ip: 198.51.100.1/30
248
+ bandwidth: 10G
249
+
250
+ # Router HA Keepalive
251
+ - from:
252
+ node: rt1
253
+ port: ha0
254
+ ip: 10.255.0.1/30
255
+ to:
256
+ node: rt2
257
+ port: ha0
258
+ ip: 10.255.0.2/30
259
+ label: "Keepalive"
260
+ redundancy: ha
261
+ style:
262
+ minLength: 300
263
+
264
+ # Router to Firewall
265
+ - from:
266
+ node: rt1
267
+ port: lan1
268
+ ip: 10.0.1.1/30
269
+ to:
270
+ node: fw1
271
+ port: outside
272
+ ip: 10.0.1.2/30
273
+ bandwidth: 10G
274
+
275
+ - from:
276
+ node: rt2
277
+ port: lan1
278
+ ip: 10.0.1.5/30
279
+ to:
280
+ node: fw2
281
+ port: outside
282
+ ip: 10.0.1.6/30
283
+ bandwidth: 10G
284
+
285
+ # Firewall HA
286
+ - from:
287
+ node: fw1
288
+ port: ha
289
+ to:
290
+ node: fw2
291
+ port: ha
292
+ label: "HA Sync"
293
+ redundancy: ha
294
+ style:
295
+ minLength: 300
296
+ `,
297
+ },
298
+ {
299
+ name: 'dmz.yaml',
300
+ content: `name: "DMZ"
301
+ description: "Demilitarized zone with public-facing servers"
302
+
303
+ nodes:
304
+ - id: dmz-sw
305
+ label:
306
+ - "<b>DMZ-SW</b>"
307
+ - "Mgmt: 10.100.0.1"
308
+ type: l2-switch
309
+
310
+ - id: web-srv
311
+ label:
312
+ - "<b>Web Server</b>"
313
+ - "10.100.10.10"
314
+ type: server
315
+
316
+ - id: mail-srv
317
+ label:
318
+ - "<b>Mail Server</b>"
319
+ - "10.100.10.20"
320
+ type: server
321
+
322
+ links:
323
+ - from:
324
+ node: dmz-sw
325
+ port: eth1
326
+ to:
327
+ node: web-srv
328
+ port: eth0
329
+ vlan: 100
330
+ bandwidth: 1G
331
+
332
+ - from:
333
+ node: dmz-sw
334
+ port: eth2
335
+ to:
336
+ node: mail-srv
337
+ port: eth0
338
+ vlan: 100
339
+ bandwidth: 1G
340
+ `,
341
+ },
342
+ {
343
+ name: 'campus.yaml',
344
+ content: `name: "Campus Network"
345
+ description: "Internal campus network with NOC and buildings"
346
+
347
+ subgraphs:
348
+ - id: noc
349
+ label: "NOC"
350
+ style:
351
+ fill: "#e6f7ff"
352
+ stroke: "#0055a6"
353
+ strokeWidth: 2
354
+
355
+ - id: building-a
356
+ label: "Building A"
357
+ direction: TB
358
+ style:
359
+ fill: "#f0fdf4"
360
+ stroke: "#22c55e"
361
+
362
+ - id: building-b
363
+ label: "Building B"
364
+ direction: TB
365
+ style:
366
+ fill: "#fef3c7"
367
+ stroke: "#f59e0b"
368
+
369
+ nodes:
370
+ # ========== NOC ==========
371
+ - id: core-sw
372
+ label:
373
+ - "<b>Core-SW</b>"
374
+ - "Mgmt: 10.1.0.1"
375
+ - "Inter-VLAN Routing"
376
+ type: l3-switch
377
+ vendor: juniper
378
+ model: QFX5120-48T
379
+ parent: noc
380
+
381
+ - id: dist-sw
382
+ label:
383
+ - "<b>Distribution-SW</b>"
384
+ - "Mgmt: 10.1.0.2"
385
+ - "Uplink: 40G"
386
+ type: l3-switch
387
+ vendor: juniper
388
+ model: EX4400-48T
389
+ parent: noc
390
+
391
+ # ========== Building A ==========
392
+ - id: sw-a1
393
+ label:
394
+ - "<b>SW-A1 (Floor 1)</b>"
395
+ - "Mgmt: 10.10.0.1"
396
+ type: l2-switch
397
+ vendor: juniper
398
+ model: EX2300-24P
399
+ parent: building-a
400
+
401
+ - id: sw-a2
402
+ label:
403
+ - "<b>SW-A2 (Floor 2)</b>"
404
+ - "Mgmt: 10.10.0.2"
405
+ type: l2-switch
406
+ vendor: juniper
407
+ model: EX2300-24P
408
+ parent: building-a
409
+
410
+ - id: ap-a1
411
+ label: "AP-A1"
412
+ type: access-point
413
+ vendor: aruba
414
+ model: ap500-series
415
+ parent: building-a
416
+
417
+ - id: ap-a2
418
+ label: "AP-A2"
419
+ type: access-point
420
+ vendor: aruba
421
+ model: ap500-series
422
+ parent: building-a
423
+
424
+ # ========== Building B ==========
425
+ - id: sw-b1
426
+ label:
427
+ - "<b>SW-B1 (Floor 1)</b>"
428
+ - "Mgmt: 10.20.0.1"
429
+ type: l2-switch
430
+ vendor: yamaha
431
+ model: swx2310_28gt
432
+ parent: building-b
433
+
434
+ - id: sw-b2
435
+ label:
436
+ - "<b>SW-B2 (Floor 2)</b>"
437
+ - "Mgmt: 10.20.0.2"
438
+ type: l2-switch
439
+ vendor: yamaha
440
+ model: swx2310_28gt
441
+ parent: building-b
442
+
443
+ - id: ap-b1
444
+ label: "AP-B1"
445
+ type: access-point
446
+ vendor: aruba
447
+ model: ap500-series
448
+ parent: building-b
449
+
450
+ - id: ap-b2
451
+ label: "AP-B2"
452
+ type: access-point
453
+ vendor: aruba
454
+ model: ap500-series
455
+ parent: building-b
456
+
457
+ links:
458
+ # Core to Distribution
459
+ - from:
460
+ node: core-sw
461
+ port: ae0
462
+ ip: 10.0.3.1/30
463
+ to:
464
+ node: dist-sw
465
+ port: ae0
466
+ ip: 10.0.3.2/30
467
+ label: "40G LACP"
468
+ bandwidth: 40G
469
+
470
+ # Distribution to Buildings
471
+ - from:
472
+ node: dist-sw
473
+ port: eth10
474
+ ip: 10.10.0.254/24
475
+ to:
476
+ node: sw-a1
477
+ port: uplink
478
+ ip: 10.10.0.1/24
479
+ label: "Trunk"
480
+ vlan: [10, 20]
481
+ bandwidth: 10G
482
+
483
+ - from:
484
+ node: dist-sw
485
+ port: eth20
486
+ ip: 10.20.0.254/24
487
+ to:
488
+ node: sw-b1
489
+ port: uplink
490
+ ip: 10.20.0.1/24
491
+ label: "Trunk"
492
+ vlan: [10, 30]
493
+ bandwidth: 10G
494
+
495
+ # Building A cascade
496
+ - from:
497
+ node: sw-a1
498
+ port: eth24
499
+ ip: 10.10.1.1/30
500
+ to:
501
+ node: sw-a2
502
+ port: uplink
503
+ ip: 10.10.1.2/30
504
+ label: "Cascade"
505
+ vlan: [10, 20]
506
+ bandwidth: 10G
507
+
508
+ - from:
509
+ node: sw-a1
510
+ port: eth1
511
+ to:
512
+ node: ap-a1
513
+ port: eth0
514
+ vlan: 20
515
+ bandwidth: 1G
516
+
517
+ - from:
518
+ node: sw-a2
519
+ port: eth1
520
+ to:
521
+ node: ap-a2
522
+ port: eth0
523
+ vlan: 20
524
+ bandwidth: 1G
525
+
526
+ # Building B cascade
527
+ - from:
528
+ node: sw-b1
529
+ port: eth24
530
+ ip: 10.20.1.1/30
531
+ to:
532
+ node: sw-b2
533
+ port: uplink
534
+ ip: 10.20.1.2/30
535
+ label: "Cascade"
536
+ vlan: [10, 30]
537
+ bandwidth: 10G
538
+
539
+ - from:
540
+ node: sw-b1
541
+ port: eth1
542
+ to:
543
+ node: ap-b1
544
+ port: eth0
545
+ vlan: 30
546
+ bandwidth: 1G
547
+
548
+ - from:
549
+ node: sw-b2
550
+ port: eth1
551
+ to:
552
+ node: ap-b2
553
+ port: eth0
554
+ vlan: 30
555
+ bandwidth: 1G
556
+ `,
557
+ },
558
+ ]