T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/lavocat.ca/private_html/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.ca/private_html/scripts/cleanup-expired-sessions.js
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

async function cleanupExpiredSessions() {
  console.log('๐Ÿงน Starting cleanup of expired impersonation sessions...');
  
  try {
    // Find all expired sessions that are still marked as active
    const expiredSessions = await prisma.impersonationSession.findMany({
      where: {
        isActive: true,
        expiresAt: { lt: new Date() }
      },
      select: {
        id: true,
        originalUserId: true,
        impersonatedUserId: true,
        expiresAt: true,
        createdAt: true
      }
    });

    console.log(`๐Ÿ“Š Found ${expiredSessions.length} expired sessions to clean up`);

    if (expiredSessions.length === 0) {
      console.log('โœ… No expired sessions found. All good!');
      return;
    }

    // Update all expired sessions to inactive
    const result = await prisma.impersonationSession.updateMany({
      where: {
        isActive: true,
        expiresAt: { lt: new Date() }
      },
      data: {
        isActive: false,
        endedAt: new Date()
      }
    });

    console.log(`โœ… Successfully cleaned up ${result.count} expired sessions`);

    // Log details for debugging
    expiredSessions.forEach(session => {
      console.log(`  - Session ${session.id}: ${session.originalUserId} โ†’ ${session.impersonatedUserId} (expired: ${session.expiresAt})`);
    });

  } catch (error) {
    console.error('โŒ Error during cleanup:', error);
    throw error;
  }
}

async function main() {
  try {
    await cleanupExpiredSessions();
    console.log('๐ŸŽ‰ Cleanup completed successfully');
  } catch (error) {
    console.error('๐Ÿ’ฅ Cleanup failed:', error);
    process.exit(1);
  } finally {
    await prisma.$disconnect();
  }
}

// Run if called directly
if (require.main === module) {
  main();
}

module.exports = { cleanupExpiredSessions }; 

CasperSecurity Mini