Advertisement
Guest User

Untitled

a guest
Sep 29th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. var chat = {
  2. username: "<not set>",
  3. topic: "0xfeedbabe",
  4. key: "",
  5. identity: "",
  6. pollInterval: null,
  7. filter: null,
  8.  
  9. setUsername: function(name) {
  10. this.username = name;
  11. return true;
  12. },
  13.  
  14. join: function(password) {
  15. // create key from shared secret
  16. this.key = shh.generateSymKeyFromPassword(password);
  17.  
  18. // create pub/priv key for identity
  19. this.identity = shh.newKeyPair();
  20.  
  21. pubKey = shh.getPublicKey(this.identity);
  22. console.log("identity", pubKey.substr(2, 8));
  23.  
  24. // create message filter (console doesn't support subscriptions)
  25. me = this;
  26. this.filter = shh.newMessageFilter({
  27. symKeyID: this.key,
  28. topics: [this.topic],
  29. }, function(err, message) {
  30. if (err) {
  31. console.error(err);
  32. } else {
  33. printMessage(message, me.username);
  34. }
  35. });
  36.  
  37. this.say("joined");
  38.  
  39. return true;
  40. },
  41.  
  42. pollMessages: function() {
  43. messages = shh.getFilterMessages(this.filter);
  44. for (i = 0; i < messages.length; i++) {
  45. printMessage(messages[i], this.username);
  46. }
  47. }
  48.  
  49. say: function(text) {
  50. message = {
  51. symKeyId: this.key,
  52. topic: this.topic,
  53. payload: web3.toHex(this.username + ": " + text),
  54. powTime: 5,
  55. powTarget: shh.info().minPow,
  56. sig: this.identity
  57. };
  58.  
  59. return shh.post(message);
  60. }
  61.  
  62. leave: function() {
  63. shh.deleteMessageFilter(this.filter);
  64. clearInterval(this.pollInterval);
  65. this.say("left...")
  66. console.log("chat room left");
  67. return true;
  68. },
  69. }
  70.  
  71. // start helper functions
  72. function time(message) {
  73. date = new Date(message.timestamp * 1000);
  74. hours = date.getHours();
  75. minutes = "0" + date.getMinutes();
  76. seconds = "0" + date.getSeconds();
  77.  
  78. return hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
  79. }
  80.  
  81. function sender(message) {
  82. return message.sig.substr(2, 8)
  83. }
  84.  
  85. function printMessage(message, myUsername) {
  86. line = web3.toAscii(message.payload);
  87. parts = line.split(":");
  88. name = parts[0]
  89. if (name !== myUsername) {
  90. console.log("[" + time(message) + " " + name + "/" + sender(message) + "]" + parts.slice(1).join(":"));
  91. }
  92. }
  93. // end helper functions
  94.  
  95. console.log("Supported functions:");
  96. console.log("* chat.setUsername(<name:string>)");
  97. console.log("* chat.join(<password:string>)");
  98. console.log("* chat.leave()");
  99. console.log("* chat.say(<message:string>)");
  100. console.log();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement