|
@@ -26,6 +26,7 @@ import com.dmdirc.parser.common.ParserError;
|
26
|
26
|
import com.dmdirc.parser.interfaces.ChannelInfo;
|
27
|
27
|
import com.dmdirc.parser.interfaces.callbacks.ChannelListModeListener;
|
28
|
28
|
|
|
29
|
+import java.util.Arrays;
|
29
|
30
|
import java.util.Collection;
|
30
|
31
|
import java.util.LinkedList;
|
31
|
32
|
import java.util.Queue;
|
|
@@ -60,7 +61,7 @@ public class ProcessListModes extends IRCProcessor {
|
60
|
61
|
byte tokenStart = 4; // Where do the relevent tokens start?
|
61
|
62
|
boolean isCleverMode = false;
|
62
|
63
|
long time = 0;
|
63
|
|
- char mode = 'b';
|
|
64
|
+ char mode = ' ';
|
64
|
65
|
boolean isItem = true; // true if item listing, false if "end of .." item
|
65
|
66
|
if (channel == null) {
|
66
|
67
|
return;
|
|
@@ -84,6 +85,14 @@ public class ProcessListModes extends IRCProcessor {
|
84
|
85
|
// Censored words List
|
85
|
86
|
mode = 'g';
|
86
|
87
|
isItem = sParam.equals("941");
|
|
88
|
+ } else if ((serverType == ServerType.INSPIRCD) && (sParam.equals("910") || sParam.equals("911"))) {
|
|
89
|
+ // Channel Access List
|
|
90
|
+ mode = 'w';
|
|
91
|
+ isItem = sParam.equals("910");
|
|
92
|
+ } else if ((serverType == ServerType.INSPIRCD) && (sParam.equals("954") || sParam.equals("953"))) {
|
|
93
|
+ // Channel exemptchanops List
|
|
94
|
+ mode = 'X';
|
|
95
|
+ isItem = sParam.equals("954");
|
87
|
96
|
} else if (sParam.equals("344") || sParam.equals("345")) {
|
88
|
97
|
// Reop List, or bad words list, or quiet list. god damn.
|
89
|
98
|
if (serverType == ServerType.EUIRCD) {
|
|
@@ -112,6 +121,12 @@ public class ProcessListModes extends IRCProcessor {
|
112
|
121
|
isCleverMode = true;
|
113
|
122
|
}
|
114
|
123
|
|
|
124
|
+ // Unknown mode.
|
|
125
|
+ if (mode == ' ') {
|
|
126
|
+ parser.callDebugInfo(IRCParser.DEBUG_LMQ, "Unknown mode line: " + Arrays.toString(token));
|
|
127
|
+ return;
|
|
128
|
+ }
|
|
129
|
+
|
115
|
130
|
final Queue<Character> listModeQueue = channel.getListModeQueue();
|
116
|
131
|
if (!isCleverMode && listModeQueue != null) {
|
117
|
132
|
if ("482".equals(sParam)) {
|
|
@@ -257,6 +272,8 @@ public class ProcessListModes extends IRCProcessor {
|
257
|
272
|
"386", "387", /* Channel Owner List (swiftirc ) */
|
258
|
273
|
"388", "389", /* Protected User List (swiftirc) */
|
259
|
274
|
"940", "941", /* Censored words list */
|
|
275
|
+ "910", "911", /* INSPIRCD Channel Access List. */
|
|
276
|
+ "954", "953", /* INSPIRCD exemptchanops List. */
|
260
|
277
|
"482", /* Permission Denied */
|
261
|
278
|
"__LISTMODE__" /* Sensible List Modes */};
|
262
|
279
|
}
|