mirror of
https://github.com/itsdave-de/msp.git
synced 2025-05-06 15:35:12 +02:00
Merge branch 'main' of https://github.com/itsdave-de/msp into main
This commit is contained in:
commit
eafc50851e
@ -2,7 +2,35 @@
|
|||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
frappe.ui.form.on('IT Landscape', {
|
frappe.ui.form.on('IT Landscape', {
|
||||||
// refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
|
frm.add_custom_button('Copy SSH Keys', () => frm.trigger('copy_ssh_keys'), 'Actions');
|
||||||
|
},
|
||||||
|
copy_ssh_keys: function(frm) {
|
||||||
|
frappe.call({
|
||||||
|
"method": "msp.whitelisted_tools.get_ssh_keys_for_landscape",
|
||||||
|
args: {
|
||||||
|
"landscape": frm.doc.name,
|
||||||
|
},
|
||||||
|
callback: (response) => {
|
||||||
|
if (response.message.startsWith("#")) {
|
||||||
|
console.log(response.message),
|
||||||
|
frm.events.CopyToClipboard(response.message),
|
||||||
|
frappe.msgprint(__('Keys copied to clipboard.'))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
frappe.msgprint(__(response.message));
|
||||||
|
}
|
||||||
|
|
||||||
// }
|
}
|
||||||
});
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
CopyToClipboard: function(value) {
|
||||||
|
var tempInput = document.createElement("textarea");
|
||||||
|
tempInput.value = value;
|
||||||
|
document.body.appendChild(tempInput);
|
||||||
|
tempInput.select();
|
||||||
|
document.execCommand("copy");
|
||||||
|
document.body.removeChild(tempInput);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"allow_rename": 1,
|
"allow_rename": 1,
|
||||||
"autoname": "field:abbreviation",
|
"autoname": "field:abbreviation",
|
||||||
"creation": "2021-03-18 01:39:06.814363",
|
"creation": "2021-03-18 01:39:06.814363",
|
||||||
@ -9,7 +10,9 @@
|
|||||||
"title",
|
"title",
|
||||||
"abbreviation",
|
"abbreviation",
|
||||||
"customer",
|
"customer",
|
||||||
"description"
|
"customer_name",
|
||||||
|
"description",
|
||||||
|
"section_break_6"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
@ -39,9 +42,22 @@
|
|||||||
"in_standard_filter": 1,
|
"in_standard_filter": 1,
|
||||||
"label": "Abbreviation",
|
"label": "Abbreviation",
|
||||||
"unique": 1
|
"unique": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "customer.customer_name",
|
||||||
|
"fieldname": "customer_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Customer Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_6",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modified": "2021-03-24 00:34:10.605746",
|
"links": [],
|
||||||
|
"modified": "2022-01-27 23:36:00.711074",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "MSP",
|
"module": "MSP",
|
||||||
"name": "IT Landscape",
|
"name": "IT Landscape",
|
||||||
|
@ -9,7 +9,7 @@ def get_data():
|
|||||||
'transactions': [
|
'transactions': [
|
||||||
{
|
{
|
||||||
'label': _('Objects'),
|
'label': _('Objects'),
|
||||||
'items': ['IT Object', 'IT User Account', 'IP Network', 'IP Address' ]
|
'items': ['IT Object', 'IT User Account', 'IP Network', 'IP Address', 'SSH Public Key' ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': _('Processes'),
|
'label': _('Processes'),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"autoname": "ITO-.#####",
|
"autoname": "ITO-.#####",
|
||||||
"creation": "2021-03-18 01:33:25.740040",
|
"creation": "2021-03-18 01:33:25.740040",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
@ -120,7 +121,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"image_field": "image",
|
"image_field": "image",
|
||||||
"modified": "2021-03-24 13:25:22.542341",
|
"links": [],
|
||||||
|
"modified": "2022-01-27 22:39:21.190206",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "MSP",
|
"module": "MSP",
|
||||||
"name": "IT Object",
|
"name": "IT Object",
|
||||||
@ -140,7 +142,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"quick_entry": 1,
|
"quick_entry": 1,
|
||||||
"search_fields": "title, main_ip, item, description",
|
"search_fields": "title, main_ip, item",
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
"title_field": "title",
|
"title_field": "title",
|
||||||
|
0
msp/msp/doctype/ssh_public_key/__init__.py
Normal file
0
msp/msp/doctype/ssh_public_key/__init__.py
Normal file
8
msp/msp/doctype/ssh_public_key/ssh_public_key.js
Normal file
8
msp/msp/doctype/ssh_public_key/ssh_public_key.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2022, itsdave GmbH and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('SSH Public Key', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
111
msp/msp/doctype/ssh_public_key/ssh_public_key.json
Normal file
111
msp/msp/doctype/ssh_public_key/ssh_public_key.json
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"allow_rename": 1,
|
||||||
|
"creation": "2022-01-27 22:32:57.359431",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"employee",
|
||||||
|
"host",
|
||||||
|
"it_landscape",
|
||||||
|
"column_break_4",
|
||||||
|
"employee_name",
|
||||||
|
"host_name",
|
||||||
|
"customer_name",
|
||||||
|
"ssh_key_section",
|
||||||
|
"status",
|
||||||
|
"ssh_public_key"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "employee",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "Employee",
|
||||||
|
"options": "Employee"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "System of the employee, on which this key is used from.",
|
||||||
|
"fieldname": "host",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "Host",
|
||||||
|
"options": "IT Object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "it_landscape",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "IT Landscape",
|
||||||
|
"options": "IT Landscape"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "ssh_public_key",
|
||||||
|
"fieldtype": "Long Text",
|
||||||
|
"label": "SSH Public Key"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_4",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "employee.employee_name",
|
||||||
|
"fieldname": "employee_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Employee Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "host.title",
|
||||||
|
"fieldname": "host_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Host Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "ssh_key_section",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"label": "SSH Key"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "status",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"label": "Status",
|
||||||
|
"options": "active\ninactive\ncompromised"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "it_landscape.customer_name",
|
||||||
|
"fieldname": "customer_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Customer",
|
||||||
|
"read_only": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2022-01-27 23:40:39.860991",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "MSP",
|
||||||
|
"name": "SSH Public Key",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC"
|
||||||
|
}
|
8
msp/msp/doctype/ssh_public_key/ssh_public_key.py
Normal file
8
msp/msp/doctype/ssh_public_key/ssh_public_key.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2022, itsdave GmbH and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class SSHPublicKey(Document):
|
||||||
|
pass
|
8
msp/msp/doctype/ssh_public_key/test_ssh_public_key.py
Normal file
8
msp/msp/doctype/ssh_public_key/test_ssh_public_key.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2022, itsdave GmbH and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestSSHPublicKey(unittest.TestCase):
|
||||||
|
pass
|
153
msp/msp/workspace/msp/msp.json
Normal file
153
msp/msp/workspace/msp/msp.json
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
{
|
||||||
|
"cards_label": "Authentication",
|
||||||
|
"category": "Modules",
|
||||||
|
"charts": [],
|
||||||
|
"creation": "2022-01-27 22:35:58.651670",
|
||||||
|
"developer_mode_only": 0,
|
||||||
|
"disable_user_customization": 0,
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Workspace",
|
||||||
|
"extends_another_page": 0,
|
||||||
|
"hide_custom": 0,
|
||||||
|
"icon": "support",
|
||||||
|
"idx": 0,
|
||||||
|
"is_default": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"label": "MSP",
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Master Data",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Card Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Objects",
|
||||||
|
"link_to": "IT Object",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Networks",
|
||||||
|
"link_to": "IP Network",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Addresses",
|
||||||
|
"link_to": "IP Address",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Authentication",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Card Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "SSH Keys",
|
||||||
|
"link_to": "SSH Public Key",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "User Accounts",
|
||||||
|
"link_to": "IT User Account",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Processes",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Card Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Checklists",
|
||||||
|
"link_to": "IT Checklist",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Contracts",
|
||||||
|
"link_to": "IT Contract",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Settings",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Card Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Checklist Templates",
|
||||||
|
"link_to": "IT Checklist Template",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"hidden": 0,
|
||||||
|
"is_query_report": 0,
|
||||||
|
"label": "Contract Types",
|
||||||
|
"link_to": "IT Contract Type",
|
||||||
|
"link_type": "DocType",
|
||||||
|
"onboard": 0,
|
||||||
|
"type": "Link"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"modified": "2022-01-27 22:49:32.927072",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "MSP",
|
||||||
|
"name": "MSP",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"pin_to_bottom": 0,
|
||||||
|
"pin_to_top": 1,
|
||||||
|
"shortcuts": [
|
||||||
|
{
|
||||||
|
"doc_view": "List",
|
||||||
|
"label": "Objects",
|
||||||
|
"link_to": "IT Object",
|
||||||
|
"type": "DocType"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doc_view": "List",
|
||||||
|
"label": "Landscapes",
|
||||||
|
"link_to": "IT Landscape",
|
||||||
|
"type": "DocType"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
20
msp/whitelisted_tools.py
Normal file
20
msp/whitelisted_tools.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import frappe
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_ssh_keys_for_landscape(landscape):
|
||||||
|
keys = frappe.get_all("SSH Public Key", filters={"it_landscape": landscape, "status": "active"})
|
||||||
|
print(keys)
|
||||||
|
if len(keys) >= 1:
|
||||||
|
keys_str = ""
|
||||||
|
for key in keys:
|
||||||
|
kd = frappe.get_doc("SSH Public Key", key["name"])
|
||||||
|
company_str = str(frappe.get_doc("Employee", kd.employee).company)
|
||||||
|
c_str = datetime.strftime(kd.creation, "%d.%m.%Y")
|
||||||
|
o_str = datetime.strftime(datetime.now(), "%d.%m.%Y %H:%M")
|
||||||
|
comment = "#"+ company_str + "|" + str(kd.employee_name) + "@" + str(kd.host_name) + " ITL:" + str(kd.it_landscape) + " C:" + c_str + " O:" + o_str
|
||||||
|
keys_str += comment + "\n" + kd.ssh_public_key + "\n"
|
||||||
|
return keys_str
|
||||||
|
else:
|
||||||
|
return "No keys found."
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user