Advertisement
Guest User

Untitled

a guest
Jan 8th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.18 KB | None | 0 0
  1. bLogs.MySQL = {}
  2. local Sensitive = {}
  3.  
  4. bLogs.MySQL.Enabled = true
  5.  
  6. --// http://billyvenner.co.uk/blogs/wiki/index.php/Configuration#MySQL
  7. --// READ IT!!!
  8.  
  9. --// The IP Address CANNOT be localhost.
  10.  
  11. --// tMySQL4 IS REQUIRED!
  12.  
  13. --// The reason why I do not support mysqloo is because:
  14. --// 1) mysqloo sometimes creates memory leaks
  15. --// 2) mysqloo sometimes does not even go through with a query
  16. --// 3) mysqloo doesnt reconnect to the database
  17. --// 4) mysqloo does not queue anything
  18.  
  19. Sensitive.IPAddress = "polarisrp.us"
  20. Sensitive.Port = 3306
  21. Sensitive.Username = "polarisr_blogad"
  22. Sensitive.Password = "--"
  23. Sensitive.Database = "polarisr_blogs"
  24.  
  25. --// Enable this to see MySQL queries and raw tMySQL4 results.
  26. bLogs.MySQL.Debug = true
  27.  
  28. --/////////////////////////////////////////////////////////////////////////////////--
  29.  
  30. MsgC("\n")
  31.  
  32. hook.Remove("blogs_player","blogs_mysql_player")
  33. hook.Remove("blogs_log","blogs_mysql_log")
  34. if (bLogs.MySQL.Database) then
  35. bLogs.MySQL.Database:Disconnect()
  36. end
  37.  
  38. local function mysql_init()
  39. if (bLogs.MySQL.Enabled == true) then
  40.  
  41. (function()
  42. local tmysql4 = file.Exists("bin/gmsv_tmysql4_*.dll","LUA")
  43. if (tmysql4 == true) then
  44. require("tmysql4")
  45. bLogs.print("tMySQL4 is installed!","good")
  46. bLogs.print("Connecting to database...")
  47.  
  48. if (type(Sensitive.IPAddress) ~= "string") then
  49. bLogs.print("Your configuration is malformed. (IP Address must be a string)","error")
  50. return
  51. end
  52. if (type(Sensitive.IPAddress) == "localhost") then
  53. bLogs.print("Your configuration is malformed. (IP Address cannot be localhost)","error")
  54. return
  55. end
  56. if (type(Sensitive.Port) ~= "number") then
  57. bLogs.print("Your configuration is malformed. (Port must be a number)","error")
  58. return
  59. end
  60. if (type(Sensitive.Username) ~= "string") then
  61. bLogs.print("Your configuration is malformed. (Username must be a string)","error")
  62. return
  63. end
  64. if (type(Sensitive.Password) ~= "string") then
  65. bLogs.print("Your configuration is malformed. (Password must be a string)","error")
  66. return
  67. end
  68. if (type(Sensitive.Database) ~= "string") then
  69. bLogs.print("Your configuration is malformed. (Database must be a string)","error")
  70. return
  71. end
  72. if (string.find(Sensitive.IPAddress,"%s")) then
  73. bLogs.print("Your configuration is malformed. (IP Address contains space(s))","error")
  74. return
  75. end
  76. if (string.find(Sensitive.Database,"%s")) then
  77. bLogs.print("Your configuration is malformed. (Database contains space(s))","error")
  78. return
  79. end
  80.  
  81. bLogs.MySQL.Database,bLogs.MySQL.Error = tmysql.initialize(Sensitive.IPAddress,Sensitive.Username,Sensitive.Password,Sensitive.Database,Sensitive.Port)
  82.  
  83. if (bLogs.MySQL.Error) then
  84. bLogs.print("Could not connect to database: " .. bLogs.MySQL.Error,"error")
  85. return
  86. else
  87. bLogs.print("Connected to database successfully!","good")
  88. bLogs.print("NOTE: MySQL only does anything when a player is connected.","bad")
  89.  
  90. function bLogs.MySQL.Query(query_text_,callback,raw, ... )
  91. local query_text = ""
  92. for _,v in pairs(string.Explode("\n",query_text_)) do
  93. query_text = query_text .. string.Trim(v) .. "\n"
  94. end
  95. query_text = string.sub(query_text,1,-2)
  96. if (bLogs.MySQL.Debug == true) then
  97. bLogs.print(query_text,"bad")
  98. end
  99. bLogs.MySQL.Database:Query(query_text,function(results, ... )
  100. if (bLogs.MySQL.Debug == true) then
  101. PrintTable(results)
  102. end
  103. local res = results[1] or {}
  104. if (res.error ~= nil) then
  105. bLogs.print("Error with query: " .. res.error,"bad")
  106. return
  107. end
  108. if (callback) then
  109. if (raw == true) then
  110. callback(results, ... )
  111. else
  112. callback(res.data or {}, ... )
  113. end
  114. end
  115. end, ... )
  116. end
  117.  
  118. bLogs.MySQL.Query([[SHOW TABLES WHERE
  119. `Tables_in_]] .. Sensitive.Database .. [[` LIKE '%blogs_servers%' OR
  120. `Tables_in_]] .. Sensitive.Database .. [[` LIKE '%blogs_players%' OR
  121. `Tables_in_]] .. Sensitive.Database .. [[` LIKE '%blogs%']],function(find_tables)
  122. local blogs_ = false
  123. local blogs_players_ = false
  124. local blogs_servers_ = false
  125.  
  126. for _,v in pairs(find_tables) do
  127. if (v["Tables_in_" .. Sensitive.Database] == "blogs") then
  128. blogs_ = true
  129. elseif (v["Tables_in_" .. Sensitive.Database] == "blogs_players") then
  130. blogs_players_ = true
  131. elseif (v["Tables_in_" .. Sensitive.Database] == "blogs_servers") then
  132. blogs_servers_ = true
  133. end
  134. end
  135.  
  136. if (blogs_ == false) then
  137. bLogs.print("Could not find the bLogs table! Creating it...","bad")
  138.  
  139. bLogs.MySQL.Query([[CREATE TABLE IF NOT EXISTS `blogs` (
  140. `module` varchar(255) NOT NULL,
  141. `log` text NOT NULL,
  142. `involved` text,
  143. `time` int(11) NOT NULL,
  144. `ip_address` varchar(45) NOT NULL,
  145. `session` mediumint(9) NOT NULL,
  146. `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  147. PRIMARY KEY (`id`),
  148. UNIQUE KEY `id` (`id`)
  149. ) ENGINE=MyISAM DEFAULT CHARSET=utf8]])
  150.  
  151. bLogs.print("Created successfully!","good")
  152. else
  153. bLogs.print("Found bLogs table!","good")
  154. end
  155. if (blogs_players_ == false) then
  156. bLogs.print("Could not find the bLogs Players table! Creating it...","bad")
  157.  
  158. bLogs.MySQL.Query([[CREATE TABLE IF NOT EXISTS `blogs_players` (
  159. `steamid` varchar(85) DEFAULT NULL,
  160. `steamid64` tinyint(17) DEFAULT NULL,
  161. `lastnick` varchar(255) DEFAULT NULL,
  162. UNIQUE KEY `steamid` (`steamid`,`steamid64`)
  163. ) ENGINE=MyISAM DEFAULT CHARSET=utf8]])
  164.  
  165. bLogs.print("Created successfully!","good")
  166. else
  167. bLogs.print("Found players table!","good")
  168. end
  169. if (blogs_servers_ == false) then
  170. bLogs.print("Could not find the bLogs Servers table! Creating it...","bad")
  171.  
  172. bLogs.MySQL.Query([[CREATE TABLE IF NOT EXISTS `blogs_servers` (
  173. `ip_address` varchar(45) NOT NULL,
  174. `name` varchar(255) DEFAULT NULL,
  175. UNIQUE KEY `ip_address` (`ip_address`)
  176. ) ENGINE=MyISAM DEFAULT CHARSET=utf8]])
  177.  
  178. bLogs.print("Created successfully!","good")
  179. else
  180. bLogs.print("Found servers table!","good")
  181. end
  182.  
  183. MsgC("\n")
  184. bLogs.print("Grabbing session number...")
  185.  
  186. bLogs.MySQL.Query("SELECT max(`session`) FROM `blogs`",function(max_session)
  187. Sensitive.Session = (max_session[1]["max(`session`)"] or 0) + 1
  188. bLogs.print("Session #" .. Sensitive.Session,"good")
  189.  
  190. MsgC("\n")
  191.  
  192. bLogs.print("Now logging!","good")
  193.  
  194. MsgC("\n")
  195.  
  196. bLogs.MySQL.Query("INSERT IGNORE INTO `blogs_servers` (`ip_address`) VALUES ('" .. bLogs.MySQL.Database:Escape(bLogs.IPAddress) .. ":" .. GetConVarString("hostport") .. "')")
  197.  
  198. hook.Add("blogs_player","blogs_mysql_player",function(steamid,steamid64,nick)
  199. bLogs.MySQL.Query("INSERT IGNORE INTO `blogs_players` (`steamid`,`steamid64`) VALUES ('" .. bLogs.MySQL.Database:Escape(steamid) .. "','" .. bLogs.MySQL.Database:Escape(steamid64) .. "')")
  200. bLogs.MySQL.Query("UPDATE `blogs_players` SET `lastnick`='" .. bLogs.MySQL.Database:Escape(nick) .. "' WHERE `steamid64`='" .. bLogs.MySQL.Database:Escape(steamid64) .. "'")
  201. end)
  202. hook.Add("blogs_log","blogs_mysql_log",function(logTable)
  203. local involved = {}
  204. for _,v in pairs(logTable.involved or {}) do
  205. if (type(v) == "Player") then
  206. table.insert(involved,{v:SteamID64(),v:SteamID(),v:Nick()})
  207. elseif (type(v) == "Entity") then
  208. table.insert(involved,tostring(v))
  209. else
  210. table.insert(involved,v)
  211. end
  212. end
  213.  
  214. bLogs.MySQL.Query([[INSERT INTO `blogs` (`module`,`log`,`involved`,`time`,`ip_address`,`session`) VALUES
  215. (']] .. bLogs.MySQL.Database:Escape(logTable.module) .. "','" .. bLogs.MySQL.Database:Escape(logTable.log) .. "','" .. bLogs.MySQL.Database:Escape(util.TableToJSON(involved)) .. "'," .. os.time() .. ",'" .. bLogs.MySQL.Database:Escape(bLogs.IPAddress) .. ":" .. GetConVarString("hostport") .. "'," .. Sensitive.Session .. ")")
  216. end)
  217. end)
  218. end)
  219.  
  220. end
  221. else
  222. bLogs.print("bLogs could not connect to MySQL because you don't have tMySQL4 installed.","error")
  223. bLogs.MySQL.Error = "tMySQL4 is not installed."
  224. return
  225. end
  226. end)()
  227.  
  228. else
  229.  
  230. bLogs.print("Not running bLogs MySQL because it is disabled.","error")
  231.  
  232. end
  233. end
  234.  
  235. mysql_init()
  236. concommand.Add("blogs_mysql_init",mysql_init)
  237.  
  238. MsgC("\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement