diff --git a/DMS/docker-data/roundcube/plugins/email_config/composer.json b/DMS/docker-data/roundcube/plugins/email_config/composer.json index b5866cb..9d75386 100644 --- a/DMS/docker-data/roundcube/plugins/email_config/composer.json +++ b/DMS/docker-data/roundcube/plugins/email_config/composer.json @@ -1,15 +1,9 @@ { "name": "local/email_config", "type": "roundcube-plugin", - "description": "Email Configuration Plugin - Opens external email config interface", + "description": "Email Configuration - Manage OOO and Forwarding", "license": "MIT", "version": "1.0.0", - "authors": [ - { - "name": "Custom Plugin", - "role": "Developer" - } - ], "require": { "php": ">=7.0.0", "roundcube/plugin-installer": ">=0.1.3" diff --git a/DMS/docker-data/roundcube/plugins/email_config/email_config.js b/DMS/docker-data/roundcube/plugins/email_config/email_config.js deleted file mode 100644 index fd75a8a..0000000 --- a/DMS/docker-data/roundcube/plugins/email_config/email_config.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Email Configuration Plugin - Client Side - */ -if (window.rcmail) { - rcmail.addEventListener('init', function(evt) { - rcmail.register_command('email_config_open', function() { - rcmail.http_post('plugin.email_config_generate_url', {}, - rcmail.set_busy(true, 'loading')); - }, true); - }); - - rcmail.addEventListener('responseafterplugin.email_config_generate_url', function(response) { - rcmail.set_busy(false); - if (response && response.url) { - window.open(response.url, '_blank'); - } else { - rcmail.display_message('Failed to generate configuration URL', 'error'); - } - }); -} diff --git a/DMS/docker-data/roundcube/plugins/email_config/email_config.php b/DMS/docker-data/roundcube/plugins/email_config/email_config.php index c2eb7e5..7522257 100644 --- a/DMS/docker-data/roundcube/plugins/email_config/email_config.php +++ b/DMS/docker-data/roundcube/plugins/email_config/email_config.php @@ -1,37 +1,13 @@ add_texts('localization/', false); + $this->add_hook('settings_actions', array($this, 'settings_actions')); $this->register_action('plugin.email_config', array($this, 'email_config_init')); - $this->register_action('plugin.email_config_generate_url', array($this, 'generate_signed_url')); - - // Add button to toolbar in mail view - if ($this->rcmail->task == 'mail') { - $this->add_button(array( - 'command' => 'email_config_open', - 'label' => 'Email Config', - 'title' => 'Configure auto-reply and forwarding', - 'type' => 'link', - 'class' => 'button email-config', - ), 'toolbar'); - - $this->include_script('email_config.js'); - } - - // Add to settings menu - if ($this->rcmail->task == 'settings') { - $this->add_hook('settings_actions', array($this, 'settings_actions')); - } } function settings_actions($args) @@ -39,56 +15,61 @@ class email_config extends rcube_plugin $args['actions'][] = array( 'action' => 'plugin.email_config', 'class' => 'email-config', - 'label' => 'Email Configuration', - 'title' => 'Configure email rules', + 'label' => 'email_config', + 'domain' => 'email_config', ); return $args; } function email_config_init() { + $rcmail = rcube::get_instance(); $this->register_handler('plugin.body', array($this, 'email_config_form')); - $this->rcmail->output->set_pagetitle('Email Configuration'); - $this->rcmail->output->send('plugin'); + $rcmail->output->set_pagetitle('Email Configuration'); + $rcmail->output->send('plugin'); } function email_config_form() { - $email = $this->rcmail->user->get_username(); - $url = $this->generate_url($email); + $rcmail = rcube::get_instance(); + $email = $rcmail->user->get_username(); + $secret_key = 'SHARED_SECRET_KEY_987654321'; + $config_url = 'http://localhost:3008'; + $expires = time() + 3600; + $data = $email . '|' . $expires; + $signature = hash_hmac('sha256', $data, $secret_key); + $url = $config_url . '/?email=' . urlencode($email) . '&expires=' . $expires . '&signature=' . $signature; - $out = html::div(array('class' => 'box'), - html::p(null, 'Manage your email configuration including out-of-office auto-replies and forwarding rules.') . - html::p(null, - html::a(array( - 'href' => $url, - 'target' => '_blank', - 'class' => 'button mainaction', - ), 'Open Email Configuration') - ) - ); + $out = ' +
+
+ + + +

Email Rules Configuration

+
+ +
+

Signed in as:

+

' . htmlspecialchars($email) . '

+
+ +

+ Configure out-of-office auto-replies and email forwarding rules for your account. +

+ +
+ + Open Email Configuration → + +
+
'; return $out; } - - function generate_signed_url() - { - $email = $this->rcmail->user->get_username(); - $url = $this->generate_url($email); - - header('Content-Type: application/json'); - echo json_encode(array('success' => true, 'url' => $url)); - exit; - } - - private function generate_url($email) - { - $expires = time() + 3600; // 1 hour validity - $data = $email . '|' . $expires; - $signature = hash_hmac('sha256', $data, $this->secret_key); - - return $this->config_url . '/?email=' . urlencode($email) - . '&expires=' . $expires - . '&signature=' . $signature; - } } diff --git a/DMS/docker-data/roundcube/plugins/email_config/localization/en.inc b/DMS/docker-data/roundcube/plugins/email_config/localization/en.inc new file mode 100644 index 0000000..55c43eb --- /dev/null +++ b/DMS/docker-data/roundcube/plugins/email_config/localization/en.inc @@ -0,0 +1,3 @@ +