summaryrefslogtreecommitdiffstats
path: root/debian/addshare.py
diff options
context:
space:
mode:
Diffstat (limited to 'debian/addshare.py')
-rwxr-xr-xdebian/addshare.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/debian/addshare.py b/debian/addshare.py
new file mode 100755
index 0000000..8b5e3c4
--- /dev/null
+++ b/debian/addshare.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python3
+# Helper to add a share in the samba configuration file
+# Eventually this should be replaced by a call to samba-tool, but
+# for the moment that doesn't support setting individual configuration options.
+
+import optparse
+import os
+import re
+import shutil
+import stat
+import sys
+import tempfile
+
+parser = optparse.OptionParser()
+parser.add_option("--configfile", type=str, metavar="CONFFILE",
+ help="Configuration file to use", default="/etc/samba/smb.conf")
+
+(opts, args) = parser.parse_args()
+if len(args) != 2:
+ parser.print_usage()
+
+(share, path) = args
+done = False
+
+inf = open(opts.configfile, 'r')
+(fd, fn) = tempfile.mkstemp()
+outf = os.fdopen(fd, 'w')
+
+for l in inf.readlines():
+ m = re.match(r"^\s*\[([^]]+)\]$", l)
+ if m:
+ name = m.groups(1)[0]
+ if name.lower() == share.lower():
+ sys.exit(0)
+ outf.write(l)
+
+if not os.path.isdir(path):
+ os.makedirs(path)
+outf.write("[%s]\n" % share)
+outf.write(" path = %s\n" % path)
+outf.write(" read only = no\n")
+outf.write("\n")
+
+os.fchmod(fd, stat.S_IMODE(os.stat(opts.configfile).st_mode))
+outf.close()
+shutil.move(fn, opts.configfile)