Fixed cloning of share attributes

This commit is contained in:
bergware
2020-02-11 16:38:41 +01:00
parent 615609c06f
commit 743beceb58
5 changed files with 232 additions and 168 deletions

View File

@@ -4,8 +4,8 @@ Tag="apple"
Cond="(($var['shareAFPEnabled']!='no') && (isset($name)?array_key_exists($name,$sec_afp):0))"
---
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2012-2018, Bergware International.
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -30,8 +30,8 @@ $width = [123,300];
> Select the desired destinations and press **Write** to copy the AFP security settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readafp" size="1" class="clone" onchange="toggleButton('readafp',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readafp" size="1" class="clone" onchange="toggleButton('readafp',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -40,11 +40,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name) echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readafp" value="Read" class="clone" onclick="readAFP()" disabled>
</select></span><input type="button" id="readafp" value="Read" class="clone" onclick="readAFP()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="afp1" name="writeafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeafp',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="afp1" name="writeafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeafp',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -55,7 +55,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writeafp" value="Write" class="clone" onclick="writeAFP()" disabled>
</select></span><input type="button" id="writeafp" value="Write" class="clone" onclick="writeAFP()" disabled>
</div>
<form markdown="1" name="afp_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writeafp',true);$('#afp1').dropdownchecklist('disable')">
@@ -139,8 +139,8 @@ Security:
> Select the desired destinations and press **Write** to copy the AFP User access settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readuserafp" size="1" class="clone" onchange="toggleButton('readuserafp',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readuserafp" size="1" class="clone" onchange="toggleButton('readuserafp',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -149,11 +149,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name && $sec_afp[$list['name']]['security']=='secure') echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readuserafp" value="Read" class="clone" onclick="readUserAFP()" disabled>
</select></span><input type="button" id="readuserafp" value="Read" class="clone" onclick="readUserAFP()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="afp2" name="writeuserafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeuserafp',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="afp2" name="writeuserafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeuserafp',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -164,7 +164,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row)echo $row;
?>
</select><input type="button" id="writeuserafp" value="Write" class="clone" onclick="writeUserAFP()" disabled>
</select></span><input type="button" id="writeuserafp" value="Write" class="clone" onclick="writeUserAFP()" disabled>
</div>
<form markdown="1" name="afp_user_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writeuserafp',true);$('#afp2').dropdownchecklist('disable')">
@@ -187,8 +187,8 @@ foreach ($rows as $row)echo $row;
> Select the desired destinations and press **Write** to copy the AFP User access settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readuserafp" size="1" class="clone" onchange="toggleButton('readuserafp',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readuserafp" size="1" class="clone" onchange="toggleButton('readuserafp',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -197,11 +197,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name && $sec_afp[$list['name']]['security']=='private') echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readuserafp" value="Read" class="clone" onclick="readUserAFP()" disabled>
</select></span><input type="button" id="readuserafp" value="Read" class="clone" onclick="readUserAFP()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="afp2" name="writeuserafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeuserafp',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="afp2" name="writeuserafp" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeuserafp',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -212,7 +212,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach($rows as $row) echo $row;
?>
</select><input type="button" id="writeuserafp" value="Write" class="clone" onclick="writeUserAFP()" disabled>
</select></span><input type="button" id="writeuserafp" value="Write" class="clone" onclick="writeUserAFP()" disabled>
</div>
<form markdown="1" name="afp_user_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writeuserafp',true);$('#afp2').dropdownchecklist('disable')">
@@ -260,21 +260,31 @@ function readAFP() {
});
$(form).find('select').trigger('change');
}
function writeAFP() {
var data = {}, copied = false;
data.shareExportAFP = '<?=addslashes(htmlspecialchars($sec_afp[$name]['export']))?>';
data.shareVolsizelimitAFP = '<?=addslashes(htmlspecialchars($sec_afp[$name]['volsizelimit']))?>';
data.shareVoldbpathAFP = '<?=addslashes(htmlspecialchars($sec_afp[$name]['voldbpath']))?>';
data.shareSecurityAFP = '<?=addslashes(htmlspecialchars($sec_afp[$name]['security']))?>';
data.changeShareSecurityAFP = 'Apply';
$('select#afp1 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
function writeAFP(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeAFP(data,++n,i);},3000);});
} else {
toggleButton('writeafp',false);
$('div.spinner.fixed').hide();
}
});
if (copied) swal({title:'Clone complete',text:'AFP security settings are written to the selected shares',type:'success'},function(){refresh();});
} else {
$('select#afp1 option').map(function(i) {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['shareExportAFP'] = '<?=addslashes(htmlspecialchars($sec_afp[$name]['export']))?>';
data[i]['shareVolsizelimitAFP'] = '<?=addslashes(htmlspecialchars($sec_afp[$name]['volsizelimit']))?>';
data[i]['shareVoldbpathAFP'] = '<?=addslashes(htmlspecialchars($sec_afp[$name]['voldbpath']))?>';
data[i]['shareSecurityAFP'] = '<?=addslashes(htmlspecialchars($sec_afp[$name]['security']))?>';
data[i]['changeShareSecurityAFP'] = 'Apply';
i++;
}
});
toggleButton('writeafp',true);
$('div.spinner.fixed').show('slow');
writeAFP(data,0,i);
}
}
function readUserAFP() {
var form = document.afp_user_edit;
@@ -296,32 +306,43 @@ function readUserAFP() {
});
$(form).find('select').trigger('change');
}
function writeUserAFP() {
var data = {}, copied = false;
data['userAccess.0'] = 'no-access';
function writeUserAFP(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeUserAFP(data,++n,i);},3000);});
} else {
toggleButton('writeuserafp',false);
$('div.spinner.fixed').hide();
}
} else {
var data = [], i = 0;
$('select#afp2 option').map(function(i) {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['userAccess.0'] = 'no-access';
<?
$read_list = explode(",", $sec_afp[$name]['readList']);
$write_list = explode(",", $sec_afp[$name]['writeList']);
foreach ($users as $user) {
if ($user['name'] == "root") continue;
$idx = $user['idx'];
$userAccess = null;
if ($sec_afp[$name]['security']=='secure') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : "read-only";
} elseif ($sec_afp[$name]['security'] == 'private') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : (in_array($user['name'], $read_list) ? "read-only" : "no-access");
}
if ($userAccess) echo " data['userAccess.$idx'] = '$userAccess';\n";
}
$read_list = explode(",", $sec_afp[$name]['readList']);
$write_list = explode(",", $sec_afp[$name]['writeList']);
foreach ($users as $user) {
if ($user['name'] == "root") continue;
$idx = $user['idx'];
$userAccess = null;
if ($sec_afp[$name]['security']=='secure') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : "read-only";
} elseif ($sec_afp[$name]['security'] == 'private') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : (in_array($user['name'], $read_list) ? "read-only" : "no-access");
}
if ($userAccess) echo "data[i]['userAccess.$idx'] = '$userAccess';\n";
}
?>
data.changeShareAccessAFP = 'Apply';
$('select#afp2 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
}
});
if (copied) swal({title:'Clone complete',text:'AFP User Access settings are written to the selected shares',type:'success'},function(){refresh();});
data[i]['changeShareAccessAFP'] = 'Apply';
i++;
}
});
toggleButton('writeuserafp',true);
$('div.spinner.fixed').show('slow');
writeUserAFP(data,0,i);
}
}
</script>

View File

@@ -4,8 +4,8 @@ Tag="linux"
Cond="(($var['shareNFSEnabled']!='no') && (isset($name)?array_key_exists($name,$sec_nfs):0))"
---
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2012-2018, Bergware International.
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -27,8 +27,8 @@ $width = [123,300];
> Select the desired destinations and press **Write** to copy the NFS security settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readnfs" size="1" class="clone" onchange="toggleButton('readnfs',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readnfs" size="1" class="clone" onchange="toggleButton('readnfs',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -37,11 +37,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name) echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readnfs" value="Read" class="clone" onclick="readNFS()" disabled>
</select></span><input type="button" id="readnfs" value="Read" class="clone" onclick="readNFS()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="nfs1" name="writenfs" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writenfs',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="nfs1" name="writenfs" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writenfs',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -52,7 +52,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writenfs" value="Write" class="clone" onclick="writeNFS()" disabled>
</select></span><input type="button" id="writenfs" value="Write" class="clone" onclick="writeNFS()" disabled>
</div>
<form markdown="1" name="nfs_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writenfs',true);$('#nfs1').dropdownchecklist('disable')">
@@ -116,18 +116,29 @@ function readNFS() {
});
$(form).find('select').trigger('change');
}
function writeNFS() {
var data = {}, copied = false;
data.shareExportNFS = '<?=addslashes(htmlspecialchars($sec_nfs[$name]['export']))?>';
data.shareSecurityNFS = '<?=addslashes(htmlspecialchars($sec_nfs[$name]['security']))?>';
data.changeShareSecurityNFS = 'Apply';
$('select#nfs1 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
function writeNFS(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeNFS(data,++n,i);},3000);});
} else {
toggleButton('writenfs',false);
$('div.spinner.fixed').hide();
}
});
if (copied) swal({title:'Clone complete',text:'NFS security settings are written to the selected shares',type:'success'},function(){refresh();});
} else {
var data = [], i = 0;
$('select#nfs1 option').map(function(i) {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['shareExportNFS'] = '<?=addslashes(htmlspecialchars($sec_nfs[$name]['export']))?>';
data[i]['shareSecurityNFS'] = '<?=addslashes(htmlspecialchars($sec_nfs[$name]['security']))?>';
data[i]['changeShareSecurityNFS'] = 'Apply';
i++;
}
});
toggleButton('writenfs',true);
$('div.spinner.fixed').show('slow');
writeNFS(data,0,i);
}
}
</script>

View File

@@ -4,8 +4,8 @@ Tag="windows"
Cond="(($var['shareSMBEnabled']!='no') && (isset($name)?array_key_exists($name,$sec):0))"
---
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2012-2018, Bergware International.
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -27,8 +27,8 @@ $width = [123,300];
> Select the desired destinations and press **Write** to copy the SMB security settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readsmb" size="1" class="clone" onchange="toggleButton('readsmb',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readsmb" size="1" class="clone" onchange="toggleButton('readsmb',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -37,11 +37,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name) echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readsmb" value="Read" class="clone" onclick="readSMB()" disabled>
</select></span><input type="button" id="readsmb" value="Read" class="clone" onclick="readSMB()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="smb1" name="writesmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writesmb',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="smb1" name="writesmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writesmb',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -52,7 +52,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writesmb" value="Write" class="clone" onclick="writeSMB()" disabled>
</select></span><input type="button" id="writesmb" value="Write" class="clone" onclick="writeSMB()" disabled>
</div>
<form markdown="1" name="smb_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writesmb',true);$('#smb1').dropdownchecklist('disable')">
@@ -126,8 +126,8 @@ Security:
> Select the desired destinations and press **Write** to copy the SMB User access settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readusersmb" size="1" class="clone" onchange="toggleButton('readusersmb',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readusersmb" size="1" class="clone" onchange="toggleButton('readusersmb',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -136,11 +136,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name && $sec[$list['name']]['security']=='secure') echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readusersmb" value="Read" class="clone" onclick="readUserSMB()" disabled>
</select></span><input type="button" id="readusersmb" value="Read" class="clone" onclick="readUserSMB()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="smb2" name="writeusersmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeusersmb',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="smb2" name="writeusersmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeusersmb',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -151,7 +151,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writeusersmb" value="Write" class="clone" onclick="writeUserSMB()" disabled>
</select></span><input type="button" id="writeusersmb" value="Write" class="clone" onclick="writeUserSMB()" disabled>
</div>
<form markdown="1" name="smb_user_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writeusersmb',true);$('#smb2').dropdownchecklist('disable')">
@@ -174,8 +174,8 @@ foreach ($rows as $row) echo $row;
> Select the desired destinations and press **Write** to copy the SMB User access settings to the selected shares.
<div class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readusersmb" size="1" class="clone" onchange="toggleButton('readusersmb',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readusersmb" size="1" class="clone" onchange="toggleButton('readusersmb',false)">
<option disabled selected>select...</option>
<?
if (isset($disks[$name])) {
@@ -184,11 +184,11 @@ if (isset($disks[$name])) {
foreach ($shares as $list) if ($list['name']!=$name && $sec[$list['name']]['security']=='private') echo mk_option("", $list['name'], $list['name']);
}
?>
</select><input type="button" id="readusersmb" value="Read" class="clone" onclick="readUserSMB()" disabled>
</select></span><input type="button" id="readusersmb" value="Read" class="clone" onclick="readUserSMB()" disabled>
</div>
<div class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="smb2" name="writeusersmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeusersmb',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="smb2" name="writeusersmb" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeusersmb',this.id)">
<?
$rows = [];
if (isset($disks[$name])) {
@@ -199,7 +199,7 @@ if (isset($disks[$name])) {
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writeusersmb" value="Write" class="clone" onclick="writeUserSMB()" disabled>
</select></span><input type="button" id="writeusersmb" value="Write" class="clone" onclick="writeUserSMB()" disabled>
</div>
<form markdown="1" name="smb_user_edit" method="POST" action="/update.htm" target="progressFrame" onchange="toggleButton('writeusersmb',true);$('#smb2').dropdownchecklist('disable')">
@@ -246,20 +246,31 @@ function readSMB() {
});
$(form).find('select').trigger('change');
}
function writeSMB() {
var data = {}, copied = false;
data.shareExport = '<?=addslashes(htmlspecialchars($sec[$name]['export']))?>';
data.shareFruit = '<?=addslashes(htmlspecialchars($sec[$name]['fruit']))?>';
data.shareSecurity = '<?=addslashes(htmlspecialchars($sec[$name]['security']))?>';
data.changeShareSecurity = 'Apply';
$('select#smb1 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
function writeSMB(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeSMB(data,++n,i);},3000);});
} else {
toggleButton('writesmb',false);
$('div.spinner.fixed').hide();
}
});
if (copied) swal({title:'Clone complete',text:'SMB security settings are written to the selected shares',type:'success'},function(){refresh();});
} else {
var data = [], i = 0;
$('select#smb1 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['shareExport'] = '<?=addslashes(htmlspecialchars($sec[$name]['export']))?>';
data[i]['shareFruit'] = '<?=addslashes(htmlspecialchars($sec[$name]['fruit']))?>';
data[i]['shareSecurity'] = '<?=addslashes(htmlspecialchars($sec[$name]['security']))?>';
data[i]['changeShareSecurity'] = 'Apply';
i++;
}
});
toggleButton('writesmb',true);
$('div.spinner.fixed').show('slow');
writeSMB(data,0,i);
}
}
function readUserSMB() {
var form = document.smb_user_edit;
@@ -281,32 +292,43 @@ function readUserSMB() {
});
$(form).find('select').trigger('change');
}
function writeUserSMB() {
var data = {}, copied = false;
data['userAccess.0'] = 'no-access';
function writeUserSMB(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeUserSMB(data,++n,i);},3000);});
} else {
toggleButton('writeusersmb',false);
$('div.spinner.fixed').hide();
}
} else {
var data = [], i = 0;
$('select#smb2 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['userAccess.0'] = 'no-access';
<?
$read_list = explode(",", $sec[$name]['readList']);
$write_list = explode(",", $sec[$name]['writeList']);
foreach ($users as $user) {
if ($user['name'] == "root") continue;
$idx = $user['idx'];
$userAccess = null;
if ($sec[$name]['security']=='secure') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : "read-only";
} elseif ($sec[$name]['security'] == 'private') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : (in_array($user['name'], $read_list) ? "read-only" : "no-access");
}
if ($userAccess) echo " data['userAccess.$idx'] = '$userAccess';\n";
}
$read_list = explode(",", $sec[$name]['readList']);
$write_list = explode(",", $sec[$name]['writeList']);
foreach ($users as $user) {
if ($user['name'] == "root") continue;
$idx = $user['idx'];
$userAccess = null;
if ($sec[$name]['security']=='secure') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : "read-only";
} elseif ($sec[$name]['security'] == 'private') {
$userAccess = in_array($user['name'], $write_list) ? "read-write" : (in_array($user['name'], $read_list) ? "read-only" : "no-access");
}
if ($userAccess) echo "data[i]['userAccess.$idx'] = '$userAccess';\n";
}
?>
data.changeShareAccess = 'Apply';
$('select#smb2 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
}
});
if (copied) swal({title:'Clone complete',text:'SMB User Access settings are written to the selected shares',type:'success'},function(){refresh();});
data[i]['changeShareAccess'] = 'Apply';
i++;
}
});
toggleButton('writeusersmb',true);
$('div.spinner.fixed').show('slow');
writeUserSMB(data,0,i);
}
}
</script>

View File

@@ -3,8 +3,8 @@ Title="Share Settings"
Tag="share-alt-square"
---
<?PHP
/* Copyright 2005-2019, Lime Technology
* Copyright 2012-2019, Bergware International.
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -67,25 +67,25 @@ $myDisks = array_filter(array_diff(array_keys($disks), explode(',',$var['shareUs
<?endif;?>
<div id="" class="clone1">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left clone"></i>
<select name="readshare" size="1" class="clone" onchange="toggleButton('readshare',false)">
<span class="clone">Read settings from</span><i class="fa fa-arrow-left fa-fw"></i>
<span class="wrap"><select name="readshare" size="1" class="clone" onchange="toggleButton('readshare',false)">
<option disabled selected>select...</option>
<?
foreach ($shares as $list) if ($list['name']!=$name || !$name) echo mk_option("", $list['name'], $list['name']);
?>
</select><input type="button" id="readshare" value="Read" class="clone" onclick="readShare()" disabled>
</select></span><input type="button" id="readshare" value="Read" class="clone" onclick="readShare()" disabled>
</div>
<?if ($name):?>
<div id="" class="clone2">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right clone"></i>
<select id="s3" name="writeshare" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeshare',this.id)">
<span class="clone">Write settings to</span><i class="fa fa-arrow-right fa-fw"></i>
<span class="wrap"><select id="s3" name="writeshare" size="1" multiple="multiple" style="display:none" onchange="toggleButton('writeshare',this.id)">
<?
$rows = [];
foreach ($shares as $list) if ($list['name']!=$name) $rows[] = mk_option("", $list['name'], $list['name']);
if ($rows) echo "<option>(All)</option>";
foreach ($rows as $row) echo $row;
?>
</select><input type="button" id="writeshare" value="Write" class="clone" onclick="writeShare()" disabled>
</select></span><input type="button" id="writeshare" value="Write" class="clone" onclick="writeShare()" disabled>
</div>
<?endif;?>
@@ -372,23 +372,34 @@ function readShare() {
});
$(form).find('select').trigger('change');
}
function writeShare() {
var data = {}, copied = false;
data.shareAllocator = '<?=addslashes(htmlspecialchars($share['allocator']))?>';
data.shareFloor = '<?=addslashes(htmlspecialchars($share['floor']))?>';
data.shareSplitLevel = '<?=addslashes(htmlspecialchars($share['splitLevel']))?>';
data.shareInclude = '<?=addslashes(htmlspecialchars($share['include']))?>';
data.shareExclude = '<?=addslashes(htmlspecialchars($share['exclude']))?>';
data.shareUseCache = '<?=addslashes(htmlspecialchars($share['useCache']))?>';
data.cmdEditShare = 'Apply';
$('select#s3 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data.shareNameOrig = $(this).val();
data.shareName = $(this).val();
$.post('/update.htm', data);
copied = true;
function writeShare(data,n,i) {
if (data) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){writeShare(data,++n,i);},3000);});
} else {
toggleButton('writeshare',false);
$('div.spinner.fixed').hide();
}
});
if (copied) swal({title:'Clone complete',text:'Share settings are cloned to the selected shares',type:'success'},function(){refresh();});
} else {
var data = [], i = 0;
$('select#s3 option').map(function() {
if ($(this).prop('selected')==true && $(this).val()!='(All)') {
data[i] = {};
data[i]['shareName'] = $(this).val();
data[i]['shareNameOrig'] = $(this).val();
data[i]['shareAllocator'] = '<?=addslashes(htmlspecialchars($share['allocator']))?>';
data[i]['shareFloor'] = '<?=addslashes(htmlspecialchars($share['floor']))?>';
data[i]['shareSplitLevel'] = '<?=addslashes(htmlspecialchars($share['splitLevel']))?>';
data[i]['shareInclude'] = '<?=addslashes(htmlspecialchars($share['include']))?>';
data[i]['shareExclude'] = '<?=addslashes(htmlspecialchars($share['exclude']))?>';
data[i]['shareUseCache'] = '<?=addslashes(htmlspecialchars($share['useCache']))?>';
data[i]['cmdEditShare'] = 'Apply';
i++;
}
});
toggleButton('writeshare',true);
$('div.spinner.fixed').show('slow');
writeShare(data,0,i);
}
}
</script>

View File

@@ -3,8 +3,8 @@ Title="Edit User"
Tag="user"
---
<?PHP
/* Copyright 2005-2019, Lime Technology
* Copyright 2012-2019, Bergware International.
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -198,12 +198,11 @@ function updateAccess(form,data,n,i) {
if (n<i) {
$.post('/update.htm',data[n], function(){setTimeout(function(){updateAccess(form,data,++n,i);},3000);});
} else {
$('div.spinner').html(unraid_logo).hide();
$('div.spinner.fixed').hide();
$('input[value="Reset"]').val('Done').prop('disabled',false).prop('onclick',null).off('click').click(function(){done('UserEdit');});
}
} else {
var data = [];
var i = 0;
var data = [], i = 0;
$(form).find('select').each(function(){
if ($(this).prop('id')) {
var share = decodeURI($(this).prop('id'));
@@ -235,7 +234,7 @@ function updateAccess(form,data,n,i) {
}
});
$(form).find('input').prop('disabled',true);
$('div.spinner').html(unraid_logo).show();
$('div.spinner.fixed').show();
updateAccess(form,data,0,i);
}
}