removed some debugs
[citadel.git] / citadel / modules / nntp / serv_nntp.c
index a7f2aecb72ba6ace066bd161e785e01c611da390..135d773928c9de33960fff14e90be599cbbbc2fd 100644 (file)
@@ -1,7 +1,7 @@
 //
 // NNTP server module (RFC 3977)
 //
-// Copyright (c) 2014 by the citadel.org team
+// Copyright (c) 2014-2020 by the citadel.org team
 //
 // This program is open source software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License version 3.
 #include <errno.h>
 #include <sys/types.h>
 #include <syslog.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
+#include <time.h>
 #include <sys/wait.h>
 #include <ctype.h>
 #include <string.h>
 #include "ctdl_module.h"
 #include "serv_nntp.h"
 
+#ifndef __FreeBSD__
 extern long timezone;
-
-//     ***************** BEGIN UTILITY FUNCTIONS THAT COULD BE MOVED ELSEWHERE LATER **************
-
+#endif
 
 //
 // Tests whether the supplied string is a valid newsgroup name
@@ -177,15 +165,10 @@ void newsgroup_to_room(char *target, char *source, size_t target_size) {
 }
 
 
-//     *****************  END  UTILITY FUNCTIONS THAT COULD BE MOVED ELSEWHERE LATER **************
-
-
-
 //
 // Here's where our NNTP session begins its happy day.
 //
-void nntp_greeting(void)
-{
+void nntp_greeting(void) {
        strcpy(CC->cs_clientname, "NNTP session");
        CC->cs_flags |= CS_STEALTH;
 
@@ -200,7 +183,7 @@ void nntp_greeting(void)
        }
 
        // Display the standard greeting
-       cprintf("200 %s NNTP Citadel server is not finished yet\r\n", config.c_fqdn);
+       cprintf("200 %s NNTP Citadel server is not finished yet\r\n", CtdlGetConfigStr("c_fqdn"));
 }
 
 
@@ -219,8 +202,7 @@ void nntps_greeting(void) {
 //
 // implements the STARTTLS command
 //
-void nntp_starttls(void)
-{
+void nntp_starttls(void) {
        char ok_response[SIZ];
        char nosup_response[SIZ];
        char error_response[SIZ];
@@ -235,10 +217,9 @@ void nntp_starttls(void)
 //
 // Implements the CAPABILITY command
 //
-void nntp_capabilities(void)
-{
+void nntp_capabilities(void) {
        cprintf("101 Capability list:\r\n");
-       cprintf("IMPLEMENTATION Citadel v%d.%02d\r\n", (REV_LEVEL/100), (REV_LEVEL%100));
+       cprintf("IMPLEMENTATION Citadel %d\r\n", REV_LEVEL);
        cprintf("VERSION 2\r\n");
        cprintf("READER\r\n");
        cprintf("MODE-READER\r\n");
@@ -257,34 +238,23 @@ void nntp_capabilities(void)
 // 
 // Implements the QUIT command
 //
-void nntp_quit(void)
-{
+void nntp_quit(void) {
        cprintf("221 Goodbye...\r\n");
        CC->kill_me = KILLME_CLIENT_LOGGED_OUT;
 }
 
 
-//
-// Cleanup hook for this module
-//
-void nntp_cleanup(void)
-{
-       /* nothing here yet */
-}
-
-
 //
 // Implements the AUTHINFO USER command (RFC 4643)
 //
-void nntp_authinfo_user(const char *username)
-{
-       int a = CtdlLoginExistingUser(NULL, username);
+void nntp_authinfo_user(const char *username) {
+       int a = CtdlLoginExistingUser(username);
        switch (a) {
        case login_already_logged_in:
                cprintf("482 Already logged in\r\n");
                return;
        case login_too_many_users:
-               cprintf("481 Too many users are already online (maximum is %d)\r\n", config.c_maxsessions);
+               cprintf("481 Too many users are already online (maximum is %d)\r\n", CtdlGetConfigInt("c_maxsessions"));
                return;
        case login_ok:
                cprintf("381 Password required for %s\r\n", CC->curr_user);
@@ -301,8 +271,7 @@ void nntp_authinfo_user(const char *username)
 //
 // Implements the AUTHINFO PASS command (RFC 4643)
 //
-void nntp_authinfo_pass(const char *buf)
-{
+void nntp_authinfo_pass(const char *buf) {
        int a;
 
        a = CtdlTryPassword(buf, strlen(buf));
@@ -408,8 +377,7 @@ void output_roomname_in_list_format(struct ctdlroom *qrbuf, int which_format, ch
 //
 // Called once per room by nntp_newgroups() to qualify and possibly output a single room
 //
-void nntp_newgroups_backend(struct ctdlroom *qrbuf, void *data)
-{
+void nntp_newgroups_backend(struct ctdlroom *qrbuf, void *data) {
        int ra;
        int view;
        time_t thetime = *(time_t *)data;
@@ -462,7 +430,11 @@ void nntp_newgroups(const char *cmd) {
        thetime = mktime(&tm);
        if (!strcasecmp(stringy_gmt, "GMT")) {
                tzset();
+#ifdef __FreeBSD__
+               thetime += &tm.tm_gmtoff;
+#else
                thetime += timezone;
+#endif
        }
 
 
@@ -476,8 +448,7 @@ void nntp_newgroups(const char *cmd) {
 //
 // Called once per room by nntp_list() to qualify and possibly output a single room
 //
-void nntp_list_backend(struct ctdlroom *qrbuf, void *data)
-{
+void nntp_list_backend(struct ctdlroom *qrbuf, void *data) {
        int ra;
        int view;
        struct nntp_list_data *nld = (struct nntp_list_data *)data;
@@ -686,7 +657,8 @@ void nntp_mode(const char *cmd) {
        extract_token(which_mode, cmd, 1, ' ', sizeof which_mode);
 
        if (!strcasecmp(which_mode, "reader")) {
-               cprintf("201 Reader mode FIXME implement posting and change to 200\r\n");
+               // FIXME implement posting and change to 200
+               cprintf("201 Reader mode activated\r\n");
        }
        else {
                cprintf("501 unknown mode\r\n");
@@ -770,7 +742,7 @@ void nntp_article(const char *cmd) {
        // We don't know how to do that yet.
        else if ( (lb != NULL) && (rb != NULL) && (lb < rb) ) {
                must_change_currently_selected_article = 0;
-               cprintf("500 FIXME I don't know how to fetch by message-id yet.\r\n");
+               cprintf("500 I don't know how to fetch by message-id yet.\r\n");        // FIXME
                return;
        }
 
@@ -839,7 +811,6 @@ void nntp_article(const char *cmd) {
 // The memory for the returned string is pwnz0red by the caller.
 //
 char *message_id_from_msgnum(long msgnum) {
-
        char *fetched_message_id = NULL;
        CC->redirect_buffer = NewStrBufPlain(NULL, SIZ);
        CtdlOutputMsg(msgnum,
@@ -1053,8 +1024,7 @@ void nntp_xover(const char *cmd) {
 // 
 // Main command loop for NNTP server sessions.
 //
-void nntp_command_loop(void)
-{
+void nntp_command_loop(void) {
        StrBuf *Cmd = NewStrBuf();
        char cmdname[16];
 
@@ -1157,8 +1127,7 @@ void nntp_command_loop(void)
 // This cleanup function blows away the temporary memory used by
 // the NNTP server.
 //
-void nntp_cleanup_function(void)
-{
+void nntp_cleanup_function(void) {
        /* Don't do this stuff if this is not an NNTP session! */
        if (CC->h_command_function != nntp_command_loop) return;
 
@@ -1171,12 +1140,13 @@ void nntp_cleanup_function(void)
 }
 
 const char *CitadelServiceNNTP="NNTP";
+const char *CitadelServiceNNTPS="NNTPS";
 
 CTDL_MODULE_INIT(nntp)
 {
        if (!threading)
        {
-               CtdlRegisterServiceHook(119,                    // FIXME config.c_nntp_port,
+               CtdlRegisterServiceHook(CtdlGetConfigInt("c_nntp_port"),
                                        NULL,
                                        nntp_greeting,
                                        nntp_command_loop,
@@ -1184,15 +1154,14 @@ CTDL_MODULE_INIT(nntp)
                                        CitadelServiceNNTP);
 
 #ifdef HAVE_OPENSSL
-               CtdlRegisterServiceHook(563,                    // FIXME config.c_nntps_port,
+               CtdlRegisterServiceHook(CtdlGetConfigInt("c_nntps_port"),
                                        NULL,
                                        nntps_greeting,
                                        nntp_command_loop,
                                        NULL,
-                                       CitadelServiceNNTP);
+                                       CitadelServiceNNTPS);
 #endif
 
-               CtdlRegisterCleanupHook(nntp_cleanup);
                CtdlRegisterSessionHook(nntp_cleanup_function, EVT_STOP, PRIO_STOP + 250);
        }