mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-30 09:56:14 -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
|
* @param[out] locations storage for the retrived locations
|
||||||
*/
|
*/
|
||||||
void getLocations(std::vector<RsLoginHelper::Location>& 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
|
#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(
|
void RsLoginHelper::Location::serial_process(
|
||||||
RsGenericSerializer::SerializeJob j,
|
RsGenericSerializer::SerializeJob j,
|
||||||
RsGenericSerializer::SerializeContext& ctx )
|
RsGenericSerializer::SerializeContext& ctx )
|
||||||
|
Loading…
Reference in New Issue
Block a user