-
Notifications
You must be signed in to change notification settings - Fork 1
/
sambashares.py
101 lines (87 loc) · 3.04 KB
/
sambashares.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
##
## samba-shares.py
## Author : <shashi@inf.in>
## Started on Tue Dec 2 11:29:05 2008 Shashishekhar S
## $Id$
##
## Copyright (C) 2008 INFORMEDIA
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
from configobj import ConfigObj, SimpleVal
class SambaShares:
def __init__(self):
pass
def addshare(self, name, comment, path, group):
_smb = '/var/tmp/smb.conf'
self.cfg = ConfigObj(_smb)
cfg = self.cfg
section = {
'comment': comment,
'path': '/store/'+path,
'writable': 'yes',
'browseable': 'yes',
'create mask': '0765',
'valid users': '@'+group,
'public': 'yes'
}
cfg[name] = section
cfg.write()
return True
def listshares(self):
_smb = '/var/tmp/smb.conf'
self.cfg = ConfigObj(_smb)
cfg = self.cfg
shares = []
for k in cfg.keys():
if (k != 'global'):
try:
shares.append({'name': k, 'group': cfg[k]['valid users'].replace('@',''), 'path': cfg[k]['path'].replace('/store/','').replace('/','')})
except KeyError:
pass
return shares
def remshare(self, name):
_smb = '/var/tmp/smb.conf'
self.cfg = ConfigObj(_smb)
cfg = self.cfg
cfg.pop(name)
cfg.write()
return True
def modshare(self, name, comment, path, group):
_smb = '/var/tmp/smb.conf'
self.cfg = ConfigObj(_smb)
cfg = self.cfg
cfg[name]['comment'] = comment
cfg[name]['path'] = '/store/'+path
cfg[name]['valid users'] = '@'+group
cfg.write()
return True
def getshare(self, name):
_smb = '/var/tmp/smb.conf'
self.cfg = ConfigObj(_smb)
r = {}
if self.cfg.has_key(name):
r['name'] = name
r['comment'] = self.cfg[name]['comment']
r['path'] = self.cfg[name]['path'].replace('/store/','').replace('/','')
r['group'] = self.cfg[name]['valid users'].replace('@','')
return r
if __name__ == "__main__":
c = SambaShares()
s = c.addshare('SHARE-ONE', 'Example Share', 'one', 'office')
print c.listshares()
s = c.remshare('SHARE-ONE')
print c.listshares()
# t = c.modshare('Backup', 'For Backup', 'backup', 'bigbucks')
print c.listshares()