Lines 55-61
tmpFile = '/var/cache/univention-directory-listener/samba-shares.oldObject'
|
Link Here
|
---|
|
55 |
|
55 |
|
56 |
|
56 |
|
57 |
def _validate_smb_share_name(name): |
57 |
def _validate_smb_share_name(name): |
58 |
if len(name) > 80: |
58 |
if not name or len(name) > 80: |
59 |
return False |
59 |
return False |
60 |
illegal_chars = set('\\/[]:|<>+=;,*?"' + ''.join(map(chr, range(0x1F + 1)))) |
60 |
illegal_chars = set('\\/[]:|<>+=;,*?"' + ''.join(map(chr, range(0x1F + 1)))) |
61 |
if set(str(name)) & illegal_chars: |
61 |
if set(str(name)) & illegal_chars: |
Lines 128-134
def handler(dn, new, old, command):
|
Link Here
|
---|
|
128 |
listener.unsetuid() |
128 |
listener.unsetuid() |
129 |
|
129 |
|
130 |
if old: |
130 |
if old: |
131 |
share_name_mapped = urllib.quote(old.get('univentionShareSambaName', [''])[0], safe='') |
131 |
share_name = old.get('univentionShareSambaName', [''])[0] |
|
|
132 |
share_name_mapped = urllib.quote(share_name, safe='') |
132 |
filename = '/etc/samba/shares.conf.d/%s' % (share_name_mapped,) |
133 |
filename = '/etc/samba/shares.conf.d/%s' % (share_name_mapped,) |
133 |
listener.setuid(0) |
134 |
listener.setuid(0) |
134 |
try: |
135 |
try: |
Lines 146-161
def handler(dn, new, old, command):
|
Link Here
|
---|
|
146 |
return (_quote(arg) for arg in args) |
147 |
return (_quote(arg) for arg in args) |
147 |
|
148 |
|
148 |
if new: |
149 |
if new: |
149 |
share_name = new['univentionShareSambaName'][0] |
150 |
share_name = new.get('univentionShareSambaName', [''])[0] |
150 |
share_name_mapped = urllib.quote(share_name, safe='') |
|
|
151 |
filename = '/etc/samba/shares.conf.d/%s' % (share_name_mapped,) |
152 |
if not _validate_smb_share_name(share_name): |
151 |
if not _validate_smb_share_name(share_name): |
153 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.ERROR, "invalid samba share name: %r" % (share_name,)) |
152 |
univention.debug.debug(univention.debug.LISTENER, univention.debug.ERROR, "invalid samba share name: %r" % (share_name,)) |
154 |
return |
153 |
return |
|
|
154 |
share_name_mapped = urllib.quote(share_name, safe='') |
155 |
filename = '/etc/samba/shares.conf.d/%s' % (share_name_mapped,) |
155 |
|
156 |
|
156 |
# important!: createOrRename() checks if the share path is allowed. this must be done prior to writing any files. |
157 |
# important!: createOrRename() checks if the share path is allowed. this must be done prior to writing any files. |
157 |
# try to create directory to share |
158 |
# try to create directory to share |
158 |
if new['univentionShareSambaName'][0] != 'homes': |
159 |
if share_name != 'homes': |
159 |
# object was renamed |
160 |
# object was renamed |
160 |
if not old and oldObject and command == "a": |
161 |
if not old and oldObject and command == "a": |
161 |
old = oldObject |
162 |
old = oldObject |
Lines 173-179
def handler(dn, new, old, command):
|
Link Here
|
---|
|
173 |
fp = open(filename, 'w') |
174 |
fp = open(filename, 'w') |
174 |
|
175 |
|
175 |
print >>fp, '[%s]' % (share_name,) |
176 |
print >>fp, '[%s]' % (share_name,) |
176 |
if new['univentionShareSambaName'][0] != 'homes': |
177 |
if share_name != 'homes': |
177 |
print >>fp, 'path = %s' % _quote(new['univentionSharePath'][0]) |
178 |
print >>fp, 'path = %s' % _quote(new['univentionSharePath'][0]) |
178 |
mapping = [ |
179 |
mapping = [ |
179 |
('description', 'comment'), |
180 |
('description', 'comment'), |