@ -21,6 +21,9 @@
# include <boost/algorithm/string.hpp> // boost::trim
# include <boost/algorithm/string.hpp> // boost::trim
# include <boost/foreach.hpp> //BOOST_FOREACH
# include <boost/foreach.hpp> //BOOST_FOREACH
/** WWW-Authenticate to present with 401 Unauthorized response */
static const char * WWW_AUTH_HEADER_DATA = " Basic realm= \" jsonrpc \" " ;
/** Simple one-shot callback timer to be used by the RPC mechanism to e.g.
/** Simple one-shot callback timer to be used by the RPC mechanism to e.g.
* re - lock the wellet .
* re - lock the wellet .
*/
*/
@ -151,6 +154,7 @@ static bool HTTPReq_JSONRPC(HTTPRequest* req, const std::string &)
// Check authorization
// Check authorization
std : : pair < bool , std : : string > authHeader = req - > GetHeader ( " authorization " ) ;
std : : pair < bool , std : : string > authHeader = req - > GetHeader ( " authorization " ) ;
if ( ! authHeader . first ) {
if ( ! authHeader . first ) {
req - > WriteHeader ( " WWW-Authenticate " , WWW_AUTH_HEADER_DATA ) ;
req - > WriteReply ( HTTP_UNAUTHORIZED ) ;
req - > WriteReply ( HTTP_UNAUTHORIZED ) ;
return false ;
return false ;
}
}
@ -163,6 +167,7 @@ static bool HTTPReq_JSONRPC(HTTPRequest* req, const std::string &)
shouldn ' t have their RPC port exposed . */
shouldn ' t have their RPC port exposed . */
MilliSleep ( 250 ) ;
MilliSleep ( 250 ) ;
req - > WriteHeader ( " WWW-Authenticate " , WWW_AUTH_HEADER_DATA ) ;
req - > WriteReply ( HTTP_UNAUTHORIZED ) ;
req - > WriteReply ( HTTP_UNAUTHORIZED ) ;
return false ;
return false ;
}
}