本文整理汇总了C++中LogPrintf函数的典型用法代码示例。如果您正苦于以下问题:C++ LogPrintf函数的具体用法?C++ LogPrintf怎么用?C++ LogPrintf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LogPrintf函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateWallet
/* Update our model of the wallet incrementally, to synchronize our model of the wallet
with that of the core.
Call with transaction that was added, removed or changed.
*/
void updateWallet(const uint256 &hash, int status)
{
//LogPrintf("updateWallet %s %i\n", hash.ToString().c_str(), status);
{
LOCK2(cs_main, wallet->cs_wallet);
// Find transaction in wallet
std::map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(hash);
bool inWallet = mi != wallet->mapWallet.end();
// Find bounds of this transaction in model
QList<TransactionRecord>::iterator lower = qLowerBound(
cachedWallet.begin(), cachedWallet.end(), hash, TxLessThan());
QList<TransactionRecord>::iterator upper = qUpperBound(
cachedWallet.begin(), cachedWallet.end(), hash, TxLessThan());
int lowerIndex = (lower - cachedWallet.begin());
int upperIndex = (upper - cachedWallet.begin());
bool inModel = (lower != upper);
// Determine whether to show transaction or not
bool showTransaction = (inWallet && TransactionRecord::showTransaction(mi->second));
if (status == CT_UPDATED)
{
if (showTransaction && !inModel)
status = CT_NEW; /* Not in model, but want to show, treat as new */
if (!showTransaction && inModel)
status = CT_DELETED; /* In model, but want to hide, treat as deleted */
};
LogPrintf(" inWallet=%i inModel=%i Index=%i-%i showTransaction=%i derivedStatus=%i\n",
inWallet, inModel, lowerIndex, upperIndex, showTransaction, status);
switch(status)
{
case CT_NEW:
if(inModel)
{
LogPrintf("Warning: updateWallet: Got CT_NEW, but transaction is already in model\n");
break;
}
if(!inWallet)
{
LogPrintf("Warning: updateWallet: Got CT_NEW, but transaction is not in wallet\n");
break;
}
if(showTransaction)
{
// Added -- insert at the right position
QList<TransactionRecord> toInsert =
TransactionRecord::decomposeTransaction(wallet, mi->second);
if(!toInsert.isEmpty()) /* only if something to insert */
{
parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex+toInsert.size()-1);
int insert_idx = lowerIndex;
foreach(const TransactionRecord &rec, toInsert)
{
cachedWallet.insert(insert_idx, rec);
insert_idx += 1;
}
parent->endInsertRows();
}
}
break;
case CT_DELETED:
if(!inModel)
{
LogPrintf("Warning: updateWallet: Got CT_DELETED, but transaction is not in model\n");
break;
}
// Removed -- remove entire transaction from table
parent->beginRemoveRows(QModelIndex(), lowerIndex, upperIndex-1);
cachedWallet.erase(lower, upper);
parent->endRemoveRows();
break;
case CT_UPDATED:
// Miscellaneous updates -- nothing to do, status update will take care of this, and is only computed for
// visible transactions.
if (inWallet && mi->second.ForceUpdate())
{
parent->beginRemoveRows(QModelIndex(), lowerIndex, upperIndex-1);
cachedWallet.erase(lower, upper);
parent->endRemoveRows();
QList<TransactionRecord> toInsert =
TransactionRecord::decomposeTransaction(wallet, mi->second);
if(!toInsert.isEmpty()) /* only if something to insert */
{
parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex+toInsert.size()-1);
int insert_idx = lowerIndex;
foreach(const TransactionRecord &rec, toInsert)
{
cachedWallet.insert(insert_idx, rec);
insert_idx += 1;
}
示例2: generateRingSignatureAB
int generateRingSignatureAB(data_chunk &keyImage, uint256 &txnHash, int nRingSize, int nSecretOffset, ec_secret secret, const uint8_t *pPubkeys, data_chunk &sigC, uint8_t *pSigS)
{
// https://bitcointalk.org/index.php?topic=972541.msg10619684
if (fDebugRingSig)
LogPrintf("%s: Ring size %d.\n", __func__, nRingSize);
assert(nRingSize < 200);
RandAddSeedPerfmon();
memset(pSigS, 0, EC_SECRET_SIZE * nRingSize);
int rv = 0;
int nBytes;
uint256 tmpPkHash;
uint256 tmpHash;
uint8_t tempData[66]; // hold raw point data to hash
ec_secret sAlpha;
if (0 != GenerateRandomSecret(sAlpha))
return errorN(1, "%s: GenerateRandomSecret failed.", __func__);
CHashWriter ssPkHash(SER_GETHASH, PROTOCOL_VERSION);
CHashWriter ssCjHash(SER_GETHASH, PROTOCOL_VERSION);
uint256 test;
for (int i = 0; i < nRingSize; ++i)
{
ssPkHash.write((const char*)&pPubkeys[i * EC_COMPRESSED_SIZE], EC_COMPRESSED_SIZE);
if (i == nSecretOffset)
continue;
int k;
// NOTE: necessary to clamp?
for (k = 0; k < 32; ++k)
{
if (1 != RAND_bytes(&pSigS[i * EC_SECRET_SIZE], 32))
return errorN(1, "%s: RAND_bytes ERR_get_error %u.", __func__, ERR_get_error());
memcpy(test.begin(), &pSigS[i * EC_SECRET_SIZE], 32);
if (test > MIN_SECRET && test < MAX_SECRET)
break;
};
if (k > 31)
return errorN(1, "%s: Failed to generate a valid key.", __func__);
};
tmpPkHash = ssPkHash.GetHash();
BN_CTX_start(bnCtx);
BIGNUM *bnT = BN_CTX_get(bnCtx);
BIGNUM *bnT2 = BN_CTX_get(bnCtx);
BIGNUM *bnS = BN_CTX_get(bnCtx);
BIGNUM *bnC = BN_CTX_get(bnCtx);
BIGNUM *bnCj = BN_CTX_get(bnCtx);
BIGNUM *bnA = BN_CTX_get(bnCtx);
EC_POINT *ptKi = NULL;
EC_POINT *ptPk = NULL;
EC_POINT *ptT1 = NULL;
EC_POINT *ptT2 = NULL;
EC_POINT *ptT3 = NULL;
EC_POINT *ptT4 = NULL;
if ( !(ptKi = EC_POINT_new(ecGrp))
|| !(ptPk = EC_POINT_new(ecGrp))
|| !(ptT1 = EC_POINT_new(ecGrp))
|| !(ptT2 = EC_POINT_new(ecGrp))
|| !(ptT3 = EC_POINT_new(ecGrp))
|| !(ptT4 = EC_POINT_new(ecGrp)))
{
LogPrintf("%s: EC_POINT_new failed.\n", __func__);
rv = 1; goto End;
};
// get keyimage as point
if (!EC_POINT_oct2point(ecGrp, ptKi, &keyImage[0], EC_COMPRESSED_SIZE, bnCtx))
{
LogPrintf("%s: extract ptKi failed.\n", __func__);
rv = 1; goto End;
};
// c_{j+1} = h(P_1,...,P_n,alpha*G,alpha*H(P_j))
if (!bnA || !(BN_bin2bn(&sAlpha.e[0], EC_SECRET_SIZE, bnA)))
{
LogPrintf("%s: BN_bin2bn failed.\n", __func__);
rv = 1; goto End;
};
// ptT1 = alpha * G
if (!EC_POINT_mul(ecGrp, ptT1, bnA, NULL, NULL, bnCtx))
{
LogPrintf("%s: EC_POINT_mul failed.\n", __func__);
rv = 1; goto End;
};
//.........这里部分代码省略.........
示例3: InitMessage
static void InitMessage(const std::string &message)
{
LogPrintf("init message: %s\n", message);
}
示例4: verifyRingSignatureAB
int verifyRingSignatureAB(data_chunk &keyImage, uint256 &txnHash, int nRingSize, const uint8_t *pPubkeys, const data_chunk &sigC, const uint8_t *pSigS)
{
// https://bitcointalk.org/index.php?topic=972541.msg10619684
// forall_{i=1..n} compute e_i=s_i*G+c_i*P_i and E_i=s_i*H(P_i)+c_i*I_j and c_{i+1}=h(P_1,...,P_n,e_i,E_i)
// check c_{n+1}=c_1
if (fDebugRingSig)
{
//LogPrintf("%s size %d\n", __func__, nRingSize); // happens often
};
if (sigC.size() != EC_SECRET_SIZE)
return errorN(1, "%s: sigC size != EC_SECRET_SIZE.", __func__);
if (keyImage.size() != EC_COMPRESSED_SIZE)
return errorN(1, "%s: keyImage size != EC_COMPRESSED_SIZE.", __func__);
int rv = 0;
uint256 tmpPkHash;
uint256 tmpHash;
uint8_t tempData[66]; // hold raw point data to hash
CHashWriter ssPkHash(SER_GETHASH, PROTOCOL_VERSION);
CHashWriter ssCjHash(SER_GETHASH, PROTOCOL_VERSION);
for (int i = 0; i < nRingSize; ++i)
{
ssPkHash.write((const char*)&pPubkeys[i * EC_COMPRESSED_SIZE], EC_COMPRESSED_SIZE);
};
tmpPkHash = ssPkHash.GetHash();
BN_CTX_start(bnCtx);
BIGNUM *bnC = BN_CTX_get(bnCtx);
BIGNUM *bnC1 = BN_CTX_get(bnCtx);
BIGNUM *bnT = BN_CTX_get(bnCtx);
BIGNUM *bnS = BN_CTX_get(bnCtx);
EC_POINT *ptKi = NULL;
EC_POINT *ptT1 = NULL;
EC_POINT *ptT2 = NULL;
EC_POINT *ptT3 = NULL;
EC_POINT *ptPk = NULL;
EC_POINT *ptSi = NULL;
if ( !(ptKi = EC_POINT_new(ecGrp))
|| !(ptT1 = EC_POINT_new(ecGrp))
|| !(ptT2 = EC_POINT_new(ecGrp))
|| !(ptT3 = EC_POINT_new(ecGrp))
|| !(ptPk = EC_POINT_new(ecGrp))
|| !(ptSi = EC_POINT_new(ecGrp)))
{
LogPrintf("%s: EC_POINT_new failed.\n", __func__);
rv = 1; goto End;
};
// get keyimage as point
if (!EC_POINT_oct2point(ecGrp, ptKi, &keyImage[0], EC_COMPRESSED_SIZE, bnCtx))
{
LogPrintf("%s: extract ptKi failed.\n", __func__);
rv = 1; goto End;
};
if (!bnC1 || !BN_bin2bn(&sigC[0], EC_SECRET_SIZE, bnC1))
{
LogPrintf("%s: BN_bin2bn failed.\n", __func__);
rv = 1; goto End;
};
if (!BN_copy(bnC, bnC1))
{
LogPrintf("%s: BN_copy failed.\n", __func__);
rv = 1; goto End;
};
for (int i = 0; i < nRingSize; ++i)
{
if (!bnS || !(BN_bin2bn(&pSigS[i * EC_SECRET_SIZE], EC_SECRET_SIZE, bnS)))
{
LogPrintf("%s: BN_bin2bn failed.\n", __func__);
rv = 1; goto End;
};
// ptT2 <- pk
if (!EC_POINT_oct2point(ecGrp, ptPk, &pPubkeys[i * EC_COMPRESSED_SIZE], EC_COMPRESSED_SIZE, bnCtx))
{
LogPrintf("%s: EC_POINT_oct2point failed.\n", __func__);
rv = 1; goto End;
};
// ptT1 = e_i=s_i*G+c_i*P_i
if (!EC_POINT_mul(ecGrp, ptT1, bnS, ptPk, bnC, bnCtx))
{
LogPrintf("%s: EC_POINT_mul failed.\n", __func__);
rv = 1; goto End;
};
if (!(EC_POINT_point2oct(ecGrp, ptT1, POINT_CONVERSION_COMPRESSED, &tempData[0], 33, bnCtx) == (int) EC_COMPRESSED_SIZE))
{
//.........这里部分代码省略.........
示例5: generateRingSignature
int generateRingSignature(data_chunk &keyImage, uint256 &txnHash, int nRingSize, int nSecretOffset, ec_secret secret, const uint8_t *pPubkeys, uint8_t *pSigc, uint8_t *pSigr)
{
if (fDebugRingSig)
LogPrintf("%s: Ring size %d.\n", __func__, nRingSize);
int rv = 0;
int nBytes;
BN_CTX_start(bnCtx);
BIGNUM *bnKS = BN_CTX_get(bnCtx);
BIGNUM *bnK1 = BN_CTX_get(bnCtx);
BIGNUM *bnK2 = BN_CTX_get(bnCtx);
BIGNUM *bnT = BN_CTX_get(bnCtx);
BIGNUM *bnH = BN_CTX_get(bnCtx);
BIGNUM *bnSum = BN_CTX_get(bnCtx);
EC_POINT *ptT1 = NULL;
EC_POINT *ptT2 = NULL;
EC_POINT *ptT3 = NULL;
EC_POINT *ptPk = NULL;
EC_POINT *ptKi = NULL;
EC_POINT *ptL = NULL;
EC_POINT *ptR = NULL;
uint8_t tempData[66]; // hold raw point data to hash
uint256 commitHash;
ec_secret scData1, scData2;
CHashWriter ssCommitHash(SER_GETHASH, PROTOCOL_VERSION);
ssCommitHash << txnHash;
// zero signature
memset(pSigc, 0, EC_SECRET_SIZE * nRingSize);
memset(pSigr, 0, EC_SECRET_SIZE * nRingSize);
// ks = random 256 bit int mod P
if (GenerateRandomSecret(scData1)
&& (rv = errorN(1, "%s: GenerateRandomSecret failed.", __func__)))
goto End;
if (!bnKS || !(BN_bin2bn(&scData1.e[0], EC_SECRET_SIZE, bnKS)))
{
LogPrintf("%s: BN_bin2bn failed.\n", __func__);
rv = 1; goto End;
};
// zero sum
if (!bnSum || !(BN_zero(bnSum)))
{
LogPrintf("%s: BN_zero failed.\n", __func__);
rv = 1; goto End;
};
if ( !(ptT1 = EC_POINT_new(ecGrp))
|| !(ptT2 = EC_POINT_new(ecGrp))
|| !(ptT3 = EC_POINT_new(ecGrp))
|| !(ptPk = EC_POINT_new(ecGrp))
|| !(ptKi = EC_POINT_new(ecGrp))
|| !(ptL = EC_POINT_new(ecGrp))
|| !(ptR = EC_POINT_new(ecGrp)))
{
LogPrintf("%s: EC_POINT_new failed.\n", __func__);
rv = 1; goto End;
};
// get keyimage as point
if (!(bnT = BN_bin2bn(&keyImage[0], EC_COMPRESSED_SIZE, bnT))
|| !(ptKi) || !(ptKi = EC_POINT_bn2point(ecGrp, bnT, ptKi, bnCtx)))
{
LogPrintf("%s: extract ptKi failed.\n", __func__);
rv = 1; goto End;
};
for (int i = 0; i < nRingSize; ++i)
{
if (i == nSecretOffset)
{
// k = random 256 bit int mod P
// L = k * G
// R = k * HashToEC(PKi)
if (!EC_POINT_mul(ecGrp, ptL, bnKS, NULL, NULL, bnCtx))
{
LogPrintf("%s: EC_POINT_mul failed.\n", __func__);
rv = 1; goto End;
};
if (hashToEC(&pPubkeys[i * EC_COMPRESSED_SIZE], EC_COMPRESSED_SIZE, bnT, ptT1) != 0)
{
LogPrintf("%s: hashToEC failed.\n", __func__);
rv = 1; goto End;
};
if (!EC_POINT_mul(ecGrp, ptR, NULL, ptT1, bnKS, bnCtx))
{
LogPrintf("%s: EC_POINT_mul failed.\n", __func__);
rv = 1; goto End;
};
//.........这里部分代码省略.........
示例6: HrShowNetAdapters
//+---------------------------------------------------------------------------
//
// Function: HrShowNetAdapters
//
// Purpose: Display all installed net class devices using Setup API
//
// Arguments: None
//
// Returns: S_OK on success, otherwise an error code
//
// Notes:
//
HRESULT HrShowNetAdapters()
{
#define MAX_COMP_INSTID 4096
#define MAX_COMP_DESC 4096
HRESULT hr=S_OK;
HDEVINFO hdi;
DWORD dwIndex=0;
SP_DEVINFO_DATA deid;
BOOL fSuccess=FALSE;
DWORD cchRequiredSize;
TCHAR szCompInstanceId[MAX_COMP_INSTID];
TCHAR szCompDescription[MAX_COMP_DESC];
DWORD dwRegType;
BOOL fFound=FALSE;
// get a list of all devices of class 'GUID_DEVCLASS_NET'
hdi = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
if (INVALID_HANDLE_VALUE != hdi)
{
// enumerate over each device
while (deid.cbSize = sizeof(SP_DEVINFO_DATA),
SetupDiEnumDeviceInfo(hdi, dwIndex, &deid))
{
dwIndex++;
// the right thing to do here would be to call this function
// to get the size required to hold the instance ID and then
// to call it second time with a buffer large enough for that size.
// However, that would tend to obscure the control flow in
// the sample code. Lets keep things simple by keeping the
// buffer large enough.
// get the device instance ID
fSuccess = SetupDiGetDeviceInstanceId(hdi, &deid,
szCompInstanceId,
MAX_COMP_INSTID, NULL);
if (fSuccess)
{
// get the description for this instance
fSuccess =
SetupDiGetDeviceRegistryProperty(hdi, &deid,
SPDRP_DEVICEDESC,
&dwRegType,
(BYTE*) szCompDescription,
MAX_COMP_DESC,
NULL);
if (fSuccess)
{
if (!fFound)
{
fFound = TRUE;
LogPrintf(_T("Instance ID\tDescription\n"));
LogPrintf(_T("-----------\t-----------\n"));
}
LogPrintf(_T("%s\t%s\n"),
szCompInstanceId, szCompDescription);
}
}
}
// release the device info list
SetupDiDestroyDeviceInfoList(hdi);
}
if (!fSuccess)
{
DWORD dwError = GetLastError();
hr = HRESULT_FROM_WIN32(dwError);
}
return hr;
}
示例7: HrShowBindingPath
//+---------------------------------------------------------------------------
//
// Function: HrShowBindingPath
//
// Purpose: Display components of a binding path in the format:
// foo -> bar -> adapter
//
// Arguments:
// pncbp [in] pointer to INetCfgBindingPath object
//
// Returns: S_OK on success, otherwise an error code
//
// Notes:
//
HRESULT HrShowBindingPath(IN INetCfgBindingPath* pncbp)
{
HRESULT hr=S_OK;
INetCfgBindingInterface* pncbi;
INetCfgComponent* pncc = NULL;
BOOL fFirstInterface=TRUE;
PWSTR szComponentId;
while (SUCCEEDED(hr) &&
(S_OK == (hr = HrGetNextBindingInterface(pncbp, &pncbi))))
{
// for the first (top) interface we need to get the upper as well as
// the lower component. for other interfaces we need to get
// only the lower component.
if (fFirstInterface)
{
fFirstInterface = FALSE;
hr = pncbi->GetUpperComponent(&pncc);
if (SUCCEEDED(hr))
{
// get id so that we can display it
//
// for readability of the output, we have used the GetId
// function. For non net class components, this
// does not pose a problem. In case of net class components,
// there may be more than one net adapters of the same type
// in which case, GetId will return the same string. This will
// make it impossible to distinguish between two binding
// paths that end in two distinct identical cards. In such case,
// it may be better to use the GetInstanceGuid function because
// it will return unique GUID for each instance of an adapter.
//
hr = pncc->GetId(&szComponentId);
ReleaseObj(pncc);
if (SUCCEEDED(hr))
{
// LogPrintf(szComponentId);
CoTaskMemFree(szComponentId);
}
}
}
if (SUCCEEDED(hr))
{
hr = pncbi->GetLowerComponent(&pncc);
if (SUCCEEDED(hr))
{
hr = pncc->GetId(&szComponentId);
if (SUCCEEDED(hr))
{
LogPrintf(_T(" -> %s"), szComponentId);
CoTaskMemFree(szComponentId);
}
ReleaseObj(pncc);
}
}
ReleaseObj(pncbi);
}
LogPrintf(_T("\n"));
if (hr == S_FALSE)
{
hr = S_OK;
}
return hr;
}
示例8: CaptDisMain
int CaptDisMain(int argc, char *argv[])
{
char ifile[RLTM_POL_PATH_DIM];
char dirpath[RLTM_POL_PATH_DIM];
char tmp[RLTM_POL_PATH_DIM];
char errbuf[PCAP_ERRBUF_SIZE];
char intrf[RLTM_POL_PATH_DIM], filter_app[RLTM_POL_PATH_DIM];
struct bpf_program filter; /* The compiled filter */
pcap_t *cap = NULL;
char *param;
int ret;
struct pcap_ref ref;
FILE *fp;
bool end, ses_id, pol_id;
struct pcap_pkthdr *pkt_header;
const u_char *pkt_data;
static time_t tm = 0;
struct pcap_file_header fh;
end = FALSE;
ses_id = FALSE;
pol_id = FALSE;
savepcap = 0;
/* pcapfile protocol id */
pol_prot_id = ProtId("pol");
if (pol_prot_id == -1) {
return -1;
}
/* serial number of packet */
pkt_serial = 1;
/* interace & filter % pol dir name*/
intrf[0] = '\0';
filter_app[0] = '\0';
dirpath[0] = '\0';
ret = RltmPolParam(argc, argv, intrf, filter_app, dirpath);
if (ret != 0) {
return -1;
}
/* check name dir */
if (dirpath[0] == '\0') {
return -1;
}
/* read pol info */
sprintf(ifile, "%s/%s", dirpath, RLTM_POL_INIT_SESSION_FILE);
fp = fopen(ifile, "r");
if (fp == NULL) {
LogPrintf(LV_ERROR, "Pol info file (%s) not present!", ifile);
return -1;
}
while (fgets(tmp, CFG_LINE_MAX_SIZE, fp) != NULL) {
/* check if line is a comment */
if (!CfgParIsComment(tmp)) {
param = strstr(tmp, RLTM_POL_SESSION_ID);
if (param != NULL) {
ret = sscanf(param, RLTM_POL_SESSION_ID"=%lu", &ref.ses_id);
if (ret == 1) {
ses_id = TRUE;
}
}
param = strstr(tmp, RLTM_POL_ID);
if (param != NULL) {
ret = sscanf(param, RLTM_POL_ID"=%lu", &ref.pol_id);
if (ret == 1) {
pol_id = TRUE;
}
}
}
}
fclose(fp);
remove(ifile);
if (ses_id == FALSE || pol_id == FALSE) {
LogPrintf(LV_ERROR, "Pol info file (%s) incomplete!", tmp);
return -1;
}
errbuf[sizeof(errbuf) - 1] = '\0';
errbuf[0] = '\0';
/* open device in promiscuous mode */
#ifdef HAVE_PCAP_CREATE
cap = pcap_create(intrf, errbuf);
#else
cap = pcap_open_live(intrf, 102400, 1, 0, errbuf);
#endif
if (cap == NULL) {
printf("Error: %s\n", errbuf);
return -1;
}
else {
#ifdef HAVE_PCAP_CREATE
ret = pcap_set_snaplen(cap, 102400);
if (ret != 0) {
//.........这里部分代码省略.........
示例9: iteratorOf
bool OsmAnd::ResolvedMapStyle_P::mergeAndResolveRulesets()
{
const auto builtinValueDefs = MapStyleBuiltinValueDefinitions::get();
for (auto rulesetTypeIdx = 0u; rulesetTypeIdx < MapStyleRulesetTypesCount; rulesetTypeIdx++)
{
QHash<TagValueId, std::shared_ptr<Rule> > ruleset;
// Process styles chain in direct order. This will allow to process overriding correctly
auto citUnresolvedMapStyle = iteratorOf(owner->unresolvedMapStylesChain);
while (citUnresolvedMapStyle.hasNext())
{
const auto& unresolvedMapStyle = citUnresolvedMapStyle.next();
const auto& unresolvedRuleset = unresolvedMapStyle->rulesets[rulesetTypeIdx];
auto itUnresolvedByTag = iteratorOf(unresolvedRuleset);
while (itUnresolvedByTag.hasNext())
{
const auto& unresolvedByTagEntry = itUnresolvedByTag.next();
const auto& tag = unresolvedByTagEntry.key();
const auto& unresolvedByTag = unresolvedByTagEntry.value();
const auto tagId = resolveStringIdInLUT(tag);
auto itUnresolvedByValue = iteratorOf(unresolvedByTag);
while (itUnresolvedByValue.hasNext())
{
const auto& unresolvedByValueEntry = itUnresolvedByValue.next();
const auto& value = unresolvedByValueEntry.key();
const auto& unresolvedRule = unresolvedByValueEntry.value();
const auto valueId = resolveStringIdInLUT(value);
const auto tagValueId = TagValueId::compose(tagId, valueId);
auto& topLevelRule = ruleset[tagValueId];
// Create top-level rule if not yet created
if (!topLevelRule)
{
topLevelRule.reset(new Rule(static_cast<MapStyleRulesetType>(rulesetTypeIdx)));
topLevelRule->rootNode->values[builtinValueDefs->id_INPUT_TAG] =
ResolvedValue::fromConstantValue(MapStyleConstantValue::fromSimpleUInt(tagId));
topLevelRule->rootNode->values[builtinValueDefs->id_INPUT_VALUE] =
ResolvedValue::fromConstantValue(MapStyleConstantValue::fromSimpleUInt(valueId));
}
const auto resolvedRuleNode = resolveRuleNode(unresolvedRule->rootNode);
if (!resolvedRuleNode)
{
LogPrintf(LogSeverityLevel::Warning,
"One of rules for '%s':'%s' was ignored due to failure to resolve it",
qPrintable(tag),
qPrintable(value));
return false;
}
topLevelRule->rootNode->oneOfConditionalSubnodes.append(resolvedRuleNode->oneOfConditionalSubnodes);
}
}
_rulesets[rulesetTypeIdx] = copyAs< TagValueId, std::shared_ptr<const Rule> >(ruleset);
}
}
return true;
}
示例10: tr
void ManageNamesPage::on_submitNameButton_clicked()
{
if (!walletModel)
return;
QString name = ui->registerName->text();
bool avail = walletModel->nameAvailable(name);
if (!avail)
{
QMessageBox::warning(this, tr("Name registration"), tr("Name not available"));
ui->registerName->setFocus();
return;
}
QString msg;
if (name.startsWith("d/"))
msg = tr("Are you sure you want to register domain name %1, which "
"corresponds to domain %2? <br><br> NOTE: If your wallet is locked, you will be prompted "
"to unlock it in 12 blocks.").arg(name).arg(name.mid(2) + ".bit");
else
msg = tr("Are you sure you want to register non-domain name %1? <br><br>"
"NOTE: If your wallet is locked, you will be prompted "
"to unlock it in 12 blocks.").arg(name);
if (QMessageBox::Yes != QMessageBox::question(this, tr("Confirm name registration"),
msg,
QMessageBox::Yes | QMessageBox::Cancel,
QMessageBox::Cancel))
{
return;
}
WalletModel::UnlockContext ctx(walletModel->requestUnlock());
if (!ctx.isValid())
return;
QString err_msg;
std::string strName = name.toStdString();
try
{
NameNewReturn res = walletModel->nameNew(name);
if (res.ok)
{
// save pending name firstupdate data ... this gets
// picked up after the config name dialog is accepted
pendingNameFirstUpdate[strName] = res;
// reset UI text
ui->registerName->setText("d/");
ui->submitNameButton->setDefault(true);
int newRowIndex;
// FIXME: CT_NEW may have been sent from nameNew (via transaction).
// Currently updateEntry is modified so it does not complain
model->updateEntry(name, "", NameTableEntry::NAME_NEW, CT_NEW, &newRowIndex);
ui->tableView->selectRow(newRowIndex);
ui->tableView->setFocus();
ConfigureNameDialog dlg(platformStyle, name, "", true, this);
dlg.setModel(walletModel);
if (dlg.exec() == QDialog::Accepted)
{
LOCK(cs_main);
if (pendingNameFirstUpdate.count(strName) != 0)
{
model->updateEntry(name, dlg.getReturnData(), NameTableEntry::NAME_NEW, CT_UPDATED);
}
else
{
// name_firstupdate could have been sent, while the user was editing the value
// Do nothing
}
}
return;
}
err_msg = QString(res.err_msg.c_str());
}
catch (std::exception& e)
{
err_msg = e.what();
LogPrintf("ManageNamesPage::on_submitNameButton_clicked; %s", err_msg.toStdString().c_str());
}
if (err_msg == "ABORTED")
return;
QMessageBox::warning(this, tr("Name registration failed"), err_msg);
}
示例11: RltmPolDissector
static void RltmPolDissector(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes)
{
struct pcap_ref *ref = (struct pcap_ref *)user;
packet *pkt;
static time_t tm = 0;
int offset;
struct timespec to;
struct pcap_pkthdr pckt_header;
size_t nwrt, wcnt;
pkt = PktNew();
ref->cnt++;
pkt->raw = DMemMalloc(h->caplen+sizeof(unsigned long)*2+sizeof(char *)+sizeof(unsigned long)*2);
memcpy(pkt->raw, bytes, h->caplen);
pkt->raw_len = h->caplen;
offset = 0;
*((unsigned long *)&(pkt->raw[pkt->raw_len])) = ref->dlt;
offset += sizeof(unsigned long);
*((unsigned long *)&(pkt->raw[pkt->raw_len+offset])) = ref->cnt;
offset += sizeof(unsigned long);
if (savepcap)
*((char **)&(pkt->raw[pkt->raw_len+offset])) = pcap_deb;
else
*((char **)&(pkt->raw[pkt->raw_len+offset])) = "Real Time";
offset += sizeof(char *);
*((unsigned long *)&(pkt->raw[pkt->raw_len+offset])) = ref->ses_id;
offset += sizeof(unsigned long);
*((unsigned long *)&(pkt->raw[pkt->raw_len+offset])) = ref->pol_id;
pkt->cap_sec = h->ts.tv_sec;
pkt->cap_usec = h->ts.tv_usec;
pkt->serial = pkt_serial;
/* crash info */
crash_pkt_cnt = ref->cnt;
/* decode */
/* save packet */
if (fp_pcap != NULL) {
pckt_header.caplen = pkt->raw_len;
pckt_header.len = pkt->raw_len;
pckt_header.ts.tv_sec = pkt->cap_sec;
pckt_header.ts.tv_usec = pkt->cap_usec;
wcnt = 0;
do {
nwrt = fwrite(((char *)&pckt_header)+wcnt, 1, sizeof(struct pcap_pkthdr)-wcnt, fp_pcap);
if (nwrt != -1)
wcnt += nwrt;
else
break;
} while (wcnt != sizeof(struct pcap_pkthdr));
wcnt = 0;
do {
nwrt = fwrite(((char *)pkt->raw)+wcnt, 1, pkt->raw_len-wcnt, fp_pcap);
if (nwrt != -1)
wcnt += nwrt;
else
break;
} while (wcnt != pkt->raw_len);
}
ProtDissec(pol_prot_id, pkt);
FlowSetGblTime(h->ts.tv_sec);
/* next serial number */
pkt_serial++;
if (time(NULL) > tm) {
tm = time(NULL) + 5;
ReportSplash();
while (DispatchPeiPending() > DISP_PEI_MAX_QUEUE) {
to.tv_sec = 2;
to.tv_nsec = 1;
/* wait some time */
while (nanosleep(&to, &to) != 0)
;
LogPrintf(LV_WARNING, "Possible data loss!");
ReportSplash();
}
}
}
示例12: LogPrintf
static packet *TelnetDissector(int flow_id)
{
packet *pkt;
const pstack_f *tcp, *ip;
ftval lost, ip_host, port;
unsigned short port_host;
bool ipv6;
long offset, len, size;
char host[TELNET_FILENAME_PATH_SIZE];
char user[TELNET_BUF_SIZE];
char password[TELNET_BUF_SIZE];
char cmd_file[TELNET_FILENAME_PATH_SIZE];
FILE *fp;
char *buf;
pei *ppei;
time_t cap_sec, end_cap;
int cntpkt;
LogPrintf(LV_DEBUG, "Telnet id: %d", flow_id);
cntpkt = 0;
/* init (this for each telnet stream) */
user[0] = '\0';
password[0] = '\0';
sprintf(cmd_file, "%s/%s/telnet_%lu_%p_%i.txt", ProtTmpDir(), TELNET_TMP_DIR, time(NULL), cmd_file, incr);
incr++;
fp = fopen(cmd_file, "w");
ipv6 = FALSE;
buf = DMemMalloc(TELNET_LOGIN_SIZE);
buf[0] = '\0';
len = 0;
/* ip version and number */
tcp = FlowStack(flow_id); /* tcp frame */
ip = ProtGetNxtFrame(tcp); /* ip/ipv6 frame */
ProtGetAttr(tcp, port_dst_id, &port);
port_host = port.uint16;
if (ProtFrameProtocol(ip) == ipv6_id) {
ipv6 = TRUE;
}
if (ipv6 == FALSE) {
ProtGetAttr(ip, ip_dst_id, &ip_host);
if (DnsDbSearch(&(ip_host), FT_IPv4, host, TELNET_FILENAME_PATH_SIZE) != 0) {
FTString(&(ip_host), FT_IPv4, host);
}
}
else {
ProtGetAttr(ip, ipv6_dst_id, &ip_host);
if (DnsDbSearch(&(ip_host), FT_IPv6, host, TELNET_FILENAME_PATH_SIZE) != 0) {
FTString(&(ip_host), FT_IPv6, host);
}
}
sprintf(host+strlen(host), ":%i", port_host);
/* first packet */
pkt = FlowGetPkt(flow_id);
if (pkt != NULL) {
/* pei definition */
PeiNew(&ppei, telnet_id);
PeiCapTime(ppei, pkt->cap_sec);
PeiMarker(ppei, pkt->serial);
PeiStackFlow(ppei, tcp);
cap_sec = pkt->cap_sec;
}
while (pkt != NULL) {
cntpkt++;
end_cap = pkt->cap_sec;
offset = 0;
/* check if there are packet lost */
ProtGetAttr(pkt->stk, lost_id, &lost);
//ProtStackFrmDisp(pkt->stk, TRUE); /* this function display the structure of packet stack of this packet */
if (lost.uint8 == FALSE && pkt->len != 0) {
/* no packet lost and packet with data */
/* skip the telnet commands, we are interested only in readable data */
#warning "to do: reassemble telnet message from many tcp packets"
offset = TelnetSkipCommand((unsigned char *)(pkt->data), (unsigned char *)(pkt->data + pkt->len));
if (offset < pkt->len) {
TelnetConvertZeros((unsigned char *)(pkt->data + offset), (unsigned char *)(pkt->data + pkt->len));
size = pkt->len - offset;
fwrite(pkt->data + offset, 1, size, fp);
if (len + size < TELNET_LOGIN_SIZE) {
memcpy(buf+len, pkt->data + offset, size);
len += size;
buf[len] = '\0';
}
}
}
else if (lost.uint8) {
fprintf(fp, "-----> xplico: packets lost (size: %lub) <-----", pkt->len);
}
/* new/next packet */
PktFree(pkt);
pkt = FlowGetPkt(flow_id);
}
/* search login */
buf[TELNET_LOGIN_SIZE - 1] = '\0';
TelnetLogin(buf, user, password, TELNET_BUF_SIZE);
//.........这里部分代码省略.........
示例13: TelnetLogin
static int TelnetLogin(char *buf, char *user, char *pswd, int bsize)
{
char *tmp, *lgn;
long size, i;
lgn = strcasestr(buf, "login:");
if (lgn != NULL && strchr(lgn, '\r') != NULL) {
/* last login */
tmp = lgn;
while (tmp != NULL) {
tmp = strcasestr(tmp + 1, "login:");
if (tmp != NULL && tmp[-1] != ' ' && tmp[-1] != '\n') {
if (strcasestr(tmp, "Password:") != NULL)
lgn = tmp;
else
tmp = NULL;
}
}
lgn += 6;
tmp = strchr(lgn, '\r');
size = tmp - lgn;
if (bsize < size) {
LogPrintf(LV_WARNING, "user name error: %s", lgn);
size = bsize - 1;
}
memcpy(user, lgn, size);
user[size] = '\0';
/* password */
lgn = strcasestr(lgn, "Password:");
if (lgn != NULL) {
lgn += 9;
tmp = strchr(lgn, '\r');
size = tmp - lgn;
if (bsize < size) {
LogPrintf(LV_WARNING, "password error: %s", lgn);
size = bsize - 1;
}
memcpy(pswd, lgn, size);
pswd[size] = '\0';
}
/* echo remove */
size = strlen(user);
if ((size%2 == 0 && user[0] == ' ') || size%2) {
tmp = user;
if (user[0] == ' ') {
tmp++;
size--;
}
while (size) {
if (tmp[0] != tmp[1])
break;
tmp += 2;
size -=2;
}
if (size == 0) {
/* echo remove */
size = strlen(user)/2;
tmp = user;
i = 0;
while (i != size) {
tmp[i] = user[i*2+1];
i++;
}
tmp[i] = '\0';
}
}
}
return 0;
}
示例14: ThreadSendAlert
void ThreadSendAlert(CConnman& connman)
{
if (!mapArgs.count("-sendalert") && !mapArgs.count("-printalert"))
return;
// Wait one minute so we get well connected. If we only need to print
// but not to broadcast - do this right away.
if (mapArgs.count("-sendalert"))
MilliSleep(60*1000);
//
// Alerts are relayed around the network until nRelayUntil, flood
// filling to every node.
// After the relay time is past, new nodes are told about alerts
// when they connect to peers, until either nExpiration or
// the alert is cancelled by a newer alert.
// Nodes never save alerts to disk, they are in-memory-only.
//
CAlert alert;
alert.nRelayUntil = GetAdjustedTime() + 15 * 60;
alert.nExpiration = GetAdjustedTime() + 30 * 60 * 60;
alert.nID = 1; // keep track of alert IDs somewhere
alert.nCancel = 0; // cancels previous messages up to this ID number
// These versions are protocol versions
alert.nMinVer = 70000;
alert.nMaxVer = 70103;
//
// 1000 for Misc warnings like out of disk space and clock is wrong
// 2000 for longer invalid proof-of-work chain
// Higher numbers mean higher priority
alert.nPriority = 5000;
alert.strComment = "";
alert.strStatusBar = "URGENT: Upgrade required: see https://www.tincoin.org";
// Set specific client version/versions here. If setSubVer is empty, no filtering on subver is done:
// alert.setSubVer.insert(std::string("/Tincoin Core:0.12.0.58/"));
// Sign
if(!alert.Sign())
{
LogPrintf("ThreadSendAlert() : could not sign alert\n");
return;
}
// Test
CDataStream sBuffer(SER_NETWORK, CLIENT_VERSION);
sBuffer << alert;
CAlert alert2;
sBuffer >> alert2;
if (!alert2.CheckSignature(Params().AlertKey()))
{
printf("ThreadSendAlert() : CheckSignature failed\n");
return;
}
assert(alert2.vchMsg == alert.vchMsg);
assert(alert2.vchSig == alert.vchSig);
alert.SetNull();
printf("\nThreadSendAlert:\n");
printf("hash=%s\n", alert2.GetHash().ToString().c_str());
printf("%s", alert2.ToString().c_str());
printf("vchMsg=%s\n", HexStr(alert2.vchMsg).c_str());
printf("vchSig=%s\n", HexStr(alert2.vchSig).c_str());
// Confirm
if (!mapArgs.count("-sendalert"))
return;
while (connman.GetNodeCount(CConnman::CONNECTIONS_ALL) == 0 && !ShutdownRequested())
MilliSleep(500);
if (ShutdownRequested())
return;
// Send
printf("ThreadSendAlert() : Sending alert\n");
int nSent = 0;
{
connman.ForEachNode([&alert2, &connman, &nSent](CNode* pnode) {
if (alert2.RelayTo(pnode, connman))
{
printf("ThreadSendAlert() : Sent alert to %s\n", pnode->addr.ToString().c_str());
nSent++;
}
});
}
printf("ThreadSendAlert() : Alert sent to %d nodes\n", nSent);
}
示例15: ProcessMessageMasternodePayments
void ProcessMessageMasternodePayments(CNode* pfrom, std::string& strCommand, CDataStream& vRecv)
{
if(!stashedSendPool.IsBlockchainSynced()) return;
if (strCommand == "mnget") { //Masternode Payments Request Sync
if(pfrom->HasFulfilledRequest("mnget")) {
LogPrintf("mnget - peer already asked me for the list\n");
Misbehaving(pfrom->GetId(), 20);
return;
}
pfrom->FulfilledRequest("mnget");
masternodePayments.Sync(pfrom);
LogPrintf("mnget - Sent Masternode winners to %s\n", pfrom->addr.ToString().c_str());
}
else if (strCommand == "mnw") { //Masternode Payments Declare Winner
LOCK(cs_masternodepayments);
//this is required in litemode
CMasternodePaymentWinner winner;
vRecv >> winner;
if(pindexBest == NULL) return;
CTxDestination address1;
ExtractDestination(winner.payee, address1);
CIonAddress address2(address1);
uint256 hash = winner.GetHash();
if(mapSeenMasternodeVotes.count(hash)) {
if(fDebug) LogPrintf("mnw - seen vote %s Addr %s Height %d bestHeight %d\n", hash.ToString().c_str(), address2.ToString().c_str(), winner.nBlockHeight, pindexBest->nHeight);
return;
}
if(winner.nBlockHeight < pindexBest->nHeight - 10 || winner.nBlockHeight > pindexBest->nHeight+20){
LogPrintf("mnw - winner out of range %s Addr %s Height %d bestHeight %d\n", winner.vin.ToString().c_str(), address2.ToString().c_str(), winner.nBlockHeight, pindexBest->nHeight);
return;
}
if(winner.vin.nSequence != std::numeric_limits<unsigned int>::max()){
LogPrintf("mnw - invalid nSequence\n");
Misbehaving(pfrom->GetId(), 100);
return;
}
LogPrintf("mnw - winning vote - Vin %s Addr %s Height %d bestHeight %d\n", winner.vin.ToString().c_str(), address2.ToString().c_str(), winner.nBlockHeight, pindexBest->nHeight);
if(!masternodePayments.CheckSignature(winner)){
LogPrintf("mnw - invalid signature\n");
Misbehaving(pfrom->GetId(), 100);
return;
}
mapSeenMasternodeVotes.insert(make_pair(hash, winner));
if(masternodePayments.AddWinningMasternode(winner)){
masternodePayments.Relay(winner);
}
}