diff --git a/public/js/app.js b/public/js/app.js
index ae86c6f2ab183016d4176b2f2fd5b78a66dc30ac..fff8f06d018ea656e8cd3fe64fe4473284dc2837 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -514,6 +514,37 @@ angular.module('cerebro').controller('ConnectController', [
 
   }]);
 
+angular.module('cerebro').factory('ConnectDataService', ['$http',
+  function($http) {
+
+    this.getHosts = function(success, error) {
+      var config = {method: 'GET', url: 'connect/hosts'};
+      var handleSuccess = function(data) {
+        if (data.status >= 200 && data.status < 300) {
+          success(data.body);
+        } else {
+          error(data.body);
+        }
+      };
+      $http(config).success(handleSuccess).error(error);
+    };
+
+    this.connect = function(host, success, error) {
+      var config = {method: 'POST', url: 'connect', data: {host: host}};
+      $http(config).success(success).error(error);
+    };
+
+    this.authorize = function(host, username, password, success, error) {
+      var data = {host: host, username: username, password: password};
+      var config = {method: 'POST', url: 'connect', data: data};
+      $http(config).success(success).error(error);
+    };
+
+    return this;
+
+  }
+]);
+
 angular.module('cerebro').controller('CreateIndexController', ['$scope',
   'AlertService', 'DataService', 'AceEditorService', 'RefreshService',
   function($scope, AlertService, DataService, AceEditorService,
diff --git a/src/app/components/connect/data.js b/src/app/components/connect/data.js
new file mode 100644
index 0000000000000000000000000000000000000000..ef138c50d19e5ac745ce79c0bc8e76ab2dc3107a
--- /dev/null
+++ b/src/app/components/connect/data.js
@@ -0,0 +1,30 @@
+angular.module('cerebro').factory('ConnectDataService', ['$http',
+  function($http) {
+
+    this.getHosts = function(success, error) {
+      var config = {method: 'GET', url: 'connect/hosts'};
+      var handleSuccess = function(data) {
+        if (data.status >= 200 && data.status < 300) {
+          success(data.body);
+        } else {
+          error(data.body);
+        }
+      };
+      $http(config).success(handleSuccess).error(error);
+    };
+
+    this.connect = function(host, success, error) {
+      var config = {method: 'POST', url: 'connect', data: {host: host}};
+      $http(config).success(success).error(error);
+    };
+
+    this.authorize = function(host, username, password, success, error) {
+      var data = {host: host, username: username, password: password};
+      var config = {method: 'POST', url: 'connect', data: data};
+      $http(config).success(success).error(error);
+    };
+
+    return this;
+
+  }
+]);