Add encrypted LAN mouse and keyboard sharing with four-edge handoff

This commit is contained in:
agrynco committed 2026-11-06 16:28:43 +02:00
1 parent 9b565dd55e
commit e0bfdd9a90
15 files changed
+1093 -104

No files matched your search

+14
View File
@@ -97,8 +97,22 @@ int main(int argc,char **argv)
LanService restored(root);auto state=request(restored,{{"action","status"}});
check(state["peers"].size()==1 && state["peers"][0].at("paired").get<bool>() && !state["peers"][0].at("online").get<bool>(),"saved pair remains visible offline");
check(state.dump().find(left.derived)==std::string::npos,"status never exposes stored pair keys");
rejects([&]{request(restored,{{"action","input"},{"enabled",true},{"peer",b},{"edge",1}});},"input cannot be enabled without discovery");
rejects([&]{request(restored,{{"action","input"},{"enabled",false},{"edge",4}});},"invalid screen edge rejected");
auto position=request(restored,{{"action","input"},{"enabled",false},{"peer",b},{"edge",2}});
check(position.at("inputEdge")==2&&!restored.inputEnabled(),"screen position saved without enabling input");
if(argc>1&&std::string(argv[1])=="--network")
{
request(restored,{{"action","enable"},{"enabled",true}});
rejects([&]{request(restored,{{"action","input"},{"enabled",true},{"peer",c},{"edge",1}});},"discovered but unpaired peer cannot receive input");
request(restored,{{"action","input"},{"enabled",true},{"peer",b},{"edge",2}});
check(restored.inputEnabled(),"paired input enabled with explicit screen position");
request(restored,{{"action","enable"},{"enabled",false}});
check(!restored.inputEnabled(),"disabling discovery also stops input runtime");
}
request(restored,{{"action","forget"},{"peer",b}});
check(request(restored,{{"action","status"}})["peers"].empty(),"forget removes offline pair");
check(!request(restored,{{"action","status"}}).at("shareInput").get<bool>(),"forgetting the input peer revokes persisted input permission");
}
std::cout<<"Passed "<<passed<<" LAN discovery/pairing checks\n";
}