@foro-sh/foro 0.11.0 → 0.12.1
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.
|
@@ -483,5 +483,233 @@ export declare const rawManifestCases: readonly [{
|
|
|
483
483
|
readonly ok: false;
|
|
484
484
|
readonly reason: "invalid_shape";
|
|
485
485
|
};
|
|
486
|
+
}, {
|
|
487
|
+
readonly name: "python-egress-ip-entry";
|
|
488
|
+
readonly files: {
|
|
489
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\"]\n";
|
|
490
|
+
};
|
|
491
|
+
readonly expect: {
|
|
492
|
+
readonly ok: true;
|
|
493
|
+
};
|
|
494
|
+
}, {
|
|
495
|
+
readonly name: "python-egress-cidr-entry";
|
|
496
|
+
readonly files: {
|
|
497
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.0.0/16:443\"]\n";
|
|
498
|
+
};
|
|
499
|
+
readonly expect: {
|
|
500
|
+
readonly ok: true;
|
|
501
|
+
};
|
|
502
|
+
}, {
|
|
503
|
+
readonly name: "python-egress-hostname-entry";
|
|
504
|
+
readonly files: {
|
|
505
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\"]\n";
|
|
506
|
+
};
|
|
507
|
+
readonly expect: {
|
|
508
|
+
readonly ok: true;
|
|
509
|
+
};
|
|
510
|
+
}, {
|
|
511
|
+
readonly name: "python-egress-multiple-entries";
|
|
512
|
+
readonly files: {
|
|
513
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\", \"10.20.30.40:5432\", \"10.20.0.0/16:443\"]\n";
|
|
514
|
+
};
|
|
515
|
+
readonly expect: {
|
|
516
|
+
readonly ok: true;
|
|
517
|
+
};
|
|
518
|
+
}, {
|
|
519
|
+
readonly name: "python-egress-empty-list-denies-everything";
|
|
520
|
+
readonly files: {
|
|
521
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = []\n";
|
|
522
|
+
};
|
|
523
|
+
readonly expect: {
|
|
524
|
+
readonly ok: true;
|
|
525
|
+
};
|
|
526
|
+
}, {
|
|
527
|
+
readonly name: "python-egress-missing-port";
|
|
528
|
+
readonly files: {
|
|
529
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com\"]\n";
|
|
530
|
+
};
|
|
531
|
+
readonly expect: {
|
|
532
|
+
readonly ok: false;
|
|
533
|
+
readonly reason: "invalid_egress";
|
|
534
|
+
};
|
|
535
|
+
}, {
|
|
536
|
+
readonly name: "python-egress-port-zero";
|
|
537
|
+
readonly files: {
|
|
538
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:0\"]\n";
|
|
539
|
+
};
|
|
540
|
+
readonly expect: {
|
|
541
|
+
readonly ok: false;
|
|
542
|
+
readonly reason: "invalid_egress";
|
|
543
|
+
};
|
|
544
|
+
}, {
|
|
545
|
+
readonly name: "python-egress-port-too-high";
|
|
546
|
+
readonly files: {
|
|
547
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:65536\"]\n";
|
|
548
|
+
};
|
|
549
|
+
readonly expect: {
|
|
550
|
+
readonly ok: false;
|
|
551
|
+
readonly reason: "invalid_egress";
|
|
552
|
+
};
|
|
553
|
+
}, {
|
|
554
|
+
readonly name: "python-egress-blocked-mail-port";
|
|
555
|
+
readonly files: {
|
|
556
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:25\"]\n";
|
|
557
|
+
};
|
|
558
|
+
readonly expect: {
|
|
559
|
+
readonly ok: false;
|
|
560
|
+
readonly reason: "invalid_egress";
|
|
561
|
+
};
|
|
562
|
+
}, {
|
|
563
|
+
readonly name: "python-egress-metadata-endpoint";
|
|
564
|
+
readonly files: {
|
|
565
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.169.254:80\"]\n";
|
|
566
|
+
};
|
|
567
|
+
readonly expect: {
|
|
568
|
+
readonly ok: false;
|
|
569
|
+
readonly reason: "invalid_egress";
|
|
570
|
+
};
|
|
571
|
+
}, {
|
|
572
|
+
readonly name: "python-egress-whole-internet";
|
|
573
|
+
readonly files: {
|
|
574
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"0.0.0.0/0:443\"]\n";
|
|
575
|
+
};
|
|
576
|
+
readonly expect: {
|
|
577
|
+
readonly ok: false;
|
|
578
|
+
readonly reason: "invalid_egress";
|
|
579
|
+
};
|
|
580
|
+
}, {
|
|
581
|
+
readonly name: "python-egress-wide-range-swallows-a-reserved-one";
|
|
582
|
+
readonly files: {
|
|
583
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.16.0.0/12:443\"]\n";
|
|
584
|
+
};
|
|
585
|
+
readonly expect: {
|
|
586
|
+
readonly ok: false;
|
|
587
|
+
readonly reason: "invalid_egress";
|
|
588
|
+
};
|
|
589
|
+
}, {
|
|
590
|
+
readonly name: "python-egress-hostname-over-253-chars";
|
|
591
|
+
readonly files: {
|
|
592
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa:443\"]\n";
|
|
593
|
+
};
|
|
594
|
+
readonly expect: {
|
|
595
|
+
readonly ok: false;
|
|
596
|
+
readonly reason: "invalid_egress";
|
|
597
|
+
};
|
|
598
|
+
}, {
|
|
599
|
+
readonly name: "python-egress-string-instead-of-list";
|
|
600
|
+
readonly files: {
|
|
601
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = \"example.com:443\"\n";
|
|
602
|
+
};
|
|
603
|
+
readonly expect: {
|
|
604
|
+
readonly ok: false;
|
|
605
|
+
readonly reason: "invalid_egress";
|
|
606
|
+
};
|
|
607
|
+
}, {
|
|
608
|
+
readonly name: "python-egress-over-entry-cap";
|
|
609
|
+
readonly files: {
|
|
610
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"h0.example.com:443\", \"h1.example.com:443\", \"h2.example.com:443\", \"h3.example.com:443\", \"h4.example.com:443\", \"h5.example.com:443\", \"h6.example.com:443\", \"h7.example.com:443\", \"h8.example.com:443\", \"h9.example.com:443\", \"h10.example.com:443\", \"h11.example.com:443\", \"h12.example.com:443\", \"h13.example.com:443\", \"h14.example.com:443\", \"h15.example.com:443\", \"h16.example.com:443\", \"h17.example.com:443\", \"h18.example.com:443\", \"h19.example.com:443\", \"h20.example.com:443\"]\n";
|
|
611
|
+
};
|
|
612
|
+
readonly expect: {
|
|
613
|
+
readonly ok: false;
|
|
614
|
+
readonly reason: "invalid_egress";
|
|
615
|
+
};
|
|
616
|
+
}, {
|
|
617
|
+
readonly name: "node-egress-non-string-entry";
|
|
618
|
+
readonly files: {
|
|
619
|
+
readonly "package.json": "{\"name\": \"my-server\", \"main\": \"index.js\", \"foro\": {\"egress\": [443]}}";
|
|
620
|
+
};
|
|
621
|
+
readonly expect: {
|
|
622
|
+
readonly ok: false;
|
|
623
|
+
readonly reason: "invalid_egress";
|
|
624
|
+
};
|
|
625
|
+
}, {
|
|
626
|
+
readonly name: "python-egress-shell-metacharacter";
|
|
627
|
+
readonly files: {
|
|
628
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443; rm -rf /\"]\n";
|
|
629
|
+
};
|
|
630
|
+
readonly expect: {
|
|
631
|
+
readonly ok: false;
|
|
632
|
+
readonly reason: "invalid_egress";
|
|
633
|
+
};
|
|
634
|
+
}, {
|
|
635
|
+
readonly name: "python-egress-embedded-whitespace";
|
|
636
|
+
readonly files: {
|
|
637
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil .com:443\"]\n";
|
|
638
|
+
};
|
|
639
|
+
readonly expect: {
|
|
640
|
+
readonly ok: false;
|
|
641
|
+
readonly reason: "invalid_egress";
|
|
642
|
+
};
|
|
643
|
+
}, {
|
|
644
|
+
readonly name: "python-egress-embedded-newline";
|
|
645
|
+
readonly files: {
|
|
646
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443\\nother:80\"]\n";
|
|
647
|
+
};
|
|
648
|
+
readonly expect: {
|
|
649
|
+
readonly ok: false;
|
|
650
|
+
readonly reason: "invalid_egress";
|
|
651
|
+
};
|
|
652
|
+
}, {
|
|
653
|
+
readonly name: "python-egress-ipv6-literal";
|
|
654
|
+
readonly files: {
|
|
655
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"::1:443\"]\n";
|
|
656
|
+
};
|
|
657
|
+
readonly expect: {
|
|
658
|
+
readonly ok: false;
|
|
659
|
+
readonly reason: "invalid_egress";
|
|
660
|
+
};
|
|
661
|
+
}, {
|
|
662
|
+
readonly name: "python-egress-cidr-prefix-out-of-range";
|
|
663
|
+
readonly files: {
|
|
664
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.0.0.0/33:443\"]\n";
|
|
665
|
+
};
|
|
666
|
+
readonly expect: {
|
|
667
|
+
readonly ok: false;
|
|
668
|
+
readonly reason: "invalid_egress";
|
|
669
|
+
};
|
|
670
|
+
}, {
|
|
671
|
+
readonly name: "python-egress-link-local-range";
|
|
672
|
+
readonly files: {
|
|
673
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.0.0/16:443\"]\n";
|
|
674
|
+
};
|
|
675
|
+
readonly expect: {
|
|
676
|
+
readonly ok: false;
|
|
677
|
+
readonly reason: "invalid_egress";
|
|
678
|
+
};
|
|
679
|
+
}, {
|
|
680
|
+
readonly name: "python-egress-loopback";
|
|
681
|
+
readonly files: {
|
|
682
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"127.0.0.1:5432\"]\n";
|
|
683
|
+
};
|
|
684
|
+
readonly expect: {
|
|
685
|
+
readonly ok: false;
|
|
686
|
+
readonly reason: "invalid_egress";
|
|
687
|
+
};
|
|
688
|
+
}, {
|
|
689
|
+
readonly name: "python-egress-platform-bridge-network";
|
|
690
|
+
readonly files: {
|
|
691
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.20.0.5:5432\"]\n";
|
|
692
|
+
};
|
|
693
|
+
readonly expect: {
|
|
694
|
+
readonly ok: false;
|
|
695
|
+
readonly reason: "invalid_egress";
|
|
696
|
+
};
|
|
697
|
+
}, {
|
|
698
|
+
readonly name: "python-egress-submission-port";
|
|
699
|
+
readonly files: {
|
|
700
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:587\"]\n";
|
|
701
|
+
};
|
|
702
|
+
readonly expect: {
|
|
703
|
+
readonly ok: false;
|
|
704
|
+
readonly reason: "invalid_egress";
|
|
705
|
+
};
|
|
706
|
+
}, {
|
|
707
|
+
readonly name: "python-egress-private-ranges-stay-allowlistable";
|
|
708
|
+
readonly files: {
|
|
709
|
+
readonly "pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\", \"192.168.1.0/24:443\"]\n";
|
|
710
|
+
};
|
|
711
|
+
readonly expect: {
|
|
712
|
+
readonly ok: true;
|
|
713
|
+
};
|
|
486
714
|
}];
|
|
487
715
|
//# sourceMappingURL=_generated-manifest-cases.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_generated-manifest-cases.d.ts","sourceRoot":"","sources":["../src/_generated-manifest-cases.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"_generated-manifest-cases.d.ts","sourceRoot":"","sources":["../src/_generated-manifest-cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -539,5 +539,259 @@ export const rawManifestCases = [
|
|
|
539
539
|
"ok": false,
|
|
540
540
|
"reason": "invalid_shape"
|
|
541
541
|
}
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"name": "python-egress-ip-entry",
|
|
545
|
+
"files": {
|
|
546
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\"]\n"
|
|
547
|
+
},
|
|
548
|
+
"expect": {
|
|
549
|
+
"ok": true
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"name": "python-egress-cidr-entry",
|
|
554
|
+
"files": {
|
|
555
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.0.0/16:443\"]\n"
|
|
556
|
+
},
|
|
557
|
+
"expect": {
|
|
558
|
+
"ok": true
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "python-egress-hostname-entry",
|
|
563
|
+
"files": {
|
|
564
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\"]\n"
|
|
565
|
+
},
|
|
566
|
+
"expect": {
|
|
567
|
+
"ok": true
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"name": "python-egress-multiple-entries",
|
|
572
|
+
"files": {
|
|
573
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"sql.database.windows.net:1433\", \"10.20.30.40:5432\", \"10.20.0.0/16:443\"]\n"
|
|
574
|
+
},
|
|
575
|
+
"expect": {
|
|
576
|
+
"ok": true
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"name": "python-egress-empty-list-denies-everything",
|
|
581
|
+
"files": {
|
|
582
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = []\n"
|
|
583
|
+
},
|
|
584
|
+
"expect": {
|
|
585
|
+
"ok": true
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"name": "python-egress-missing-port",
|
|
590
|
+
"files": {
|
|
591
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com\"]\n"
|
|
592
|
+
},
|
|
593
|
+
"expect": {
|
|
594
|
+
"ok": false,
|
|
595
|
+
"reason": "invalid_egress"
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"name": "python-egress-port-zero",
|
|
600
|
+
"files": {
|
|
601
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:0\"]\n"
|
|
602
|
+
},
|
|
603
|
+
"expect": {
|
|
604
|
+
"ok": false,
|
|
605
|
+
"reason": "invalid_egress"
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"name": "python-egress-port-too-high",
|
|
610
|
+
"files": {
|
|
611
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"example.com:65536\"]\n"
|
|
612
|
+
},
|
|
613
|
+
"expect": {
|
|
614
|
+
"ok": false,
|
|
615
|
+
"reason": "invalid_egress"
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
"name": "python-egress-blocked-mail-port",
|
|
620
|
+
"files": {
|
|
621
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:25\"]\n"
|
|
622
|
+
},
|
|
623
|
+
"expect": {
|
|
624
|
+
"ok": false,
|
|
625
|
+
"reason": "invalid_egress"
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
"name": "python-egress-metadata-endpoint",
|
|
630
|
+
"files": {
|
|
631
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.169.254:80\"]\n"
|
|
632
|
+
},
|
|
633
|
+
"expect": {
|
|
634
|
+
"ok": false,
|
|
635
|
+
"reason": "invalid_egress"
|
|
636
|
+
}
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"name": "python-egress-whole-internet",
|
|
640
|
+
"files": {
|
|
641
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"0.0.0.0/0:443\"]\n"
|
|
642
|
+
},
|
|
643
|
+
"expect": {
|
|
644
|
+
"ok": false,
|
|
645
|
+
"reason": "invalid_egress"
|
|
646
|
+
}
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"name": "python-egress-wide-range-swallows-a-reserved-one",
|
|
650
|
+
"files": {
|
|
651
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.16.0.0/12:443\"]\n"
|
|
652
|
+
},
|
|
653
|
+
"expect": {
|
|
654
|
+
"ok": false,
|
|
655
|
+
"reason": "invalid_egress"
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
"name": "python-egress-hostname-over-253-chars",
|
|
660
|
+
"files": {
|
|
661
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa.aaaa:443\"]\n"
|
|
662
|
+
},
|
|
663
|
+
"expect": {
|
|
664
|
+
"ok": false,
|
|
665
|
+
"reason": "invalid_egress"
|
|
666
|
+
}
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"name": "python-egress-string-instead-of-list",
|
|
670
|
+
"files": {
|
|
671
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = \"example.com:443\"\n"
|
|
672
|
+
},
|
|
673
|
+
"expect": {
|
|
674
|
+
"ok": false,
|
|
675
|
+
"reason": "invalid_egress"
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"name": "python-egress-over-entry-cap",
|
|
680
|
+
"files": {
|
|
681
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"h0.example.com:443\", \"h1.example.com:443\", \"h2.example.com:443\", \"h3.example.com:443\", \"h4.example.com:443\", \"h5.example.com:443\", \"h6.example.com:443\", \"h7.example.com:443\", \"h8.example.com:443\", \"h9.example.com:443\", \"h10.example.com:443\", \"h11.example.com:443\", \"h12.example.com:443\", \"h13.example.com:443\", \"h14.example.com:443\", \"h15.example.com:443\", \"h16.example.com:443\", \"h17.example.com:443\", \"h18.example.com:443\", \"h19.example.com:443\", \"h20.example.com:443\"]\n"
|
|
682
|
+
},
|
|
683
|
+
"expect": {
|
|
684
|
+
"ok": false,
|
|
685
|
+
"reason": "invalid_egress"
|
|
686
|
+
}
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"name": "node-egress-non-string-entry",
|
|
690
|
+
"files": {
|
|
691
|
+
"package.json": "{\"name\": \"my-server\", \"main\": \"index.js\", \"foro\": {\"egress\": [443]}}"
|
|
692
|
+
},
|
|
693
|
+
"expect": {
|
|
694
|
+
"ok": false,
|
|
695
|
+
"reason": "invalid_egress"
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
"name": "python-egress-shell-metacharacter",
|
|
700
|
+
"files": {
|
|
701
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443; rm -rf /\"]\n"
|
|
702
|
+
},
|
|
703
|
+
"expect": {
|
|
704
|
+
"ok": false,
|
|
705
|
+
"reason": "invalid_egress"
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
"name": "python-egress-embedded-whitespace",
|
|
710
|
+
"files": {
|
|
711
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil .com:443\"]\n"
|
|
712
|
+
},
|
|
713
|
+
"expect": {
|
|
714
|
+
"ok": false,
|
|
715
|
+
"reason": "invalid_egress"
|
|
716
|
+
}
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
"name": "python-egress-embedded-newline",
|
|
720
|
+
"files": {
|
|
721
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"evil.com:443\\nother:80\"]\n"
|
|
722
|
+
},
|
|
723
|
+
"expect": {
|
|
724
|
+
"ok": false,
|
|
725
|
+
"reason": "invalid_egress"
|
|
726
|
+
}
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"name": "python-egress-ipv6-literal",
|
|
730
|
+
"files": {
|
|
731
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"::1:443\"]\n"
|
|
732
|
+
},
|
|
733
|
+
"expect": {
|
|
734
|
+
"ok": false,
|
|
735
|
+
"reason": "invalid_egress"
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"name": "python-egress-cidr-prefix-out-of-range",
|
|
740
|
+
"files": {
|
|
741
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.0.0.0/33:443\"]\n"
|
|
742
|
+
},
|
|
743
|
+
"expect": {
|
|
744
|
+
"ok": false,
|
|
745
|
+
"reason": "invalid_egress"
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"name": "python-egress-link-local-range",
|
|
750
|
+
"files": {
|
|
751
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"169.254.0.0/16:443\"]\n"
|
|
752
|
+
},
|
|
753
|
+
"expect": {
|
|
754
|
+
"ok": false,
|
|
755
|
+
"reason": "invalid_egress"
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
"name": "python-egress-loopback",
|
|
760
|
+
"files": {
|
|
761
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"127.0.0.1:5432\"]\n"
|
|
762
|
+
},
|
|
763
|
+
"expect": {
|
|
764
|
+
"ok": false,
|
|
765
|
+
"reason": "invalid_egress"
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"name": "python-egress-platform-bridge-network",
|
|
770
|
+
"files": {
|
|
771
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"172.20.0.5:5432\"]\n"
|
|
772
|
+
},
|
|
773
|
+
"expect": {
|
|
774
|
+
"ok": false,
|
|
775
|
+
"reason": "invalid_egress"
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"name": "python-egress-submission-port",
|
|
780
|
+
"files": {
|
|
781
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"smtp.example.com:587\"]\n"
|
|
782
|
+
},
|
|
783
|
+
"expect": {
|
|
784
|
+
"ok": false,
|
|
785
|
+
"reason": "invalid_egress"
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"name": "python-egress-private-ranges-stay-allowlistable",
|
|
790
|
+
"files": {
|
|
791
|
+
"pyproject.toml": "[project]\nname = \"my-server\"\n\n[tool.foro]\nentrypoint = \"server.py\"\negress = [\"10.20.30.40:5432\", \"192.168.1.0/24:443\"]\n"
|
|
792
|
+
},
|
|
793
|
+
"expect": {
|
|
794
|
+
"ok": true
|
|
795
|
+
}
|
|
542
796
|
}
|
|
543
797
|
];
|
package/dist/manifest-cases.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
/** Mirrors `ManifestRejectionReason` in foro-sh/platform's `@foro/types`.
|
|
16
16
|
* Kept in sync deliberately: it is what makes a reason added on one side a
|
|
17
17
|
* compile error on the other. */
|
|
18
|
-
export type ManifestRejectionReason = 'missing_manifest' | 'unsupported_language' | 'invalid_yaml' | 'invalid_shape' | 'invalid_name' | 'invalid_entrypoint' | 'invalid_build_path' | 'invalid_runtime' | 'invalid_runtime_version' | 'invalid_port' | 'invalid_dependency_manager' | 'unsupported_project' | 'unknown_field';
|
|
18
|
+
export type ManifestRejectionReason = 'missing_manifest' | 'unsupported_language' | 'invalid_yaml' | 'invalid_shape' | 'invalid_name' | 'invalid_entrypoint' | 'invalid_build_path' | 'invalid_runtime' | 'invalid_runtime_version' | 'invalid_port' | 'invalid_dependency_manager' | 'unsupported_project' | 'unknown_field' | 'invalid_egress';
|
|
19
19
|
export interface ManifestCase {
|
|
20
20
|
/** Stable identifier, unique across the table - use it as the test name. */
|
|
21
21
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-cases.d.ts","sourceRoot":"","sources":["../src/manifest-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;kCAEkC;AAClC,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,4BAA4B,GAC5B,qBAAqB,GACrB,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"manifest-cases.d.ts","sourceRoot":"","sources":["../src/manifest-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;kCAEkC;AAClC,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,4BAA4B,GAC5B,qBAAqB,GACrB,eAAe,GACf,gBAAgB,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;oDAEgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChD,QAAQ,CAAC,MAAM,EACX;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;KAAE,GACrB;QAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;KAAE,CAAA;CACrE;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAAqB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foro-sh/foro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "TypeScript SDK for Foro",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"node": ">=18"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@types/node": "^
|
|
52
|
-
"typescript": "^
|
|
51
|
+
"@types/node": "^26.2.0",
|
|
52
|
+
"typescript": "^7.0.2"
|
|
53
53
|
}
|
|
54
54
|
}
|