From 0cbf97ac9a30d6006b5a75ab602231af68a4c3d9 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 14 Jul 2015 10:00:55 +0100 Subject: [PATCH 1/4] Fix expect_num_outputs parsing on tool test elements. Broken with abstracting XML parsing out into its own module. --- lib/galaxy/tools/parser/xml.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/galaxy/tools/parser/xml.py b/lib/galaxy/tools/parser/xml.py index 66be0ff435f..366f8f7fd4c 100644 --- a/lib/galaxy/tools/parser/xml.py +++ b/lib/galaxy/tools/parser/xml.py @@ -281,6 +281,7 @@ def _test_elem_to_dict(test_elem, i): outputs=__parse_output_elems(test_elem), output_collections=__parse_output_collection_elems(test_elem), inputs=__parse_input_elems(test_elem, i), + expect_num_outputs=test_elem.get("expect_num_outputs"), command=__parse_assert_list_from_elem( test_elem.find("assert_command") ), stdout=__parse_assert_list_from_elem( test_elem.find("assert_stdout") ), stderr=__parse_assert_list_from_elem( test_elem.find("assert_stderr") ), From 864e2b5111e0d25ac4cf8430f24e3eaf5e1bbe4d Mon Sep 17 00:00:00 2001 From: Eric Enns Date: Thu, 6 Aug 2015 14:29:51 -0500 Subject: [PATCH 2/4] Fix batch mode for collection, when collection maps to multiple inputs --- .../galaxy/scripts/mvc/form/form-select-content.js | 13 +++++++------ static/maps/mvc/form/form-select-content.js.map | 2 +- static/scripts/mvc/form/form-select-content.js | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/client/galaxy/scripts/mvc/form/form-select-content.js b/client/galaxy/scripts/mvc/form/form-select-content.js index 90aef404fc3..c3445fb017c 100644 --- a/client/galaxy/scripts/mvc/form/form-select-content.js +++ b/client/galaxy/scripts/mvc/form/form-select-content.js @@ -2,9 +2,6 @@ define(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-tabs', 'mvc/tools/tools-template'], function(Utils, Ui, Tabs, ToolTemplate) { -// track current history elements -history = {}; - // hda/hdca content selector ui element var View = Backbone.View.extend({ // initialize @@ -13,6 +10,10 @@ var View = Backbone.View.extend({ this.app = app; this.options = options; + // track current history elements + this.history = {}; + + // link this var self = this; @@ -197,7 +198,7 @@ var View = Backbone.View.extend({ value: item.id }); // backup to local history - history[item.id + '_' + item.src] = item; + self.history[item.id + '_' + item.src] = item; } // update field field.update(select_options); @@ -272,7 +273,7 @@ var View = Backbone.View.extend({ // append to dataset ids for (var i in id_list) { - var details = history[id_list[i] + '_' + this.list[this.current].type]; + var details = this.history[id_list[i] + '_' + this.list[this.current].type]; if (details) { result.values.push(details); } else { @@ -315,7 +316,7 @@ var View = Backbone.View.extend({ /** Assists in identifying the batch mode */ _batch: function() { if (this.current == 'collection') { - var hdca = history[this._select().value() + '_hdca']; + var hdca = this.history[this._select().value() + '_hdca']; if (hdca && hdca.map_over_type) { return true; } diff --git a/static/maps/mvc/form/form-select-content.js.map b/static/maps/mvc/form/form-select-content.js.map index f24e5f85588..5f84d12f797 100644 --- a/static/maps/mvc/form/form-select-content.js.map +++ b/static/maps/mvc/form/form-select-content.js.map @@ -1 +1 @@ -{"version":3,"file":"form-select-content.js","sources":["../../../src/mvc/form/form-select-content.js"],"names":["define","Utils","Ui","history","View","Backbone","extend","initialize","app","options","this","self","setElement","list","radio_buttons","mode","type","multiple","current","extensions","textify","hda_error","hdca_error","push","icon","value","tooltip","select_single","Select","optional","error_text","onchange","trigger","field","select_multiple","searchable","select_collection","button_type","RadioButton","data","refresh","$batch","$","template_batch","n_buttons","_","size","button_width","$el","append","Math","max","i","css","margin-left","update","undefined","on","wait","unwait","_update","select_options","item","label","hid","name","id","src","hda","hdca","new_value","values","length","err","console","debug","id_list","_select","Array","result","batch","_batch","details","sort","a","b","show","hide","map_over_type"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"form-select-content.js","sources":["../../../src/mvc/form/form-select-content.js"],"names":["define","Utils","Ui","View","Backbone","extend","initialize","app","options","this","history","self","setElement","list","radio_buttons","mode","type","multiple","current","extensions","textify","hda_error","hdca_error","push","icon","value","tooltip","select_single","Select","optional","error_text","onchange","trigger","field","select_multiple","searchable","select_collection","button_type","RadioButton","data","refresh","$batch","$","template_batch","n_buttons","_","size","button_width","$el","append","Math","max","i","css","margin-left","update","undefined","on","wait","unwait","_update","select_options","item","label","hid","name","id","src","hda","hdca","new_value","values","length","err","console","debug","id_list","_select","Array","result","batch","_batch","details","sort","a","b","show","hide","map_over_type"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/mvc/form/form-select-content.js b/static/scripts/mvc/form/form-select-content.js index d695833fc70..b071f73ba0a 100644 --- a/static/scripts/mvc/form/form-select-content.js +++ b/static/scripts/mvc/form/form-select-content.js @@ -1,2 +1,2 @@ -define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-tabs","mvc/tools/tools-template"],function(a,b){history={};var c=Backbone.View.extend({initialize:function(c,d){this.app=c,this.options=d;var e=this;this.setElement('
'),this.list={};var f=[];this.mode="data_collection"==d.type?"collection":d.multiple?"multiple":"single",this.current=this.mode,this.list={};var g=a.textify(d.extensions),h="No dataset available.";g&&(h="No "+g+" dataset available.");var i="No dataset list available.";g&&(i="No "+g+" dataset collection available."),"single"==this.mode&&(f.push({icon:"fa-file-o",value:"single",tooltip:"Single dataset"}),this.select_single=new b.Select.View({optional:d.optional,error_text:h,onchange:function(){e.trigger("change")}}),this.list.single={field:this.select_single,type:"hda"}),("single"==this.mode||"multiple"==this.mode)&&(f.push({icon:"fa-files-o",value:"multiple",tooltip:"Multiple datasets"}),this.select_multiple=new b.Select.View({multiple:!0,searchable:!1,optional:d.optional,error_text:h,onchange:function(){e.trigger("change")}}),this.list.multiple={field:this.select_multiple,type:"hda"}),("single"==this.mode||"multiple"==this.mode||"collection"==this.mode)&&(f.push({icon:"fa-folder-o",value:"collection",tooltip:"Dataset collection"}),this.select_collection=new b.Select.View({error_text:i,optional:d.optional,onchange:function(){e.trigger("change")}}),this.list.collection={field:this.select_collection,type:"hdca"}),this.button_type=new b.RadioButton.View({value:this.current,data:f,onchange:function(a){e.current=a,e.refresh(),e.trigger("change")}}),this.$batch=$(this.template_batch());var j=_.size(this.list),k=0;j>1&&(this.$el.append(this.button_type.$el),k=Math.max(0,35*_.size(this.list))+"px");for(var l in this.list)this.$el.append(this.list[l].field.$el.css({"margin-left":k}));this.$el.append(this.$batch.css({"margin-left":k})),this.update(d.data),void 0!==this.options.value&&this.value(this.options.value),this.refresh(),this.on("change",function(){d.onchange&&d.onchange(e.value())})},wait:function(){for(var a in this.list)this.list[a].field.wait()},unwait:function(){for(var a in this.list)this.list[a].field.unwait()},update:function(a){function b(a,b){if(a){var c=[];for(var d in b){var e=b[d];c.push({label:e.hid+": "+e.name,value:e.id}),history[e.id+"_"+e.src]=e}a.update(c)}}b(this.select_single,a.hda),b(this.select_multiple,a.hda),b(this.select_collection,a.hdca)},value:function(a){if(void 0!==a)if(a&&a.values)try{var b=[];for(var c in a.values)b.push(a.values[c].id);a&&a.values.length>0&&"hdca"==a.values[0].src?(this.current="collection",this.select_collection.value(b[0])):"multiple"==this.mode?(this.current="multiple",this.select_multiple.value(b)):(this.current="single",this.select_single.value(b[0]))}catch(d){console.debug("tools-select-content::value() - Skipped.")}else for(var c in this.list)this.list[c].field.value(null);this.refresh();var e=this._select().value();if(null===e)return null;if(e instanceof Array||(e=[e]),0===e.length)return null;var f={batch:this._batch(),values:[]};for(var c in e){var g=history[e[c]+"_"+this.list[this.current].type];if(!g)return null;f.values.push(g)}return f.values.sort(function(a,b){return a.hid-b.hid}),f},refresh:function(){this.button_type.value(this.current);for(var a in this.list){var b=this.list[a].field.$el;this.current==a?b.show():b.hide()}this._batch()?this.$batch.show():this.$batch.hide()},_select:function(){return this.list[this.current].field},_batch:function(){if("collection"==this.current){var a=history[this._select().value()+"_hdca"];if(a&&a.map_over_type)return!0}return"single"!=this.current&&"single"==this.mode?!0:!1},template_batch:function(){return'
This is a batch mode input field. A separate job will be triggered for each dataset.
'}});return{View:c}}); +define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-tabs","mvc/tools/tools-template"],function(a,b){var c=Backbone.View.extend({initialize:function(c,d){this.app=c,this.options=d,this.history={};var e=this;this.setElement('
'),this.list={};var f=[];this.mode="data_collection"==d.type?"collection":d.multiple?"multiple":"single",this.current=this.mode,this.list={};var g=a.textify(d.extensions),h="No dataset available.";g&&(h="No "+g+" dataset available.");var i="No dataset list available.";g&&(i="No "+g+" dataset collection available."),"single"==this.mode&&(f.push({icon:"fa-file-o",value:"single",tooltip:"Single dataset"}),this.select_single=new b.Select.View({optional:d.optional,error_text:h,onchange:function(){e.trigger("change")}}),this.list.single={field:this.select_single,type:"hda"}),("single"==this.mode||"multiple"==this.mode)&&(f.push({icon:"fa-files-o",value:"multiple",tooltip:"Multiple datasets"}),this.select_multiple=new b.Select.View({multiple:!0,searchable:!1,optional:d.optional,error_text:h,onchange:function(){e.trigger("change")}}),this.list.multiple={field:this.select_multiple,type:"hda"}),("single"==this.mode||"multiple"==this.mode||"collection"==this.mode)&&(f.push({icon:"fa-folder-o",value:"collection",tooltip:"Dataset collection"}),this.select_collection=new b.Select.View({error_text:i,optional:d.optional,onchange:function(){e.trigger("change")}}),this.list.collection={field:this.select_collection,type:"hdca"}),this.button_type=new b.RadioButton.View({value:this.current,data:f,onchange:function(a){e.current=a,e.refresh(),e.trigger("change")}}),this.$batch=$(this.template_batch());var j=_.size(this.list),k=0;j>1&&(this.$el.append(this.button_type.$el),k=Math.max(0,35*_.size(this.list))+"px");for(var l in this.list)this.$el.append(this.list[l].field.$el.css({"margin-left":k}));this.$el.append(this.$batch.css({"margin-left":k})),this.update(d.data),void 0!==this.options.value&&this.value(this.options.value),this.refresh(),this.on("change",function(){d.onchange&&d.onchange(e.value())})},wait:function(){for(var a in this.list)this.list[a].field.wait()},unwait:function(){for(var a in this.list)this.list[a].field.unwait()},update:function(a){function b(a,b){if(a){var d=[];for(var e in b){var f=b[e];d.push({label:f.hid+": "+f.name,value:f.id}),c.history[f.id+"_"+f.src]=f}a.update(d)}}var c=this;b(this.select_single,a.hda),b(this.select_multiple,a.hda),b(this.select_collection,a.hdca)},value:function(a){if(void 0!==a)if(a&&a.values)try{var b=[];for(var c in a.values)b.push(a.values[c].id);a&&a.values.length>0&&"hdca"==a.values[0].src?(this.current="collection",this.select_collection.value(b[0])):"multiple"==this.mode?(this.current="multiple",this.select_multiple.value(b)):(this.current="single",this.select_single.value(b[0]))}catch(d){console.debug("tools-select-content::value() - Skipped.")}else for(var c in this.list)this.list[c].field.value(null);this.refresh();var e=this._select().value();if(null===e)return null;if(e instanceof Array||(e=[e]),0===e.length)return null;var f={batch:this._batch(),values:[]};for(var c in e){var g=this.history[e[c]+"_"+this.list[this.current].type];if(!g)return null;f.values.push(g)}return f.values.sort(function(a,b){return a.hid-b.hid}),f},refresh:function(){this.button_type.value(this.current);for(var a in this.list){var b=this.list[a].field.$el;this.current==a?b.show():b.hide()}this._batch()?this.$batch.show():this.$batch.hide()},_select:function(){return this.list[this.current].field},_batch:function(){if("collection"==this.current){var a=this.history[this._select().value()+"_hdca"];if(a&&a.map_over_type)return!0}return"single"!=this.current&&"single"==this.mode?!0:!1},template_batch:function(){return'
This is a batch mode input field. A separate job will be triggered for each dataset.
'}});return{View:c}}); //# sourceMappingURL=../../../maps/mvc/form/form-select-content.js.map \ No newline at end of file From d9d365b36e827adf859759fd41113a74204ce376 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Fri, 5 Jun 2015 16:03:33 +0100 Subject: [PATCH 3/4] Fix wrong call to LDAPObject.result() by using search_ext_s(). result() second parameter is 'all', which should be 0 or 1. result() call was passing 60 as second parameter, which was probably intended to be a timeout (third parameter). By using search_ext_s(), the search() and result() calls are combined in one and the number of search results retrieved is limited to 1. Also, if the search return no results, this is now logged separately at warning level. --- lib/galaxy/auth/providers/ldap_ad.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/auth/providers/ldap_ad.py b/lib/galaxy/auth/providers/ldap_ad.py index 1a631abea2b..689054b0669 100644 --- a/lib/galaxy/auth/providers/ldap_ad.py +++ b/lib/galaxy/auth/providers/ldap_ad.py @@ -72,16 +72,18 @@ class LDAP(AuthProvider): else: l.simple_bind_s() - scope = ldap.SCOPE_SUBTREE - # setup search attributes = [_.strip().format(**params) for _ in options['search-fields'].split(',')] - result = l.search(_get_subs(options, 'search-base', params), scope, - _get_subs(options, 'search-filter', params), attributes) + suser = l.search_ext_s(_get_subs(options, 'search-base', params), + ldap.SCOPE_SUBTREE, + _get_subs(options, 'search-filter', params), attributes, + timeout=60, sizelimit=1) # parse results - _, suser = l.result(result, 60) + if suser is None or len(suser) == 0: + log.warn('LDAP authenticate: search returned no results') + return (failure_mode, '', '') dn, attrs = suser[0] log.debug(("LDAP authenticate: dn is %s" % dn)) log.debug(("LDAP authenticate: search attributes are %s" % attrs)) From 2a1b2dbb5ae83b3c6b7d4360a674432698e216da Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Fri, 5 Jun 2015 15:48:23 +0100 Subject: [PATCH 4/4] Prevent login with valid username/email and empty password via LDAP auth when anonymous bind is allowed. Also decreased the log level of LDAP bind exception to warning. --- lib/galaxy/auth/providers/ldap_ad.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/auth/providers/ldap_ad.py b/lib/galaxy/auth/providers/ldap_ad.py index 689054b0669..071ddbc33d1 100644 --- a/lib/galaxy/auth/providers/ldap_ad.py +++ b/lib/galaxy/auth/providers/ldap_ad.py @@ -107,8 +107,12 @@ class LDAP(AuthProvider): l.protocol_version = 3 l.simple_bind_s(_get_subs( options, 'bind-user', params), _get_subs(options, 'bind-password', params)) + whoami = l.whoami_s() + log.debug("LDAP authenticate: whoami is %s", whoami) + if whoami is None: + raise RuntimeError('LDAP authenticate: anonymous bind') except Exception: - log.exception('LDAP authenticate: bind exception') + log.warn('LDAP authenticate: bind exception', exc_info=True) return (failure_mode, '', '') log.debug('LDAP authentication successful')