· 8 years ago · Dec 22, 2017, 09:58 PM
1#include <amxmodx>
2#include <sqlx>
3
4new g_host, g_user, g_pass, g_db;
5new Host[64], User[32], Pass[32], DB[128];
6new Handle:g_SQLTuple, Handle:SqlConnection;
7new g_error[512], errorcode;
8new reg_file[256], text[128], name[32], pass[34], status[11], query[512], counter = 0;
9
10public plugin_init()
11{
12 register_plugin("Register System Data Transferor", "1.0", "m0skVi4a ;]")
13
14 g_host = get_cvar_pointer("rs_host")
15 g_user = get_cvar_pointer("rs_user")
16 g_pass = get_cvar_pointer("rs_pass")
17 g_db = get_cvar_pointer("rs_db")
18
19 register_srvcmd("file_to_mysql", "FileToMYSQL")
20 register_srvcmd("mysql_to_file", "MYSQLToFile")
21
22 new configs_dir[64];
23
24 get_localinfo("amxx_configsdir", configs_dir, charsmax(configs_dir))
25 formatex(reg_file, charsmax(reg_file), "%s/regusers.ini", configs_dir)
26}
27
28public MYSQLToFile()
29{
30 server_print("Connecting to MYSQL...")
31
32 get_pcvar_string(g_host, Host, charsmax(Host))
33 get_pcvar_string(g_user, User, charsmax(User))
34 get_pcvar_string(g_pass, Pass, charsmax(Pass))
35 get_pcvar_string(g_db, DB, charsmax(DB))
36
37 g_SQLTuple = SQL_MakeDbTuple(Host, User, Pass, DB)
38
39 SqlConnection = SQL_Connect(g_SQLTuple, errorcode, g_error, charsmax(g_error))
40
41 if(SqlConnection == Empty_Handle)
42 {
43 server_print("MYSQL connection failed!")
44 server_print(g_error)
45 return PLUGIN_HANDLED
46 }
47 else
48 {
49 server_print("MYSQL connection succesful!")
50 }
51
52 server_print("Checking Register System file...")
53
54 if(!file_exists(reg_file))
55 {
56 server_print("Register System file - %s not found! Creating new...", reg_file)
57 write_file(reg_file,"Register System file Modifying may cause the clients to can not Login!")
58 }
59 else
60 {
61 server_print("Register System file found!")
62 }
63
64 server_print("Starting to transfer!")
65
66 formatex(query, charsmax(query), "SELECT * FROM `registersystem`;")
67 SQL_ThreadQuery(g_SQLTuple, "QuerySelectData", query)
68
69 return PLUGIN_CONTINUE
70}
71
72public QuerySelectData(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
73{
74 if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
75 {
76 server_print(error)
77 return
78 }
79 else
80 {
81 new col_name = SQL_FieldNameToNum(Query, "Name")
82 new col_pass = SQL_FieldNameToNum(Query, "Password")
83 new col_status = SQL_FieldNameToNum(Query, "Status")
84
85 new file_pointer = fopen(reg_file, "a")
86
87 counter = 0
88
89 while(SQL_MoreResults(Query))
90 {
91 SQL_ReadResult(Query, col_name, name, charsmax(name))
92 SQL_ReadResult(Query, col_pass, pass, charsmax(pass))
93 SQL_ReadResult(Query, col_status, status, charsmax(status))
94
95 if(!equal(status, "LOGGED_IN"))
96 {
97 status = "LOGGED_OUT"
98 }
99
100 formatex(text, charsmax(text), "^n^"%s^" ^"%s^" ^"%s^"", name, pass, status)
101 fprintf(file_pointer, text)
102 counter++
103 server_print("%d. Transfering %s 's registration, password hash: %s Status: %s", counter, name, pass, status)
104 SQL_NextRow(Query)
105 }
106 fclose(file_pointer)
107 server_print("Transfer finished! %d registration were transferred!", counter)
108 }
109}
110
111public FileToMYSQL()
112{
113 server_print("Checking Register System file...")
114
115 if(!file_exists(reg_file))
116 {
117 server_print("Register System file - %s not find!", reg_file)
118 return PLUGIN_HANDLED
119 }
120 else
121 {
122 server_print("Register System file found!")
123 }
124
125 server_print("Connecting to MYSQL...")
126
127 get_pcvar_string(g_host, Host, charsmax(Host))
128 get_pcvar_string(g_user, User, charsmax(User))
129 get_pcvar_string(g_pass, Pass, charsmax(Pass))
130 get_pcvar_string(g_db, DB, charsmax(DB))
131
132 g_SQLTuple = SQL_MakeDbTuple(Host, User, Pass, DB)
133
134 SqlConnection = SQL_Connect(g_SQLTuple, errorcode, g_error, charsmax(g_error))
135
136 if(SqlConnection == Empty_Handle)
137 {
138 server_print("MYSQL connection failed!")
139 server_print(g_error)
140 return PLUGIN_HANDLED
141 }
142 else
143 {
144 server_print("MYSQL connection succesful!")
145 }
146
147 new Handle:Query
148
149 Query = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS registersystem (Name VARCHAR(32), Password VARCHAR(34), Status VARCHAR(11))")
150
151 if(!SQL_Execute(Query))
152 {
153 SQL_QueryError(Query, g_error, charsmax(g_error))
154 server_print(g_error)
155 }
156
157 SQL_FreeHandle(Query)
158 SQL_FreeHandle(SqlConnection)
159
160 server_print("Starting to transfer!")
161
162 new length, line = 0;
163 counter = 0
164
165 while(read_file(reg_file, line++ , text, charsmax(text), length))
166 {
167 if(!text[0] || text[0] == '^n' || text[0] == ';')
168 continue
169
170 parse(text, name, charsmax(name), pass, charsmax(pass), status, charsmax(status))
171
172 if(!equal(status, "LOGGED_IN"))
173 {
174 status = "LOGGED_OUT"
175 }
176
177 formatex(query, charsmax(query), "INSERT INTO `registersystem` (`Name`, `Password`, `Status`) VALUES (^"%s^", ^"%s^", ^"%s^");", name, pass, status)
178 SQL_ThreadQuery(g_SQLTuple, "QuerySetData", query)
179 counter++
180 server_print("%d. Transfering %s 's registration, password hash: %s Status: %s", counter, name, pass, status)
181 }
182
183 server_print("Transfer finished! %d registration were transferred!", counter)
184
185 return PLUGIN_CONTINUE
186}
187
188public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize)
189{
190 if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
191 {
192 server_print(error)
193 return
194 }
195}