Commit 89495245 authored by Administrator's avatar Administrator

Update 6 files via Son of Anton

parent 664210e8
Pipeline #18 canceled with stage
......@@ -24,10 +24,10 @@ if ($stmt->fetch()) {
exit(0);
}
$username = $_ENV['SA_USERNAME'] ?? 'admin';
$password = $_ENV['SA_PASSWORD'] ?? 'Alarcade123#';
$nameEn = $_ENV['SA_NAME_EN'] ?? 'Mahmoud Aglan';
$nameAr = $_ENV['SA_NAME_AR'] ?? 'محمود عجلان';
$username = 'admin';
$password = 'Alarcade123#';
$nameEn = 'Mahmoud Aglan';
$nameAr = 'محمود عجلان';
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
......
......@@ -2,9 +2,9 @@
return [
'name' => 'AL-ARCADE HR Platform',
'version' => '3.0.0',
'url' => $_ENV['APP_URL'] ?? 'http://localhost',
'debug' => (bool)($_ENV['APP_DEBUG'] ?? false),
'url' => 'https://hrsystem.caprover.al-arcade.com',
'debug' => false,
'timezone' => 'Africa/Cairo',
'locale' => 'en',
'key' => $_ENV['APP_KEY'] ?? 'al-arcade-hr-v3-secret-key-change-me',
'key' => 'al-arcade-hr-v3-2025-secure-key-do-not-share-with-anyone-ever',
];
\ No newline at end of file
<?php
return [
'host' => $_ENV['DB_HOST'] ?? 'srv-captain--mysql-db',
'port' => (int)($_ENV['DB_PORT'] ?? 3306),
'database' => $_ENV['DB_NAME'] ?? 'al_arcade_hr',
'username' => $_ENV['DB_USER'] ?? 'root',
'password' => $_ENV['DB_PASS'] ?? 'Alarcade123#',
'host' => 'srv-captain--mysql-db',
'port' => 3306,
'database' => 'al_arcade_hr',
'username' => 'root',
'password' => 'Alarcade123#',
'charset' => 'utf8mb4',
'collation'=> 'utf8mb4_unicode_ci',
'options' => [
......@@ -12,7 +12,6 @@ return [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_STRINGIFY_FETCHES => false,
// Disable SSL verification for internal Docker networking
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
],
];
\ No newline at end of file
......@@ -5,12 +5,12 @@ echo "=== AL-ARCADE HR Platform v3.0 — Starting ==="
echo "Timestamp: $(date)"
echo ""
# ─── Read Environment ───
DB_HOST="${DB_HOST:-srv-captain--mysql-db}"
DB_PORT="${DB_PORT:-3306}"
DB_NAME="${DB_NAME:-al_arcade_hr}"
DB_USER="${DB_USER:-root}"
DB_PASS="${DB_PASS:-Alarcade123#}"
# ─── ALL VALUES HARDCODED — NO ENV VARS NEEDED ───
DB_HOST="srv-captain--mysql-db"
DB_PORT="3306"
DB_NAME="al_arcade_hr"
DB_USER="root"
DB_PASS="Alarcade123#"
echo "Configuration:"
echo " DB_HOST: ${DB_HOST}"
......@@ -23,14 +23,14 @@ echo ""
# ─── Common MySQL flags (disable SSL for internal Docker networking) ───
MYSQL_FLAGS="--ssl-mode=DISABLED"
# ─── Debug: DNS Resolution ───
# ─── DNS Resolution Check ───
echo "Attempting DNS resolution for ${DB_HOST}..."
if getent hosts "${DB_HOST}" > /dev/null 2>&1; then
RESOLVED_IP=$(getent hosts "${DB_HOST}" | awk '{ print $1 }')
echo " ✅ ${DB_HOST} resolves to ${RESOLVED_IP}"
else
echo " ❌ CANNOT RESOLVE ${DB_HOST}"
echo " Starting Apache anyway — app will show DB errors."
echo " Starting Apache anyway..."
exec "$@"
fi
echo ""
......@@ -43,13 +43,11 @@ ATTEMPT=0
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
ATTEMPT=$((ATTEMPT + 1))
# Try with SSL disabled first, then without the flag for older clients
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} --silent 2>/dev/null; then
echo "✅ MySQL is ready! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
break
fi
# Fallback: try with --skip-ssl for older mysql client versions
if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" --skip-ssl --silent 2>/dev/null; then
echo "✅ MySQL is ready via --skip-ssl! (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
MYSQL_FLAGS="--skip-ssl"
......@@ -58,7 +56,6 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
if [ $((ATTEMPT % 10)) -eq 0 ]; then
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
# Show the actual error for debugging
mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} 2>&1 || true
else
echo " MySQL not ready... (attempt ${ATTEMPT}/${MAX_ATTEMPTS})"
......@@ -68,16 +65,12 @@ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
done
if [ $ATTEMPT -ge $MAX_ATTEMPTS ]; then
echo ""
echo "❌ FATAL: Could not connect to MySQL after ${MAX_ATTEMPTS} attempts"
echo " Last error:"
mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} 2>&1 || true
echo ""
echo " Starting Apache anyway (app will show DB errors)..."
echo " Starting Apache anyway..."
exec "$@"
fi
# ─── Helper function for mysql commands ───
# ─── Helper functions ───
run_mysql() {
mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} "$@" 2>&1
}
......@@ -86,13 +79,13 @@ run_mysql_silent() {
mysql -h "${DB_HOST}" -P "${DB_PORT}" -u "${DB_USER}" -p"${DB_PASS}" ${MYSQL_FLAGS} -N "$@" 2>/dev/null
}
# ─── Create Database if not exists ───
# ─── Create Database ───
echo ""
echo "Ensuring database '${DB_NAME}' exists..."
run_mysql -e "CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
echo "✅ Database ensured."
# ─── Run Schema if tables don't exist ───
# ─── Run Schema ───
TABLE_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0")
echo "Current table count: ${TABLE_COUNT}"
......@@ -100,9 +93,8 @@ echo "Current table count: ${TABLE_COUNT}"
if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then
echo "Running schema migration (expected 73 tables, found ${TABLE_COUNT})..."
# Try multiple possible paths for schema.sql
SCHEMA_FILE=""
for path in "/var/www/html/database/schema.sql" "/var/www/html/public/../database/schema.sql" "/var/www/html/schema.sql"; do
for path in "/var/www/html/database/schema.sql" "/var/www/html/public/../database/schema.sql"; do
if [ -f "$path" ]; then
SCHEMA_FILE="$path"
break
......@@ -114,32 +106,18 @@ if [ "${TABLE_COUNT}" -lt "70" ] 2>/dev/null; then
run_mysql "${DB_NAME}" < "${SCHEMA_FILE}"
echo "✅ Schema applied."
# Verify
NEW_COUNT=$(run_mysql_silent -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_TYPE='BASE TABLE';" || echo "0")
echo "Tables after migration: ${NEW_COUNT}"
else
echo "❌ schema.sql not found! Searched:"
echo " /var/www/html/database/schema.sql"
echo ""
echo "❌ schema.sql not found!"
echo " Files in /var/www/html/database/:"
ls -la /var/www/html/database/ 2>/dev/null || echo " (directory does not exist)"
echo ""
echo " Files in /var/www/html/:"
ls -la /var/www/html/ 2>/dev/null | head -20
fi
# Run seed data
SEED_FILE=""
for path in "/var/www/html/database/seed.sql" "/var/www/html/seed.sql"; do
if [ -f "$path" ]; then
SEED_FILE="$path"
break
fi
done
if [ -n "${SEED_FILE}" ]; then
echo "Running seed data from: ${SEED_FILE}"
run_mysql "${DB_NAME}" < "${SEED_FILE}" || echo "⚠️ Some seed data may already exist (duplicates skipped)."
# Seed data
if [ -f "/var/www/html/database/seed.sql" ]; then
echo "Running seed data..."
run_mysql "${DB_NAME}" < "/var/www/html/database/seed.sql" || echo "⚠️ Some seed data may already exist."
echo "✅ Seed data applied."
fi
else
......@@ -153,8 +131,6 @@ if [ "${SA_EXISTS}" = "0" ]; then
echo "Creating Super Admin..."
if [ -f "/var/www/html/cli/create-superadmin.php" ]; then
php /var/www/html/cli/create-superadmin.php
else
echo "⚠️ create-superadmin.php not found"
fi
else
echo "✅ Super Admin already exists. Skipping."
......@@ -173,5 +149,4 @@ echo "║ Starting Apache... ║"
echo "╚══════════════════════════════════════════════════════╝"
echo ""
# ─── Start Apache ───
exec "$@"
\ No newline at end of file
......@@ -23,6 +23,7 @@ final class AuditLogger
$this->config['host'], $this->config['port'], $this->config['database'], $this->config['charset']);
$this->pdo = new PDO($dsn, $this->config['username'], $this->config['password'], [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
]);
}
return $this->pdo;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment