
oTc           @   s  d  d l  Z  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	 d  d l
 m Z d  d l
 m Z d  d l m Z e j   Z e j   Z i  a i  a e a d e f d     YZ d e f d	     YZ d
 e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ e e  d    Z e e  d    Z d e f d     YZ  d e f d     YZ! d e f d     YZ" d e f d     YZ# e d  Z$ d   Z% d    Z& d!   Z' e e  d"    Z( e d#  Z) e e  e d$   Z* d%   Z+ d&   Z, e d'  Z- d(   Z. d) d*  Z/ d+   Z0 d,   Z1 d-   Z2 d. Z3 d/   Z4 d0   Z5 d1   Z6 d2   Z7 d3   Z8 d4   Z9 d5   Z: d6   Z; d7   Z< d> d? f Z= d<   Z> d=   Z? d S(@   iN(   t   CONFIG_VERSIONt   NORMAL_PRIORITYt   DEFAULT_PRIORITY(   t	   listquote(   t	   configobj(   t   synchronizedt   Optionc           B   st   e  Z d e d   Z d   Z d   Z d   Z e d  Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z RS(   c         C   s   | j  d  |  _ | |  _ | |  _ d  |  _ d  |  _ | r t } x4 |  j D]) } | | k rk i  | | <n  | | } qL W|  | | <n  d  S(   Nt   ,(   t   splitt   _Option__sectionst   _Option__keywordt   _Option__default_valt   Nonet   _Option__valuet   _Option__callbackt   database(   t   selft   sectiont   keywordt   default_valt   addt   anchor(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   __init__0   s    				c         C   s
   |  j    S(   N(   t   get(   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   __call__H   s    c         C   s!   |  j  d  k r |  j  S|  j Sd  S(   N(   R   R   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   L   s    c         C   s   t  |  j    S(   N(   t   strR   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt
   get_stringS   s    c         C   s   i |  j    |  j 6S(   N(   R   R
   (   R   t   safe(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_dictV   s    c         C   s.   y |  j  | d  SWn t k
 r) t SXd  S(   Nt   value(   t   sett   KeyErrort   False(   R   t   dict(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   set_dictZ   s    c         C   sz   | d  k rv t |  t g   k sK t |  t i   k sK | |  j k rv | |  _ t a |  j rs |  j   qs qv n  d  S(   N(   R   t   typeR   t   Truet   modifiedR   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   __seta   s    ?		c         C   s   |  j  |  S(   N(   t   _Option__set(   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   l   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   defaulto   s    c         C   s   | |  _  d  S(   N(   R   (   R   t   callback(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR)   r   s    c         C   s   |  j  |  j f S(   N(   R	   R
   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   identv   s    N(   t   __name__t
   __module__R   R$   R   R   R   R   R    R   R"   R'   R   R(   R)   R*   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   .   s   								t   OptionNumberc           B   s)   e  Z d  d d d e d  Z d   Z RS(   i    c         C   sV   t  j |  | | | d | | |  _ | |  _ | |  _ t |  t d  k |  _ d  S(   NR   i    (   R   R   t   _OptionNumber__minvalt   _OptionNumber__maxvalt   _OptionNumber__validationR#   t   _OptionNumber__int(   R   R   R   R   t   minvalt   maxvalt
   validationR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   ~   s
    			c         C   s   | d  k r y( |  j r' t |  } n t |  } Wn t k
 rP |  j } n X|  j r |  j |  \ } } |  j |  q |  j d  k r | |  j k r |  j } n* |  j	 d  k r | |  j	 k  r |  j	 } n  |  j |  n  d  S(   N(
   R   R1   t   intt   floatt
   ValueErrorR   R0   R'   R/   R.   (   R   R   t   errort   val(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s     		N(   R+   R,   R   R$   R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR-   |   s   t
   OptionBoolc           B   s    e  Z e e d   Z d   Z RS(   c         C   s&   t  j |  | | t |  d | d  S(   NR   (   R   R   R5   (   R   R   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s    c         C   sQ   | d  k r d } n  y |  j t |   Wn t k
 rL |  j d  n Xd  S(   Ni    (   R   R'   R5   R7   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s    	(   R+   R,   R    R$   R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR:      s   t	   OptionDirc           B   sP   e  Z d  e e d e d  Z d   Z d   Z d   Z e d  Z	 d   Z
 RS(   t    c         C   sD   | |  _  d |  _ | |  _ | |  _ t j |  | | | d | d  S(   NR<   R   (   t   _OptionDir__validationt   _OptionDir__roott   _OptionDir__apply_umaskt   _OptionDir__createR   R   (   R   R   R   R   t   apply_umaskt   createR4   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s
    				c         C   s   |  j    } d } | r t j j |  j |  } |  j r t j j |  r t j j	 |  j
   d |  j | |  j  \ } } q n  | S(   NR<   i   (   R   t   sabnzbdt   misct	   real_pathR>   R@   t   ost   patht   existst   create_real_pathR*   R?   (   R   R   RG   t   res(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_path   s    7c         C   s<   |  j    } | r4 t j j t j j |  j |   St Sd  S(   N(	   R   RF   RG   RH   RC   RD   RE   R>   R    (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt	   test_path   s    "c         C   s   | |  _  d  S(   N(   R>   (   R   t   root(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   set_root   s    c         C   s   d  } | d  k r | s* | |  j   k r | j   } |  j rc |  j |  j | |  j  \ } } n  | s | r |  j s~ | r t j j	 |  j
   d |  j | |  j  \ } } | s t d  |  j
   d | f } q q n  | s |  j |  q n  | S(   Ni   s   Cannot create %s folder %s(   R   R   t   stripR=   R>   R   R@   RC   RD   RI   R*   R?   t   TaR'   (   R   R   RB   R8   RJ   RG   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s    $	$1)c         C   s   | |  _  d  S(   N(   R@   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt
   set_create   s    N(   R+   R,   R    R$   R   R   RK   RL   RN   R   RQ   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR;      s   	
		t
   OptionListc           B   s,   e  Z d d e d   Z d   Z d   Z RS(   c         C   s>   | |  _  | d  k r g  } n  t j |  | | | d | d  S(   NR   (   t   _OptionList__validationR   R   R   (   R   R   R   R   R4   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s    		c         C   s   d  } | d  k	 r t | t  sZ d | k rH d | k rH | j   } qZ t j |  } n  |  j r{ |  j |  \ } } n  | s |  j |  q n  | S(   Nt   "R   (   R   t
   isinstancet   listR   R   t
   simplelistRS   R'   (   R   R   R8   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s    	c         C   s   |  j    } t |  t d  k r( | Sd } t |  } x? t |  D]1 } | | | 7} | | d k  rG | d 7} qG qG W| S(   NR<   i   s   , (   R   R#   t   lent   xrange(   R   t   lstt   txtt   rt   n(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR      s     N(   R+   R,   R   R$   R   R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRR      s   	t	   OptionStrc           B   s8   e  Z d  d e e d  Z d   Z d   Z d   Z RS(   R<   c         C   s2   t  j |  | | | d | | |  _ | |  _ d  S(   NR   (   R   R   t   _OptionStr__validationt   _OptionStr__strip(   R   R   R   R   R4   R   RO   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    	c         C   s   t  j j |  j    S(   N(   RC   RD   t
   from_unitsR   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt	   get_float  s    c         C   s   t  |  j    S(   N(   R5   Rb   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_int  s    c         C   su   d  } t |  t d  k r6 |  j r6 | j   } n  |  j rd |  j |  \ } } |  j |  n |  j |  | S(   NR<   (   R   R#   R`   RO   R_   R'   (   R   R   R8   R9   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    !	N(   R+   R,   R   R$   R   Rb   Rc   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR^     s   		t   OptionPasswordc           B   s>   e  Z d  e d  Z d   Z d   Z e d  Z d   Z RS(   R<   c         C   s,   t  j |  | | | d | |  j |  _ d  S(   NR   (   R   R   t	   get_starsR   (   R   R   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   $  s    c         C   s3   |  j  } | d  k r |  j St | |  j    Sd  S(   N(   R   R   R   t   decode_passwordR*   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   (  s    	c         C   s#   d t  t |  j   |  j     S(   Nt   *(   RX   Rf   R   R*   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRe   0  s    c         C   s2   | r i |  j    |  j 6Si |  j   |  j 6Sd  S(   N(   Re   R
   R   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   4  s    c         C   sG   | d  k r | d k s- | rC | j d  rC |  j t |   n  d  S(   NR<   Rg   (   R   RO   R'   t   encode_password(   R   t   pw(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   ;  s    -(	   R+   R,   R$   R   R   Re   R    R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRd   "  s
   		c         C   s+   |  t  k r i  t  |  <n  | t  |  | <d  S(   N(   R   (   R   R   t   obj(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   add_to_databaseB  s    c         C   sq   t  |  | =|  d k rD d | k rD | j d d  j d d  } n  y t |  | =Wn t k
 rf n Xt a d  S(   Nt   serverst   [t   {t   ]t   }(   R   t   replacet   CFGR   R$   R%   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   delete_from_databaseK  s    !t   ConfigServerc           B   sA   e  Z d    Z d   Z e d  Z d   Z d   Z d   Z RS(   c         C   sr  | |  _  d |  j  } t | d d d t |  _ t | d d d d d t |  _ t | d d d d d t |  _ t | d d d t |  _ t | d d d t |  _	 t | d d
 d d d t |  _
 t | d t d t |  _ t | d t d t |  _ t | d t d t |  _ t | d t d t |  _ t | d d t |  _ |  j |  t d |  j  |   d  S(   Ns   servers,t   hostR<   R   t   portiw   i    i   i   i   t   timeoutix   i   i   t   usernamet   passwordt   connectionsid   t
   fillservert   sslt   enablet   optionalt	   retentionRl   i   i  (   t   _ConfigServer__nameR^   R    Ru   R-   Rv   Rw   Rx   Rd   Ry   Rz   R:   R{   R|   R$   R}   R~   R   R"   Rk   (   R   t   namet   values(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   [  s    	!!!c         B   sF   x? d D]7 } y | | } Wn e  k
 r1 q n Xd | d  Uq We S(   NRu   Rv   Rw   Rx   Ry   Rz   R{   R|   R}   R~   R   s   self.%s.set(value)(   Ru   Rv   Rw   Rx   Ry   Rz   R{   R|   R}   R~   R   (   R   R$   (   R   R   t   kwR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR"   o  s    
c         C   s   i  } |  j  | d <|  j   | d <|  j   | d <|  j   | d <|  j   | d <| ro |  j j   | d <n |  j   | d <|  j   | d <|  j   | d <|  j	   | d	 <|  j
   | d
 <|  j   | d <|  j   | d <| S(   NR   Ru   Rv   Rw   Rx   Ry   Rz   R{   R|   R}   R~   R   (   R   Ru   Rv   Rw   Rx   Ry   Re   Rz   R{   R|   R}   R~   R   (   R   R   R!   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   z  s     c         C   s   t  d |  j  d  S(   NRl   (   Rs   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   delete  s    c         C   s0   t  d |  j  | |  _ t d |  j |   d  S(   NRl   (   Rs   R   Rk   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   rename  s    	c         C   s   d |  j  f S(   NRl   (   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR*     s    (	   R+   R,   R   R"   R    R   R   R   R*   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRt   Y  s   				t	   ConfigCatc           B   s/   e  Z d    Z d   Z e d  Z d   Z RS(   c         C   s   | |  _  d | } t | d d d t |  _ t | d d d t |  _ t | d d t d t |  _ t | d	 d t |  _ t	 | d
 t
 d t |  _ |  j |  t d |  j  |   d  S(   Ns   categories,t   ppR<   R   t   scriptt   Defaultt   dirRB   t   newzbint   priorityt
   categories(   t   _ConfigCat__nameR^   R    R   R   R;   R   RR   R   R-   R   R   R"   Rk   (   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    	
c         B   sF   x? d D]7 } y | | } Wn e  k
 r1 q n Xd | d  Uq We S(   NR   R   R   R   R   s   self.%s.set(value)(   R   R   R   R   R   (   R   R$   (   R   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR"     s    c         C   sj   i  } |  j  | d <|  j   | d <|  j   | d <|  j   | d <|  j j   | d <|  j   | d <| S(   NR   R   R   R   R   R   (   R   R   R   R   R   R   R   (   R   R   R!   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    c         C   s   t  d |  j  d  S(   NR   (   Rs   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    (   R+   R,   R   R"   R    R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s   		
t   OptionFiltersc           B   sD   e  Z e d   Z d   Z d   Z d   Z e d  Z d   Z	 RS(   c         C   s*   t  j |  | | d | |  j g   d  S(   NR   (   R   R   R   (   R   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    c         C   sU   |  j    } y# | j |  } | j | |  Wn t k
 rC d  SX|  j |  d  S(   N(   R   t   popt   insertt
   IndexErrorR   (   R   t   currentt   newRZ   t   item(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   move  s    c         C   sL   |  j    } y | | | <Wn t k
 r: | j |  n X|  j |  d  S(   N(   R   R   t   appendR   (   R   t   posR   RZ   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   update  s    c         C   sC   |  j    } y | j |  Wn t k
 r1 d  SX|  j |  d  S(   N(   R   R   R   R   (   R   R   RZ   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    c         C   sE   i  } d } x2 |  j    D]$ } | | d t |  <| d } q W| S(   Ni    t   filteri   (   R   R   (   R   R   R!   R]   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    c         C   s   g  } x t  t |   D] } d | } | j |  } | d  k	 r | | } t |  t g   k rv | j |  n | j t j |   x+ t | d  d k  r | d j d  q W| d d s d | d d <q q q W| r |  j |  n  t	 S(   Ns   filter%dii   t   1i   (
   RY   RX   R   R   R#   R   R   RW   R   R$   (   R   R   t   filtersR]   R   R9   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR"     s     

(
   R+   R,   R$   R   R   R   R   R    R   R"   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s   	
				t	   ConfigRSSc           B   s8   e  Z d    Z d   Z e d  Z d   Z d   Z RS(   c         C   s  | |  _  d | } t | d d t |  _ t | d d t |  _ t | d d d t |  _ t | d d t |  _ t | d d t |  _ t	 | d	 t
 t
 d
 d t |  _ t | d d t |  _ |  j j d d d d d t
 d g g  |  j |  t d |  j  |   d  S(   Ns   rss,t   uriR   t   catR   R<   R   R}   R   i   R   t   ARg   R   t   rss(   t   _ConfigRSS__nameR^   R    R   R   R   R   R:   R}   R-   R   R   R   R   R   R"   Rk   (   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    	
!(c         B   sV   x? d D]7 } y | | } Wn e  k
 r1 q n Xd | d  Uq W|  j j |  e S(	   NR   R   R   R   R   R}   s   self.%s.set(value)(   R   R   R   R   R   R}   (   R   R   R"   R$   (   R   R   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR"     s    c         C   s   i  } |  j  | d <|  j   | d <|  j   | d <|  j   | d <|  j   | d <|  j   | d <|  j   | d <|  j j   } x | D] } | | | | <q W| S(   NR   R   R   R   R   R}   R   (	   R   R   R   R   R   R}   R   R   R   (   R   R   R!   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   $  s    c         C   s   t  d |  j  d  S(   NR   (   Rs   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   3  s    c         C   s   d |  j  f S(   NR   (   R   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR*   7  s    (   R+   R,   R   R"   R    R   R   R*   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s
   			c         C   s  i  } |  sK xt  j   D]+ }  t |  d  t  \ } } | j |  q WnI| s y t  |  } Wn t k
 ry t i  f SX|  d k r g  | |  <x | j   D]/ } t |  | t  \ } } | |  j |  q Wqi  | |  <x | j   D]/ } t |  | t  \ } } | |  j |  q Wnt y t  |  | } Wn t k
 rLt i  f SX| j	 d t  } | s|  d k ri | g |  6} qi | |  6} n  t | f S(   NRl   R   R   R   (   Rl   R   R   (   Rl   R   R   (
   R   t   keyst   get_dconfigR   R$   R   R   R    R   R   (   R   R   t   nestedt   dataRJ   t   conft   sectR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   <  s:    

c         C   s<   y t  |  | SWn% t k
 r7 t j d |  |  d  SXd  S(   Ns    Missing configuration item %s,%s(   R   R   t   loggingt   debugR   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt
   get_confige  s
    c         C   sJ   y$ t  |  j d  |  j d  } Wn t k
 r8 t SX| j |   t S(   NR   R   (   R   R   R   R    R"   R$   (   t   kwargsR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt
   set_configo  s    $c         C   s/   y t  |  | j   Wn t k
 r* d  SXd  S(   N(   R   R   R   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   z  s    c         C   s
   t  |   S(   N(   t   _read_config(   RG   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   read_config  s    c   	      C   s  | s t  j j |   rN y t j |  d |   t } WqN t k
 rJ qN Xn  t  j j |   s yb t j s~ t  j	 d  } n  t
 |  d  } | j d t  | j   t j s t  j	 |  n  Wq t k
 r t d |  f SXn  yo t j |   a y8 t t d  t t  k r-t d t d |  f f SWn! t t f k
 rQt t d <n XWn= t j k
 r} | rt d |  | f f St |  t  Sn Xt t d <d	 t k rt t d	  n  d
 t k rt t d
  n  x t D] } | d k rxn t | D]_ } t | | j   \ } } | d } y! t | | j t | |  Wqt k
 rYqXqWqqWt   t   t   t a t d f S(   Ns   .baki?   t   ws    __version__=%s
[misc]
[logging]
s   Cannot create INI file %st   __version__s!   Incorrect version number %s in %ss;   "%s" is not a valid configuration file<br>Error message: %sRD   R   Rl   R   iR<   (   Rl   R   R   (    RF   RG   RH   t   shutilt   copyfileR$   t   IOErrorRC   t   WIN32t   umaskt   opent   writeR    t   closeR    R   t	   ConfigObjRr   R5   R   R7   t   ConfigObjErrorR   t   compatibility_fixt   newzbin_fixR   R*   R   t   define_categoriest
   define_rsst   define_serversR%   (	   RG   t
   try_backupt   prevt   fpt   strerrorR   t   optiont   secR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s^    
	
	

!c         C   s  t  p	 |  s t Sxt D]} | d k r y t | Wn t k
 rR i  t | <n Xxt | D] } | d k r | j d d  j d d  } n | } y t | | Wn t k
 r i  t | | <n Xt | | j   } | t | | <q^ Wq x t | D] } t | | j   \ } } | d } y t | Wn t k
 rPi  t | <n Xt | |   } t |  t t  k rt	 t
 |   t | | <q t |  t d	  k rt	 |  t | | <q | t | | <q Wq Wt }	 t j }
 |
 d
 } t j j |
  s!t j t d  |
  |	 Sy t j |
 |  Wn0 t j t d  |  t j d d t n Xy t j   t a  t }	 Wn0 t j t d  |
  t j d d t n X|	 S(   NRl   R   R   Rm   Rn   Ro   Rp   ii    s   .baks   Cannot write to INI file %ss    Cannot create backup file for %ss   Traceback: t   exc_info(   Rl   R   R   (   R%   R$   R   Rr   R   Rq   R   R*   R#   R   R5   R    t   filenameRC   RD   t   is_writableR   R8   RP   R   R   t   warningt   infoR   (   t   forceR   t   subsect
   subsec_modt   itemsR   R   R   R   RJ   R   t   bakname(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   save_config  sd    !
	


c          C   sd   yL xE t  d D]9 }  t  d |  } t |  j d d  j d d  |  q WWn t k
 r_ n Xd  S(   NRl   Rn   Rm   Rp   Ro   (   Rr   Rt   Rq   R   (   t   servert   svr(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    -c           C   s%   y t  d SWn t k
 r  i  SXd  S(   NRl   (   R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_servers*  s    c         C   sF   y. x' t  d D] } t | t  d |  q WWn t k
 rA n Xd  S(   NR   (   Rr   R   R   (   R   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   2  s
    c         C   s)   y t  d |  SWn t k
 r$ | SXd  S(   NRD   (   Rr   R   (   R   R(   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   old_def>  s    i    c         C   s   d t  k r i  t  d <n  t  d } d | k ry t d i t d d  d 6t d d  d 6t d	 t  d
 6 t t  n  t |  t  s y | |  } Wq t k
 r | d } q Xn  | S(   NR   Rg   t   dirscan_optst   3R   t   dirscan_scriptR   R   t   dirscan_priorityR   (	   R   R   R   R   R   R$   RU   R5   R   (   R   t   cats(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_categoriesF  s    
)c          C   sF   y. x' t  d D] }  t |  t  d |   q WWn t k
 rA n Xd  S(   NR   (   Rr   R   R   (   R\   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR   [  s
    c           C   s%   y t  d SWn t k
 r  i  SXd  S(   NR   (   R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_rssf  s    c           C   s   t  j S(   N(   Rr   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   get_filenamem  s    s   !!!encoded!!!c         C   s{   t  } |  rw t } xU |  D]M } t |  } | d k sO | d k  sO | d k rX t } n  | d | 7} q W| rw | Sn  |  S(   Nt   #i!   i~   s   %2x(   R    t   __PW_PREFIXt   ordR$   (   Ri   t   enct   encPWt   ct   cnum(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRh   y  s    $	c         C   s   d } |  r |  j  t  r x t t t  t |   d  D]d } y) t t |  | |  | d d   } Wn( t k
 r t j t	 d  |  d SX| | 7} q: W| S|  Sd  S(   NR<   i   i   i   s   Incorrectly encoded password %s(
   t
   startswithR   t   rangeRX   t   chrR5   R7   R   R8   RP   (   Ri   R   t   decPWR]   t   ch(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyRf     s    %)c         C   s7   t  |   j   }  |  j   d k r- d }  n  d  |  f S(   Nt   noneR<   (   R   RO   t   lowerR   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   no_nonsense  s    	c         C   sJ   |  s d  |  f Sy t |  d  d  |  f SWn t d  |  d  f SXd  S(   Ni   s   %s is not a correct octal value(   R   R5   RP   (   R   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   validate_octal  s    
c         C   s>   | r& | j  d  r& t |  | |  St d  | d  f Sd  S(   Ns   \\s   UNC path "%s" not allowed here(   R   t   validate_notemptyRP   R   (   RM   R   R(   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   validate_no_unc  s    c         C   s0   t  j   r t |  | |  St d  d  f Sd  S(   Ns-   Error: Queue not empty, cannot change folder.(   RC   t   empty_queuesR   RP   R   (   RM   R   R(   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   validate_safedir  s    c         C   sI   t  j j |  |  } t j j |  r1 d  | f St d  | d  f Sd  S(   Ns   Folder "%s" does not exist(   RC   RD   RE   RF   RG   RH   R   RP   (   RM   R   R(   t   p(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   validate_dir_exists  s    
c         C   s   | r d  | f Sd  | f Sd  S(   N(   R   (   RM   R   R(   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    
c          C   s   d d  l  }  y d d l m } Wn! t k
 rC d d l m } n Xd d  l } t |  j     } t | j    } | |  } | j |  | j   S(   Ni(   t   md5(   t   timet   hashlibR   t   ImportErrort   randomR   R   t	   hexdigest(   R   R   R   t   tR\   t   m(    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   create_api_key  s    t   bandwith_limitt   bandwidth_limitt   enable_par_multicoret   par2_multicorec         C   s   xg t  D]_ } | \ } } y |  | Wq t k
 re y |  | |  | <|  | =Wqf t k
 ra qf Xq Xq Wy |  d j d d  |  d <Wn t k
 r n Xd  S(   Nt   rating_hosts   www.oznzb.coms   api.oznzb.com(   t   _FIXESR   Rq   (   t   cfR   t   oldR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    c         C   sW   xP |  D]H } |  | j  d  } | r d | k r | j d d  |  | d <q q Wd  S(   NR   s   newzbin.coms   newzbin2.es(   R   Rq   (   R  t   feedR   (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyR     s    (   R   R   (   R   R   (@   RF   R   t	   threadingR   t   sabnzbd.miscRC   t   sabnzbd.constantsR    R   R   t   sabnzbd.utilsR   R   t   sabnzbd.decoratorsR   t   Lockt   CONFIG_LOCKt   SAVE_CONFIG_LOCKRr   R   R    R%   t   objectR   R-   R:   R;   RR   R^   Rd   Rk   Rs   Rt   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   Rh   Rf   R   R   R   R   R   R   R   R  R   R   (    (    (    s"   /var/www/SABnzbd/sabnzbd/config.pyt   <module>   sp   N8$ 	C)A6)	
		D	G																				