]> jfr.im git - irc/rizon/acid.git/blob - acid/src/main/java/net/rizon/acid/messages/Encap.java
SWEBIRC and REALHOST processing
[irc/rizon/acid.git] / acid / src / main / java / net / rizon / acid / messages / Encap.java
1 package net.rizon.acid.messages;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import net.rizon.acid.core.AcidCore;
6 import net.rizon.acid.core.Acidictive;
7 import net.rizon.acid.core.Message;
8 import net.rizon.acid.core.Server;
9 import net.rizon.acid.core.User;
10
11 public class Encap extends Message
12 {
13 public Encap()
14 {
15 super("ENCAP");
16 }
17
18 @Override
19 public void onServer(Server source, String[] params)
20 {
21 if (params[0].equals("*") == false && params[0].equalsIgnoreCase(AcidCore.me.getName()) == false && params[1].equalsIgnoreCase(AcidCore.me.getSID()) == false)
22 ;
23 else if (params[1].equalsIgnoreCase("SVSMODE"))
24 {
25 // :services.rizon.net ENCAP * SVSMODE weed 1145782805 +rd :1145782805
26 // :im.a.server ENCAP * SVSMODE dizzy 1145772712 :+r
27
28 User target = User.findUser(params[2]);
29 if (target == null)
30 return;
31
32 String modes = params[4];
33 modes = modes.replaceAll("d", ""); // Guess we don't track service stamps?
34 target.setMode(modes);
35 }
36 else if (params[1].equalsIgnoreCase("CHGHOST"))
37 {
38 // :services.rizon.net ENCAP * CHGHOST NocturneXDCC :is.a.yote.server
39
40 User user = User.findUser(params[2]);
41 if (user == null)
42 return;
43
44 user.setVhost(params[3]);
45 }
46 else if (params[1].equals("SU"))
47 {
48 User user = User.findUser(params[2]);
49 if (user == null)
50 return;
51
52 if (params.length > 3)
53 user.setSU(params[3]);
54 else
55 user.setSU("");
56 }
57 else if (params[1].equals("CERTFP"))
58 {
59 User user = User.findUser(params[2]);
60 if (user == null)
61 return;
62
63 user.setCertFP(params[3]);
64 }
65 else if (params[1].equals("AUTHFLAGS"))
66 {
67 User user = User.findUser(params[2]);
68 if (user == null)
69 return;
70
71 user.setAuthFlags(params[3]);
72 }
73 else if (params[1].equals("SWEBIRC"))
74 {
75 int parc = params.length;
76 if (parc < 10)
77 return;
78
79 Acidictive.onWebIRC(source,
80 params[2], // operation
81 params[3], // uid
82 params[4], // realhost
83 params[5], // sockhost
84 params[parc - 4], // webirc password
85 params[parc - 3], // webirc username
86 params[parc - 2], // requested host
87 params[parc - 1] // requested ip
88 );
89 }
90 else if (params[1].equals("CHGREALHOST"))
91 {
92 User user = User.findUser(params[2]);
93 if (user == null)
94 return;
95
96 user.setRealhost(params[3], params[4]);
97 }
98 }
99 }