]> jfr.im git - irc/rizon/acid.git/commitdiff
encap snomask support for acid as well as protocol support for 5 arg svsmode needed...
authorchristinaa <redacted>
Thu, 14 Sep 2017 14:39:32 +0000 (07:39 -0700)
committerOrillion <redacted>
Fri, 15 Sep 2017 07:09:48 +0000 (09:09 +0200)
acid/src/main/java/net/rizon/acid/core/Protocol.java
acid/src/main/java/net/rizon/acid/core/User.java
acid/src/main/java/net/rizon/acid/messages/Encap.java

index 205c80eeffaeea6ea69d27a9b66fa9cbccf829a6..666c516f7c6f0552cbd78f860ac1ab20eac90b1f 100644 (file)
@@ -177,6 +177,11 @@ public class Protocol
                encap("*", "SVSMODE", u.getUID(), u.getNickTS(), modes);
        }
 
+       public static void svsmode(User u, final String modes, final String extarg)
+       {
+               encap("*", "SVSMODE", u.getUID(), u.getNickTS(), modes, extarg);
+       }
+
        public static void chgident(User u, final String host)
        {
                encap("*", "CHGIDENT", u.getUID(), host);
index 784c293e4c79264e9eba2a30e855b48efbfaa86e..fce3e605f0f476276f81b15fa61e6e5992f7effd 100644 (file)
@@ -21,7 +21,7 @@ public class User implements Comparable<User>
        private static final Logger log = LoggerFactory.getLogger(User.class);
 
        private String nick, user, host, vhost, name, identnick, modes, UID, ip,
-                       certfp, authflags, su;
+                       certfp, authflags, su, snomask;
        private String cloakedIp, cloakedHost;
        private int nickTS, conTS;
        private Server server;
@@ -71,6 +71,16 @@ public class User implements Comparable<User>
                this.certfp = "";
                this.authflags = "";
                this.su = "";
+
+               /*
+                * i'm not sure if this is just how plexus handles it
+                * or if it's irc protocol for empty snomasks.
+                *
+                *  -!- Mode change [-s] for user kristina
+                *  -!- + Server notice mask
+                */
+               this.snomask = "+";
+
                oldNicks = new ArrayList<String>();
                chans = new Hashtable<String, ArrayList<Integer>>();
                chanList = new HashSet<Channel>();
@@ -86,6 +96,20 @@ public class User implements Comparable<User>
                return this.ip.equals("255.255.255.255") || this.ip.equals("0");
        }
 
+       public void setSnomask(String s)
+       {
+               /* see comment in ctor */
+               if (s.isEmpty())
+                       snomask = "+";
+               else
+                       snomask = s;
+       }
+
+       public String getSnomask()
+       {
+               return snomask;
+       }
+
        public void onQuit()
        {
                for (Iterator<Channel> it = chanList.iterator(); it.hasNext();)
index 53a08aa882b5aaf7ff7a668daa27ae6eb9d90d46..533f31f45615d0b834f564cd5c64a884d930384e 100644 (file)
@@ -8,9 +8,13 @@ import net.rizon.acid.core.Message;
 import net.rizon.acid.core.Server;
 import net.rizon.acid.core.User;
 import net.rizon.acid.util.Util;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Encap extends Message
 {
+       private static final Logger log = LoggerFactory.getLogger(Encap.class);
+
        public Encap()
        {
                super("ENCAP");
@@ -109,6 +113,18 @@ public class Encap extends Message
 
                        user.setCertFP(params[3]);
                }
+               else if (params[1].equals("SNOMASK"))
+               {
+                       User user = User.findUser(params[2]);
+                       if (user == null)
+                       {
+                               log.warn("SNOMASK: Unable to find user {}", params[2]);
+                               return;
+                       }
+
+                       user.setSnomask(params[3]);
+                       log.debug("Snomask for {} changed to {}", user.getNick(), user.getSnomask());
+               }
                else if (params[1].equals("AUTHFLAGS"))
                {
                        User user = User.findUser(params[2]);