-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.php
More file actions
69 lines (59 loc) · 2.46 KB
/
config.php
File metadata and controls
69 lines (59 loc) · 2.46 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
<?php
// config.php
define('APP_ENV', getenv('APP_ENV') ?: 'production');
define('APP_DEBUG', filter_var(getenv('APP_DEBUG') ?: 'false', FILTER_VALIDATE_BOOLEAN));
// Storage paths (isolated from web root)
define('STORAGE_DIR', getenv('STORAGE_DIR') ?: __DIR__ . '/storage');
define('DB_DIR', STORAGE_DIR . '/database');
define('SESSION_DIR', STORAGE_DIR . '/sessions');
define('LOG_DIR', STORAGE_DIR . '/logs');
define('LOG_CHANNEL', getenv('LOG_CHANNEL') ?: 'stderr');
// Legacy compat
define('DATA_DIR', STORAGE_DIR);
define('S3_ENDPOINT', getenv('S3_ENDPOINT') ?: 'https://s3-id-jkt-1.kilatstorage.id');
define('S3_BUCKET', getenv('S3_BUCKET') ?: 'knowledgebase');
define('S3_ACCESS_KEY', getenv('S3_ACCESS_KEY') ?: '');
define('S3_SECRET_KEY', getenv('S3_SECRET_KEY') ?: '');
define('S3_REGION', getenv('S3_REGION') ?: 'id-jkt-1');
define('S3_ACL', getenv('S3_ACL') ?: 'public-read');
// Path publik (jika bucket Anda public dan bisa diakses langsung):
define('PUBLIC_URL_BASE', getenv('PUBLIC_URL_BASE') ?: 'https://s3-id-jkt-1.kilatstorage.id/knowledgebase/');
$sessionLifetimeEnv = getenv('SESSION_LIFETIME_SECONDS');
define(
'SESSION_LIFETIME_SECONDS',
($sessionLifetimeEnv !== false && $sessionLifetimeEnv !== '') ? (int)$sessionLifetimeEnv : 43200
);
$sessionIdleEnv = getenv('SESSION_IDLE_TIMEOUT_SECONDS');
define(
'SESSION_IDLE_TIMEOUT_SECONDS',
($sessionIdleEnv !== false && $sessionIdleEnv !== '') ? (int)$sessionIdleEnv : 7200
);
$workspaceSyncEnv = getenv('WORKSPACE_SYNC_THRESHOLD');
define(
'WORKSPACE_SYNC_THRESHOLD',
($workspaceSyncEnv !== false && $workspaceSyncEnv !== '') ? (int)$workspaceSyncEnv : 20
);
$jobStaleEnv = getenv('WORKSPACE_JOB_STALE_MINUTES');
define(
'WORKSPACE_JOB_STALE_MINUTES',
($jobStaleEnv !== false && $jobStaleEnv !== '') ? (int)$jobStaleEnv : 15
);
function isApiRequest() {
$uri = $_SERVER['REQUEST_URI'] ?? '';
return (strpos($uri, '/api/') !== false);
}
function criticalConfigError($message) {
if (php_sapi_name() !== 'cli') {
$accept = $_SERVER['HTTP_ACCEPT'] ?? '';
if (isApiRequest() || strpos($accept, 'application/json') !== false) {
header('Content-Type: application/json');
http_response_code(500);
die(json_encode(['error' => $message]));
}
}
die($message);
}
if (!getenv('ADMIN_PASSWORD')) {
criticalConfigError('CRITICAL CONFIG ERROR: ADMIN_PASSWORD must be set in .env');
}
define('ADMIN_PASSWORD', getenv('ADMIN_PASSWORD'));