const TOML_PATH = "/.well-known/xrp-ledger.toml" const TIPS = '

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 CORS header.

' const TIPS_1 = '

Make sure you are entering a valid XRP Ledger address.

' const TIPS_2 = '

Make sure the account has the Domain field set.

' const CLASS_GOOD = "badge badge-success" const CLASS_BAD = "badge badge-danger" const ACCOUNT_FIELDS = [ "address", "network", "desc" ] const VALIDATOR_FIELDS = [ "public_key", "network", "owner_country", "server_country", "unl" ] const PRINCIPAL_FIELDS = [ "name", "email" ] const SERVER_FIELDS = [ "json_rpc", "ws", "peer", "network" ] const CURRENCY_FIELDS = [ "code", "display_decimals", "issuer", "network", "symbol" ] function VerificationError(message, tips) { this.name = "VerificationError" this.message = message || "" this.tips = tips || "" } VerificationError.prototype = Error.prototype function makeLogEntry(text, raw) { let log if (raw) { log = $('
  • ').appendTo('#log').append(text) } else { log = $('
  • ').text(text+" ").appendTo('#log') } log.resolve = function(text) { return $('').html(text).appendTo(log) } return log } function fetchFile(walletDomain) { var url; var log; const domain = $('#domain').val() if (walletDomain !== undefined) { url = "https://" + walletDomain + TOML_PATH log = makeLogEntryWallet('Checking ' + url + '...') } else { url = "https://" + domain + TOML_PATH log = makeLogEntry('Checking ' + url + '...') } $.ajax({ url: url, dataType: 'text', success: function(data) { log.resolve('FOUND').addClass(CLASS_GOOD) if (typeof walletDomain !== 'undefined'){ parseXRPLTomlWallet(data) } else{ parseXRPLToml(data, domain) } }, error: function(jqxhr, status, error) { switch (status) { case 'timeout': err = 'TIMEOUT' break case 'abort': err = 'ABORTED' break case 'error': err = 'ERROR' break default: err = 'UNKNOWN' } log.resolve(err).addClass(CLASS_BAD).after(TIPS) } }) } async function parseXRPLToml(data, domain) { let parsed let logTOML = makeLogEntry("Parsing TOML data...") try { parsed = TOML(data) logTOML.resolve("SUCCESS").addClass(CLASS_GOOD) } catch(e) { logTOML.resolve(e).addClass(CLASS_BAD) return } 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 { mod_log.resolve(parsed.METADATA.modified.toISOString()).addClass(CLASS_GOOD) } catch(e) { mod_log.resolve("INVALID").addClass(CLASS_BAD) } } } } async function listEntries(name, list, fields, validate) { let list_wrap = $("

    "+name+"

    ") let list_ol = $("
      ").appendTo(list_wrap) for (i=0; i").appendTo(list_ol) let entry_def = $("