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 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_BAD = "badge badge-danger"
@@ -97,6 +97,13 @@ async function parse_xrpl_toml(data, domain) {
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) {
const mod_log = makeLogEntry("Modified date: ")
try {
@@ -105,6 +112,8 @@ async function parse_xrpl_toml(data, domain) {
mod_log.resolve("INVALID").addClass(CLASS_BAD)
}
}
}
}
async function list_entries(name, list, fields, validate) {
let list_wrap = $("<p>"+name+"</p>")
@@ -132,6 +141,9 @@ async function parse_xrpl_toml(data, domain) {
}
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) {
if (acct.address === undefined) {return undefined}
let net
@@ -139,19 +151,36 @@ async function parse_xrpl_toml(data, domain) {
return await validate_address_domain_on_net(acct.address, domain, net)
})
}
}
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)
}
}
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)
}
}
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)
}
}
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)
}
}
}
const testnet = new ripple.RippleAPI({server: 'wss://s.altnet.rippletest.net:51233'})
testnet.connect()