
    g%                     .   d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZ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 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# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4  ejj                         Z6 ejn                   ejp                  e9            Z:dZ;eeeeeeeeee!e#e%e*e,e.e0gZ<d Z=dd dZ>d dZ?d Z@d ZAeAdd       ZBe9dk(  r ej                   eB              yy)!z2Client to manage Ubuntu Pro services on a machine.    N)
aptdefaultsevent_logger
exceptionshttplocklogmessagesutilversion)api_command)attach_command)auto_attach_command)collect_logs_command)config_command)cve_command)cves_command)detach_command)disable_command)enable_command)fix_command)help_command)HelpCategoryProArgumentParser)refresh_command)security_status_command)status_command)system_command)UAConfig)get_user_or_root_log_file_pathproc                  :   t        t        dt        j                  j	                  t        d            } | j                  t        j                  dt        j                  j	                  t                     | j                  ddt        j                  	       | j                  t        j                  dt        j                         | j                  d
dt        j                         t        j                  j	                  t                     | j                  t        j                  d
t        j                  j	                  t                     | j                  t        j                  dd      }d|_        t"        D ]  }|j%                  |        | S )NFz	<command>)namecommand)proguse_main_helpepilogz
-h, --help)r#   z--debug
store_true)actionhelp	--versionr   )r)   r   r*   r$   )titledestmetavarT)r   NAMEr
   CLI_HELP_EPILOGformatadd_help_entryr   FLAGSCLI_HELP_FLAG_DESCadd_argumentCLI_ROOT_DEBUGr   get_versionCLI_ROOT_VERSIONadd_subparsersCLI_AVAILABLE_COMMANDSrequiredCOMMANDSregister)parser
subparsersr$   s      7/usr/lib/python3/dist-packages/uaclient/cli/__init__.py
get_parserrA   ?   sh   ''..D+.NF
 ##***5 ,X-D-D   Ix'>'> ##%&&--4-8	   !!((d(3 &&-- ' J
 J %$% M    c                 &   | r| j                   dk(  st        | dd      dv ry t        j                         }|rZt        j                  d|       t        j                  t        j                  j                  |      t        j                         y y )Napir1    jsonyamlzNew version available: %s)r   	file_type)r$   getattrr   check_for_new_versionLOGwarningeventinfor
   WARN_NEW_VERSION_AVAILABLE_CLIr1   sysstderr)cmd_argsnew_versions     r@   _warn_about_new_versionrV   k   s    
 	%8Xr*.>>//1K/=

33::# ;  jj	 	 	
 rB   c                 Z   | j                   dv rt        j                  j                         s~t	        | d      r| j
                  dv ryt        j                  d       t        j                  t        j                  j                  | j                         t        j                         yyy)z4Warn users that the user readable output may change.)statuszsecurity-statusr1   rF   Nz.Not in a tty and human-readable command called)r$   rI   )r$   rR   stdoutisattyhasattrr1   rM   rN   rO   rP   r
   WARNING_HUMAN_READABLE_OUTPUTrS   rT   s    r@   _warn_about_output_redirectionr^      s     	99

!!#8X&8??>N+NDE

2299 (( :  jj	 	 	
 $ 	:rB   c                 l   | j                   dv rt        j                  | j                          t        | d      rz| j                  dk(  r-t        j                  t        j                  j                         | j                  dk(  r.t        j                  t        j                  j                         yyyy)z3Set the right event mode based on the args provided)attachdetachenabledisablerX   r1   rG   rH   N)
r$   rO   set_commandr[   r1   set_event_moder   EventLoggerModeJSONYAMLr]   s    r@   re   re      s    NN(**+8X&&($$\%A%A%F%FG&($$\%A%A%F%FG ) ' OrB   c                       fd}|S )Nc            
      
   	  | i |S # t         $ rj t        j                  d       t        t        j
                  t        j                         t        j                          t        j                  d       Y y t        j                  $ r}dt        |      v rt        j                  }t        j                   d      rt        j"                  }|j%                  |j&                        }t(        j                  |j*                  |j,                         t(        j/                  |j*                  t        j                         nt        j1                  d	|j&                  |
       t        j2                  j%                  |j&                  |j4                        }t(        j                  |j*                  |j,                         t(        j/                  |j*                  t        j                         t        j                          t(        j7                          t9                t        j                  d       Y d }~y d }~wt        j:                  $ r}t        j                  }t        j                   d      rt        j"                  }|j%                  |j&                        }t(        j                  |j*                  |j,                         t(        j/                  |j*                  t        j                         t        j                          t(        j7                          t9                t        j                  d       Y d }~y d }~wt        j<                  $ r}t        j                  |j*                         t(        j                  |j*                  |j>                  |j@                         t(        j/                  dj%                  |j*                        t        j                         tC        |t        jD                        st        j                          t(        j7                          t9                t        j                  |jF                         Y d }~y d }~wtH        $ r}t        j1                  d       t        j                          t(        j/                  t        jJ                  j%                  t        |      tM                     j*                  t        j                         t(        j                  tO        |dt        |            d       t(        j7                          t9                t        j                  d       Y d }~y d }~ww xY w)NKeyboardInterrupt)file   CERTIFICATE_VERIFY_FAILEDzca-certificates)url)	error_msg
error_code)info_msgrJ   zFailed to access URL: %s)exc_info)ro   cause_error)rp   rq   additional_infoz{}z&Unhandled exception, please file a bug)rp   log_pathmsg	exception)rp   
error_type)(rk   rM   errorprintr
   CLI_INTERRUPT_RECEIVEDrR   rS   r   clear_lock_file_if_presentexitr   ConnectivityErrorstr&SSL_VERIFICATION_ERROR_CA_CERTIFICATESr   is_installed%SSL_VERIFICATION_ERROR_OPENSSL_CONFIGr1   ro   rO   rw   r#   rP   rx   E_CONNECTIVITY_ERRORrt   process_eventsrV   PycurlCACertificatesErrorUbuntuProErrormsg_coderu   
isinstanceLockHeldError	exit_code	ExceptionUNEXPECTED_ERRORr    rK   )argskwargsexctmplrw   efuncs         r@   wrapperz#main_error_handler.<locals>.wrapper   s   P	(((  	II)*(11

C++-HHQK++ 	*c#h6FF##$56#IIDkkcggk.cgg#((C

CGGszz
B.#   33:: # ;  cgg#((C

CGGszz
B++-  "#%HHQKK33 	BBD 12EE++#''+*CKK#''chhK?JJ3::J>++-  "#%HHQKK(( 	$IIcggKK''<< # 3 3  
 JJCGG 4

JKc:#;#;<//1  "#%HHS]]## 	MMBC++-JJ!2299!!f;= :  #**   KK!!UCF3     "#%HHQKK#	sD    A0U)=U)F1IU)C2MU)*C>Q--U)9C&U$$U) )r   r   s   ` r@   main_error_handlerr      s    Qf NrB   c                    t        j                  t        j                  d   t        j                  d          t	               }t        j                  |j
                  |j                         | st        j                  } t               }| dd  }|s%|j                          t        j                  d       |d   dk(  rd|d<   d|v r|j                  d      }|d | }||dz   d  }n|}g }|j                  |      }|j                  rft        j                   t        j"                        }|j%                  t        j&                         t        j(                  d	      j+                  |       t-        |       |j.                  }	|j0                  }
t3        j4                  |	|

       t6        j                  d| z         |j9                          t;        t=        j>                         jA                               D cg c]  \  }}djC                  ||       }}}|rt6        j                  d|z         tE        |       |jG                  |||      }tI        |       |S c c}}w )N	log_levellog_filerm   r   r   r+   z--)r   	ubuntupro)
http_proxyhttps_proxyzExecuted with sys.argv: %rz{}={}z'Executed with environment variables: %r)cfg
extra_args)%r	   setup_cli_loggingr   CONFIG_DEFAULTSr   r   r   rR   argvrA   
print_helpr~   index
parse_argsdebugloggingStreamHandlerrS   setLevelDEBUG	getLogger
addHandlerre   r   r   r   configure_web_proxyrM   warn_about_invalid_keyssortedr   get_pro_environmentitemsr1   r^   r)   rV   )sys_argvr   r>   cli_argumentsdouble_dash_indexpro_cli_argsr   r   console_handlerr   r   kvpro_environmentreturn_values                  r@   mainr      s     -  , *C#--688\FQRLM Q9$&a })//5$%7&78"#4q#8#:;
$
,/Dzz!//

;  /+&11/B4J//K
LII*X56! 4335;;=>Aq 	q!O  		;oMN"4(;;t;DLD!s   =I"__main__)N)returnN)D__doc__r   rR   uaclientr   r   r   r   r   r   r	   r
   r   r   uaclient.cli.apir   uaclient.cli.attachr   uaclient.cli.auto_attachr   uaclient.cli.collect_logsr   uaclient.cli.configr   uaclient.cli.cver   uaclient.cli.cvesr   uaclient.cli.detachr   uaclient.cli.disabler   uaclient.cli.enabler   uaclient.cli.fixr   uaclient.cli.helpr   uaclient.cli.parserr   r   uaclient.cli.refreshr   uaclient.cli.security_statusr   uaclient.cli.statusr   uaclient.cli.systemr   uaclient.configr   uaclient.logr    get_event_loggerrO   r   replace_top_level_logger_name__name__rM   r/   r<   rA   rV   r^   re   r   r   r~   r   rB   r@   <module>r      s   8  
   ) . 8 : . ( * . 0 . ( * ? 0 @ . . $ 7%%%'g:::8DE !()X
,
"HTn ; ;| zCHHTV rB   