TOML checker - warn on datatype mismatch

This commit is contained in:
mDuo13
2019-07-09 19:46:01 -07:00
parent 47af882012
commit e1c9ef5eb4

View File

@@ -1,5 +1,5 @@
const TOML_PATH = "/.well-known/xrp-ledger.toml" const TOML_PATH = "/.well-known/xrp-ledger.toml"
const TIPS = '<p>Check if the file is actually hosted at the URL above, check your server\'s HTTP settings, and make sure your server provides the required <a href="xrp-ledger-toml.html#cors-setup">CORS header.</a></p>' const TIPS = '<p>Check if the file is actually hosted at the URL above, check your server\'s HTTPS settings and certificate, and make sure your server provides the required <a href="xrp-ledger-toml.html#cors-setup">CORS header.</a></p>'
const CLASS_GOOD = "badge badge-success" const CLASS_GOOD = "badge badge-success"
const CLASS_BAD = "badge badge-danger" const CLASS_BAD = "badge badge-danger"
@@ -97,6 +97,13 @@ async function parse_xrpl_toml(data, domain) {
console.log(parsed) console.log(parsed)
if (parsed.hasOwnProperty("METADATA")) {
const metadata_type = makeLogEntry("Metadata section: ")
if (Array.isArray(parsed.METADATA)) {
metadata_type.resolve("Wrong type - should be table").addClass(CLASS_BAD)
} else {
metadata_type.resolve("Found").addClass(CLASS_GOOD)
if (parsed.METADATA.modified) { if (parsed.METADATA.modified) {
const mod_log = makeLogEntry("Modified date: ") const mod_log = makeLogEntry("Modified date: ")
try { try {
@@ -105,6 +112,8 @@ async function parse_xrpl_toml(data, domain) {
mod_log.resolve("INVALID").addClass(CLASS_BAD) mod_log.resolve("INVALID").addClass(CLASS_BAD)
} }
} }
}
}
async function list_entries(name, list, fields, validate) { async function list_entries(name, list, fields, validate) {
let list_wrap = $("<p>"+name+"</p>") let list_wrap = $("<p>"+name+"</p>")
@@ -132,6 +141,9 @@ async function parse_xrpl_toml(data, domain) {
} }
if (parsed.ACCOUNTS) { if (parsed.ACCOUNTS) {
if (!Array.isArray(parsed.ACCOUNTS)) {
makeLogEntry("Accounts:").resolve("Wrong type - should be table-array").addClass(CLASS_BAD)
} else {
list_entries("Accounts:", parsed.ACCOUNTS, ACCOUNT_FIELDS, async function(acct) { list_entries("Accounts:", parsed.ACCOUNTS, ACCOUNT_FIELDS, async function(acct) {
if (acct.address === undefined) {return undefined} if (acct.address === undefined) {return undefined}
let net let net
@@ -139,18 +151,35 @@ async function parse_xrpl_toml(data, domain) {
return await validate_address_domain_on_net(acct.address, domain, net) return await validate_address_domain_on_net(acct.address, domain, net)
}) })
} }
}
if (parsed.VALIDATORS) { if (parsed.VALIDATORS) {
if (!Array.isArray(parsed.VALIDATORS)) {
makeLogEntry("Validators:").resolve("Wrong type - should be table-array").addClass(CLASS_BAD)
} else {
list_entries("Validators:", parsed.VALIDATORS, VALIDATOR_FIELDS) list_entries("Validators:", parsed.VALIDATORS, VALIDATOR_FIELDS)
} }
}
if (parsed.PRINCIPALS) { if (parsed.PRINCIPALS) {
if (!Array.isArray(parsed.PRINCIPALS)) {
makeLogEntry("Principals:").resolve("Wrong type - should be table-array").addClass(CLASS_BAD)
} else {
list_entries("Principals:", parsed.PRINCIPALS, PRINCIPAL_FIELDS) list_entries("Principals:", parsed.PRINCIPALS, PRINCIPAL_FIELDS)
} }
}
if (parsed.SERVERS) { if (parsed.SERVERS) {
if (!Array.isArray(parsed.SERVERS)) {
makeLogEntry("Servers:").resolve("Wrong type - should be table-array").addClass(CLASS_BAD)
} else {
list_entries("Servers:", parsed.SERVERS, SERVER_FIELDS) list_entries("Servers:", parsed.SERVERS, SERVER_FIELDS)
} }
}
if (parsed.CURRENCIES) { if (parsed.CURRENCIES) {
if (!Array.isArray(parsed.CURRENCIES)) {
makeLogEntry("Currencies:").resolve("Wrong type - should be table-array").addClass(CLASS_BAD)
} else {
list_entries("Currencies:", parsed.CURRENCIES, CURRENCY_FIELDS) list_entries("Currencies:", parsed.CURRENCIES, CURRENCY_FIELDS)
} }
}
} }
const testnet = new ripple.RippleAPI({server: 'wss://s.altnet.rippletest.net:51233'}) const testnet = new ripple.RippleAPI({server: 'wss://s.altnet.rippletest.net:51233'})