@portll/cobolwork 0.2.76 → 0.2.140
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.
- package/README.md +66 -14
- package/bin/cobolwork.mjs +126 -9
- package/lib/arith.mjs +235 -0
- package/lib/baseline.mjs +5 -0
- package/lib/build.mjs +112 -30
- package/lib/capabilities.mjs +12 -7
- package/lib/card.mjs +18 -0
- package/lib/cics-commands.mjs +136 -125
- package/lib/consequence.mjs +29 -0
- package/lib/control.mjs +1169 -91
- package/lib/csd.mjs +17 -2
- package/lib/dataflow.mjs +276 -126
- package/lib/embedded-sql.mjs +110 -0
- package/lib/enterprise-options.mjs +255 -0
- package/lib/equivalence.mjs +124 -0
- package/lib/evidence/cli.mjs +65 -0
- package/lib/evidence/journal.mjs +94 -0
- package/lib/evidence/record.mjs +110 -0
- package/lib/evidence/run.mjs +111 -0
- package/lib/evidence/seal.mjs +177 -0
- package/lib/evidence/slsa.mjs +64 -0
- package/lib/evidence/sshsig.mjs +172 -0
- package/lib/evidence/store.mjs +170 -0
- package/lib/evidence/verify.mjs +167 -0
- package/lib/explain.mjs +9 -5
- package/lib/exploitability.mjs +263 -0
- package/lib/ftp.mjs +136 -0
- package/lib/ironwork.mjs +109 -0
- package/lib/jcl.mjs +27 -7
- package/lib/kernel/findings.mjs +11 -0
- package/lib/kernel/registry.mjs +4 -0
- package/lib/layout.mjs +202 -0
- package/lib/option-diff.mjs +49 -0
- package/lib/options.mjs +109 -46
- package/lib/parser.mjs +80 -209
- package/lib/policy.mjs +8 -3
- package/lib/precompile.mjs +5 -84
- package/lib/reach.mjs +29 -12
- package/lib/revision.json +1 -1
- package/lib/sarif.mjs +1 -0
- package/lib/sbom.mjs +235 -0
- package/lib/scan.mjs +93 -27
- package/lib/sets/cics.mjs +119 -2
- package/lib/sets/copybook.mjs +2 -1
- package/lib/sets/flow.mjs +82 -2
- package/lib/sets/hidden.mjs +4 -8
- package/lib/sets/jcl.mjs +70 -106
- package/lib/sets/recon.mjs +2 -1
- package/lib/sets/semantics.mjs +377 -0
- package/lib/sets/web.mjs +34 -10
- package/lib/sets/zowe.mjs +246 -0
- package/lib/sources.mjs +10 -0
- package/lib/tui/app.mjs +31 -13
- package/lib/tui/model.mjs +17 -2
- package/lib/utilities.mjs +229 -15
- package/lib/verify.mjs +128 -0
- package/package.json +1 -1
- package/rules/compliance-dora.json +507 -0
- package/rules/compliance-ffiec.json +507 -0
- package/rules/compliance-nist80053.json +507 -0
- package/schema/cobolwork.policy.schema.json +94 -16
package/lib/csd.mjs
CHANGED
|
@@ -13,11 +13,13 @@ const COMMAND = /^\s*(DEFINE|ADD|ALTER|APPEND|COPY|DELETE|INITIALIZE|LIST|REMOVE
|
|
|
13
13
|
|
|
14
14
|
// { tdqueues: Map(name -> { type, ddname, indirect, line }),
|
|
15
15
|
// transactions: Map(name -> { program, cmdsec, ressec, line }),
|
|
16
|
-
// tcpipservices: Map(name -> { port, protocol, ssl, transaction, line })
|
|
16
|
+
// tcpipservices: Map(name -> { port, protocol, ssl, authenticate, transaction, line }),
|
|
17
|
+
// urimaps: Map(name -> { usage, path, program, transaction, tcpipservice, line }) }
|
|
17
18
|
export function parseCsd(text) {
|
|
18
19
|
const tdqueues = new Map();
|
|
19
20
|
const transactions = new Map();
|
|
20
21
|
const tcpipservices = new Map();
|
|
22
|
+
const urimaps = new Map();
|
|
21
23
|
const blocks = [];
|
|
22
24
|
let cur = null;
|
|
23
25
|
const lines = String(text).split(/\r?\n/);
|
|
@@ -48,9 +50,22 @@ export function parseCsd(text) {
|
|
|
48
50
|
port: attrs.get('PORTNUMBER') || null,
|
|
49
51
|
protocol: attrs.get('PROTOCOL') || null,
|
|
50
52
|
ssl: attrs.get('SSL') || null,
|
|
53
|
+
// Absent is NO, as for SSL: a request arrives under the region's default user.
|
|
54
|
+
authenticate: attrs.get('AUTHENTICATE') || null,
|
|
51
55
|
transaction: attrs.get('TRANSACTION') || null,
|
|
52
56
|
line: b.line,
|
|
53
57
|
});
|
|
58
|
+
} else if (kind === 'URIMAP') {
|
|
59
|
+
// PATH keeps its case: a URI path is case-sensitive, and it is printed, not compared.
|
|
60
|
+
const path = /\bPATH\s*\(([^)]{0,256})\)/i.exec(b.text.slice(head[0].length));
|
|
61
|
+
urimaps.set(name, {
|
|
62
|
+
usage: attrs.get('USAGE') || null,
|
|
63
|
+
path: path ? path[1].trim() : null,
|
|
64
|
+
program: attrs.get('PROGRAM') || null,
|
|
65
|
+
transaction: attrs.get('TRANSACTION') || null,
|
|
66
|
+
tcpipservice: attrs.get('TCPIPSERVICE') || null,
|
|
67
|
+
line: b.line,
|
|
68
|
+
});
|
|
54
69
|
} else if (kind === 'TDQUEUE') {
|
|
55
70
|
tdqueues.set(name, { type: attrs.get('TYPE') || null, ddname: attrs.get('DDNAME') || null, indirect: attrs.get('INDIRECTNAME') || null, transid: attrs.get('TRANSID') || null, line: b.line });
|
|
56
71
|
} else if (kind === 'TRANSACTION') {
|
|
@@ -65,7 +80,7 @@ export function parseCsd(text) {
|
|
|
65
80
|
});
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
|
-
return { tdqueues, transactions, tcpipservices };
|
|
83
|
+
return { tdqueues, transactions, tcpipservices, urimaps };
|
|
69
84
|
}
|
|
70
85
|
|
|
71
86
|
// The DD a queue is written to, following one INDIRECT hop. Null when the definition does not say:
|