diff options
Diffstat (limited to 'applications/luci-app-ksmbd/htdocs/luci-static')
-rw-r--r-- | applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js b/applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js new file mode 100644 index 0000000000..a77e72bcdf --- /dev/null +++ b/applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js @@ -0,0 +1,112 @@ +'use strict'; +'require fs'; +'require form'; +'require tools.widgets as widgets'; + +return L.view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/sbin/block'), null), + L.resolveDefault(fs.stat('/etc/config/fstab'), null), + L.resolveDefault(fs.exec('/usr/sbin/usmbd', ['-V']), {}).then(function(res) { return L.toArray((res.stdout || '').match(/version : (\S+)/))[1] }), + L.resolveDefault(fs.exec('/sbin/modinfo', ['ksmbd']), {}).then(function(res) { return L.toArray((res.stdout || '').match(/version:\t(\S+)/))[1] }), + ]); + }, + render: function(stats) { + var m, s, o, v; + v = ''; + + m = new form.Map('ksmbd', _('Network Shares')); + + if (stats[2]) { + v = stats[2].trim(); + } + if (stats[3]) { + v = v + ' Kmod: ' + stats[3].trim(); + } + s = m.section(form.TypedSection, 'globals', 'Ksmbd: ' + v); + s.anonymous = true; + + s.tab('general', _('General Settings')); + s.tab('template', _('Edit Template')); + + s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface'), + _('Listen only on the given interface or, if unspecified, on lan')); + + o = s.taboption('general', form.Value, 'workgroup', _('Workgroup')); + o.placeholder = 'WORKGROUP'; + + o = s.taboption('general', form.Value, 'description', _('Description')); + o.placeholder = 'Ksmbd on OpenWrt'; + + o = s.taboption('template', form.TextValue, '_tmpl', + _('Edit the template that is used for generating the ksmbd configuration.'), + _("This is the content of the file '/etc/ksmbd/smb.conf.template' from which your ksmbd configuration will be generated. \ + Values enclosed by pipe symbols ('|') should not be changed. They get their values from the 'General Settings' tab.")); + o.rows = 20; + o.cfgvalue = function(section_id) { + return fs.trimmed('/etc/ksmbd/smb.conf.template'); + }; + o.write = function(section_id, formvalue) { + return fs.write('/etc/ksmbd/smb.conf.template', formvalue.trim().replace(/\r\n/g, '\n') + '\n'); + }; + + + s = m.section(form.TableSection, 'share', _('Shared Directories'), + _('Please add directories to share. Each directory refers to a folder on a mounted device.')); + s.anonymous = true; + s.addremove = true; + + s.option(form.Value, 'name', _('Name')); + o = s.option(form.Value, 'path', _('Path')); + if (stats[0] && stats[1]) { + o.titleref = L.url('admin', 'system', 'mounts'); + } + + o = s.option(form.Flag, 'browseable', _('Browse-able')); + o.enabled = 'yes'; + o.disabled = 'no'; + o.default = 'yes'; + + o = s.option(form.Flag, 'read_only', _('Read-only')); + o.enabled = 'yes'; + o.disabled = 'no'; + o.default = 'no'; // smb.conf default is 'yes' + o.rmempty = false; + + s.option(form.Flag, 'force_root', _('Force Root')); + + o = s.option(form.Value, 'users', _('Allowed users')); + o.rmempty = true; + + o = s.option(form.Flag, 'guest_ok', _('Allow guests')); + o.enabled = 'yes'; + o.disabled = 'no'; + o.default = 'yes'; // smb.conf default is 'no' + o.rmempty = false; + + o = s.option(form.Flag, 'inherit_owner', _('Inherit owner')); + o.enabled = 'yes'; + o.disabled = 'no'; + o.default = 'no'; + + o = s.option(form.Flag, 'hide_dot_files', _('Hide dot files')); + o.enabled = 'yes'; + o.disabled = 'no'; + o.default = 'yes'; + + o = s.option(form.Value, 'create_mask', _('Create mask')); + o.maxlength = 4; + o.default = '0666'; // smb.conf default is '0744' + o.placeholder = '0666'; + o.rmempty = false; + + o = s.option(form.Value, 'dir_mask', _('Directory mask')); + o.maxlength = 4; + o.default = '0777'; // smb.conf default is '0755' + o.placeholder = '0777'; + o.rmempty = false; + + return m.render(); + } +}); |