瀏覽代碼

Merge branch 'fish-auto-keyx-callerid'

* fish-auto-keyx-callerid:
  * Doc updates
  * Auto FiSH Key exchange when accepting users
  * Add a keyx()
Bryan Drewery 14 年之前
父節點
當前提交
762f74a284
共有 5 個文件被更改,包括 19 次插入11 次删除
  1. 1 0
      doc/UPDATES
  2. 15 0
      src/chanprog.c
  3. 1 0
      src/chanprog.h
  4. 1 11
      src/mod/server.mod/cmdsserv.c
  5. 1 0
      src/mod/server.mod/servmsg.c

+ 1 - 0
doc/UPDATES

@@ -15,6 +15,7 @@
   * Suicide will now remove all bots related to the binary being removed (fixes #435)
   * FiSH message support added.
   * FiSH support for DH1080 key-exchange. 'keyx' command added to start from bot, and responds to key-exchanges.
+  * Auto FiSH key-exchange when accepting users via callerid
 
 maint
   * Fix --disable-ipv6 compiling

+ 15 - 0
src/chanprog.c

@@ -992,3 +992,18 @@ void notice(bd::String target, bd::String msg, int idx) {
   else
     dprintf(idx, "NOTICE %s :%s\n", target.c_str(), msg.c_str());
 }
+
+
+void keyx(const bd::String &target) {
+  bd::String myPublicKeyB64, myPrivateKey, sharedKey;
+
+  DH1080_gen(myPrivateKey, myPublicKeyB64);
+
+  putlog(LOG_MSGS, "*", "[FiSH] Initiating DH1080 key-exchange with %s - sending my public key", target.c_str());
+  notice(target, "DH1080_INIT " + myPublicKeyB64, DP_HELP);
+  fish_data_t* fishData = new fish_data_t;
+  fishData->myPublicKeyB64 = myPublicKeyB64;
+  fishData->myPrivateKey = myPrivateKey;
+  fishData->timestamp = now;
+  FishKeys[target] = fishData;
+}

+ 1 - 0
src/chanprog.h

@@ -34,6 +34,7 @@ void load_internal_users();
 void setup_HQ(int);
 void privmsg(bd::String target, bd::String msg, int idx);
 void notice(bd::String target, bd::String msg, int idx);
+void keyx(const bd::String& target);
 
 extern struct chanset_t		*chanset, *chanset_default;
 extern char			admin[], origbotnick[HANDLEN + 1], origbotname[NICKLEN], jupenick[NICKLEN], botname[NICKLEN], *def_chanset;

+ 1 - 11
src/mod/server.mod/cmdsserv.c

@@ -124,17 +124,7 @@ static void cmd_keyx(int idx, char *par) {
   }
 
   char *nick = newsplit(&par);
-  bd::String myPublicKeyB64, myPrivateKey, sharedKey;
-
-  DH1080_gen(myPrivateKey, myPublicKeyB64);
-
-  putlog(LOG_MSGS, "*", "[FiSH] Initiating DH1080 key-exchange with %s - sending my public key", nick);
-  notice(nick, "DH1080_INIT " + myPublicKeyB64, DP_HELP);
-  fish_data_t* fishData = new fish_data_t;
-  fishData->myPublicKeyB64 = myPublicKeyB64;
-  fishData->myPrivateKey = myPrivateKey;
-  fishData->timestamp = now;
-  FishKeys[nick] = fishData;
+  keyx(nick);
   return;
 }
 

+ 1 - 0
src/mod/server.mod/servmsg.c

@@ -1915,6 +1915,7 @@ static int got718(char *from, char *msg)
         putlog(LOG_WALL, "*", "(CALLERID) !%s! (%s!%s) %s (Accepting user)", u->handle, nick, uhost, msg);
         dprintf(DP_HELP, "ACCEPT %s\n", nick);
         dprintf(DP_HELP, "PRIVMSG %s :You have been accepted. Please send your message again.\n", nick);
+        keyx(nick);
       } else {
         putlog(LOG_WALL, "*", "(CALLERID) !%s! (%s!%s) %s (User is not +o or +v)", u->handle, nick, uhost, msg);
       }