· 7 years ago · Sep 10, 2018, 10:36 PM
1<?php
2define('DATABASE_NAME', 'ripple');
3define('DATABASE_USER', 'DB_USR');
4define('DATABASE_PASS', 'DB_PSW');
5define('DATABASE_HOST', 'localhost');
6define('DATABASE_WHAT', 'host');
7
8$db = new DBPDO();
9
10$q = <<<'ENDOFMYSQLQUERY'
11SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
12CREATE DATABASE IF NOT EXISTS `ripple` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
13USE `ripple`;
14
15CREATE TABLE IF NOT EXISTS `2fa` (
16 `userid` int(11) NOT NULL,
17 `ip` int(11) NOT NULL,
18 PRIMARY KEY (`userid`)
19) ENGINE=InnoDB DEFAULT CHARSET=latin1;
20
21CREATE TABLE IF NOT EXISTS `2fa_telegram` (
22 `id` int(11) NOT NULL AUTO_INCREMENT,
23 `userid` int(11) NOT NULL,
24 PRIMARY KEY (`id`)
25) ENGINE=InnoDB DEFAULT CHARSET=latin1;
26
27CREATE TABLE IF NOT EXISTS `2fa_totp` (
28 `enabled` tinyint(1) NOT NULL DEFAULT '0',
29 `userid` int(11) NOT NULL,
30 PRIMARY KEY (`userid`)
31) ENGINE=InnoDB DEFAULT CHARSET=latin1;
32
33CREATE TABLE IF NOT EXISTS `achievements` (
34 `id` int(11) NOT NULL AUTO_INCREMENT,
35 `name` varchar(64) NOT NULL,
36 `description` varchar(128) NOT NULL,
37 `icon` varchar(32) NOT NULL,
38 `version` int(11) NOT NULL DEFAULT '0',
39 PRIMARY KEY (`id`)
40) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
41
42CREATE TABLE `badges` (
43 `id` int(11) NOT NULL,
44 `name` varchar(32) NOT NULL,
45 `icon` varchar(32) NOT NULL
46) ENGINE=InnoDB DEFAULT CHARSET=latin1;
47
48INSERT INTO `badges` (`id`, `name`, `icon`) VALUES
49(1, 'Beta tester 1.5', 'fa-gift'),
50(2, 'None', '');
51
52CREATE TABLE `bancho_channels` (
53 `id` int(11) NOT NULL,
54 `name` varchar(32) NOT NULL,
55 `description` varchar(127) NOT NULL,
56 `public_read` tinyint(4) NOT NULL,
57 `public_write` tinyint(4) NOT NULL,
58 `status` tinyint(4) NOT NULL,
59 `temp` tinyint(1) NOT NULL DEFAULT '0',
60 `hidden` tinyint(1) NOT NULL DEFAULT '0'
61) ENGINE=InnoDB DEFAULT CHARSET=latin1;
62
63INSERT INTO `bancho_channels` (`id`, `name`, `description`, `public_read`, `public_write`, `status`, `temp`, `hidden`) VALUES
64(1, '#osu', 'Main Ripple channel', 1, 1, 1, 0, 0),
65(2, '#announce', 'Announce channel', 1, 0, 1, 0, 0),
66(3, '#admin', 'Admin only channel', 0, 0, 1, 0, 0),
67(4, '#italian', 'Italian community channel', 1, 1, 1, 0, 0),
68(5, '#english', 'English speaking channel', 1, 1, 1, 0, 0);
69
70CREATE TABLE `bancho_messages` (
71 `id` int(11) NOT NULL,
72 `msg_from_userid` int(11) NOT NULL,
73 `msg_from_username` varchar(30) NOT NULL,
74 `msg_to` varchar(32) NOT NULL,
75 `msg` varchar(127) NOT NULL,
76 `time` int(11) NOT NULL
77) ENGINE=InnoDB DEFAULT CHARSET=latin1;
78
79CREATE TABLE `bancho_private_messages` (
80 `id` int(11) NOT NULL,
81 `msg_from_userid` int(11) NOT NULL,
82 `msg_from_username` varchar(30) NOT NULL,
83 `msg_to` varchar(32) NOT NULL,
84 `msg` varchar(127) NOT NULL,
85 `time` int(11) NOT NULL
86) ENGINE=InnoDB DEFAULT CHARSET=latin1;
87
88CREATE TABLE `bancho_settings` (
89 `id` int(11) NOT NULL,
90 `name` varchar(32) NOT NULL,
91 `value_int` int(11) NOT NULL DEFAULT '0',
92 `value_string` varchar(512) NOT NULL
93) ENGINE=InnoDB DEFAULT CHARSET=latin1;
94
95INSERT INTO `bancho_settings` (`id`, `name`, `value_int`, `value_string`) VALUES
96(1, 'bancho_maintenance', 0, ''),
97(2, 'free_direct', 1, ''),
98(3, 'menu_icon', 0, 'https://i.imgur.com/L61sxgX.png|http://emily.steffen.sexy'),
99(4, 'login_messages', 0, ''),
100(5, 'restricted_joke', 0, ''),
101(6, 'login_notification', 0, 'Welcome to pep.py'),
102(7, 'osu_versions', 0, ''),
103(8, 'osu_md5s', 0, '');
104
105CREATE TABLE `bancho_tokens` (
106 `id` int(11) NOT NULL,
107 `token` varchar(16) NOT NULL,
108 `osu_id` int(11) NOT NULL,
109 `latest_message_id` int(11) NOT NULL,
110 `latest_private_message_id` int(11) NOT NULL,
111 `latest_packet_time` int(11) NOT NULL,
112 `latest_heavy_packet_time` int(11) NOT NULL,
113 `joined_channels` varchar(512) NOT NULL,
114 `game_mode` tinyint(4) NOT NULL,
115 `action` int(11) NOT NULL,
116 `action_text` varchar(128) NOT NULL,
117 `kicked` tinyint(4) NOT NULL
118) ENGINE=InnoDB DEFAULT CHARSET=latin1;
119
120CREATE TABLE `beatmaps` (
121 `id` int(11) NOT NULL,
122 `beatmap_id` int(11) NOT NULL DEFAULT '0',
123 `beatmapset_id` int(11) NOT NULL DEFAULT '0',
124 `beatmap_md5` varchar(32) NOT NULL DEFAULT '',
125 `song_name` varchar(128) NOT NULL DEFAULT '',
126 `ar` float NOT NULL DEFAULT '0',
127 `od` float NOT NULL DEFAULT '0',
128 `difficulty_std` float NOT NULL DEFAULT '0',
129 `difficulty_taiko` float NOT NULL DEFAULT '0',
130 `difficulty_ctb` float NOT NULL DEFAULT '0',
131 `difficulty_mania` float NOT NULL DEFAULT '0',
132 `max_combo` int(11) NOT NULL DEFAULT '0',
133 `hit_length` int(11) NOT NULL DEFAULT '0',
134 `bpm` int(11) NOT NULL DEFAULT '0',
135 `ranked` tinyint(4) NOT NULL DEFAULT '0',
136 `latest_update` int(11) NOT NULL DEFAULT '0',
137 `ranked_status_freezed` tinyint(1) NOT NULL DEFAULT '0',
138 `playcount` int(11) NOT NULL DEFAULT '0',
139 `passcount` int(11) NOT NULL DEFAULT '0'
140) ENGINE=InnoDB DEFAULT CHARSET=latin1;
141
142CREATE TABLE `beatmaps_names` (
143 `id` int(11) NOT NULL,
144 `beatmap_md5` varchar(32) NOT NULL DEFAULT '',
145 `beatmap_name` varchar(256) NOT NULL DEFAULT ''
146) ENGINE=InnoDB DEFAULT CHARSET=latin1;
147
148CREATE TABLE `beta_keys` (
149 `id` int(11) NOT NULL,
150 `key_md5` varchar(32) NOT NULL DEFAULT '',
151 `description` varchar(128) NOT NULL DEFAULT '',
152 `allowed` tinyint(4) NOT NULL DEFAULT '0',
153 `public` tinyint(4) NOT NULL DEFAULT '0'
154) ENGINE=InnoDB DEFAULT CHARSET=latin1;
155
156INSERT INTO `beta_keys` (`id`, `key_md5`, `description`, `allowed`, `public`) VALUES
157(1, '110fe4a3830966be01d0b513fcdb4f66', 'betakey', 1, 1);
158
159CREATE TABLE IF NOT EXISTS `cakes` (
160 `id` int(11) NOT NULL AUTO_INCREMENT,
161 `userid` int(11) NOT NULL,
162 `score_id` int(11) NOT NULL,
163 `processes` blob NOT NULL,
164 `detected` json NOT NULL,
165 `flags` int(11) NOT NULL DEFAULT '0',
166 PRIMARY KEY (`id`)
167) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
168
169CREATE TABLE IF NOT EXISTS `discord_roles` (
170 `id` int(11) NOT NULL AUTO_INCREMENT,
171 `userid` int(11) NOT NULL,
172 `discordid` int(11) NOT NULL,
173 `roleid` int(11) NOT NULL,
174 PRIMARY KEY (`id`)
175) ENGINE=InnoDB DEFAULT CHARSET=latin1;
176
177CREATE TABLE IF NOT EXISTS `docs` (
178 `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
179 `doc_name` varchar(255) NOT NULL DEFAULT 'New Documentation File',
180 `doc_contents` mediumtext NOT NULL,
181 `public` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
182 `old_name` varchar(200) DEFAULT NULL,
183 PRIMARY KEY (`id`)
184) ENGINE=MyISAM DEFAULT CHARSET=latin1;
185
186CREATE TABLE IF NOT EXISTS `eggs` (
187 `id` int(11) NOT NULL AUTO_INCREMENT,
188 `type` enum('hash','path','file','title') NOT NULL DEFAULT 'hash',
189 `value` varchar(128) NOT NULL,
190 `tag` varchar(128) NOT NULL,
191 `ban` tinyint(1) NOT NULL DEFAULT '0',
192 `is_regex` tinyint(1) NOT NULL DEFAULT '0',
193 PRIMARY KEY (`id`)
194) ENGINE=InnoDB DEFAULT CHARSET=latin1;
195
196CREATE TABLE `hw_user` (
197 `id` int(11) NOT NULL,
198 `userid` int(11) NOT NULL,
199 `mac` varchar(32) NOT NULL,
200 `unique_id` varchar(32) NOT NULL,
201 `disk_id` varchar(32) NOT NULL,
202 `occurencies` int(11) NOT NULL DEFAULT '0',
203 `activated` tinyint(1) NOT NULL DEFAULT '0'
204) ENGINE=InnoDB DEFAULT CHARSET=latin1;
205
206CREATE TABLE `identity_tokens` (
207 `userid` int(11) NOT NULL,
208 `token` varchar(64) NOT NULL
209) ENGINE=InnoDB DEFAULT CHARSET=latin1;
210
211CREATE TABLE `ip_user` (
212 `userid` int(11) NOT NULL,
213 `ip` text NOT NULL,
214 `occurencies` int(11) NOT NULL
215) ENGINE=InnoDB DEFAULT CHARSET=latin1;
216
217CREATE TABLE `leaderboard_ctb` (
218 `position` int(10) UNSIGNED NOT NULL,
219 `user` int(11) NOT NULL,
220 `v` bigint(20) NOT NULL
221) ENGINE=InnoDB DEFAULT CHARSET=latin1;
222
223CREATE TABLE `leaderboard_mania` (
224 `position` int(10) UNSIGNED NOT NULL,
225 `user` int(11) NOT NULL,
226 `v` bigint(20) NOT NULL
227) ENGINE=InnoDB DEFAULT CHARSET=latin1;
228
229CREATE TABLE `leaderboard_std` (
230 `position` int(10) UNSIGNED NOT NULL,
231 `user` int(11) NOT NULL,
232 `v` bigint(20) NOT NULL
233) ENGINE=InnoDB DEFAULT CHARSET=latin1;
234
235CREATE TABLE `leaderboard_taiko` (
236 `position` int(10) UNSIGNED NOT NULL,
237 `user` int(11) NOT NULL,
238 `v` bigint(20) NOT NULL
239) ENGINE=InnoDB DEFAULT CHARSET=latin1;
240
241CREATE TABLE IF NOT EXISTS `main_menu_icons` (
242 `file_id` int(11) NOT NULL AUTO_INCREMENT,
243 `url` varchar(128) NOT NULL,
244 `is_current` tinyint(1) NOT NULL,
245 PRIMARY KEY (`file_id`)
246) ENGINE=InnoDB DEFAULT CHARSET=latin1;
247
248CREATE TABLE `osin_access` (
249 `scope` int(11) NOT NULL DEFAULT '0',
250 `created_at` int(11) NOT NULL DEFAULT '0',
251 `client` int(11) NOT NULL DEFAULT '0',
252 `extra` int(11) NOT NULL DEFAULT '0'
253) ENGINE=InnoDB DEFAULT CHARSET=latin1;
254
255CREATE TABLE `osin_client` (
256 `id` int(11) NOT NULL,
257 `secret` varchar(64) NOT NULL DEFAULT '',
258 `extra` varchar(127) NOT NULL DEFAULT '',
259 `redirect_uri` varchar(127) NOT NULL DEFAULT ''
260) ENGINE=InnoDB DEFAULT CHARSET=latin1;
261
262CREATE TABLE `osin_client_user` (
263 `client_id` int(11) NOT NULL DEFAULT '0',
264 `user` int(11) NOT NULL DEFAULT '0'
265) ENGINE=InnoDB DEFAULT CHARSET=latin1;
266
267CREATE TABLE `password_recovery` (
268 `id` int(11) NOT NULL,
269 `k` varchar(80) NOT NULL,
270 `u` varchar(30) NOT NULL,
271 `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
272) ENGINE=MyISAM DEFAULT CHARSET=latin1;
273
274CREATE TABLE `privileges_groups` (
275 `id` int(11) NOT NULL,
276 `name` varchar(32) NOT NULL,
277 `privileges` int(11) NOT NULL,
278 `color` varchar(32) NOT NULL
279) ENGINE=InnoDB DEFAULT CHARSET=latin1;
280
281INSERT INTO `privileges_groups` (`id`, `name`, `privileges`, `color`) VALUES
282(1, 'Banned', 0, ''),
283(2, 'BAT', 267, ''),
284(3, 'Chat Moderators', 2883911, ''),
285(4, 'Community Manager ', 978427, ''),
286(5, 'Developer', 1043995, ''),
287(6, 'Donor', 7, ''),
288(7, 'God', 1048575, 'primary'),
289(8, 'Normal User', 3, ''),
290(9, 'Pending', 1048576, ''),
291(10, 'Restricted', 2, '');
292
293CREATE TABLE `profile_backgrounds` (
294 `uid` int(11) NOT NULL,
295 `time` int(11) NOT NULL,
296 `type` int(11) NOT NULL,
297 `value` text NOT NULL
298) ENGINE=InnoDB DEFAULT CHARSET=latin1;
299
300CREATE TABLE `rank_requests` (
301 `id` int(11) NOT NULL,
302 `userid` int(11) NOT NULL,
303 `bid` int(11) NOT NULL,
304 `type` varchar(8) NOT NULL,
305 `time` int(11) NOT NULL,
306 `blacklisted` tinyint(1) NOT NULL
307) ENGINE=InnoDB DEFAULT CHARSET=latin1;
308
309CREATE TABLE `remember` (
310 `id` int(11) NOT NULL,
311 `userid` int(11) NOT NULL,
312 `series_identifier` int(11) DEFAULT NULL,
313 `token_sha` varchar(255) DEFAULT NULL
314) ENGINE=InnoDB DEFAULT CHARSET=latin1;
315
316CREATE TABLE `reports` (
317 `id` int(11) NOT NULL,
318 `name` varchar(128) NOT NULL,
319 `from_username` varchar(32) NOT NULL,
320 `content` varchar(1024) NOT NULL,
321 `type` tinyint(4) NOT NULL,
322 `open_time` varchar(18) NOT NULL,
323 `update_time` varchar(18) NOT NULL,
324 `status` tinyint(4) NOT NULL,
325 `response` varchar(1024) NOT NULL
326) ENGINE=InnoDB DEFAULT CHARSET=latin1;
327
328CREATE TABLE `scores` (
329 `id` int(11) NOT NULL,
330 `beatmap_md5` varchar(32) NOT NULL DEFAULT '',
331 `userid` int(11) NOT NULL,
332 `score` bigint(20) DEFAULT NULL,
333 `max_combo` int(11) NOT NULL DEFAULT '0',
334 `full_combo` tinyint(1) NOT NULL DEFAULT '0',
335 `mods` int(11) NOT NULL DEFAULT '0',
336 `300_count` int(11) NOT NULL DEFAULT '0',
337 `100_count` int(11) NOT NULL DEFAULT '0',
338 `50_count` int(11) NOT NULL DEFAULT '0',
339 `katus_count` int(11) NOT NULL DEFAULT '0',
340 `gekis_count` int(11) NOT NULL DEFAULT '0',
341 `misses_count` int(11) NOT NULL DEFAULT '0',
342 `time` varchar(18) NOT NULL DEFAULT '',
343 `play_mode` tinyint(4) NOT NULL DEFAULT '0',
344 `completed` tinyint(11) NOT NULL DEFAULT '0',
345 `accuracy` float(15,12) DEFAULT NULL,
346 `pp` float DEFAULT '0'
347) ENGINE=InnoDB DEFAULT CHARSET=latin1;
348
349CREATE TABLE `system_settings` (
350 `id` int(11) NOT NULL,
351 `name` varchar(32) NOT NULL,
352 `value_int` int(11) NOT NULL DEFAULT '0',
353 `value_string` varchar(512) NOT NULL
354) ENGINE=InnoDB DEFAULT CHARSET=latin1;
355
356INSERT INTO `system_settings` (`id`, `name`, `value_int`, `value_string`) VALUES
357(1, 'website_maintenance', 0, ''),
358(2, 'game_maintenance', 0, ''),
359(3, 'website_global_alert', 0, ''),
360(4, 'website_home_alert', 0, ''),
361(5, 'registrations_enabled', 1, '');
362
363CREATE TABLE `tokens` (
364 `id` int(11) NOT NULL,
365 `user` varchar(31) NOT NULL,
366 `privileges` int(11) NOT NULL,
367 `description` varchar(255) NOT NULL,
368 `token` varchar(127) NOT NULL,
369 `private` tinyint(4) NOT NULL,
370 `last_updated` int(11) NOT NULL DEFAULT '0'
371) ENGINE=InnoDB DEFAULT CHARSET=latin1;
372
373REATE TABLE IF NOT EXISTS `users` (
374 `id` int(11) NOT NULL AUTO_INCREMENT,
375 `username` varchar(30) NOT NULL,
376 `username_safe` varchar(30) NOT NULL,
377 `password_md5` varchar(127) NOT NULL,
378 `salt` varchar(32) NOT NULL,
379 `email` varchar(254) NOT NULL,
380 `register_datetime` int(10) NOT NULL,
381 `rank` tinyint(1) NOT NULL DEFAULT '1',
382 `achievements_version` int(11) NOT NULL DEFAULT '0',
383 `allowed` tinyint(1) NOT NULL DEFAULT '1',
384 `latest_activity` int(10) NOT NULL DEFAULT '0',
385 `silence_end` int(11) NOT NULL DEFAULT '0',
386 `silence_reason` varchar(127) NOT NULL DEFAULT '',
387 `notes` varchar(127) NOT NULL DEFAULT '',
388 `ban_datetime` int(11) NOT NULL DEFAULT '0',
389 `password_version` tinyint(4) NOT NULL DEFAULT '1',
390 `privileges` int(11) NOT NULL,
391 `donor_expire` int(11) NOT NULL DEFAULT '0',
392 `flags` int(11) NOT NULL DEFAULT '0',
393 PRIMARY KEY (`id`)
394) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
395
396CREATE TABLE IF NOT EXISTS `users_achievements` (
397 `user_id` int(11) NOT NULL,
398 `achievement_id` int(11) NOT NULL,
399 `time` int(11) NOT NULL
400) ENGINE=InnoDB DEFAULT CHARSET=latin1;
401
402CREATE TABLE `users_relationships` (
403 `id` int(11) NOT NULL,
404 `user1` int(11) NOT NULL,
405 `user2` int(11) NOT NULL
406) ENGINE=InnoDB DEFAULT CHARSET=latin1;
407
408CREATE TABLE `users_stats` (
409 `id` int(11) NOT NULL,
410 `username` varchar(30) NOT NULL,
411 `username_aka` varchar(32) NOT NULL DEFAULT '',
412 `user_color` varchar(16) NOT NULL DEFAULT 'black',
413 `user_style` varchar(128) NOT NULL DEFAULT '',
414 `ranked_score_std` bigint(20) DEFAULT NULL,
415 `playcount_std` int(11) NOT NULL DEFAULT '0',
416 `total_score_std` bigint(20) DEFAULT NULL,
417 `replays_watched_std` int(11) UNSIGNED NOT NULL DEFAULT '0',
418 `ranked_score_taiko` bigint(20) DEFAULT NULL,
419 `playcount_taiko` int(11) NOT NULL DEFAULT '0',
420 `total_score_taiko` bigint(20) DEFAULT NULL,
421 `replays_watched_taiko` int(11) NOT NULL DEFAULT '0',
422 `ranked_score_ctb` bigint(20) DEFAULT NULL,
423 `playcount_ctb` int(11) NOT NULL DEFAULT '0',
424 `total_score_ctb` bigint(20) DEFAULT NULL,
425 `replays_watched_ctb` int(11) NOT NULL DEFAULT '0',
426 `ranked_score_mania` bigint(20) DEFAULT NULL,
427 `playcount_mania` int(11) NOT NULL DEFAULT '0',
428 `total_score_mania` bigint(20) DEFAULT NULL,
429 `replays_watched_mania` int(10) UNSIGNED NOT NULL DEFAULT '0',
430 `total_hits_std` int(11) NOT NULL DEFAULT '0',
431 `total_hits_taiko` int(11) NOT NULL DEFAULT '0',
432 `total_hits_ctb` int(11) NOT NULL DEFAULT '0',
433 `total_hits_mania` int(11) NOT NULL DEFAULT '0',
434 `country` char(2) NOT NULL DEFAULT 'XX',
435 `show_country` tinyint(4) NOT NULL DEFAULT '1',
436 `level_std` int(11) NOT NULL DEFAULT '1',
437 `level_taiko` int(11) NOT NULL DEFAULT '1',
438 `level_ctb` int(11) NOT NULL DEFAULT '1',
439 `level_mania` int(11) NOT NULL DEFAULT '1',
440 `avg_accuracy_std` float(15,12) NOT NULL DEFAULT '0.000000000000',
441 `avg_accuracy_taiko` float(15,12) NOT NULL DEFAULT '0.000000000000',
442 `avg_accuracy_ctb` float(15,12) NOT NULL DEFAULT '0.000000000000',
443 `avg_accuracy_mania` float(15,12) NOT NULL DEFAULT '0.000000000000',
444 `pp_std` int(11) NOT NULL DEFAULT '0',
445 `pp_taiko` int(11) NOT NULL DEFAULT '0',
446 `pp_ctb` int(11) NOT NULL DEFAULT '0',
447 `pp_mania` int(11) NOT NULL DEFAULT '0',
448 `badges_shown` varchar(24) NOT NULL DEFAULT '1,0,0,0,0,0',
449 `safe_title` tinyint(4) NOT NULL DEFAULT '0',
450 `userpage_content` mediumtext,
451 `play_style` smallint(6) NOT NULL DEFAULT '0',
452 `favourite_mode` tinyint(4) NOT NULL DEFAULT '0',
453 `custom_badge_icon` varchar(32) NOT NULL DEFAULT '',
454 `custom_badge_name` varchar(32) NOT NULL DEFAULT '',
455 `can_custom_badge` tinyint(1) NOT NULL DEFAULT '0',
456 `show_custom_badge` tinyint(1) NOT NULL DEFAULT '0'
457) ENGINE=InnoDB DEFAULT CHARSET=latin1;
458
459CREATE TABLE `user_badges` (
460 `user` int(11) NOT NULL,
461 `badge` int(11) NOT NULL
462) ENGINE=InnoDB DEFAULT CHARSET=latin1;
463
464ALTER TABLE `2fa`
465 ADD PRIMARY KEY (`userid`);
466
467ALTER TABLE `2fa_telegram`
468 ADD PRIMARY KEY (`userid`);
469
470ALTER TABLE `2fa_totp`
471 ADD PRIMARY KEY (`userid`);
472
473ALTER TABLE `badges`
474 ADD PRIMARY KEY (`id`);
475
476ALTER TABLE `bancho_channels`
477 ADD PRIMARY KEY (`id`);
478
479ALTER TABLE `bancho_messages`
480 ADD PRIMARY KEY (`id`);
481
482ALTER TABLE `bancho_private_messages`
483 ADD PRIMARY KEY (`id`);
484
485ALTER TABLE `bancho_settings`
486 ADD PRIMARY KEY (`id`);
487
488ALTER TABLE `bancho_tokens`
489 ADD PRIMARY KEY (`id`);
490
491ALTER TABLE `beatmaps`
492 ADD PRIMARY KEY (`id`);
493
494ALTER TABLE `beatmaps_names`
495 ADD PRIMARY KEY (`id`);
496
497ALTER TABLE `beta_keys`
498 ADD PRIMARY KEY (`id`);
499
500ALTER TABLE `discord_roles`
501 ADD PRIMARY KEY (`id`);
502
503ALTER TABLE `docs`
504 ADD PRIMARY KEY (`id`);
505
506ALTER TABLE `hw_user`
507 ADD PRIMARY KEY (`id`),
508 ADD UNIQUE KEY `userid` (`userid`);
509
510ALTER TABLE `identity_tokens`
511 ADD UNIQUE KEY `userid` (`userid`);
512
513ALTER TABLE `ip_user`
514 ADD UNIQUE KEY `userid` (`userid`);
515
516ALTER TABLE `leaderboard_ctb`
517 ADD PRIMARY KEY (`position`);
518
519ALTER TABLE `leaderboard_mania`
520 ADD PRIMARY KEY (`position`);
521
522ALTER TABLE `leaderboard_std`
523 ADD PRIMARY KEY (`position`);
524
525ALTER TABLE `leaderboard_taiko`
526 ADD PRIMARY KEY (`position`);
527
528ALTER TABLE `osin_client`
529 ADD PRIMARY KEY (`id`);
530
531ALTER TABLE `password_recovery`
532 ADD PRIMARY KEY (`id`);
533
534ALTER TABLE `privileges_groups`
535 ADD PRIMARY KEY (`id`),
536 ADD UNIQUE KEY `name` (`name`);
537
538ALTER TABLE `profile_backgrounds`
539 ADD PRIMARY KEY (`uid`);
540
541ALTER TABLE `rank_requests`
542 ADD PRIMARY KEY (`id`),
543 ADD UNIQUE KEY `bid` (`bid`);
544
545ALTER TABLE `remember`
546 ADD PRIMARY KEY (`id`);
547
548ALTER TABLE `reports`
549 ADD PRIMARY KEY (`id`);
550
551ALTER TABLE `scores`
552 ADD PRIMARY KEY (`id`);
553
554ALTER TABLE `system_settings`
555 ADD PRIMARY KEY (`id`);
556
557ALTER TABLE `tokens`
558 ADD PRIMARY KEY (`id`);
559
560ALTER TABLE `users`
561 ADD PRIMARY KEY (`id`);
562
563ALTER TABLE `users_relationships`
564 ADD PRIMARY KEY (`id`);
565
566ALTER TABLE `users_stats`
567 ADD PRIMARY KEY (`id`);
568
569ALTER TABLE `user_badges`
570 ADD PRIMARY KEY (`user`);
571
572ALTER TABLE `badges`
573 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
574ALTER TABLE `bancho_channels`
575 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
576ALTER TABLE `bancho_messages`
577 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
578ALTER TABLE `bancho_private_messages`
579 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
580ALTER TABLE `bancho_settings`
581 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
582ALTER TABLE `bancho_tokens`
583 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
584ALTER TABLE `beatmaps`
585 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
586ALTER TABLE `beatmaps_names`
587 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
588ALTER TABLE `beta_keys`
589 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
590ALTER TABLE `discord_roles`
591 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
592ALTER TABLE `docs`
593 MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT;
594ALTER TABLE `hw_user`
595 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
596ALTER TABLE `osin_client`
597 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
598ALTER TABLE `password_recovery`
599 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
600ALTER TABLE `privileges_groups`
601 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
602ALTER TABLE `rank_requests`
603 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
604ALTER TABLE `remember`
605 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
606ALTER TABLE `reports`
607 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
608ALTER TABLE `scores`
609 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
610ALTER TABLE `system_settings`
611 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
612ALTER TABLE `tokens`
613 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
614ALTER TABLE `users`
615 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=999;
616ALTER TABLE `users_relationships`
617 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
618ALTER TABLE `users_stats`
619 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=999;
620ENDOFMYSQLQUERY;
621
622$db->execute($q);
623
624function randomString($l) {
625 $c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
626 $res = '';
627 srand((float) microtime() * 1000000);
628 for ($i = 0; $i < $l; $i++) {
629 $res .= $c[rand() % strlen($c)];
630 }
631
632 return $res;
633}
634
635echo "Fokabot doesn't exist. Creating account...\n";
636$plainPassword = randomString(8);
637$options = ['cost' => 9, 'salt' => base64_decode(base64_encode(mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)))];
638$md5Password = crypt(md5($plainPassword), '$2y$'.$options['salt']);
639$db->execute("INSERT INTO `users`(`id`, `username`, `username_safe`, `password_md5`, `salt`, `email`, `register_datetime`, `rank`, `allowed`, `latest_activity`, `silence_end`, `silence_reason`, `password_version`, `privileges`, `flags`) VALUES ('999', 'FokaBot', 'fokabot', ?, ?, 'fo@kab.ot', '1452544880', '4', '1', '0', '0', '', 1, 978427, 0);", [$md5Password, base64_encode($options['salt'])]);
640$db->execute("INSERT INTO `users_stats`(`id`, `username`, `username_aka`, `user_color`, `user_style`, `ranked_score_std`, `playcount_std`, `total_score_std`, `replays_watched_std`, `ranked_score_taiko`, `playcount_taiko`, `total_score_taiko`, `replays_watched_taiko`, `ranked_score_ctb`, `playcount_ctb`, `total_score_ctb`, `replays_watched_ctb`, `ranked_score_mania`, `playcount_mania`, `total_score_mania`, `replays_watched_mania`, `total_hits_std`, `total_hits_taiko`, `total_hits_ctb`, `total_hits_mania`, `country`, `show_country`, `level_std`, `level_taiko`, `level_ctb`, `level_mania`, `avg_accuracy_std`, `avg_accuracy_taiko`, `avg_accuracy_ctb`, `avg_accuracy_mania`, `pp_std`, `pp_taiko`, `pp_ctb`, `pp_mania`, `badges_shown`, `safe_title`, `userpage_content`, `play_style`, `favourite_mode`) VALUES ('999', 'FokaBot', '', 'black', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'XX', '1', '0', '0', '0', '0', '0.000000000000', '0.000000000000', '0.000000000000', '0.000000000000', '0', '0', '0', '0', '3,4,11,0,0,0', '0', '', 0, 0);");
641echo 'Fokabot account created! Password is: '.$plainPassword."\n";
642echo 'Yepp... thats all we got for now. Some stuff might be missing as not everything is tested and set up correctly.';
643
644class DBPDO {
645 public $pdo;
646 private $error;
647
648 public function __construct() {
649 $this->connect();
650 }
651
652 public function prep_query($query) {
653 return $this->pdo->prepare($query);
654 }
655
656 public function connect() {
657 if (!$this->pdo) {
658 $dsn = 'mysql:dbname='.DATABASE_NAME.';'.DATABASE_WHAT.'='.DATABASE_HOST;
659 $user = DATABASE_USER;
660 $password = DATABASE_PASS;
661 try {
662 $this->pdo = new PDO($dsn, $user, $password, [PDO::ATTR_PERSISTENT => true]);
663
664 return true;
665 }
666 catch(PDOException $e) {
667 $this->error = $e->getMessage();
668 die($this->error);
669
670 return false;
671 }
672 } else {
673 $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
674
675 return true;
676 }
677 }
678
679 public function table_exists($table_name) {
680 $stmt = $this->prep_query('SHOW TABLES LIKE ?');
681 $stmt->execute([$this->add_table_prefix($table_name)]);
682
683 return $stmt->rowCount() > 0;
684 }
685
686 public function execute($query, $values = null) {
687 if ($values === null) {
688 $values = [];
689 } elseif (!is_array($values)) {
690 $values = [$values];
691 }
692 $stmt = $this->prep_query($query);
693 $stmt->execute($values);
694
695 return $stmt;
696 }
697
698 public function fetch($query, $values = null) {
699 if ($values === null) {
700 $values = [];
701 } elseif (!is_array($values)) {
702 $values = [$values];
703 }
704 $stmt = $this->execute($query, $values);
705
706 return $stmt->fetch(PDO::FETCH_ASSOC);
707 }
708
709 public function fetchAll($query, $values = null, $key = null) {
710 if ($values === null) {
711 $values = [];
712 } elseif (!is_array($values)) {
713 $values = [$values];
714 }
715 $stmt = $this->execute($query, $values);
716 $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
717 // Allows the user to retrieve results using a
718 // column from the results as a key for the array
719 if ($key != null && $results[0][$key]) {
720 $keyed_results = [];
721 foreach ($results as $result) {
722 $keyed_results[$result[$key]] = $result;
723 }
724 $results = $keyed_results;
725 }
726
727 return $results;
728 }
729
730 public function lastInsertId() {
731 return $this->pdo->lastInsertId();
732 }
733}
734?>