console.log();
let wdlist = JSON.parse('{{mod.wdlist|json_encode|raw}}');
let wd_table = null;
$(document).ready(function() {
{% if mod.isie == 1 %}
uchip = new $.Uchip();
{% else %}
uchip = new Uchip();
{% endif %}
// listSLL(ssl_list);
$('[data-toggle="tooltip"]').tooltip()
let optpass1 = {};
optpass1.ui = {
container: "#pass_container",
showVerdictsInsideProgressBar: true,
viewports: {
progress: ".pwstrength_viewport_progress"
}
};
optpass1.common = {
debug: false,
};
$('#pass_wd').pwstrength(optpass1);
table_wd(wdlist);
});
function table_wd(list){
wdlist = list;
if(wdlist.length > 0){
let html_content = '';
let index = 0;
wdlist.forEach(function(wd){
html_content += '<tr id="trwd_' + index + '" class="gradeA odd" role="row">' +
'<td class="td-table-domain">' +
wd.username +
'</td>' +
'<td class="td-table-domain">' + wd.domain + '</td>' +
'<td class="td-table-domain">' + wd.location + '</td>' +
'<td align="center">' +
(wd.digest == 1 ? '<span class="label label-success" style="margin-right:5px;">Auth. Digest</span>' : '') +
(wd.permissions == 1 ? '<span class="label label-primary">read-write</span>' : '<span class="label label-info">readonly</span>') +
'</td>' +
'<td align="center" class="td-table-wd-btn">' +
'<button type="button" id="btn_edit_' + index + '" data-wd=\'' + JSON.stringify(wd) + '\' title="{{langmod.DBTNDELETE}}" class="btn btn-primary btn-xs mr5 mb10" onclick="return wdedit(' + wd.id + ',this)">' +
'<i class="fa fa-edit"></i>' +
'</button>' +
'<button type="button" id="btn_del_' + index + '" data-wd=\'' + JSON.stringify(wd) + '\' title="{{langmod.DBTNDELETE}}" class="btn btn-danger btn-xs mr5 mb10" onclick="return wddelete(0, ' + wd.id + ' ,' + index + ')">' +
'<i class="fa fa-trash"></i>' +
'</button>' +
'</td>' +
'</tr>';
index++;
});
let table_html = '<table class="table wd_table table-striped table-bordered table-hover">' +
'<thead>' +
'<tr role="row">' +
'<th>Username</th>' +
'<th>Domain</th>' +
'<th>Path</th>' +
'<th style="width:90px;" align="center">Info</th>' +
'<th style="width:60px;" align="center">Actions</th>' +
'</tr>' +
'</thead>' +
'<tbody id="contenttr">' +
html_content +
'</tbody>' +
'</table>';
$('#table_webdisk_wrapper').html(table_html);
$('.wd_table').DataTable().destroy();
wd_table = $('.wd_table').DataTable();
$('[data-toggle="tooltip"]').tooltip()
}else{
$('#table_webdisk_wrapper').html('<div class="empty_list"><h4 class="text-success">{{langmod.WDNONECREATED}}</h4></div>');
}
}
function newDiskWindow(){
uchip.slideToggle('#new_form_wrapper','#list_wrapper');
}
function cancelNewForm(){
uchip.slideToggle('#list_wrapper','#new_form_wrapper', function(){
$('#username_wd').val('');
$('#pass_wd').val('');
$('#confpass_wd').val('');
$('#pass_wd').data('maybempty', false);
$('#confpass_wd').data('maybempty', false);
$('#read_write_wd').prop('checked',true);
$('#read_only_wd').prop('checked',false);
$('#digest_auth_wd').prop('checked',false);
$('#dirsel').text('/');
$('.field-new-wd').show();
$('.field-edit-wd').hide();
$('#pass_wd').pwstrength('forceUpdate');
uchip.validator('.reqwd', true);
});
}
function copyPass(elem){
let field = document.getElementById(elem);
field.select();
document.execCommand('copy');
noti_bubble('{{langmod.ADDCOPIEDPASS}}','{{langmod.SUCCESS}}','success',false,false,'3000',true);
}
function wdedit(id, elem){
let wddata = $(elem).data('wd');
$('.field-new-wd').hide();
$('.field-edit-wd').show();
$('#uname_edit').text(wddata.username);
$('#domain_edit').text(wddata.domain);
$('#dirsel').text(wddata.location);
if(wddata.permissions == 1){
$('#read_write_wd').prop('checked', true);
$('#read_only_wd').prop('checked', false);
}else{
$('#read_write_wd').prop('checked', false);
$('#read_only_wd').prop('checked', true);
}
let digest = wddata.digest == 1 ? true : false;
$('#pass_wd').data('maybempty', true);
$('#confpass_wd').data('maybempty', true);
$('#digest_auth_wd').prop('checked', digest);
$('#edit_id_wd').val(id);
newDiskWindow();
}
function wddelete(st, id, index){
if(st==0){
let wddata = $('#btn_del_' + index).data('wd');
let strheader = '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">{{langmod.BCARNING}}</span></button><h4 class="modal-title" style="font-size: 2rem;">{{langmod.WDDELETITLE}}</h4>';
let strbody = '<p>{{langmod.WDDELMESS1}}</p>';
strbody += '<p class="para-nobottom"><b>{{langmod.WDUNAME}}:</b> ' + wddata.username + '</p>';
strbody += '<p class="para-nobottom"><b>{{langmod.WDDOMAIN}}:</b> ' + wddata.domain + '</p>';
if(wddata.location != '/'){
strbody +='<div class="checkbox checkbox-primary">' +
'<input type="checkbox" name="delete_files_wd" id="delete_files_wd" class="checkbox checkbox-danger" value="ar">' +
'<label for="delete_files_wd">Delete all files in directory <small>(' + wddata.location + ')</small></label>' +
'</div>';
}
strbody += '<br /><p>{{langmod.WDDELMESS2}}</p>';
let strfooter = '<button type="button" class="btn btn-white" data-dismiss="modal">{{langmod.WDCANCELBTN}}</button><button type="button" class="btn btn-primary" id="btnyesdel" onclick="return wddelete(1,' + id + ',' + index + ')">{{langmod.WDDELCONT}}</button>';
$("#deletemodal .modal-footer").html(strfooter);
$("#deletemodal .modal-body").html(strbody);
$("#deletemodal .modal-header").html(strheader);
///btnporcess('on','btnyesdel','{{ langmod.DYES }}');
$("#deletemodal").modal('toggle');
return false;
}else{
$("#deletemodal").modal('hide');
uchip.handleButton('#btn_del_' + index,'fa-trash');
let tr = $('#trwd_' + index);
tr.addClass('deleting_tr');
tr.find('.btn-primary').prop('disabled', true);
let delete_files = $('#delete_files_wd').is(':checked') ? 1 : 0;
uchip.call('module=webdisk&acc=delete', {
data: 'index=' + id + '&delete_files=' + delete_files,
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.WDDELSUCC}}','{{langmod.WDSUCCESS}}','success',false,false,'3000',true);
tr.slideUp('fast', function(){
wd_table.row(this).remove().draw();
});
}else{
let message = '{{langmod.WDDELGENERRO}}';
if(response.code == 1){
message = '{{langmod.WDDELGENERRO1wd}}';
}
tr.removeClass('deleting_tr');
tr.find('.btn-primary').prop('disabled', false);
uchip.handleButton('#btn_del_' + index,'fa-trash', true);
noti_bubble(message,'{{langmod.WDGENERROR}}','error',false,false,'3000',true);
}
}
});
}
}
function openPGOPT(type, second){
let divelem = type == null ? '#pgopt_container' : type;
if($(divelem).is(':visible')){
$(divelem).slideUp('fast');
}else{
$(divelem).slideDown('fast');
hideOnClickOutside(divelem, second);
}
}
function hideOnClickOutside(selector, second){
let forhide = true;
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(element){
let passmeter = $(element).parent().parent().find('.pass_container input');
let lengthpass = $(element).parent().find('.general-password-generator-options .pwlength');
let typepass = $(element).parent().find('.general-password-generator-options .pwtype');
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);
passmeter.pwstrength("forceUpdate");
// if(type == undefined || type == 'userp'){
// copyPass(passmeter);
// }
copyPass(passmeter.attr('id'));
}
function showExplorer(){
let base = $('#dirsel').text();
let parent_path_raw = $('#domain_wd').children("option:selected").data('path');
let parent_path_pieces = parent_path_raw.split('{{users}}');
if(base == '/'){
base = parent_path_pieces[1] + base;
}
$('#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(base, $('#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, basedomain){
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=webdisk&acc=dirlist', {
data: 'basedir=' + directory + '&domain=' + $('#domain_wd').val(),
callback: function(response){
directory = directory.charAt(directory.length-1) == '/' ? directory : directory + '/';
renderDirSelector(directory, basedomain, response);
uchip.handleButton('#sel_path_btn', 'fa-thumb-tack', true);
}
});
}
function renderDirSelector(base, basedomain, 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="' + basedomain + '" readonly>' +
'<input type="hidden" id="current_path_dirsel2" 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 curpath2 = $('#current_path_dirsel2').val();
let dir = $(this).data('dir');
let dir2 = '';
if(dir == '..'){
let pieces = curpath2.split('/');
pieces.pop();
pieces.pop();
dir = pieces.join('/')
pieces = curpath.split('/');
pieces.pop();
pieces.pop();
console.log(pieces);
if(pieces.length == 0){
dir2 = '/';
}else if(pieces.length == 1 && pieces[0] == ''){
dir2 = '/';
}else{
dir2 = pieces.join('/') + '/';
}
}else{
dir2 = curpath + dir + '/';
dir = curpath2 + dir;
}
callDirList(dir, dir2);
});
$('#dir_list').slideDown('fast');
}
function saveFormWD(){
if($('.field-new-wd').is(':visible')){
saveNewWD();
}else{
updateWD();
}
}
function updateWD(){
if(uchip.validator('.reqedit')){
uchip.handleButton('.btn-save-webdisk', 'fa-floppy-o');
uchip.handleButton('.btn-cancel-webdisk', 'fa-fan');
let password = $('#pass_wd').val();
password = password != '' ? Base64.encode(password) : '';
let mode = $('#read_write_wd').is(':checked') ? 'write' : 'read';
let digest = $('#digest_auth_wd').is(':checked') ? true : false;
let path_wd = $('#dirsel').text();
uchip.call('module=webdisk&acc=updatedisk', {
data: 'edit_id_wd=' + $('#edit_id_wd').val() + '&pass_wd=' + password + '&path_wd=' + $('#dirsel').text() + '&mode=' + mode +'&digest=' + digest,
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.WDUPDTSUCC}}','{{langmod.WDSUCCESS}}','success',false,false,'3000',true);
table_wd(response.list);
cancelNewForm();
}else{
let message = '{{langmod.WDUPDTGENERRO}}';
if(response.code == 1){
message = '{{langmod.WDDELGENERRO1}}';
}
noti_bubble(message,'{{langmod.WDGENERROR}}','error',false,false,'3000',true);
}
uchip.handleButton('.btn-save-webdisk', 'fa-floppy-o', true);
uchip.handleButton('.btn-cancel-webdisk', 'fa-fan', true);
// directory = directory.charAt(directory.length-1) == '/' ? directory : directory + '/';
// renderDirSelector(directory, response);
// uchip.handleButton('#sel_path_btn', 'fa-thumb-tack', true);
}
});
}
}
function saveNewWD(){
if(uchip.validator('.reqwd')){
uchip.handleButton('.btn-save-webdisk', 'fa-floppy-o');
uchip.handleButton('.btn-cancel-webdisk', 'fa-fan');
let password = Base64.encode($('#pass_wd').val());
let mode = $('#read_write_wd').is(':checked') ? 'write' : 'read';
let digest = $('#digest_auth_wd').is(':checked') ? true : false;
let path_wd = $('#path_wd').val();
path_wd = $('#dirsel').text() + (path_wd.charAt(path_wd.length-1) == '/' || path_wd == '' ? path_wd : path_wd + '/');
uchip.call('module=webdisk&acc=savedisk', {
data: 'username_wd=' + $('#username_wd').val() + '&domain_wd=' + $('#domain_wd').val() + '&pass_wd=' + password + '&path_wd=' + path_wd + '&mode=' + mode +'&digest=' + digest,
callback: function(response){
if(response.result == 'success'){
noti_bubble('{{langmod.WDADDEDSUCC}}','{{langmod.WDSUCCESS}}','success',false,false,'3000',true);
table_wd(response.list);
cancelNewForm();
}else{
let message = '{{langmod.WDADDEDERR}}';
if(response.code == 1){
message = '{{langmod.WDADDEDERR1}}';
}else if(response.code == 2){
message = '{{langmod.WDADDEDERR2}}';
}
noti_bubble(message,'{{langmod.WDGENERROR}}','error',false,false,'3000',true);
}
uchip.handleButton('.btn-save-webdisk', 'fa-floppy-o', true);
uchip.handleButton('.btn-cancel-webdisk', 'fa-fan', true);
// directory = directory.charAt(directory.length-1) == '/' ? directory : directory + '/';
// renderDirSelector(directory, response);
// uchip.handleButton('#sel_path_btn', 'fa-thumb-tack', true);
}
});
}
}
|