diff -u securepages/securepages.admin.inc securepages_update/securepages.admin.inc
--- securepages/securepages.admin.inc	2011-01-25 04:20:38.000000000 +0000
+++ securepages_update/securepages.admin.inc	2011-08-04 10:24:18.000000000 +0100
@@ -54,6 +54,18 @@
      '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are '<em>blog</em>' for the main blog page and '<em>blog/*</em>' for every personal blog. '<em>&lt;front&gt;</em>' is the front page."),
      '#wysiwyg' => FALSE,
    );
+	// Do not display this option if there are no content types!
+	$form_type_array = securepages_build_form_type_array();
+	if(count($form_type_array)){
+	 	$form['securepages_content_types'] = array(
+	   		'#type' => 'checkboxes', 
+			'#title' => t('Content Types'),
+	    	'#default_value' => variable_get('securepages_content_types', array()),
+			'#options' => $form_type_array,
+	   		'#description' => t('Choose a set of content types.'),
+	    );
+	}
+	
    $form['securepages_ignore'] = array(
      '#type' => 'textarea',
      '#title' => t('Ignore pages'),
@@ -66,3 +78,18 @@
    return system_settings_form($form);
  }
 
+function securepages_build_form_type_array(){
+	// Get node types & make sure we have an array
+	$node_types = node_get_types();
+	if($node_types && !is_array($node_types)){
+		$node_types = array($node_types);
+	}
+	// Compile types into array suitable for consumption by checkboxes in form api
+	$form_type_array = array();
+	foreach($node_types as $type){
+		$form_type_array[$type->type] = t($type->name);
+	}
+	return $form_type_array;	
+}
+ 
+ 
diff -u securepages/securepages.module securepages_update/securepages.module
--- securepages/securepages.module	2011-02-23 13:41:40.000000000 +0000
+++ securepages_update/securepages.module	2011-08-04 10:26:11.000000000 +0100
@@ -208,13 +208,75 @@
  *  1 - page should be secure.
  *  NULL - do not change page.
  */
+
+function securepages_getnode_boot_agnostic(){
+	// yay we have booted!
+	if(function_exists('arg')){
+		return arg(1);
+	} else {
+		// We are pre-boot, get path
+		$path = $_GET['q'];
+		
+		// build array of languages from db
+		$result = db_query('SELECT * FROM {languages} ORDER BY weight ASC, name ASC');
+		while ($row = db_fetch_object($result)) {
+			$languages[] = $row->language;
+		}		
+		
+		// extract langauge if present in path
+		$pathArray = explode("/",$path);
+		if(in_array($pathArray[0],$languages)){
+			$path_language = $pathArray[0];
+			unset($pathArray[0]); 
+			$path = implode("/",$pathArray);	
+		}
+
+		// work our way to the bottom of the alias tree
+		while(true){
+			// extract alias from table, check if we have a node alias and return it
+			// if we are get no result, we have no alias!
+			if ($row = db_fetch_object(db_query("SELECT src FROM {url_alias} WHERE dst = '%s' AND language IN('%s', '') ORDER BY language DESC, pid DESC", $path, $path_language))) {
+				$srcArray = explode("/",$row->src);
+				if($srcArray[0] == "node"){
+					// we've found our node, return it
+					return $srcArray[1];
+				} else {
+					$path_language =  $row->language;
+					$path = $row->src;
+				}
+			} else { 
+				return false; 
+			}
+		}
+	}
+}
+
+function securepages_match_content_type(){
+		$nid = securepages_getnode_boot_agnostic();
+		if(!$nid) return false;
+		$content_type_array = variable_get('securepages_content_types',array());
+		foreach($content_type_array as $type){
+			$q = "SELECT count(*) FROM {node} WHERE type = '%s' AND nid = %d";
+			$results = db_query($q,array($type,$nid));
+			if(db_result($results)){
+				return true;
+			}
+		}	
+		return false;
+}
+
 function securepages_match($path) {
   /**
    * Check to see if the page matches the current settings
    */
-  $secure = variable_get('securepages_secure', 1);
-  $pages = variable_get('securepages_pages', "node/add*\nnode/*/edit\nuser/*\nadmin*");
-  $ignore = variable_get('securepages_ignore', "*/autocomplete/*\n*/ajax/*");
+
+	$secure = variable_get('securepages_secure', 1);
+	$pages = variable_get('securepages_pages', "node/add*\nnode/*/edit\nuser/*\nadmin*");
+	$ignore = variable_get('securepages_ignore', "*/autocomplete/*\n*/ajax/*");
+	
+	if(securepages_match_content_type()){
+					return true;
+	}
 
   if ($ignore) {
     $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($ignore, '/')) .')$/';
@@ -441,4 +503,4 @@
   }
 
   return TRUE;
-}
\ No newline at end of file
+}
Common subdirectories: securepages/translations and securepages_update/translations
