friendship ended with social-app. php is my new best friend
1<?php
2require_once('config.php');
3$db = mysqli_init();
4$db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
5$db->set_charset('utf8mb4');
6print_r($db->character_set_name());
7
8// check for existence of db
9$db->real_query('create database if not exists '.DB_NAME.';');
10// select db
11$db->real_query('use '.DB_NAME.';');
12// create tables if they don't exist
13$db->real_query('create table if not exists user_cache (did varchar(64) not null unique primary key, handle varchar(255) not null unique, display_name text, description text, avatar text, banner text, pds text not null, pinned_post text, expires int not null);');
14$db->real_query('create table if not exists minidoc_cache (did varchar(64) not null primary key, handle varchar(255) not null unique, pds text not null, expires int not null);');
15$db->real_query('create table if not exists post_cache (rkey varchar(64) not null primary key, did varchar(64) not null, text text, embed_type varchar(32), embed_data text, created_at datetime, expires int not null);');
16$db->real_query('create table if not exists plc_cache (did varchar(64) not null primary key, plcdoc text, expires int not null);');
17$db->real_query('create table if not exists feed_cache (at_uri varchar(255) not null primary key, title varchar(255) not null, description text, avatar text, creator_did varchar(64) not null, expires int not null);');
18$db->real_query('create table if not exists pds_bans (domain varchar(255) not null primary key, reason text);');
19$db->real_query('create table if not exists client_suspensions (id int not null auto_increment primary key, did varchar(64) not null, reason text, expires int not null);');
20$db->real_query('create table if not exists bans (did varchar(64) not null primary key, reason text);');
21// ok! we're good let's go
22$db->close();
23
24function deleteExpired(string $table): void {
25 $db = mysqli_init();
26 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
27 $db->real_query('use '.DB_NAME.';');
28 $current_time = strtotime('now');
29 $db->real_query('delete from '.$table.' where expires < '.$current_time.';');
30 $db->close();
31}
32
33function requestUserCache(string $value, string $field = 'handle'): ?object {
34 $db = mysqli_init();
35 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
36 $db->real_query('use '.DB_NAME.';');
37 deleteExpired('user_cache');
38 $result = $db->query('select * from user_cache where '.$field.'="'.$db->real_escape_string($value).'";');
39 return $result->fetch_object();
40 $db->close();
41}
42
43function requestMinidocCache(string $value, string $field = 'handle'): ?object {
44 $db = mysqli_init();
45 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
46 $db->real_query('use '.DB_NAME.';');
47 deleteExpired('minidoc_cache');
48 $result = $db->query('select * from minidoc_cache where '.$field.'="'.$db->real_escape_string($value).'";');
49 return $result->fetch_object();
50 $db->close();
51}
52
53function requestPostCache(string $rkey): ?object {
54 $db = mysqli_init();
55 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
56 $db->real_query('use '.DB_NAME.';');
57 deleteExpired('post_cache');
58 $result = $db->query('select * from post_cache where rkey="'.$db->real_escape_string($rkey).'";');
59 return $result->fetch_object();
60 $db->close();
61}
62
63function requestPlcCache(string $did): ?object {
64 $db = mysqli_init();
65 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
66 $db->real_query('use '.DB_NAME.';');
67 deleteExpired('plc_cache');
68 $result = $db->query('select * from plc_cache where did="'.$db->real_escape_string($did).'";');
69 return $result->fetch_object();
70 $db->close();
71}
72
73function requestFeedCache(string $at_uri): ?object {
74 $db = mysqli_init();
75 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
76 $db->real_query('use '.DB_NAME.';');
77 deleteExpired('feed_cache');
78 $result = $db->query('select * from feed_cache where at_uri="'.$db->real_escape_string($at_uri).'";');
79 return $result->fetch_object();
80 $db->close();
81}
82
83function updateUserCache(string $handle, string $did, ?string $display_name, string $pds, ?string $avatar, ?string $banner, ?string $description, ?string $pinned): void {
84 $db = mysqli_init();
85 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
86 $db->real_query('use '.DB_NAME.';');
87 $expires = strtotime('now') + 60*60;
88 if (requestUserCache($did, 'did')) {
89 $db->query('update user_cache where did="'.$db->real_escape_string($did).'" set handle="'.$db->real_escape_string($handle).'", display_name="'.$db->real_escape_string($display_name).'", description="'.$db->real_escape_string($description).'", avatar="'.$db->real_escape_string($avatar).'", banner="'.$db->real_escape_string($banner).'", pds="'.$db->real_escape_string($pds).'", pinned_post="'.$db->real_escape_string($pinned).'", expires='.$expires);
90 }
91 $db->query('insert into user_cache (did, handle, display_name, description, avatar, banner, pds, pinned_post, expires) values("'.$db->real_escape_string($did).'", "'.$db->real_escape_string($handle).'", "'.$db->real_escape_string($display_name).'", "'.$db->real_escape_string($description).'", "'.$db->real_escape_string($avatar).'", "'.$db->real_escape_string($banner).'", "'.$db->real_escape_string($pds).'", "'.$db->real_escape_string($pinned).'", '.$expires.');');
92 $db->close();
93}
94
95function updateMinidocCache(string $handle, string $did, string $pds, string $signingKey): void {
96 $db = mysqli_init();
97 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
98 $db->real_query('use '.DB_NAME.';');
99 $expires = strtotime('now') + 60*60*48;
100 if (requestMinidocCache($did, 'did')) {
101 $db->query('update minidoc_cache where did="'.$db->real_escape_string($did).'" set handle="'.$db->real_escape_string($handle).'", pds="'.$db->real_escape_string($pds).'", signing_key="'.$db->real_escape_string($signingKey).'", expires='.$expires);
102 }
103 $db->query('insert into minidoc_cache (handle, did, pds, signing_key, expires) values("'.$db->real_escape_string($handle).'", "'.$db->real_escape_string($did).'", "'.$db->real_escape_string($pds).'", "'.$db->real_escape_string($signing_key).'", '.$expires.');');
104 $db->close();
105}
106
107function updatePlcCache(string $did, string $plcdoc): void {
108 $db = mysqli_init();
109 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
110 $db->real_query('use '.DB_NAME.';');
111 $expires = strtotime('now') + 60*60*48;
112 if (requestMinidocCache($did)) {
113 $db->query('update plc_cache where did="'.$db->real_escape_string($did).'" set plcdoc="'.$db->real_escape_string($plcdoc).'", expires='.$expires);
114 }
115 $db->query('insert into plc_cache (did, plcdoc, expires) values("'.$db->real_escape_string($did).'", "'.$db->real_escape_string($plcdoc).'", '.$expires.');');
116 $db->close();
117}
118
119function updateFeedCache(string $atUri, string $title, ?string $description, ?string $avatar, string $creator_did): void {
120 $db = mysqli_init();
121 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
122 $db->real_query('use '.DB_NAME.';');
123 $expires = strtotime('now') + 60*60*4;
124 if (requestFeedCache($atUri)) {
125 $db->query('update feed_cache where at_uri="'.$db->real_escape_string($atUri).'" set title="'.$db->real_escape_string($title).'", description="'.$db->real_escape_string($description).'", avatar="'.$db->real_escape_string($avatar).'", creator_did="'.$db->real_escape_string($creator_did).'", expires='.$expires);
126 }
127 $db->query('insert into feed_cache (at_uri, title, description, avatar, creator_did, expires) values("'.$db->real_escape_string($atUri).'", "'.$db->real_escape_string($title).'", "'.$db->real_escape_string($description).'", "'.$db->real_escape_string($avatar).'", "'.$db->real_escape_string($creator_did).'", '.$expires.');');
128 $db->close();
129}
130
131function updatePostCache(string $rkey, string $did, string $text, ?string $embedType, ?string $embedData, string $createdAt): void {
132 $db = mysqli_init();
133 $db->real_connect(DB_HOST, DB_USERNAME, DB_PASS);
134 $db->real_query('use '.DB_NAME.';');
135 if (requestPostCache($rkey)) {
136 $db->query('update post_cache where rkey="'.$db->real_escape_string($rkey).'" set title="'.$db->real_escape_string($title).'", description="'.$db->real_escape_string($description).'", avatar="'.$db->real_escape_string($avatar).'", creator_did="'.$db->real_escape_string($creator_did).'", expires='.$expires);
137 }
138 $db->query('insert into feed_cache (at_uri, title, description, avatar, creator_did, expires) values("'.$db->real_escape_string($atUri).'", "'.$db->real_escape_string($title).'", "'.$db->real_escape_string($description).'", "'.$db->real_escape_string($avatar).'", "'.$db->real_escape_string($creator_did).'" '.$expires.');');
139 $db->close();
140}
141?>