Implements an image recognition captcha.

"; break; case 'admin/modules#description': case 'admin/modules/textimage': case 'admin/textimage': $output = t('Implements an image recognition captcha.'); break; } return $output; } function textimage_captchachallenge(&$form) { $form['captcha_response'] = array ( '#type' => 'textfield', '#title' => t('Captcha Validation'), '#default_value' => '', '#required' => TRUE, '#validate' => array('_captcha_validate' => array()), '#description' => t('Please type in the letters/numbers that are shown in the image above.'), '#prefix' => 'Captcha Image: you will need to recognize the text in it.', ); return $form; } function textimage_captchavalidate(&$captcha_word, &$correct) { $captcha_word = drupal_strtolower($captcha_word); if (($_SESSION['captcha'] != '') && $captcha_word == $_SESSION['captcha']) { $correct = true; } else { $correct = false; form_set_error('captcha_response', t('The image verification code you entered is incorrect.')); } } /** * Implementation of hook_menu(). */ function textimage_menu($may_cache) { $items = array(); $suffix = ''; if (arg(2)!=null) $suffix='/'.arg(2); $items[] = array( 'path' => '_textimage/image'.$suffix, 'title' => t('textimage'), 'callback' => '_textimage_image', 'access' => user_access('access textimages'), 'type' => MENU_CALLBACK ); return $items; } function textimage_perm() { return array('access textimages'); } function textimage_settings() { $fonts_path = variable_get("textimage_fonts_path", ""); $images_path = variable_get("textimage_images_path", ""); //check for GD if (!function_exists(imagecreate)) drupal_set_message(t('Image library not available. Textimage needs the GD library extension to be installed. Please install GD.')); //check for TTF support elseif (!function_exists(imagettftext)) drupal_set_message(t('Your image library does not seem to have TrueType font support. Textimage will work, but will use the default inbuilt font.'),'status'); //check for valid font path elseif ($fonts_path!="" && !is_dir($fonts_path)) drupal_set_message(t('The current font path is invalid. The default font will be used.')); //check for valid image path if ($images_path!="" && !is_dir($images_path)) drupal_set_message(t('The current images path is invalid. No images will be used.')); //Fonts settings $form['fonts'] = array( '#type' => 'fieldset', '#title' => t('Fonts settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['fonts']['textimage_use_only_upper'] = array( '#type' => 'checkbox', '#title' => t('Use only Uppercase'), '#default_value' => variable_get('textimage_use_only_upper',0) ); $form['fonts']['textimage_fonts_path'] = array( '#type' => 'textfield', '#title' => t('TrueType Fonts Path'), '#default_value' => $fonts_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the Truetype (.ttf) fonts are stored. If you do not provide any fonts, the module will use the default font for text. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['fonts']['textimage_font_size'] = array( '#type' => 'textfield', '#title' => t('Font Size'), '#default_value' => variable_get('textimage_font_size',24), '#size' => 5, '#maxlength' => 2, '#description' => t('Font size of Captcha text (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_font_size")), ); $form['fonts']['textimage_char_spacing_max'] = array( '#type' => 'textfield', '#title' => t('Character Spacing'), '#default_value' => variable_get('textimage_char_spacing_max',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the kerning between letters in Captcha. Higher numbers indicate more spacing.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_spacing_max")), ); $form['fonts']['textimage_char_jiggle_amount'] = array( '#type' => 'textfield', '#title' => t('Character Jiggle'), '#default_value' => variable_get('textimage_char_jiggle_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of up and down movement in the Captcha letters. Higher numbers indicate more jiggling.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_jiggle_amount")), ); $form['fonts']['textimage_char_rotate_amount'] = array( '#type' => 'textfield', '#title' => t('Character Rotation'), '#default_value' => variable_get('textimage_char_rotate_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of rotation in the Captcha letters (in degrees, only works with non-default fonts).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_rotate_amount")), ); $form['fonts']['textimage_char_size_amount'] = array( '#type' => 'textfield', '#title' => t('Character Size Adjustment'), '#default_value' => variable_get('textimage_char_size_amount',2), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of variation in size between the different letters in the Captcha (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_size_amount")), ); //Image settings $form['images'] = array( '#type' => 'fieldset', '#title' => t('Image settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['images']['textimage_images_path'] = array( '#type' => 'textfield', '#title' => t('Background Images Path'), '#default_value' => $images_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the background images are stored. If you do not provide a directory, solid colors will be used. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['images']['textimage_image_noise'] = array( '#type' => 'textfield', '#title' => t('Image Noise (pixels)'), '#default_value' => variable_get('textimage_image_noise',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random pixels) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_noise")), ); $form['images']['textimage_image_lines'] = array( '#type' => 'textfield', '#title' => t('Image Noise (lines)'), '#default_value' => variable_get('textimage_image_lines',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random lines) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_lines")), ); $form['images']['textimage_image_margin'] = array( '#type' => 'textfield', '#title' => t('Image Margin'), '#default_value' => variable_get('textimage_image_margin',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Set a distance between the Captcha letters and the edges of the image.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_margin")), ); $form['info'] = array( '#type' => 'fieldset', '#title' => t('Image and font information'), '#collapsible' => TRUE, '#collapsed' => FALSE ); if (isset($fonts_path)) { $imagefontinfo .= t('Number of fonts found: ').count(_textimage_font_list()); } if (isset($images_path)) { $imagefontinfo .= '
'.t('Number of background images found: ').count(_textimage_image_list()); } $gdinfo = gd_info(); $imagefontinfo .= '
'.t('GD Version: ').$gdinfo["GD Version"]; $imagefontinfo .= '
'.t(' FreeType Support: '); $imagefontinfo .= ($gdinfo["FreeType Support"]==true) ? 'True' : 'False'; $imagefontinfo .= '
'; $form['info']['captcha_info'] = array ( '#type' => 'item', '#value' => $imagefontinfo, ); return $form; } function textimage_settings_form_validate ($form_id,$form) { //check for valid font path if ($form['textimage_fonts_path'] !="" && !is_dir($form['textimage_fonts_path'])) form_set_error('textimage_fonts_path', t('The entered font path is invalid')); //check for valid image path if ($form['textimage_images_path'] !="" && !is_dir($form['textimage_images_path'])) form_set_error('textimage_images_path', t('The entered image path is invalid')); } function _textimage_number_validate ($field,$fieldName) { if (!is_numeric($field['#value'])) { form_set_error($fieldName,t("The value for")." ".t($field['#title'])." ".t("must be a number")); } } /** * Prints an image containing a textimage code. */ function _textimage_image() { //if we don't have GD2 functions, we can't generate the image if (!function_exists('imagecreatetruecolor')) return; // Set headers header('Expires: Mon, 01 Jan 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-type: image/png'); $string = _textimage_code(); // Get truetype font list $fonts = _textimage_font_list(); // Get the background images list $images = _textimage_image_list(); // Randomization amounts: $charSpacingMax = variable_get('textimage_char_spacing_max',10); // Letter spacing max (pixels) $charSpacingMin = max($charSpacingMax*.5,0); // Letter spacing minimum (pixels) $charJiggleAmount = variable_get('textimage_char_jiggle_amount',5); // Up and down randomization (pixels) $charRotateAmount = variable_get('textimage_char_rotate_amount',5); // Character rotation amount (degrees) $charSizeAmount = variable_get('textimage_char_size_amount',2); // Character size amount (pixels) $imageRotateAmount = variable_get('captcha_image_rotate_amount',12); // Image rotation amount (degrees) // Static amounts: $charInitialSize = variable_get('textimage_font_size',24); // Initial Font $imageNoise = variable_get('textimage_image_noise',4); // Amount of noise added to image $imageLines = variable_get('textimage_image_lines',4); // Amount of noise added to image $imageMargin = variable_get('textimage_image_margin',10); // Margin around image (pixels) // write text using a truetype font if (function_exists(imagettftext) && count($fonts) > 0) { // Initialize variables for the loop $characterDetails = array(); // contains the final info about each character // Build a list of character settings for the captcha string for ($i=0;$i $charSize, "angle" => $charAngle, "x" => $x, "y" => $y, "color" => $foreground, "font" => $font, "char" => $char ); // Increment the image size $imageWidth = $x + $charWidth; $imageHeight = max($imageHeight,$y+$charJiggleAmount); } // Create the image based off the string length and margin if (count($images) > 0) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Specify colors to be used in the image $foreground = imagecolorallocate($im, rand(0, 80), rand(0, 80), rand(0, 80)); foreach($characterDetails as $char) { // draw character imagettftext($im,$char['size'],$char['angle'],$char['x']+$imageMargin,$char['y']+$imageMargin,$foreground,$char['font'],$char['char']); } } else { // write text using a built-in font $x = 0; $y = 0; $imageWidth = 60 + drupal_strlen($string)*$charSpacingMax*.35; $imageHeight = 30 + $charJiggleAmount; // Create the image if (count($images) > 0 && function_exists(imagecolorallocatealpha)) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth, $imageHeight); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth, $imageHeight); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Add the text for ($i=0;$i 0) { // Prepare a larger image with a background image $im2 = _textimage_create_transparent_image($imageWidth, $imageHeight); } else { // Prepare a larger image with a solid color $im2 = imagecreatetruecolor($imageWidth, $imageHeight); imagefill($im2, 0, 0, $background); } $result = imagecopyresampled ($im2, $im, $imageMargin, $imageMargin, 0, 0, $imageWidth, $imageHeight, imagesx($im), imagesy($im)); $im = $im2; } // strikethrough imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $foreground); // Add Noise for ($x=0; $x<$imageWidth; $x++) { for ($row=0; $row<$imageNoise;$row++) { $y = rand(0,$imageHeight); imagesetpixel($im, $x, $y, $noisecolor); } } // Add Lines and Ellipses for ($x=0; $x<$imageLines;$x++) { imageline($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); imageellipse($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); } // Fill image with a random background image if available if (count($images) > 0) { $image = $images[rand(0,count($images)-1)]; _textimage_apply_background_image($im,$image); } //output to browser imagepng($im); imagedestroy($im); } /** * Returns a random string for use in a captcha */ function _textimage_code() { $consts='bcdgjxvmnprst'; $vowels='aeiou'; for ($x=0; $x < 6; $x++) { mt_srand ((double) microtime() * 1000000); $const[$x] = drupal_substr($consts,mt_rand(0,drupal_strlen($consts)-1),1); $vow[$x] = drupal_substr($vowels,mt_rand(0,drupal_strlen($vowels)-1),1); } $string = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4]; $string = drupal_substr($string,0,rand(4,6)); //everytime we create a new code, we write it to session $_SESSION['captcha'] = drupal_strtolower($string); if(variable_get('textimage_use_only_upper',0)) $string = drupal_strtoupper($string); return $string; } /** * Returns an array of files with TTF extensions in the specified directory. */ function _textimage_font_list() { $fontdir = variable_get("textimage_fonts_path", ""); $filelist = array(); if (is_dir($fontdir) && $handle = opendir($fontdir)) { while ($file = readdir($handle)) { if (preg_match("/\.ttf$/i",$file) == 1) $filelist[] = $fontdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Returns an array of files with jpg, png, and gif extensions in the specified directory. */ function _textimage_image_list() { $imagesdir = variable_get("textimage_images_path", ""); $filelist = array(); if (is_dir($imagesdir) && $handle = opendir($imagesdir)) { while ($file = readdir($handle)) { if (preg_match("/\.gif|\.png|\.jpg$/i",$file) == 1) $filelist[] = $imagesdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Overlays an image to the supplied image resource */ function _textimage_apply_background_image (&$imageResource,$imageFile) { $backgroundResource = image_gd_open($imageFile,substr($imageFile,-3)); // Copy the text onto the background $backX = imagesx($backgroundResource); $backY = imagesy($backgroundResource); $textX = imagesx($imageResource); $textY = imagesy($imageResource); $randomBackX = rand(0,$backX-$textX); $randomBackY = rand(0,$backY-$textY); // Place the text onto a random location of the background image imagecopyresampled($backgroundResource,$imageResource,$randomBackX,$randomBackY,0,0,$textX,$textY,$textX,$textY); // Crop the background image to the original image size imagecopyresampled($imageResource,$backgroundResource,0,0,$randomBackX,$randomBackY,$textX,$textY,$textX,$textY); } /** * Creates transparent image resources for images with graphic backgrounds */ function _textimage_create_transparent_image($x, $y) { $i = imagecreatetruecolor($x, $y); $b = imagecreatefromstring(base64_decode(_text_image_blankpng())); imagealphablending($i, false); imagesavealpha($i, true); imagecopyresized($i, $b ,0 ,0 ,0 ,0 ,$x, $y, imagesx($b), imagesy($b)); return $i; } function _text_image_blankpng() { $c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m"; $c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg"; $c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN"; $c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ"; $c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA"; $c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII="; return $c; } ?> Трагедии с судами черноморского пароходства | Odesskiy Listok

Трагедии с судами черноморского пароходства

user warning: Table './odessapage/cms_sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM cms_sessions WHERE timestamp >= 1593752184 AND uid = 0 in /home/hepa/public_html/new/includes/ on line 121.

Кроме судов, о которых упоминает в своей интересной книге «Корабли моей памяти» Михаил Пойзнер, я вспоминаю, что трагедии с судами черноморского пароходства были и раньше и позднее.
В 1948 году осенью у мыса Тарханкут наскочил на плавающую мину т/х «Серов».
Спаслось 7 человек. В числе спасенных оказался третий помощник Володя Киселев, в дальнейшем капитан ЧМП. А вот мой лучший друг – фронтовик Гриша Лопатин, четвертый помощник этого судна – погиб.
В 1972 году т/х «Моздок» столкнулся на рейде Одессы с болгарским танкером «Лом». Танкер взорвался. Оба судна затонули. На танкере погибло 24 человека, а на «Моздоке» – один.
О гибели т/х «Адмирал Нахимов» написано очень много.
Я тоже, будучи третьим помощником капитана т/х «Подольск», 10 марта 1948 года попал в кораблекрушение.
Т/х «Подольск» был получен от Германии в порядке репараций. Экипаж судна состоял из ленинградцев и черноморцев. Капитаном судна был назначен бывший старший помощник пассажирского судна «Молотов» Николай Васильевич Анчутин. Судно перегонялось на Дальний Восток. В 60 милях от Шанхая мы сели на рифы. Через 30 часов судно затонуло. Нас подобрал пассажирский теплоход «Петропавловск», который курсировал на линии Владивосток-Шанхай. На пути во Владивосток, в Корейском проливе ночью капитан покончил с собой, выбросившись за борт. Всех штурманов: старшего помощника Алехина (ленинградца), второго помощника Годыну и меня (мы – черноморцы) посадили в тюрьму.
7 месяцев тянулось следствие. Первые два месяца НКВД выясняло, не была ли гибель судна диверсией. Затем нас передали транспортной прокуратуре. Потом нас судил Линейный Суд Тихоокеанского Бассейна. Меня суд вынужден был оправдать «за неимением улик». А моим товарищам присудили: старпому 5 лет, второму помощнику 6 лет лагерей.
Каковы были в те годы способы давления на людей, могу рассказать. Дело в том, что на допрос нас, подследственных, возили в город в здание, где находились следователи. Нас вводили в отдельную большую комнату, где были установлены деревянные нары, на которых можно было лежать в ожидании вызова на допрос. Причем в комнату скопом свозили со всех тюремных камер так, что можно было общаться без перестукивания или перебрасывания записочек. Очевидно, следователям приходилось смириться с фактом общения заключенных между собой.
В один из таких дней ко мне подошел среднего роста весьма немолодой мужчина (лет 45) с вопросом, за что меня арестовали. Я сказал, что я – 3-й помощник капитана и арестован в связи с кораблекрушением. «Коллега, поделитесь хлебом», – попросил мой собеседник (у меня в руках была буханка хлеба, которую я получил от жены, как тюремную передачу). Я отломил ему полбуханки и в свою очередь спросил, кто он и за что он арестован. Он рассказал следующее. Фамилия его Поздняков. Он был капитаном п/х «Мезень», полученного СССР в порядке репараций от поверженной Германии. Приняв судно, капитан, как хороший хозяин, сразу же распорядился использовать брезенты (они были обнаружены в трюмах судна) для пошива чехлов на судовые лебедки, которые ржавели на открытом воздухе. Деревянную дубовую палубу драили каустической содой, которая тоже была в трюмах. Путь домой – на Дальний Восток – капитан выбрал через Атлантику, Панамский канал и Тихий океан. На пути домой судно имело несколько заходов в порты США. В те годы капитан получал, кроме месячной зарплаты в валюте, еще и за каждый порт захода так называемые «представительские» для расходов на официальных лиц, посещающих судно (престиж Советского государства). В Америке капитан закупил много выпивки, сигарет, всякой одежды. В те годы были «арматурные книжки», где строго указывалась норма закупок. Например, ручные часы можно было купить один раз в жизни, обувь – кажется, 2 пары в год (уже забыл точно, сколько) и т. д. Сверх нормы можно было закупать сколько хочешь, но при условии оплаты пошлины в отделениях советского торгпредства, что и делал капитан п/х «Мезень». При этом выдавался соответствующий документ.
Но была одна постоянная у капитана головная боль. Дело в том, что при каждом выходе команды на берег в американском порту несколько человек напивались до такой степени, что их забирала полиция, и капитану каждый раз приходилось платить штраф, чтобы их выпустили. Самое интересное, что среди постоянных пьяниц, которых надо было вызволять на свободу, внося каждый раз солидный штраф, были секретарь парторганизации судна, комсорг судна, председатель судового комитета и их друзья. Перед приходом в порт возвращения – Владивосток – эта компания пьяниц написала в органы прокуратуры о том, что капитан нарушал таможенный режим: вез контрабанду, использовал судовое имущество не по назначению, пьянствовал, тратил судовые деньги и т. д. С приходом в порт капитана на основании этого письма арестовали. Все, что он привез, за время заключения органы пропили и разворовали. А между тем капитан доказал, что все утверждения о его виновности ложны, и его придется отпустить. Но отпускать нельзя! Ведь он потребует возврата всего, что он привез из рейса…
Примерно через полтора месяца я вновь, будучи вызванным на допрос, увидел капитана Позднякова. Вот что он мне поведал. Органы следствия убедили буфетчицу судна рассказать, что она слышала, «что капитан хвалил американские автомобили и говорил, что они лучше наших советских». Короче, Поздняков получил 10 лет общих лагерей.
Я бы тоже не был оправдан судом, если бы меня не спасло очередное чудо. Дело в том, что в поселке Шкотово, где жила моя покойная жена со своими родителями и сестрами, жители очень хорошо отнеслись к тому, что их молодая соседка так удачно вышла замуж за моряка загранплавания. В те годы профессия моряка была очень почетна. Так вот, соседкой моей жены была одна одинокая старушка, в прошлом монашка. А ее родной брат был не больше и не меньше, как действующим генерал-лейтенантом – заместителем генерального прокурора СССР по военным делам. Ее брат иногда прилетал из Москвы на Дальний Восток в порядке «прокурорского надзора». Необходимо было проверять деятельность военной Прокуратуры, так как часто поступали жалобы от военнослужащих на нарушения закона.
Нас, штурманов судна, арестовали где-то в конце января 1948 года. Соседка очень сочувствовала моей жене и говорила ей: «Вот, если бы мой брат Коля приехал бы сюда, он бы разобрался и помог твоему мужу». В мае хотели устроить над нами показательный суд, но свидетели (члены экипажа) все разъехались по разным городам (часть в Одессу, некоторые в Ленинград). Поэтому суд отложили. Тем более, что так называемый «главный виновник аварии» давным-давно мертв. В июне, наконец, начался судебный процесс. На суд, который начался над нами во Владивостоке, моя жена не приехала. Суд шел 3 дня. Я был несколько удивлен благожелательным отношением ко мне судьи и двух судебных заседателей. Я обратил внимание, что в то время, как моим «подельникам» – старпому и второму помощнику – не давали открыть рта и предъявляли обвинения, меня выслушивали с вниманием и поощрением. Я не мог понять, в чем дело.
Только выйдя на волю и приехав домой, я узнал, что произошло. Оказывается, соседка-старушка сказала, что ее брат приехал во Владивосток, и она уговорила, чтобы он выслушал ее молодую соседку, мужа которой посадили в тюрьму, как она поняла, без достаточных оснований. Зам. генпрокурора по военным делам назначил время, когда Нина (моя жена) может его посетить. Нину пропустили в здание, где стояла охрана. В кабинете сидел генерал весьма преклонных лет (под 70). В углу за отдельным столиком сидел примерно таких же лет секретарь генерала в чине майора, который стенографировал беседу. Моя жена рассказала, что во время аварии я остался на тонущем судне с капитаном, что я спас судовые карты, судовую кассу, мореходки экипажа и ничего из того, что я заработал в рейсе. Но прокурора скорее интересовало мое социальное происхождение: кто я, откуда, где мои родители, кем я был во время войны и т. д. и т. п. (Во время войны я был офицером – командиром минометного взвода. В 1943 году был тяжело ранен. Имел инвалидность. Родители погибли во время оккупации Одессы). «Деточка, а ты обращалась к прокурору?» – «Обращалась, но он меня даже слушать не захотел».
«Ты понимаешь – я же государственный человек. Нy ладно, чем смогу – помогу». Вот какое чудо спасло меня от лагерей. Можно было не сомневаться, что как минимум на три года меня бы посадили. Такое было время. Когда-нибудь, если хватит терпения и сил, я расскажу о своей службе в армии во время войны – скучно не покажется.

Как здорово, что есть интернет

Дорогой Виктор Федорович!
Как здорово, что мы нашлись! Почта, не сарафанная, а интернетная работает. Наш " Одесский ЛистокЪ" с нами.
Рада была нашему разговору.
Звоните еще! Поболтаем..
Желаю всего наилучшего Вам и всей семье!
Ваша Елена

Черноморское пароходство

Спасибо вам за память. Читаю все, что Вы пишете с интересом. Особым. Как Вы всколыхнули прошлое. Большой привет Вашему сыну Владимиру и его жене Елене. Где они сейчас? Мы были раньше дружны. Они даже на моей свадебной фотографии. Ведь он учился вместе с моим мужем Владимиром Калугиным, который тоже с Вами начинал помощником капитана. А мой свекр тонул на том самом "Моздоке", а потом Игорь Владимирович был Вашим помощником тоже. Наверное много семей вспоминают теперь с Вашими воспоминаниями то время.
С огромным приветом из Германии,


Леночка дорогая!Я только что обнаружил Ваш ответ на Googe.Я не получая Вашего ответа решил
что я ошибся и не Вы жена Володи Калугина т.к. у Вас другая фамилия-Ананьева!?.И вот спустя
4года я читаю Ваш ответ!!!Я спрашивал своего старшего сына Володю о судьбе вашего мужа,но он сказал,что нечего не знает.Сообщите мне Ваш имайл и с радостью Вам напишу обо всех моих и узнаю о всех Ваших.Я просто потрясем и в любом случае буду искать Вас в интернете и
через своих друзей тоже живущих теперь как и Вы в Германии.С уважением Виктор Федорович Крумм

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <br> <tr> <td> <table>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.
More information about formatting options