
    shc                     j   d Z dZdZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZ ddlmZmZmZ ddlmZ  ej>                         5   ej@                  de!       ddl"m#Z# ddd       ddl$m%Z% dZ&dZ'dZ(dZ) G d de      Z*y# 1 sw Y   #xY w)zCopyright 2022, 3LizzGPL version 3zinfo@3liz.org    N)Optional)Qgis)QtQRegularExpression)QFontDatabase)QgsServerOgcApiQgsServerOgcApiHandler)ServiceError)check_environment_variableto_bool)BING_KEY
GOOGLE_KEYstrict_tos_check   )create_server_contextignore)category)gdal)Logger)nameversioncommitNumber
commitSha1dateTime
repositoryhomepage
DataPlotly)wfsOutputExtensionlizmap_server
atlasprint)WMSWFSWCSWMTS
EXPRESSIONLIZMAPc                   f     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
ee   fdZd Z xZS )ServerInfoHandlerc                     t         |           t               | _        t	        j
                  d| j                  j                   d       y )Nz*Server information handler using context '')super__init__r   _contextr   infor   )self	__class__s    A/var/www/qgis-server/plugins/lizmap_server/server_info_handler.pyr-   zServerInfoHandler.__init__B   s:    -/@ASAS@TTUVW    c                     t        d      S )Nzserver.jsonr   r0   s    r2   pathzServerInfoHandler.pathG   s    !-00r3   c                      y)NzServer information r5   s    r2   summaryzServerInfoHandler.summaryJ   s    #r3   c                      y)Nz&Get info about the current QGIS serverr8   r5   s    r2   descriptionzServerInfoHandler.descriptionM   s    7r3   c                      y)Nserverr8   r5   s    r2   operationIdzServerInfoHandler.operationIdP   s    r3   c                      y)NzHandler Lizmap API server infor8   r5   s    r2   	linkTitlezServerInfoHandler.linkTitleS   s    /r3   c                 "    t         j                  S N)r	   datar5   s    r2   linkTypezServerInfoHandler.linkTypeV   s    ###r3   c                     	 | j                  |       y # t        $ r) t        j                  t	        j
                                 w xY wrB   )_handleRequest	Exceptionr   critical	traceback
format_exc)r0   contexts     r2   handleRequestzServerInfoHandler.handleRequestY   s<    	( 	OOI0023	s	    2Ac           
      t   t               st        ddd      | j                  j                  }t	        | j                  j                  t                    }t        D ]  }||vsd|d||<    t        j                  dd      }|dk7  r1t        |j                         vr|dk(  rd	}nd
}|t        dd|t        <   t        j                  j                  dd      \  }}g }	t        D ]A  }
|j!                         j#                         j%                  |
      s1|	j'                  |
       C t        j(                         dk7  rt        j(                         }nd}	 d|j+                  dd       }|rnt	        d|j.                  |j0                  |j2                  |j4                  |j6                  | j                  j8                  | j                  j:                        }nt	        dd      }||||t        j<                  d|t?        j@                         tC        t>              tE        j@                         tC        tD              i|	|tG               jI                         dtK        jL                  d      tN        j0                  tP        jR                  dd}| jU                  ||       y # t,        $ r d}Y Iw xY w)NzBad request errorzInvalid requesti  z	Not found)r   r   LZM_ALLOCATION_MODE sharedz.Not available on the "Basic" Lizmap Cloud planzNot installedz:https://github.com/ghtmtt/DataPlotly/blob/master/README.md)r   r   r   -r   exportedzfinal-._T)foundr   r   build_id	commit_idstablegit_repository_urldocumentation_urlFznot used)rU   r   )r   tagr   rW   version_int)metadatapy_qgis_serverexternal_providers_tos_checksservicespluginsfontsVERSION_NUM)r   pythonqt)qgis_serverenvironment)+r   r   r.   r]   dictinstalled_pluginsPLUGIN_METADATA_KEYSEXPECTED_PLUGINSosgetenvDATA_PLOTLYkeysr   QGIS_VERSIONsplitEXPECTED_SERVICESserverInterfaceserviceRegistry
getServiceappend
devVersionreplacerG   r   r   rV   rW   	is_stablerY   rZ   QGIS_VERSION_INTr   lowerr   r   r   familiesr   VersionInfosysr   QT_VERSION_STRwrite)r0   rK   server_metadatara   expectedallocated_ressourcesr   human_version
human_nameservices_availableservicerW   r[   qgis_server_metarC   s                  r2   rF   z ServerInfoHandler._handleRequeste   s   )+24EsKK--00t}}667KLM( 	Hw&*$%!	  "yy)>C2%+W\\^*K#x/J * ##X$GK  %)$5$5$;$;C$C!z( 	3G&&(88:EEgN"))'2	3 ??
*)II	=00c:;<C #$))'//(11)33&00#'==#C#C"&--"A"A	   $%D  -&!*#'#8#8 #3$$&(8(DNN$&6x&@2
 /"&113!& ((7++'')
4 	

4!W  	C	s   J( (J76J7returnc                     | j                         j                         }|j                         }t        |j	                  d            sy|j                         }|j	                  d      duS )z Check if this QGIS Server supports custom headers.

         Returns None if the check is not requested with the GET parameter CHECK_CUSTOM_HEADERS

         If requested, returns boolean if X-Check-Custom-Headers is found in headers.
         CHECK_CUSTOM_HEADERSNzX-Check-Custom-Headers)serverIfacerequestHandlerparameterMapr   getrequestHeaders)r0   handlerparamsheaderss       r2   support_custom_headersz(ServerInfoHandler.support_custom_headers   sa     ""$335%%'vzz"89:((*{{34D@@r3   c                 N    ddl m}  |dd|j                  j                  d      gS )Nr   )QgsServerQueryStringParameterr   FzIf we check custom headers)qgis.serverr   TypeString)r0   rK   r   s      r2   
parameterszServerInfoHandler.parameters   s/    =)&-2299,	
 	
r3   )__name__
__module____qualname__r-   r6   r9   r;   r>   r@   rD   rL   rF   r   boolr   r   __classcell__)r1   s   @r2   r)   r)   @   sJ    X
1$80$
["zA A 	
r3   r)   )+__copyright____license__	__email__rl   r~   rI   warningstypingr   	qgis.corer   	qgis.PyQtr   qgis.PyQt.QtCorer   qgis.PyQt.QtGuir   r   r	   r
   lizmap_server.exceptionr   lizmap_server.toolsr   r   lizmap_server.tos_definitionsr   r   r   rK   r   catch_warningsfilterwarningsDeprecationWarningosgeor   loggerr   rj   rn   rk   rr   r)   r8   r3   r2   <module>r      s   &	 	 
      / )
 1 C  +X HH/AB 
    J [
. [
C s   ,B))B2