correctly handle /data path, allow boolean params, return signal as boolean
This commit is contained in:
+11
-11
@@ -1588,11 +1588,11 @@ string MainLoop::executeGet(vector<string> &args, bool& connected) {
|
|||||||
ostringstream result;
|
ostringstream result;
|
||||||
int type = -1;
|
int type = -1;
|
||||||
|
|
||||||
if (uri.substr(0, 6) == "/data/") {
|
if (uri.substr(0, 5) == "/data" && (uri.length() == 5 || uri[5] == '/')) {
|
||||||
string circuit = "", name = "";
|
string circuit = "", name = "";
|
||||||
size_t pos = uri.find('/', 6);
|
size_t pos = uri.find('/', 6);
|
||||||
if (pos == string::npos) {
|
if (pos == string::npos) {
|
||||||
circuit = uri.substr(6);
|
circuit = uri.length() == 5 ? "" : uri.substr(6);
|
||||||
} else {
|
} else {
|
||||||
circuit = uri.substr(6, pos - 6);
|
circuit = uri.substr(6, pos - 6);
|
||||||
name = uri.substr(pos + 1);
|
name = uri.substr(pos + 1);
|
||||||
@@ -1620,23 +1620,23 @@ string MainLoop::executeGet(vector<string> &args, bool& connected) {
|
|||||||
} else if (qname == "poll") {
|
} else if (qname == "poll") {
|
||||||
pollPriority = (size_t)parseInt(value.c_str(), 10, 1, 9, ret);
|
pollPriority = (size_t)parseInt(value.c_str(), 10, 1, 9, ret);
|
||||||
} else if (qname == "exact") {
|
} else if (qname == "exact") {
|
||||||
exact = value.length() == 0 || value == "1";
|
exact = value.length() == 0 || value == "1" || value == "true";
|
||||||
} else if (qname == "verbose") {
|
} else if (qname == "verbose") {
|
||||||
if (value.length() == 0 || value == "1") {
|
if (value.length() == 0 || value == "1" || value == "true") {
|
||||||
verbosity |= OF_UNITS | OF_COMMENTS;
|
verbosity |= OF_UNITS | OF_COMMENTS;
|
||||||
}
|
}
|
||||||
} else if (qname == "indexed") {
|
} else if (qname == "indexed") {
|
||||||
if (value.length() == 0 || value == "1") {
|
if (value.length() == 0 || value == "1" || value == "true") {
|
||||||
verbosity &= ~OF_NAMES;
|
verbosity &= ~OF_NAMES;
|
||||||
}
|
}
|
||||||
} else if (qname == "numeric") {
|
} else if (qname == "numeric") {
|
||||||
numeric = value.length() == 0 || value == "1";
|
numeric = value.length() == 0 || value == "1" || value == "true";
|
||||||
} else if (qname == "valuename") {
|
} else if (qname == "valuename") {
|
||||||
valueName = value.length() == 0 || value == "1";
|
valueName = value.length() == 0 || value == "1" || value == "true";
|
||||||
} else if (qname == "full") {
|
} else if (qname == "full") {
|
||||||
full = value.length() == 0 || value == "1";
|
full = value.length() == 0 || value == "1" || value == "true";
|
||||||
} else if (qname == "required") {
|
} else if (qname == "required") {
|
||||||
required = value.length() == 0 || value == "1";
|
required = value.length() == 0 || value == "1" || value == "true";
|
||||||
} else if (qname == "user") {
|
} else if (qname == "user") {
|
||||||
user = value;
|
user = value;
|
||||||
} else if (qname == "secret") {
|
} else if (qname == "secret") {
|
||||||
@@ -1714,7 +1714,7 @@ string MainLoop::executeGet(vector<string> &args, bool& connected) {
|
|||||||
if (!user.empty() || !levels.empty()) {
|
if (!user.empty() || !levels.empty()) {
|
||||||
result << ",\n \"access\": \"" << levels << "\"";
|
result << ",\n \"access\": \"" << levels << "\"";
|
||||||
}
|
}
|
||||||
result << ",\n \"signal\": " << (m_busHandler->hasSignal() ? "1" : "0");
|
result << ",\n \"signal\": " << (m_busHandler->hasSignal() ? "true" : "false");
|
||||||
if (m_busHandler->hasSignal()) {
|
if (m_busHandler->hasSignal()) {
|
||||||
result << ",\n \"symbolrate\": " << m_busHandler->getSymbolRate();
|
result << ",\n \"symbolrate\": " << m_busHandler->getSymbolRate();
|
||||||
result << ",\n \"maxsymbolrate\": " << m_busHandler->getMaxSymbolRate();
|
result << ",\n \"maxsymbolrate\": " << m_busHandler->getMaxSymbolRate();
|
||||||
@@ -1729,7 +1729,7 @@ string MainLoop::executeGet(vector<string> &args, bool& connected) {
|
|||||||
}
|
}
|
||||||
connected = false;
|
connected = false;
|
||||||
return formatHttpResult(ret, result, type);
|
return formatHttpResult(ret, result, type);
|
||||||
} // request for "/data/..."
|
} // request for "/data..."
|
||||||
|
|
||||||
if (uri.length() < 1 || uri[0] != '/' || uri.find("//") != string::npos || uri.find("..") != string::npos) {
|
if (uri.length() < 1 || uri[0] != '/' || uri.find("//") != string::npos || uri.find("..") != string::npos) {
|
||||||
ret = RESULT_ERR_INVALID_ARG;
|
ret = RESULT_ERR_INVALID_ARG;
|
||||||
|
|||||||
Reference in New Issue
Block a user