{ devices:[ { id:"Alice", ports:1, x:0.25, y:0.6, script: deviceScripts.encryption, player: true }, { id:"Censor", image: "router", ports:4, x:0.5, y:0.6, script: deviceScripts.manualRouter, rules:[ {dstip:"Alice", portNum:0}, {dstip:"Allowed Site", portNum:2}, {dstip:"Proxy", portNum:3} ], player:false }, { id:"Blocked Site", image: "server", ports:1, x:0.8, y:0.4, player:false }, { id:"Allowed Site", image: "server", ports:1, x:0.8, y:0.6 }, { id:"Proxy", image: "router", ports:2, x:0.6, y:0.2, script: deviceScripts.proxy } ], links:[ { src:"Alice", srcport:0, dst:"Censor", dstport:0 }, { src:"Censor", srcport:1, dst:"Blocked Site", dstport:0 }, { src:"Censor", srcport:2, dst:"Allowed Site", dstport:0 }, { src:"Censor", srcport:3, dst:"Proxy", dstport:1 }, { src:"Proxy", srcport:0, dst:"Blocked Site", dstport:0 } ], timeline:[ { type:"packet", at:500, from:"Alice", payload:{ network:{srcip:"Alice",dstip:"Allowed Site"} } }, { type:"packet", at:1500, from:"Alice", payload:{ network:{srcip:"Alice",dstip:"Blocked Site"} } } ], triggers:[ { type:"packet", device:"Blocked Site", payload:{ network:{srcip:"Alice",dstip:"Blocked Site"} } } ], nextLevel:13 }