root/nntp/mode.cc

Revision 868b365c127bbf4f0b52f22da03e32a94a4f6653, 2.5 KB (checked in by Antti-Juhani Kaijanaho <antti-juhani@…>, 3 years ago)

Update the project blurb

Signed-off-by: Antti-Juhani Kaijanaho <antti-juhani@…>

  • Property mode set to 100644
Line 
1/*  This file is part of Alue, the multiprotocol Internet discussion daemon
2
3    Copyright © 2009 Antti-Juhani Kaijanaho
4
5    Alue is free software: you can redistribute it and/or modify it
6    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.
9
10    Alue is distributed in the hope that it will be useful, but
11    WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with Alue.  If not, see <http://www.gnu.org/licenses/>.
17
18 */
19
20#include "connection.hh"
21#include "lexutils.hh"
22
23namespace nntp
24{
25        class mode : public connection::command
26        {
27        public:
28                mode(const char *s) {
29                        connection::register_command(s, this);
30                }
31
32                connection::continuation::ptr
33                perform(connection::cb, const std::string [],  size_t) const;
34        };
35
36        connection::continuation::ptr
37        mode::perform(connection::cb c, const std::string args[], size_t nargs)
38                const
39        {
40                switch (nargs) {
41                case 0:
42                        c.send_line("501 subcommand missing");
43                        return c.dispatch();
44                case 1:
45                        if (!is_keyword(args[0])) {
46                                c.send_line("501 subcommand invalid");
47                                return c.dispatch();
48                        } else {
49                                std::string kw = args[0];
50                                boost::to_upper(kw);
51                                if (args[0] != "READER") {
52                                        c.send_line
53                                                ("501 unrecognized subcommand");
54                                        return c.dispatch();
55                                }
56                        }
57                        break;
58                default:
59                        c.send_line("501 too many parameters");
60                        return c.dispatch();
61                }
62
63                if (c.authenticated())
64                        c.send_line("200 posting allowed");
65                else
66                        c.send_line("200 posting requires authentication");
67                return c.dispatch();
68        }
69};
70namespace {
71        nntp::mode mode("mode");
72}
Note: See TracBrowser for help on using the browser.