-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathconnection.php
More file actions
144 lines (121 loc) · 5.32 KB
/
connection.php
File metadata and controls
144 lines (121 loc) · 5.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
// Comprobamos si la Base de datos de la aplicación esta creada
$databaseFile = __DIR__ . '/api_creator_config/apicreator.sqlite';
if (!function_exists('getDatabaseConnection')) {
function getDatabaseConnection($databaseFile) {
static $pdoApiCreator = null;
if ($pdoApiCreator === null) {
try {
$pdoApiCreator = new PDO("sqlite:" . $databaseFile);
$pdoApiCreator->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdoApiCreator->exec('PRAGMA busy_timeout = 5000'); // Espera hasta 5 segundos si está bloqueada
return $pdoApiCreator;
} catch (PDOException $e) {
// Si ocurre un error, lo mostramos
echo "Error al conectar a la base de datos: " . $e->getMessage();
return null;
}
}
return $pdoApiCreator;
}
}
if (!function_exists('closeConnection')) {
function closeConnection(&$pdoApiCreator) {
// Cerramos la conexión
$pdoApiCreator = null;
}
}
if (!function_exists('closeStmt')) {
function closeStmt(&$stmt) {
// Cerramos el stmt
$stmt = null;
}
}
try {
// Variables para el funcionamiento de la APP
$salt = "1b3caf2c";
// Conectar o crear la base de datos
$pdoApiCreator = getDatabaseConnection($databaseFile);
// Verificar si la tabla endpoints existe
$result = $pdoApiCreator->query("SELECT name FROM sqlite_master WHERE type='table' AND name='endpoints'");
if ($result->fetch() === false) {
// Crear la tabla prices si no existe
$pdoApiCreator->exec("CREATE TABLE endpoints (
id INTEGER PRIMARY KEY AUTOINCREMENT,
scheme TEXT,
url TEXT NOT NULL,
method TEXT NOT NULL,
input_mime TEXT NOT NULL,
output_mime TEXT NOT NULL,
script TEXT NOT NULL,
return_text TEXT NOT NULL,
hits INTEGER DEFAULT 0
)");
// Insertar registros de Endpoints de ejemplo
$pdoApiCreator->exec("INSERT INTO endpoints (scheme, url, method, input_mime, output_mime, script, hits) VALUES ('examples', '/api/json', 'GET', 'application/json', 'application/json', 'json.php', 0)");
$pdoApiCreator->exec("INSERT INTO endpoints (scheme, url, method, input_mime, output_mime, script, hits) VALUES ('examples', '/api/image/{id}', 'GET', 'none', 'image/png', 'image.php', 0)");
$pdoApiCreator->exec("INSERT INTO endpoints (scheme, url, method, input_mime, output_mime, script, hits) VALUES ('examples', '/api/data/{data1}/prueba/{data2}/try', 'GET', 'none', 'application/json', 'url_data.php', 0)");
}
// Verificar si la tabla parameters existe
$result = $pdoApiCreator->query("SELECT name FROM sqlite_master WHERE type='table' AND name='parameters'");
if ($result->fetch() === false) {
// Crear la tabla parameters si no existe
$pdoApiCreator->exec("CREATE TABLE parameters (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT NOT NULL CHECK(length(key) <= 50),
data TEXT NOT NULL CHECK(length(data) <= 1000)
)");
// Insertar el registro inicial para admin, con el valor md5 de la clave administrativa
$dataValue = $salt."7b24afc8bc80e548d66c4e7ff72171c5"; // toor - password by default.
// Admin user
$stmt = $pdoApiCreator->prepare("INSERT INTO parameters (key, data) VALUES (:key, :data)");
$stmt->execute([
':key' => 'admin-user',
':data' => 'admin'
]);
// Admin password
$stmt = $pdoApiCreator->prepare("INSERT INTO parameters (key, data) VALUES (:key, :data)");
$stmt->execute([
':key' => 'admin-password',
':data' => "$dataValue"
]);
closeStmt($stmt);
}
// Verificar si la tabla mimetypes existe
$result = $pdoApiCreator->query("SELECT name FROM sqlite_master WHERE type='table' AND name='mimetypes'");
if ($result->fetch() === false) {
// Crear la tabla parameters si no existe
$pdoApiCreator->exec("CREATE TABLE mimetypes (
mime TEXT NOT NULL,
name TEXT NOT NULL,
CONSTRAINT mimetypes_pk PRIMARY KEY (mime)
)");
// Lista de MIME types comunes por defecto
$mimeTypes = [
['none','none'],
['application/json', 'JSON'],
['application/xml', 'XML'],
['text/plain', 'Texto plano'],
['application/x-www-form-urlencoded', 'Form URL Encoded'],
['multipart/form-data', 'Multipart Form Data'],
['application/octet-stream', 'Binario'],
['text/html', 'HTML'],
['application/pdf', 'PDF'],
['image/jpeg', 'JPEG'],
['image/png', 'PNG']
];
foreach ($mimeTypes as $item) {
$stmt = $pdoApiCreator->prepare("INSERT INTO mimetypes (mime, name) VALUES (:mime, :name)");
$stmt->execute([
':mime' => "$item[0]",
':name' => "$item[1]"
]);
}
closeStmt($stmt);
}
closeConnection($pdoApiCreator);
} catch (PDOException $e) {
closeConnection($pdoApiCreator);
echo "Error: " . $e->getMessage();
}
?>