SMTP: correct unescaping of posted messages containing lines with single dot.
3 * see AUTHORS for the list of contributors
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 package org.sonews.daemon.command;
21 import java.io.IOException;
22 import org.sonews.daemon.NNTPConnection;
23 import org.sonews.storage.Group;
24 import org.sonews.storage.StorageBackendException;
25 import org.sonews.storage.StorageManager;
28 * Class handling the GROUP command.
34 * 211 number low high group Group successfully selected
35 * 411 No such newsgroup
38 * group Name of newsgroup
39 * number Estimated number of articles in the group
40 * low Reported low water mark
41 * high Reported high water mark
45 * @author Christian Lins
46 * @author Dennis Schwerdel
49 public class GroupCommand implements Command
53 public String[] getSupportedCommandStrings()
55 return new String[] {"GROUP"};
59 public boolean hasFinished()
65 public String impliedCapability()
71 public boolean isStateful()
77 public void processLine(NNTPConnection conn, final String line, byte[] raw)
78 throws IOException, StorageBackendException
80 final String[] command = line.split(" ");
83 if (command.length >= 2) {
84 group = StorageManager.current().getGroup(command[1]);
85 if (group == null || group.isDeleted()) {
86 conn.println("411 no such news group");
88 conn.setCurrentGroup(group);
89 conn.println("211 " + group.getPostingsCount() + " " + group.getFirstArticleNumber()
90 + " " + group.getLastArticleNumber() + " " + group.getName() + " group selected");
93 conn.println("500 no group name given");