Compare commits
No commits in common. "master" and "pre_assign" have entirely different histories.
master
...
pre_assign
1
.gitignore
vendored
1
.gitignore
vendored
@ -19,3 +19,4 @@
|
||||
.editix
|
||||
.idea/
|
||||
__pycache__/
|
||||
test.py
|
||||
|
@ -10,36 +10,49 @@
|
||||
<xs:complexType name="e_he_ipv6_cred">
|
||||
<xs:all>
|
||||
<xs:element name="user" type="xs:token" minOccurs="1"/>
|
||||
<xs:element name="password" type="xs:token" minOccurs="1"/>
|
||||
<xs:element name="updateKey" type="xs:token" minOccurs="1"/>
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:ID" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_he_ipv6_tunnel">
|
||||
<xs:all>
|
||||
<xs:element name="updateKey" type="xs:token" minOccurs="1"/>
|
||||
<xs:element name="assignments" minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="server" type="t_net_addr_ip4"/>
|
||||
<xs:element name="allocs">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="assign" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:sequence minOccurs="1">
|
||||
<!-- HE only allocates a single /64 and, upon request, a single /48 per tunnel. -->
|
||||
<xs:element name="alloc" minOccurs="1" maxOccurs="2">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ra" type="t_he_ipv6_ra" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
<xs:attribute name="prefix" type="t_he_ipv6_prefix_local" use="optional" default="64"/>
|
||||
<xs:attribute name="alloc" type="t_he_ipv6_prefix" use="optional" default="64"/>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_net_addr_ip6">
|
||||
<!-- VERY most likely "64" but we can't define a default with required. -->
|
||||
<xs:attribute name="prefix" type="t_he_ipv6_prefix" use="required"/>
|
||||
<xs:attribute name="iface" type="t_linux_iface_name" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="raProvider" type="t_he_ipv6_ra_providers" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:unique name="uniq_he_assign">
|
||||
<xs:unique name="uniq_alloc_addr">
|
||||
<xs:selector xpath=".//*"/>
|
||||
<!-- <xs:field xpath="@prefix"/> -->
|
||||
<xs:field xpath="@alloc"/>
|
||||
<xs:field xpath="@iface"/>
|
||||
<xs:field xpath="."/>
|
||||
</xs:unique>
|
||||
<xs:unique name="uniq_alloc_prefix">
|
||||
<xs:selector xpath=".//*"/>
|
||||
<xs:field xpath="@prefix"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="client" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_net_addr_ip6">
|
||||
<!-- VERY most likely "64" but we can't define a default with required. -->
|
||||
<xs:attribute name="prefix" type="t_he_ipv6_prefix" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
|
||||
|
@ -1,62 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../types/unix.xsd"/>
|
||||
<xs:include schemaLocation="../types/ipxe.xsd"/>
|
||||
<xs:include schemaLocation="../types/git.xsd"/>
|
||||
|
||||
<xs:complexType name="e_ipxe_extratargets">
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="target" type="t_ipxe_extratarget" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_ipxe_opts">
|
||||
<xs:choice minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="enable" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="opt" minOccurs="1" type="t_ipxe_patchopt"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="disable" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="opt" minOccurs="1" type="t_ipxe_patchopt"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<xs:attribute name="file" type="t_unix_relfilepath" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_ipxe_optswitch">
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="opts" minOccurs="1" maxOccurs="unbounded" type="e_ipxe_opts"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="subDir" type="t_unix_reldirpath" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_ipxe_scripts">
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="script" minOccurs="1" maxOccurs="unbounded" type="t_ipxe_script"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="srcDir" type="t_unix_anydir" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_ipxe_upstream">
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="dest" minOccurs="1" maxOccurs="1" type="t_unix_dirpath"/>
|
||||
<xs:choice minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="git" minOccurs="0" type="t_git_remote"/>
|
||||
<xs:element name="archive" minOccurs="0" type="t_ipxe_arcfile"/>
|
||||
</xs:choice>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../types/repomirror.xsd"/>
|
||||
<xs:include schemaLocation="../types/net.xsd"/>
|
||||
<xs:include schemaLocation="../types/unix.xsd"/>
|
||||
|
||||
<xs:complexType name="e_repomir_owner">
|
||||
<xs:sequence minOccurs="1">
|
||||
<xs:choice minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="user" type="t_unix_posixUserGroup" maxOccurs="1"/>
|
||||
<xs:element name="group" type="t_unix_posixUserGroup" maxOccurs="1"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_repomir_ignoreExit">
|
||||
<xs:attribute name="returns" type="t_repomir_returnCodeList" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Commented out; we don't bother with SSH variants. See also e_repomir_upstream -->
|
||||
<!--
|
||||
<xs:complexType name="e_repomir_sync_proto">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_repomir_synctype">
|
||||
<xs:attribute name="ssh" use="optional" default="false" type="xs:boolean"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
-->
|
||||
|
||||
<xs:complexType name="e_repomir_tstmp_file">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_filepath">
|
||||
<xs:attribute name="timeFormat" type="xs:string" use="optional" default="UNIX_EPOCH"/>
|
||||
<xs:attribute name="offset" type="xs:integer" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_repomir_remote_tstmp_file">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="e_repomir_tstmp_file">
|
||||
<xs:attribute name="mtime" type="xs:boolean" use="optional" default="false"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_repomir_upstream">
|
||||
<xs:all minOccurs="1">
|
||||
<!-- <xs:element name="syncType" type="e_repomir_sync_proto" minOccurs="1"/> -->
|
||||
<xs:element name="syncType" type="t_repomir_synctype" minOccurs="1"/>
|
||||
<xs:element name="domain" type="xs:token" minOccurs="1"/>
|
||||
<xs:element name="port" minOccurs="0" type="t_net_port"/>
|
||||
<xs:element name="path" minOccurs="1" type="t_unix_dirpath"/>
|
||||
</xs:all>
|
||||
<xs:attribute name="delayCheck" type="xs:duration" use="optional"/>
|
||||
<xs:attribute name="offset" type="xs:duration" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,87 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:complexType name="e_resume_contact">
|
||||
<xs:all>
|
||||
<xs:element name="email" minOccurs="1" maxOccurs="1" type="xs:token"/>
|
||||
<xs:element name="phoneNumber" minOccurs="1" maxOccurs="1" type="xs:token"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_resume_duration">
|
||||
<xs:sequence minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="start" type="xs:gYearMonth" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="end" type="xs:gYearMonth" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_resume_workExperience">
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="experience" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="companyName" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
|
||||
<xs:element name="positions" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="position" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="duration" minOccurs="0" maxOccurs="1" type="e_resume_duration"/>
|
||||
<xs:element name="title" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
|
||||
<xs:element name="role" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="responsibility" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="desc" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="accomplishments" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="accomplishment" minOccurs="1" maxOccurs="unbounded"
|
||||
type="xs:string"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="desc" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
|
||||
<xs:element name="location" minOccurs="0" maxOccurs="1" type="e_resume_location"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_resume_location">
|
||||
<xs:all>
|
||||
<xs:element name="locality" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
|
||||
<xs:element name="region" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="e_resume_name">
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="nameTitle" type="xs:normalizedString"/>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="namePrefix" type="xs:normalizedString"/>
|
||||
<xs:element minOccurs="1" maxOccurs="1" name="firstName" type="xs:normalizedString"/>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="middleName" type="xs:normalizedString"/>
|
||||
<xs:element minOccurs="1" maxOccurs="1" name="lastName" type="xs:normalizedString"/>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="nameSuffix" type="xs:normalizedString"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -5,13 +5,13 @@
|
||||
|
||||
<xs:include schemaLocation="../types/vaultpass.xsd"/>
|
||||
|
||||
<xs:element name="e_vaultpass_authselect" abstract="true"/>
|
||||
<xs:element name="e_vaultpass_unsealselect" abstract="true"/>
|
||||
<xs:element name="t_vaultpass_authselect" abstract="true"/>
|
||||
<xs:element name="t_vaultpass_unsealselect" abstract="true"/>
|
||||
|
||||
<xs:element name="auth" substitutionGroup="e_vaultpass_authselect" type="t_vaultpass_auth_plain"/>
|
||||
<xs:element name="authGpg" substitutionGroup="e_vaultpass_authselect" type="t_vaultpass_star_gpg"/>
|
||||
<xs:element name="auth" substitutionGroup="t_vaultpass_authselect" type="t_vaultpass_auth_plain"/>
|
||||
<xs:element name="authGpg" substitutionGroup="t_vaultpass_authselect" type="t_vaultpass_star_gpg"/>
|
||||
|
||||
<xs:element name="unseal" substitutionGroup="e_vaultpass_unsealselect" type="t_std_base64"/>
|
||||
<xs:element name="unsealGpg" substitutionGroup="e_vaultpass_unsealselect" type="t_vaultpass_star_gpg"/>
|
||||
<xs:element name="unseal" substitutionGroup="t_vaultpass_unsealselect" type="t_std_base64"/>
|
||||
<xs:element name="unsealGpg" substitutionGroup="t_vaultpass_unsealselect" type="t_vaultpass_star_gpg"/>
|
||||
|
||||
</xs:schema>
|
||||
|
@ -1,54 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./unix.xsd"/>
|
||||
<xs:include schemaLocation="./windows.xsd"/>
|
||||
|
||||
<!-- ABSOLUTE directory path -->
|
||||
<xs:simpleType name="t_xplat_dirpath">
|
||||
<xs:union memberTypes="t_unix_dirpath t_windows_dirpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE directory path -->
|
||||
<xs:simpleType name="t_xplat_reldirpath">
|
||||
<xs:union memberTypes="t_unix_reldirpath t_windows_reldirpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_xplat_filepath">
|
||||
<xs:union memberTypes="t_unix_filepath t_windows_filepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE file path -->
|
||||
<xs:simpleType name="t_xplat_relfilepath">
|
||||
<xs:union memberTypes="t_unix_relfilepath t_windows_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE path (file or directory) -->
|
||||
<xs:simpleType name="t_xplat_path">
|
||||
<xs:union memberTypes="t_unix_path t_windows_path"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE path (file or directory) -->
|
||||
<xs:simpleType name="t_xplat_relpath">
|
||||
<xs:union memberTypes="t_unix_relpath t_windows_relpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ANY valid value for the above types. -->
|
||||
<xs:simpleType name="t_xplat_anypath">
|
||||
<xs:union memberTypes="t_unix_anypath t_windows_anypath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_xplat_anyfile">
|
||||
<xs:union memberTypes="t_unix_anyfile t_windows_anyfile"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE dir path -->
|
||||
<xs:simpleType name="t_xplat_anydir">
|
||||
<xs:union memberTypes="t_unix_anydir t_windows_anydir"/>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:simpleType name="t_git_commit">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="[A-Fa-f0-9]{4,40}"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_git_ref">
|
||||
<xs:union memberTypes="xs:token t_git_commit"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_git_reftypes">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="branch"/><!-- a.k.a. "head" -->
|
||||
<xs:enumeration value="head"/><!-- a.k.a. "branch" -->
|
||||
<xs:enumeration value="tag"/>
|
||||
<xs:enumeration value="commit"/><!-- a.k.a. "rev" -->
|
||||
<xs:enumeration value="rev"/><!-- a.k.a. "commit" -->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!--
|
||||
<xs:complexType name="t_git_remote">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_git_uri">
|
||||
<xs:attribute name="refType" use="optional" default="branch" type="t_git_reftypes"/>
|
||||
<xs:attribute name="ref" use="optional" default="master" type="t_git_reftypes"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
-->
|
||||
<xs:complexType name="t_git_remote">
|
||||
<xs:sequence minOccurs="1" maxOccurs="1">
|
||||
<xs:choice minOccurs="1" maxOccurs="3">
|
||||
<xs:element name="refType" minOccurs="0" maxOccurs="1" type="t_git_reftypes" default="branch"/>
|
||||
<xs:element name="ref" minOccurs="0" maxOccurs="1" type="t_git_ref" default="master"/>
|
||||
<xs:element name="uri" minOccurs="1" maxOccurs="1" type="t_git_uri"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_git_uri">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:pattern value="(https?|git|file|ssh)://.*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -1,73 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./net.xsd"/>
|
||||
<xs:include schemaLocation="./unix.xsd"/>
|
||||
|
||||
<xs:complexType name="t_gomodh_base">
|
||||
<xs:attribute name="name" type="t_unix_portablePosixFilename" use="required"/>
|
||||
<xs:attribute name="baseUrl" type="t_net_http_basic_uri" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_gomodh_pkg">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="t_gomodh_base">
|
||||
<xs:all>
|
||||
<xs:element name="realUrl" type="t_gomodh_vcs_uri" minOccurs="1"/>
|
||||
</xs:all>
|
||||
<xs:attribute name="vcsType" type="t_gomodh_vcs" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_gomodh_mod">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="t_gomodh_base">
|
||||
<xs:all>
|
||||
<xs:element name="realURL" type="t_net_http_basic_uri"/>
|
||||
<xs:element name="releases">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="release">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:token">
|
||||
<xs:attribute name="dir" type="t_unix_dirpath" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="baseDir" type="t_unix_dirpath" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- VCS are also called SCM. -->
|
||||
<xs:simpleType name="t_gomodh_vcs">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="bzr"/>
|
||||
<xs:enumeration value="fossil"/>
|
||||
<xs:enumeration value="git"/>
|
||||
<xs:enumeration value="hg"/>
|
||||
<xs:enumeration value="svn"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_gomodh_vcs_uri">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<!--
|
||||
Some of the weird ones might be BZR.
|
||||
http://doc.bazaar.canonical.com/development/en/user-reference/urlspec-help.html
|
||||
-->
|
||||
<xs:pattern value="(https?|bzr|aftp|bzr\+ssh|file|ftp|sftp|git|ssh|hg)://.+/?"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -17,12 +17,6 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_gpg_safe_key_id">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(0x)?[0-9A-Fa-f]{40}\s*"/><!-- Full key ID -->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_gpg_key_id_search">
|
||||
<xs:union memberTypes="t_gpg_key_id t_net_email_addr"/>
|
||||
</xs:simpleType>
|
||||
|
@ -3,8 +3,6 @@
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
|
||||
<xs:simpleType name="t_he_ipv6_prefix">
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:enumeration value="48"/>
|
||||
@ -12,42 +10,4 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_he_ipv6_prefix_local">
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="64"/>
|
||||
<xs:maxInclusive value="128"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_he_ipv6_ra">
|
||||
<xs:all>
|
||||
<xs:element name="dns" default="false">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:boolean">
|
||||
<xs:attribute name="domains" type="t_std_list_space" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="dhcpv6" default="false">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:boolean">
|
||||
<xs:attribute name="advOther" type="xs:boolean" use="optional" default="false"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="tag" type="xs:token" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_he_ipv6_ra_providers">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="dnsmasq"/>
|
||||
<xs:enumeration value="radvd"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
||||
|
@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../types/unix.xsd"/>
|
||||
|
||||
<xs:complexType name="t_ipxe_extratarget">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_reldirpath">
|
||||
<xs:attribute name="subDir" use="optional" default="." type="t_unix_reldirpath"/>
|
||||
<xs:attribute name="baseName" use="optional" type="t_unix_portablePosixFilename"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_ipxe_patch">
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="patchFile" minOccurs="1" maxOccurs="unbounded" type="t_ipxe_patch_file"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="patchDir" type="t_unix_anydir" use="optional" default="."/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_ipxe_patch_file">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_relfilepath">
|
||||
<xs:attribute name="stripLevel" type="xs:positiveInteger" use="optional" default="1"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_ipxe_patchopt">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="[A-Z0-9_]+"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_ipxe_rom_type">
|
||||
<xs:sequence minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="romType" minOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_ipxe_roms">
|
||||
<xs:sequence minOccurs="1">
|
||||
<xs:element name="rom" type="xs:token" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_ipxe_script">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_portablePosixFilename">
|
||||
<xs:attribute name="prefix" type="xs:token" use="required"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_ipxe_arcfile">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:pattern value="(https?|file)://^.*\.(tar(\.((g|x)z|bz2?))?|t((g|x)z|bz2?)|zip)"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -82,25 +82,18 @@
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_linux_iface_name">
|
||||
<xs:union memberTypes="t_linux_iface_name_legacy t_linux_iface_name_predictable"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_linux_iface_name_legacy">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="(eth|wl(an)?)[0-9]*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_linux_iface_name_predictable">
|
||||
<!-- I have no idea if this will work. You'll probably want to validate in-code. -->
|
||||
<!-- I have no idea if this will work. TODO: simplify, validate in-code. -->
|
||||
<!--
|
||||
"New" predictable iface naming.
|
||||
https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c.
|
||||
-->
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern
|
||||
value="((en|sl|wl|ww)(b[0-9]+|c[a-z0-9]|o[0-9]+(n.*(d.*)?)?|s[0-9]+(f.*)?([nd].*)?|x([A-Fa-f0-9]:){5}[A-Fa-f0-9]|(P.*)?p[0-9]+s[0-9]+(([fnd].*)|u.*)?))"/>
|
||||
<!--
|
||||
Legacy naming.
|
||||
-->
|
||||
<xs:pattern value="(eth|wl(an)?)[0-9]*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
@ -117,13 +117,6 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_port">
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="65535"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_proto">
|
||||
<!-- TODO: expand? Remove gre? -->
|
||||
<xs:restriction base="xs:string">
|
||||
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:simpleType name="t_repomir_returnCodeList">
|
||||
<xs:list itemType="xs:integer"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_repomir_synctype">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="rsync"/>
|
||||
<xs:enumeration value="ftp"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="linux.xsd"/>
|
||||
<xs:include schemaLocation="net.xsd"/>
|
||||
|
||||
<!-- IEEE 802.1Q -->
|
||||
<xs:simpleType name="t_router_vlan">
|
||||
<xs:restriction base="xs:nonNegativeInteger">
|
||||
<xs:minInclusive value="0"/><!-- Technically redundant. -->
|
||||
<!--
|
||||
This is actually a vendor-specific thing; the official IEEE 802.1Q spec does NOT specify that VLAN ID 1 is
|
||||
reserved for management.
|
||||
-->
|
||||
<!-- <xs:minInclusive value="1"/> -->
|
||||
<xs:maxInclusive value="4094"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_router_bridge_iface">
|
||||
<xs:list itemType="t_linux_iface_name"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_router_iface">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_linux_iface_name">
|
||||
<xs:attribute name="vlan" type="t_router_vlan" use="optional"/>
|
||||
<xs:attribute name="bridge" type="t_router_bridge_iface" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
|
||||
</xs:schema>
|
@ -36,34 +36,12 @@
|
||||
<xs:union memberTypes="xs:dateTime xs:positiveInteger"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_list_comma">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[^,]+(,[^,])*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_list_space">
|
||||
<xs:list itemType="xs:token"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_nonempty">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:minLength value="1"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- https://semver.org/ -->
|
||||
<!-- Not perfect; it's more permissible than official spec but will do nicely for basic check. -->
|
||||
<!--
|
||||
The XML pattern engine standard is... pretty limited but:
|
||||
https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
|
||||
-->
|
||||
<xs:simpleType name="t_std_semver">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="v?([1-9]+([0-9])*\.){2}\.[1-9]([0-9)*(-[.0-9A-Za-z-]+)?(\+[.0-9A-Za-z-]+)?"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_uri">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:pattern value="\s*(https?|ftps?|file)://.+\s*"/>
|
||||
|
@ -9,11 +9,9 @@
|
||||
<xs:simpleType name="t_sys_diskfmt">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="gpt"/>
|
||||
<!-- The next four should all evaluate to the exact same in-code. -->
|
||||
<xs:enumeration value="bios"/>
|
||||
<xs:enumeration value="dos"/>
|
||||
<xs:enumeration value="msdos"/>
|
||||
<xs:enumeration value="mbr"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
@ -5,85 +5,13 @@
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
|
||||
<xs:complexType name="t_unix_arg">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="value" type="xs:string" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_unix_args">
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="long" type="t_unix_arg"/>
|
||||
<xs:element name="short" type="t_unix_arg"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- These were a pain to figure out. -->
|
||||
<!-- wtf. doesn't seem to work?
|
||||
dir: ^\s*(~?/[^/]*)+/?\s*$
|
||||
file: ^\s*(~?/[^/]+)+\s*$
|
||||
reldir: ^\s*[^/](([^/]*)+/?)+\s*$
|
||||
relfile: ^\s*[^/]+(/|[^/]*)*[^/]+\s*$
|
||||
-->
|
||||
<!-- ABSOLUTE directory path -->
|
||||
<xs:simpleType name="t_unix_dirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~?/[^/]*)+/?\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE directory path -->
|
||||
<xs:simpleType name="t_unix_reldirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*[^/](([^/]*)+/?)+\s*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_unix_filepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~?/[^/]+)+\s*"/>
|
||||
<xs:pattern value="\s*(~?/[^/]+)+/?\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE file path -->
|
||||
<xs:simpleType name="t_unix_relfilepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*([^/]+)(/[^/]+)*([^/])*\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE path (file or directory) -->
|
||||
<xs:simpleType name="t_unix_path">
|
||||
<xs:union memberTypes="t_unix_dirpath t_unix_filepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE path (file or directory) -->
|
||||
<xs:simpleType name="t_unix_relpath">
|
||||
<xs:union memberTypes="t_unix_reldirpath t_unix_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ANY valid value for the above types. -->
|
||||
<xs:simpleType name="t_unix_anypath">
|
||||
<xs:union memberTypes="t_unix_path t_unix_relpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_unix_anyfile">
|
||||
<xs:union memberTypes="t_unix_filepath t_unix_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE dir path -->
|
||||
<xs:simpleType name="t_unix_anydir">
|
||||
<xs:union memberTypes="t_unix_dirpath t_unix_reldirpath"/>
|
||||
</xs:simpleType>
|
||||
<!-- END of regex silliness. What an ugly annoyance. -->
|
||||
|
||||
<xs:complexType name="t_unix_nixpass">
|
||||
<xs:choice minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="passwordPlain">
|
||||
|
@ -19,7 +19,7 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- We don't support Boto3 because it requires an external session object. -->
|
||||
<!-- We won't support EC2 Metadata auth unless requested because it's HELLA complex. -->
|
||||
<!-- We won't support EC2 Metadata auth unless requested because it's HELL complex. -->
|
||||
<!-- TODO -->
|
||||
<!--
|
||||
<xs:element name="aws">
|
||||
@ -72,7 +72,7 @@
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- No longer supported upstream by HashiCorp. At least, not in community? And I don't have an Enterprise handy. -->
|
||||
<!-- No longer supported upstream by HashiCorp. -->
|
||||
<!--
|
||||
<xs:element name="mfa"/>
|
||||
-->
|
||||
@ -137,7 +137,6 @@
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_filepath">
|
||||
<xs:attribute name="gpgHome" type="t_unix_filepath" use="optional"/>
|
||||
<xs:attribute name="gpgKeyId" type="t_gpg_safe_key_id" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
@ -1,66 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
|
||||
<!-- ABSOLUTE directory path -->
|
||||
<!-- Getting this regex right for Windows is a nightmare. This is just intended to check in a very basic manner. -->
|
||||
<xs:simpleType name="t_windows_dirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~|[A-Za-z]+:)(\\[^\\]*)+\\?\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE directory path -->
|
||||
<!-- Don't trust this. XML patterns don't support lookahead/lookbehind, so we can't negate a char sequence. -->
|
||||
<xs:simpleType name="t_windows_reldirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*[^\\](([^\\]*)+\\?)+\s*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_windows_filepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~|[A-Za-z]+:)?(\\[^\\]+)+\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE file path -->
|
||||
<xs:simpleType name="t_windows_relfilepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*([^\\]+)(\\[^\\]+)*([^\\])*\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE path (file or directory) -->
|
||||
<xs:simpleType name="t_windows_path">
|
||||
<xs:union memberTypes="t_windows_dirpath t_windows_filepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE path (file or directory) -->
|
||||
<xs:simpleType name="t_windows_relpath">
|
||||
<xs:union memberTypes="t_windows_reldirpath t_windows_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ANY valid value for the above types. -->
|
||||
<xs:simpleType name="t_windows_anypath">
|
||||
<xs:union memberTypes="t_windows_path t_windows_relpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_windows_anyfile">
|
||||
<xs:union memberTypes="t_windows_filepath t_windows_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE dir path -->
|
||||
<xs:simpleType name="t_windows_anydir">
|
||||
<xs:union memberTypes="t_windows_dirpath t_windows_reldirpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -1,31 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="http://xmlsoft.org/"
|
||||
xmlns="http://xmlsoft.org/"
|
||||
xmlns:libxml2="http://xmlsoft.org/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
|
||||
<xs:include schemaLocation="../lib/types/cksum.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/std.xsd"/>
|
||||
|
||||
<xs:element name="libxml2">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="sub">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="sub2" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="nestedInclude" type="t_cksum_hash" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="attrOpt" use="optional" default="none specified" type="xs:string"/>
|
||||
<xs:attribute name="attrReq" use="required" type="t_std_nonempty"/>
|
||||
<xs:attribute name="attrBoolNoDef" use="optional" type="xs:boolean"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://go.r00t2.io/"
|
||||
xmlns="https://go.r00t2.io/"
|
||||
xmlns:gomodh="https://go.r00t2.io/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/gomodh.xsd"/>
|
||||
|
||||
<xs:element name="gomodh">
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="mod" type="t_gomodh_mod"/>
|
||||
<xs:element name="pkg" type="t_gomodh_pkg"/>
|
||||
</xs:choice>
|
||||
<xs:attribute name="baseURL" type="t_net_http_basic_uri" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:key name="key_name">
|
||||
<xs:selector xpath="./*"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://tunnelbroker.net/"
|
||||
xmlns="https://tunnelbroker.net/"
|
||||
xmlns:heIPv6="https://tunnelbroker.net/"
|
||||
xmlns:heIPv6="https://tunelbroker.net/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../../lib/elements/he_ipv6.xsd"/>
|
||||
<xs:include schemaLocation="../lib/elements/he_ipv6.xsd"/>
|
||||
|
||||
<!-- ROOT -->
|
||||
<xs:element name="heIPv6">
|
@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://router.r00t2.io/boootbox/ipxe/build/"
|
||||
xmlns="https://router.r00t2.io/boootbox/ipxe/build/"
|
||||
xmlns:ipxe="https://router.r00t2.io/boootbox/ipxe/build/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../../lib/types/unix.xsd"/>
|
||||
<xs:include schemaLocation="../../lib/types/ipxe.xsd"/>
|
||||
<xs:include schemaLocation="../../lib/elements/ipxe.xsd"/>
|
||||
|
||||
<xs:element name="ipxe">
|
||||
<xs:complexType>
|
||||
<xs:all minOccurs="1">
|
||||
<xs:element name="source">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="0">
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="patchSet" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="2">
|
||||
<xs:element name="switchOpts" maxOccurs="1" type="e_ipxe_optswitch"/>
|
||||
<xs:element name="patch" maxOccurs="1" type="t_ipxe_patch"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="upstream" minOccurs="1" maxOccurs="1" type="e_ipxe_upstream"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="srcDir" type="t_unix_dirpath" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="build">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="4">
|
||||
<xs:choice minOccurs="1" maxOccurs="4">
|
||||
<xs:element name="dest" minOccurs="1" maxOccurs="1" type="t_unix_dirpath"/>
|
||||
<xs:element name="scripts" minOccurs="1" maxOccurs="1" type="e_ipxe_scripts"/>
|
||||
<xs:element name="roms" minOccurs="1" maxOccurs="1" type="t_ipxe_roms"/>
|
||||
<xs:element name="extraTargets" minOccurs="0" maxOccurs="1" type="e_ipxe_extratargets"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="iso" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="usb" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="floppy" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="mbr" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="pxe" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="undi" type="xs:boolean" use="optional" default="false"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,41 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://git.square-r00t.net/RepoMirror/"
|
||||
xmlns="https://git.square-r00t.net/RepoMirror/"
|
||||
xmlns:tunnel="https://git.square-r00t.net/RepoMirror/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/repomirror.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/std.xsd"/>
|
||||
<xs:include schemaLocation="../lib/elements/repomirror.xsd"/>
|
||||
|
||||
<!-- ROOT -->
|
||||
<xs:element name="mirror">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="distro">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1">
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="upstream" type="e_repomir_upstream" minOccurs="1" maxOccurs="unbounded"/>
|
||||
<xs:element name="dest" type="t_unix_dirpath" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="lastLocalCheck" type="e_repomir_tstmp_file" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="lastLocalSync" type="e_repomir_tstmp_file" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="lastRemoteUpdate" type="e_repomir_remote_tstmp_file" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="lastRemoteSync" type="e_repomir_remote_tstmp_file" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="mountCheck" type="t_unix_dirpath" minOccurs="1"/>
|
||||
<xs:element name="owner" type="e_repomir_owner" minOccurs="0"/>
|
||||
<xs:element name="rsyncArgs" minOccurs="0" maxOccurs="1" type="t_unix_args"/>
|
||||
<xs:element name="rsyncIgnore" minOccurs="0" maxOccurs="1" type="e_repomir_ignoreExit"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:ID" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,37 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://resume.r00t2.io/"
|
||||
xmlns="https://resume.r00t2.io/"
|
||||
xmlns:resume="https://resume.r00t2.io/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/elements/resumegen.xsd"/>
|
||||
|
||||
<xs:element name="portfolio">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="resume">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="3">
|
||||
<xs:element name="name" minOccurs="1" maxOccurs="1" type="e_resume_name"/>
|
||||
<xs:element name="contact" minOccurs="1" maxOccurs="1" type="e_resume_contact"/>
|
||||
<xs:element name="location" minOccurs="1" maxOccurs="1" type="e_resume_location"/>
|
||||
<xs:element name="workExperience" minOccurs="0" maxOccurs="1" type="e_resume_workExperience"/>
|
||||
<xs:element name="certifications" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="education" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="cv">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1">
|
||||
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://router.r00t2.io/network/"
|
||||
xmlns="https://router.r00t2.io/network/"
|
||||
xmlns:networks="https://router.r00t2.io/network/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../../lib/types/linux.xsd"/>
|
||||
<xs:include schemaLocation="../../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../../lib/types/router.xsd"/>
|
||||
|
||||
<xs:element name="networks">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1">
|
||||
<xs:element name="network" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="dnsMasqTag" type="xs:token" minOccurs="0"/>
|
||||
<xs:element name="iface" type="t_router_iface"/>
|
||||
<xs:element name="addrs" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="ip4" type="t_net_qualified_addr_ip4"/>
|
||||
<xs:element name="ip6">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_net_qualified_addr_ip6">
|
||||
<xs:attribute name="dhcp" use="optional" type="xs:boolean" default="false"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="notes" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1">
|
||||
<xs:element name="note" minOccurs="1" maxOccurs="unbounded" type="xs:string"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="name" type="xs:ID" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,51 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://www.rssboard.org/rss-specification/"
|
||||
xmlns="https://www.rssboard.org/rss-specification"
|
||||
xmlns:rss="https://www.rssboard.org/rss-specification"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/rss2.0.xsd"/>
|
||||
|
||||
<!--
|
||||
CURRENT RSS VERSION: 2.0.8
|
||||
It should be specified as an <rss> attribute as `version="2.0"`, though.
|
||||
-->
|
||||
<!-- ROOT -->
|
||||
<xs:element name="rss">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="channel" minOccurs="1" maxOccurs="1">
|
||||
<!--
|
||||
This is my *opinion*. RSS 2.0 specification does not indicate if the elements should be in order or not.
|
||||
I enforce it for easy conformance to spec and to remove any ambiguity.
|
||||
I base the ordering on the sample 2.0 feed (https://www.rssboard.org/files/sample-rss-2.xml).
|
||||
-->
|
||||
<xs:sequence>
|
||||
<xs:element name="title" type="xs:normalizedString" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="link" type="t_net_http_basic_uri" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<!--
|
||||
TODO: This has a pattern definition per:
|
||||
https://www.rssboard.org/rss-language-codes
|
||||
https://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
|
||||
Maybe an enumeration at some point? But it's... thousands of possible combinations.
|
||||
And allowances are made for non-official ones, too.
|
||||
-->
|
||||
<xs:element name="language" type="xs:normalizedString" minOccurs="0" maxOccurs="1" default="en-us"/>
|
||||
<xs:element name="copyright" type="xs:normalizedString" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="managingEditor" type="xs:normalizedString" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<!--
|
||||
There isn't really a well-defined type string in the RSS spec for what version's valid values ARE, as they specify the version.
|
||||
"xs:token" should be safe/sane enough.
|
||||
-->
|
||||
<xs:attribute name="version" type="xs:token" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,39 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://tunnelbroker.net/tunnelInfo.php?tid"
|
||||
xmlns="https://tunnelbroker.net/tunnelInfo.php?tid"
|
||||
xmlns:tunnel="https://tunnelbroker.net/tunnelInfo.php?tid"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/std.xsd"/>
|
||||
|
||||
<!-- ROOT -->
|
||||
<xs:element name="tunnel">
|
||||
<xs:complexType>
|
||||
<xs:all minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverv4" type="t_net_addr_ip4" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="clientv4" type="t_net_addr_ip4" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverv6" type="t_net_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="clientv6" type="t_net_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="routed64" type="t_net_qualified_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="routed48" type="t_net_qualified_addr_ip6" minOccurs="0" maxOccurs="1"/>
|
||||
<!--
|
||||
FYI, these are FQDNs... but it's more or less impossible to validate through XSD so we let code do that.
|
||||
-->
|
||||
<!-- BEGIN THE FUCKERY. -->
|
||||
<xs:element name="rdns1" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns2" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns3" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns4" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns5" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<!-- END THE FUCKERY. -->
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
</xs:schema>
|
@ -1,44 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://tunnelbroker.net/tunnelInfo.php"
|
||||
xmlns="https://tunnelbroker.net/tunnelInfo.php"
|
||||
xmlns:tunnels="https://tunnelbroker.net/tunnelInfo.php"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="../lib/types/net.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/std.xsd"/>
|
||||
|
||||
<!-- ROOT -->
|
||||
<xs:element name="tunnels">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="tunnel" minOccurs="1" maxOccurs="5">
|
||||
<xs:complexType>
|
||||
<xs:all minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverv4" type="t_net_addr_ip4" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="clientv4" type="t_net_addr_ip4" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverv6" type="t_net_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="clientv6" type="t_net_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="routed64" type="t_net_qualified_addr_ip6" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="routed48" type="t_net_qualified_addr_ip6" minOccurs="0" maxOccurs="1"/>
|
||||
<!--
|
||||
FYI, these are FQDNs... but it's more or less impossible to validate through XSD so we let code do that.
|
||||
-->
|
||||
<!-- BEGIN THE FUCKERY. -->
|
||||
<xs:element name="rdns1" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns2" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns3" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns4" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="rdns5" type="t_std_nonempty" minOccurs="0" maxOccurs="1"/>
|
||||
<!-- END THE FUCKERY. -->
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="https://git.square-r00t.net/VaultPass/"
|
||||
xmlns="https://git.square-r00t.net/VaultPass/"
|
||||
xmlns:vaultpass="https://git.square-r00t.net/VaultPass/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
@ -11,32 +12,17 @@
|
||||
<!-- ROOT -->
|
||||
<xs:element name="vaultpass">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="server" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:all>
|
||||
<xs:element name="server" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="uri" type="t_std_uri" minOccurs="0" maxOccurs="1"
|
||||
default="http://localhost:8200/"/>
|
||||
<!-- We don't use this anymore because groups don't play very nicely with a lot of libraries. Shame. -->
|
||||
<!-- <xs:element ref="e_vaultpass_unsealselect" minOccurs="0" maxOccurs="1"/> -->
|
||||
<xs:element name="unseal">
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="unsealGpg" type="t_vaultpass_star_gpg"/>
|
||||
<xs:element name="unsealPlain" type="t_std_base64"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- We don't use this anymore because groups don't play very nicely with a lot of libraries. Shame. -->
|
||||
<!-- <xs:element ref="e_vaultpass_authselect" minOccurs="1" maxOccurs="1"/> -->
|
||||
<xs:element name="auth" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="authGpg" type="t_vaultpass_star_gpg"/>
|
||||
<xs:element name="authPlain" type="t_vaultpass_auth_plain"/>
|
||||
</xs:choice>
|
||||
<xs:element ref="t_vaultpass_unsealselect" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element ref="t_vaultpass_authselect" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="mounts" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@ -45,10 +31,6 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="id" type="xs:ID" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<libxml2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://xmlsoft.org/"
|
||||
xsi:schemaLocation="http://xmlsoft.org/ ./schema/projects/go_libxml2_local.xsd">
|
||||
|
||||
<sub attrReq="foo" attrOpt="bar">
|
||||
<nestedInclude hashType="sha1">4cfcf843c66979eb1df2bd0c52817edb753a52ba</nestedInclude>
|
||||
</sub>
|
||||
<sub attrReq="foo2">
|
||||
<sub2>this is a test string only.</sub2>
|
||||
<nestedInclude hashType="sha512">be218408a748759fb98363593b8f544eb054171bced856ca98bd972823dec0b07b205453fc3c46f23c934d0959f1e05b609c011b6ada84a7050ad7c910b24bf1</nestedInclude>
|
||||
</sub>
|
||||
<sub attrReq="foo3" attrBoolNoDef="false">
|
||||
<sub2>foobar</sub2>
|
||||
<nestedInclude hashType="md5">f7b34871a562283ee92bbda00485eb45</nestedInclude>
|
||||
</sub>
|
||||
|
||||
</libxml2>
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<libxml2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://xmlsoft.org/"
|
||||
xsi:schemaLocation="http://xmlsoft.org/ http://schema.xml.r00t2.io/projects/go_libxml2.xsd">
|
||||
|
||||
<sub attrReq="foo" attrOpt="bar">
|
||||
<nestedInclude hashType="sha1">4cfcf843c66979eb1df2bd0c52817edb753a52ba</nestedInclude>
|
||||
</sub>
|
||||
<sub attrReq="foo2">
|
||||
<sub2>this is a test string only.</sub2>
|
||||
<nestedInclude hashType="sha512">be218408a748759fb98363593b8f544eb054171bced856ca98bd972823dec0b07b205453fc3c46f23c934d0959f1e05b609c011b6ada84a7050ad7c910b24bf1</nestedInclude>
|
||||
</sub>
|
||||
<sub attrReq="foo3" attrBoolNoDef="false">
|
||||
<sub2>foobar</sub2>
|
||||
<nestedInclude hashType="md5">f7b34871a562283ee92bbda00485eb45</nestedInclude>
|
||||
</sub>
|
||||
|
||||
</libxml2>
|
@ -1,76 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
<xs:include schemaLocation="./net.xsd"/>
|
||||
<xs:include schemaLocation="./unix.xsd"/>
|
||||
|
||||
<xs:simpleType name="t_cksum_algo">
|
||||
<!-- Geared towards python. -->
|
||||
<!-- tuple(sorted(list(hashlib.algorithms_available.union(set(('adler32', 'crc32')))))) -->
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="adler32"/>
|
||||
<xs:enumeration value="blake2b"/>
|
||||
<xs:enumeration value="blake2s"/>
|
||||
<xs:enumeration value="crc32"/>
|
||||
<xs:enumeration value="md4"/>
|
||||
<xs:enumeration value="md5"/>
|
||||
<xs:enumeration value="md5-sha1"/>
|
||||
<xs:enumeration value="mdc2"/>
|
||||
<xs:enumeration value="ripemd160"/>
|
||||
<xs:enumeration value="sha1"/>
|
||||
<xs:enumeration value="sha224"/>
|
||||
<xs:enumeration value="sha256"/>
|
||||
<xs:enumeration value="sha384"/>
|
||||
<xs:enumeration value="sha3_224"/>
|
||||
<xs:enumeration value="sha3_256"/>
|
||||
<xs:enumeration value="sha3_384"/>
|
||||
<xs:enumeration value="sha3_512"/>
|
||||
<xs:enumeration value="sha512"/>
|
||||
<xs:enumeration value="sha512_224"/>
|
||||
<xs:enumeration value="sha512_256"/>
|
||||
<xs:enumeration value="shake_128"/>
|
||||
<xs:enumeration value="shake_256"/>
|
||||
<xs:enumeration value="sm3"/>
|
||||
<xs:enumeration value="whirlpool"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_cksum_file">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_net_generic_resource">
|
||||
<xs:attribute name="hashType" use="required" type="t_cksum_algo"/>
|
||||
<xs:attribute name="fileType" use="required" type="t_cksum_file_filetype"/>
|
||||
<xs:attribute name="filePath" use="optional" type="t_unix_filepath"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_cksum_file_filetype">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="gnu"/>
|
||||
<xs:enumeration value="bsd"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_cksum_hash">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_std_nonempty">
|
||||
<xs:attribute name="hashType" use="required" type="t_cksum_algo"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_cksum_verify">
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="checksum" minOccurs="0" maxOccurs="unbounded" type="t_cksum_hash">
|
||||
</xs:element>
|
||||
<xs:element name="checksumFile" minOccurs="0" maxOccurs="unbounded" type="t_cksum_file"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,197 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
|
||||
<xs:simpleType name="t_net_addr_ip4">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- This is a REALLY LAZY regex. Matching IPv4 in regex is ugly as heck, so we do that in-code.
|
||||
This is just a gatekeeper. -->
|
||||
<xs:pattern value="\s*[0-9.]{7,15}\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_addr_ip6">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- This is a REALLY LAZY regex. Matching IPv6 in regex is ugly as heck, so we do that in-code.
|
||||
This is just a gatekeeper. -->
|
||||
<xs:pattern value="\s*[A-Za-z0-9:]+\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_authselect">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="basic"/>
|
||||
<xs:enumeration value="digest"/>
|
||||
<xs:enumeration value="none"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_auto_ip6">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="slaac"/>
|
||||
<xs:enumeration value="dhcp6"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_both_addr">
|
||||
<xs:union memberTypes="t_net_addr_ip4 t_net_addr_ip6"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_both_qualified_addr">
|
||||
<xs:union memberTypes="t_net_qualified_addr_ip4 t_net_qualified_addr_ip6"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_email_addr">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- Thanks, my dude: https://stackoverflow.com/a/2147859/733214 -->
|
||||
<!-- And turns out email local parts are WAY more permissive than I thought:
|
||||
https://stackoverflow.com/a/2049510/733214 -->
|
||||
<xs:pattern value="[^@]+@[^\.]+\..+"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_net_ftp_resource">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_std_uri">
|
||||
<xs:attribute name="user" type="t_std_nonempty" use="optional" default="anonymous"/>
|
||||
<xs:attribute name="password" type="t_std_nonempty" use="optional"/>
|
||||
<!-- This should be handled in-application by looking at the scheme in the URI itself. -->
|
||||
<!-- <xs:attribute name="startTLS" type="xs:boolean" use="optional" default="false"/> -->
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_net_generic_resource">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_std_uri">
|
||||
<xs:attribute name="user" type="t_std_nonempty" use="optional"/>
|
||||
<xs:attribute name="password" type="t_std_nonempty" use="optional"/><!-- If FTP & none, "anonymous" -->
|
||||
<!-- This should be handled in-application by looking at the scheme in the URI itself. -->
|
||||
<!-- <xs:attribute name="startTLS" type="xs:boolean" use="optional" default="false"/> --><!-- FTP -->
|
||||
<xs:attribute name="authType" type="t_net_authselect" use="optional" default="none"/><!-- HTTP(S) -->
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_net_http_resource">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_std_uri">
|
||||
<xs:attribute name="user" type="t_std_nonempty" use="optional"/>
|
||||
<xs:attribute name="password" type="t_std_nonempty" use="optional"/>
|
||||
<xs:attribute name="authtype" type="t_net_authselect" use="optional" default="none"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_net_http_basic_uri">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:pattern value="https?://.+/?"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_mac_addr">
|
||||
<xs:restriction base="xs:token">
|
||||
<!-- EUI48[RFC7043§3] (previously MAC48[RFC7042§2.1]) -->
|
||||
<xs:pattern value="\s*([A-Fa-f0-9]{2}[:-]?){5}[A-Fa-f0-9]{2}\s*"/>
|
||||
<!-- EUI64[RFC7043§4, RFC4291§2.5.1] -->
|
||||
<xs:pattern value="\s*([A-Fa-f0-9]{2}[:-]?){3}[Ff]{3}[FfEe][:-]?([A-Fa-f0-9]{2}[:-]?){2}[A-Fa-f0-9]{2}\s*"/>
|
||||
<xs:pattern
|
||||
value="\s*([A-Fa-f0-9]{2}[:-]?){3}[A-Fa-f0-9]{4}[:-]?([A-Fa-f0-9]{2}[:-]?){2}[A-Fa-f0-9]{2}\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_netproto">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="ipv4"/>
|
||||
<xs:enumeration value="ipv6"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_port">
|
||||
<xs:restriction base="xs:positiveInteger">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="65535"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_proto">
|
||||
<!-- TODO: expand? Remove gre? -->
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="tcp"/>
|
||||
<xs:enumeration value="udp"/>
|
||||
<xs:enumeration value="icmp"/>
|
||||
<xs:enumeration value="gre"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_qualified_addr_ip4">
|
||||
<!-- This is a REALLY LAZY regex. Matching IPv4 in regex is ugly as heck, so we do that in-code.
|
||||
This is just a gatekeeper. -->
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*[0-9.]{7,15}/[0-9]{1,2}\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_net_qualified_addr_ip6">
|
||||
<!-- This is a REALLY LAZY regex. Matching IPv6 in regex is ugly as heck, so we do that in-code.
|
||||
This is just a gatekeeper. -->
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*[A-Za-z0-9:]+/[0-9]{1,3}\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- TODO: "enterprise" WPA2 (add'l details)?
|
||||
WPA3?
|
||||
EAP,
|
||||
eduroam (https://github.com/rst0git/netctl-eduroam-config/blob/master/eduroam), etc. -->
|
||||
<!-- wep64, wep128, wpa-psk:tkip, wpa-psk:aes, wpa2-psk:tkip, wpa2-psk:aes, wpa2-psk:tkip/aes -->
|
||||
<xs:complexType name="t_net_wifi_crypto">
|
||||
<xs:all>
|
||||
<xs:element name="type" minOccurs="1" maxOccurs="1" default="wpa2">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<!-- <xs:enumeration value="wep"/> -->
|
||||
<xs:enumeration value="wpa"/>
|
||||
<xs:enumeration value="wpa2"/>
|
||||
<!-- <xs:enumeration value="wpa3"/> -->
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<!-- Only valid for WPA/WPA2 (and maybe WPA3 once supported?) -->
|
||||
<xs:element name="creds" minOccurs="1" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="1" maxOccurs="1">
|
||||
<!-- "personal" -->
|
||||
<xs:element name="psk">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<!-- A key can be generated via "wpa_passphrase <ssid> <passphrase>" -->
|
||||
<!-- or via genPSK.py in extras/ -->
|
||||
<xs:attribute name="isKey" type="xs:boolean" use="optional" default="false"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<!-- TODO -->
|
||||
<!-- <xs:element name="enterprise"></xs:element> -->
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,62 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:simpleType name="t_std_UUID4">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="\s*[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_base64">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="[A-Za-z0-9+/=]+"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_std_cmdopts">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="name" use="required" type="xs:token"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_std_envvar">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="env:[A-Za-z_]+[A-Za-z0-9_]*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_epoch_or_iso">
|
||||
<!-- positiveInteger is used for UNIX Epoch. -->
|
||||
<xs:union memberTypes="xs:dateTime xs:positiveInteger"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_list_comma">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[^,]+(,[^,])*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_list_space">
|
||||
<xs:list itemType="xs:token"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_nonempty">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:minLength value="1"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_std_uri">
|
||||
<xs:restriction base="xs:anyURI">
|
||||
<xs:pattern value="\s*(https?|ftps?|file)://.+\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
</xs:schema>
|
@ -1,178 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:include schemaLocation="./std.xsd"/>
|
||||
|
||||
<xs:complexType name="t_unix_arg">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="value" type="xs:string" use="optional"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="t_unix_args">
|
||||
<xs:choice minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="long" type="t_unix_arg"/>
|
||||
<xs:element name="short" type="t_unix_arg"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- These were a pain to figure out. -->
|
||||
<!-- wtf. doesn't seem to work?
|
||||
dir: ^\s*(~?/[^/]*)+/?\s*$
|
||||
file: ^\s*(~?/[^/]+)+\s*$
|
||||
reldir: ^\s*[^/](([^/]*)+/?)+\s*$
|
||||
relfile: ^\s*[^/]+(/|[^/]*)*[^/]+\s*$
|
||||
-->
|
||||
<!-- ABSOLUTE directory path -->
|
||||
<xs:simpleType name="t_unix_dirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~?/[^/]*)+/?\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE directory path -->
|
||||
<xs:simpleType name="t_unix_reldirpath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*[^/](([^/]*)+/?)+\s*"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_unix_filepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*(~?/[^/]+)+\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE file path -->
|
||||
<xs:simpleType name="t_unix_relfilepath">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="\s*([^/]+)(/[^/]+)*([^/])*\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ABSOLUTE path (file or directory) -->
|
||||
<xs:simpleType name="t_unix_path">
|
||||
<xs:union memberTypes="t_unix_dirpath t_unix_filepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE path (file or directory) -->
|
||||
<xs:simpleType name="t_unix_relpath">
|
||||
<xs:union memberTypes="t_unix_reldirpath t_unix_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- ANY valid value for the above types. -->
|
||||
<xs:simpleType name="t_unix_anypath">
|
||||
<xs:union memberTypes="t_unix_path t_unix_relpath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE file path -->
|
||||
<xs:simpleType name="t_unix_anyfile">
|
||||
<xs:union memberTypes="t_unix_filepath t_unix_relfilepath"/>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- RELATIVE or ABSOLUTE dir path -->
|
||||
<xs:simpleType name="t_unix_anydir">
|
||||
<xs:union memberTypes="t_unix_dirpath t_unix_reldirpath"/>
|
||||
</xs:simpleType>
|
||||
<!-- END of regex silliness. What an ugly annoyance. -->
|
||||
|
||||
<xs:complexType name="t_unix_nixpass">
|
||||
<xs:choice minOccurs="1" maxOccurs="1">
|
||||
<xs:element name="passwordPlain">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="hashType" use="optional" default="md5" type="t_unix_passwd_hashtypes"/>
|
||||
<xs:attribute name="rounds" use="optional" default="5000" type="xs:positiveInteger"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="passwordHash">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="t_unix_shadowhash">
|
||||
<xs:attribute name="hashType" use="optional" default="md5" type="t_unix_passwd_hashtypes"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<xs:attribute name="locked" use="optional" default="false" type="xs:boolean"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="t_unix_passwd_hashtypes">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="md5"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282 -->
|
||||
<xs:simpleType name="t_unix_portablePosixFilename">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Za-z0-9._-]+"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_unix_posixUserGroup">
|
||||
<!-- https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_437
|
||||
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282
|
||||
https://unix.stackexchange.com/a/435120/284004 -->
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="\s*[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}$)\s*"/>
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="t_unix_shadowhash">
|
||||
<!-- http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES -->
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:pattern value="\s*($1)?($[a-zA-Z0-9./]{1,16})$[a-zA-Z0-9./]{22}\s*"/><!-- md5 -->
|
||||
<xs:whiteSpace value="collapse"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="t_unix_user">
|
||||
<xs:sequence>
|
||||
<xs:element name="password" minOccurs="0" maxOccurs="1" type="t_unix_nixpass"/>
|
||||
<xs:element name="xGroup" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="t_unix_posixUserGroup" use="required"/>
|
||||
<xs:attribute name="create" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="gid" type="xs:positiveInteger" use="optional"/>
|
||||
</xs:complexType>
|
||||
<xs:unique name="uniq_unix_grp">
|
||||
<xs:selector xpath="xGroup"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="t_unix_posixUserGroup" use="required"/>
|
||||
<xs:attribute name="home" type="t_unix_filepath" use="optional"/>
|
||||
<xs:attribute name="uid" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="group" type="t_unix_posixUserGroup" use="optional"/>
|
||||
<xs:attribute name="gid" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="comment" type="t_std_nonempty" use="optional"/>
|
||||
<xs:attribute name="sudo" type="xs:boolean" use="optional" default="false"/>
|
||||
<xs:attribute name="sudoPassword" type="xs:boolean" use="optional" default="true"/>
|
||||
<xs:attribute name="shell" type="t_unix_filepath" use="optional" default="/bin/bash"/>
|
||||
<!-- TODO: change the positiveIntegers to xs:duration? or union? -->
|
||||
<!-- Might be pointless since the smallest increment is 1 day in
|
||||
shadow(5). -->
|
||||
<xs:attribute name="minAge" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="maxAge" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="warnDays" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="inactiveDays" type="xs:positiveInteger" use="optional"/>
|
||||
<xs:attribute name="expireDate" type="t_std_epoch_or_iso" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
@ -1,31 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema targetNamespace="http://xmlsoft.org/"
|
||||
xmlns="http://xmlsoft.org/"
|
||||
xmlns:libxml2="http://xmlsoft.org/"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
|
||||
<xs:include schemaLocation="../lib/types/cksum.xsd"/>
|
||||
<xs:include schemaLocation="../lib/types/std.xsd"/>
|
||||
|
||||
<xs:element name="libxml2">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="sub">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element name="sub2" type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="nestedInclude" type="t_cksum_hash" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="attrOpt" use="optional" default="none specified" type="xs:string"/>
|
||||
<xs:attribute name="attrReq" use="required" type="t_std_nonempty"/>
|
||||
<xs:attribute name="attrBoolNoDef" use="optional" type="xs:boolean"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
Loading…
x
Reference in New Issue
Block a user