* Sat May 10 2025 Brian Read <brianr@koozali.org> 11.0.0-3.sme

- Get javascript working and password visible icon [SME: 13001]
- Fix missing cmd in panel
- Delete out of date list of protocols/device/services etc from controller source
This commit is contained in:
Brian Read 2025-05-11 10:43:35 +01:00
parent 6b207dec6b
commit 2727d948c6
7 changed files with 81 additions and 163 deletions

View File

@ -19,74 +19,6 @@ package SrvMngr::Controller::Ddclient;
#
# Documentation: https://wiki.contribs.org/Ddclient
#
#----------------------------------------------------------------------
#
# ddclient 3.9.1 Supportted services
#
#DynDNS.com - See http://www.dyndns.com for details on obtaining a free account.
#Hammernode - See http://www.hn.org for details on obtaining a free account.
#Zoneedit - See http://www.zoneedit.com for details.
#EasyDNS - See http://www.easydns.com for details.
#NameCheap - See http://www.namecheap.com for details
#DslReports - See http://www.dslreports.com for details
#Sitelutions - See http://www.sitelutions.com for details
#Loopia - See http://www.loopia.se for details
#Noip - See http://www.noip.com/ for details
#Freedns - See http://freedns.afraid.org/ for details
#ChangeIP - See http://www.changeip.com/ for details
#dtdns - See http://www.dtdns.com/ for details
#nsupdate - See nsupdate(1) and ddns-confgen(8) for details
#CloudFlare - See https://www.cloudflare.com/ for details
#Google - See http://www.google.com/domains for details
#Duckdns - See https://duckdns.org/ for details
#Freemyip - See https://freemyip.com for details
#woima.fi - See https://woima.fi/ for details
#Yandex - See https://domain.yandex.com/ for details
#DNS Made Easy - See https://dnsmadeeasy.com/ for details
#DonDominio - See https://www.dondominio.com for details
#NearlyFreeSpeech.net - See https://www.nearlyfreespeech.net/services/dns for details
#OVH - See https://www.ovh.com for details
#ClouDNS - See https://www.cloudns.net
# ddclient 3.11.1 Supported Services
# 1984:https://kb.1984hosting.com/doku.php?id=freedns
# changeip: https://changeip.com
# cloudflare: https://cloudflare.com
# cloudns: https://cloudns.com
# digitalocean: https://digitalocean.com
# dinahosting: https://dinahosting.com
# dnsexit: https://dnsexit.com/
# dnsmadeeasy: https://dnsmadeeasy.com
# domeneshop: https://domeneshop.com
# dondominio: https://dondominio.com
# dslreports: https://www.dslreports.com/
# duckdns: https://duckdns.com
# dyndns1:https://account.dyn.com/
# dyndns2: https://account.dyn.com/
# easydns: https://easydns.com
# enom: https://enom.com
# freedns: http://freedns.com
# freemyip: https://freemyip.com
# gandi: https://gandi.com
# godaddy: https://godaddy.com
# googledomains: https://googledomains.com
# hetzner: https://hetzner.com
# infomaniak: https://infomaniak.com
# keysystems: https://keysystems.com
# mythicdyn: https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns
# namecheap: https://namecheap.com
# nfsn: http://nfsn.com
# njalla: https://njalla.com
# noip: https://noip.com
# nsupdate: http://nsupdate.com
# ovh: https://ovh.com
# porkbun: https://porkbun.com
# regfishde: Cannot find link for this one
# sitelutions: https://sitelutions.com
# woima: http://woima.com
# yandex: https://yandex.com
# zoneedit: https://www.zoneedit.com/dynamic-dns/
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
@ -311,7 +243,7 @@ sub do_display {
[ $c->l('Router/Firewall') => 'router' ],
[ $c->l('Interface') => 'if' ],
[ $c->l('IP') => 'ip' ],
[ $c->l('Command') => 'cmdv4' ]
[ $c->l('Command') => 'cmd' ]
]
);
@ -656,7 +588,7 @@ sub get_params {
my $ssl = $ddretrieve->prop('SSL') || 'yes';
my $method = $ddretrieve->prop('method') || 'web';
my $Extinterface = $ddretrieve->prop('Extinterface') || '';
my $cmd = $ddretrieve->prop('cmd') || '';
my $cmd = $ddretrieve->prop('cmd') || '/usr/sbin/e-smith/getmyip';
my $forceIP = $ddretrieve->prop('ForceIP') || '';
my $fwlogin = $ddretrieve->prop('fwlogin') || '';
my $fwpassword = $ddretrieve->prop('fwpassword') || '';

View File

@ -0,0 +1,62 @@
function showPass() {
var x = document.getElementById("ddcPass");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
document.addEventListener('DOMContentLoaded', function() {
// Run on page load
SelectInput_custom();
// Attach onchange event to the select element
var dnsSelect = document.getElementById('dns');
if (dnsSelect) {
dnsSelect.addEventListener('change', SelectInput_custom);
}
});
function SelectInput_custom() {
var method = document.querySelector("#dns");
const types=['custom'];
types.forEach((type)=>{
var service = document.querySelector(`.${type}`);
if (service != null) {
if (method.value == type) {
service.style.display = 'block';
} else {
service.style.display = 'none';
}
}
})
}
document.addEventListener('DOMContentLoaded', function() {
// Run on page load (replaces onload)
SelectInput_params();
// Attach onchange event (replaces inline onchange)
var dnsSelect = document.getElementById('retrievemethod');
if (dnsSelect) {
dnsSelect.addEventListener('change', SelectInput_params);
}
});
function SelectInput_params() {
var method = document.querySelector("#retrievemethod");
const types=['smeIF','smeCMD','web','router','if','ip','cmd','custom'];
types.forEach((type)=>{
var service = document.querySelector(`.${type}`);
if (service != null) {
if (method.value == type) {
service.style.display = 'block';
} else {
service.style.display = 'none';
}
}
})
}

View File

@ -1,6 +1,7 @@
% layout 'default', title => "Sme server 2 - Dynamic Clients", share_dir => './';
% content_for 'module' => begin
%= javascript '/js/ddclient.js'
<div id="module" class="module ddclient-panel">
% if (config->{debug} == 1) {

View File

@ -39,19 +39,7 @@
<span class=label>
%=l 'PASSWORD_LABEL'
</span><span class=data>
%=password_field 'password',id=>"ddcPass"
%=label_for show=>"Show"
%=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
%= javascript begin
function showPass() {
var x = document.getElementById("ddcPass");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
% end
%=password_field 'password',id=>"ddcPass", class=>'sme-password'
</span><br>
<span class=label>
%=l 'MX'
@ -60,6 +48,4 @@
</span><br>
%= submit_button "$btn", class => 'action'
% end
</div>
</div>

View File

@ -1,9 +1,4 @@
<div id='modifydomain'>
<script>
window.onload = function() {
SelectInput();
};
</script>
<h2>
%= l 'MODIFY_DESCRIPTION'
</h2><br>
@ -34,23 +29,7 @@
%=l 'SERVERS_LABEL'
</span><span class=data>
% param dns=>$ddc_datas->{"Domain_details"}->{"dns"};
%=select_field dns=>$dnslabels,id=>"dns",onchange=>"SelectInput()",onload=>"SelectInput()"
%= javascript begin
function SelectInput() {
var method = document.querySelector("#dns");
const types=['custom'];
types.forEach((type)=>{
var service = document.querySelector(`.${type}`);
if (service != null) {
if (method.value == type) {
service.style.display = 'block';
} else {
service.style.display = 'none';
}
}
})
}
%end
%=select_field dns=>$dnslabels,id=>"dns",class=>'selectinputcustom'
</span><br>
%# Dependant on the custom choice from above
@ -79,19 +58,7 @@
%=l 'PASSWORD_LABEL'
</span><span class=data>
% param password=>$ddc_datas->{"Domain_details"}->{"password"};
%=password_field 'password',id=>"ddcPass",value=>$ddc_datas->{"Domain_details"}->{"password"}
%=label_for show=>"Show"
%=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
%= javascript begin
function showPass() {
var x = document.getElementById("ddcPass");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
% end
%=password_field 'password',id=>"ddcPass",value=>$ddc_datas->{"Domain_details"}->{"password"}, class=>'sme-password'
</span><br>
<span class=label>
%=l 'MX'
@ -103,6 +70,4 @@
%= hidden_field Route=>$c->current_route
%= submit_button "$btn", class => 'action'
% end
</div>
</div>

View File

@ -1,9 +1,4 @@
<div id='paramlist'>
<script>
window.onload = function() {
SelectInput();
};
</script>
<h2>
%= l 'Params_for_IP_Retrieval'
</h2>
@ -25,23 +20,7 @@
%=l 'RETRIEVE_METHOD'
</span><span class=data>
% param retrievemethod=>$ddc_datas->{"params"}->{"method"} unless param 'retrievemethod';
%=select_field retrievemethod=>$methodlabels,id=>"retrievemethod",onchange=>"SelectInput()"
%= javascript begin
function SelectInput() {
var method = document.querySelector("#retrievemethod");
const types=['smeIF','smeCMD','web','router','if','ip','cmdv4','custom'];
types.forEach((type)=>{
var service = document.querySelector(`.${type}`);
if (service != null) {
if (method.value == type) {
service.style.display = 'block';
} else {
service.style.display = 'none';
}
}
})
}
% end
%=select_field retrievemethod=>$methodlabels,id=>"retrievemethod"
</span><br>
%#
%# From here the one that is shown depends on the choice above
@ -65,19 +44,7 @@
%=l 'Router password'
</span><span class=data>
% param retrieverouterpassword=>$ddc_datas->{"params"}->{"FWPassword"} unless param 'retrieverouterpassword';
%=password_field 'retrieverouterpassword', id=>'ddcPass'
%=label_for show=>"Show"
%=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
%= javascript begin
function showPass() {
var x = document.getElementById("ddcPass");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
% end
%=password_field 'retrieverouterpassword', id=>'ddcPass', class=>'sme-password'
</span><br>
</div>
@ -102,11 +69,11 @@
</div>
%# Only if "cmd" is chosen
<div class=cmdv4>
<div class=cmd>
<span class=label cmd>
%=l 'RETRIEVE_CMD'
</span><span class=data cmd>
% param retrievecmd=>$ddc_datas->{"params"}->{"cmdv4"} unless param 'retrievecmd';
% param retrievecmd=>$ddc_datas->{"params"}->{"cmd"} unless param 'retrievecmd';
%=text_field 'retrievecmd'
</span><br>
</div>
@ -133,4 +100,4 @@
%= submit_button "$btn", class => 'action'
% end
</div>
</div>

View File

@ -4,7 +4,7 @@
%define name smeserver-ddclient
%define version 11.0.0
%define release 2
%define release 3
Summary: ddclient panel for SME Server
Name: %{name}
@ -25,6 +25,11 @@ Requires: smeserver-formmagick
AutoReqProv: no
%changelog
* Sat May 10 2025 Brian Read <brianr@koozali.org> 11.0.0-3.sme
- Get javascript working and password visible icon [SME: 13001]
- Fix missing cmd in panel
- Delete out of date list of protocols/device/services etc from controller source
* Sat May 10 2025 Brian Read <brianr@koozali.org> 11.0.0-2.sme
- correct $config (remove $) and get protocols, services and devices by interrogating ddclient [SME: 13001]