Merge "update verigraph"
[parser.git] / verigraph / schema / xml_components.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  Copyright (c) 2017 Politecnico di Torino and others.
4
5  All rights reserved. This program and the accompanying materials
6  are made available under the terms of the Apache License, Version 2.0
7  which accompanies this distribution, and is available at
8  http://www.apache.org/licenses/LICENSE-2.0
9 -->
10 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
11     <xsd:simpleType name="functionalTypes">
12         <xsd:restriction base="xsd:string">
13             <xsd:enumeration value="FIREWALL" />
14             <xsd:enumeration value="ENDHOST" />
15             <xsd:enumeration value="ENDPOINT" />
16             <xsd:enumeration value="ANTISPAM" />
17             <xsd:enumeration value="CACHE" />
18             <xsd:enumeration value="DPI" />
19             <xsd:enumeration value="MAILCLIENT" />
20             <xsd:enumeration value="MAILSERVER" />
21             <xsd:enumeration value="NAT" />
22             <xsd:enumeration value="VPNACCESS" />
23             <xsd:enumeration value="VPNEXIT" />
24             <xsd:enumeration value="WEBCLIENT" />
25             <xsd:enumeration value="WEBSERVER" />
26             <xsd:enumeration value="FIELDMODIFIER" />
27         </xsd:restriction>
28     </xsd:simpleType>
29     <xsd:simpleType name="protocolTypes">
30         <xsd:restriction base="xsd:string">
31             <xsd:enumeration value="HTTP_REQUEST" />
32             <xsd:enumeration value="HTTP_RESPONSE" />
33             <xsd:enumeration value="POP3_REQUEST" />
34             <xsd:enumeration value="POP3_RESPONSE" />
35         </xsd:restriction>
36     </xsd:simpleType>
37     <xsd:element name="graphs">
38         <xsd:complexType>
39             <xsd:sequence>
40                 <xsd:element ref="graph" maxOccurs="unbounded"
41                     minOccurs="0" />
42             </xsd:sequence>
43         </xsd:complexType>
44         <xsd:unique name="uniqueGraph">
45             <xsd:selector xpath="graph" />
46             <xsd:field xpath="@id" />
47         </xsd:unique>
48     </xsd:element>
49     <xsd:element name="graph">
50         <xsd:complexType>
51             <xsd:sequence>
52                 <xsd:element ref="node" maxOccurs="unbounded"></xsd:element>
53             </xsd:sequence>
54             <xsd:attribute name="id" type="xsd:long" use="optional" />
55         </xsd:complexType>
56         <xsd:unique name="uniqueNodeId">
57             <xsd:selector xpath="node" />
58             <xsd:field xpath="@id" />
59         </xsd:unique>
60         <xsd:key name="keyNode">
61             <xsd:selector xpath="node" />
62             <xsd:field xpath="@name" />
63         </xsd:key>
64         <xsd:keyref name="keyRefNodeSrc" refer="keyNode">
65             <xsd:selector xpath="node/neighbour" />
66             <xsd:field xpath="@name" />
67         </xsd:keyref>
68     </xsd:element>
69     <xsd:element name="node">
70         <xsd:complexType>
71             <xsd:sequence>
72                 <xsd:element ref="neighbour" maxOccurs="unbounded"
73                     minOccurs="0" />
74                 <xsd:element ref="configuration" maxOccurs="1"
75                     minOccurs="1" />
76             </xsd:sequence>
77             <xsd:attribute name="id" type="xsd:long" use="optional" />
78             <xsd:attribute name="name" type="xsd:string"
79                 use="required" />
80             <xsd:attribute name="functional_type" type="functionalTypes"
81                 use="required" />
82         </xsd:complexType>
83         <xsd:unique name="uniqueNeighbourId">
84             <xsd:selector xpath="neighbour" />
85             <xsd:field xpath="@id" />
86         </xsd:unique>
87         <xsd:unique name="uniqueConfigurationId">
88             <xsd:selector xpath="neighbour" />
89             <xsd:field xpath="@id" />
90         </xsd:unique>
91     </xsd:element>
92     <xsd:element name="neighbour">
93         <xsd:complexType>
94             <xsd:attribute name="id" type="xsd:long" use="optional" />
95             <xsd:attribute name="name" type="xsd:string"
96                 use="required" />
97         </xsd:complexType>
98     </xsd:element>
99     <xsd:element name="configuration">
100         <xsd:complexType>
101             <xsd:choice>
102                 <xsd:element ref="firewall" />
103                 <xsd:element ref="endhost" />
104                 <xsd:element ref="endpoint" />
105                 <xsd:element ref="antispam" />
106                 <xsd:element ref="cache" />
107                 <xsd:element ref="dpi" />
108                 <xsd:element ref="mailclient" />
109                 <xsd:element ref="mailserver" />
110                 <xsd:element ref="nat" />
111                 <xsd:element ref="vpnaccess" />
112                 <xsd:element ref="vpnexit" />
113                 <xsd:element ref="webclient" />
114                 <xsd:element ref="webserver" />
115                 <xsd:element ref="fieldmodifier" />
116             </xsd:choice>
117             <xsd:attribute name="id" type="xsd:long" use="optional" />
118             <xsd:attribute name="name" type="xsd:string"
119                 use="required" />
120             <xsd:attribute name="description" type="xsd:string"
121                 use="optional" />
122         </xsd:complexType>
123     </xsd:element>
124     <xsd:element name="paths">
125         <xsd:complexType>
126             <xsd:choice>
127                 <xsd:element name="message" type="xsd:string" />
128                 <xsd:element name="path" type="xsd:string"
129                     maxOccurs="unbounded" />
130             </xsd:choice>
131             <xsd:attribute name="source" type="xsd:string"
132                 use="required" />
133             <xsd:attribute name="destination" type="xsd:string"
134                 use="required" />
135             <xsd:attribute name="direction" type="xsd:string"
136                 use="required" />
137         </xsd:complexType>
138     </xsd:element>
139     <xsd:element name="firewall">
140         <xsd:complexType>
141             <xsd:sequence>
142                 <xsd:element ref="elements" maxOccurs="unbounded" />
143             </xsd:sequence>
144         </xsd:complexType>
145     </xsd:element>
146     <xsd:element name="elements">
147         <xsd:complexType>
148             <xsd:sequence>
149                 <xsd:element name="source" type="xsd:string" />
150                 <xsd:element name="destination" type="xsd:string" />
151             </xsd:sequence>
152         </xsd:complexType>
153     </xsd:element>
154     <xsd:element name="endhost">
155         <xsd:complexType>
156             <xsd:attribute name="body" type="xsd:string" />
157             <xsd:attribute name="sequence" type="xsd:integer" />
158             <xsd:attribute name="protocol" type="protocolTypes" />
159             <xsd:attribute name="email_from" type="xsd:string" />
160             <xsd:attribute name="url" type="xsd:string" />
161             <xsd:attribute name="options" type="xsd:string" />
162             <xsd:attribute name="destination" type="xsd:string" />
163         </xsd:complexType>
164     </xsd:element>
165     <xsd:element name="endpoint">
166         <xsd:complexType>
167             <xsd:sequence>
168                 <xsd:element name="name" type="xsd:string"
169                     nillable="true" />
170             </xsd:sequence>
171         </xsd:complexType>
172     </xsd:element>
173     <xsd:element name="antispam">
174         <xsd:complexType>
175             <xsd:sequence minOccurs="1" maxOccurs="unbounded">
176                 <xsd:element name="source" type="xsd:string" />
177             </xsd:sequence>
178         </xsd:complexType>
179     </xsd:element>
180     <xsd:element name="cache">
181         <xsd:complexType>
182             <xsd:sequence minOccurs="1" maxOccurs="unbounded">
183                 <xsd:element name="resource" type="xsd:string" />
184             </xsd:sequence>
185         </xsd:complexType>
186     </xsd:element>
187     <xsd:element name="dpi">
188         <xsd:complexType>
189             <xsd:sequence minOccurs="1" maxOccurs="unbounded">
190                 <xsd:element name="notAllowed" type="xsd:string" />
191             </xsd:sequence>
192         </xsd:complexType>
193     </xsd:element>
194     <xsd:element name="mailclient">
195         <xsd:complexType>
196             <xsd:attribute name="mailserver" type="xsd:string"
197                 use="required" />
198         </xsd:complexType>
199     </xsd:element>
200     <xsd:element name="mailserver">
201         <xsd:complexType>
202             <xsd:sequence>
203                 <xsd:element name="name" type="xsd:string"
204                     nillable="true" />
205             </xsd:sequence>
206         </xsd:complexType>
207     </xsd:element>
208     <xsd:element name="nat">
209         <xsd:complexType>
210             <xsd:sequence minOccurs="1" maxOccurs="unbounded">
211                 <xsd:element name="source" type="xsd:string" />
212             </xsd:sequence>
213         </xsd:complexType>
214     </xsd:element>
215     <xsd:element name="vpnaccess">
216         <xsd:complexType>
217             <xsd:attribute name="vpnexit" type="xsd:string"
218                 use="required" />
219         </xsd:complexType>
220     </xsd:element>
221     <xsd:element name="vpnexit">
222         <xsd:complexType>
223             <xsd:attribute name="vpnaccess" type="xsd:string"
224                 use="required" />
225         </xsd:complexType>
226     </xsd:element>
227     <xsd:element name="webclient">
228         <xsd:complexType>
229             <xsd:attribute name="nameWebServer" type="xsd:string"
230                 use="required" />
231         </xsd:complexType>
232     </xsd:element>
233     <xsd:element name="webserver">
234         <xsd:complexType>
235             <xsd:sequence>
236                 <xsd:element name="name" type="xsd:string"
237                     nillable="true" />
238             </xsd:sequence>
239         </xsd:complexType>
240     </xsd:element>
241     <xsd:element name="fieldmodifier">
242         <xsd:complexType>
243             <xsd:sequence>
244                 <xsd:element name="name" type="xsd:string"
245                     nillable="true" />
246             </xsd:sequence>
247         </xsd:complexType>
248     </xsd:element>
249 </xsd:schema>