yay! SSL gen works.
This commit is contained in:
parent
21fe72818c
commit
c0048b1003
205
bdisk/bSSL.py
205
bdisk/bSSL.py
@ -13,87 +13,182 @@ def verifyCert(cert, key, CA = None):
|
|||||||
try:
|
try:
|
||||||
chk.check_privatekey()
|
chk.check_privatekey()
|
||||||
except OpenSSL.SSL.Error:
|
except OpenSSL.SSL.Error:
|
||||||
exit(("{0}: Key does not match certificate!".format(datetime.datetime.now())))
|
return(False)
|
||||||
|
exit(("{0}: {1} does not match {2}!".format(datetime.datetime.now(), key, cert)))
|
||||||
else:
|
else:
|
||||||
print("{0}: Key verified against certificate successfully.".format(datetime.datetime.now()))
|
print("{0}: {1} verified against {2} successfully.".format(datetime.datetime.now(), key, cert))
|
||||||
|
return(True)
|
||||||
# This is disabled because there doesn't seem to currently be any way
|
# This is disabled because there doesn't seem to currently be any way
|
||||||
# to actually verify certificates against a given CA.
|
# to actually verify certificates against a given CA.
|
||||||
#if CA:
|
#if CA:
|
||||||
# try:
|
# try:
|
||||||
# magic stuff here
|
# magic stuff here
|
||||||
|
|
||||||
def sslCAKey():
|
def sslCAKey(conf):
|
||||||
key = OpenSSL.crypto.PKey()
|
# TODO: use path from conf, even if it doesn't exist?
|
||||||
print("{0}: Generating SSL CA key...".format(datetime.datetime.now()))
|
# if it does, read it into a pkey object
|
||||||
key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096)
|
keyfile = conf['ipxe']['ssl_cakey']
|
||||||
#print OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key)
|
if os.path.isfile(keyfile):
|
||||||
|
try:
|
||||||
|
key = OpenSSL.crypto.load_privatekey(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(keyfile).read())
|
||||||
|
except:
|
||||||
|
exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format(
|
||||||
|
datetime.datetime.now(),
|
||||||
|
keyfile))
|
||||||
|
else:
|
||||||
|
key = OpenSSL.crypto.PKey()
|
||||||
|
print("{0}: Generating SSL CA key...".format(datetime.datetime.now()))
|
||||||
|
key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096)
|
||||||
|
with open(keyfile, 'wb') as f:
|
||||||
|
f.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key))
|
||||||
return(key)
|
return(key)
|
||||||
|
|
||||||
def sslCA(conf, key = None):
|
def sslCA(conf, key = None):
|
||||||
|
# NOTE: 'key' is a pkey OBJECT, not a file.
|
||||||
|
keyfile = conf['ipxe']['ssl_cakey']
|
||||||
|
crtfile = conf['ipxe']['ssl_ca']
|
||||||
if not key:
|
if not key:
|
||||||
|
if os.path.isfile(keyfile):
|
||||||
|
try:
|
||||||
|
key = OpenSSL.crypto.load_privatekey(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(keyfile).read())
|
||||||
|
except:
|
||||||
|
exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format(
|
||||||
|
datetime.datetime.now(),
|
||||||
|
keyfile))
|
||||||
|
else:
|
||||||
|
exit('{0}: ERROR: We need a key to generate a CA certificate!'.format(
|
||||||
|
datetime.datetime.now()))
|
||||||
|
if os.path.isfile(crtfile):
|
||||||
try:
|
try:
|
||||||
key = conf['ipxe']['ssl_cakey']
|
ca = OpenSSL.crypto.load_certificate(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(crtfile).read())
|
||||||
except:
|
except:
|
||||||
exit("{0}: Cannot find a valid CA Key to use.".format(datetime.datetime.now()))
|
exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL certificate.'.format(
|
||||||
domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>',
|
datetime.datetime.now(),
|
||||||
conf['ipxe']['uri'],
|
crtfile))
|
||||||
flags=re.IGNORECASE)).lower()
|
else:
|
||||||
# http://www.pyopenssl.org/en/stable/api/crypto.html#pkey-objects
|
domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>',
|
||||||
# http://docs.ganeti.org/ganeti/2.14/html/design-x509-ca.html
|
conf['ipxe']['uri'],
|
||||||
ca = OpenSSL.crypto.X509()
|
flags=re.IGNORECASE)).lower()
|
||||||
ca.set_version(3)
|
# http://www.pyopenssl.org/en/stable/api/crypto.html#pkey-objects
|
||||||
ca.set_serial_number(1)
|
# http://docs.ganeti.org/ganeti/2.14/html/design-x509-ca.html
|
||||||
ca.get_subject().CN = domain
|
ca = OpenSSL.crypto.X509()
|
||||||
ca.gmtime_adj_notBefore(0)
|
ca.set_version(3)
|
||||||
# valid for ROUGHLY 10 years. years(ish) * days * hours * mins * secs.
|
ca.set_serial_number(1)
|
||||||
# the paramater is in seconds, which is why we need to multiply them all together.
|
#ca.get_subject().CN = domain
|
||||||
ca.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60)
|
ca.get_subject().CN = '{0} CA'.format(conf['bdisk']['name'])
|
||||||
ca.set_issuer(ca.get_subject())
|
ca.gmtime_adj_notBefore(0)
|
||||||
ca.set_pubkey(key)
|
# valid for ROUGHLY 10 years. years(ish) * days * hours * mins * secs.
|
||||||
ca.add_extensions([
|
# the paramater is in seconds, which is why we need to multiply them all together.
|
||||||
OpenSSL.crypto.X509Extension("basicConstraints",
|
ca.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60)
|
||||||
True,
|
ca.set_issuer(ca.get_subject())
|
||||||
"CA:TRUE, pathlen:0"),
|
ca.set_pubkey(key)
|
||||||
OpenSSL.crypto.X509Extension("keyUsage",
|
ca.add_extensions([
|
||||||
True,
|
OpenSSL.crypto.X509Extension(b"basicConstraints",
|
||||||
"keyCertSign, cRLSign"),
|
True,
|
||||||
OpenSSL.crypto.X509Extension("subjectKeyIdentifier",
|
b"CA:TRUE, pathlen:0"),
|
||||||
False,
|
OpenSSL.crypto.X509Extension(b"keyUsage",
|
||||||
"hash",
|
True,
|
||||||
subject = ca),])
|
b"keyCertSign, cRLSign"),
|
||||||
ca.sign(key, "sha512")
|
OpenSSL.crypto.X509Extension(b"subjectKeyIdentifier",
|
||||||
#print OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, ca)
|
False,
|
||||||
|
b"hash",
|
||||||
|
subject = ca),])
|
||||||
|
ca.sign(key, "sha512")
|
||||||
|
with open(crtfile, 'wb') as f:
|
||||||
|
f.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, ca))
|
||||||
return(ca)
|
return(ca)
|
||||||
|
|
||||||
def sslCKey():
|
def sslCKey(conf):
|
||||||
key = OpenSSL.crypto.PKey()
|
keyfile = conf['ipxe']['ssl_key']
|
||||||
print("{0}: Generating SSL Client key...".format(datetime.datetime.now()))
|
if os.path.isfile(keyfile):
|
||||||
key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096)
|
try:
|
||||||
#print OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key)
|
key = OpenSSL.crypto.load_privatekey(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(keyfile).read())
|
||||||
|
except:
|
||||||
|
exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format(
|
||||||
|
datetime.datetime.now(),
|
||||||
|
keyfile))
|
||||||
|
else:
|
||||||
|
key = OpenSSL.crypto.PKey()
|
||||||
|
print("{0}: Generating SSL Client key...".format(datetime.datetime.now()))
|
||||||
|
key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096)
|
||||||
|
with open(keyfile, 'wb') as f:
|
||||||
|
f.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key))
|
||||||
return(key)
|
return(key)
|
||||||
|
|
||||||
def sslCSR(conf, key):
|
def sslCSR(conf, key = None):
|
||||||
|
# NOTE: 'key' is a pkey OBJECT, not a file.
|
||||||
|
keyfile = conf['ipxe']['ssl_key']
|
||||||
|
crtfile = conf['ipxe']['ssl_crt']
|
||||||
|
if not key:
|
||||||
|
if os.path.isfile(keyfile):
|
||||||
|
try:
|
||||||
|
key = OpenSSL.crypto.load_privatekey(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(keyfile).read())
|
||||||
|
except:
|
||||||
|
exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format(
|
||||||
|
datetime.datetime.now(),
|
||||||
|
keyfile))
|
||||||
|
else:
|
||||||
|
exit('{0}: ERROR: We need a key to generate a CSR!'.format(
|
||||||
|
datetime.datetime.now()))
|
||||||
domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>',
|
domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>',
|
||||||
conf['ipxe']['uri'],
|
conf['ipxe']['uri'],
|
||||||
flags=re.IGNORECASE)).lower()
|
flags=re.IGNORECASE)).lower()
|
||||||
csr = OpenSSL.crypto.X509Req()
|
csr = OpenSSL.crypto.X509Req()
|
||||||
csr.get_subject().CN = domain
|
csr.get_subject().CN = domain
|
||||||
|
#req.get_subject().countryName = 'xxx'
|
||||||
|
#req.get_subject().stateOrProvinceName = 'xxx'
|
||||||
|
#req.get_subject().localityName = 'xxx'
|
||||||
|
#req.get_subject().organizationName = 'xxx'
|
||||||
|
#req.get_subject().organizationalUnitName = 'xxx'
|
||||||
csr.set_pubkey(key)
|
csr.set_pubkey(key)
|
||||||
csr.sign(key, "sha512")
|
csr.sign(key, "sha512")
|
||||||
#print OpenSSL.crypto.dump_certificate_request(OpenSSL.crypto.FILETYPE_PEM, req)
|
with open('/tmp/main.csr', 'wb') as f:
|
||||||
|
f.write(OpenSSL.crypto.dump_certificate_request(OpenSSL.crypto.FILETYPE_PEM, csr))
|
||||||
return(csr)
|
return(csr)
|
||||||
|
|
||||||
def sslSign(ca, key, csr):
|
def sslSign(conf, ca, key, csr):
|
||||||
ca_cert = OpenSSL.crypto.load_certificate(ca)
|
#ca_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, ca)
|
||||||
ca_key = OpenSSL.crypto.load_privatekey(key)
|
#ca_key = OpenSSL.crypto.load_privatekey(key)
|
||||||
req = OpenSSL.crypto.load_certificate_request(csr)
|
#req = OpenSSL.crypto.load_certificate_request(csr)
|
||||||
|
csr = OpenSSL.crypto.load_certificate_request(OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open("/tmp/main.csr").read())
|
||||||
cert = OpenSSL.crypto.X509()
|
cert = OpenSSL.crypto.X509()
|
||||||
cert.set_subject(req.get_subject())
|
cert.set_subject(csr.get_subject())
|
||||||
cert.set_serial_number(1)
|
cert.set_serial_number(1)
|
||||||
cert.gmtime_adj_notBefore(0)
|
cert.gmtime_adj_notBefore(0)
|
||||||
cert.gmtime_adj_notAfter(24 * 60 * 60)
|
cert.gmtime_adj_notAfter(24 * 60 * 60)
|
||||||
cert.set_issuer(ca_cert.get_subject())
|
cert.set_issuer(ca.get_subject())
|
||||||
cert.set_pubkey(req.get_pubkey())
|
cert.set_pubkey(csr.get_pubkey())
|
||||||
cert.sign(ca_key, "sha512")
|
#cert.set_pubkey(ca.get_pubkey())
|
||||||
#print OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
|
cert.sign(key, "sha512")
|
||||||
|
with open(conf['ipxe']['ssl_crt'], 'wb') as f:
|
||||||
|
f.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert))
|
||||||
|
return(cert)
|
||||||
|
|
||||||
|
def sslPKI(conf):
|
||||||
|
# run checks for everything, gen what's missing
|
||||||
|
certfile = conf['ipxe']['ssl_crt']
|
||||||
|
key = sslCAKey(conf)
|
||||||
|
ca = sslCA(conf, key = key)
|
||||||
|
ckey = sslCKey(conf)
|
||||||
|
if os.path.isfile(certfile):
|
||||||
|
cert = OpenSSL.crypto.load_certificate(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM,
|
||||||
|
open(certfile).read())
|
||||||
|
if not verifyCert(cert, ckey):
|
||||||
|
csr = sslCSR(conf, ckey)
|
||||||
|
cert = sslSign(conf, ca, key, csr)
|
||||||
|
else:
|
||||||
|
csr = sslCSR(conf, ckey)
|
||||||
|
cert = sslSign(conf, ca, key, csr)
|
||||||
return(cert)
|
return(cert)
|
||||||
|
@ -25,4 +25,6 @@ if __name__ == '__main__':
|
|||||||
build.genUEFI(conf['build'], conf['bdisk'])
|
build.genUEFI(conf['build'], conf['bdisk'])
|
||||||
fulliso = build.genISO(conf)
|
fulliso = build.genISO(conf)
|
||||||
build.displayStats(fulliso)
|
build.displayStats(fulliso)
|
||||||
|
if conf['build']['ipxe']:
|
||||||
|
bSSL.sslPKI(conf)
|
||||||
print('{0}: Finish.'.format(datetime.datetime.now()))
|
print('{0}: Finish.'.format(datetime.datetime.now()))
|
||||||
|
@ -30,9 +30,11 @@ def getConfig(conf_file='/etc/bdisk/build.ini'):
|
|||||||
default_conf_paths = ['/etc/bdisk/build.ini',
|
default_conf_paths = ['/etc/bdisk/build.ini',
|
||||||
'/usr/share/bdisk/build.ini',
|
'/usr/share/bdisk/build.ini',
|
||||||
'/usr/share/bdisk/extra/build.ini',
|
'/usr/share/bdisk/extra/build.ini',
|
||||||
'/usr/share/docs/bdisk/build.ini',
|
'/usr/share/docs/bdisk/build.ini', # this is the preferred installation path for packagers
|
||||||
|
'/usr/local/share/docs/bdisk/build.ini',
|
||||||
'/opt/dev/bdisk/build.ini',
|
'/opt/dev/bdisk/build.ini',
|
||||||
'/opt/dev/bdisk/extra/build.ini']
|
'/opt/dev/bdisk/extra/build.ini',
|
||||||
|
'/opt/dev/bdisk/extra/dist.build.ini']
|
||||||
# if we weren't given one/using the default...
|
# if we weren't given one/using the default...
|
||||||
if conf_file == '/etc/bdisk/build.ini':
|
if conf_file == '/etc/bdisk/build.ini':
|
||||||
if not os.path.isfile(conf_file):
|
if not os.path.isfile(conf_file):
|
||||||
@ -42,6 +44,7 @@ def getConfig(conf_file='/etc/bdisk/build.ini'):
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
conf = conf_file
|
conf = conf_file
|
||||||
|
defconf = '{0}/../extra/dist.build.ini'.format(os.path.dirname(os.path.realpath(__file__)))
|
||||||
if not conf:
|
if not conf:
|
||||||
# okay, so let's check for distributed/"blank" ini's
|
# okay, so let's check for distributed/"blank" ini's
|
||||||
# since we can't seem to find one.
|
# since we can't seem to find one.
|
||||||
@ -50,13 +53,15 @@ def getConfig(conf_file='/etc/bdisk/build.ini'):
|
|||||||
if os.path.isfile(q):
|
if os.path.isfile(q):
|
||||||
conf = q
|
conf = q
|
||||||
break
|
break
|
||||||
return(conf)
|
if os.path.isfile(default_conf_paths[4]):
|
||||||
|
defconf = default_conf_paths[4]
|
||||||
|
confs = [defconf, conf]
|
||||||
|
return(confs)
|
||||||
|
|
||||||
def parseConfig(conf):
|
def parseConfig(confs):
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config._interpolation = configparser.ExtendedInterpolation()
|
config._interpolation = configparser.ExtendedInterpolation()
|
||||||
config.read(conf)
|
config.read(confs)
|
||||||
bdisk_repo_dir = config['build']['basedir']
|
|
||||||
# a dict makes this so much easier.
|
# a dict makes this so much easier.
|
||||||
config_dict = {s:dict(config.items(s)) for s in config.sections()}
|
config_dict = {s:dict(config.items(s)) for s in config.sections()}
|
||||||
# Convert the booleans to pythonic booleans in the dict...
|
# Convert the booleans to pythonic booleans in the dict...
|
||||||
@ -67,7 +72,7 @@ def parseConfig(conf):
|
|||||||
if config_dict['bdisk']['ver'] == '':
|
if config_dict['bdisk']['ver'] == '':
|
||||||
repo = git.Repo(config_dict['build']['basedir'])
|
repo = git.Repo(config_dict['build']['basedir'])
|
||||||
refs = repo.git.describe(repo.head.commit).split('-')
|
refs = repo.git.describe(repo.head.commit).split('-')
|
||||||
config_dict['bdisk']['ver'] = refs[0] + '-' + refs[2]
|
config_dict['bdisk']['ver'] = refs[0] + 'r' + refs[2]
|
||||||
for i in ('http', 'tftp', 'rsync', 'git'):
|
for i in ('http', 'tftp', 'rsync', 'git'):
|
||||||
config_dict['sync'][i] = config['sync'].getboolean(i)
|
config_dict['sync'][i] = config['sync'].getboolean(i)
|
||||||
config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso')
|
config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso')
|
||||||
@ -135,20 +140,4 @@ def parseConfig(conf):
|
|||||||
for x in ('http', 'tftp'):
|
for x in ('http', 'tftp'):
|
||||||
if config_dict['sync'][x]:
|
if config_dict['sync'][x]:
|
||||||
os.makedirs(config_dict[x]['path'], exist_ok = True)
|
os.makedirs(config_dict[x]['path'], exist_ok = True)
|
||||||
# Hoo boy. Now we test paths for SSL in iPXE...
|
|
||||||
if config_dict['build']['ipxe']:
|
|
||||||
if config_dict['ipxe']['ssl_crt']:
|
|
||||||
for x in ('ssl_key', 'ssl_cakey'):
|
|
||||||
if config_dict['ipxe'][x]:
|
|
||||||
if not os.path.isfile(config_dict['ipxe'][x]):
|
|
||||||
exit(('{0}: ERROR: {1} is not an existing file. Check your' +
|
|
||||||
'configuration.').format(
|
|
||||||
datetime.datetime.now(),
|
|
||||||
config_dict['ipxe'][x]))
|
|
||||||
if config_dict['ipxe']['ssl_ca']:
|
|
||||||
if not os.path.isfile(config_dict['ipxe']['ssl_ca']):
|
|
||||||
exit(('{0}: ERROR: {1} is not an existing file. Check your' +
|
|
||||||
'configuration.').format(
|
|
||||||
datetime.datetime.now(),
|
|
||||||
config_dict['ipxe']['ssl_ca']))
|
|
||||||
return(config, config_dict)
|
return(config, config_dict)
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
|
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
|
||||||
<office:meta><meta:creation-date>2016-12-01T11:27:37.665510821</meta:creation-date><dc:date>2016-12-04T05:22:38.498441678</dc:date><meta:editing-duration>PT12H18M12S</meta:editing-duration><meta:editing-cycles>33</meta:editing-cycles><meta:generator>LibreOffice/5.2.3.3$Linux_X86_64 LibreOffice_project/20m0$Build-3</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="5" meta:paragraph-count="49" meta:word-count="695" meta:character-count="4130" meta:non-whitespace-character-count="3475"/></office:meta>
|
<office:meta><meta:creation-date>2016-12-01T11:27:37.665510821</meta:creation-date><dc:date>2016-12-04T05:22:38.498441678</dc:date><meta:editing-duration>PT12H18M12S</meta:editing-duration><meta:editing-cycles>33</meta:editing-cycles><meta:generator>LibreOffice/5.2.3.3$Linux_X86_64 LibreOffice_project/20m0$Build-3</meta:generator><meta:document-statistic meta:character-count="4130" meta:image-count="0" meta:non-whitespace-character-count="3475" meta:object-count="0" meta:page-count="5" meta:paragraph-count="49" meta:table-count="0" meta:word-count="695"/></office:meta>
|
||||||
<office:settings>
|
<office:settings>
|
||||||
<config:config-item-set config:name="ooo:view-settings">
|
<config:config-item-set config:name="ooo:view-settings">
|
||||||
<config:config-item config:name="ViewAreaTop" config:type="long">96203</config:config-item>
|
<config:config-item config:name="ViewAreaTop" config:type="long">93054</config:config-item>
|
||||||
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
|
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
|
||||||
<config:config-item config:name="ViewAreaWidth" config:type="long">40748</config:config-item>
|
<config:config-item config:name="ViewAreaWidth" config:type="long">40748</config:config-item>
|
||||||
<config:config-item config:name="ViewAreaHeight" config:type="long">20719</config:config-item>
|
<config:config-item config:name="ViewAreaHeight" config:type="long">21751</config:config-item>
|
||||||
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
|
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
|
||||||
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
|
||||||
<config:config-item-map-indexed config:name="Views">
|
<config:config-item-map-indexed config:name="Views">
|
||||||
<config:config-item-map-entry>
|
<config:config-item-map-entry>
|
||||||
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
|
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
|
||||||
<config:config-item config:name="ViewLeft" config:type="long">14942</config:config-item>
|
<config:config-item config:name="ViewLeft" config:type="long">11578</config:config-item>
|
||||||
<config:config-item config:name="ViewTop" config:type="long">106932</config:config-item>
|
<config:config-item config:name="ViewTop" config:type="long">3494</config:config-item>
|
||||||
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
|
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
|
||||||
<config:config-item config:name="VisibleTop" config:type="long">96203</config:config-item>
|
<config:config-item config:name="VisibleTop" config:type="long">93054</config:config-item>
|
||||||
<config:config-item config:name="VisibleRight" config:type="long">40746</config:config-item>
|
<config:config-item config:name="VisibleRight" config:type="long">40746</config:config-item>
|
||||||
<config:config-item config:name="VisibleBottom" config:type="long">116919</config:config-item>
|
<config:config-item config:name="VisibleBottom" config:type="long">114803</config:config-item>
|
||||||
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
||||||
<config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
|
<config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
|
||||||
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
|
||||||
@ -69,7 +69,7 @@
|
|||||||
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
|
||||||
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
|
||||||
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
|
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
|
||||||
<config:config-item config:name="Rsid" config:type="int">947814</config:config-item>
|
<config:config-item config:name="Rsid" config:type="int">1037822</config:config-item>
|
||||||
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
|
||||||
<config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
|
<config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
|
||||||
<config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
|
<config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
|
||||||
@ -345,114 +345,96 @@
|
|||||||
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Text_20_body">
|
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||||
<style:text-properties officeooo:paragraph-rsid="0004d562"/>
|
<style:text-properties officeooo:paragraph-rsid="0004d562"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Title" style:master-page-name="">
|
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||||
|
<style:text-properties officeooo:paragraph-rsid="000d91dc"/>
|
||||||
|
</style:style>
|
||||||
|
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||||
|
<style:text-properties officeooo:rsid="000d91dc" officeooo:paragraph-rsid="000d91dc"/>
|
||||||
|
</style:style>
|
||||||
|
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Text_20_body">
|
||||||
|
<style:text-properties officeooo:rsid="000e7666" officeooo:paragraph-rsid="000e7666"/>
|
||||||
|
</style:style>
|
||||||
|
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Title" style:master-page-name="">
|
||||||
<loext:graphic-properties draw:fill="none"/>
|
<loext:graphic-properties draw:fill="none"/>
|
||||||
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false" fo:text-indent="0in" style:auto-text-indent="false" style:page-number="auto" fo:background-color="transparent" fo:keep-with-next="always"/>
|
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false" fo:text-indent="0in" style:auto-text-indent="false" style:page-number="auto" fo:background-color="transparent" fo:keep-with-next="always"/>
|
||||||
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Subtitle">
|
<style:style style:name="P15" style:family="paragraph" style:parent-style-name="Subtitle">
|
||||||
<style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/>
|
<style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Standard">
|
<style:style style:name="P16" style:family="paragraph" style:parent-style-name="Standard">
|
||||||
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
|
<style:style style:name="P17" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
|
||||||
<style:paragraph-properties style:page-number="auto"/>
|
<style:paragraph-properties style:page-number="auto"/>
|
||||||
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P15" style:family="paragraph" style:parent-style-name="Contents_20_Heading">
|
<style:style style:name="P18" style:family="paragraph" style:parent-style-name="Contents_20_Heading">
|
||||||
<style:paragraph-properties fo:break-before="page"/>
|
<style:paragraph-properties fo:break-before="page"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P16" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
<style:style style:name="P19" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||||
<style:paragraph-properties fo:break-before="page"/>
|
<style:paragraph-properties fo:break-before="page"/>
|
||||||
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P17" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
<style:style style:name="P20" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
||||||
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P18" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
<style:style style:name="P21" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
||||||
<style:text-properties officeooo:paragraph-rsid="0002592b"/>
|
<style:text-properties officeooo:paragraph-rsid="0002592b"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P19" style:family="paragraph" style:parent-style-name="Contents_20_1">
|
<style:style style:name="P22" style:family="paragraph" style:parent-style-name="Contents_20_1">
|
||||||
<style:paragraph-properties>
|
<style:paragraph-properties>
|
||||||
<style:tab-stops>
|
<style:tab-stops>
|
||||||
<style:tab-stop style:position="6.9252in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
<style:tab-stop style:position="6.9252in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
||||||
</style:tab-stops>
|
</style:tab-stops>
|
||||||
</style:paragraph-properties>
|
</style:paragraph-properties>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P20" style:family="paragraph" style:parent-style-name="Heading_20_3">
|
<style:style style:name="P23" style:family="paragraph" style:parent-style-name="Heading_20_3">
|
||||||
<style:text-properties officeooo:rsid="0004d562" officeooo:paragraph-rsid="0004d562"/>
|
<style:text-properties officeooo:rsid="0004d562" officeooo:paragraph-rsid="0004d562"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P21" style:family="paragraph" style:parent-style-name="Contents_20_2">
|
<style:style style:name="P24" style:family="paragraph" style:parent-style-name="Contents_20_2">
|
||||||
<style:paragraph-properties>
|
<style:paragraph-properties>
|
||||||
<style:tab-stops>
|
<style:tab-stops>
|
||||||
<style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
<style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
||||||
</style:tab-stops>
|
</style:tab-stops>
|
||||||
</style:paragraph-properties>
|
</style:paragraph-properties>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P22" style:family="paragraph" style:parent-style-name="Contents_20_3">
|
<style:style style:name="P25" style:family="paragraph" style:parent-style-name="Contents_20_3">
|
||||||
<style:paragraph-properties>
|
<style:paragraph-properties>
|
||||||
<style:tab-stops>
|
<style:tab-stops>
|
||||||
<style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
<style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
||||||
</style:tab-stops>
|
</style:tab-stops>
|
||||||
</style:paragraph-properties>
|
</style:paragraph-properties>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P23" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="First_20_Page">
|
<style:style style:name="P26" style:family="paragraph" style:parent-style-name="Footnote">
|
||||||
|
<style:text-properties fo:font-weight="bold" officeooo:rsid="00087adf" officeooo:paragraph-rsid="00087adf" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||||
|
</style:style>
|
||||||
|
<style:style style:name="P27" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="First_20_Page">
|
||||||
<style:paragraph-properties style:page-number="auto"/>
|
<style:paragraph-properties style:page-number="auto"/>
|
||||||
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P24" style:family="paragraph" style:parent-style-name="Text_20_body">
|
<style:style style:name="P28" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
||||||
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P25" style:family="paragraph" style:parent-style-name="Text_20_body">
|
|
||||||
<style:text-properties officeooo:paragraph-rsid="000d91dc"/>
|
<style:text-properties officeooo:paragraph-rsid="000d91dc"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P26" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
<style:style style:name="P29" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
||||||
<style:text-properties officeooo:paragraph-rsid="000d91dc"/>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P27" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
|
||||||
<style:text-properties officeooo:rsid="000d91dc" officeooo:paragraph-rsid="000d91dc"/>
|
<style:text-properties officeooo:rsid="000d91dc" officeooo:paragraph-rsid="000d91dc"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P28" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
<style:style style:name="P30" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
||||||
<style:text-properties officeooo:rsid="000e7666" officeooo:paragraph-rsid="000e7666"/>
|
<style:text-properties officeooo:rsid="000e7666" officeooo:paragraph-rsid="000e7666"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P29" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
<style:style style:name="P31" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
|
||||||
|
<style:text-properties fo:font-style="normal" style:text-underline-style="none" fo:font-weight="normal" officeooo:rsid="000e7666" officeooo:paragraph-rsid="000e7666" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/>
|
||||||
|
</style:style>
|
||||||
|
<style:style style:name="P32" style:family="paragraph" style:parent-style-name="Heading_20_2">
|
||||||
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P30" style:family="paragraph" style:parent-style-name="Contents_20_Heading">
|
<style:style style:name="P33" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
||||||
<style:paragraph-properties fo:break-before="page"/>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P31" style:family="paragraph" style:parent-style-name="Heading_20_1">
|
|
||||||
<style:paragraph-properties fo:break-before="page"/>
|
<style:paragraph-properties fo:break-before="page"/>
|
||||||
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P32" style:family="paragraph" style:parent-style-name="Contents_20_1">
|
<style:style style:name="P34" style:family="paragraph" style:parent-style-name="Heading_20_3">
|
||||||
<style:paragraph-properties>
|
|
||||||
<style:tab-stops>
|
|
||||||
<style:tab-stop style:position="6.9252in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
|
||||||
</style:tab-stops>
|
|
||||||
</style:paragraph-properties>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P33" style:family="paragraph" style:parent-style-name="Heading_20_3">
|
|
||||||
<style:text-properties officeooo:rsid="0004d562" officeooo:paragraph-rsid="0004d562"/>
|
<style:text-properties officeooo:rsid="0004d562" officeooo:paragraph-rsid="0004d562"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
<style:style style:name="P34" style:family="paragraph" style:parent-style-name="Contents_20_3">
|
|
||||||
<style:paragraph-properties>
|
|
||||||
<style:tab-stops>
|
|
||||||
<style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
|
||||||
</style:tab-stops>
|
|
||||||
</style:paragraph-properties>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P35" style:family="paragraph" style:parent-style-name="Contents_20_2">
|
|
||||||
<style:paragraph-properties>
|
|
||||||
<style:tab-stops>
|
|
||||||
<style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
|
|
||||||
</style:tab-stops>
|
|
||||||
</style:paragraph-properties>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="P36" style:family="paragraph" style:parent-style-name="Footnote">
|
|
||||||
<style:text-properties fo:font-weight="bold" officeooo:rsid="00087adf" officeooo:paragraph-rsid="00087adf" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
|
||||||
</style:style>
|
|
||||||
<style:style style:name="T1" style:family="text">
|
<style:style style:name="T1" style:family="text">
|
||||||
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
|
||||||
</style:style>
|
</style:style>
|
||||||
@ -668,13 +650,13 @@
|
|||||||
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
|
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
|
||||||
</text:sequence-decls><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="page" text:anchor-page-number="1" svg:x="1in" svg:width="6.4374in" draw:z-index="0">
|
</text:sequence-decls><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="page" text:anchor-page-number="1" svg:x="1in" svg:width="6.4374in" draw:z-index="0">
|
||||||
<draw:text-box fo:min-height="0.2in">
|
<draw:text-box fo:min-height="0.2in">
|
||||||
<text:p text:style-name="P11">BDISK</text:p>
|
<text:p text:style-name="P14">BDISK</text:p>
|
||||||
<text:p text:style-name="P12">Manual v1.0</text:p>
|
<text:p text:style-name="P15">Manual v1.0</text:p>
|
||||||
<text:p text:style-name="P5">Brent Saner</text:p>
|
<text:p text:style-name="P5">Brent Saner</text:p>
|
||||||
<text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=BDisk%20Manual" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">bts@square-r00t.net</text:a></text:p>
|
<text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=BDisk%20Manual" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">bts@square-r00t.net</text:a></text:p>
|
||||||
</draw:text-box>
|
</draw:text-box>
|
||||||
</draw:frame>
|
</draw:frame>
|
||||||
<text:p text:style-name="P23"/>
|
<text:p text:style-name="P27"/>
|
||||||
<text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1">
|
<text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1">
|
||||||
<text:table-of-content-source text:outline-level="10">
|
<text:table-of-content-source text:outline-level="10">
|
||||||
<text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template>
|
<text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template>
|
||||||
@ -761,87 +743,87 @@
|
|||||||
</text:table-of-content-source>
|
</text:table-of-content-source>
|
||||||
<text:index-body>
|
<text:index-body>
|
||||||
<text:index-title text:style-name="Sect1" text:name="Table of Contents1_Head">
|
<text:index-title text:style-name="Sect1" text:name="Table of Contents1_Head">
|
||||||
<text:p text:style-name="P15">Table of Contents</text:p>
|
<text:p text:style-name="P18">Table of Contents</text:p>
|
||||||
</text:index-title>
|
</text:index-title>
|
||||||
<text:p text:style-name="P32"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc237_1260022884">Chapter I: Introduction<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P22"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc237_1260022884" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">Chapter I: Introduction<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P35"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc254_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.1: What is BDisk?<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P24"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc254_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.1: What is BDisk?<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P35"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc379_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.2: Who wrote it?<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P24"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc379_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.2: Who wrote it?<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P35"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc256_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.3: What is this document?<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P24"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc256_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.3: What is this document?<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P34"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc173_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.3.i: Conventions used in this document<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P25"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc173_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.3.i: Conventions used in this document<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P35"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc258_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.4: Further information/resources<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P24"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc258_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.4: Further information/resources<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P34"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc220_1657685180" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.4.i: For Users<text:tab/>3</text:a></text:p>
|
<text:p text:style-name="P25"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc220_1657685180" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.4.i: For Users<text:tab/>3</text:a></text:p>
|
||||||
<text:p text:style-name="P34"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc175_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.4.ii: For Developers<text:tab/>4</text:a></text:p>
|
<text:p text:style-name="P25"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc175_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.4.ii: For Developers<text:tab/>4</text:a></text:p>
|
||||||
<text:p text:style-name="P32"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc232_667539389">Chapter II: Getting Started<text:tab/>4</text:a></text:p>
|
<text:p text:style-name="P22"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc232_667539389" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">Chapter II: Getting Started<text:tab/>4</text:a></text:p>
|
||||||
</text:index-body>
|
</text:index-body>
|
||||||
</text:table-of-content>
|
</text:table-of-content>
|
||||||
<text:p text:style-name="P13"/>
|
<text:p text:style-name="P16"/>
|
||||||
<text:h text:style-name="P16" text:outline-level="1"><text:bookmark-start text:name="__RefHeading___Toc237_1260022884"/>Introduction<text:bookmark-end text:name="__RefHeading___Toc237_1260022884"/></text:h>
|
<text:h text:style-name="P19" text:outline-level="1"><text:bookmark-start text:name="__RefHeading___Toc237_1260022884"/>Introduction<text:bookmark-end text:name="__RefHeading___Toc237_1260022884"/></text:h>
|
||||||
<text:h text:style-name="P17" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc254_1260022884"/>What is BDisk?<text:bookmark-end text:name="__RefHeading___Toc254_1260022884"/></text:h>
|
<text:h text:style-name="P20" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc254_1260022884"/>What is BDisk?<text:bookmark-end text:name="__RefHeading___Toc254_1260022884"/></text:h>
|
||||||
<text:p text:style-name="P6"><text:tab/>BDisk refers to both a live distribution I use in my own uses (for rescue situations, recovery, etc.) but foremost and most importantly, it refers to the tool I use for <text:span text:style-name="T1">building</text:span><text:span text:style-name="T3"> that distribution. This is what this project and documentation refer to when the word “BDisk” is used.</text:span></text:p>
|
<text:p text:style-name="P6"><text:tab/>BDisk refers to both a live distribution I use in my own uses (for rescue situations, recovery, etc.) but foremost and most importantly, it refers to the tool I use for <text:span text:style-name="T1">building</text:span><text:span text:style-name="T3"> that distribution. This is what this project and documentation refer to when the word “BDisk” is used.</text:span></text:p>
|
||||||
<text:p text:style-name="First_20_line_20_indent"><text:tab/>BDisk is <text:a xlink:type="simple" xlink:href="https://www.gnu.org/licenses/gpl-3.0.en.html" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">GPLv3</text:a>-licensed. This means that you can use it for business reasons, personal reasons, modify it, etc. There are a few restrictions I retain, however, on this (don’t worry; they’re all in line with the GPLv3). You can find the full license in <text:span text:style-name="T1">docs/LICENSE</text:span>.</text:p>
|
<text:p text:style-name="First_20_line_20_indent"><text:tab/>BDisk is <text:a xlink:type="simple" xlink:href="https://www.gnu.org/licenses/gpl-3.0.en.html" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">GPLv3</text:a>-licensed. This means that you can use it for business reasons, personal reasons, modify it, etc. There are a few restrictions I retain, however, on this (don’t worry; they’re all in line with the GPLv3). You can find the full license in <text:span text:style-name="T1">docs/LICENSE</text:span>.</text:p>
|
||||||
<text:p text:style-name="P7"><text:span text:style-name="T18"><text:tab/></text:span><text:span text:style-name="T19">When I rewrote BDisk in Python 3.x (I should take the time to note that I am still quite new to python so expect there to be plenty of optimizations to be made and general WTF-ery from seasoned python developers), one of my main goals was to make it as easy to use as possible. This is surprisingly hard to do- it’s quite challenging to try to approach software you’ve written with the mindset of someone other than you. Please see </text:span><text:span text:style-name="T20">the</text:span><text:span text:style-name="T19"> </text:span><text:span text:style-name="T9"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading___Toc220_1657685180">For Users</text:bookmark-ref></text:span><text:span text:style-name="T19"> </text:span><text:span text:style-name="T20">section (</text:span><text:span text:style-name="T20"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading___Toc220_1657685180">I.4.i</text:bookmark-ref></text:span><text:span text:style-name="T20">).</text:span></text:p>
|
<text:p text:style-name="P7"><text:span text:style-name="T18"><text:tab/></text:span><text:span text:style-name="T19">When I rewrote BDisk in Python 3.x (I should take the time to note that I am still quite new to python so expect there to be plenty of optimizations to be made and general WTF-ery from seasoned python developers), one of my main goals was to make it as easy to use as possible. This is surprisingly hard to do- it’s quite challenging to try to approach software you’ve written with the mindset of someone other than you. Please see </text:span><text:span text:style-name="T20">the</text:span><text:span text:style-name="T19"> </text:span><text:span text:style-name="T9"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading___Toc220_1657685180">For Users</text:bookmark-ref></text:span><text:span text:style-name="T19"> </text:span><text:span text:style-name="T20">section (</text:span><text:span text:style-name="T20"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading___Toc220_1657685180">I.4.i</text:bookmark-ref></text:span><text:span text:style-name="T20">).</text:span></text:p>
|
||||||
<text:h text:style-name="P17" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc379_1260022884"/>Who wrote it?<text:bookmark-end text:name="__RefHeading___Toc379_1260022884"/></text:h>
|
<text:h text:style-name="P20" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc379_1260022884"/>Who wrote it?<text:bookmark-end text:name="__RefHeading___Toc379_1260022884"/></text:h>
|
||||||
<text:p text:style-name="P6"><text:tab/>I (Brent Saner) am a GNU/Linux Systems/Network Administrator/Engineer- I wear a lot of hats. I have a lot of side projects to keep me busy when I’m not working at <text:span text:style-name="T7">${dayjob}</text:span><text:span text:style-name="T17">, </text:span><text:span text:style-name="T18">mostly to assist in </text:span><text:span text:style-name="T8">other</text:span><text:span text:style-name="T18"> side projects and become more efficient and proficient </text:span><text:span text:style-name="T19">at those tasks. “</text:span><text:a xlink:type="simple" xlink:href="http://catb.org/jargon/html/Y/yak-shaving.html" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T19">Shaving the yak</text:span></text:a><text:span text:style-name="T19">,” indeed.</text:span></text:p>
|
<text:p text:style-name="P6"><text:tab/>I (Brent Saner) am a GNU/Linux Systems/Network Administrator/Engineer- I wear a lot of hats. I have a lot of side projects to keep me busy when I’m not working at <text:span text:style-name="T7">${dayjob}</text:span><text:span text:style-name="T17">, </text:span><text:span text:style-name="T18">mostly to assist in </text:span><text:span text:style-name="T8">other</text:span><text:span text:style-name="T18"> side projects and become more efficient and proficient </text:span><text:span text:style-name="T19">at those tasks. “</text:span><text:a xlink:type="simple" xlink:href="http://catb.org/jargon/html/Y/yak-shaving.html" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T19">Shaving the yak</text:span></text:a><text:span text:style-name="T19">,” indeed.</text:span></text:p>
|
||||||
<text:p text:style-name="P6"><text:span text:style-name="T19"><text:tab/></text:span><text:span text:style-name="T20">I did a lot of research into how low-level boot operations take place, both in BIOS and UEFI</text:span><text:span text:style-name="T20"><text:note text:id="ftn1" text:note-class="footnote"><text:note-citation>1</text:note-citation><text:note-body>
|
<text:p text:style-name="P6"><text:span text:style-name="T19"><text:tab/></text:span><text:span text:style-name="T20">I did a lot of research into how low-level boot operations take place, both in BIOS and UEFI</text:span><text:span text:style-name="T20"><text:note text:id="ftn1" text:note-class="footnote"><text:note-citation>1</text:note-citation><text:note-body>
|
||||||
<text:p text:style-name="P36">Unified Extensible Firmware Interface<text:span text:style-name="T3">. UEFI </text:span><text:span text:style-name="T14">is not</text:span><text:span text:style-name="T24"> BIOS, and BIOS </text:span><text:span text:style-name="T14">is not</text:span><text:span text:style-name="T24"> UEFI.</text:span></text:p></text:note-body></text:note></text:span><text:span text:style-name="T20"> (and corresponding concepts such as Secureboot, etc.) which is no easy task to understand and very commonly misunderstood. (For instance, a common misconception is that UEFI necessarily implies Secureboot. This is quite far from the truth and UEFI by itself is quite a useful replacement for BIOS). Many of these misconceptions are simply due to lack of knowledge about the intricacies and complexities behind these technologies. Some of it is simply FUD</text:span><text:span text:style-name="T25"><text:note text:id="ftn0" text:note-class="footnote"><text:note-citation>2</text:note-citation><text:note-body>
|
<text:p text:style-name="P26">Unified Extensible Firmware Interface<text:span text:style-name="T3">. UEFI </text:span><text:span text:style-name="T14">is not</text:span><text:span text:style-name="T24"> BIOS, and BIOS </text:span><text:span text:style-name="T14">is not</text:span><text:span text:style-name="T24"> UEFI.</text:span></text:p></text:note-body></text:note></text:span><text:span text:style-name="T20"> (and corresponding concepts such as Secureboot, etc.) which is no easy task to understand and very commonly misunderstood. (For instance, a common misconception is that UEFI necessarily implies Secureboot. This is quite far from the truth and UEFI by itself is quite a useful replacement for BIOS). Many of these misconceptions are simply due to lack of knowledge about the intricacies and complexities behind these technologies. Some of it is simply FUD</text:span><text:span text:style-name="T25"><text:note text:id="ftn2" text:note-class="footnote"><text:note-citation>2</text:note-citation><text:note-body>
|
||||||
<text:p text:style-name="P36">Fear, Uncertainty, Doubt<text:span text:style-name="T3">- propaganda, in other words.</text:span></text:p></text:note-body></text:note></text:span><text:span text:style-name="T25"> generated to prey on the fears of those who don’t understand the underlying specifications or technology.</text:span></text:p>
|
<text:p text:style-name="P26">Fear, Uncertainty, Doubt<text:span text:style-name="T3">- propaganda, in other words.</text:span></text:p></text:note-body></text:note></text:span><text:span text:style-name="T25"> generated to prey on the fears of those who don’t understand the underlying specifications or technology.</text:span></text:p>
|
||||||
<text:p text:style-name="P6"><text:soft-page-break/><text:span text:style-name="T19"><text:tab/></text:span><text:span text:style-name="T20">It’s my hope that by releasing this utility and documenting it that you can use it and save some time for yourself as well </text:span><text:span text:style-name="T21">(and hopefully get the chance to learn a bit more in the process!)</text:span><text:span text:style-name="T20">. </text:span></text:p>
|
<text:p text:style-name="P6"><text:soft-page-break/><text:span text:style-name="T19"><text:tab/></text:span><text:span text:style-name="T20">It’s my hope that by releasing this utility and documenting it that you can use it and save some time for yourself as well </text:span><text:span text:style-name="T21">(and hopefully get the chance to learn a bit more in the process!)</text:span><text:span text:style-name="T20">. </text:span></text:p>
|
||||||
<text:h text:style-name="P17" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc256_1260022884"/>What is this document?<text:bookmark-end text:name="__RefHeading___Toc256_1260022884"/></text:h>
|
<text:h text:style-name="P20" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc256_1260022884"/>What is this document?<text:bookmark-end text:name="__RefHeading___Toc256_1260022884"/></text:h>
|
||||||
<text:p text:style-name="P8"><text:tab/><text:span text:style-name="T34">This document is intended to be an indexed and easier-to-use reference than the other plaintext files (in </text:span><text:span text:style-name="T2">docs/</text:span><text:span text:style-name="T6">). </text:span></text:p>
|
<text:p text:style-name="P8"><text:tab/><text:span text:style-name="T34">This document is intended to be an indexed and easier-to-use reference than the other plaintext files (in </text:span><text:span text:style-name="T2">docs/</text:span><text:span text:style-name="T6">). </text:span></text:p>
|
||||||
<text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc173_449581326"/>Conventions used in this document<text:bookmark-end text:name="__RefHeading___Toc173_449581326"/></text:h>
|
<text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc173_449581326"/>Conventions used in this document<text:bookmark-end text:name="__RefHeading___Toc173_449581326"/></text:h>
|
||||||
<text:p text:style-name="P25"><text:tab/><text:span text:style-name="T35">There are certain formats used in this document to specify what type of text they are representing.</text:span></text:p>
|
<text:p text:style-name="P11"><text:tab/><text:span text:style-name="T35">There are certain formats used in this document to specify what type of text they are representing.</text:span></text:p>
|
||||||
<text:list xml:id="list4863602129491927673" text:style-name="L1">
|
<text:list xml:id="list4073382874348611620" text:style-name="L1">
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P26"><text:span text:style-name="T35">Commands will be </text:span><text:span text:style-name="T10">in italics</text:span><text:span text:style-name="T20">.</text:span></text:p>
|
<text:p text:style-name="P28"><text:span text:style-name="T35">Commands will be </text:span><text:span text:style-name="T10">in italics</text:span><text:span text:style-name="T20">.</text:span></text:p>
|
||||||
<text:list>
|
<text:list>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P26"><text:span text:style-name="T21">e.g. </text:span><text:span text:style-name="T11">cat /tmp/file.txt</text:span></text:p>
|
<text:p text:style-name="P28"><text:span text:style-name="T21">e.g. </text:span><text:span text:style-name="T11">cat /tmp/file.txt</text:span></text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P26"><text:span text:style-name="T20">Paths (files, directories) will be </text:span><text:span text:style-name="T22">in bold</text:span><text:span text:style-name="T25"> </text:span><text:span text:style-name="T27">(unless part of a command, output, etc.)</text:span><text:span text:style-name="T15">.</text:span></text:p>
|
<text:p text:style-name="P28"><text:span text:style-name="T20">Paths (files, directories) will be </text:span><text:span text:style-name="T22">in bold</text:span><text:span text:style-name="T25"> </text:span><text:span text:style-name="T27">(unless part of a command, output, etc.)</text:span><text:span text:style-name="T15">.</text:span></text:p>
|
||||||
<text:list>
|
<text:list>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P26"><text:span text:style-name="T26">e.g. </text:span><text:span text:style-name="T15"><text:s/></text:span><text:span text:style-name="T12">/</text:span><text:span text:style-name="T13">tmp/file.txt</text:span></text:p>
|
<text:p text:style-name="P28"><text:span text:style-name="T26">e.g. </text:span><text:span text:style-name="T15"><text:s/></text:span><text:span text:style-name="T12">/</text:span><text:span text:style-name="T13">tmp/file.txt</text:span></text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P27"><text:span text:style-name="T24">Variables will be </text:span><text:span text:style-name="T28">underlined</text:span></text:p>
|
<text:p text:style-name="P29"><text:span text:style-name="T24">Variables will be </text:span><text:span text:style-name="T28">underlined</text:span></text:p>
|
||||||
<text:list>
|
<text:list>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P27"><text:span text:style-name="T30">e.g. print(</text:span><text:span text:style-name="T28">foo</text:span><text:span text:style-name="T30">)</text:span></text:p>
|
<text:p text:style-name="P29"><text:span text:style-name="T30">e.g. print(</text:span><text:span text:style-name="T28">foo</text:span><text:span text:style-name="T30">)</text:span></text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P27"><text:span text:style-name="T30">URLs (hyperlinks, really; you should be able to click on them) are </text:span><text:span text:style-name="T29">bold and underlined</text:span><text:span text:style-name="T30">.</text:span></text:p>
|
<text:p text:style-name="P29"><text:span text:style-name="T30">URLs (hyperlinks, really; you should be able to click on them) are </text:span><text:span text:style-name="T29">bold and underlined</text:span><text:span text:style-name="T30">.</text:span></text:p>
|
||||||
<text:list>
|
<text:list>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P27"><text:span text:style-name="T30">e.g. </text:span><text:a xlink:type="simple" xlink:href="https://bdisk.square-r00t.net/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">https://bdisk.square-r00t.net</text:a></text:p>
|
<text:p text:style-name="P29"><text:span text:style-name="T30">e.g. </text:span><text:a xlink:type="simple" xlink:href="https://bdisk.square-r00t.net/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">https://bdisk.square-r00t.net</text:a></text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P27"><text:span text:style-name="T30">Paramaters/arguments will be either </text:span><text:span text:style-name="T31">in</text:span><text:span text:style-name="T30"> <</text:span><text:span text:style-name="T31">angled brackets>, [square brackets], or [<both>]</text:span></text:p>
|
<text:p text:style-name="P29"><text:span text:style-name="T30">Paramaters/arguments will be either </text:span><text:span text:style-name="T31">in</text:span><text:span text:style-name="T30"> <</text:span><text:span text:style-name="T31">angled brackets>, [square brackets], or [<both>]</text:span></text:p>
|
||||||
<text:list>
|
<text:list>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P28"><text:span text:style-name="T30"><> are used for positional arguments/parameters, or “placeholders”</text:span></text:p>
|
<text:p text:style-name="P31"><> are used for positional arguments/parameters, or “placeholders”</text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P28"><text:span text:style-name="T30">[] are used for optional arguments/parameters</text:span></text:p>
|
<text:p text:style-name="P31">[] are used for optional arguments/parameters</text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
<text:list-item>
|
<text:list-item>
|
||||||
<text:p text:style-name="P28"><text:span text:style-name="T30">Thus e.g. </text:span><text:span text:style-name="T16">someprog –dostuff <stufftodo> [--domorestuff <morestufftodo>]</text:span></text:p>
|
<text:p text:style-name="P30"><text:span text:style-name="T30">Thus e.g. </text:span><text:span text:style-name="T16">someprog –dostuff <stufftodo> [--domorestuff <morestufftodo>]</text:span></text:p>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
</text:list-item>
|
</text:list-item>
|
||||||
</text:list>
|
</text:list>
|
||||||
<text:h text:style-name="P17" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc258_1260022884"/><text:soft-page-break/>Further information/resources<text:bookmark-end text:name="__RefHeading___Toc258_1260022884"/></text:h>
|
<text:h text:style-name="P20" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc258_1260022884"/><text:soft-page-break/>Further information/resources<text:bookmark-end text:name="__RefHeading___Toc258_1260022884"/></text:h>
|
||||||
<text:h text:style-name="P20" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc220_1657685180"/>For Users<text:bookmark-end text:name="__RefHeading___Toc220_1657685180"/></text:h>
|
<text:h text:style-name="P23" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc220_1657685180"/>For Users<text:bookmark-end text:name="__RefHeading___Toc220_1657685180"/></text:h>
|
||||||
<text:p text:style-name="P10"><text:tab/><text:span text:style-name="T33">If you encounter any bugs (or have any suggestions on how to improve BDisk!), please file a bug report in my </text:span><text:a xlink:type="simple" xlink:href="https://bugs.square-r00t.net/index.php?project=2" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T33">bug tracker</text:span></text:a><text:span text:style-name="T33">.</text:span></text:p>
|
<text:p text:style-name="P10"><text:tab/><text:span text:style-name="T33">If you encounter any bugs (or have any suggestions on how to improve BDisk!), please file a bug report in my </text:span><text:a xlink:type="simple" xlink:href="https://bugs.square-r00t.net/index.php?project=2" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T33">bug tracker</text:span></text:a><text:span text:style-name="T33">.</text:span></text:p>
|
||||||
<text:h text:style-name="P20" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc175_449581326"/>For Developers<text:bookmark-end text:name="__RefHeading___Toc175_449581326"/></text:h>
|
<text:h text:style-name="P23" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc175_449581326"/>For Developers<text:bookmark-end text:name="__RefHeading___Toc175_449581326"/></text:h>
|
||||||
<text:p text:style-name="P9"><text:span text:style-name="T4"><text:tab/>The source is available to browse </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">online</text:a><text:span text:style-name="T4"> or can be checked out via </text:span><text:a xlink:type="simple" xlink:href="https://git-scm.com/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git</text:a><text:span text:style-name="T4"> (via the </text:span><text:a xlink:type="simple" xlink:href="git://git.square-r00t.net/bdisk.git" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git protocol</text:a><text:span text:style-name="T4"> or </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">http protocol</text:a><text:span text:style-name="T4">). It is also available via Arch Linux’s </text:span><text:a xlink:type="simple" xlink:href="https://aur.archlinux.org/packages/bdisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">AUR</text:a><text:span text:style-name="T4">. If you are interested in packaging </text:span><text:span text:style-name="T5">BDisk for other distributions, please feel free to </text:span><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=[BDISK]%20Packaging" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">contact me</text:a><text:span text:style-name="T5">.</text:span></text:p>
|
<text:p text:style-name="P9"><text:span text:style-name="T4"><text:tab/>The source is available to browse </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">online</text:a><text:span text:style-name="T4"> or can be checked out via </text:span><text:a xlink:type="simple" xlink:href="https://git-scm.com/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git</text:a><text:span text:style-name="T4"> (via the </text:span><text:a xlink:type="simple" xlink:href="git://git.square-r00t.net/bdisk.git" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git protocol</text:a><text:span text:style-name="T4"> or </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">http protocol</text:a><text:span text:style-name="T4">). It is also available via Arch Linux’s </text:span><text:a xlink:type="simple" xlink:href="https://aur.archlinux.org/packages/bdisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">AUR</text:a><text:span text:style-name="T4">. If you are interested in packaging </text:span><text:span text:style-name="T5">BDisk for other distributions, please feel free to </text:span><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=[BDISK]%20Packaging" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">contact me</text:a><text:span text:style-name="T5">.</text:span></text:p>
|
||||||
<text:h text:style-name="Heading_20_1" text:outline-level="1"><text:bookmark-start text:name="__RefHeading___Toc232_667539389"/><text:span text:style-name="T5">G</text:span><text:span text:style-name="T3">etting Started</text:span><text:bookmark-end text:name="__RefHeading___Toc232_667539389"/></text:h>
|
<text:h text:style-name="Heading_20_1" text:outline-level="1"><text:bookmark-start text:name="__RefHeading___Toc232_667539389"/><text:span text:style-name="T5">G</text:span><text:span text:style-name="T3">etting Started</text:span><text:bookmark-end text:name="__RefHeading___Toc232_667539389"/></text:h>
|
||||||
<text:p text:style-name="P8"/>
|
<text:p text:style-name="P8"/>
|
||||||
|
@ -403,6 +403,10 @@ usb = yes
|
|||||||
; of curl.
|
; of curl.
|
||||||
uri = https://bdisk.square-r00t.net
|
uri = https://bdisk.square-r00t.net
|
||||||
|
|
||||||
|
; Directory to hold SSL results, if we are generating
|
||||||
|
; keys, certificates, etc.
|
||||||
|
ssldir = ${build:dlpath}/ssl
|
||||||
|
|
||||||
; Path to the (root) CA certificate file iPXE should use.
|
; Path to the (root) CA certificate file iPXE should use.
|
||||||
; Note that you can use your own CA to sign existing certs.
|
; Note that you can use your own CA to sign existing certs.
|
||||||
; See http://ipxe.org/crypto for more info. This is handy if
|
; See http://ipxe.org/crypto for more info. This is handy if
|
||||||
@ -411,39 +415,39 @@ uri = https://bdisk.square-r00t.net
|
|||||||
; 0.) No whitespace
|
; 0.) No whitespace
|
||||||
; 1.) Must be in PEM/X509 format
|
; 1.) Must be in PEM/X509 format
|
||||||
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
||||||
; 3.) If specified, a matching key (ssl_cakey) MUST be
|
; 3.) If it exists, a matching key (ssl_cakey) MUST be
|
||||||
; specified
|
; specified
|
||||||
; 4.) HOWEVER, if left blank, one will be automatically
|
; 4.) HOWEVER, if left blank/doesn't exist, one will be
|
||||||
; generated
|
; automatically generated
|
||||||
ssl_ca =
|
ssl_ca = ${ssldir}/ca.crt
|
||||||
|
|
||||||
; Path to the (root) CA key file iPXE should use.
|
; Path to the (root) CA key file iPXE should use.
|
||||||
; 0.) No whitespace
|
; 0.) No whitespace
|
||||||
; 1.) Must be in PEM/X509 format
|
; 1.) Must be in PEM/X509 format
|
||||||
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
||||||
; 3.) If left blank (and ssl_ca is also blank),
|
; 3.) If left blank or it doesn't exist (and ssl_ca is also
|
||||||
; one will be automatically generated
|
; blank), one will be automatically generated
|
||||||
; 4.) MUST match ssl_ca if specified
|
; 4.) MUST match ssl_ca if specified/exists
|
||||||
; 5.) MUST NOT be passphrase-protected
|
; 5.) MUST NOT be passphrase-protected
|
||||||
ssl_cakey =
|
ssl_cakey = ${ssldir}/ca.key
|
||||||
|
|
||||||
; Path to the CLIENT certificate iPXE should use.
|
; Path to the CLIENT certificate iPXE should use.
|
||||||
; 0.) No whitespace
|
; 0.) No whitespace
|
||||||
; 1.) Must be in PEM/X509 format
|
; 1.) Must be in PEM/X509 format
|
||||||
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
||||||
; 3.) If unspecified, a CA cert (ssl_ca) and key
|
; 3.) If specified/existent, a matching CA cert (ssl_ca)
|
||||||
; (ssl_cakey) MUST be specified
|
; and key (ssl_cakey) MUST be specified
|
||||||
; 4.) HOWEVER, if left blank one will be generated
|
; 4.) HOWEVER, if left blank/nonexistent, one will be generated
|
||||||
; 5.) MUST be signed by ssl_ca/ssl_ca if specified
|
; 5.) MUST be signed by ssl_ca/ssl_ca if specified
|
||||||
ssl_crt =
|
ssl_crt = ${ssldir}/main.crt
|
||||||
|
|
||||||
; Path to the CLIENT key iPXE should use.
|
; Path to the CLIENT key iPXE should use.
|
||||||
; 0.) No whitespace
|
; 0.) No whitespace
|
||||||
; 1.) Must be in PEM/X509 format
|
; 1.) Must be in PEM/X509 format
|
||||||
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
; 2.) REQUIRED if iso and/or usb is set to True/yes/etc.
|
||||||
; 4.) If left blank (and ssl_ca is also blank),
|
; 4.) If left blank/nonexistent (and ssl_ca is also blank),
|
||||||
; one will be automatically generated
|
; one will be automatically generated
|
||||||
ssl_key =
|
ssl_key = ${ssldir}/main.key
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------#
|
#---------------------------------------------------------#
|
||||||
|
Loading…
Reference in New Issue
Block a user