]> jfr.im git - irc/gameservirc.git/commitdiff
Added a contrib dir with one user submitted patch
authorkainazzzo <redacted>
Mon, 27 Oct 2003 20:37:32 +0000 (20:37 +0000)
committerkainazzzo <redacted>
Mon, 27 Oct 2003 20:37:32 +0000 (20:37 +0000)
git-svn-id: https://svn.code.sf.net/p/gameservirc/code/trunk@37 bc333340-6410-0410-a689-9d09f3c113fa

gameserv/contrib/gameserv-hybrid.diff [new file with mode: 0644]

diff --git a/gameserv/contrib/gameserv-hybrid.diff b/gameserv/contrib/gameserv-hybrid.diff
new file mode 100644 (file)
index 0000000..ca23910
--- /dev/null
@@ -0,0 +1,79 @@
+Hybrid ircd support, this "works for me" on a private testnet.
+This probably should not be committed, merely kept in a "contrib"
+directory.
+
+Index: gameserv.cpp
+===================================================================
+RCS file: /cvsroot/gameservirc/gameserv/gameserv.cpp,v
+retrieving revision 1.14
+diff -u -r1.14 gameserv.cpp
+--- gameserv.cpp       24 Oct 2003 16:04:51 -0000      1.14
++++ gameserv.cpp       26 Oct 2003 22:41:46 -0000
+@@ -116,7 +119,7 @@
+       timestamp = strtok(NULL, "\1");
+         notice(s_GameServ, source, "\1PING %s\1", timestamp);
+     } else if (stricmp(cmd, ":\1VERSION\1") == 0) {
+-      notice(s_GameServ, source, "\1VERSION GameServ v1.0b\1");
++      notice(s_GameServ, source, "\1VERSION GameServ v1.0b+hybrid_0.1\1");
+     } else if (stricmp(cmd, "SEARCH") == 0) {
+       cmd = strtok(NULL, " ");
+Index: tcpclient.cpp
+===================================================================
+RCS file: /cvsroot/gameservirc/gameserv/tcpclient.cpp,v
+retrieving revision 1.6
+diff -u -r1.6 tcpclient.cpp
+--- tcpclient.cpp      23 Oct 2003 21:27:19 -0000      1.6
++++ tcpclient.cpp      26 Oct 2003 22:41:46 -0000
+@@ -56,14 +56,11 @@
+     return -1;
+   }
+-      raw("PROTOCTL NICKv2 VHP");
+-      raw("PASS :%s", remotepass);
++      raw("PASS %s :TS", remotepass);
+       raw("SERVER %s 1 :Testing Server", servername);
+-      raw("NICK %S 1 %d %S %s %s %d +owghraAxNt %s :GameServ", time(NULL), gshost, 
+-              servername, time(NULL), gshost);
+-      raw(":%S JOIN %s", c_Forest);
+-      raw(":%S MODE %s +o %S", c_Forest);
+-      raw(":%S MODE %s +ntm", c_Forest);
++      raw("NICK %S %ld 1 +o %S %s %s :GameServ", time(NULL), gshost, 
++              servername);
++      raw(":%s SJOIN 1 %s +ntm :@%S", servername, c_Forest);
+   sock_gets(sock,buffer,sizeof(buffer)-1); /* -1 added thanks to
+     David Duchene <dave@ltd.com> for pointing out the possible
+@@ -128,11 +125,28 @@
+               gameserv(source, rest);
+           else if (stricmp(dest, c_Forest) == 0)
+               forest(source, rest);
+-      } else if (stricmp(cmd, "JOIN") == 0) {
++      } else if (stricmp(cmd, "SJOIN") == 0) {
+           char *channel;
+-          channel = strtok(NULL, " ");
+-          if (stricmp(channel, c_Forest) == 0 && is_playing(source + 1))
+-              raw(":%S MODE %s +v %s", c_Forest, (source + 1));
++          char *userptr;
++          char *tmp;
++          channel = strtok(NULL, " "); // channel timestamp
++          channel = strtok(NULL, " "); // channel name
++          tmp = strrchr(buffer, ':');
++          tmp++;
++          userptr = strtok(tmp, " ");
++          while (userptr != NULL)
++          {
++              if (*userptr == '@')
++                  userptr++;
++              if (*userptr == '+')
++                 userptr++; // Assume that for users opped and voiced
++                            // that they are never passed as +@user
++
++              if (stricmp(channel, c_Forest) == 0 && is_playing(userptr))
++                  raw(":%S MODE %s +v %s", c_Forest, userptr);
++
++              userptr = strtok(NULL, " ");
++          }
+       } else {
+          // cout << "Unrecognized Message: cmd = " << cmd << setw(30) << "source = " << 
+          //       source << endl;