webui: allow to set peer flags when adding friends (whitelist flag is set to false)

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8364 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
electron128 2015-06-04 12:57:09 +00:00
parent 399340ef38
commit aea5a77aeb
6 changed files with 69 additions and 5 deletions

View File

@ -224,6 +224,7 @@ StreamBase& JsonStream::getStreamToMember(std::string name)
mChild = new JsonStream(); mChild = new JsonStream();
if(!serialise()) if(!serialise())
{ {
mChild->mSerialise = false;
if(checkDeserialisation() && checkObjectMember(name)) if(checkDeserialisation() && checkObjectMember(name))
{ {
mChild->mValue = mObject[name]; mChild->mValue = mObject[name];

View File

@ -191,11 +191,32 @@ void PeersHandler::handleWildcard(Request &req, Response &resp)
{ {
std::string cert_string; std::string cert_string;
req.mStream << makeKeyValueReference("cert_string", cert_string); req.mStream << makeKeyValueReference("cert_string", cert_string);
ServicePermissionFlags flags;
StreamBase& flags_stream = req.mStream.getStreamToMember("flags");
if(req.mStream.isOK())
{
bool direct_dl = RS_NODE_PERM_DEFAULT & RS_NODE_PERM_DIRECT_DL;
flags_stream << makeKeyValueReference("allow_direct_download", direct_dl);
if(direct_dl) flags |= RS_NODE_PERM_DIRECT_DL;
bool allow_push = RS_NODE_PERM_DEFAULT & RS_NODE_PERM_ALLOW_PUSH;
flags_stream << makeKeyValueReference("allow_push", allow_push);
if(allow_push) flags |= RS_NODE_PERM_ALLOW_PUSH;
bool require_whitelist = RS_NODE_PERM_DEFAULT & RS_NODE_PERM_REQUIRE_WL;
flags_stream << makeKeyValueReference("require_whitelist", require_whitelist);
if(require_whitelist) flags |= RS_NODE_PERM_REQUIRE_WL;
}
else
{
flags = RS_NODE_PERM_DEFAULT;
}
RsPeerId peer_id; RsPeerId peer_id;
RsPgpId pgp_id; RsPgpId pgp_id;
std::string error_string; std::string error_string;
if(mRsPeers->loadCertificateFromString(cert_string, peer_id, pgp_id, error_string) if(mRsPeers->loadCertificateFromString(cert_string, peer_id, pgp_id, error_string)
&& mRsPeers->addFriend(peer_id, pgp_id)) && mRsPeers->addFriend(peer_id, pgp_id, flags))
{ {
ok = true; ok = true;
resp.mDataStream << makeKeyValueReference("pgp_id", pgp_id); resp.mDataStream << makeKeyValueReference("pgp_id", pgp_id);

View File

@ -85,6 +85,10 @@ input:hover{
background-color: midnightblue; background-color: midnightblue;
} }
.checkbox {
width: auto;
}
.flexbox{ .flexbox{
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */

View File

@ -373,6 +373,9 @@ var OwnCert = React.createClass({
var AddPeerWidget = React.createClass({ var AddPeerWidget = React.createClass({
getInitialState: function(){ getInitialState: function(){
return {page: "start"}; return {page: "start"};
// for testing
//return {page: "peer", data: {name: "some_test_name"}};
}, },
add_friend_handler: function(){ add_friend_handler: function(){
var cert_string = this.refs.cert.getDOMNode().value; var cert_string = this.refs.cert.getDOMNode().value;
@ -388,7 +391,19 @@ var AddPeerWidget = React.createClass({
}, },
final_add_handler: function(){ final_add_handler: function(){
this.setState({page: "start"}); this.setState({page: "start"});
RS.request({path: "peers", data: {cert_string: this.state.cert_string}}); RS.request(
{
path: "peers",
data: {
cert_string: this.state.cert_string,
flags:{
allow_direct_download: this.refs.cb_direct_dl.getDOMNode().checked,
allow_push: this.refs.cb_push.getDOMNode().checked,
// set to false, until the webinterface supports managment of the blacklist/whitelist
require_whitelist: false,
}
}
});
}, },
render: function(){ render: function(){
if(this.state.page === "start") if(this.state.page === "start")
@ -415,7 +430,9 @@ var AddPeerWidget = React.createClass({
return( return(
<div> <div>
<p>Do you want to add {this.state.data.name} to your friendslist?</p> <p>Do you want to add {this.state.data.name} to your friendslist?</p>
<span onClick={this.final_add_handler} className="btn">yes</span> <input className="checkbox" type="checkbox" ref="cb_direct_dl"/> Allow direct downloads from this node<br/>
<input className="checkbox" type="checkbox" ref="cb_push"/> Auto download recommended files from this node<br/>
<div onClick={this.final_add_handler} className="btn2">add to friendslist</div>
</div> </div>
); );
}, },

View File

@ -85,6 +85,10 @@ input:hover{
background-color: midnightblue; background-color: midnightblue;
} }
.checkbox {
width: auto;
}
.flexbox{ .flexbox{
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */

View File

@ -373,6 +373,9 @@ var OwnCert = React.createClass({
var AddPeerWidget = React.createClass({ var AddPeerWidget = React.createClass({
getInitialState: function(){ getInitialState: function(){
return {page: "start"}; return {page: "start"};
// for testing
//return {page: "peer", data: {name: "some_test_name"}};
}, },
add_friend_handler: function(){ add_friend_handler: function(){
var cert_string = this.refs.cert.getDOMNode().value; var cert_string = this.refs.cert.getDOMNode().value;
@ -388,7 +391,19 @@ var AddPeerWidget = React.createClass({
}, },
final_add_handler: function(){ final_add_handler: function(){
this.setState({page: "start"}); this.setState({page: "start"});
RS.request({path: "peers", data: {cert_string: this.state.cert_string}}); RS.request(
{
path: "peers",
data: {
cert_string: this.state.cert_string,
flags:{
allow_direct_download: this.refs.cb_direct_dl.getDOMNode().checked,
allow_push: this.refs.cb_push.getDOMNode().checked,
// set to false, until the webinterface supports managment of the blacklist/whitelist
require_whitelist: false,
}
}
});
}, },
render: function(){ render: function(){
if(this.state.page === "start") if(this.state.page === "start")
@ -415,7 +430,9 @@ var AddPeerWidget = React.createClass({
return( return(
<div> <div>
<p>Do you want to add {this.state.data.name} to your friendslist?</p> <p>Do you want to add {this.state.data.name} to your friendslist?</p>
<span onClick={this.final_add_handler} className="btn">yes</span> <input className="checkbox" type="checkbox" ref="cb_direct_dl"/> Allow direct downloads from this node<br/>
<input className="checkbox" type="checkbox" ref="cb_push"/> Auto download recommended files from this node<br/>
<div onClick={this.final_add_handler} className="btn2">add to friendslist</div>
</div> </div>
); );
}, },