#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
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
}\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
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
{\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
{\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
{\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
{\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
{\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
{\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
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
}\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
{\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
\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
}\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
// 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
// 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
\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
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
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
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