From a4a9d3964d4cde30d9ac0abbec326c339abd6093 Mon Sep 17 00:00:00 2001 From: Juulia Devadze Date: Wed, 13 Feb 2019 12:14:54 +0100 Subject: [PATCH 1/3] Nemid module improvements --- .../modules/nemid_login/nemid_login.module | 6 +++++ modules/contrib/nemid/nemid.module | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/modules/contrib/nemid/modules/nemid_login/nemid_login.module b/modules/contrib/nemid/modules/nemid_login/nemid_login.module index 6b83b080..ae35aad6 100644 --- a/modules/contrib/nemid/modules/nemid_login/nemid_login.module +++ b/modules/contrib/nemid/modules/nemid_login/nemid_login.module @@ -348,6 +348,10 @@ function _nemid_login_get_config_object() { * Implements hook_form_alter(). */ function nemid_login_form_alter(&$form, &$form_state, $form_id) { + // Check if server time is correct. + if (nemid_query_time_server() - time() > 1 ) { + watchdog("Drupal Nemid Login", 'Server time is not correct.', array(), WATCHDOG_WARNING); + } switch ($form_id) { case 'webform_configure_form': @@ -363,6 +367,7 @@ function nemid_login_form_alter(&$form, &$form_state, $form_id) { // Destroy the session if there is an error, get login block again. if (isset($_SESSION['nemid_login']['errors'])) { unset($_SESSION['nemid_login']['message']); + watchdog("Drupal Nemid Login", $_SESSION['nemid_login']['errors']['description'], array(), WATCHDOG_ERROR); } if (isset($_POST['response'])) { @@ -427,6 +432,7 @@ function nemid_login_preprocess_nemid_login_block(&$vars) { $vars['errors'] = FALSE; if (isset($_SESSION['nemid_login']['errors'])) { $vars['errors'] = TRUE; + watchdog("Drupal Nemid Login", $_SESSION['nemid_login']['errors']['description'], array(), WATCHDOG_ERROR); } $post_back_form_action = 'nemid/verify'; diff --git a/modules/contrib/nemid/nemid.module b/modules/contrib/nemid/nemid.module index 57a2a602..ffff3053 100644 --- a/modules/contrib/nemid/nemid.module +++ b/modules/contrib/nemid/nemid.module @@ -271,3 +271,29 @@ function nemid_populate_fields_recursive(array &$tree, array $message) { } } } + +/** + * Returns UNIX timestamp from a NTP server (RFC 5905). + * + * @param string $host + * Server host (default is pool.ntp.org). + * @param integer $timeout + * Timeout in seconds (default is 10 seconds. + * @return integer + * Number of seconds since January 1st 1970. + */ +function nemid_query_time_server($host = 'pool.ntp.org', $timeout = 10) { + $socket = stream_socket_client('udp://' . $host . ':123', $errno, $errstr, (int)$timeout); + + $msg = "\010" . str_repeat("\0", 47); + fwrite($socket, $msg); + + $response = fread($socket, 48); + fclose($socket); + + $data = unpack('N12', $response); + $timestamp = sprintf('%u', $data[9]); + $timestamp -= 2208988800; + + return $timestamp; +} From 8fa78d684d4bcb6f7801aa098d90051fb3e62fb8 Mon Sep 17 00:00:00 2001 From: Juulia Devadze Date: Thu, 14 Feb 2019 16:52:48 +0100 Subject: [PATCH 2/3] Nemid moduel changes --- .../modules/nemid_login/nemid_login.module | 39 ++++++++++++++++--- .../nemid/modules/nemlogin/nemlogin.module | 1 + modules/contrib/nemid/nemid.module | 25 ------------ 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/modules/contrib/nemid/modules/nemid_login/nemid_login.module b/modules/contrib/nemid/modules/nemid_login/nemid_login.module index ae35aad6..cf3140d7 100644 --- a/modules/contrib/nemid/modules/nemid_login/nemid_login.module +++ b/modules/contrib/nemid/modules/nemid_login/nemid_login.module @@ -348,10 +348,6 @@ function _nemid_login_get_config_object() { * Implements hook_form_alter(). */ function nemid_login_form_alter(&$form, &$form_state, $form_id) { - // Check if server time is correct. - if (nemid_query_time_server() - time() > 1 ) { - watchdog("Drupal Nemid Login", 'Server time is not correct.', array(), WATCHDOG_WARNING); - } switch ($form_id) { case 'webform_configure_form': @@ -363,7 +359,7 @@ function nemid_login_form_alter(&$form, &$form_state, $form_id) { $form['#submit'][] = 'nemid_login_webform_configure_save'; break; - case strstr($form_id, 'webform_client_form'): + case strstr($form_id, 'webform_client_form'): // Destroy the session if there is an error, get login block again. if (isset($_SESSION['nemid_login']['errors'])) { unset($_SESSION['nemid_login']['message']); @@ -417,7 +413,7 @@ function nemid_login_webform_view($variables) { else { // Unsetting the message after it has been used once // for multipage forms. - if ($page_num == ($page_count - 1)) { + if (isset($_SESSION['nemid_login']) && ($page_num == ($page_count - 1))) { unset($_SESSION['nemid_login']['message']); } } @@ -430,6 +426,11 @@ function nemid_login_webform_view($variables) { */ function nemid_login_preprocess_nemid_login_block(&$vars) { $vars['errors'] = FALSE; + // Check if server time is correct. + $ntp_server_time = nemid_login_query_time_server(); + if ($ntp_server_time && abs(nemid_login_query_time_server() - time() > 1 )) { + watchdog("Drupal Nemid Login", 'Server time is not correct.', array(), WATCHDOG_WARNING); + } if (isset($_SESSION['nemid_login']['errors'])) { $vars['errors'] = TRUE; watchdog("Drupal Nemid Login", $_SESSION['nemid_login']['errors']['description'], array(), WATCHDOG_ERROR); @@ -462,3 +463,29 @@ function nemid_login_preprocess_nemid_login_block(&$vars) { drupal_add_js(array('nemidLogin' => $settings), array('type' => 'setting')); drupal_add_js(drupal_get_path('module', 'nemid_login') . '/nemid_login.js'); } + +/** + * Returns UNIX timestamp from a NTP server (RFC 5905). + * + * @param string $host + * Server host (default is pool.ntp.org). + * @param integer $timeout + * Timeout in seconds (default is 10 seconds. + * @return integer + * Number of seconds since January 1st 1970. + */ +function nemid_login_query_time_server($host = 'pool.ntp.org', $timeout = 10) { + if ($socket = stream_socket_client('udp://' . $host . ':123', $errno, $errstr, (int)$timeout)) { + $msg = "\010" . str_repeat("\0", 47); + fwrite($socket, $msg); + $response = fread($socket, 48); + fclose($socket); + $data = unpack('N12', $response); + + $timestamp = sprintf('%u', $data[9]); + $timestamp -= 2208988800; + return $timestamp; + } + watchdog("Drupal Nemid Login", 'Connection with NTP server fails %errno: %errstr', array('%errno' => $errno, '%errstr' => $errstr), WATCHDOG_ERROR); + return FALSE; +} \ No newline at end of file diff --git a/modules/contrib/nemid/modules/nemlogin/nemlogin.module b/modules/contrib/nemid/modules/nemlogin/nemlogin.module index 93fd9a31..54c592f8 100644 --- a/modules/contrib/nemid/modules/nemlogin/nemlogin.module +++ b/modules/contrib/nemid/modules/nemlogin/nemlogin.module @@ -172,3 +172,4 @@ function nemlogin_webform_configure_save($form, &$form_state) { $login_block_enable = $form_state['values']['nemlogin_link_enable_' . $form['nid']['#value']]; variable_set('nemlogin_link_enable_' . $form['nid']['#value'], $login_block_enable); } + diff --git a/modules/contrib/nemid/nemid.module b/modules/contrib/nemid/nemid.module index ffff3053..680dd8b3 100644 --- a/modules/contrib/nemid/nemid.module +++ b/modules/contrib/nemid/nemid.module @@ -272,28 +272,3 @@ function nemid_populate_fields_recursive(array &$tree, array $message) { } } -/** - * Returns UNIX timestamp from a NTP server (RFC 5905). - * - * @param string $host - * Server host (default is pool.ntp.org). - * @param integer $timeout - * Timeout in seconds (default is 10 seconds. - * @return integer - * Number of seconds since January 1st 1970. - */ -function nemid_query_time_server($host = 'pool.ntp.org', $timeout = 10) { - $socket = stream_socket_client('udp://' . $host . ':123', $errno, $errstr, (int)$timeout); - - $msg = "\010" . str_repeat("\0", 47); - fwrite($socket, $msg); - - $response = fread($socket, 48); - fclose($socket); - - $data = unpack('N12', $response); - $timestamp = sprintf('%u', $data[9]); - $timestamp -= 2208988800; - - return $timestamp; -} From 3b57dad1500a3d08cc8d3c29ea09d777d2f5d8a0 Mon Sep 17 00:00:00 2001 From: Juulia Devadze Date: Fri, 15 Feb 2019 16:50:46 +0100 Subject: [PATCH 3/3] Small change --- .../nemid/modules/nemid_login/nemid_login.module | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/contrib/nemid/modules/nemid_login/nemid_login.module b/modules/contrib/nemid/modules/nemid_login/nemid_login.module index cf3140d7..6673c72d 100644 --- a/modules/contrib/nemid/modules/nemid_login/nemid_login.module +++ b/modules/contrib/nemid/modules/nemid_login/nemid_login.module @@ -359,7 +359,12 @@ function nemid_login_form_alter(&$form, &$form_state, $form_id) { $form['#submit'][] = 'nemid_login_webform_configure_save'; break; - case strstr($form_id, 'webform_client_form'): + case strstr($form_id, 'webform_client_form'): + // Check if server time is correct. + $ntp_server_time = nemid_login_query_time_server(); + if ($ntp_server_time && abs(nemid_login_query_time_server() - time() > 1 )) { + watchdog("Drupal Nemid Login", 'Server time is not correct.', array(), WATCHDOG_WARNING); + } // Destroy the session if there is an error, get login block again. if (isset($_SESSION['nemid_login']['errors'])) { unset($_SESSION['nemid_login']['message']); @@ -426,11 +431,6 @@ function nemid_login_webform_view($variables) { */ function nemid_login_preprocess_nemid_login_block(&$vars) { $vars['errors'] = FALSE; - // Check if server time is correct. - $ntp_server_time = nemid_login_query_time_server(); - if ($ntp_server_time && abs(nemid_login_query_time_server() - time() > 1 )) { - watchdog("Drupal Nemid Login", 'Server time is not correct.', array(), WATCHDOG_WARNING); - } if (isset($_SESSION['nemid_login']['errors'])) { $vars['errors'] = TRUE; watchdog("Drupal Nemid Login", $_SESSION['nemid_login']['errors']['description'], array(), WATCHDOG_ERROR);