﻿<?xml version="1.0" encoding="utf-8"?>
<!--
		MultiX Network Applications Development Toolkit.
		Copyright (C) 2007, Moshe Shitrit, Mitug Distributed Systems Ltd., All Rights Reserved.
		
		This file is part of MultiX.
		
		MultiX is free software; you can redistribute it and/or modify it under the terms of the 
		GNU General Public License as published by the Free Software Foundation; 
		either version 2 of the License, or (at your option) any later version. 
		
		MultiX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
		without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
		See the GNU General Public License for more details.
		You should have received a copy of the GNU General Public License along with this program;
		if not, write to the 
		Free Software Foundation, Inc., 
		59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
		
		Author contact information: 
		msr@mitug.co.il
		
-->
<s:schema xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://mitug.co.il/MultiXTpm" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" targetNamespace="http://mitug.co.il/MultiXTpm">
	<s:complexType name="ConfigData">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="LastUpdate" type="s:dateTime" />
			<s:element minOccurs="0" maxOccurs="1" name="UsersPermissionsFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ProcessClasses" type="tns:ArrayOfProcessClass" />
			<s:element minOccurs="0" maxOccurs="1" name="Links" type="tns:ArrayOfLink" />
			<s:element minOccurs="0" maxOccurs="1" name="Groups" type="tns:ArrayOfGroup" />
			<s:element minOccurs="0" maxOccurs="1" name="Messages" type="tns:ArrayOfMessage" />
			<s:element minOccurs="0" maxOccurs="1" name="UsersPermissions" type="tns:ArrayOfUserPermission" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfUserPermission">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="UserPermission" nillable="true" type="tns:UserPermission" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="UserPermission">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string" />
			<s:element minOccurs="1" maxOccurs="1"  type="s:boolean" name="IsGroup"/>
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="GetConfig" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="UpdateConfig" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="GetSystemStatus" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="RestartProcess" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="RestartGroup" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="StartProcess" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="StartGroup" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ShutdownProcess" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ShutdownGroup" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="SuspendGroup" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="SuspendProcess" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ResumeGroup" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ResumeProcess" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="RestartAll" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="StartAll" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ShutdownAll" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="SuspendAll" />
			<s:element minOccurs="1" maxOccurs="1" type="s:boolean" name="ResumeAll" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfProcessClass">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="ProcessClass" nillable="true" type="tns:ProcessClass" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ProcessClass">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="PasswordToSend" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ExpectedPassword" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ExecCmd" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ClassName" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="AdditionalConfigTextFile" type="s:string" />
			<s:element minOccurs="1" maxOccurs="1" name="DebugLevel" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="DefaultSendTimeout" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="ExecParams" type="s:string" />
			<s:element minOccurs="1" maxOccurs="1" name="MaxQueueSize" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="MaxSessions" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="MaxRecoveryQueueSize" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="AutoStart" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="MinInstances" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="MaxInstances" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="StartProcessDelay" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="InactivityTimer" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="Params" type="tns:ArrayOfParam" />
			<s:element minOccurs="0" maxOccurs="1" name="LinkIDs" type="tns:ArrayOfInt" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfParam">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="Param" nillable="true" type="tns:Param" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="Param">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="1" name="ParamName" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ParamValue" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="XmlParamValue">
				<s:complexType mixed="true">
					<s:sequence>
						<s:any maxOccurs="unbounded" />
					</s:sequence>
					<s:anyAttribute />
				</s:complexType>
			</s:element>
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfInt">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="ID" type="s:int" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfLink">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="Link" nillable="true" type="tns:Link" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="Link">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
			<s:element minOccurs="1" maxOccurs="1" name="LinkType" type="tns:MultiXLinkType" />
			<s:element minOccurs="1" maxOccurs="1" name="OpenMode" type="tns:MultiXOpenMode" />
			<s:element minOccurs="1" maxOccurs="1" name="Raw" type="s:boolean" />
			<s:element minOccurs="0" maxOccurs="1" name="LocalAddress" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="LocalPort" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="RemoteAddress" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="RemotePort" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="SSLParams" type="tns:SSLParams" />
			<s:element minOccurs="0" maxOccurs="1" name="Params" type="tns:ArrayOfParam" />
		</s:sequence>
	</s:complexType>
	<s:simpleType name="MultiXLinkType">
		<s:restriction base="s:string">
			<s:enumeration value="MultiXLinkTypeFirst" />
			<s:enumeration value="MultiXLinkTypeTcp" />
			<s:enumeration value="MultiXLinkTypeLast" />
		</s:restriction>
	</s:simpleType>
	<s:simpleType name="MultiXOpenMode">
		<s:restriction base="s:string">
			<s:enumeration value="MultiXOpenModeFirst" />
			<s:enumeration value="MultiXOpenModeServer" />
			<s:enumeration value="MultiXOpenModeClient" />
			<s:enumeration value="MultiXOpenModeAccept" />
			<s:enumeration value="MultiXOpenModeLast" />
		</s:restriction>
	</s:simpleType>
	<s:complexType name="SSLParams">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="API" type="tns:SSL_API" />
			<s:element minOccurs="1" maxOccurs="1" name="ClientAuthenticationRequired" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="ServerAuthenticationRequired" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="ServerNameVerificationRequired" type="s:boolean" />
			<s:element minOccurs="0" maxOccurs="1" name="TrustStoreFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="TrustStoreDirectory" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="CertificateFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="PrivateKeyFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="PrivateKeyPassword" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="RSAPrivateKeyFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="DHFile" type="s:string" />
		</s:sequence>
	</s:complexType>
	<s:simpleType name="SSL_API">
		<s:restriction base="s:string">
			<s:enumeration value="NoSSLAPI" />
			<s:enumeration value="OpenSSL" />
		</s:restriction>
	</s:simpleType>
	<s:complexType name="ArrayOfGroup">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="Group" nillable="true" type="tns:Group" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="Group">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ProcessClassIDs" type="tns:ArrayOfInt" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfMessage">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="Message" nillable="true" type="tns:Message" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="Message">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
			<s:element minOccurs="1" maxOccurs="1" name="Stateful" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="DbProtected" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="Timeout" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="Priority" type="s:int" />
			<s:element minOccurs="0" maxOccurs="1" name="WSURL" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="WSSoapAction" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="WSDllFile" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="WSDllFunction" type="s:string" />
			<s:element minOccurs="0" maxOccurs="1" name="ForwardFlags" type="tns:ArrayOfGroupForwardFlags" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="ArrayOfGroupForwardFlags">
		<s:sequence>
			<s:element minOccurs="0" maxOccurs="unbounded" name="Flags" nillable="true" type="tns:GroupForwardFlags" />
		</s:sequence>
	</s:complexType>
	<s:complexType name="GroupForwardFlags">
		<s:sequence>
			<s:element minOccurs="1" maxOccurs="1" name="GroupID" type="s:int" />
			<s:element minOccurs="1" maxOccurs="1" name="ResponseRequired" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="IgnoreResponse" type="s:boolean" />
			<s:element minOccurs="1" maxOccurs="1" name="ForwardToAll" type="s:boolean" />
		</s:sequence>
	</s:complexType>
	<s:element name="ConfigData" type="tns:ConfigData">
	</s:element>
</s:schema>
