console.log();
let ftp_list = JSON.parse('{{mod.ftp_account_list|json_encode|raw}}');
let uchip = null;
let ftp_table = null;
$(document).ready(function() {
{% if mod.isie == 1 %}
uchip = new $.Uchip();
{% else %}
uchip = new Uchip();
{% endif %}
let optpass1 = {};
uchip.getBarColor(23);
optpass1.ui = {
container: "",
showVerdictsInsideProgressBar: true,
viewports: {
progress: ""
}
};
optpass1.common = {
debug: false,
};
$('#ftppass1').pwstrength(optpass1);
let optpass2 = {};
optpass2.ui = {
container: "",
showVerdictsInsideProgressBar: true,
viewports: {
progress: ""
}
};
optpass2.common = {
debug: false,
};
$('#ftppass1_ch').pwstrength(optpass2);
listFTP(ftp_list);
});
function listFTP(list){
ftp_list = list;
let table_content = '';
let index = 0;
ftp_list.forEach(function(account){
table_content += '<tr id="tr_ftp_' + index + '">' +
'<td class="action_ftp"><a href="#" onclick="return settingmanual(\'' + account.username + '\',\'' + account.domain + '\')"><i class="fa fa-info-circle"></i> </a></td>' +
'<td>' + account.domain + '</td>' +
'<td>' + account.username + '@' + account.domain + '</td>' +
'<td>' + account.path + '</td>' +
'<td class="action_ftp">' +
'<button type="button" class="btn btn-primary btn-xs mr5 mb10" title="{{langmod.FTPCHNAGEPASS}}" onclick="displayChPass(\'' + account.username + '\',\'' + account.domain + '\')"><i class="fa fa-key"></i></button>' +
'<button type="button" class="btn btn-danger btn-xs mr5 mb10" id="btn_del_' + index + '" title="{{langmod.FTPDELETEONLY}}" onclick="ftpdelete(0,\'' + account.username + '\',\'' + account.domain + '\',' + index + ')"><i class="fa fa-trash"></i></button>' +
'</td>' +
'</tr>';
index++;
});
let html_table = '<table class="table ftp_table table-striped table-bordered table-hover">' +
'<thead>' +
'<tr role="row">' +
'<th class="action_ftp">#</th>' +
'<th>{{langmod.FTPDOMAINS}}</th>' +
'<th>{{langmod.FTPUSER}}</th>' +
'<th>{{langmod.PATH}}</th>' +
'<th>{{langmod.ACTION}}</th>' +
'</tr>' +
'</thead>' +
'<tbody id="contftp">' +
'<tr>' +
'<td class="action_ftp">' +
'<a href="#" onclick="settingmanual(\'{{users}}\',\'{{mod.ftp_domain}}\')"><i class="fa fa-info-circle"></i> </a>' +
'</td>' +
'<td class="sorting_1">{{mod.ftp_domain}}</td>' +
'<td class="sorting_1">{{users}}</td>' +
'<td>/home/{{users}}/</td>' +
'<td class="action_ftp">default</td>' +
'</tr>' +
table_content +
'</tbody>' +
'</table>';
$('#table_ftp_container').html(html_table);
$('.ftp_table').DataTable().destroy();
ftp_table = $('.ftp_table').dataTable({
"columnDefs": [
{ "orderable": false, "targets": 0 }
]
});
}
function displaynewForm(){
$('#ftp_list_wrapper').slideUp('fast', function(){
$('#ftp_form').slideDown('fast');
});
}
function displayChPass(uname, domain){
$('#ftp_list_wrapper').slideUp('fast', function(){
$('#user_chpass').text(uname);
$('#domain_chpass').text(domain);
$('#ch_title').text('Change password for: ' + uname + '@' + domain);
$('#ftp_form_pass').slideDown('fast');
});
}
function cancelChPass(){
$('#ftp_form_pass').slideUp('fast', function(){
$('#ftppass1_ch').val('');
$('#ftppass2_ch').val('');
$('#ftp_list_wrapper').slideDown('fast');
$('#ftppass1_ch').pwstrength("forceUpdate");
$('.password-generator-copied').hide();
});
}
function cancelForm(){
$('#ftp_form').slideUp('fast', function(){
$('#loginftp').val('');
$('#ftppass1').val('');
$('#ftppass2').val('');
$('#dirsel').text('/public_html/');
$('#directoryftp').val('');
$('#ftp_list_wrapper').slideDown('fast');
$('#ftppass1').pwstrength("forceUpdate");
$('.password-generator-copied').hide();
});
}
function copyPass(elem){
let field = document.getElementById(elem);
field.select();
document.execCommand('copy');
$('.password-generator-copied').slideDown();
setTimeout(function(){
$('.password-generator-copied').slideUp();
}, 4500);
}
function openPGOPT(type){
let divelem = type == null ? '#pgopt_container' : type;
if($(divelem).is(':visible')){
$(divelem).slideUp('fast');
}else{
$(divelem).slideDown('fast');
hideOnClickOutside(divelem);
}
}
function hideOnClickOutside(selector, second){
let forhide = false;
if(second === undefined){
second = '#show_options_button';
forhide = true;
}
function outsideClickListener(event){
$target = $(event.target);
if (!$target.closest(selector).length && !$target.closest(second).length && $(selector).is(':visible')) {
if(forhide){
$(selector).slideUp('fast');
}else{
$(selector).remove();
}
removeClickListener();
}
}
function removeClickListener(){
document.removeEventListener('click', outsideClickListener)
}
document.addEventListener('click', outsideClickListener)
}
function generateNewPass(type, element){
let passmeter = 'ftppass1_ch';
let lengthpass = 'lengthpass2';
let typepass = 'typepass2';
let confpass = 'ftppass2_ch';
if(type == 'userp'){
passmeter = 'ftppass1';
lengthpass = 'lengthpass';
typepass = 'typepass';
confpass = 'ftppass2';
}
let lpass = $('#' + lengthpass).val();
let tpass = $('#' + typepass).val();
let new_pass = generatePasswordRand(lpass, tpass);
$('#' + passmeter).val(new_pass);
$('#' + confpass).val(new_pass);
$('#' + passmeter).pwstrength("forceUpdate");
// if(type == undefined || type == 'userp'){
// copyPass(passmeter);
// }
copyPass(passmeter);
}
function sendFTPPass(elem){
if(uchip.validator('#ftp_form_pass .reqfield')){
uchip.handleButton(elem, 'fa-floppy-o');
uchip.call('module=ftp_accounts&acc=chpass', {
data: '&hidenuserftp=' + $('#user_chpass').text() + '@' + $('#domain_chpass').text() + '&pass=' + Base64.encode($('#ftppass1_ch').val()),
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.SUCCESSFUL}}','{{langmod.FTPEXITPASS}}','success',false,false,'3000',true);
cancelChPass();
}else{
noti_bubble('{{langmod.ERROROCURRED}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
}
uchip.handleButton('.btn-save-ftp','fa-floppy-o', true);
uchip.handleButton('.btn-cancel-ftp','fa-ban', true);
}
});
}
}
function calculateQuota(){
let plan = {{mod.ftp_pack}};
$('#ftpused').text(ftp_list.length);
if(plan >= 0){
if(ftp_list.length == plan){
$('#add_new_ftpbtn').addClass('disabled');
$('#add_new_ftpbtn').prop('disabled', true)
}else{
$('#add_new_ftpbtn').removeClass('disabled');
$('#add_new_ftpbtn').prop('disabled', false)
}
let percent = ((ftp_list.length * 100) / plan).toFixed(0);
$('#ftp_percent').text(percent + '%');
let barcolor = uchip.getBarColor(percent);
$('#barftpind').removeClass();
$('#barftpind').addClass(barcolor);
$('#barftpind').width(percent + '%');
}
}
function sendFTPForm(elem){
if(uchip.validator('#new_ftp_form .reqfield')){
uchip.handleButton(elem, 'fa-floppy-o');
let directory = $('#dirsel').text() + $('#directoryftp').val();
uchip.call('module=ftp_accounts&acc=addnew', {
data: 'login=' + $('#loginftp').val() + '&dir=' + directory + '&pass=' + Base64.encode($('#ftppass1').val()) + '&domain=' + $('#domain').val(),
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.FTPCREATE}}','{{langmod.SUCCESSFUL}}','success',true,false,'3000',true);
listFTP(response.list);
calculateQuota();
cancelForm();
}else{
let message_error = '{{langmod.ERROROCURRED}}';
if(response.hasOwnProperty('code')){
if(response.code == '500'){
message_error = '{{langmod.FTPERRORADD}}';
}
}
noti_bubble(message_error,'{{langmod.ERROR1}}','error',true,false,'3000',true);
}
uchip.handleButton('.btn-save-ftp','fa-floppy-o', true);
uchip.handleButton('.btn-cancel-ftp','fa-ban', true);
}
});
}
}
function changepassftp(user){
$("#pass1ftp").val('');
$("#pass2ftp").val('');
$("#changepassftptitle").html('{{langene.MDCHANPASS}} '+user);
$("#modal-changepassftp").modal('toggle');
$("#hidenuserftp").val(user);
return false;
}
function ftpdelete(st,user,domain, index){
if(st==0){
let btsfooter = '<button type="button" class="btn btn-white" data-dismiss="modal">{{ langmod.FTPNO }}</button>\n' +'<button type="button" class="btn btn-primary" onclick="ftpdelete(1,\'' + user + '\',\'' + domain + '\',' + index + ')">{{ langmod.FTPYES }}</button>';
let btsheader = '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">{{ langmod.FTPLABEL2 }}</span></button><h4 class="modal-title" style="font-size:2rem">{{ langmod.FTPLABEL3 }}</h4>';
$("#deletemodaluserftp .modal-footer").html(btsfooter);
$("#deletemodaluserftp .modal-header").html(btsheader);
$("#deletemodaluserftp .modal-body").html('<p>{{langmod.FTPCONFDEL1}}: <br><strong id="descron">' + user + '@' + domain + '</strong><br>{{langmod.FTPCONFDEL2}}</p>');
$("#deletemodaluserftp").modal('toggle');
return false
}
if(st==1){
$("#deletemodaluserftp").modal('toggle');
uchip.handleButton('#btn_del_' + index,'fa-trash');
let tr = $('#tr_ftp_' + index);
tr.addClass('deleting_tr');
let deluser = user + '@' + domain;
uchip.call('module=ftp_accounts&acc=ftpdelete', {
data: 'user=' + user + '&domain=' + domain + '&deluser=' + deluser,
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.FTPDELETEUSER}}','{{langmod.FTPDELETE}}','success',true,false,'3000',true);
tr.slideUp('fast', function(){
ftp_table.row(this).remove().draw();
});
ftp_list.splice(index, 1);
calculateQuota();
}else{
tr.removeClass('deleting_tr');
noti_bubble('{{langmod.ERROROCURRED}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
uchip.handleButton('#btn_del_' + index,'fa-trash', true);
}
}
});
// btnporcess('off','btnyesdel','{{ langmod.FTPLABEL6 }}');
// $("#btnyesdel").attr('disabled',true);
// $("#btnyesdel").addClass('disabled');
// $.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
// $.ajax({
// type: "POST",
// url: "./{{users}}/index.php?module=ftp_accounts&acc=ftpdelete",
// data:"user="+user+"&domain="+domain+"&deluser"+deluser,
// complete: function(datos){
// ftprefres(user,domain);
// refrespanelnew('ftp_accounts');
// noti_bubble('{{langmod.FTPDELETEUSER}}','{{langmod.FTPDELETE}}','success',true,false,'3000',true);
// btnporcess('on','btnyesdel','{{ langmod.FTPYES }}');
// $("#deletemodaluserftp").modal('hide');
// return false;
// }
// });
}
return false;
}
function settingmanual(user,domain){
//alert(user);
$('#userftp').html(user);
$('#serverftp').html(domain);
$('#config_file_account').text(user);
// $('#aftpfilezilla').prop('href', '?module=ftp_accounts&acc=xmlfilezilla&client=filezilla&userftp='+user+'&domain='+domain);
// $('#aftptransmit').prop('href', '?module=ftp_accounts&acc=xmlfilezilla&client=transmit&userftp='+user+'&domain='+domain);
// $('#aftpcyberduck').prop('href', '?module=ftp_accounts&acc=xmlfilezilla&client=cyberduck&userftp='+user+'&domain='+domain);
if(!$('#ftp_details').is(':visible')){
uchip.slideToggle('#ftp_details','#ftp_details_info', function(){
// $('#autoconfigfile').slideDown('fast');
});
}
return false;
}
function downloadConfFile(){
let user = $('#userftp').text();
let domain = $('#serverftp').text();
if($('#client_ftp_conf').val() != ''){
window.open('?module=ftp_accounts&acc=xmlconf&client=' + $('#client_ftp_conf').val() + '&data=' + Base64.encode(user + '@' + domain), '_blank');
}
}
// CECILIO MORALES JS
function ftprefres(user,domain){
$.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
$.ajax({
type: 'POST',
url: './{{users}}/index.php?module=ftp_accounts&acc=ftprefres',
data:'user='+user+'&domain='+domain,
complete: function(datos){
$('#contftp').html('');
$('#contftp').html(datos.responseText);
return false;
}
});
}
function changerrandom(inputdiv){
var long=$('#lengthpass').val();
var typepass=$('#typepass').val();
$.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
$.ajax({
type: 'POST',
url: './{{users}}/index.php?module=ftp_accounts&acc=changerrandom&long='+long+'&typepass='+typepass,
complete: function(datos){
$("#"+inputdiv).val(datos.responseText);
return false;
}
});
return false;
}
function newvalidpassftp(pass1,pass2){
var expreg =/^[a-zA-Z0-9\_\.\-\/]+$/i;
var sw1=0;
var sw2=0;
if(pass1!=""){
var resp=expreg.test(pass1);
if(resp==false){
noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
sw1=1;
}else{
sw1=3;
}
}
if(pass2!=""){
var resp=expreg.test(pass2);
if(resp==false){
noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
sw2=1;
$("#btn-submitftp").hide();
}else{
sw2=3;
}
}
if((pass1==pass2)&&(sw1 + sw2)==6) {
$("#btn-submitftp").show();
}else{
$("#btn-submitftp").hide();
}
}
function newvalidpass(pass1,pass2){
var expreg =/^[a-zA-Z0-9\_\.\-\/]+$/i;
var sw1=0;
var sw2=0;
if(pass1!=""){
//var resp=expreg.test(pass1);
var resp = true;
if(resp==false){
noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
sw1=1;
}else{
sw1=3;
}
}
if(pass2!=""){
//var resp=expreg.test(pass2);
var resp = true;
if(resp==false){
noti_bubble('{{langmod.ERROR1}}','{{langmod.ERROR2}}','error',true,false,'3000',true);
sw2=1;
$("#btn-submit").hide();
}else{
sw2=3;
}
}
if((pass1==pass2)&&(sw1 + sw2)==6) { $("#btn-submit").show(); }else{ $("#btn-submit").hide(); }
}
$("#btn_add_ftp").click(function () {
$("#modal-addfaccountftp").modal('toggle');
return false;
});
$("#btn_save_ftp").click(function (){
btnporcess('off','btn_save_ftp','{{ langmod.FTPLABEL6 }}');
var passlength=$("#ftppass1").val();
passlength=passlength.length;
$("#alertftp").hide('blind');
if($("#loginftp").val()=='' || $("#directoryftp").val()=='' || $("#ftppass1").val()=='' || $("#ftppass2").val()==''){
noti_bubble('{{langmod.FTPREQUERIDATE}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
btnporcess('on','btn_save_ftp','{{ langmod.ADDFTPACCOUNT }}');
return false;
}else if($("#ftppass1").val()!=$("#ftppass2").val()){
noti_bubble('{{langmod.PASSDIF}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
btnporcess('on','btn_save_ftp','{{ langmod.ADDFTPACCOUNT }}');
return false;
}else if(passlength <=6){
noti_bubble('{{langmod.FTPSECUREPASS}}','{{langmod.ERROR1}}','success',true,false,'3000',true);
btnporcess('on','btn_save_ftp','{{ langmod.ADDFTPACCOUNT }}');
return false;
}else{
var pass=Base64.encode($("#ftppass1").val());
$.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
$.ajax({
type: "POST",
url: "./{{users}}/index.php?module=ftp_accounts&acc=btn_save_ftp",
data: "login="+$("#loginftp").val()+"&dir="+$("#directoryftp").val()+"&pass="+pass+"&domain="+$("#domain").val(),
complete: function(datos){
//console.log(datos.responseText);
if(datos.responseText=='OK'){
$("#loginftp").val('');
$("#directoryftp").val('/public_html/');
$("#directoryftp").val('/public_html/');
ftprefres($("#loginftp").val()+'@'+$("#domain").val(),$("#domain").val());
refrespanelnew('ftp_accounts');
noti_bubble('{{langmod.FTPCREATE}}','{{langmod.SUCCESSFUL}}','success',true,false,'3000',true);
btnporcess('on','btn_save_ftp','{{ langmod.ADDFTPACCOUNT }}');
$("#modal-addfaccountftp").modal('hide');
}
if(datos.responseText=='Error'){
noti_bubble('{{langmod.FTPERRORADD}}','{{langmod.ERROR1}}','error',true,false,'3000',true);
btnporcess('on','btn_save_ftp','{{ langmod.ADDFTPACCOUNT }}');
}
return false;
}
});
}
});
$("#btn-submitftp").click(function (){
$("#btn-submitftp").attr('disalbled',true);
$("#btn-submitftp").addClass('disalbled');
$("#btn-submitftp").html('<i class="fa fa-spinner"></i> {{langene.MDBTN_SAVE}}');
$.ajaxSetup({ headers: { 'csrftoken' : '{{ tokenajax }}' } });
$.ajax({
type: "POST",
url: "./{{users}}/index.php?module=ftp_accounts&acc=changepassftp",
data: "pass="+$("#pass1ftp").val()+"&hidenuserftp="+$("#hidenuserftp").val(),
complete: function(datos){
console.log(datos.responseText);
changepassftp($("#hidenuserftp").val());
noti_bubble('{{langmod.SUCCESSFUL}}','{{langmod.FTPEXITPASS}}','success',false,false,'3000',true);
$("#modal-changepassftp").modal('hide');
$("#btn-submitftp").attr('disalbled',false);
$("#btn-submitftp").removeClass('disalbled');
return false;
}
});
return false;
});
function showExplorer(){
$('#dir_explorer_domain .modal-body').html('<div class="table_cron_loader"><span><i class="fa fa-circle-o-notch fa-spin"></i></span></div>');
$('#dir_explorer_domain').modal('show');
callDirList($('#dirsel').text());
}
function selCurrentPath(){
let curpath = $('#current_path_dirsel').val();
$('.dir-sel-btn').attr('data-original-title',curpath);
$('#dirsel').text(curpath);
$('#dir_explorer_domain').modal('hide');
}
function callDirList(directory){
uchip.handleButton('#sel_path_btn', 'fa-thumb-tack');
$('#dir_explorer_domain .modal-body').html('<div class="table_cron_loader"><span><i class="fa fa-circle-o-notch fa-spin"></i></span></div>');
uchip.call('module=domains&acc=dirlist', {
data: 'basedir=' + directory,
callback: function(response){
directory = directory.charAt(directory.length-1) == '/' ? directory : directory + '/';
renderDirSelector(directory, response);
uchip.handleButton('#sel_path_btn', 'fa-thumb-tack', true);
}
});
}
function renderDirSelector(base, dirs){
let dirs_html = '';
dirs.forEach((dir) => {
dirs_html += '<div class="dir-item" data-dir="' + dir + '"><div class="row">' +
'<div class="col-md-12">' +
'<i class="fa fa-folder-o" aria-hidden="true"></i>' +
dir +
'</div>' +
'</div></div>';
});
let html = '<div id="dir_list" class="container-fluid" style="display:none">' +
'<div class="row">' +
'<div class="col-md-12 current-path-div">' +
'<label class="form-label">Cuerent path</label>' +
'<input type="text" id="current_path_dirsel" class="form-control" value="' + base + '" readonly>' +
'</div>' +
'</div>' +
dirs_html +
'</div>';
$('#dir_explorer_domain .modal-body').html(html);
$('.dir-item').mouseover(function() {
$(this).find('.fa').removeClass('fa-folder-o').addClass('fa-folder-open-o');
})
.mouseout(function() {
$(this).find('.fa').removeClass('fa-folder-open-o').addClass('fa-folder-o');
}).click(function(){
let curpath = $('#current_path_dirsel').val();
let dir = $(this).data('dir');
if(dir == '..'){
let pieces = curpath.split('/');
pieces.pop();
pieces.pop();
dir = pieces.join('/')
}else{
dir = curpath + dir;
}
callDirList(dir);
});
$('#dir_list').slideDown('fast');
}
$("#btn_cancel_ftp").click(function (){
$("#modal-addfaccountftp").modal('hide');
return false;
});
$("#pass2ftp").keyup(function() {
if($("#pass2ftp").val()==$("#pass1ftp").val()){
$("#btn-submitftp").show();
newvalidpassftp($("#pass1ftp").val(),$("#pass2ftp").val());
}else{
newvalidpassftp($("#pass1ftp").val(),$("#pass2ftp").val());
$("#btn-submitftp").hide();
}
});
$("#pass1ftp").keyup(function() {
var color1=0;
var color2=0;
var color3=0;
var color4=0;
var classpar='';
var msj='';
// set password variable
var pswd = $(this).val();
//validate the length
if(pswd.length<8){ color1=0;}else{ color1=1; msj=msj+' largo 1'; }
//validate letter
if(pswd.match(/[A-z]/gi)){color2=1; msj=msj+' letras 1'; }else{ color2=0;}
//validate capital letter
if(pswd.match(/[A-Z]/gi)){ msj=msj+' Mayusculas 1'; color3=1; } else { color3=0; }
//validate number
if (pswd.match(/[0-9]/gi)){color4=1; msj=msj+' Numeros 1';}else{ color4=0; }
var sum=(color1+color2+color3+color4);
newvalidpassreseller($("#pass1ftp").val(),$("#pass2ftp").val());
//alert(sum+' M:'+msj);
if(sum==0){ classpar='progress-bar-danger';}
if(sum==1){ classpar='progress-bar-warning';}
if(sum==2){ classpar='progress-bar-danger';}
if(sum==3){ classpar='progress-bar-info';}
if(sum==4){ classpar='progress-bar-success';}
var barra='<div class="progress-bar '+classpar+'" style="width: '+((pswd.length)*10)+'%;"></div>';
$("#progresspassftp").html(barra);
});
|