ó
`õü[c        	   @   s'  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z d  d l m Z d  d l m Z e e ƒ Z e e _ d e _ e  j j e  j j e ƒ ƒ Z d e f d „  ƒ  YZ e e j j d	 <e j d
 „  ƒ Z e j d „  ƒ Z  e j! d ƒ d „  ƒ Z" e j! d ƒ d „  ƒ Z# e j! d ƒ d „  ƒ Z$ e j! d ƒ e j! d ƒ d d „ ƒ ƒ Z& e j! d d d g ƒd „  ƒ Z' e j! d d d g ƒd d „ ƒ Z( e j! d d d g ƒe j! d d d g ƒd d d „ ƒ ƒ Z) e j! d  d d g ƒe j! d! d d g ƒd d" „ ƒ ƒ Z* e j! d# d d g ƒd$ „  ƒ Z+ e j! d% d d g ƒd& „  ƒ Z, e j! d' ƒ e j! d( ƒ e j! d) ƒ d* d d+ „ ƒ ƒ ƒ Z- d, e. f d- „  ƒ  YZ/ e/ e j0 ƒ e _0 e d. k r#e j1 d/ d0 d1 d2 d3 e d4 e ƒ n  d S(5   iÿÿÿÿN(   t   Flaskt   requestt   redirectt   url_fort   make_responset   render_template(   t   send_from_directoryt   g(   t   secure_filename(   t   BaseConvertergš™™™™™ñ?t   RegexConverterc           B   s   e  Z d  „  Z RS(   c         G   s'   t  t |  ƒ j | ƒ | d |  _ d  S(   Ni    (   t   superR
   t   __init__t   regex(   t   selft   url_mapt   items(    (    s   /var/www/nescon/nescon.pyR      s    (   t   __name__t
   __module__R   (    (    (    s   /var/www/nescon/nescon.pyR
      s   R   c           C   s   t  j  ƒ  t _ d  S(   N(   t   timeR   t   start(    (    (    s   /var/www/nescon/nescon.pyt   before_request   s    c         C   s´   t  j  ƒ  t j } d |  j d <d |  j d <d |  j d <t j j t j j t ƒ ƒ |  j d <t j j t j	 ƒ  ƒ |  j d <d	 |  j d
 <d | d |  j d <t
 j |  j d <|  S(   Ns.   max-age=0, no-cache, no-store, must-revalidates   Cache-Controls   Thu, 29 Nov 1984 19:40:00t   Expiress   no-cachet   Pragmas   Run-int   CWDs   4 8 15 16 23 42s   X-LOSTs   %1.1f msiè  s	   X-Runtimes   X-App-Version(   R   R   R   t   headerst   ost   patht   dirnamet   abspatht   __file__t   getcwdt   appt   version(   t   responset   diff(    (    s   /var/www/nescon/nescon.pyt
   add_header   s    %s(   /<regex('(img|css|js)'):head>/<resource>c         C   s   t  t d d |  d | ƒƒ S(   Nt   statict   filenamet   /(   R   R   (   t   headt   resource(    (    s   /var/www/nescon/nescon.pyt
   get_static'   s    s(   /<regex('(font|fonts)'):head>/<resource>c         C   s   t  t d d d | ƒƒ S(   NR%   R&   s   fonts/(   R   R   (   R(   R)   (    (    s   /var/www/nescon/nescon.pyt
   get_images+   s    s   /pubkey/c           C   s   t  t j j t d ƒ d d ƒS(   NR%   R&   s   pubkey/key.pub(   R   R   R   t   joint   base(    (    (    s   /var/www/nescon/nescon.pyt   get_public_key/   s    s"   /<regex('([A-Z0-9]{4,11})'):hash>/s—   /<regex('([A-Z0-9]{4,11})'):hash>/<regex('overview|accessories|dates|report|statistics|notes|feedback|acknowledgment|cleaning|quality-control'):target>c         C   sP   d d  l  } t | j ƒ  ƒ j ƒ  } t t d d | ƒƒ } | j d | ƒ | S(   Niÿÿÿÿs	   root.htmlt   uuidR   (   R/   t   strt   uuid4t   upperR   R   t
   set_cookie(   t   hasht   targetR/   t   my_uuidt   resp(    (    s   /var/www/nescon/nescon.pyt   root3   s
    s   /file/<uuid:uuid>t   methodst   GETc         C   s   |  GHt  d d d ƒS(   Ns   /tmp/R&   s
   image.jpeg(   R   (   R/   (    (    s   /var/www/nescon/nescon.pyt   get_file=   s    s=   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:version>/t   POSTi    c         C   sù   d d  l  } | j t j ƒ } | d } d d  l } | j d ƒ d g d | |  f g } t j j t	 | Œ } t j j
 | ƒ s’ t j | ƒ n  d | |  | f } t t j j | | ƒ d ƒ }	 |	 j t j ƒ |	 j ƒ  d d  l }
 d d  l } d S(	   Niÿÿÿÿt   numberi   t   interventionss   %s_%ss   %s_%s_%04d.jsont   wbs   Ahoy, capt'n(   t   jsont   loadsR   t   dataR   t   sleepR   R   R,   R-   t   existst   makedirst   opent   writet   closet
   subprocesst   shlex(   R4   R!   R@   t   payloadR=   R   t   subdirt	   directoryR&   t   fileRI   RJ   (    (    s   /var/www/nescon/nescon.pyt   post_interventionB   s    

sU   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:mode>/<int:clear>/<path:sections>sF   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/<int:mode>/<int:clear>/c      	   C   s.  d d l  m } m } d d l m } d d l m } m } d d l m	 }	 m
 }
 m } | d  k } | r+d g } xµ g  |	 |
 j t | Œ ƒ D] } t j |  | ƒ r� | ^ q� D]s } xj g  t |	 |
 j t | | g Œ ƒ d t ƒd  D] } | ^ qê D]& } t |
 j t | | g Œ d	 | ƒSWq± Wn  |
 j t d
 d ƒ } |
 j t d
 d ƒ } | d  k	 r}d d j | j d ƒ ƒ n d  } d | d  k r˜d n | |  | d k r°d n d |  f } | GH| | ƒ d | |  |  f } | | ƒ | d k r¡d | |  |  f } | | ƒ d d  l } t d# |  ƒ �n } | j | ƒ } t | ƒ d k r_| d ƒ n  | | j | d d t ƒj d ƒ ƒ } d | j d <| SWd  QXn  d d  l j j } | j d d |  ƒ j  d ƒ } t | ƒ d k rò| d ƒ n  d  | d j! ƒ  g } | d! j | ƒ ƒ } d" | j d <| S($   Niÿÿÿÿ(   t   callt   check_output(   t   split(   t   abortR   (   t   listdirR   t   systemR>   t   reversei   R&   s   xslt/s   sanitize.xslts   intv_xml2json.xslts   '%s't   ,R'   sË   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_intervention('GER', %s, '%s', %s)"  NESA > /tmp/intv_%s.xml
  t   NULLi    t   TRUEt   FALSEs9   xsltproc %s /tmp/intv_%s.xml > /tmp/intv_%s_sanitized.xmls:   xsltproc %s /tmp/intv_%s_sanitized.xml > /tmp/intv_%s.jsons   /tmp/s   intv_%s.jsoni”  t   ensure_asciit   utf8s   application/jsons   Content-Types   intv_%s_sanitized.xmlt   interventions&   <?xml version="1.0" encoding="utf-8"?>s   
s   application/xmls   /tmp/intv_%s.json("   RI   RP   RQ   RJ   RR   t   flaskRS   R   R   RT   R   RU   t   NoneR,   R-   t   ret   searcht   sortedt   TrueR   R@   RF   t   loadt   lent   dumpst   Falset   encodeR   t   xml.dom.minidomt   domt   minidomt   parset   getElementsByTagNamet   toxml(   R4   t   modet   cleart   sectionsRP   RQ   RR   RS   R   RT   R   RU   t   cachedRL   t   ft   folderRN   t   xslt1t   xslt2t   shellR@   t	   json_datat   intvsR"   Rk   R>   t   xml(    (    s   /var/www/nescon/nescon.pyt   json_intervention\   sJ    	DI+.:


( s„   /calendars/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):from_date>/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):until_date>/<int:active>/<int:mode>/s“   /calendars/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):from_date>/<regex('[0-9]{4}-[0-9]{2}-[0-9]{2}'):until_date>/<int:active>/<int:mode>/<path:varargs>/c         C   s9  d d l  m } m } d d l m } d d l m } m }	 d d l m	 }
 m
 } m } | |  k  rq | d ƒ n  | j t d d ƒ } | j t d d	 ƒ } d
 |  | | d k r¶ d n d d j t | ƒ j d ƒ ƒ f } | | ƒ d | } | | ƒ | d k r)d | } | | ƒ t d d d ƒSt d d d ƒS(   Niÿÿÿÿ(   RP   RQ   (   RR   (   RS   R   (   RT   R   RU   i�  s   xslt/s   sanitize.xslts   intv_xml2json.xsltsÕ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_calendars('GER', '%s', '%s', %d, '%s', 1)"  NESA > /tmp/calendars.xml
  i   i    RW   R'   s=   xsltproc %s /tmp/calendars.xml > /tmp/calendars_sanitized.xmls>   xsltproc %s /tmp/calendars_sanitized.xml > /tmp/calendars.jsons   /tmpR&   s   calendars.jsons   calendars_sanitized.xml(   RI   RP   RQ   RJ   RR   R^   RS   R   R   RT   R   RU   R,   R-   R0   R   (   t	   from_datet
   until_dateRo   t   activet   varargsRP   RQ   RR   RS   R   RT   R   RU   Ru   Rv   Rw   (    (    s   /var/www/nescon/nescon.pyt	   calendars’   s"    @




s;   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/pdf/originalc         C   sœ   d d l  m } m } d d l m } d d l m } d d l m } m	 } m
 } d |  } | | | ƒ ƒ }	 | |	 ƒ }
 d |
 j d <d	 |  |
 j d
 <|
 S(   Niÿÿÿÿ(   RP   RQ   (   RR   (   R   (   RT   R   RU   s¡   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="select npro_notify('%s', FALSE)"  NESA
  s   application/pdfs   Content-Types   inline; filename=%s.pdfs   Content-Disposition(   RI   RP   RQ   RJ   RR   R^   R   R   RT   R   RU   R   (   R4   RP   RQ   RR   R   RT   R   RU   Rw   t   pdfR"   (    (    s   /var/www/nescon/nescon.pyt   pdf_original´   s    
s3   /intervention/<regex('([A-Z0-9]{4,11})'):hash>/pdf/c         C   s  d d l  m } m } d d l m } d d l m } d d l m } m	 } m
 } | j t d d ƒ } | j t d d ƒ }	 d	 |  d
 |  f }
 | |
 ƒ d | |  |  f }
 | |
 ƒ d |  }
 |
 GH| | |
 ƒ ƒ } | | ƒ } d | j d <d |  | j d <| S(   Niÿÿÿÿ(   RP   RQ   (   RR   (   R   (   RT   R   RU   s   xslt/s   intv_report.xslts   intv_xml2json.xsltsÍ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_intervention('GER', NULL, '%s', %s)"  NESA > /tmp/intv_%s.xml
  RY   s7   xsltproc %s /tmp/intv_%s.xml > /tmp/intv_%s_report.htmlsw   /usr/local/bin/./wkhtmltopdf.sh -q --title NESA -L 0 -R 0 -T 0 -B 0 --print-media-type -s A4 /tmp/intv_%s_report.html -s   application/pdfs   Content-Types   inline; filename=%s.pdfs   Content-Disposition(   RI   RP   RQ   RJ   RR   R^   R   R   RT   R   RU   R,   R-   R   (   R4   RP   RQ   RR   R   RT   R   RU   Ru   Rv   Rw   R�   R"   (    (    s   /var/www/nescon/nescon.pyt   pdf_interventionË   s"    


s
   /database/s   /database/<int:mode>/s$   /database/<int:mode>/<path:varargs>/i   c         C   s  d d l  m } m } d d l m } d d l m } m } d d l m	 } m
 } t t d d d ƒƒ S| j t d	 d
 ƒ }	 | j t d	 d ƒ }
 d d j t | ƒ j d ƒ ƒ } | | ƒ d |	 } | | ƒ |  d k rî t d d d ƒSd |
 } | | ƒ t d d d ƒS(   Niÿÿÿÿ(   RP   RQ   (   RR   (   RS   R   (   R   RU   R%   R&   s   database/data.jsons   xslt/s   sanitize.xslts   database.xsltsÀ   mysql -u F5VksfQsYW -h 192.168.10.10 -pmWaq9FiGC6  --default-character-set=utf8  --skip-column-names  --raw  --execute="call npro_export_xml_database('GER', '%s')"  NESA > /tmp/database.xml
  RW   R'   s;   xsltproc %s /tmp/database.xml > /tmp/database_sanitized.xmli    s   /tmps   database_sanitized.xmls<   xsltproc %s /tmp/database_sanitized.xml > /tmp/database.jsons   database.json(   RI   RP   RQ   RJ   RR   R^   RS   R   R   R   RU   R   R   R,   R-   R0   R   (   Ro   R   RP   RQ   RR   RS   R   R   RU   Ru   Rv   Rw   (    (    s   /var/www/nescon/nescon.pyt   databaseë   s     "




t   ReverseProxiedc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R    (   R   R    (    (    s   /var/www/nescon/nescon.pyR     s    c         C   sŠ   | j  d d ƒ } | rU | | d <| d } | j | ƒ rU | t | ƒ | d <qU n  | j  d d ƒ } | rz | | d <n  |  j | | ƒ S(   Nt   HTTP_X_SCRIPT_NAMEt    t   SCRIPT_NAMEt	   PATH_INFOt   HTTP_X_SCHEMEs   wsgi.url_scheme(   t   gett
   startswithRe   R    (   R   t   environt   start_responset   script_namet	   path_infot   scheme(    (    s   /var/www/nescon/nescon.pyt   __call__  s    

(   R   R   R   R’   (    (    (    s   /var/www/nescon/nescon.pyR…     s   	t   __main__t   hosts   0.0.0.0t   portiX  t   debugt   threaded(2   R   t   globR`   R   R^   R    R   R   R   R   R   R   R   t   werkzeugR   t   werkzeug.routingR	   R   R    Rc   R–   R!   R   R   t   realpathR   R-   R
   R   t
   convertersR   t   after_requestR$   t   routeR*   R+   R.   R_   R8   R;   RO   R{   R€   R‚   Rƒ   R„   t   objectR…   t   wsgi_appt   run(    (    (    s   /var/www/nescon/nescon.pyt   <module>   sJ   0.		!4 !! %