Merge branch 'master' of ssh://rcritten@git.fedorahosted.org/git/freeipa

This commit is contained in:
Rob Crittenden 2010-11-03 17:37:07 -04:00
commit 656166dc46
16 changed files with 703 additions and 112 deletions

View File

@ -18,16 +18,17 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* IPA JSON-RPC helper */
/*global $:true, location:true */
/*Forward defined due to circular dependency with IPA.*/
var ipa_cmd;
var IPA_DEFAULT_JSON_URL = '/ipa/json';
var IPA = ( function () {
/* JSON-RPC ID counter */
var ipa_jsonrpc_id = 0;
var IPA = function() {
var that = {};
var that = {
jsonrpc_id: 0
};
that.json_url = null;
that.use_static_files = false;
@ -53,42 +54,46 @@ var IPA = function() {
/* initialize the IPA JSON-RPC helper
* arguments:
* url - JSON-RPC URL to use (optional) */
that.init = function(url, use_static_files, on_success, on_error) {
if (url)
that.init = function (url, use_static_files, on_success, on_error) {
if (url) {
that.json_url = url;
}
if (use_static_files)
if (use_static_files) {
that.use_static_files = use_static_files;
}
$.ajaxSetup(that.ajax_options);
ipa_cmd('json_metadata', [], {},
function(data, text_status, xhr) {
function (data, text_status, xhr) {
that.metadata = data.result.metadata;
that.messages = data.result.messages;
if (on_success) on_success(data, text_status, xhr);
if (on_success) {
on_success(data, text_status, xhr);
}
},
on_error
);
};
that.get_entities = function() {
that.get_entities = function () {
return that.entities;
};
that.get_entity = function(name) {
that.get_entity = function (name) {
return that.entities_by_name[name];
};
that.add_entity = function(entity) {
that.add_entity = function (entity) {
that.entities.push(entity);
that.entities_by_name[entity.name] = entity;
};
that.show_page = function(entity_name, facet_name, other_entity) {
that.show_page = function (entity_name, facet_name, other_entity) {
var entity = IPA.get_entity(entity_name);
var facet = entity.get_facet(facet_name);
//var entity = IPA.get_entity(entity_name);
//var facet = entity.get_facet(facet_name);
var state = {};
state[entity_name + '-facet'] = facet_name;
@ -97,7 +102,7 @@ var IPA = function() {
};
return that;
}();
}());
/* call an IPA command over JSON-RPC
* arguments:
@ -109,6 +114,7 @@ var IPA = function() {
* objname - name of an IPA object (optional) */
function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
{
function dialog_open(xhr, text_status, error_thrown) {
var that = this;
@ -116,11 +122,11 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
modal: true,
width: 400,
buttons: {
'Retry': function() {
'Retry': function () {
IPA.error_dialog.dialog('close');
ipa_cmd(name, args, options, win_callback, fail_callback, objname);
},
'Cancel': function() {
'Cancel': function () {
IPA.error_dialog.dialog('close');
fail_callback.call(that, xhr, text_status, error_thrown);
}
@ -128,31 +134,6 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
});
}
function success_handler(data, text_status, xhr) {
if (!data) {
var error_thrown = {
title: 'HTTP Error '+xhr.status,
message: data ? xhr.statusText : "No response"
};
http_error_handler.call(this, xhr, text_status, error_thrown);
} else if (data.error) {
var error_thrown = {
title: 'IPA Error '+data.error.code,
message: data.error.message
};
ipa_error_handler.call(this, xhr, text_status, error_thrown);
} else if (win_callback) {
win_callback.call(this, data, text_status, xhr);
}
}
function error_handler(xhr, text_status, error_thrown) {
error_thrown.title = 'AJAX Error: '+error_thrown.name;
ajax_error_handler.call(this, xhr, text_status, error_thrown);
}
function ajax_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', error_thrown.title);
@ -163,6 +144,12 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
dialog_open.call(this, xhr, text_status, error_thrown);
}
function error_handler(xhr, text_status, error_thrown) {
error_thrown.title = 'AJAX Error: '+error_thrown.name;
ajax_error_handler.call(this, xhr, text_status, error_thrown);
}
function http_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', error_thrown.title);
@ -182,21 +169,44 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
dialog_open.call(this, xhr, text_status, error_thrown);
}
var id = ipa_jsonrpc_id++;
function success_handler(data, text_status, xhr) {
if (!data) {
var error_thrown = {
title: 'HTTP Error '+xhr.status,
message: data ? xhr.statusText : "No response"
};
http_error_handler.call(this, xhr, text_status, error_thrown);
} else if (data.error) {
ipa_error_handler.call(this, xhr, text_status, /* error_thrown */ {
title: 'IPA Error '+data.error.code,
message: data.error.message
});
} else if (win_callback) {
win_callback.call(this, data, text_status, xhr);
}
}
IPA.jsonrpc_id += 1;
var id = IPA.jsonrpc_id;
var method_name = name;
if (objname)
if (objname){
method_name = objname + '_' + name;
}
var url = IPA.json_url;
if (!url)
if (!url){
url = IPA_DEFAULT_JSON_URL;
}
if (IPA.use_static_files)
if (IPA.use_static_files){
url += '/' + method_name + '.json';
}
var data = {
method: method_name,
params: [args, options],
@ -215,43 +225,24 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
return (id);
}
/* parse query string into key:value dict
* arguments:
* qs - query string (optional) */
function ipa_parse_qs(qs)
{
var dict = {};
if (!qs)
qs = location.hash.substring(1);
qs = qs.replace(/\+/g, ' ');
var args = qs.split('&');
for (var i = 0; i < args.length; ++i) {
var parts = args[i].split('=', 2);
var key = decodeURIComponent(parts[0]);
if (parts.length == 2)
dict[key] = decodeURIComponent(parts[1]);
else
dict[key] = key;
}
return (dict);
}
/* helper function used to retrieve information about an attribute */
function ipa_get_param_info(obj_name, attr)
{
var ipa_obj = IPA.metadata[obj_name];
if (!ipa_obj) return null;
if (!ipa_obj) {
return null;
}
var takes_params = ipa_obj.takes_params;
if (!takes_params)
if (!takes_params) {
return (null);
for (var i = 0; i < takes_params.length; ++i) {
if (takes_params[i]['name'] == attr)
}
for (var i = 0; i < takes_params.length; i += 1) {
if (takes_params[i].name === attr){
return (takes_params[i]);
}
}
return (null);
@ -261,16 +252,17 @@ function ipa_get_param_info(obj_name, attr)
function ipa_get_member_attribute(obj_name, member)
{
var ipa_obj = IPA.metadata[obj_name];
if (!ipa_obj) return null;
if (!ipa_obj) {
return null;
}
var attribute_members = ipa_obj.attribute_members;
for (var a in attribute_members) {
var objs = attribute_members[a];
for (var i = 0; i < objs.length; ++i) {
if (objs[i] == member)
for (var i = 0; i < objs.length; i += 1) {
if (objs[i] === member){
return a;
}
}
}
return null;
}

View File

@ -0,0 +1,27 @@
{
"error": null,
"id": 0,
"result": {
"result": {
"accessruletype": [
"allow"
],
"cn": [
"test"
],
"dn": "ipauniqueid=f3e69e82-e3b411df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"ipauniqueid": [
"f3e69e82-e3b411df-bfde9b13-2b28c216"
],
"objectclass": [
"ipaassociation",
"ipahbacrule"
]
},
"summary": null,
"value": "test"
}
}

View File

@ -0,0 +1,56 @@
{
"error": null,
"id": 0,
"result": {
"completed": 2,
"failed": {
"memberhost": {
"host": [],
"hostgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,56 @@
{
"error": null,
"id": 0,
"result": {
"completed": 3,
"failed": {
"memberservice": {
"hbacsvc": [],
"hbacsvcgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,56 @@
{
"error": null,
"id": 0,
"result": {
"completed": 2,
"failed": {
"sourcehost": {
"host": [],
"hostgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,56 @@
{
"error": null,
"id": 0,
"result": {
"completed": 3,
"failed": {
"memberuser": {
"group": [],
"user": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,9 @@
{
"error": null,
"id": 0,
"result": {
"result": true,
"summary": null,
"value": "test"
}
}

View File

@ -1,8 +1,8 @@
{
"error": null,
"id": 6,
"id": 0,
"result": {
"count": 1,
"count": 2,
"result": [
{
"accessruletype": [
@ -14,7 +14,7 @@
"description": [
"Allow all users to access any host from any host"
],
"dn": "ipauniqueid=c943a8cf-d05b-11df-b68f-525400674dcd,cn=hbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
"dn": "ipauniqueid=b7567b5a-e39311df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
"hostcategory": [
"all"
],
@ -30,9 +30,25 @@
"usercategory": [
"all"
]
},
{
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=3b6d2a82-e3b511df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
]
}
],
"summary": null,
"truncated": false
}
}
}

View File

@ -0,0 +1,12 @@
{
"error": {
"code": 4202,
"kw": {},
"message": "no modifications to be performed",
"name": {
"__base64__": "RW1wdHlNb2RsaXN0"
}
},
"id": 0,
"result": null
}

View File

@ -0,0 +1,50 @@
{
"error": null,
"id": 0,
"result": {
"completed": 2,
"failed": {
"memberhost": {
"host": [],
"hostgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,49 @@
{
"error": null,
"id": 0,
"result": {
"completed": 3,
"failed": {
"memberservice": {
"hbacsvc": [],
"hbacsvcgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -0,0 +1,50 @@
{
"error": null,
"id": 0,
"result": {
"completed": 2,
"failed": {
"sourcehost": {
"host": [],
"hostgroup": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
]
}
}
}

View File

@ -0,0 +1,48 @@
{
"error": null,
"id": 0,
"result": {
"completed": 3,
"failed": {
"memberuser": {
"group": [],
"user": []
}
},
"result": {
"accessruletype": [
"allow"
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
}
}
}

View File

@ -1,35 +1,51 @@
{
"error": null,
"id": 6,
"error": null,
"id": 0,
"result": {
"result": {
"accessruletype": [
"allow"
],
],
"accesstime": [
"periodic daily 0800-1400",
"absolute 201012161032 ~ 201012161033"
],
"cn": [
"allow_all"
],
"description": [
"Allow all users to access any host from any host"
],
"dn": "ipauniqueid=c943a8cf-d05b-11df-b68f-525400674dcd,cn=hbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
"hostcategory": [
"all"
],
"test"
],
"dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com",
"ipaenabledflag": [
"TRUE"
],
"servicecategory": [
"all"
],
"sourcehostcategory": [
"all"
],
"usercategory": [
"all"
],
"memberhost_host": [
"dev.example.com"
],
"memberhost_hostgroup": [
"production"
],
"memberservice_hbacsvc": [
"ftp",
"sshd"
],
"memberservice_hbacsvcgroup": [
"sudo"
],
"memberuser_group": [
"admins",
"editors"
],
"memberuser_user": [
"admin",
"test"
],
"sourcehost_host": [
"dev.example.com"
],
"sourcehost_hostgroup": [
"staging"
]
},
"summary": null,
"value": "allow_all"
},
"summary": null,
"value": "test"
}
}
}

View File

@ -0,0 +1,74 @@
{
"error": null,
"id": 0,
"result": {
"count": 7,
"result": [
{
"cn": [
"sshd"
],
"description": [
"sshd"
],
"dn": "cn=sshd,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"ftp"
],
"description": [
"ftp"
],
"dn": "cn=ftp,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"su"
],
"description": [
"su"
],
"dn": "cn=su,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"login"
],
"description": [
"login"
],
"dn": "cn=login,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"su-l"
],
"description": [
"su with login shell"
],
"dn": "cn=su-l,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"sudo"
],
"description": [
"sudo"
],
"dn": "cn=sudo,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
},
{
"cn": [
"sudo-i"
],
"description": [
"sudo-i"
],
"dn": "cn=sudo-i,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com"
}
],
"summary": null,
"truncated": false
}
}

View File

@ -0,0 +1,24 @@
{
"error": null,
"id": 0,
"result": {
"count": 1,
"result": [
{
"cn": [
"SUDO"
],
"description": [
"Default group of SUDO related services"
],
"dn": "cn=sudo,cn=hbacservicegroups,cn=accounts,dc=dev,dc=example,dc=com",
"member_hbacsvc": [
"sudo",
"sudo-i"
]
}
],
"summary": "1 group matched",
"truncated": false
}
}