@ -66,9 +66,14 @@ static const std::string COOKIEAUTH_USER = "__cookie__";
/** Default name for auth cookie file */
static const std : : string COOKIEAUTH_FILE = " .cookie " ;
fs : : path GetAuthCookieFile ( )
/** Get name of RPC authentication cookie file */
static fs : : path GetAuthCookieFile ( bool temp = false )
{
fs : : path path ( gArgs . GetArg ( " -rpccookiefile " , COOKIEAUTH_FILE ) ) ;
std : : string arg = gArgs . GetArg ( " -rpccookiefile " , COOKIEAUTH_FILE ) ;
if ( temp ) {
arg + = " .tmp " ;
}
fs : : path path ( arg ) ;
if ( ! path . is_complete ( ) ) path = GetDataDir ( ) / path ;
return path ;
}
@ -84,14 +89,20 @@ bool GenerateAuthCookie(std::string *cookie_out)
* these are set to 077 in init . cpp unless overridden with - sysperms .
*/
std : : ofstream file ;
fs : : path filepath = GetAuthCookieFile ( ) ;
file . open ( filepath . string ( ) . c_str ( ) ) ;
fs : : path filepath _tmp = GetAuthCookieFile ( true ) ;
file . open ( filepath _tmp . string ( ) . c_str ( ) ) ;
if ( ! file . is_open ( ) ) {
LogPrintf ( " Unable to open cookie authentication file %s for writing \n " , filepath . string ( ) ) ;
LogPrintf ( " Unable to open cookie authentication file %s for writing \n " , filepath _tmp . string ( ) ) ;
return false ;
}
file < < cookie ;
file . close ( ) ;
fs : : path filepath = GetAuthCookieFile ( false ) ;
if ( ! RenameOver ( filepath_tmp , filepath ) ) {
LogPrintf ( " Unable to rename cookie authentication file %s to %s \n " , filepath_tmp . string ( ) , filepath . string ( ) ) ;
return false ;
}
LogPrintf ( " Generated RPC authentication cookie %s \n " , filepath . string ( ) ) ;
if ( cookie_out )