From 3007a536e6cd1b98f8b59bcba2a7e1e40e073698 Mon Sep 17 00:00:00 2001 From: laci Date: Tue, 6 May 2025 07:31:21 +0000 Subject: [PATCH] new design first version --- common.js | 448 +++++++++++++++++++++++++++++++++++++++ functions.php | 5 +- image.png | Bin 0 -> 3278 bytes manage.html | 427 +------------------------------------ manage2.html | 567 ++++++++++++++++++++++++++++++++++++++++++++++++++ scan.php | 34 +-- 6 files changed, 1034 insertions(+), 447 deletions(-) create mode 100644 common.js create mode 100644 image.png create mode 100644 manage2.html diff --git a/common.js b/common.js new file mode 100644 index 0000000..325835d --- /dev/null +++ b/common.js @@ -0,0 +1,448 @@ +function check_deployments() { + var url = 'scan.php?op=check_deployments'; + jQuery.get(url, function(data) { + console.log('check_deployments: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_deployments, 1000); + } + else { + // manage2 + apps.length = 0; // reset + apps.push(...JSON.parse(data)); // push each element + console.log(apps); + + // manage + html_data = ''; + data = jQuery.parseJSON(data); + for (var k in data) { + console.log(data[k]); + service_name = data[k].name; + orig_service_name = data[k].orig_name; + content = data[k].content; + installed = data[k].installed; + if (installed=='true') { + html_data += '
'+orig_service_name+' - '+content+' - INSTALLED
'; + } + else { + html_data += '
'+orig_service_name+' - '+content+'
'; + } + html_data += '
'; + } + jQuery("#deployments").html(html_data); + + } + }); +} + +function get_deployments() { + var url = 'scan.php?op=deployments'; + jQuery.get(url, function(data) { + console.log('deployments: '+data); + if (data=="OK") { + setTimeout(check_deployments, 1000); + } + else jQuery("#deployments").html(data); + }); +} + +function check_system() { + var url = 'scan.php?op=check_system&services=1'; + jQuery.get(url, function(data) { + console.log('check_system: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_system, 1000); + } + else { + jQuery("#system").html(data); + } + }); +} + +function get_system() { + var url = 'scan.php?op=system'; + jQuery.get(url, function(data) { + console.log('system: '+data); + if (data=="OK") { + setTimeout(check_system, 1000); + } + else alert(data); + }); +} + +function check_repositories() { + var url = 'scan.php?op=check_repositories'; + jQuery.get(url, function(data) { + console.log('check_repositories: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_repositories, 500); + } + else { + jQuery("#repositories").html(data); + } + }); +} + +function get_repositories() { + var url = 'scan.php?op=repositories'; + jQuery.get(url, function(data) { + console.log('repositories: '+data); + if (data=="OK") { + setTimeout(check_repositories, 500); + get_deployments(); + } + else alert(data); + }); +} + +function add_repository() { + var url = 'scan.php?op=add_repository&repo='+jQuery('#repository').val(); + jQuery.get(url, function(data) { + console.log('add_repository: '+data); + if (data=="OK") { + } + get_repositories(); + }); +} + +function check_vpn() { + var url = 'scan.php?op=check_vpn'; + jQuery.get(url, function(data) { + console.log('check_vpn: '+data); + if (data=="2") { + $('#vpn_off').hide(); + $('#vpn_on').show(); + } + else { + $('#vpn_on').hide(); + $('#vpn_off').show(); + } + setTimeout(check_vpn, 10000); + }); +} + +function save_vpn() { + var url = 'scan.php?op=save_vpn&vpn_domain='+jQuery('#vpn_domain').val()+'&vpn_pass='+jQuery('#vpn_pass').val()+'&letsencrypt_mail='+jQuery('#letsencrypt_mail').val()+'&letsencrypt_servername='+jQuery('#letsencrypt_servername').val(); + + jQuery.get(url, function(data) { + console.log('save_vpn: '+data); + if (data=="OK") { + } + //get_vpn(); + }); +} + +function check_updates() { + var url = 'scan.php?op=check_updates'; + jQuery.get(url, function(data) { + console.log('check_updates: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_updates, 1000); + } + else { + jQuery("#updates").html(data); + } + }); +} + +function get_updates() { + var url = 'scan.php?op=updates'; + jQuery.get(url, function(data) { + console.log('updates: '+data); + if (data=="ERROR") { + jQuery("#updates").html('Searching for updates is in progress...'); + } + setTimeout(check_updates, 1000); + }); +} + +function check_upgrade() { + var url = 'scan.php?op=check_upgrade'; + jQuery.get(url, function(data) { + console.log('check_upgrade: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_upgrade, 1000); + } + else { + // TODO + } + }); +} + +function upgrade(service) { + var url = 'scan.php?op=upgrade&service='+service; + console.log('upgrade start: '+service); + jQuery.get(url, function(data) { + console.log('upgrade end: '+service); + if (data=="OK") { + setTimeout(check_upgrade, 1000); + } + }); +} + +function load_template(additional, block) { + + jQuery("div.deployment").each(function(index) { + $(this).html(''); + }); + jQuery("#"+block).html('Loading '+additional+' template...'); + var url = 'scan.php?op=deployment&additional='+additional; + jQuery.get(url, function(data) { + console.log('load_template: '+data); + if (data=="OK") { + setTimeout(check_deployment, 1000, additional); + } + }); +} + +function check_reinstall(additional) { + var url = 'scan.php?op=check_reinstall'; + jQuery.get(url, function(data) { + console.log('check_reinstall: '+data); + if (data!="") { + jQuery("#"+additional).html(data); + jQuery("#popupText").html(data); // manage2 + } + else setTimeout(check_reinstall, 1000, additional); + }); +} + +function reinstall(additional, block) { + jQuery("div.deployment").each(function(index) { + $(this).html(''); + }); + jQuery("#"+block).html('Loading '+additional+' template...'); + var url = 'scan.php?op=reinstall&additional='+additional; + jQuery.get(url, function(data) { + console.log('reinstall '+additional+': '+data); + if (data=="OK") { + setTimeout(check_reinstall, 1000, additional); + } + }); +} + +function check_uninstall(additional) { + var url = 'scan.php?op=check_uninstall&additional='+additional; + jQuery.get(url, function(data) { + console.log('check_uninstall '+additional+': '+data); + if (data!="") { + jQuery("#"+additional).html(data); + } + if (data!="OK") { + setTimeout(check_uninstall, 1000, additional); + } + else { + jQuery("#"+additional).html('Uninstall has finished'); + get_deployments(); + } + }); +} + +function uninstall(additional) { + + jQuery("div.deployment").each(function(index) { + $(this).html(''); + }); + data = '
YOU ARE GOING TO UNINSTALL '+additional.toUpperCase()+'.
ARE YOU SURE? IF YES, PLEASE CLICK ON THE BUTTON BELOW.

'; + jQuery("#"+additional).html(data); +} + +function confirm_uninstall(additional) { + jQuery("#"+additional).html('Loading...'); + var url = 'scan.php?op=uninstall&additional='+additional; + jQuery.get(url, function(data) { + console.log('uninstall '+additional+': '+data); + if (data!="") { + jQuery("#"+additional).html(data); + setTimeout(check_uninstall, 1000, additional); + } + }); +} + +function check_deployment(additional) { + var url = 'scan.php?op=check_deployment&additional='+additional; + jQuery.get(url, function(data) { + console.log('check_deployment '+additional); + //console.log('check_deployment data: '+data); + if (data!="") { + jQuery("#"+additional).html(data); + jQuery("#popupText").html(data); // manage2 + } + else setTimeout(check_deployment, 1000, additional); + }); +} + +function deploy(additional) { + pars = ''; + jQuery('input.additional_'+additional).each(function(index) { + console.log('Field ' + $(this).attr('name') + ': ' + $(this).val()); + //pars += '&'+$(this).attr('id') + '=' + $(this).val(); + pars += '&'+$(this).attr('name') + '=' + $(this).val(); + }); + //console.log(pars); + var url = 'scan.php?op=deploy&additional='+additional+pars; + jQuery.get(url, function(data) { + console.log('deploy '+additional+': '+data); + if (data!="") { + jQuery("#"+additional).html(data); + setTimeout(check_deployment, 1000, additional); + } + }); +} + +function redeploy(additional) { + pars = ''; + jQuery('input.additional_'+additional).each(function(index) { + console.log('Field ' + $(this).attr('name') + ': ' + $(this).val()); + //pars += '&'+$(this).attr('id') + '=' + $(this).val(); + pars += '&'+$(this).attr('name') + '=' + $(this).val(); + }); + //console.log(pars); + var url = 'scan.php?op=redeploy&additional='+additional+pars; + jQuery.get(url, function(data) { + console.log('redeploy '+additional+': '+data); + if (data!="") { + jQuery("#"+additional).html(data); + setTimeout(check_deployment, 1000, additional); + } + }); +} + +function check_services() { + var url = 'scan.php?op=check_services'; + jQuery.get(url, function(data) { + console.log('check_services: '+data); + if (data=="WAIT" || data=="") { + setTimeout(check_services, 1000); + } + else { + jQuery("#services").html(data); + } + }); +} + +function get_services() { + var url = 'scan.php?op=services'; + jQuery.get(url, function(data) { + console.log('services: '+data); + setTimeout(check_services, 1000); + }); +} + +function check_containers() { + var url = 'scan.php?op=check_containers'; + jQuery.get(url, function(data) { + console.log('check_containers: '+data); + if (data!="") { + jQuery("#containers").html(data); + } + else setTimeout(check_containers, 1000); + }); +} + +function get_containers() { + var url = 'scan.php?op=containers'; + jQuery.get(url, function(data) { + console.log('containers: '+data); + if (data=="OK") { + setTimeout(check_containers, 1000); + } + }); +} + +jQuery(document).ready(function(){ + + get_repositories(); + get_system(); + get_services(); + check_vpn(); + + jQuery('#deployments_btn').click(function() { + jQuery('#services').hide(); + jQuery('#deployments').toggle(); + }); + + jQuery('#services_btn').click(function() { + jQuery('#deployments').hide(); + jQuery('#services').toggle(); + }); + + jQuery('#settings_btn').click(function() { + jQuery('#settings').toggle(); + jQuery('#default').toggle(); + jQuery('#vpn').hide(); + }); + + jQuery('#vpn_btn').click(function() { + jQuery('#vpn').toggle(); + jQuery('#settings').hide(); + }); + + jQuery('#vpn_cancel_btn').click(function() { + jQuery('#vpn').hide(); + }); + + jQuery('#update_btn').click(function() { + jQuery('#updates').html('Looking for updates... Please wait...'); + get_updates(); + }); + + jQuery('#add_repo').submit(function() { + jQuery('#repositories').html('Loading...'); + add_repository(); + return false; + }); + + jQuery('#save_vpn').submit(function() { + save_vpn(); + jQuery('#vpn').html('Loading...'); + return false; + }); + + jQuery('select#smarthost').click(function() { + if (jQuery(this).val()=='yes') jQuery('#div_smarthost').show(); + else jQuery('#div_smarthost').hide(); + + if (jQuery("#smarthost").val()=='no' && jQuery("#localproxy").val()=='yes') { + alert("Warning! Local proxy will not work without smarthost proxy service."); + } + }); + jQuery('select#vpn').click(function() { + if (jQuery(this).val()=='yes') jQuery('#div_vpn').show(); + else jQuery('#div_vpn').hide(); + }); +/* + jQuery('select#discovery').click(function() { + if (jQuery(this).val()=='yes') jQuery('#div_discover').show(); + else jQuery('#div_discover').hide(); + }); + jQuery('select#additionals').click(function() { + if (jQuery(this).val()=='yes') jQuery('#div_additionals').show(); + else jQuery('#div_additionals').hide(); + }); + jQuery('select#nextcloud').click(function() { + if (jQuery(this).val()=='Y') jQuery('#div_nextcloud').show(); + else jQuery('#div_nextcloud').hide(); + }); + jQuery('select#bitwarden').click(function() { + if (jQuery(this).val()=='Y') jQuery('#div_bitwarden').show(); + else jQuery('#div_bitwarden').hide(); + }); + jQuery('select#bitwarden_smtp').click(function() { + if (jQuery(this).val()=='3') jQuery('#div_bitwarden_smtp').show(); + else jQuery('#div_bitwarden_smtp').hide(); + }); + jQuery('select#guacamole').click(function() { + if (jQuery(this).val()=='Y') jQuery('#div_guacamole').show(); + else jQuery('#div_guacamole').hide(); + }); + jQuery('select#smtp_server').click(function() { + if (jQuery(this).val()=='Y') jQuery('#div_smtp_server').show(); + else jQuery('#div_smtp_server').hide(); + }); + jQuery('select#roundcube').click(function() { + if (jQuery(this).val()=='Y') jQuery('#div_roundcube').show(); + else jQuery('#div_roundcube').hide(); + }); +*/ +}); + diff --git a/functions.php b/functions.php index 305b4f4..690472e 100644 --- a/functions.php +++ b/functions.php @@ -277,7 +277,8 @@ function set_output($op,$output) { redis_set($op,$output); } else { - file_put_contents($SHARED_DIR."/input/".$op.".json",$output); + if (file_exists($SHARED_DIR."/input/".$op.".json")) return false; + else file_put_contents($SHARED_DIR."/input/".$op.".json",$output); } return true; @@ -364,7 +365,7 @@ function remove_response($key) { } else { copy($SHARED_DIR."/output/".$key.".json",$SHARED_DIR."/".$key.".json"); // DEBUG - last json - unlink($SHARED_DIR."/output/".$key.".json"); + if (!unlink($SHARED_DIR."/output/".$key.".json")) echo "UNLINK ERROR"; } } diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..1b980dc2b350f13a4b009a0c45b81b1cb0d0645e GIT binary patch literal 3278 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 literal 0 HcmV?d00001 diff --git a/manage.html b/manage.html index 1488d85..a944450 100644 --- a/manage.html +++ b/manage.html @@ -141,432 +141,15 @@

+ - + diff --git a/manage2.html b/manage2.html new file mode 100644 index 0000000..c649a45 --- /dev/null +++ b/manage2.html @@ -0,0 +1,567 @@ + + + + + + Control Panel + + + + + + + + +
+
+ Profilkép +
Pro
+
+ +
+
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + diff --git a/scan.php b/scan.php index 03da133..8e22f79 100644 --- a/scan.php +++ b/scan.php @@ -134,46 +134,33 @@ switch ($_GET["op"]) { else echo "ERROR"; break; case "check_deployments": + $deployments = ""; $arr = check_response("deployments"); if (!empty($arr)) { foreach ($arr as $key=>$data) { if ($key=="deployments") { if (count($data["DEPLOYMENTS"])) { - if ($data["DEPLOYMENTS"]["deployments"]=="NONE") echo "There are no deployments.
"; + if ($data["DEPLOYMENTS"]["deployments"]=="NONE") $deployments = "There are no deployments."; else { foreach ($data["DEPLOYMENTS"] as $service_name => $content) { $orig_service_name = $service_name; $service_name = strtolower($service_name); //echo base64_decode($content); - if (array_key_exists($service_name,$data["INSTALLED_SERVICES"])) { - echo '
'.$orig_service_name.' - '.$content.' - INSTALLED
'; - } - else echo '
'.$orig_service_name.' - '.$content.'
'; - echo '
'; + if (array_key_exists($service_name,$data["INSTALLED_SERVICES"])) $installed = "true"; + else $installed = "false"; + if (!empty($deployments)) $deployments .= ", "; + $deployments .= '{"name": "'.$service_name.'", "orig_name": "'.$orig_service_name.'", "image": "image.png", "content": "'.$content.'", "installed": "'.$installed.'"}'; } + if (!empty($deployments)) $deployments = "[{$deployments}]"; } } - else echo "There are no deployments."; - echo "
"; -/* - if (count($data["INSTALLED_SERVICES"])) { - echo "
Installed services:
"; - if ($data["INSTALLED_SERVICES"]["services"]=="NONE") echo "There are no installed services.
"; - else { - foreach ($data["INSTALLED_SERVICES"] as $service_name => $content) { - //echo base64_decode($content); - echo $service_name."
"; - } - echo "
"; - } - } - else echo "There are no installed services.
"; -*/ + else $deployments = "There are no deployments."; remove_response("$key"); } } } - else echo "WAIT"; + else $deployments = "WAIT"; + echo $deployments; break; case "deployment": $arr = array("NAME" => $_GET["additional"], "ACTION" => "ask"); @@ -245,6 +232,7 @@ switch ($_GET["op"]) { }); jQuery('#cancel_{$template->name}_btn').click(function() { $('div#{$template->name}').html(''); + document.getElementById('popup').classList.add('hidden'); // manage2 }); ";