FEAT_CHECK_ENV_SCRIPT

This commit is contained in:
velz 2026-01-02 12:41:13 +05:30
parent b833c7611b
commit bb0ffbcf3a
3 changed files with 146 additions and 175 deletions

View File

@ -1,27 +1,15 @@
#--------------------------------------------------------------------
# Example Environment Configuration file
#
# This file can be used as a starting point for your own
# custom .env files, and contains most of the possible settings
# available in a default install.
#
# By default, all of the settings are commented out. If you want
# to override the setting, you must un-comment it by removing the '#'
# at the beginning of the line.
#--------------------------------------------------------------------
#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------
# CI_ENVIRONMENT = development
CI_ENVIRONMENT =
#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------
app.baseURL = 'http://localhost/client_changes/nhance/'
app.appTimezone = 'Asia/Kolkata'
app.baseURL =
app.appTimezone =
# If you have trouble with `.`, you could also use `_`.
# app_baseURL = ''
# app.forceGlobalSecureRequests = false
@ -30,187 +18,93 @@ app.appTimezone = 'Asia/Kolkata'
#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------
# Dev DB Connection
database.default.hostname = 119.18.54.85
database.default.database = venbaehn_nhance
database.default.username = venbaehn_nhance_user1
database.default.password = 'iM~X7(cR+}A-'
database.default.DBDriver = MySQLi
database.default.DBPrefix =
database.default.port = 3306
database.tests.hostname = 119.18.54.85
database.tests.database = venbaehn_nhance
database.tests.username = venbaehn_nhance_user1
database.tests.password = 'iM~X7(cR+}A-'
database.tests.DBDriver = MySQLi
database.tests.DBPrefix =
database.tests.port = 3306
# Test DB Connection
# database.default.hostname = 119.18.54.85
# database.default.database = venbaehn_nhance_test
# database.default.username = venbaehn_nhance_user1
# database.default.password = 'iM~X7(cR+}A-'
# database.default.DBDriver = MySQLi
# database.default.DBPrefix =
# database.default.port = 3306
# database.tests.hostname = 119.18.54.85
# database.tests.database = venbaehn_nhance_test
# database.tests.username = venbaehn_nhance_user1
# database.tests.password = 'iM~X7(cR+}A-'
# database.tests.DBDriver = MySQLi
# database.tests.DBPrefix =
# database.tests.port = 3306
# UAT DB Connection
# database.default.hostname = 119.18.54.85
# database.default.database = venbaehn_nhance_uat
# database.default.username = venbaehn_nhance_user1
# database.default.password = 'iM~X7(cR+}A-'
# database.default.DBDriver = MySQLi
# database.default.DBPrefix =
# database.default.port = 3306
# database.tests.hostname = 119.18.54.85
# database.tests.database = venbaehn_nhance_uat
# database.tests.username = venbaehn_nhance_user1
# database.tests.password = 'iM~X7(cR+}A-'
# database.tests.DBDriver = MySQLi
# database.tests.DBPrefix =
# database.tests.port = 3306
# Local PhpMyAdmin DB Connection
# database.default.hostname = localhost
# database.default.database = nhance
# database.default.username = root
# database.default.password = ''
# database.default.DBDriver = MySQLi
# database.default.DBPrefix =
# database.default.port = 3306
# database.tests.hostname = localhost
# database.tests.database = nhance
# database.tests.username = root
# database.tests.password = ''
# database.tests.DBDriver = MySQLi
# database.tests.DBPrefix =
# database.tests.port = 3306
#--------------------------------------------------------------------
# CONTENT SECURITY POLICY
#--------------------------------------------------------------------
# contentsecuritypolicy.reportOnly = false
# contentsecuritypolicy.defaultSrc = 'none'
# contentsecuritypolicy.scriptSrc = 'self'
# contentsecuritypolicy.styleSrc = 'self'
# contentsecuritypolicy.imageSrc = 'self'
# contentsecuritypolicy.baseURI = null
# contentsecuritypolicy.childSrc = null
# contentsecuritypolicy.connectSrc = 'self'
# contentsecuritypolicy.fontSrc = null
# contentsecuritypolicy.formAction = null
# contentsecuritypolicy.frameAncestors = null
# contentsecuritypolicy.frameSrc = null
# contentsecuritypolicy.mediaSrc = null
# contentsecuritypolicy.objectSrc = null
# contentsecuritypolicy.pluginTypes = null
# contentsecuritypolicy.reportURI = null
# contentsecuritypolicy.sandbox = false
# contentsecuritypolicy.upgradeInsecureRequests = false
# contentsecuritypolicy.styleNonceTag = '{csp-style-nonce}'
# contentsecuritypolicy.scriptNonceTag = '{csp-script-nonce}'
# contentsecuritypolicy.autoNonce = true
#--------------------------------------------------------------------
# COOKIE
#--------------------------------------------------------------------
# cookie.prefix = ''
# cookie.expires = 0
# cookie.path = '/'
# cookie.domain = ''
# cookie.secure = false
# cookie.httponly = false
# cookie.samesite = 'Lax'
# cookie.raw = false
#--------------------------------------------------------------------
# ENCRYPTION
#--------------------------------------------------------------------
# encryption.key =
# encryption.driver = OpenSSL
# encryption.blockSize = 16
# encryption.digest = SHA512
#--------------------------------------------------------------------
# HONEYPOT
#--------------------------------------------------------------------
# honeypot.hidden = 'true'
# honeypot.label = 'Fill This Field'
# honeypot.name = 'honeypot'
# honeypot.template = '<label>{label}</label><input type="text" name="{name}" value=""/>'
# honeypot.container = '<div style="display:none">{template}</div>'
#--------------------------------------------------------------------
# SECURITY
#--------------------------------------------------------------------
# security.csrfProtection = 'cookie'
# security.tokenRandomize = false
# security.tokenName = 'csrf_token_name'
# security.headerName = 'X-CSRF-TOKEN'
# security.cookieName = 'csrf_cookie_name'
# security.expires = 7200
# security.regenerate = true
# security.redirect = false
# security.samesite = 'Lax'
DB_SSL_ENABLE =
database.default.hostname =
database.default.database =
database.default.username =
database.default.password =
database.default.DBDriver =
#database.default.DBPrefix =
#database.default.port =
#--------------------------------------------------------------------
# SESSION
#--------------------------------------------------------------------
# session.driver = 'CodeIgniter\Session\Handlers\FileHandler'
session.cookieName = 'ci_session_dev'
session.expiration = 86400
# session.cookieName = 'ci_session'
#session.expiration = 28800
# session.savePath = null
# session.matchIP = false
session.timeToUpdate = 300
session.regenerateDestroy = true
# session.timeToUpdate = 300
# session.regenerateDestroy = false
#--------------------------------------------------------------------
# LOGGER
#--------------------------------------------------------------------
# logger.threshold = 4
logger.threshold = 4
#--------------------------------------------------------------------
# CURLRequest
#--------------------------------------------------------------------
# curlrequest.shareOptions = true
GOOGLE_OAUTH_APP_NAME =
#GOOGLE_OAUTH_CLIENT_ID =
#GOOGLE_OAUTH_CLIENT_SECRET =
GOOGLE_OAUTH_CLIENT_ID =
GOOGLE_OAUTH_CLIENT_SECRET =
GOOGLE_OAUTH_REDIRECT_URI =
GOOGLE_OAUTH_SCOPES =
App_Url =
NHANCE_LOGO =
helpdeskURL =
TOKENTIMEOUT =
POST_ENROLLMENT_APP_LINK =
GDRIVE_ROOT_FOLDER_ID =
email.fromEmail =
email.fromName =
ZEPTO_API_KEY =
email.SMTPPass =
#--------------------------------------------------------------------
# Google-OAUTH-Credentials
# SET COOKIE DATA
#--------------------------------------------------------------------
cookie.Path = '/';
cookie.Domain = '.nhanceindia.in'; //Enter Domain Name with preceding .(dot) -> .nhanceindia.in
cookie.secure = 'true';// if https set as true or if http set as false
GOOGLE_OAUTH_APP_NAME = 'OAuth'
GOOGLE_OAUTH_CLIENT_ID = '696241936560-m2mr272ge7vr2n4q36c22l3d2gdgi90l.apps.googleusercontent.com'
GOOGLE_OAUTH_CLIENT_SECRET = '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'
GOOGLE_OAUTH_REDIRECT_URI = 'http://localhost/client_changes/nhance/oauth2callback'
GOOGLE_OAUTH_SCOPES = "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile"
unlayer.projectID =
email.enquiryMail =
database.postDB.hostname =
database.postDB.database =
database.postDB.username =
database.postDB.password =
database.postDB.DBDriver =
database.postDB.DBPrefix =
database.postDB.port =
App_Url = https://venbait.in/nhance/app/dev/
POST_ENROLLMENT_APP_LINK = https://venbait.in/nhance/employee/dev/
NHANCE_LOGO = https://venbait.in/nhance/dev/public/assets/images/Nhance_Favi.png
POST_ENROLLMENT_BASEURL =
#SMS
SMS_API_KEY =
SMS_SENDER_ID =
SMS_TEMPLATE_ID =
SMS_SERVICE_NAME =
SMS_APP_NAME =
# CORS Configuration
CORS_ALLOWED_ORIGINS=
CORS_ALLOW_CREDENTIALS=true
CORS_ALLOWED_METHODS=GET,POST,PUT,PATCH,DELETE,OPTIONS
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-Requested-With,Accept,Origin,App-Signature
CORS_EXPOSE_HEADERS=X-Total-Count,X-Page-Count,X-RateLimit-Remaining
CORS_MAX_AGE=7200
CORS_DEBUG=true
APP_SIGNATURE =

View File

@ -519,6 +519,7 @@ $routes->cli('cli/sendZeptoMail', 'MasterController::testZeptoSMTP');
$routes->cli('cli/check_bounce_mail_cli', 'MasterController::testCheckBounceMails');
$routes->cli('cli/app_check_list', 'MasterController::appCheckList');
$routes->cli('cli/new_gdrive_token', 'GoogleDriveController::generateNewGoogleDriveAccessToken');
$routes->cli('cli/check_env', 'MasterController::checkEnv');
//crone job
$routes->cli('cli/enrollOpendAndClose', 'DashboardController::updatePolicyEnrollmentStatus');

View File

@ -41,6 +41,7 @@ use App\Models\RTOModel;
use App\Models\PartnerPosModel;
use CodeIgniter\CLI\CLI;
use CodeIgniter\CLI\BaseCommand;
class MasterController extends AdminController
{
@ -1950,6 +1951,7 @@ class MasterController extends AdminController
$this->checkGoogleOAuthCredentialsinDB();
$this->getCronJobsList();
$this->checkGdriveRootFolderID();
$this->checkEnv();
}
public function checkAndCreateDirectories()
@ -2075,6 +2077,80 @@ class MasterController extends AdminController
dd($result);
}
public function checkEnv()
{
$root = ROOTPATH;
$sample_file_name = '.env.sample';
$sample_file_path = $root . $sample_file_name;
$envFile = $root . '.env';
// echo ($exampleFile);//die();
if (!file_exists($sample_file_path)) {
echo ("$sample_file_path file not found");
exit();
}
if (!file_exists($envFile)) {
echo('.env file not found');
exit();
}
$example = $this->parseEnv($sample_file_path);
$actual = $this->parseEnv($envFile);
$missing = array_diff_key($example, $actual);
$extra = array_diff_key($actual, $example);
CLI::write("#################### CHECKING ENV ##############################\n");
if ($extra) {
CLI::write('⚠️ Extra ENV keys (not in .env.example)', 'yellow');
foreach (array_keys($extra) as $key) {
CLI::write(" - $key", 'yellow');
}
}
CLI::newLine();
if ($missing) {
CLI::error('❌ Missing ENV keys');
foreach (array_keys($missing) as $key) {
CLI::write(" - $key", 'red');
}
}
CLI::newLine();
if (!$missing && !$extra) {
CLI::write('✅ ENV configuration is clean', 'green');
return CLI::EXIT_SUCCESS;
}
CLI::write("#################### END OF CHECKING ENV ############################\n");
}
private function parseEnv(string $file): array
{
$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$env = [];
foreach ($lines as $line) {
$line = trim($line);
if ($line === '' || str_starts_with($line, '#')) {
continue;
}
if (strpos($line, '=') !== false) {
[$key] = explode('=', $line, 2);
$env[trim($key)] = true;
}
}
return $env;
}
//----------------------------------------------------------------------------------------------------------
public function nhanceBranchMaster()