mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 17:09:34 -05:00
Extend JSON API with reasonable way to create location
This commit is contained in:
parent
4637fbaff5
commit
0ff80baed3
@ -216,6 +216,19 @@ struct RsLoginHelper
|
||||
* @param[out] locations storage for the retrived locations
|
||||
*/
|
||||
void getLocations(std::vector<RsLoginHelper::Location>& locations);
|
||||
|
||||
/**
|
||||
* @brief Creates a new RetroShare location
|
||||
* @jsonapi{development}
|
||||
* @param[inout] location provide input information to generate the location
|
||||
* and storage to output the data of the generated location
|
||||
* @param[in] password to protect and unlock the associated PGP key
|
||||
* @param[out] errorMessage
|
||||
* @return true if success, false otherwise
|
||||
*/
|
||||
bool createLocation( RsLoginHelper::Location& location,
|
||||
const std::string& password,
|
||||
std::string& errorMessage );
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1934,6 +1934,41 @@ void RsLoginHelper::getLocations(std::vector<RsLoginHelper::Location>& store)
|
||||
}
|
||||
}
|
||||
|
||||
bool RsLoginHelper::createLocation(
|
||||
RsLoginHelper::Location& l, const std::string& password,
|
||||
std::string& errorMessage )
|
||||
{
|
||||
if(l.mLocationName.empty())
|
||||
{
|
||||
errorMessage = "Location name is needed";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(l.mPgpId.isNull() && l.mPpgName.empty())
|
||||
{
|
||||
errorMessage = "Either PGP name or PGP id is needed";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(l.mPgpId.isNull() && !RsAccounts::GeneratePGPCertificate(
|
||||
l.mPpgName, "", password, l.mPgpId, 4096, errorMessage) )
|
||||
{
|
||||
errorMessage = "Failure creating PGP key: " + errorMessage;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!rsNotify->cachePgpPassphrase(password)) return false;
|
||||
if(!rsNotify->setDisableAskPassword(true)) return false;
|
||||
|
||||
bool ret = RsAccounts::GenerateSSLCertificate(
|
||||
l.mPgpId, "", l.mLocationName, "", false,
|
||||
RSRandom::random_alphaNumericString(
|
||||
RsInit::getSslPwdLen() ), l.mLocationId, errorMessage );
|
||||
|
||||
rsNotify->setDisableAskPassword(false);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void RsLoginHelper::Location::serial_process(
|
||||
RsGenericSerializer::SerializeJob j,
|
||||
RsGenericSerializer::SerializeContext& ctx )
|
||||
|
Loading…
Reference in New Issue
Block a user