version 0.3.29
[fms.git] / src / nntp / nntpconnection.cpp
index 0212e23..431c1e6 100644 (file)
@@ -17,9 +17,8 @@
        #include <xmem.h>\r
 #endif\r
 \r
-NNTPConnection::NNTPConnection(SOCKET sock):m_socket(sock)\r
+NNTPConnection::NNTPConnection(SOCKET sock):m_socket(sock),m_status(0)\r
 {\r
-       std::string tempval("");\r
 \r
        m_tempbuffer.resize(32768);\r
        \r
@@ -30,12 +29,6 @@ NNTPConnection::NNTPConnection(SOCKET sock):m_socket(sock)
        m_status.m_mode=MODE_NONE;\r
        m_status.m_authenticated=false;\r
 \r
-       Option::Instance()->Get("NNTPAllowPost",tempval);\r
-       if(tempval=="true")\r
-       {\r
-               m_status.m_allowpost=true;\r
-       }\r
-\r
 }\r
 \r
 NNTPConnection::~NNTPConnection()\r
@@ -96,7 +89,7 @@ const bool NNTPConnection::HandleAuthInfoCommand(const NNTPCommand &command)
                }\r
                if(arg=="USER")\r
                {\r
-                       LocalIdentity localid;\r
+                       LocalIdentity localid(m_db);\r
                        if(localid.Load(name))\r
                        {\r
                                m_status.m_authuser=localid;\r
@@ -273,7 +266,7 @@ const bool NNTPConnection::HandleGetTrustCommand(const NNTPCommand &command)
                                        nntpname+=command.m_arguments[i];\r
                                }\r
 \r
-                               TrustExtension tr(m_status.m_authuser.GetID());\r
+                               TrustExtension tr(m_db,m_status.m_authuser.GetID());\r
 \r
                                if(type=="MESSAGE")\r
                                {\r
@@ -341,7 +334,7 @@ const bool NNTPConnection::HandleGetTrustListCommand(const NNTPCommand &command)
 {\r
        if(m_status.m_authenticated)\r
        {\r
-               TrustExtension tr(m_status.m_authuser.GetID());\r
+               TrustExtension tr(m_db,m_status.m_authuser.GetID());\r
                std::map<std::string,TrustExtension::trust> trustlist;\r
                if(tr.GetTrustList(trustlist))\r
                {\r
@@ -410,7 +403,7 @@ const bool NNTPConnection::HandleGroupCommand(const NNTPCommand &command)
 {\r
        if(command.m_arguments.size()==1)\r
        {\r
-               Board board;\r
+               Board board(m_db);\r
                if(board.Load(command.m_arguments[0])==true)\r
                {\r
                        std::ostringstream tempstr;\r
@@ -462,7 +455,7 @@ const bool NNTPConnection::HandleLastCommand(const NNTPCommand &command)
        {\r
                if(m_status.m_messageid!=-1)\r
                {\r
-                       Message mess;\r
+                       Message mess(m_db);\r
 \r
                        if(mess.LoadPrevious(m_status.m_messageid,m_status.m_boardid))\r
                        {\r
@@ -532,7 +525,7 @@ const bool NNTPConnection::HandleListCommand(const NNTPCommand &command)
        {\r
                bool show;\r
                std::ostringstream tempstr;\r
-               BoardList bl;\r
+               BoardList bl(m_db);\r
                bl.Load();\r
 \r
                SendBufferedLine("215 list of newsgroups follows");\r
@@ -563,7 +556,7 @@ const bool NNTPConnection::HandleListCommand(const NNTPCommand &command)
        {\r
                bool show;\r
                std::ostringstream tempstr;\r
-               BoardList bl;\r
+               BoardList bl(m_db);\r
                bl.Load();\r
 \r
                SendBufferedLine("215 list of newsgroups follows");\r
@@ -616,7 +609,7 @@ const bool NNTPConnection::HandleListGroupCommand(const NNTPCommand &command)
 {\r
 \r
        std::ostringstream tempstr;\r
-       Board board;\r
+       Board board(m_db);\r
        bool validgroup=false;\r
        int lownum=-1;\r
        int highnum=-1;\r
@@ -685,7 +678,7 @@ const bool NNTPConnection::HandleListGroupCommand(const NNTPCommand &command)
                tempstr << "211 " << board.GetMessageCount() << " " << board.GetLowMessageID() << " " << board.GetHighMessageID() << " " << board.GetBoardName();\r
                SendBufferedLine(tempstr.str());\r
 \r
-               MessageList ml;\r
+               MessageList ml(m_db);\r
                ml.LoadRange(lownum,highnum,board.GetBoardID());\r
 \r
                for(std::vector<Message>::iterator i=ml.begin(); i!=ml.end(); i++)\r
@@ -791,7 +784,7 @@ const bool NNTPConnection::HandleNewGroupsCommand(const NNTPCommand &command)
                        }\r
                }\r
 \r
-               BoardList bl;\r
+               BoardList bl(m_db);\r
 \r
                bl.LoadNew(Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S"));\r
 \r
@@ -826,7 +819,7 @@ const bool NNTPConnection::HandleNextCommand(const NNTPCommand &command)
        {\r
                if(m_status.m_messageid!=-1)\r
                {\r
-                       Message mess;\r
+                       Message mess(m_db);\r
 \r
                        if(mess.LoadNext(m_status.m_messageid,m_status.m_boardid))\r
                        {\r
@@ -916,7 +909,7 @@ const bool NNTPConnection::HandleOverCommand(const NNTPCommand &command)
 \r
        if(messageuuid!="")\r
        {\r
-               Message mess;\r
+               Message mess(m_db);\r
                if(mess.Load(messageuuid))\r
                {\r
                        SendBufferedLine("224 Overview information follows");\r
@@ -930,13 +923,13 @@ const bool NNTPConnection::HandleOverCommand(const NNTPCommand &command)
        }\r
        else\r
        {\r
-               Board bd;\r
+               Board bd(m_db);\r
                if(m_status.m_boardid!=-1 && bd.Load(m_status.m_boardid))\r
                {\r
                        // single message\r
                        if(highmessageid==-2)\r
                        {\r
-                               Message mess;\r
+                               Message mess(m_db);\r
                                if(mess.Load(lowmessageid,m_status.m_boardid))\r
                                {\r
                                        SendBufferedLine("224 Overview information follows");\r
@@ -951,7 +944,7 @@ const bool NNTPConnection::HandleOverCommand(const NNTPCommand &command)
                        // range with no upper bound\r
                        else if(highmessageid==-1)\r
                        {\r
-                               MessageList ml;\r
+                               MessageList ml(m_db);\r
                                ml.LoadRange(lowmessageid,bd.GetHighMessageID(),m_status.m_boardid);\r
                                if(ml.size()>0)\r
                                {\r
@@ -970,7 +963,7 @@ const bool NNTPConnection::HandleOverCommand(const NNTPCommand &command)
                        // range with upper and lower bound\r
                        else if(highmessageid>=lowmessageid)\r
                        {\r
-                               MessageList ml;\r
+                               MessageList ml(m_db);\r
                                ml.LoadRange(lowmessageid,highmessageid,m_status.m_boardid);\r
                                if(ml.size()>0)\r
                                {\r
@@ -1019,7 +1012,7 @@ const bool NNTPConnection::HandlePostCommand(const NNTPCommand &command)
 \r
 void NNTPConnection::HandlePostedMessage(const std::string &message)\r
 {\r
-       Message mess;\r
+       Message mess(m_db);\r
 \r
        if(mess.ParseNNTPMessage(message))\r
        {\r
@@ -1193,7 +1186,7 @@ const bool NNTPConnection::HandleSetTrustCommand(const NNTPCommand &command)
                                        valid=true;\r
                                }\r
 \r
-                               TrustExtension tr(m_status.m_authuser.GetID());\r
+                               TrustExtension tr(m_db,m_status.m_authuser.GetID());\r
 \r
                                if(type=="MESSAGE")\r
                                {\r
@@ -1276,6 +1269,17 @@ void NNTPConnection::run()
        struct timeval tv;\r
        fd_set writefs,readfs;\r
        int rval;\r
+       std::string tempval("");\r
+\r
+       LoadDatabase();\r
+\r
+       m_status.m_authuser.SetDB(m_db);\r
+       Option option(m_db);\r
+       option.Get("NNTPAllowPost",tempval);\r
+       if(tempval=="true")\r
+       {\r
+               m_status.m_allowpost=true;\r
+       }\r
 \r
        // seed random number generater for this thread\r
        srand(time(NULL));\r
@@ -1400,7 +1404,7 @@ void NNTPConnection::SendArticleParts(const NNTPConnection::NNTPCommand &command
                successcode="223";\r
        }\r
 \r
-       Message message;\r
+       Message message(m_db);\r
        int messageid=m_status.m_messageid;\r
        std::string articleid="";\r
        int type=0;     // default to current messageid, 1=messageid, 2=articleid\r