mirror of
https://github.com/samba-team/samba.git
synced 2025-06-07 03:17:08 +03:00
This patch adds the LDF files corresponding to the changes that the Windows Adprep.exe tool makes when upgrading a AD schema to Windows 2012R2. This is based on information Microsoft has made public on github (Schema-Updates.md - see the README.txt for more details). The LDF files 48-56 are for upgrading to Windows Server 2012, and 57-69 are for Windows Server 2012 R2. Unfortunately, the raw LDF information from Microsoft wasn't enough to get the schema working. The .diff files contain changes we needed to make on top of the raw LDF content from Microsoft. The basic steps to regenerate the .LDF files are documented in the README.txt file. The files used to generate the .LDF files are in the WindowsServerDocs/ sub-directory. (The .LDF generation is done at runtime during provision). Signed-off-by: Garming Sam <garming@catalyst.net.nz> Signed-off-by: Tim Beale <timbeale@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
# Create schema.ldif from Github markdown
|
|
#
|
|
# Each LDF section in the markdown file then gets written to a corresponding
|
|
# .LDF output file.
|
|
#
|
|
# Copyright (C) Andrew Bartlett 2017
|
|
#
|
|
# 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 3 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, see <http://www.gnu.org/licenses/>.
|
|
|
|
"""Generate LDIF from Github documentation."""
|
|
|
|
import re
|
|
import os
|
|
import markdown
|
|
import xml.etree.ElementTree as ET
|
|
|
|
def innertext(tag):
|
|
return (tag.text or '') + \
|
|
''.join(innertext(e) for e in tag) + \
|
|
(tag.tail or '')
|
|
|
|
def read_ms_markdown(in_file, out_folder):
|
|
"""Read Github documentation-derived schema files."""
|
|
|
|
with open(in_file) as update_file:
|
|
# Remove any comments from the raw LDF files
|
|
html = markdown.markdown(re.sub(r'(?m)^# .*\n?', '', update_file.read()),
|
|
output_format='xhtml')
|
|
|
|
tree = ET.fromstring('<root>' + html + '</root>')
|
|
|
|
ldf = None
|
|
try:
|
|
for node in tree:
|
|
if node.tag == 'h3':
|
|
if ldf is not None:
|
|
ldf.close()
|
|
|
|
out_path = os.path.join(out_folder, innertext(node).strip())
|
|
ldf = open(out_path, 'w')
|
|
elif node.tag == 'p' and ldf is not None:
|
|
ldf.write(innertext(node).replace('```', '') + '\n')
|
|
finally:
|
|
if ldf is not None:
|
|
ldf.close()
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
|
|
out_folder = ''
|
|
|
|
if len(sys.argv) == 0:
|
|
print >>sys.stderr, "Usage: %s <Schema-Update.md> [<output folder>]" % (sys.argv[0])
|
|
sys.exit(1)
|
|
|
|
in_file = sys.argv[1]
|
|
if len(sys.argv) > 2:
|
|
out_folder = sys.argv[2]
|
|
|
|
read_ms_markdown(in_file, out_folder)
|