From 0488d64029e282d6f296093573347eb37d416a1b Mon Sep 17 00:00:00 2001 From: James Meyer Date: Mon, 27 Aug 2012 22:35:43 -0500 Subject: LinHES-config: mv_advanced.py nfs and smb now read /etc/storage.d to generate their respective file sharing conf files /etc/storage.d/* files are generated with add_storage.py. --- abs/core/LinHES-config/PKGBUILD | 6 +- abs/core/LinHES-config/mv_advanced.py | 103 ++++++++++++++++++++++++++++------ abs/core/LinHES-config/mv_config.py | 1 + 3 files changed, 90 insertions(+), 20 deletions(-) diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD index 24a6e16..9417079 100755 --- a/abs/core/LinHES-config/PKGBUILD +++ b/abs/core/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-config pkgver=2.3 -pkgrel=86 +pkgrel=88 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config ) pkgdesc="Install and configure your system" depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted' @@ -125,7 +125,7 @@ build() { } md5sums=('fe57dd29e1479073f667a5168b479d7f' 'f33e1a6f7985091b8d47cbaf7433f90f' - '9a942c95d2c5a4fb27713d6e2b633e89' + '3a20fb24a47e3a2afe49f1159551ebaa' '2596460462cf6c889cf8f95485537b20' '985891a43f7c4c983eb2a362162f1a0f' 'd1bb7a1449c44effe9ce7c621ea575a1' @@ -145,7 +145,7 @@ md5sums=('fe57dd29e1479073f667a5168b479d7f' '9151c74fcaf18ec4cf5e757cfdbc7017' '3d1e4a119f38cff0498bf8a67e94e4b3' '71fd2d0d448fc2fcd15415a1beed7109' - 'e9e70a255b2e25e15f89229551c3fbac' + '58fe4ac269ca45a08028786fc0a5f5bc' '65c2dad8748210c3c0098efab377c330' 'b845de3e05c1734cce4b9ac5e8f1baaf' 'e869e2c72212881db1e4fa40b116efe5' diff --git a/abs/core/LinHES-config/mv_advanced.py b/abs/core/LinHES-config/mv_advanced.py index 5ca42de..c90a1eb 100755 --- a/abs/core/LinHES-config/mv_advanced.py +++ b/abs/core/LinHES-config/mv_advanced.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import logging, os, re import mv_common +import glob def setup_pacman(create_link): if create_link: @@ -239,6 +240,7 @@ def setup_mythweb(UseMythWEB): def setup_samba(systemconfig,data_config): mythhome = data_config.MYTHHOME + excludes = data_config.share_exclude_dir if systemconfig.get("UseSamba") == "1": logging.info(" Activating windows file sharing") usersamba=mythhome+"/templates/smb.conf" @@ -294,6 +296,7 @@ def setup_samba(systemconfig,data_config): outline="server string = %s\n" %servername logging.debug(" %s",outline) f.write(outline) + outline="include = %s/templates/user.shares \n" %mythhome f.write(outline) if Samba_media == "1": @@ -303,25 +306,43 @@ def setup_samba(systemconfig,data_config): outline="include = /etc/samba/smb.conf.home\n" f.write(outline) f.close() + logging.info(" Writing smb.conf.media") try: f = open("/etc/samba/smb.conf.media","w") except: - logging.info(" Couldn't open smb.conf.media") + logging.info("* Couldn't open smb.conf.media") return + + shares = scan_for_shares() medialines=''' [%s] -path = %s -public = yes -only guest = yes -writeable = %s -printable = no -force user = mythtv -force group = mythtv -create mask = 0755''' %(data_config.SMEDIA,data_config.DATAMOUNT,smreadonly) - f.write(medialines) - f.close - logging.debug(" %s",medialines) + path = %s + public = yes + only guest = yes + writeable = %s + printable = no + force user = mythtv + force group = mythtv + create mask = 0755\n''' + new_share=[] + excludes + for share in shares: + share_name = share.split("/")[-1] + share_path = share + #new_share.append(medialines %(share_name,share_patch,smreadonly) + f.write(medialines %(share_name,share_path,smreadonly) ) + logging.debug(" %s",medialines %(share_name,share_path,smreadonly) ) + excludeline = ' veto files = ' + for exclude in excludes: + excludeline+= ''' "/%s/" ''' %exclude + + if excludes != []: + f.write( excludeline) + logging.debug(excludeline) + f.write("\n") + + f.close() logging.info(" Writing smb.conf.home") try: f = open("/etc/samba/smb.conf.home","w") @@ -339,7 +360,7 @@ force user = mythtv force group = mythtv create mask = 0755 ''' %(data_config.MYTHHOME,shreadonly) f.write(homelines) - f.close + f.close() logging.debug(" %s",homelines) @@ -356,13 +377,61 @@ create mask = 0755 ''' %(data_config.MYTHHOME,shreadonly) mv_common.pacinstall("smbclient") return -def setup_NFSshares(UseNFS,templatefile): +def scan_for_shares(): + import ConfigParser + config = ConfigParser.RawConfigParser() + file_list=glob.glob("/etc/storage.d/*.conf") + share_list = [] + for conf_file in file_list: + try: + logging.debug(" mv_advanced: reading in %s" %conf_file) + config.read(conf_file) + shareable = config.get('storage','shareable') + if shareable == "True" : + mp = config.get('storage','mountpoint') + share_list.append(mp) + if config.get('storage','mmount') == "True" : + share_list.append("/myth") + except: + logging.debug(" mv_advanced: Couldn't open %s for reading" %conf_file) + + return share_list + +def setup_etc_exports(shares,data_config): + #read in /etc/ exports + conf_file="/etc/exports" + excludes = data_config.share_exclude_dir + new_exports=[] + new_exports.append("#This file was generated by systemconfig.py -m advanced") + new_exports.append("#Use exportfs -arv to reread. \n\n") + + for share in shares: + share_line='''%s *(rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)''' %share + new_exports.append(share_line) + for exclude in excludes: + share_line='''/%s *(noaccess)''' %exclude + new_exports.append(share_line) + try: + logging.info(" writing /etc/exports") + f=open(conf_file,'w') + for line in new_exports: + f.write(line) + f.write("\n") + logging.debug("%s" %line) + f.close() + except: + logging.info("* error writing /etc/exports") + + + +def setup_NFSshares(UseNFS,templatefile,data_config): if UseNFS == "1": logging.info(" Activating NFS server") mv_common.pacinstall("nfs-utils") mv_common.pacinstall("rpcbind") - cmd = '''sed -e "s/REPLACEME/*/g" %s >/etc/exports''' %templatefile - mv_common.runcmd(cmd) + shares = scan_for_shares() + setup_etc_exports(shares,data_config) + mv_common.add_service("nfsd") mv_common.add_service("nfs-common") mv_common.add_service("rpcbind") @@ -420,7 +489,7 @@ def setup_advanced(systemconfig,data_config): setup_mythweb(systemconfig.get("UseMythWEB")) setup_samba(systemconfig,data_config) setup_NFSshares(systemconfig.get("UseNFS"), - systemconfig.get("TEMPLATES")+"/exports.template") + systemconfig.get("TEMPLATES")+"/exports.template",data_config) setup_dyndns(systemconfig.get("DDnsEnable")) logging.info("__End of advanced configuration\n") diff --git a/abs/core/LinHES-config/mv_config.py b/abs/core/LinHES-config/mv_config.py index 2f17be2..4b9b2f3 100755 --- a/abs/core/LinHES-config/mv_config.py +++ b/abs/core/LinHES-config/mv_config.py @@ -12,6 +12,7 @@ BACKUPFILE="mythconverg.sql.gz" BACKUPPATH="/myth/backup/" TEMP_TEMPLATES="/tmp/templates" SMEDIA="myth" +share_exclude_dir=['mysql','srv'] -- cgit v0.12