simba_tfa = $simba_tfa; $this->file_path = path_join($this->get_mu_plugin_dir(), 'simba-tfa-encryption-key.php'); } /** * Returns full path to mu-plugin directory * * @return string - the mu-plugin directory path */ public function get_mu_plugin_dir() { return WPMU_PLUGIN_DIR; } /** * Returns the full path to the mu-plugin file * * @return string - the mu-plugin path */ public function get_file_path() { return $this->file_path; } /** * This function checks if our mu-plugin exists * * @return boolean - true if the file exists otherwise false */ public function muplugin_exists() { return file_exists($this->file_path); } /** * Inserts our code into our mu-plugin. * * The mu-plugin and the mu-plugin directory will be created if they don't already exists * * @return boolean|WP_Error - true on success or WP_Error on failure */ public function insert_contents() { $info = pathinfo($this->file_path); if (!isset($info['dirname'])) { return new WP_Error( 'file_no_directory', __('Encrypt secrets feature not enabled: no directory has been set.', 'two-factor-authentication') . ' ' . sprintf(__('Please check your %s constant is valid', 'two-factor-authentication'), 'WPMU_PLUGIN_DIR'), $this->file_path ); } if (false === wp_mkdir_p($info['dirname'])) { return new WP_Error( 'file_no_directory_created', sprintf(__('The encrypt secrets feature was not enabled: your mu-plugins directory could not be automatically created; therefore, please use your web hosting file manager or FTP to manually create this folder and then try again: %s', 'two-factor-authentication'), $this->get_mu_plugin_dir()), $info['dirname'] ); } if (false === @file_put_contents($this->file_path, $this->get_contents())) { // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- ignore this as it is handled by the caller return new WP_Error( 'file_no_contents', __('The encrypt secrets feature was not enabled: attempting to write the mu-plugin file contents failed; therefore, please create the file manually.', 'two-factor-authentication') . "

" . sprintf(__('Add the following code to the file %s'), $this->get_file_path()) . "\n" . '

' . nl2br(esc_html($this->get_contents())) . '

' . __('Once you have added the above code then press the button to turn on encryption again', 'two-factor-authentication'), $info['dirname'] ); } return true; } /** * This function creates the contents for the mu-plugin * * @return string - the contents of the mu-plugin */ public function get_contents() { $encryption_key = base64_encode($this->simba_tfa->random_bytes(16)); $code = "