Skip to content

Commit dceb941

Browse files
authored
Merge pull request #189 from Patrik-Stas/fix/scanning-buildernet
Fix endpoint attrib processing, fix daemon hanging on regex
2 parents 1dc74fd + dd5adc0 commit dceb941

File tree

3 files changed

+60
-13
lines changed

3 files changed

+60
-13
lines changed

indyscan-daemon/src/transformers/expansion/domain/nym-attrib.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,6 @@ function roleIdToRoleAction (id) {
1818
return ROLE_ACTIONS[id.trim()] || UNKNOWN_ROLE_ACTION
1919
}
2020

21-
function validURL(str) { // https://stackoverflow.com/a/5717133
22-
var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
23-
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
24-
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
25-
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
26-
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
27-
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
28-
return !!pattern.test(str);
29-
}
30-
3121
function tryParseRawData (rawData) {
3222
let parsed
3323
let endpoint
@@ -38,7 +28,7 @@ function tryParseRawData (rawData) {
3828
if (parsed.endpoint.endpoint) {
3929
if (parsed.endpoint.endpoint.endpoint) { // fix for bad txn
4030
endpoint = parsed.endpoint.endpoint.endpoint
41-
}
31+
}
4232
else {
4333
endpoint = parsed.endpoint.endpoint
4434
}
@@ -58,8 +48,8 @@ function tryParseRawData (rawData) {
5848
if (parsed.last_updated) {
5949
lastUpdated = parsed.last_updated
6050
}
61-
} catch (err) {}
62-
if (!validURL(endpoint)){
51+
} catch (err) { }
52+
if (typeof endpoint !== 'string'){
6353
endpoint = undefined // sanitize input
6454
}
6555
return { endpoint, lastUpdated }

indyscan-daemon/test/unit/transformers/domain-subledger/transform-tx-domain-attrib.spec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const txAttribRoleSteward = require('indyscan-storage/test/resource/sample-txs/t
33
const txAttribRoleNetworkMonitor = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-network-monitor')
44
const txAttribRoleEndorser = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-endorser')
55
const txAttribRoleTrustee = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-trustee')
6+
const txAttribBuildernet55175 = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-endpoint-buildernet-55175.json')
67
const txAttribRoleRemove = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-remove')
78
const txAttribRoleUnrecognized = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-unrecognized')
89
const txAttribRoleRemoveWithSpace = require('indyscan-storage/test/resource/sample-txs/tx-domain-attrib-role-remove-with-spaces')
@@ -37,6 +38,13 @@ describe('domain/attrib transaction transformations', () => {
3738
expect(processedTx.txn.data.roleAction).toBe('SET_STEWARD')
3839
})
3940

41+
it('should process ATTRIB transaction with endpoint (sovrin buildernet tx 55175)', async () => {
42+
const tx = _.cloneDeep(txAttribBuildernet55175)
43+
const { processedTx } = await processor.processTx(tx, 'DOMAIN')
44+
expect(JSON.stringify(tx)).toBe(JSON.stringify(txAttribBuildernet55175))
45+
expect(processedTx.txn.data.endpoint).toBe('http://localhost:8000/')
46+
})
47+
4048
it('should process ATTRIB transaction with SET_NETWORK_MONITOR role', async () => {
4149
const tx = _.cloneDeep(txAttribRoleNetworkMonitor)
4250
const { processedTx } = await processor.processTx(tx, 'DOMAIN')
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{
2+
"auditPath": [
3+
"5Q1wj1D8TZhRAjDKobezLFEvJJCNEUE88aSRjAHPc62H",
4+
"8U1Pw3dz2cCYLFJ6kW3jjPQ3dS3RkPV6VByrdXEPYjnj",
5+
"BBkdmQxAMvdFPqPoAB9tzkxufzMbHkRAbkggUg2mfhaJ",
6+
"9CtmYsKB4rLDDPSH7keZpwUAvPU9T3CTq8CVfs7ssqEA",
7+
"HwvnHTCqaZeZeg4tgt33TJd5vWK3A3u7ed5FGtxfJ85R",
8+
"GMjz4Ln1iUinEZSyYWXHGGQFbi1WzdKnA5T4bavmWak9",
9+
"8MwjdEetR7UonGMak2u6upmKFBUAZzsiUm3BQdaVb6Da",
10+
"DoibS3EaSp5RM4ThA4sX2ZW3k49CheMC2AWp1ewiKdVy",
11+
"DsA2vn5WqfL4ZJqzwVtW3YzkQ1imYrgG8S2UfQfXtV2E"
12+
],
13+
"ledgerSize": 55175,
14+
"reqSignature": {
15+
"type": "ED25519",
16+
"values": [
17+
{
18+
"from": "JEMWktUsL4YVuDgcPeTf9",
19+
"value": "3crGVsSS3CQmpXGunTeyx8VHYdoFHmz12zgx35NXeusKQ8cNMLy9nfTyQ4ugVLEoydkzQ6c3nhB8anCdu7Vipz5t"
20+
}
21+
]
22+
},
23+
"rootHash": "Guwn2dgaeYfyeuUNA5upM5B87Y5FbPfrrWdwVYvqh84x",
24+
"txn": {
25+
"data": {
26+
"dest": "JEMWktUsL4YVuDgcPeTf9",
27+
"raw": "{\"endpoint\":{\"endpoint\":{\"endpoint\":\"http://localhost:8000/\",\"routingKeys\":[]}}}"
28+
},
29+
"metadata": {
30+
"digest": "599fb98cb08014d56ed50b26dd4586fec4dd05829a6d1784b670851efe54fa31",
31+
"from": "JEMWktUsL4YVuDgcPeTf9",
32+
"payloadDigest": "15c97bcda96f97898c90ec031a25b5aa4057bd512571e3571ec19a9bc9358287",
33+
"reqId": 1662491513671581200,
34+
"taaAcceptance": {
35+
"mechanism": "wallet_agreement",
36+
"taaDigest": "8cee5d7a573e4893b08ff53a0761a22a1607df3b3fcd7e75b98696c92879641f",
37+
"time": 1662422400
38+
}
39+
},
40+
"protocolVersion": 2,
41+
"type": "100"
42+
},
43+
"txnMetadata": {
44+
"seqNo": 55175,
45+
"txnId": "JEMWktUsL4YVuDgcPeTf9:1:b6bf7bc8d96f3ea9d132c83b3da8e7760e420138485657372db4d6a981d3fd9e",
46+
"txnTime": 1662491517
47+
},
48+
"ver": "1"
49+
}

0 commit comments

Comments
 (0)