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 - Militarism Militarism en People's Hearing on the Lasting Impacts of the Iraq War <p><A HREF="" 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="" frameborder="0" allowfullscreen></iframe></p> <p><a href="">read more</a></p> Activism Environment Human Rights Iraq Militarism Politics Veterans Video Fri, 28 Mar 2014 18:15:05 -0400 tnjp 459 at Bradley Manning Statement - Sometimes You Have To Pay A Heavy Price To Live In A Free Society <p>"...I will serve my time knowing that sometimes you have to pay a heavy price to live in a free society. I will gladly pay that price if it means we could have country that is truly conceived in liberty and dedicated to the proposition that all women and men are created equal."</p> <p><iframe width="640" height="480" src="//" frameborder="0" allowfullscreen></iframe></p> <p>The decisions that I made in 2010 were made out of a concern for my country and the world that we live in. Since the tragic events of 9/11, our country has been at war. We've been at war with an enemy that chooses not to meet us on any traditional battlefield, and due to this fact we've had to alter our methods of combating the risks posed to us and our way of life.</p> <p>I initially agreed with these methods and chose to volunteer to help defend my country. It was not until I was in Iraq and reading secret military reports on a daily basis that I started to question the morality of what we were doing. It was at this time I realized in our efforts to meet this risk posed to us by the enemy, we have forgotten our humanity. We consciously elected to devalue human life both in Iraq and Afghanistan. When we engaged those that we perceived were the enemy, we sometimes killed innocent civilians. Whenever we killed innocent civilians, instead of accepting responsibility for our conduct, we elected to hide behind the veil of national security and classified information in order to avoid any public accountability.</p> <p>In our zeal to kill the enemy, we internally debated the definition of torture. We held individuals at Guantanamo for years without due process. We inexplicably turned a blind eye to torture and executions by the Iraqi government. And we stomached countless other acts in the name of our war on terror...</p> <p><a href="">read more</a></p> Activism Civil Liberties Fascism USA Human Rights Militarism Police State Politics Video Thu, 22 Aug 2013 18:39:00 -0400 tnjp 457 at With War Crimes Argument Banned, Manning's Military Trial Is Judicial Lynching <p><A href="" target="_blank">With War Crimes Argument Banned, Manning's Military Trial Is Judicial Lynching</A><br /> Monday, 10 June 2013 09:30 By Chris Hedges, Truthdig | Op-Ed</p> <p>The military trial of Bradley Manning is a judicial lynching. The government has effectively muzzled the defense team. The Army private first class is not permitted to argue that he had a moral and legal obligation under international law to make public the war crimes he uncovered. The documents that detail the crimes, torture and killing Manning revealed, because they are classified, have been barred from discussion in court, effectively removing the fundamental issue of war crimes from the trial. Manning is forbidden by the court to challenge the government’s unverified assertion that he harmed national security. Lead defense attorney David E. Coombs said during pretrial proceedings that the judge’s refusal to permit information on the lack of actual damage from the leaks would “eliminate a viable defense, and cut defense off at the knees.” And this is what has happened.</p> <p><a href="">read more</a></p> Fascism USA Militarism Police State Politics Wikileaks Tue, 11 Jun 2013 12:38:49 -0400 tnjp 449 at You Gotta Love Medea Benjamin <p>You Gotta Love Medea Benjamin</p> <p>If you're an advocate for Peace and Justice you just gotta love Medea Benjamin. She consistently speaks out when the rest of us only wish we could. As co-founder of <A HREF="" TARGET="_blank">CodePink</A> she's been at it for over a decade, repeatedly speaking truth to power at the risk of losing personal freedom and physical harm. She may be diminutive in size but posses a gargantuan spirit.</p> <p>Her latest exploit? Speaking out against President Obama's policies <A HREF="" TARGET="_blank">during his counter-terrorism policy speech</A> at the National Defense University. As Obama said himself - "The voice of that woman is worth paying attention to..."</p> <p>Witness it yourself in the below videos, reports, and interviews...</p> <p><a href="">President Obama Heckled By Code Pink Leader Madea Benjamin. Guantanamo Gitmo Speech</a></p> <p><iframe width="420" height="315" src="" frameborder="0" allowfullscreen></iframe></p> <p><a href="">Medea Benjamin v. President Obama: CodePink Founder Disrupts Speech, Criticizing Drone, Gitmo Policy</a></p> <p><iframe width="600" height="335" src="" frameborder="0"></iframe></p> <p><a href="">read more</a></p> Activism Drones Human Rights Militarism Peace &amp; Justice Politics Video Sat, 25 May 2013 14:39:46 -0400 tnjp 436 at Jeremy Scahill Asks How Do You Surrender To A Drone? <p><iframe width="560" height="315" src="" frameborder="0" allowfullscreen></iframe></p> <p>Scahill spoke at The Sanctuary for Independent Media in Troy NY on May 22, 2013 on the eve of President Obama's <A HREF="">address on drone policy</A>, just after Attorney General Eric H. Holder Jr. wrote a letter to members of Congress <A HREF="" TARGET="_blank">acknowledging the deaths of four Americans</A>, including Anwar al-Awlaki, in counterterrorism strikes "outside of areas of active hostilities." Though these strikes had long been the subject of press reports about the administration's use of drones, the letter marks the first time the classified operations have been publicly acknowledged.</p> <p><a href="">read more</a></p> Drones Fascism USA Human Rights Militarism Politics Video Thu, 23 May 2013 16:21:00 -0400 tnjp 440 at Pentagon 'Rewrites Constitution' Claims Power to Wage Endless War <p><iframe width="600" height="338" src="" frameborder="0"></iframe><br /> Friday, May 17, 2013 "Astoundingly Disturbing":<br /> <A HREF="" TARGET="_blank">Obama Administration Claims Power to Wage Endless War Across the Globe</A><br /> A Pentagon official predicted Thursday the war against al-Qaeda and its affiliates could last up to 20 more years. The comment came during a Senate hearing revisiting the Authorization for Use of Military Force, or AUMF, enacted by Congress days after the attacks on Sept. 11, 2001. At the hearing, Pentagon officials claimed the AUMF gives the president power to wage endless war anywhere in the world, including in Syria, Yemen and the Congo. "This is the most astounding and most astoundingly disturbing hearing that I’ve been to since I’ve been here," said Independent Sen. Angus King of Maine. "You guys have essentially rewritten the Constitution here today.</p> <p>Thursday, May 16, 2013 by Common Dreams<br /> <A HREF="" TARGET="_blank">Pentagon 'Rewrites Constitution' Affirming Endless War</A><br /> Senate hearing on the Authorization for Use of Military Force confirms congressional war powers rendered 'null and void'<br /> - Lauren McCauley, staff writer<br /> The United States is truly engaged in an endless war.</p> <p>In a hearing before the U.S. Senate Committee on Armed Forces Thursday morning entitled <A HREF="" TARGET="_blank">Oversight: The Law of Armed Conflict, the Use of Military Force, and the 2001 Authorization for Use of Military Force</A>, Pentagon officials argued that the wide-ranging counter-terrorism laws implemented after 9/11 will continue to be the law of the land until "hostilities with al-Qaeda," or any individuals potentially associated with the group, come to an end....</p> <p><a href="">read more</a></p> Fascism USA Militarism Politics Wars of Aggression Sat, 18 May 2013 14:28:48 -0400 tnjp 435 at Boston Truth Revealed In Pictures <p><A HREF="" TARGET="_blank">Boston Truth Revealed In Pictures</A><br /> <iframe class="imgur-album" width="100%" height="550" frameborder="0" src=""></iframe><br /> Pictures from Across the web showing the truth of the Boston Bombing.</p> <p><a href="" title=""></a></p> <p>For further info check out the videos below... </p> <p><a href="">read more</a></p> Fascism USA Militarism Police State Fri, 03 May 2013 13:21:00 -0400 tnjp 434 at Boston - This Is What A Police State Looks Like <p><A HREF="" TARGET="_blank">Boston: This is what a police state looks like</A><br /> By Steve Gillis on April 23, 2013</p> <p>Boston — Using war jargon associated with Iraq and Afghanistan, authorities have repeatedly described the blasts that killed three people and injured 176 at the crowded Boston Marathon on “Patriots Day,” April 15, as “IED bombings,” for improvised explosive devices. Many of the injured suffered horrific amputations and shrapnel wounds.</p> <p>Since then, a common sentiment shared among people here has been, “This must be what it looks like every day in Iraq and Afghanistan.”</p> <p>Over the next four days, people in the greater Boston area experienced a police state operation that many also described as a preview of martial law.<br /> <iframe width="420" height="315" src="" frameborder="0" allowfullscreen></iframe><br /> Media: false reports and glorifying military</p> <p>Thousands of heavily armed and mechanized National Guard troops, military police, FBI SWAT teams and federal agents of every stripe — from the Bureau of Alcohol, Tobacco, Firearms and Explosives to the Drug Enforcement Administration — mobilized to assist the Boston police lockdown of the downtown area. At the same time, the media began a nearly uninterrupted 24/7 coverage of the “manhunt.”</p> <p>TV newscasters breathlessly glorified a “courageous civilian” for allegedly tackling a “fleeing Saudi national” whose hands were “suspiciously burned” at the bombing scene. Boston police set up an armed guard at his hospital room and federal SWAT teams raided an apartment building in Revere known to house hundreds of international students, displaying bags of “seized evidence” to the cameras.</p> <p>A CNN reporter repeatedly shared his scoop with the world, straight from “sources at the highest level of law enforcement,” that authorities were focusing on a “dark skinned, Black male seen with a package in surveillance video” at the scene shortly before the blasts....</p> <p><a href="">read more</a></p> Civil Rights Fascism USA Militarism Police State Politics Fri, 26 Apr 2013 18:07:00 -0400 tnjp 432 at Illegality of War Acknowledged in Congressional Record <p><A href="" target="_blank">Illegality of War Acknowledged in Congressional Record</A></p> <p>By davidswanson - Posted on 20 April 2013</p> <p><a href="">Printer Friendly Display</a></p> <p>RECOGNIZING THE KELLOGG-BRIAND PACT -- HON. KEITH ELLISON (Extensions of Remarks - April 18, 2013)</p> <p><A href=";congressionalRecord.pagePrefix=E&amp;congressionalRecord.pageNumber=491&amp;publication=CREC">GPO's PDF[Page: E491] </A></p> <p>---</p> <p>HON. KEITH ELLISON</p> <p>OF MINNESOTA</p> <p>IN THE HOUSE OF REPRESENTATIVES</p> <p>Thursday, April 18, 2013</p> <p><UL> <LI>Mr. ELLISON. Mr. Speaker, I rise today to recognize the Kellogg-Briand Pact.</LI><br /> <LI>One of the busiest streets in Minnesota's state capital of St. Paul is Kellogg Boulevard. This street runs along the Mississippi River and was named after the only person from Minnesota to ever win the Nobel Peace Prize. Frank B. Kellogg was a Department of Justice prosecutor who was elected President of the American Bar Association and then served as a U.S. Republican Senator from Minnesota, followed by an appointment as U.S. Secretary of State for President Calvin Coolidge from 1925 to 1929.</LI><br /> <LI>Kellogg was awarded the Nobel Peace Prize in 1929 for his work in co-authoring the Kellogg-Briand Pact that made war illegal, renounced the use of war, and committed nations to the peaceful settlement of disputes. The Kellogg-Briand Pact--also called the Pact of Paris, or the General Treaty for the Renunciation of War--was signed on August 27, 1928 by the United States, France, the United Kingdom, Germany, Italy, Japan, and several other countries.</LI><br /> <LI>The Pact prohibited the use of war as ``an instrument of national policy'' except in matters of self-defense. President Coolidge signed the Pact on January 27, 1929 and the U.S. Senate passed it by a vote of 85 to 1. On July 24, 1929 President Herbert Hoover declared the Pact in force. The Kellogg-Briand Pact provided the legal basis for prosecuting Nazi officials at Nuremburg and is still U.S. and international law, with 84 state signatories.</LI><br /> <LI>Mr. Speaker, some of my own constituents are currently planning a commemoration of the Kellogg-Briand Pact to mark its 85th anniversary and to recognize Frank B. Kellogg. The Minneapolis-St. Paul chapter of Veterans for Peace is taking part in a peace essay competition organized by the West Suburban Faith-based Peace Coalition. The competition asks the question, ``How can we obey the law against war?'' The best essays will be sent to members of Congress. I urge this body to welcome these essays and give them due attention. Everyone must do their part to help eliminate war and promote the cause of peace.</LI><br /> </UL></p> <p><a href="">read more</a></p> Activism Militarism Peace &amp; Justice Politics Sun, 21 Apr 2013 17:58:43 -0400 tnjp 430 at Two Obamas, Two Classes of Children <p><A href="" target="_blank"><IMG src="" title="The lifeless bodies of Afghan children lay on the ground before their funeral ceremony, after an airstrike on their extended family household by order of President Barack Obama killed several Afghan adults and at least ten children in Shultan, Shigal district, Kunar, eastern Afghanistan, Sunday, April 7, 2013. (AP Photo)"></A><br /> April 11, 2013 by Common Dreams<br /> <A href="" target="_blank">Two Obamas, Two Classes of Children</A><br /> by Ralph Nader<br /> An Associated Press photograph brought the horror of little children lying dead outside of their home to an American Audience. At least 10 Afghan children and some of their mothers were struck down by an airstrike on their extended family household by order of President Barack Obama. He probably decided on what his aides describe as the routine weekly “Terror Tuesday” at the White House. On that day, Mr. Obama typically receives the advice about which “militants” should live or die thousands of miles away from drones or aircraft. Even if households far from war zones are often destroyed in clear violation of the laws of war, the president is not deterred.</p> <p>These Obama airstrikes are launched knowing that very often there is “collateral damage,” that is a form of “so sorry terrorism.” How can the president explain the vaporization of a dozen pre-teen Afghan boys collecting firewood for their families on a hillside? The local spotter-informants must have been disoriented by all those $100 bills in rewards. Imagine a direct strike killing and injuring scores of people in a funeral procession following a previous fatal strike that was the occasion of this processional mourning. Remember the December 2009 Obama strike on an alleged al-Qaida training camp in Yemen, using tomahawk missiles and – get this – cluster bombs, that killed 14 women and 21 children. Again and again “so sorry terrorism” ravages family households far from the battlefields...</p> <p><a href="">read more</a></p> Afghanistan Drones Fascism USA Militarism Obama Politics Fri, 12 Apr 2013 15:41:00 -0400 tnjp 428 at