v8.1.3: Refactor server identification in certs and autocomplete logic

Updated routes and JavaScript logic to use server IDs instead of server IPs for cert and backend lookups. This improves consistency and simplifies request handling. Minor fixes in formatting and structure were also applied.
pull/410/head
Aidaho 2024-12-12 16:21:50 +03:00
parent 9e791c7111
commit 05279fa64f
4 changed files with 34 additions and 17 deletions

View File

@ -188,14 +188,10 @@ def delete_saved_server(server_id):
return roxywi_common.handler_exceptions_for_json_data(e, 'Cannot delete server')
@bp.route('/certs/<int:server_ip>')
@bp.route('/certs/<server_ip>')
@validate()
def get_certs(server_ip: Union[IPvAnyAddress, DomainName, int]):
if isinstance(server_ip, int):
server = server_sql.get_server(server_ip)
server_ip = server.ip
return add_mod.get_ssl_certs(str(server_ip))
@bp.route('/certs/<int:server_id>')
def get_certs(server_id: int):
server_ip = server_sql.get_server(server_id).ip
return add_mod.get_ssl_certs(server_ip)
@bp.route('/cert/<server_ip>/<cert_id>', methods=['DELETE', 'GET'])

View File

@ -30,7 +30,7 @@ def runtimeapi():
@bp.route('/backends/<int:server_ip>')
@bp.route('/backends/<server_ip>')
@validate()
def show_backends(server_ip: Union[IPvAnyAddress, DomainName, int]):
def show_backends(server_ip: Union[int, IPvAnyAddress, DomainName]):
if isinstance(server_ip, int):
server = server_sql.get_server(server_ip)
server_ip = server.ip

View File

@ -191,7 +191,7 @@ $( function() {
});
$("#backends").autocomplete({
source: function (request, response) {
if (!checkIsServerFiled('#serv')) return false;
if (!checkIsServerFiled('#serv2')) return false;
if (request.term === "") {
request.term = 1
}
@ -205,6 +205,26 @@ $( function() {
autoFocus: true,
minLength: -1
});
$("#frontend_acl_then_value").autocomplete({
source: function (request, response) {
if ($('#frontend_acl_then').val() === '5') {
if (!checkIsServerFiled('#serv2')) return false;
if (request.term === "") {
request.term = 1
}
$.ajax({
url: "/runtimeapi/backends/" + $("#serv2").val(),
success: function (data) {
response(data.split('<br>'));
}
});
} else {
return false;
}
},
autoFocus: true,
minLength: -1
});
$("#new-option").autocomplete({
source: availableTags,
autoFocus: true,
@ -668,9 +688,10 @@ $( function() {
});
$("#path-cert-" + section_type).autocomplete({
source: function (request, response) {
let server = $("#add-" + section_type + " select[name='server'] option:selected");
if (!checkIsServerFiled("#add-" + section_type + " select[name='server'] option:selected")) return false;
$.ajax({
url: "/add/certs/" + $('#serv2').val(),
url: "/add/certs/" + server.val(),
success: function (data) {
data = data.replace(/\s+/g, ' ');
response(data.split(" "));

View File

@ -38,8 +38,8 @@ class HaproxySectionView(MethodView):
try:
section = add_sql.get_section(server_id, section_type, section_name)
output = {'server_id': section.server_id.server_id, **model_to_dict(section, recurse=False)}
output['id'] = f'{server_id}-{section_name}'
output = {'server_id': section.server_id.server_id, **model_to_dict(section, recurse=False),
'id': f'{server_id}-{section_name}'}
output.update(section.config)
return jsonify(output)
except Exception as e: