From c3c418cdb78fb1142ffca1ae9d191c31ae7419ce Mon Sep 17 00:00:00 2001 From: lean Date: Tue, 7 Apr 2020 21:06:50 +0800 Subject: [PATCH] luci-app-cifs-mount: add SMB/CIFS mount luci --- package/lean/luci-app-cifs-mount/Makefile | 18 +++++ .../luasrc/controller/cifs.lua | 13 ++++ .../luasrc/model/cbi/cifs.lua | 62 +++++++++++++++++ .../lean/luci-app-cifs-mount/po/zh-cn/cifs.po | 42 ++++++++++++ .../luci-app-cifs-mount/root/etc/config/cifs | 8 +++ .../luci-app-cifs-mount/root/etc/init.d/cifs | 67 +++++++++++++++++++ .../root/etc/uci-defaults/cifs | 11 +++ 7 files changed, 221 insertions(+) create mode 100644 package/lean/luci-app-cifs-mount/Makefile create mode 100644 package/lean/luci-app-cifs-mount/luasrc/controller/cifs.lua create mode 100644 package/lean/luci-app-cifs-mount/luasrc/model/cbi/cifs.lua create mode 100644 package/lean/luci-app-cifs-mount/po/zh-cn/cifs.po create mode 100644 package/lean/luci-app-cifs-mount/root/etc/config/cifs create mode 100755 package/lean/luci-app-cifs-mount/root/etc/init.d/cifs create mode 100755 package/lean/luci-app-cifs-mount/root/etc/uci-defaults/cifs diff --git a/package/lean/luci-app-cifs-mount/Makefile b/package/lean/luci-app-cifs-mount/Makefile new file mode 100644 index 000000000..448ec6502 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/Makefile @@ -0,0 +1,18 @@ + +# Copyright (C) 2016 Openwrt.org +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI for SMB/CIFS Mount +LUCI_DEPENDS:=+kmod-fs-cifs +kmod-nls-utf8 +LUCI_PKGARCH:=all +PKG_NAME:=luci-app-cifs-mount +PKG_VERSION:=1 +PKG_RELEASE:=6 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/lean/luci-app-cifs-mount/luasrc/controller/cifs.lua b/package/lean/luci-app-cifs-mount/luasrc/controller/cifs.lua new file mode 100644 index 000000000..5164e1f51 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/luasrc/controller/cifs.lua @@ -0,0 +1,13 @@ + +module("luci.controller.cifs", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/cifs") then + return + end + + local page + + page = entry({"admin", "nas", "cifs"}, cbi("cifs"), _("Mount SMB NetShare")) + page.dependent = true +end diff --git a/package/lean/luci-app-cifs-mount/luasrc/model/cbi/cifs.lua b/package/lean/luci-app-cifs-mount/luasrc/model/cbi/cifs.lua new file mode 100644 index 000000000..7af9921b2 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/luasrc/model/cbi/cifs.lua @@ -0,0 +1,62 @@ +local fs = require "nixio.fs" + +m = Map("cifs", translate("Mount SMB/CIFS Netshare"), translate("Mount SMB/CIFS Netshare for OpenWrt")) + +s = m:section(TypedSection, "cifs") +s.anonymous = true + +switch = s:option(Flag, "enabled", translate("Enable")) +switch.rmempty = false + +workgroup = s:option(Value, "workgroup", translate("Workgroup")) +workgroup.default = "WORKGROUP" + +s = m:section(TypedSection, "natshare", translate("CIFS/SMB Netshare")) +s.anonymous = true +s.addremove = true +s.template = "cbi/tblsection" + +server = s:option(Value, "server", translate("Server IP")) +server.size = 12 +server.rmempty = false + +name = s:option(Value, "name", translate("Share Folder")) +name.rmempty = false +name.size = 8 + +pth = s:option(Value, "natpath", translate("Mount Path")) +if nixio.fs.access("/etc/config/fstab") then + pth.titleref = luci.dispatcher.build_url("admin", "system", "fstab") +end +pth.rmempty = false +pth.size = 10 + +smbver = s:option(Value, "smbver", translate("SMB Version")) +smbver.rmempty = false +smbver:value("1.0","SMB v1") +smbver:value("2.0","SMB v2") +smbver:value("3.0","SMB v3") +smbver.default = "2.0" +smbver.size = 3 + +agm = s:option(Value, "agm", translate("Arguments")) +agm:value("ro", translate("Read Only")) +agm:value("rw", translate("Read/Write")) +agm.rmempty = true +agm.default = "ro" + +iocharset = s:option(Value, "iocharset", translate("Charset")) +iocharset:value("utf8", "UTF8") +iocharset.default = "utf8" +iocharset.size = 2 + +users = s:option(Value, "users", translate("User")) +users:value("guest", "Guest") +users.rmempty = true +users.default = "guest" + +pwd = s:option(Value, "pwd", translate("Password")) +pwd.rmempty = true +pwd.size = 8 + +return m diff --git a/package/lean/luci-app-cifs-mount/po/zh-cn/cifs.po b/package/lean/luci-app-cifs-mount/po/zh-cn/cifs.po new file mode 100644 index 000000000..9b3fac947 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/po/zh-cn/cifs.po @@ -0,0 +1,42 @@ +msgid "Mount SMB NetShare" +msgstr "挂载 SMB 网络共享" + +msgid "Mount SMB/CIFS Netshare" +msgstr "挂载 SMB/CIFS 网络共享文件夹" + +msgid "Mount SMB/CIFS Netshare for OpenWrt" +msgstr "可以将 SMB/CIFS 的共享文件夹挂载到本地(修改挂载后,需要重启使用这些文件夹的客户端)" + +msgid "CIFS/SMB Netshare" +msgstr "CIFS/SMB 文件夹共享挂载设置" + +msgid "Server IP" +msgstr "服务器IP" + +msgid "Share Folder" +msgstr "共享文件夹" + +msgid "Mount Path" +msgstr "挂载路径" + +msgid "SMB Version" +msgstr "SMB 版本" + +msgid "Arguments" +msgstr "挂载参数" + +msgid "Charset" +msgstr "字符集" + +msgid "User" +msgstr "用户名" + +msgid "Password" +msgstr "密码" + +msgid "Read Only" +msgstr "只读" + +msgid "Read/Write" +msgstr "可读/写" + diff --git a/package/lean/luci-app-cifs-mount/root/etc/config/cifs b/package/lean/luci-app-cifs-mount/root/etc/config/cifs new file mode 100644 index 000000000..6c34264d0 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/root/etc/config/cifs @@ -0,0 +1,8 @@ + +config cifs + option enabled '0' + option workgroup 'WORKGROUP' + option iocharset 'utf8' + option delay '5' + option mountarea '/mnt' + diff --git a/package/lean/luci-app-cifs-mount/root/etc/init.d/cifs b/package/lean/luci-app-cifs-mount/root/etc/init.d/cifs new file mode 100755 index 000000000..59ffc71d4 --- /dev/null +++ b/package/lean/luci-app-cifs-mount/root/etc/init.d/cifs @@ -0,0 +1,67 @@ +#!/bin/sh /etc/rc.common + +START=45 + +ENABLED=0 +WORKGROUPD=0 +IOCHARSET=0 +GUEST="" +USERS="" +AGM="" + +cifs_header() { + local enabled + local workgroup + + config_get enabled $1 enabled + config_get workgroup $1 workgroup + + ENABLED=$enabled + WORKGROUPD=$workgroup +} + +mount_natshare() { + local server + local name + local natpath + local guest + local users + local pwd + local agm + local iocharset + local smbver + + config_get server $1 server + config_get name $1 name + config_get natpath $1 natpath + config_get guest $1 guest + config_get users $1 users + config_get pwd $1 pwd + config_get agm $1 agm + config_get iocharset $1 iocharset + config_get smbver $1 smbver + + mkdir -p $natpath && chmod 777 $natpath + #echo "mount -t cifs -o vers=$smbver,user=$users,password=$pwd,iocharset=$iocharset,$agm //$server/$name $natpath" + mount -t cifs -o vers=$smbver,user=$users,password=$pwd,iocharset=$iocharset,$agm //$server/$name $natpath +} + +start() { + config_load cifs + config_foreach cifs_header cifs + + if [ $ENABLED == 1 ] + then { + config_foreach mount_natshare natshare + #echo "Cifs Mount succeed." + } + fi +} + +stop() { + mount | grep '//' | awk -F ' ' '{print$3}' | while read line; do + #echo "umount -d -l $line" + umount -d -l $line 2>/dev/null + done +} + diff --git a/package/lean/luci-app-cifs-mount/root/etc/uci-defaults/cifs b/package/lean/luci-app-cifs-mount/root/etc/uci-defaults/cifs new file mode 100755 index 000000000..e5b9843dd --- /dev/null +++ b/package/lean/luci-app-cifs-mount/root/etc/uci-defaults/cifs @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@cifs[-1] + add ucitrack cifs + set ucitrack.@cifs[-1].init=cifs + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0 \ No newline at end of file