/** bm-do-install.cgi * Work with bm-install.html --Ajax/Post--> bm-do-install.cgi --Json--> bm-install.html --> Jump to... * * Book Manager Quick Installer */ #include #include #include #include #include #include #include #include #include "Request.h" #include "Response.h" #include "Util.h" #include "MySQLWrapper.h" #include "json.hpp" using namespace std; using json=nlohmann::json; int doInstall(const string& dbaddr,const string& dbuser,const string& dbpass,const string& dbname,int dbport,const vector& sql, int& errcode,string& errmsg) { MySQLConn conn; int ret=conn.connect(dbaddr.c_str(),dbuser.c_str(),dbpass.c_str(),dbname.c_str(),dbport); if(ret==-1) { errcode=conn.getErrCode(); errmsg=conn.getError(); return -1; } conn.exec("set names utf8",nullptr); int sz=sql.size(); for(int i=0;i splitMultiSQL(const string& multisql) { vector vec; int len=multisql.size(); string sql; for(int i=0;i vec=splitMultiSQL(s); vec.push_back(make_str("insert into bs_user values ('root','",req.post["supass"],"','SuperUser',0,3) ")); int ecode; string emsg; int ret=doInstall(req.post["dbaddr"],req.post["dbuser"],req.post["dbpass"],req.post["dbname"],ParseInt(req.post["dbport"]),vec, ecode,emsg); if(ret<0) { /// Error. j["success"]=0; j["errcode"]=ecode; j["errmsg"]=make_str("SQL Error: ",emsg); } else { j["success"]=1; WriteDBConfig(req.post["dbaddr"],req.post["dbuser"],req.post["dbpass"],req.post["dbname"],ParseInt(req.post["dbport"])); } } else { j["success"]=0; j["errcode"]=2; j["errmsg"]=make_str("Failed to parse parameters. Please retry."); } } else { j["success"]=0; j["errcode"]=3; j["errmsg"]=make_str("Unknown request method."); } res.content.append(j.dump()); res.show(); return 0; }