diff --git a/.env.sample b/.env.sample index b3f6111e..ebc9ab1d 100755 --- a/.env.sample +++ b/.env.sample @@ -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 = '' -# honeypot.container = '
' - -#-------------------------------------------------------------------- -# 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 \ No newline at end of file +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 = diff --git a/app/Config/Routes.php b/app/Config/Routes.php index c091eaf1..639a1409 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -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'); diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 2c243fee..79f5753b 100755 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -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()