Merged
Merge Request #1 · created by Elena Budnik


Data version


From data-version into master

Merged by Elena Budnik

Source branch has been removed
1 participants

27 Feb, 2019

4 commits


22 Feb, 2019

1 commit


21 Feb, 2019

2 commits


CMakeLists.txt.All 0 → 100644
... ... @@ -0,0 +1,92 @@
  1 +cmake_minimum_required(VERSION 2.6)
  2 +
  3 +PROJECT(DDServer)
  4 +
  5 +add_definitions( -DLINUX )
  6 +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/bin/)
  7 +set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib/)
  8 +
  9 +if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  10 + #64 bits
  11 + MESSAGE( STATUS "64 bits" )
  12 + set(CMAKE_C_FLAGS_DEBUG "-ggdb -DLINUX -Dlinux -m64 -march=core2 -fPIC -D_REENTRANT -pthread")
  13 + set(CMAKE_C_FLAGS_RELEASE "-DLINUX -Dlinux -m64 -march=core2 -fPIC -D_REENTRANT -pthread")
  14 + set(USRLIB_DIR "/usr/lib64/:/usr/local/lib64/")
  15 +else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  16 + #32 bits
  17 + MESSAGE( STATUS "32 bits" )
  18 + set(CMAKE_C_FLAGS_DEBUG "-ggdb -DLINUX -march=i686 -fPIC -Dlinux -D_REENTRANT -malign-double -pthread")
  19 + set(CMAKE_C_FLAGS_DEBUG "-DLINUX -march=i686 -fPIC -Dlinux -D_REENTRANT -malign-double -pthread")
  20 + set(USRLIB_DIR "/usr/lib/:/usr/local/lib/")
  21 +endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  22 +
  23 +set (USERLOCAL_ROOT "/usr/local/lib/")
  24 +if (EXISTS "$ENV{USERLOCAL_ROOT}")
  25 + set(USERLOCAL_ROOT "$ENV{USERLOCAL_ROOT}")
  26 + message("USERLOCAL_ROOT forced to ${USERLOCAL_ROOT}")
  27 +endif()
  28 +
  29 +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
  30 +
  31 +find_package( Threads REQUIRED )
  32 +find_package( CRYPT REQUIRED )
  33 +find_package( NetCDF REQUIRED )
  34 +find_package( DDClient REQUIRED )
  35 +find_package( CDF REQUIRED )
  36 +find_package( LibXML2 REQUIRED )
  37 +
  38 +get_filename_component(NETCDFLIB_DIR ${NETCDFLIBRARIES} PATH)
  39 +get_filename_component(DDCLIENTLIB_DIR ${DDCLIENTLIBRARIES} PATH)
  40 +set(DDSERVICE_URL $ENV{DDSERVICE_URL})
  41 +set(DDRESPATH $ENV{DDRESPATH})
  42 +set(DDBASEDATA "$ENV{DDBASEPATH}/DATA")
  43 +set(DDBASEINFO "$ENV{DDBASEPATH}/INFO")
  44 +set(PROXY_HOST $ENV{PROXY_HOST})
  45 +set(PROXY_USERPWD $ENV{PROXY_USERPWD})
  46 +
  47 +configure_file (
  48 + "${CMAKE_SOURCE_DIR}/scripts/DDServer.env.in"
  49 + "${CMAKE_SOURCE_DIR}/scripts/DDServer.env"
  50 +)
  51 +
  52 +configure_file (
  53 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/DDserverWeb_ini.php.in"
  54 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/DDserverWeb_ini.php"
  55 +)
  56 +
  57 +configure_file (
  58 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/dd.wsdl.in"
  59 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/dd.wsdl"
  60 +)
  61 +
  62 +MESSAGE( STATUS "Build DD_Server Project" )
  63 +add_subdirectory(src/SERVER)
  64 +add_subdirectory(src/DECODERS/ascii2nc)
  65 +add_subdirectory(src/DECODERS/cdf2nc)
  66 +add_subdirectory(src/DECODERS/cdfnew2nc)
  67 +add_subdirectory(src/DECODERS/nc2nc)
  68 +add_subdirectory(src/DECODERS/themis)
  69 +add_subdirectory(src/DATA/TOOLS)
  70 +add_subdirectory(src/DDSERVICES/TOOLS)
  71 +add_subdirectory(src/DDADMIN/TOOLS)
  72 +add_subdirectory(tests)
  73 +
  74 +install(FILES "scripts/StartServer" DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  75 +install(FILES "scripts/DDServer.env" DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  76 +file(GLOB scripts "scripts/*.sh")
  77 +install(FILES ${scripts} DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  78 +
  79 +install(DIRECTORY "src/CALLEXT/" DESTINATION bin/CALLEXT)
  80 +install(DIRECTORY "src/DATA/MANAGER/" DESTINATION bin/DATAMANAGER)
  81 +install(DIRECTORY "src/DATA/TEMPLATES/" DESTINATION bin)
  82 +install(DIRECTORY "src/REMOTEDATA/" DESTINATION bin/REMOTEDATA)
  83 +install(DIRECTORY "src/DDADMIN/MANAGER/" DESTINATION bin/USERMANAGER)
  84 +install(DIRECTORY "src/DDSERVICES/SOAP/" DESTINATION DDService)
  85 +install(DIRECTORY "src/DDSERVICES/REST/" DESTINATION DDService)
  86 +
  87 +install(FILES "src/DECODERS/cdf2nc/cdf_to_netcdf_mapping.dat" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
  88 +
  89 +file(GLOB config_files "info/REMOTEDATA/*.xml")
  90 +install(FILES ${config_files} DESTINATION ${DDBASEINFO} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
  91 +
  92 +SET(CMAKE_VERBOSE_MAKEFILE ON)
... ...
CMakeLists.txt.ServicesOnly 0 → 100644
... ... @@ -0,0 +1,92 @@
  1 +cmake_minimum_required(VERSION 2.6)
  2 +
  3 +PROJECT(DDServer)
  4 +
  5 +add_definitions( -DLINUX )
  6 +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/bin/)
  7 +set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib/)
  8 +
  9 +if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  10 + #64 bits
  11 + MESSAGE( STATUS "64 bits" )
  12 + set(CMAKE_C_FLAGS_DEBUG "-ggdb -DLINUX -Dlinux -m64 -march=core2 -fPIC -D_REENTRANT -pthread")
  13 + set(CMAKE_C_FLAGS_RELEASE "-DLINUX -Dlinux -m64 -march=core2 -fPIC -D_REENTRANT -pthread")
  14 + set(USRLIB_DIR "/usr/lib64/:/usr/local/lib64/")
  15 +else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  16 + #32 bits
  17 + MESSAGE( STATUS "32 bits" )
  18 + set(CMAKE_C_FLAGS_DEBUG "-ggdb -DLINUX -march=i686 -fPIC -Dlinux -D_REENTRANT -malign-double -pthread")
  19 + set(CMAKE_C_FLAGS_DEBUG "-DLINUX -march=i686 -fPIC -Dlinux -D_REENTRANT -malign-double -pthread")
  20 + set(USRLIB_DIR "/usr/lib/:/usr/local/lib/")
  21 +endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
  22 +
  23 +set (USERLOCAL_ROOT "/usr/local/lib/")
  24 +if (EXISTS "$ENV{USERLOCAL_ROOT}")
  25 + set(USERLOCAL_ROOT "$ENV{USERLOCAL_ROOT}")
  26 + message("USERLOCAL_ROOT forced to ${USERLOCAL_ROOT}")
  27 +endif()
  28 +
  29 +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
  30 +
  31 +find_package( Threads REQUIRED )
  32 +find_package( CRYPT REQUIRED )
  33 +find_package( NetCDF REQUIRED )
  34 +find_package( DDClient REQUIRED )
  35 +find_package( CDF REQUIRED )
  36 +find_package( LibXML2 REQUIRED )
  37 +
  38 +get_filename_component(NETCDFLIB_DIR ${NETCDFLIBRARIES} PATH)
  39 +get_filename_component(DDCLIENTLIB_DIR ${DDCLIENTLIBRARIES} PATH)
  40 +set(DDSERVICE_URL $ENV{DDSERVICE_URL})
  41 +set(DDRESPATH $ENV{DDRESPATH})
  42 +set(DDBASEDATA "$ENV{DDBASEPATH}/DATA")
  43 +set(DDBASEINFO "$ENV{DDBASEPATH}/INFO")
  44 +set(PROXY_HOST $ENV{PROXY_HOST})
  45 +set(PROXY_USERPWD $ENV{PROXY_USERPWD})
  46 +
  47 +configure_file (
  48 + "${CMAKE_SOURCE_DIR}/scripts/DDServer.env.in"
  49 + "${CMAKE_SOURCE_DIR}/scripts/DDServer.env"
  50 +)
  51 +
  52 +configure_file (
  53 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/DDserverWeb_ini.php.in"
  54 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/DDserverWeb_ini.php"
  55 +)
  56 +
  57 +configure_file (
  58 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/dd.wsdl.in"
  59 + "${CMAKE_SOURCE_DIR}/src/DDSERVICES/SOAP/dd.wsdl"
  60 +)
  61 +
  62 +MESSAGE( STATUS "Build DD_Server Project" )
  63 +# add_subdirectory(src/SERVER)
  64 +# add_subdirectory(src/DECODERS/ascii2nc)
  65 +# add_subdirectory(src/DECODERS/cdf2nc)
  66 +# add_subdirectory(src/DECODERS/cdfnew2nc)
  67 +# add_subdirectory(src/DECODERS/nc2nc)
  68 +# add_subdirectory(src/DECODERS/themis)
  69 +# add_subdirectory(src/DATA/TOOLS)
  70 +# add_subdirectory(src/DDSERVICES/TOOLS)
  71 +# add_subdirectory(src/DDADMIN/TOOLS)
  72 +# add_subdirectory(tests)
  73 +#
  74 +# install(FILES "scripts/StartServer" DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  75 +# install(FILES "scripts/DDServer.env" DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  76 +# file(GLOB scripts "scripts/*.sh")
  77 +# install(FILES ${scripts} DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
  78 +#
  79 +# install(DIRECTORY "src/CALLEXT/" DESTINATION bin/CALLEXT)
  80 +# install(DIRECTORY "src/DATA/MANAGER/" DESTINATION bin/DATAMANAGER)
  81 +# install(DIRECTORY "src/DATA/TEMPLATES/" DESTINATION bin)
  82 +# install(DIRECTORY "src/REMOTEDATA/" DESTINATION bin/REMOTEDATA)
  83 +# install(DIRECTORY "src/DDADMIN/MANAGER/" DESTINATION bin/USERMANAGER)
  84 +install(DIRECTORY "src/DDSERVICES/SOAP/" DESTINATION DDService)
  85 +install(DIRECTORY "src/DDSERVICES/REST/" DESTINATION DDService)
  86 +
  87 +# install(FILES "src/DECODERS/cdf2nc/cdf_to_netcdf_mapping.dat" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
  88 +#
  89 +# file(GLOB config_files "info/REMOTEDATA/*.xml")
  90 +# install(FILES ${config_files} DESTINATION ${DDBASEINFO} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
  91 +
  92 +SET(CMAKE_VERBOSE_MAKEFILE ON)
... ...
src/DDSERVICES/REST/getLastRealUpdate.php 0 → 100644
... ... @@ -0,0 +1,39 @@
  1 +<?php
  2 +/**
  3 +* @file getLastRealUpdate.php
  4 +* @brief Returns modif date of the last modified data file (*.nc.gz) for a given DataSet
  5 +* @version $Id: $
  6 +*/
  7 +
  8 + if (!isset($_GET['id'])) exit('INPUT ERROR');
  9 +
  10 + require_once './DDserverWeb_ini.php';
  11 +
  12 + error_reporting(E_ERROR | E_WARNING | E_PARSE);
  13 +
  14 + $replace = array("-" => "_");
  15 +
  16 + $dataSet = strtr($_GET['id'], $replace);
  17 +
  18 + $referXML = baseDir."/DDsys.xml";
  19 + $DDsys = new DOMDocument("1.0");
  20 + $DDsys->load($referXML);
  21 + $xp = new domxpath($DDsys);
  22 + $VI_NAME = $xp->query("//NAME[.='".$dataSet."']");
  23 +
  24 + if ($VI_NAME->item(0)->nodeValue != NULL)
  25 + {
  26 + $VI = $VI_NAME->item(0)->parentNode;
  27 + $location = $VI->getElementsByTagName("LOCATION")->item(0)->nodeValue;
  28 + $find = 'find '.$location.' -name \'*.nc.gz\' -type f -printf \'%T@ %p\n\' | sort -n | tail -1 | cut -f2- -d" "';
  29 + $lastFile = exec($find);
  30 + if (!file_exists($lastFile))
  31 + exit('NO SUCH FILE '.$lastFile);
  32 + $cmd = 'date "+%Y-%m-%dT%H:%M:%SZ" -u -r '.$lastFile; // for NFS
  33 + $dateModif = exec($cmd);
  34 + exit($dateModif);
  35 + }
  36 + else {
  37 + exit('NO SUCH DATASET');
  38 + }
  39 +?>
... ...
src/DDSERVICES/REST/getLastUpdate.php 0 → 100644
... ... @@ -0,0 +1,40 @@
  1 +<?php
  2 +
  3 +/**
  4 +* @file getLastUpdate.php
  5 +* @brief Returns last modif of *_times.nc for a given DataSet
  6 +* @version $Id: $
  7 +*/
  8 +
  9 + if (!isset($_GET['id'])) exit('INPUT ERROR');
  10 +
  11 + require_once './DDserverWeb_ini.php';
  12 +
  13 + error_reporting(E_ERROR | E_WARNING | E_PARSE);
  14 +
  15 + $replace = array("-" => "_");
  16 +
  17 + $dataSet = strtr($_GET['id'], $replace);
  18 +
  19 + $referXML = baseDir."/DDsys.xml";
  20 + $DDsys = new DOMDocument("1.0");
  21 + $DDsys->load($referXML);
  22 + $xp = new domxpath($DDsys);
  23 + $VI_NAME = $xp->query("//NAME[.='".$dataSet."']");
  24 +
  25 + if ($VI_NAME->item(0)->nodeValue != NULL)
  26 + {
  27 + $VI = $VI_NAME->item(0)->parentNode;
  28 + $location = $VI->getElementsByTagName("LOCATION")->item(0)->nodeValue;
  29 + $times = $VI->getElementsByTagName("TIMES")->item(0)->nodeValue;
  30 + if (!file_exists($location.$times))
  31 + exit('NO TIMES FILE');
  32 +
  33 + $cmd = 'date "+%Y-%m-%dT%H:%M:%SZ" -u -r '. $location.$times; // for NFS
  34 + $dateModif = exec($cmd);
  35 + exit($dateModif);
  36 + }
  37 + else {
  38 + exit('NO SUCH DATASET');
  39 + }
  40 +?>
... ...
src/DDSERVICES/REST/getStartStop.php 0 → 100644
... ... @@ -0,0 +1,43 @@
  1 +<?php
  2 +
  3 +/**
  4 +* @file getStartStop.php
  5 +* @brief Returns GlobalStart - GlobalStop for a given DataSet
  6 +* @version $Id: $
  7 +*/
  8 +
  9 + if (!isset($_GET['id'])) exit('INPUT ERROR');
  10 +
  11 + require_once './DDserverWeb_ini.php';
  12 +
  13 + error_reporting(E_ERROR | E_WARNING | E_PARSE);
  14 +
  15 + $replace = array("-" => "_");
  16 +
  17 + $dataSet = strtr($_GET['id'], $replace);
  18 +
  19 + $referXML = baseDir."/DDsys.xml";
  20 + $DDsys = new DOMDocument("1.0");
  21 + $DDsys->load($referXML);
  22 + $xp = new domxpath($DDsys);
  23 + $VI_NAME = $xp->query("//NAME[.='".$dataSet."']");
  24 +
  25 + if ($VI_NAME->item(0)->nodeValue != NULL)
  26 + {
  27 + $VI = $VI_NAME->item(0)->parentNode;
  28 + $location = $VI->getElementsByTagName("LOCATION")->item(0)->nodeValue;
  29 + $info = basename($VI->getElementsByTagName("INFO")->item(0)->nodeValue, '.nc').'.xml';
  30 + if (!file_exists($location.$info))
  31 + exit('NO INFO XML');
  32 +
  33 + $infoDom = new DOMDocument("1.0");
  34 + $infoDom->loadXML(file_get_contents($location.$info)); // for NFS
  35 +
  36 + $Start = $infoDom->getElementsByTagName("GlobalStart")->item(0)->nodeValue;
  37 + $Stop = $infoDom->getElementsByTagName("GlobalStop")->item(0)->nodeValue;
  38 + exit($Start.",".$Stop);
  39 + }
  40 + else {
  41 + exit('NO SUCH DATASET');
  42 + }
  43 +?>
... ...
src/DDSERVICES/SOAP/DDserverWeb.php
... ... @@ -307,20 +307,75 @@
307 307 }
308 308 }
309 309  
  310 +/**
  311 +* Returns date of last modif of *times.nc in DD Base
  312 +*/
  313 +
  314 + function getLastUpdate($dataSet)
  315 + {
  316 + $referXML = baseDir."/DDsys.xml";
  317 + $DDsys = new DOMDocument("1.0");
  318 + $DDsys->load($referXML);
  319 + $xp = new domxpath($DDsys);
  320 + $VI = $xp->query("//NAME[.='".$dataSet."']");
  321 +
  322 + if ($VI->item(0)->nodeValue != NULL)
  323 + {
  324 + $location = $VI->item(0)->parentNode->getElementsByTagName("LOCATION")->item(0)->nodeValue;
  325 + $times = $VI->getElementsByTagName("TIMES")->item(0)->nodeValue;
  326 + if (!file_exists($location.$times))
  327 + return null;
  328 +
  329 + $cmd = 'date "+%Y-%m-%dT%H:%M:%SZ" -u -r '. $location.$times; // for NFS
  330 + $dateModif = exec($cmd);
  331 + return $dateModif;
  332 + }
  333 +
  334 + return null;
  335 + }
  336 +
  337 +/**
  338 +* Returns modif date of the last modified data file (*.nc.gz) for a given DataSet
  339 +*/
310 340  
  341 + function getLastRealUpdate($dataSet)
  342 + {
  343 + $referXML = baseDir."/DDsys.xml";
  344 + $DDsys = new DOMDocument("1.0");
  345 + $DDsys->load($referXML);
  346 + $xp = new domxpath($DDsys);
  347 + $VI = $xp->query("//NAME[.='".$dataSet."']");
  348 +
  349 + if ($VI->item(0)->nodeValue != NULL)
  350 + {
  351 + $location = $VI->item(0)->parentNode->getElementsByTagName("LOCATION")->item(0)->nodeValue;
  352 +
  353 + $find = 'find '.$location.' -name \'*.nc.gz\' -type f -printf \'%T@ %p\n\' | sort -n | tail -1 | cut -f2- -d" "';
  354 + $lastFile = exec($find);
  355 + if (!file_exists($lastFile))
  356 + exit('NO SUCH FILE '.$lastFile);
  357 + $cmd = 'date "+%Y-%m-%dT%H:%M:%SZ" -u -r '.$lastFile; // for NFS
  358 +
  359 + $dateModif = exec($cmd);
  360 + return $dateModif;
  361 + }
  362 +
  363 + return null;
  364 + }
  365 +
  366 +
311 367 /**
312 368 * Returns String Start-Stop for local DataSet in DD Base
313 369 */
314 370  
315 371 function getStartStop($dataSet)
316 372 {
317   - if ($dataSet != "compound") {
318   - $referFile = baseDir."/refer.nc";
319   - $cmd = DDBASEBIN."/StartStop ".$referFile." ".$dataSet;
320   - $res = system($cmd);
321   -
322   - return $res;
323   - }
  373 +
  374 + $referFile = baseDir."/refer.nc";
  375 + $cmd = DDBASEBIN."/StartStop ".$referFile." ".$dataSet;
  376 + $res = system($cmd);
  377 +
  378 + return $res;
324 379 }
325 380  
326 381 /**
... ...
src/DDSERVICES/SOAP/dd.wsdl.in
... ... @@ -62,6 +62,18 @@
62 62 <message name='getStartStopResponse'>
63 63 <part name='Result' type='xsd:string'/>
64 64 </message>
  65 +<message name='getLastUpdateRequest'>
  66 + <part name='dataSet' type='xsd:string'/>
  67 +</message>
  68 +<message name='getLastUpdateResponse'>
  69 + <part name='Result' type='xsd:string'/>
  70 +</message>
  71 +<message name='getLastRealUpdateRequest'>
  72 + <part name='dataSet' type='xsd:string'/>
  73 +</message>
  74 +<message name='getLastRealUpdateResponse'>
  75 + <part name='Result' type='xsd:string'/>
  76 +</message>
65 77 <message name='getInfoRequest'>
66 78 <part name='dataSet' type='xsd:string'/>
67 79 <part name='infoName' type='xsd:string'/>
... ... @@ -147,6 +159,14 @@
147 159 <operation name='getStartStop'>
148 160 <input message='tns:getStartStopRequest'/>
149 161 <output message='tns:getStartStopResponse'/>
  162 + </operation>
  163 + <operation name='getLastUpdate'>
  164 + <input message='tns:getLastUpdateRequest'/>
  165 + <output message='tns:getLastUpdateResponse'/>
  166 + </operation>
  167 + <operation name='getLastRealUpdate'>
  168 + <input message='tns:getLastRealUpdateRequest'/>
  169 + <output message='tns:getLastRealUpdateResponse'/>
150 170 </operation>
151 171 <operation name='getInfo'>
152 172 <input message='tns:getInfoRequest'/>
... ... @@ -240,7 +260,29 @@
240 260 <soap:body use='encoded'
241 261 encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
242 262 </output>
243   - </operation>
  263 + </operation>
  264 + <operation name='getLastUpdate'>
  265 + <soap:operation soapAction='getLastUpdate'/>
  266 + <input>
  267 + <soap:body use='encoded'
  268 + encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  269 + </input>
  270 + <output>
  271 + <soap:body use='encoded'
  272 + encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  273 + </output>
  274 + </operation>
  275 + <operation name='getLastRealUpdate'>
  276 + <soap:operation soapAction='getLastRealUpdate'/>
  277 + <input>
  278 + <soap:body use='encoded'
  279 + encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  280 + </input>
  281 + <output>
  282 + <soap:body use='encoded'
  283 + encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  284 + </output>
  285 + </operation>
244 286 <operation name='getInfo'>
245 287 <soap:operation soapAction='getSInfo'/>
246 288 <input>
... ...