mirror of
https://github.com/Xahau/xahaud.git
synced 2026-06-22 18:16:37 +00:00
Compare commits
2 Commits
request-id
...
SecureUI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51f8a9c9ac | ||
|
|
bb244ef772 |
@@ -95,8 +95,16 @@ if [[ "$4" == "" ]]; then
|
|||||||
echo "Non GH, local building, no Action runner magic"
|
echo "Non GH, local building, no Action runner magic"
|
||||||
else
|
else
|
||||||
# GH Action, runner
|
# GH Action, runner
|
||||||
cp /io/release-build/xahaud /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4
|
if [[ "$(git rev-parse --abbrev-ref HEAD)" == "release" ]]; then
|
||||||
cp /io/release-build/release.info /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4.releaseinfo
|
echo "building on the release branch... placing it in builds/candidate"
|
||||||
|
mkdir /data/builds/candidate
|
||||||
|
cp /io/release-build/xahaud /data/builds/candidate/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4
|
||||||
|
cp /io/release-build/release.info /data/builds/candidate/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4.releaseinfo
|
||||||
|
else
|
||||||
|
echo "building non-release branch, placing it in builds root"
|
||||||
|
cp /io/release-build/xahaud /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4
|
||||||
|
cp /io/release-build/release.info /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4.releaseinfo
|
||||||
|
fi
|
||||||
echo "Published build to: http://build.xahau.tech/"
|
echo "Published build to: http://build.xahau.tech/"
|
||||||
echo $(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4
|
echo $(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
// If you add an amendment here, then do not forget to increment `numFeatures`
|
// If you add an amendment here, then do not forget to increment `numFeatures`
|
||||||
// in include/xrpl/protocol/Feature.h.
|
// in include/xrpl/protocol/Feature.h.
|
||||||
|
|
||||||
|
XRPL_FEATURE(SecureUI, Supported::yes, VoteBehavior::DefaultNo)
|
||||||
XRPL_FIX (HookMap, Supported::yes, VoteBehavior::DefaultYes)
|
XRPL_FIX (HookMap, Supported::yes, VoteBehavior::DefaultYes)
|
||||||
XRPL_FIX (GuardDepth32, Supported::yes, VoteBehavior::DefaultNo)
|
XRPL_FIX (GuardDepth32, Supported::yes, VoteBehavior::DefaultNo)
|
||||||
XRPL_FEATURE(NamedHooks, Supported::yes, VoteBehavior::DefaultNo)
|
XRPL_FEATURE(NamedHooks, Supported::yes, VoteBehavior::DefaultNo)
|
||||||
|
|||||||
@@ -262,6 +262,7 @@ LEDGER_ENTRY(ltACCOUNT_ROOT, 0x0061, AccountRoot, account, ({
|
|||||||
{sfHookStateScale, soeOPTIONAL},
|
{sfHookStateScale, soeOPTIONAL},
|
||||||
{sfCron, soeOPTIONAL},
|
{sfCron, soeOPTIONAL},
|
||||||
{sfAMMID, soeOPTIONAL},
|
{sfAMMID, soeOPTIONAL},
|
||||||
|
{sfSecureUI, soeOPTIONAL},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
/** A ledger object which contains a list of object identifiers.
|
/** A ledger object which contains a list of object identifiers.
|
||||||
|
|||||||
@@ -293,6 +293,7 @@ TYPED_SFIELD(sfAssetClass, VL, 29)
|
|||||||
TYPED_SFIELD(sfProvider, VL, 30)
|
TYPED_SFIELD(sfProvider, VL, 30)
|
||||||
TYPED_SFIELD(sfMPTokenMetadata, VL, 31)
|
TYPED_SFIELD(sfMPTokenMetadata, VL, 31)
|
||||||
TYPED_SFIELD(sfCredentialType, VL, 32)
|
TYPED_SFIELD(sfCredentialType, VL, 32)
|
||||||
|
TYPED_SFIELD(sfSecureUI, VL, 96)
|
||||||
TYPED_SFIELD(sfHookName, VL, 97)
|
TYPED_SFIELD(sfHookName, VL, 97)
|
||||||
TYPED_SFIELD(sfRemarkValue, VL, 98)
|
TYPED_SFIELD(sfRemarkValue, VL, 98)
|
||||||
TYPED_SFIELD(sfRemarkName, VL, 99)
|
TYPED_SFIELD(sfRemarkName, VL, 99)
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ TRANSACTION(ttACCOUNT_SET, 3, AccountSet, ({
|
|||||||
{sfTickSize, soeOPTIONAL},
|
{sfTickSize, soeOPTIONAL},
|
||||||
{sfNFTokenMinter, soeOPTIONAL},
|
{sfNFTokenMinter, soeOPTIONAL},
|
||||||
{sfHookStateScale, soeOPTIONAL},
|
{sfHookStateScale, soeOPTIONAL},
|
||||||
|
{sfSecureUI, soeOPTIONAL},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
/** This transaction type cancels an existing escrow. */
|
/** This transaction type cancels an existing escrow. */
|
||||||
|
|||||||
@@ -197,6 +197,31 @@ SetAccount::preflight(PreflightContext const& ctx)
|
|||||||
return temMALFORMED;
|
return temMALFORMED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tx.isFieldPresent(sfSecureUI))
|
||||||
|
{
|
||||||
|
if (!ctx.rules.enabled(featureSecureUI))
|
||||||
|
return temMALFORMED;
|
||||||
|
|
||||||
|
Blob ui = tx.getFieldVL(sfSecureUI);
|
||||||
|
|
||||||
|
if (ui.size() == 0)
|
||||||
|
{
|
||||||
|
// this is an unset operation, pass
|
||||||
|
}
|
||||||
|
else if (ui.size() > 4096)
|
||||||
|
{
|
||||||
|
JLOG(j.trace()) << "SecureUI: Too long > 4096 bytes";
|
||||||
|
return temMALFORMED;
|
||||||
|
}
|
||||||
|
else if (!URIToken::validateUTF8(ui))
|
||||||
|
{
|
||||||
|
JLOG(j.trace()) << "SecureUI: Not UTF-8";
|
||||||
|
return temMALFORMED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// valid
|
||||||
|
}
|
||||||
|
|
||||||
return preflight2(ctx);
|
return preflight2(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,6 +724,23 @@ SetAccount::doApply()
|
|||||||
sle->setFieldU16(sfHookStateScale, newScale);
|
sle->setFieldU16(sfHookStateScale, newScale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tx.isFieldPresent(sfSecureUI))
|
||||||
|
{
|
||||||
|
Blob ui = tx.getFieldVL(sfSecureUI);
|
||||||
|
if (ui.size() == 0)
|
||||||
|
{
|
||||||
|
// unset operation
|
||||||
|
if (sle->isFieldPresent(sfSecureUI))
|
||||||
|
sle->makeFieldAbsent(sfSecureUI);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// set operation
|
||||||
|
sle->setFieldVL(sfSecureUI, std::move(ui));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ctx_.view().update(sle);
|
ctx_.view().update(sle);
|
||||||
|
|
||||||
return tesSUCCESS;
|
return tesSUCCESS;
|
||||||
|
|||||||
Reference in New Issue
Block a user