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; } ?> Tallahassee Network for Justice & Peace - Veterans http://tnjp.org/taxonomy/term/45/0 Military Veterans en People's Hearing on the Lasting Impacts of the Iraq War http://tnjp.org/Peoples-Hearing-on-Lasting-Impacts-of-Iraq-War <p><A HREF="http://righttoheal.org/peoples-hearing-on-the-lasting-impact-of-the-iraq-war-full-video/" TARGET="_blank">Watch the hearing</A> - Right to Heal Initiative for a People's Hearing on the Lasting Impacts of the Iraq War, Phil Donahue moderating Speakers: Yanar Mohammed is president and co-founder of the Organization of Women's Freedom in Iraq (OWFI). Falah Alwan is President of the Federation of Workers Councils and Unions in Iraq (FWCUI), one of Iraq’s largest labor unions. Iraq Veterans Against the War.</p> <p><iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/H5hagtT_zWU" frameborder="0" allowfullscreen></iframe></p> <p><a href="http://tnjp.org/Peoples-Hearing-on-Lasting-Impacts-of-Iraq-War">read more</a></p> http://tnjp.org/Peoples-Hearing-on-Lasting-Impacts-of-Iraq-War#comment Activism Environment Human Rights Iraq Militarism Politics Veterans Video Fri, 28 Mar 2014 18:15:05 -0400 tnjp 459 at http://tnjp.org A Pledge to Iraq Veteran Tomas Young http://tnjp.org/A-Pledge-to-Iraq-Veteran-Tomas-Young <p><A href="http://www.opednews.com/articles/A-Pledge-to-Iraq-Veteran-T-by-John-Bruhns-130406-767.html" target="_blank">A Pledge to Iraq Veteran Tomas Young</A><br /> By John Bruhns </p> <p><A href="http://www.tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran" target="_blank"><IMG src="http://www.opednews.com/populum/uploadphotos/s_300_i_ytimg_com_87116_hqdefault_296.gif" align="left" title="Dying Iraq War Veteran Tomas Young"></A>I never met Tomas Young. However, I strongly identify with his story as he and I joined the military for the same reason -- to fight those responsible for 9/11 . However, I was far luckier than Tomas Young as I never had to endure the crippling, and ultimately fatal wounds, he received in Sadr City in 2004. There is no real way for me to put myself in such a situation as it would be surreal to anyone who will never face such hardships. Tomas Young has now reached a point where his pain is too unbearable to continue living. Before he goes, we should all show him a bit of recognition. It is crucial that we let him know that <A href="http://www.tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran" target="_blank">his voice was heard and his message will echo on for long after he is gone</A>.</p> <p>From what I have read, Tomas Young is a patriotic man who loves the United States. His outrage with the 9/11 attacks motivated him to join the military to pursue the real culprits. </p> <p>After all, it was our generation's Pearl Harbor. After the attacks, many brave Americans were standing in military recruiting lines ready and eager to seek retribution for their fellow citizens who died on that fateful day. Tomas Young was one of them. </p> <p>I enlisted for active duty in the U.S. Army in an effort to deploy to Afghanistan and fight those who actually attacked us on 9/11. Like Tomas Young, I found my patriotism used for an unrelated and unnecessary military conflict -- <A href="http://www.tnjp.org/Iraq-Tenth-Anniversary-Cost-2.2-Trillion-Dollars-and-Hundreds-of-Thousands-of-Lives" target="_blank">the Iraq War</A>. </p> <p>In a recent letter written to George W. Bush and Dick Cheney, Iraq veteran Young clarifies the misuse of his patriotism.</p> <p><A href="http://www.tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran" target="_blank">Young writes</A>:<BLOCKQUOTE>"I would not be writing this letter if I had been wounded fighting in Afghanistan against those forces that carried out the attacks of 9/11. Had I been wounded there I would still be miserable because of my physical deterioration and imminent death, but I would at least have the comfort of knowing that my injuries were a consequence of my own decision to defend the country I love."</BLOCKQUOTE><br /> When I returned home from Iraq, I spoke out strongly against the war. I was able to do so without any handicaps or bodily limitations. Tomas Young fought the same fight while being confined to a wheelchair. Even with his extreme physical limitations, Tomas Young was able to convey <A href="http://www.tnjp.org/Iraq-Tenth-Anniversary-Cost-2.2-Trillion-Dollars-and-Hundreds-of-Thousands-of-Lives" target="_blank">the true, harsh realities of the Iraq war</A> to the American people. </p> <p>The power of his message came from his experience, vision, and, sadly, his crippling and now mortal injuries. His testimony is unimpeachable, as he gave his body to a needless agenda-driven war that left most of us concluding 10 years later that <A href="http://abcnews.go.com/blogs/politics/2013/03/a-decade-on-most-are-critical-of-the-u-s-led-war-in-iraq/" target="_blank">the Iraq war was a mistake</A>...</p> <p><a href="http://tnjp.org/A-Pledge-to-Iraq-Veteran-Tomas-Young">read more</a></p> http://tnjp.org/A-Pledge-to-Iraq-Veteran-Tomas-Young#comment Activism Dick Cheney George Bush Healthcare Iraq Militarism Peace &amp; Justice Politics Veterans Wars of Aggression Sun, 07 Apr 2013 19:36:51 -0400 tnjp 427 at http://tnjp.org Ann Wright - 10 Years Later and I’m Still Protesting War http://tnjp.org/Ann-Wright-10-Years-Later-and-Im-Still-Protesting-War <p><A href="http://www.truthdig.com/report/item/10_years_later_and_im_still_protesting_war_20130319/" target="_blank">10 Years Later and I’m Still Protesting War</A><br /> Posted on Mar 19, 2013<br /> By Col. Ann Wright</p> <p>Ten years ago, I resigned my post in opposition to President George W. Bush’s war on Iraq. I had worked in the U.S. government for most of my life, first in the Army and Army Reserves, retiring as a colonel, and then as a diplomat. I served in U.S. embassies in Nicaragua, Grenada, Somalia, Uzbekistan, Kyrgyzstan, Sierra Leone and Micronesia. I helped reopen the U.S. Embassy in Kabul, Afghanistan, in December 2001.</p> <p>Yet after serving in eight presidential administrations, beginning under Lyndon Johnson during the war on Vietnam, I ended my career in the U.S. government in opposition to another conflict—the war on Iraq.</p> <p>A decade after I stepped down as the deputy ambassador in the U.S. Embassy in Mongolia, the war in Iraq is over for Americans, but continues for Iraqis. The whirlwind of sectarian violence brought on by the U.S. invasion and occupation continues to blow there.</p> <p>The war on Afghanistan is now in its 13th year and as the anniversary of my resignation day approaches, I find myself outside the gates of Creech Air Force Base in Nevada, protesting war and, in particular, President Obama’s killer drone programs in Afghanistan, Pakistan, Yemen and Somalia.</p> <p>Although Obama’s kill list, the CIA drone attacks in the undeclared war on Pakistan and the assassination of three American citizens by drone in Yemen receive most of the media and congressional attention, the incredibly large number of drone strikes in Afghanistan has gotten scant coverage—and that is why I am at Creech...</p> <p><a href="http://tnjp.org/Ann-Wright-10-Years-Later-and-Im-Still-Protesting-War">read more</a></p> http://tnjp.org/Ann-Wright-10-Years-Later-and-Im-Still-Protesting-War#comment Activism Afghanistan Dick Cheney Drones George Bush Iraq Militarism Obama Pakistan Peace &amp; Justice Politics Veterans Wars of Aggression Women Wed, 20 Mar 2013 23:25:00 -0400 tnjp 425 at http://tnjp.org Last Letter: A Message to George W. Bush and Dick Cheney from a Dying Veteran http://tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran <p><A HREF="https://www.truthdig.com/dig/item/the_last_letter_20130318/" TARGET="_blank">The Last Letter: A Message to George W. Bush and Dick Cheney from a Dying Veteran</A></p> <p> To: George W. Bush and Dick Cheney</p> <p> From: Tomas Young</p> <p>“I write this letter on the 10th anniversary of the Iraq War on behalf of my fellow Iraq veterans. I write this letter on behalf of the 4,488 soldiers and Marines who died in Iraq. I write this letter on behalf of the hundreds of thousands of veterans who have been wounded and on behalf of [those who bear those wounds. I am one of those.] I am one of the gravely injured. I [am] paralyzed in an insurgent ambush in 2004 in Sadr City. My life is coming to an end. I am living under hospice care.</p> <p>“I write this letter on behalf of husbands and wives who have lost spouses, on behalf of children who have lost parents, on behalf of the fathers and mothers who have lost sons and daughters and on behalf of those who care for the many thousands of my fellow veterans who have brain injuries. I write this letter on behalf of those veterans whose trauma and self-revulsion for what they have [done, witnessed, endured] in Iraq have led to suicide and on behalf of the active-duty soldiers and Marines who commit, on average, a suicide a day. I write this letter on behalf of the some 1 million Iraqi dead and on behalf of the countless Iraqi wounded. I write this letter on behalf of us all—the human detritus your war has left behind, those who will spend their lives in unending pain and grief.</p> <p><a href="http://www.democracynow.org/blog/2013/3/21/exclusive_tomas_young_reads_in_full_his_letter_to_bush_cheney_a_message_from_a_dying_veteran">Exclusive: Tomas Young Reads in Full His Letter to Bush &amp; Cheney, "A Message From a Dying Veteran" | Democracy Now!</a><br /> <iframe width="400" height="225" src="http://www.democracynow.org/embed/blog/2013/3/21/exclusive_tomas_young_reads_in_full_his_letter_to_bush_cheney_a_message_from_a_dying_veteran" frameborder="0"></iframe></p> <p>“Your positions of authority, your millions of dollars of personal wealth, your public relations consultants, [and your privilege and power] cannot mask the hollowness of your character. You sent us to fight and die in Iraq after you, Mr. Cheney, dodged the draft in Vietnam, and you, Mr. Bush, went AWOL from your National Guard unit. Your cowardice and selfishness were established decades ago. You were not willing to risk yourselves for our nation but you sent hundreds of thousands of young men and women to be sacrificed in a senseless war with no more thought than it takes to put out the garbage...</p> <p><a href="http://tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran">read more</a></p> http://tnjp.org/Last-Letter-A-Message-to-George-W-Bush-and-Dick-Cheney-from-a-Dying-Veteran#comment Activism Dick Cheney George Bush Iraq Militarism Politics Veterans Video Wed, 20 Mar 2013 12:52:09 -0400 tnjp 424 at http://tnjp.org Take Action - Sign the Ten Point Letter to Secretary Hagel http://tnjp.org/Take-Action-Sign-the-Ten-Point-Letter-to-Secretary-Hagel <p>Take Action - <A href="http://salsa.democracyinaction.org/o/826/p/dia/action/public/?action_KEY=12737&amp;track=RootsAction" target="_blank">Sign the letter to Sec. Hagel</A></p> <p>Dear Secretary Hagel,</p> <p>Congratulations on your confirmation to the office of Secretary of Defense. As you take the reins of this new position, Veterans For Peace would like to express to you some ideas about what we would like to see from this office. Veterans For Peace (VFP) has been around since 1985 and was formed by a Viet Nam veteran with the intention of creating a bridge between the peace movement and veterans. VFP members believe that our collective experience as veterans allows us to speak about the true costs and consequences of war and militarism with a voice of credibility and true standing. We feel a responsibility to speak out against war and militarism, particularly when it is manifested in illegal and immoral wars of choice and aggression. We appreciate very much that President Obama has chosen you--someone who has seen first-hand the horrors of combat--to fill the position of Secretary of Defense. Like the members of VFP, your voice will carry an extraordinary credibility, because you understand war in a way that a civilian cannot. It will not be easy to dismiss your words when you caution against military force, or speak in favor of abiding by the Geneva Conventions. We hope that you will become a force for reshaping the Department of Defense, by consideration of the following:</p> <p>1. Refuse to put troops into harm’s way as part of an illegal, immoral war of aggression. The 2001 Authorization to Use Military Force (AUMF), signed as a knee-jerk reaction to 9/11 has been used, first by the Bush administration, and now by the Obama administration, as a blank check for perpetual war. As the Secretary of Defense, you should refuse to deploy any combat troops until Congress provides a legally binding authorization to do so. As a combat veteran, you truly understand that no one should be asked to kill or be killed for a war of choice, particularly one that has not even been legally authorized. Demand adherence to the War Powers Act.</p> <p>2. Take responsibility for the deaths, damage and harm done by the U.S. The “Collateral Murder” video leaked to Wikileaks showed the world just one instance of war crimes conducted by U.S. forces. For the United States to have any moral credibility whatsoever, we must take responsibility for our actions.</p> <p>3. State unequivocally that the U.S. will abide by the Geneva Conventions and will not torture, or participate in the extraordinary rendition of prisoners.</p> <p>4. Stop the illegal use of combat drones that are responsible the extrajudicial assassinations of thousands of civilians in Afghanistan, Pakistan, Yemen and Somalia.</p> <p>5. Call for the closure of all U.S. military bases in foreign countries. The U.S. currently has military troops stationed in more than 150 countries around the world. Bringing all U.S. troops from Afghanistan and around the world back to the U.S. will send a strong message to the international community that the U.S. is not interested in hegemony, or in being the world’s policeman.</p> <p>6. Call for the dismantlement of all nuclear weapons, and immediately take nuclear weapons off of naval vessels. There can never be a justified use of a nuclear weapon and if the U.S. is going to demand that other countries refrain from obtaining nuclear weapons capabilities, then it needs to lead the way in disarmament.</p> <p>7. Stop the use of Depleted Uranium weapons. “DU” weapons violate the Geneva Conventions. Once exploded, DU particulates enter ground water, travel on air currents, and are inhaled by innocent civilians. DU weapons are responsible for a huge spike in deformities, birth defects and other ailments in Iraq where they were widely used.</p> <p>8. End foreign military sales to countries who violate international laws and basic human rights, and who have child soldiers.</p> <p>9. Push to become a signatory to the Land Mine treaty. The international community recognizes land mines and cluster bombs as weapons that kill a high number of civilians, often long after the “official” conflict is over.</p> <p>10. Slash the Pentagon budget. The U.S. spends more on the military and war than the rest of the world combined.</p> <p><a href="http://tnjp.org/Take-Action-Sign-the-Ten-Point-Letter-to-Secretary-Hagel">read more</a></p> http://tnjp.org/Take-Action-Sign-the-Ten-Point-Letter-to-Secretary-Hagel#comment Activism Drones Militarism National Protests Obama Politics Torture Veterans Wars of Aggression Sat, 16 Mar 2013 22:12:00 -0400 tnjp 422 at http://tnjp.org Pentagon Blows Up Thousands of Homes in Afghanistan http://tnjp.org/Pentagon-Blows-Up-Thousands-of-Homes-in-Afghanistan <p><A href="http://www.answercoalition.org/national/news/pentagon-blows-up-thousands.html" target="_blank">Pentagon blows up thousands of homes in Afghanistan</A></p> <p>Repeating the horrors of the Vietnam War<br /> By Brian Becker, ANSWER Coalition National Coordinator</p> <p>Borrowing a page from its infamous “pacification” effort in South Vietnam, where peasant villages were napalmed and burned to the ground to “save them from the communists,” the Obama-ordered surge in Afghanistan has been secretly blowing up thousands of homes and leveling portions of the Afghan countryside.</p> <p>As tens of thousands of U.S. troops have surged into southern Afghanistan, villagers have fled. Then the Petraeus-led occupation forces have determined which homes will be destroyed.</p> <p>“In Arghandab District, for instance, every one of the 40 homes in the village of Khosrow was flattened by a salvo of 25 missiles, according to the district governor, Shah Muhammed Ahmadi, who estimated that 120 to 130 houses had been demolished in his district,” reported the New York Times, Nov. 16, 2010.</p> <p>The Pentagon asserts that they must destroy the homes because some of them may have explosive devices inside.</p> <p>The Pentagon’s murderous rampage and terror campaign 40 years ago against South Vietnamese villages, in areas that were considered sympathetic to the resistance forces, used much of the same kind of explanation. In fact, the New York Times in a throw back to Vietnam quotes the Arghandab District Governor, who is working with the occupation forces: “<B>We had to destroy them to make them safe.</B>”...</p> <p><a href="http://tnjp.org/Pentagon-Blows-Up-Thousands-of-Homes-in-Afghanistan">read more</a></p> http://tnjp.org/Pentagon-Blows-Up-Thousands-of-Homes-in-Afghanistan#comment Activism Afghanistan Militarism National Protests Politics Veterans Sat, 20 Nov 2010 14:22:23 -0500 tnjp 403 at http://tnjp.org Mike Hamilton - Phony Marine - Darling of Right Wing Groups http://tnjp.org/Mike-Hamilton-Phony-Marine-Darling-of-Right-Wing-Groups <p><A href="http://www.veteranstoday.com/2010/10/11/gordon-duff-phony-marine-airport-spitter-victim-darling-of-right-wing-groups/" target="_blank">Phony Marine, 'Airport Spitter' Victim "Darling" of Right Wing Groups</A><br /> October 11, 2010 posted by Gordon Duff</p> <p>“COLONEL” MIKE HAMILTON CHARGED WITH BENEFITS FRAUD AND MORE, MUCH MORE…<br /> “How many stories were there of returning veterans killing “hippies” in Airports? “None” you say? This means, of course, that Vietnam veterans were all cowards, “candyass” whiners who, when confronted, ran and cried. That’s not how I remember it, though I do remember Sylvester Stallone telling it that way in a movie. I can see poor “John Rambo” crying his little pink eyes out. Worse than that, for 40 years I have heard dozens of “veterans” telling me about having to flee airports, gangs of hippies chasing them, saliva flowing everywhere.</p> <p>By Gordon Duff STAFF WRITER/Senior Editor</p> <p>Mike Hamilton of Fayetteville, North Carolina, was convicted recently of violating the “Stolen Valor Act.” Hamilton’s Marine uniform sported 2 Navy Crosses, 4 Silver stars along with 74 other medals and ribbons. When the Supreme Court overturned the “Stolen Valor Act” as unconstitutional, a violation of “freedom of speech,” Hamilton’s conviction was overturned. He currently faces charges for other violations, perhaps even more curious ones, but Hamilton himself isn’t the problem. There are some serious questions as to whether “Colonel” Hamilton is competent to stand trial. Today, veterans groups are swooping around Mike Hamilton like vultures, looking for a meal. A few short months ago, he was the darling of the “rubber chicken” circuit, spouting the myths they wanted to hear, waving the flag and cheering on the horse manure of that is so popular to the American “right.”</p> <p>We don’t know much about Hamilton. He claims to be a former judge and police officer. We are told those things aren’t true. He claims to be a Vietnam veteran and former Marine. Though he is accused of, perhaps the most grandiose “resume enhancement” in history, we really don’t know his military record. It is assumed he never served. Frankly, we aren’t sure, nobody ever checked...</p> <p><a href="http://tnjp.org/Mike-Hamilton-Phony-Marine-Darling-of-Right-Wing-Groups">read more</a></p> http://tnjp.org/Mike-Hamilton-Phony-Marine-Darling-of-Right-Wing-Groups#comment Militarism Politics Veterans Tue, 19 Oct 2010 22:10:51 -0400 tnjp 381 at http://tnjp.org Veteran Deaths Surge After Service http://tnjp.org/Veteran-Deaths-Surge <script type="text/javascript" src="http://www.democracynow.org/embed_show_v2/300/2010/10/18/story/wars_hidden_death_toll_after_service"></script><p><A HREF="http://www.democracynow.org/2010/10/18/wars_hidden_death_toll_after_service" TARGET="_blank">DemocracyNow trancript/audio/video</A></p> <p><A HREF="http://www.nytimes.com/2010/10/17/us/17bcvets.html?_r=1" TARGET="_blank">After Service, Veteran Deaths Surge</a><br /> October 16, 2010<br /> By AARON GLANTZ</p> <p>In the six years after Reuben Paul Santos returned to Daly City from a combat tour in Iraq, he battled depression with poetry, violent video games and, finally, psychiatric treatment. His struggle ended last October, when he hung himself from a stairwell. He was 27.</p> <p>The high suicide rate among veterans has already emerged as a major issue for the military and the families and loved ones of military personnel. But Mr. Santos’s death is part of a larger trend that has remained hidden: a surge in the number of Afghanistan and Iraq veterans who have died not just as a result of suicide, but also because of vehicle accidents, motorcycle crashes, drug overdoses or other causes after being discharged from the military.</p> <p>An analysis of official death certificates on file at the State Department of Public Health reveals that more than 1,000 California veterans under 35 died between 2005 and 2008. <b>That figure is three times higher than the number of California service members who were killed in the Iraq and Afghanistan conflicts over the same period</b>...</p> <p><a href="http://tnjp.org/Veteran-Deaths-Surge">read more</a></p> http://tnjp.org/Veteran-Deaths-Surge#comment Afghanistan Iraq Militarism Politics Veterans Video Sun, 17 Oct 2010 20:46:00 -0400 tnjp 385 at http://tnjp.org Despite Army Efforts, Soldier Suicides Continue http://tnjp.org/Soldier-Suicides-Continue <p><A href="http://www.nytimes.com/2010/10/11/us/11suicides.html?emc=eta1" target="_blank">Despite Army Efforts, Soldier Suicides Continue</A><br /> By JAMES C. McKINLEY Jr.<br /> US | October 11, 2010</p> <p>Nearly 20 months after the Army began strengthening its suicide prevention program, the suicide rate among active service members shows little sign of improvement.</p> <p>FORT HOOD, Tex. - At 3:30 a.m. on a Saturday in August, Specialist Armando G. Aguilar Jr. found himself at the end of his short life. He was standing, drunk and weepy, in the parking lot of a Valero station outside Waco, Tex. </p> <p>He had jumped out of his moving pickup. There was a police officer talking to him in frantic tones. </p> <p>Specialist Aguilar held a pistol pointed at his head. This moment had been a long time coming, his family said. He had twice tried to commit suicide with pills since returning from a tough tour in Iraq a year earlier, where his job was to drive an armored vehicle to search for bombs. </p> <p>Army doctors had put him on medications for depression, insomnia, nightmares and panic attacks. Specialist Aguilar was seeing an Army therapist every week. </p> <p>But he had been getting worse in the days before his death, his parents said, seeing shadowy figures that were not there, hallucinating that he heard loud noises outside his trailer home. "He wanted help - he was out there asking for help," said his father, Armando Aguilar Sr. "He just snapped. He couldn't control what he was doing no more." Specialist Aguilar was one of 20 soldiers connected to Fort Hood who are believed to have committed suicide this year...</p> <p><a href="http://tnjp.org/Soldier-Suicides-Continue">read more</a></p> http://tnjp.org/Soldier-Suicides-Continue#comment Afghanistan Iraq Militarism Politics Veterans Tue, 12 Oct 2010 20:54:00 -0400 tnjp 379 at http://tnjp.org IVAW Operation Recovery Launches Today http://tnjp.org/IVAW-Operation-Recovery-Launches-Today <p><A href="http://www.ivaw.org/operation-recovery" target="_blank"><IMG src="http://www.ivaw.org/sites/default/files/images/public/OR_announcementbanner.jpg" title="Stop the Deployment of Traumatized Troops" height="160" width="750"></a></p> <p><B><A href="http://www.tnjp.org/Operation-Recovery">Operation Recovery launches publicly today</A></B><br /> Today Iraq Veterans Against the War publicly announces our <A href="http://www.ivaw.org/operation-recovery" target="_blank">Operation Recovery campaign</A> to Stop the Deployment of Traumatized Troops. Our team of campaign organizers has been working around the clock for the past month to prepare for today's action in Washington, D.C. </p> <p>You can do your part to raise awareness by sending a Letter to the Editor of your local paper. <A href="http://org2.democracyinaction.org/o/5966/letter/?letter_KEY=356" target="_blank">Click here to send a Letter to your local Editor</A>. We've made it easy.</p> <p><B>Today's Action</B><br /> <UL><br /> <LI>The campaign launch will start at 9:15 AM EST at the Walter Reed Army Medical Center where we will hold a ceremony in honor of all those wounded in the wars in Iraq and Afghanistan.</LI><br /> <LI>From there we march 6 miles to Capitol Hill, where we will testify about our experiences being deployed in war zones while suffering from traumatic injuries.</LI><br /> <LI>At Capitol Hill, we will read a letter out loud before delivering it to the offices of members of the Senate Armed Services Committee. (The letter is also being sent by mail to officials within the Pentagon and Veterans Administration.) The letters will serve to put these officials on notice that service members and veterans are standing up for their right to heal, and we will expose those responsible for the deployment of troops who are suffering from trauma.</LI><br /> </UL><br /> Today's launch marks the beginning of Phase One of our campaign. Over the next several weeks, we will work to investigate the issues, decide which officials will become our campaign's targets, and work to raise awareness about the campaign. </p> <p>That's where you come in.....</p> <p><a href="http://tnjp.org/IVAW-Operation-Recovery-Launches-Today">read more</a></p> http://tnjp.org/IVAW-Operation-Recovery-Launches-Today#comment Activism Afghanistan Iraq Militarism National Protests Peace &amp; Justice Politics Veterans Thu, 07 Oct 2010 20:20:03 -0400 tnjp 364 at http://tnjp.org