X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fextra%2Fm_sql.h;h=ce9ce7743df244008ba06a7efd36ae6b4002aac3;hb=3a7023f2c595d14778b3f1f7e53d3914698dd500;hp=2e185d978e243bdfee954ee271b36636d744296d;hpb=068c42db9d97e89e303faff5e944359635b1aa5b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/extra/m_sql.h b/src/modules/extra/m_sql.h index 2e185d978..ce9ce7743 100644 --- a/src/modules/extra/m_sql.h +++ b/src/modules/extra/m_sql.h @@ -18,7 +18,7 @@ using namespace std; // so that we can neatly pass information around the // system. -class SQLRequest +class SQLRequest : public classbase { protected: long conn_id; @@ -65,7 +65,7 @@ class SQLRequest // Upon completion, an SQLRequest returns an SQLResponse. -class SQLResult +class SQLResult : public classbase { protected: int resptype; @@ -118,26 +118,26 @@ class SQLResult } }; -class SQLQuery +class SQLQuery : public classbase { - private: - SQLRequest* rowrequest; + private: + SQLRequest* rowrequest; SQLRequest* query; SQLResult* result; SQLResult* rowresult; - Request* rowquery; - unsigned long dbid; - Module* parent; - Module* SQLModule; - Server* Srv; - + Request* rowquery; + unsigned long dbid; + Module* parent; + Module* SQLModule; + Server* Srv; + std::string error; - bool MakeQueryGoNow(std::string qry) + bool MakeQueryGoNow(std::string qry) { - // Insert Lack of More Original Name here. - Request queryrequest((char*)query, parent, SQLModule); - result = (SQLResult*)queryrequest.Send(); - if (result->GetType() != SQL_ERROR) + // Insert Lack of More Original Name here. + Request queryrequest((char*)query, parent, SQLModule); + result = (SQLResult*)queryrequest.Send(); + if (result->GetType() != SQL_ERROR) { // Query Is fine.. Prepare to get first row... rowrequest = new SQLRequest(SQL_ROW,dbid,""); @@ -148,7 +148,8 @@ class SQLQuery Srv->Log(DEBUG, " ============= SQL Error, Query And Error Follow. ============= "); Srv->Log(DEBUG, "Query: "+ qry); Srv->Log(DEBUG, "Error: "+ result->GetError()); - Srv->Log(DEBUG, " ============================================================== "); + Srv->Log(DEBUG, " ============================================================== "); + error = result->GetError(); // Destroy Variables that were set.. delete query; query = NULL; @@ -156,44 +157,44 @@ class SQLQuery return false; } - public: + public: SQLQuery(Server* S) : Srv(S) { } - SQLQuery(Module* a, unsigned long b, Server* S) : dbid(b), parent(a), Srv(S) - { - // Make a few useful variables.. - SQLModule = Srv->FindModule("m_sql.so"); - } - - ~SQLQuery() - { - } - - bool Query(std::string qry) - { - query = new SQLRequest(SQL_RESULT, dbid, qry); - return MakeQueryGoNow(qry); - } - - bool QueryCount(std::string qry) - { - query = new SQLRequest(SQL_COUNT, dbid, qry); - return MakeQueryGoNow(qry); - } - - bool GetRow() - { + SQLQuery(Module* a, unsigned long b, Server* S) : dbid(b), parent(a), Srv(S) + { + // Make a few useful variables.. + SQLModule = Srv->FindModule("m_sql.so"); + } + + ~SQLQuery() + { + } + + bool Query(std::string qry) + { + query = new SQLRequest(SQL_RESULT, dbid, qry); + return MakeQueryGoNow(qry); + } + + bool QueryCount(std::string qry) + { + query = new SQLRequest(SQL_COUNT, dbid, qry); + return MakeQueryGoNow(qry); + } + + bool GetRow() + { rowresult = (SQLResult*)rowquery->Send(); if (rowresult->GetType() == SQL_ROW) { - // We have got a row.. thats all for now. - return true; - } - // No Row, Error, or end. KILL CALLER! *BANG* - return false; + // We have got a row.. thats all for now. + return true; + } + // No Row, Error, or end. KILL CALLER! *BANG* + return false; } std::string GetField(std::string fname) @@ -204,52 +205,63 @@ class SQLQuery long GetCount() { rowresult = (SQLResult*)rowquery->Send(); - if (rowresult->GetType() == SQL_COUNT) + if (rowresult->GetType() == SQL_COUNT) { - return rowresult->GetCount(); - } + return rowresult->GetCount(); + } else { - return 0; - } - } + return 0; + } + } + + const std::string &GetError() + { + return error; + } - void SQLDone() + void SQLDone() { - // Tell m_sql we are finished.. + // Tell m_sql we are finished.. query->SetQueryType(SQL_DONE); - query->SetConnID(dbid); - Request donerequest((char*)query, parent, SQLModule); - donerequest.Send(); - - // Do Some Clearing up. - delete query; - delete rowrequest; - // Null the variables, so they can be re-used without confusion.. - result = NULL; - query = NULL; - rowrequest = NULL; - rowresult = NULL; - } - - static std::string Sanitise(const std::string& crap) - { - std::string temp = ""; - for (unsigned int q = 0; q < crap.length(); q++) - { - if (crap[q] == '\'') + query->SetConnID(dbid); + Request donerequest((char*)query, parent, SQLModule); + donerequest.Send(); + + // Do Some Clearing up. + delete query; + delete rowrequest; + // Null the variables, so they can be re-used without confusion.. + result = NULL; + query = NULL; + rowrequest = NULL; + rowresult = NULL; + } + + static std::string Sanitise(const std::string& crap) + { + std::string temp = ""; + for (unsigned int q = 0; q < crap.length(); q++) + { + if (crap[q] == '\'') + { + temp += "\\'"; + } + else if (crap[q] == '"') { - temp = temp + "\'"; + temp += "\\\""; } - else if (crap[q] == '"') + else if (crap[q] == '\\') { - temp = temp + "\\\""; + temp += "\\\\"; } - else - temp = temp + crap[q]; - } - return temp; - } + else + { + temp += crap[q]; + } + } + return temp; + } };