MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / get_plugin

Function get_plugin

keepercommander/plugins/plugin_manager.py:205–264  ·  view source on GitHub ↗

Load plugin based on given record and alt identifier Return plugin_name (str), plugin (object with rotate method)

(record, rotate_name, plugin_name=None, host=None, port=None)

Source from the content-addressed store, hash-verified

203
204
205def get_plugin(record, rotate_name, plugin_name=None, host=None, port=None):
206 """Load plugin based on given record and alt identifier
207
208 Return plugin_name (str), plugin (object with rotate method)
209 """
210 cmdr_kwargs = get_custom_cmdr_fields(record)
211 if cmdr_kwargs is None:
212 return
213
214 if plugin_name is None and len(cmdr_kwargs) > 0:
215 rotate_value = cmdr_kwargs.get(f'plugin:{rotate_name}') if rotate_name else None
216 plugin_name = rotate_value if rotate_value else cmdr_kwargs.get('plugin')
217
218 plugin_kwargs = {}
219 plugin_kwargs.update(cmdr_kwargs)
220 plugin_kwargs.update(get_rotation_record_kwargs(record))
221 if 'host' in plugin_kwargs:
222 server = plugin_kwargs['host']
223 h, sep, p = server.partition(':')
224 if sep == ':':
225 plugin_kwargs['host'] = h
226 plugin_kwargs['port'] = p
227
228 if host:
229 plugin_kwargs['host'] = host
230 if port:
231 plugin_kwargs['port'] = port
232
233 for convert_kwarg in CONVERT_KWARG_TO_INT:
234 if convert_kwarg in plugin_kwargs:
235 if plugin_kwargs[convert_kwarg].isnumeric():
236 plugin_kwargs[convert_kwarg] = int(plugin_kwargs[convert_kwarg])
237 else:
238 logging.warning(
239 f'Argument "{convert_kwarg}", value "{plugin_kwargs[convert_kwarg]}"'
240 ' ignored because unable to convert to integer'
241 )
242 plugin_kwargs.pop(convert_kwarg)
243
244 if plugin_name is None:
245 if port and port in PORT_TO_PLUGIN:
246 plugin_name = PORT_TO_PLUGIN[port]
247
248 if plugin_name is None:
249 plugin_name = detect_plugin(record, plugin_kwargs)
250 else:
251 detect_kwargs(record, plugin_name, plugin_kwargs)
252
253 if not plugin_name:
254 logging.error('Record is not marked for password rotation (i.e. \'cmdr:plugin\' custom field).\n'
255 'Add custom field \'cmdr:plugin\'=\'noop\' to enable password rotation for this record')
256 return
257 elif check_missing_kwargs(plugin_name, plugin_kwargs):
258 return
259
260 plugin = load_plugin(plugin_name)
261 if hasattr(plugin, 'Rotator'):
262 return plugin_name, plugin_kwargs, plugin.Rotator(**plugin_kwargs)

Callers

nothing calls this directly

Calls 10

get_custom_cmdr_fieldsFunction · 0.85
detect_pluginFunction · 0.85
detect_kwargsFunction · 0.85
check_missing_kwargsFunction · 0.85
load_pluginFunction · 0.85
getMethod · 0.80
warningMethod · 0.80
updateMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected