Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 15376)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -81,6 +81,7 @@
 		'TextDomain' => 'Text Domain',
 		'DomainPath' => 'Domain Path',
 		'Network' => 'Network',
+		'Active' => False,
 		// Site Wide Only is deprecated in favor of Network.
 		'_sitewide' => 'Site Wide Only',
 	);
@@ -97,6 +98,8 @@
 
 	//For backward compatibility by default Title is the same as Name.
 	$plugin_data['Title'] = $plugin_data['Name'];
+	
+	$plugin_data['Active'] = is_plugin_active(plugin_basename( $plugin_file ) );
 
 	if ( $markup || $translate )
 		$plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
Index: xmlrpc.php
===================================================================
--- xmlrpc.php	(revision 15376)
+++ xmlrpc.php	(working copy)
@@ -154,7 +154,13 @@
 			'wp.editComment'		=> 'this:wp_editComment',
 			'wp.newComment'			=> 'this:wp_newComment',
 			'wp.getCommentStatusList' => 'this:wp_getCommentStatusList',
+			
+			// Extensions for Plugin management
+			'wp.getPluginList' => 'this:wp_getPluginList',
+			'wp.activatePlugin' => 'this:wp_activatePlugin',
+			'wp.deactivatePlugin' => 'this:wp_deactivatePlugin',
 
+
 			// Blogger API
 			'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
 			'blogger.getUserInfo' => 'this:blogger_getUserInfo',
@@ -1333,8 +1339,94 @@
 
 		return get_comment_statuses( );
 	}
+	
+	/**
+	 * Retrieve list of plugins
+	 *
+	 * @since 3.0.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return array
+	 */
+	function wp_getPluginList($args) {
+		$this->escape( $args );
 
+		$blog_id	= (int) $args[0];
+		$username	= $args[1];
+		$password	= $args[2];
+	
+		if ( !$user = $this->login($username, $password) )
+			return $this->error;
+			
+		if ( ! current_user_can('activate_plugins') )
+			return new IXR_Error( 403, __( 'You are not allowed access to details about plugins.' ) );
+
+		do_action('xmlrpc_call', 'wp.getPluginList');
+		return get_plugins( );
+	}
+	
 	/**
+	 * Activate a plugin
+	 *
+	 * @since 3.0.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return boolean
+	 */
+	function wp_activatePlugin($args) {
+		$this->escape( $args );
+		
+		$blog_id	= (int) $args[0];	// Not used for now
+		$username	= $args[1];
+		$password	= $args[2];
+		$plugin     = $args[3];
+		
+		if ( !$user = $this->login($username, $password) )
+			return $this->error;
+			
+		if ( ! current_user_can('activate_plugins') )
+			return new IXR_Error( 403, __( 'You are not allowed access to details about plugins.' ) );
+
+		do_action('xmlrpc_call', 'wp.activatePlugin');
+
+		if (gettype(activate_plugin( $plugin, $redirect = '')) == 'WP_Error') {
+			return false;
+		} else {
+			return true;
+		}
+	}
+	
+	/**
+	 * Deactivate a plugin
+	 *
+	 * @since 3.0.0
+	 *
+	 * @param array $args Method parameters.
+	 * @return boolean
+	 */
+	function wp_deactivatePlugin($args) {
+		$this->escape( $args );
+		
+		$blog_id	= (int) $args[0];	// Not used for now
+		$username	= $args[1];
+		$password	= $args[2];
+		$plugin     = $args[3];
+		
+		if ( !$user = $this->login($username, $password) )
+			return $this->error;
+			
+		if ( ! current_user_can('activate_plugins') )
+			return new IXR_Error( 403, __( 'You are not allowed access to details about plugins.' ) );
+		
+		do_action('xmlrpc_call', 'wp.deactivatePlugin');
+
+		$plugin = array($plugin);
+		deactivate_plugins( $plugin, true );
+		return true;
+	}
+
+
+	/**
 	 * Retrieve comment count.
 	 *
 	 * @since 2.5.0

