ó
bøcc           @  s÷   d  Z  d d l m Z m Z d d l Z d d l Z d d l m Z y d d l Z WnA e	 k
 r— d d l
 Z
 e
 j d e j d  ƒ d d l Z n Xd Z d	 „  Z d
 „  Z e d „ Z e j d e j ƒ Z d e j f d „  ƒ  YZ d „  Z d S(   u   Chiron support for Zephyriÿÿÿÿ(   t   print_functiont   unicode_literalsNi   (   t   engineu&   /mit/broder/lib/python%s/site-packagesi   u   ATHENA.MIT.EDUc         C  s8   d |  k r4 |  j  d ƒ \ } } | t k r4 | Sn  |  S(   u)   Remove the default realm from a principalu   @(   t   splitt   DEFAULT_REALM(   t	   principalt   usert   domain(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   strip_default_realm   s
    c         C  s   d |  k r |  Sd |  t  f S(   u$   Add the default realm to a principalu   @u   %s@%s(   R   (   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   add_default_realm   s    c         C  sw   t  j ƒ  t  j ƒ  } x$ |  D] } | j | d d f ƒ q W| rS | j d ƒ n  d } | j | ƒ | j | ƒ d S(   u   Connect and subscribe to zephyru   *u   messageu   %me%u   personalN(   u   messageu   *u   %me%(   u   messageu   personalu   %me%(   t   zephyrt   initt   Subscriptionst   addt   remove(   t   classest	   personalst   subst   clst   default_personals(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   zephyr_setup"   s    
u   CC:(?P<recips>( [a-z./@]+)+) *$t   ZephyrMessagec           B  s‰   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z e d „  ƒ Z RS(   u   Chiron Zephyr protocol classc         C  s   | |  _  d  S(   N(   t   _zgram(   t   selft   zgram(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   __init__7   s    c         C  sW   |  j  j } t | ƒ d k r( | d n | d } t | t ƒ sS | j d ƒ } n  | S(   Ni   i    u   utf8(   R   t   fieldst   lent
   isinstancet   unicodet   decode(   R   R   t   body(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR   :   s
    &c         C  s
   |  j  j S(   N(   R   R   (   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR   A   s    c         C  s
   |  j  j S(   N(   R   t   instance(   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR    D   s    c         C  s
   |  j  j S(   N(   R   t   sender(   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR!   G   s    c         C  s
   |  j  j S(   N(   R   t	   recipient(   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR"   J   s    c         C  s   t  |  j j ƒ S(   N(   t   boolR   R"   (   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   is_personalM   s    c         C  s   |  j  j j ƒ  d k S(   Nu   autou   ping(   u   autou   ping(   R   t   opcodet   lower(   R   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   skip_messageP   s    c         C  s:   |  j  } t j ƒ  } | j | _ | j | _ d | _ | S(   Nu   auto(   R   R
   t   ZNoticeR   R    R%   (   R   R   t   zreply(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   _prep_zgramS   s    		c         C  sÌ   |  j  } t ƒ  } |  j ƒ  r¸ | j | j ƒ t j |  j ƒ  ƒ } | r© | j d ƒ j	 d ƒ } xE | D]: } | rh d | k rh | j t
 t | j ƒ  ƒ ƒ ƒ qh qh Wn  | j | _ n | j | j ƒ | S(   Nu   recipsu    u   chiron(   R   t   setR$   R   R!   t   CC_REt   matchR   t   groupR   R	   t   strt   stripR"   (   R   R)   R   t
   recipientst   cc_matcht	   cc_recipst   cc_recip(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   _compute_recipients^   s    		)c   
      C  s  | r; d j  g  | D] \ } } d | | f ^ q ƒ } n d } d } t | ƒ d k r” d j  g  | D] } t | ƒ ^ qf ƒ } d | | f } n  d | d | g | _ t d | |  j j f ƒ | s× |  j ƒ  rþ x$ | D] }	 |	 | _ | j ƒ  qÞ Wn  d  S(	   Nu   
u	   %s ( %s )u   https://github.com/sipb/chironu"   No ticket number found in message.i   u    u	   CC: %s
%su0     -> Reply to: %s (original message was to "%s")(	   t   joinR   R   R   t   printR   R"   R$   t   send(
   R   t   messagesR)   R1   t   mt   urlR   t   rt   cc_lineR"   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   _send_zgramsn   s    5(	c         C  s2   |  j  ƒ  } |  j | ƒ } |  j | | | ƒ d  S(   N(   R*   R5   R>   (   R   R9   R)   R1   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt
   send_reply   s    c         C  sc   t  | j | j ƒ t d ƒ x> t r^ t j t ƒ } | sB q! n  |  | ƒ } | j | ƒ q! Wd S(   u,   Main function for running Chiron with Zephyru   Listening...N(   R   R   t   ignore_personalsR7   t   TrueR
   t   receivet   process(   R   t   match_enginet   optionsR   t   msg(    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   main„   s    
	(   t   __name__t
   __module__t   __doc__R   R   R   R    R!   R"   R$   R'   R*   R5   R>   R?   t   classmethodRG   (    (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyR   5   s   												c         C  s   t  j |  | ƒ d S(   u,   Main function for running Chiron with ZephyrN(   R   RG   (   RD   RE   (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyRG      s    (   RJ   t
   __future__R    R   t   ret   syst    R   R
   t   ImportErrort   sitet
   addsitedirt   versionR   R   R	   RA   R   t   compilet	   MULTILINER,   t   MessageR   RG   (    (    (    s_   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/chiron_zephyr.pyt   <module>   s"   		[