
    i?*                    2   U d Z ddlmZ 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
 ddlmZmZ ddlZddlmZ ddlmZ dd	lmZ  e ee            Z ej,                  d
      Zg dZddg ed eD              z   ZdZi i i i i i i i i i d
Zded<   dddddddZ e       Z e!de"e#f   e!de#e#f   z  e!de#f   z  e!e"e#f   z  e!e#e#f   z  e!e#   z  e!e$e%z  df   z  Z&ded<   e#e&z  Z'ded<    G d d      Z( G d de(      Z) G d de(      Z* G d  d!e(      Z+dYd#Z, e(e"dd$       e(e$d%       e(dde$fd       e(dde$fd       e(e"e$fd&       e(e"d       e(e$d'      d(e e(d)d       e(e$d'       e(e%d*       e(e$d'       e( e!ed'gz         d'       e)ee       e(ejZ                  d+       e(ejZ                  d,       e(ejZ                  d-       e(ejZ                  d-       e(ejZ                  d.       e(ejZ                  d/       e(ejZ                  d-       e(ejZ                  d0      d1 e(ee       e(e%d      d2 e(e%e$fd3d4       e(e$d5d6       e(e"dd7       e(e"dd8       e(e$d9:       e(de$fdd;       e(e"dd<       e(d=d>       e(d?d@dA       e(e.i       dB
dC e(dde$fddD      idC e(dde$fddE      i e*e$ej^                  ja                  edF             e*e$ej^                  ja                  edG             e(e$dH       e(e$d'      dI e(ed      i e(e"d       e(e"d       e(e"d       e(e"d       e(e$dJ       e(e"d       e(dKdL       e(dMdN      dOdP e(eg       i e(e$d'       e(ejZ                  dQ       e(e"d       e(e"e$fd       e(dejZ                  fd       e(e%dR       e(e%dS       e(ejZ                  dT       e(e%dU       e(e%d       e(de$e.fd       e(de$efd       e(e"d       e(e%d      i dV e(e.i        e(e.e       e(eg       i dWZ1d"edX<   y)Zz'Implementation of the default settings.    )annotationsN)	b64decode)dirnameabspath)override   )SettingsBrand)sxng_localessearx)htmlcsvjsonrssallautoc              #  &   K   | ]	  }|d      yw)r   N ).0ls     (/root/searxng/searx/settings_defaults.py	<genexpr>r      s     )E1!A$)Es   )r   lightdarkblack)
generalimagesvideosnewsmapmusicitsciencefileszsocial mediazdict[str, dict[str, t.Any]]CATEGORIES_AS_TABSFT)0falseoff1trueon.zt.TypeAliasTypeDefinitionTypeDefinitionArgc                  H    e Zd ZdZ	 	 d	 	 	 	 	 ddZed        Zd	dZd
dZy)SettingsValuez Check and update a setting valueNc                T    t        |t              r|n|f| _        || _        || _        y N)
isinstancetupletype_definitiondefaultenviron_name)selftype_definition_argr4   r5   s       r   __init__zSettingsValue.__init__B   s1     $..A5#IPcOe 	 &(4    c                    | j                   D cg c])  }t        |t              r|j                  n
t	        |      + }}dj                  |      S c c}w )Nz, )r3   r1   type__name__reprjoin)r6   td	types_strs      r   type_definition_reprz"SettingsValue.type_definition_reprN   sF    QUQeQef2Jr4$8R[[d2hFf	fyy## gs   .Ac                    || j                   v ry t        d | j                   D              }t        ||      s$t        dj	                  | j
                              y )Nc              3  B   K   | ]  }t        |t              s|  y wr0   )r1   r;   )r   ts     r   r   z6SettingsValue.check_type_definition.<locals>.<genexpr>V   s     QZ4=P!Qs   z1The value has to be one of these types/values: {})r3   r2   r1   
ValueErrorformatrA   )r6   value	type_lists      r   check_type_definitionz#SettingsValue.check_type_definitionS   sV    D(((QT%9%9QQ	%+PWWX\XqXqrss ,r9   c                2   |t         k(  r| j                  }| j                  rd| j                  t        j                  v rHt        j                  | j                     }| j
                  t        fk(  rt        |j                            }| j                  |       |S r0   )

_UNDEFINEDr4   r5   osenvironr3   boolSTR_TO_BOOLlowerrI   )r6   rG   s     r   __call__zSettingsValue.__call__Z   st    JLLE!2!2bjj!@JJt001E##w.#EKKM2""5)r9   )NN)r7   r,   r4   t.Anyr5   z
str | None)rG   rR   returnNonerG   rR   rS   rR   )	r<   
__module____qualname____doc__r8   propertyrA   rI   rQ   r   r9   r   r.   r.   ?   sM    *
 #'	
5.
5 
5 !	
5 $ $t
r9   r.   c                  "    e Zd ZdZedd       Zy)SettingSublistValuez0Check the value is a sublist of type definition.c                    t        |t              st        d      |D ]8  }|| j                  d   vst        dj	                  || j                               y )NzThe value has to a listr   z{} not in {})r1   listrE   r3   rF   )r6   rG   items      r   rI   z)SettingSublistValue.check_type_definitionj   sZ    %&677 	TD4//22 !6!6tT=Q=Q!RSS	Tr9   N)rG   zlist[t.Any]rS   rT   )r<   rV   rW   rX   r   rI   r   r9   r   r[   r[   g   s    :T Tr9   r[   c                  D     e Zd ZdZed fd       Zed fd       Z xZS )SettingsDirectoryValuez9Check and update a setting value that is a directory pathc                    t         |   |       t        j                  j	                  |      s<t        t        j                  t        j                  t        j                        |      y r0   )	superrI   rL   pathisdirFileNotFoundErrorerrnoENOENTstrerrorr6   rG   	__class__s     r   rI   z,SettingsDirectoryValue.check_type_definitionv   sE    %e,ww}}U##ELL"++ell2KUSS $r9   c                D    |dk(  r| j                   }t        | 	  |      S )N )r4   rb   rQ   ri   s     r   rQ   zSettingsDirectoryValue.__call__|   s#    B;LLEw&&r9   rU   )r<   rV   rW   rX   r   rI   rQ   __classcell__rj   s   @r   r`   r`   s   s.    CT T
 ' 'r9   r`   c                  .     e Zd ZdZed fd       Z xZS )SettingsBytesValuezstr are base64 decodedc                X    t        |t              rt        |      }t        |   |      S r0   )r1   strr   rb   rQ   ri   s     r   rQ   zSettingsBytesValue.__call__   s'    eS!e$Ew&&r9   rU   )r<   rV   rW   rX   r   rQ   rm   rn   s   @r   rp   rp      s     ' 'r9   rp   dict[str, t.Any]c           
        d}|j                         D ]  \  }}t        |t              rpt        |t        j
                        rV	 | j                  |      }t        j                  j                  |      }t        j                  j                  ||      | |<   t        |t               r!	  || j                  |t"                    | |<   t        |t&              r)|xs$ t)        | j+                  |i       ||   g ||      }| j+                  ||        t-        |      dk(  r|rt/        d	      |S # t        j                  $ rX}t        |      }	|	j                  dddj                  g ||      z   dz         }	t        j                  |	       d}Y d }~d }~ww xY w# t$        $ r=}dj                  g ||      d| z   }	t        j                  |	       d}Y d }~d }~ww xY w)
NF)r;   z`$.`.Tz: r   zInvalid settings.yml)itemsr1   r;   
issubclassmsgspecStructgetr   encodedecodeValidationErrorrr   replacer>   loggererrorr.   rK   	Exceptiondictapply_schema
setdefaultlenrE   )
settingsschema	path_listr   keyrG   cfg_dictcfg_jsonemsgs
             r   r   r      s   Elln ,
UeT"z%'H $<<,"<<..x8 ' 3 3H5 3 I }- %hll3
&C D t$g\(*=*=c2*FsUfW`UfbeUfgEU+=,> 9~u/00L3 ** 
 !fkk%sxx8I)8IS8I/J)JS)PQS!
  hh00C01bH<S!	s2   AD6+F$6F!	AFF!$	G*-2G%%G*SEARXNG_DEBUGSearXNGz$https://docs.searxng.org/donate.htmlrl   )debuginstance_nameprivacypolicy_urlcontact_urldonation_urlenable_metricsopen_metrics)r   r            x   iQ i  i i:	 )SearxEngineAccessDeniedSearxEngineCaptchaSearxEngineTooManyRequestscf_SearxEngineCaptchacf_SearxEngineAccessDeniedrecaptcha_SearxEngineCaptcha)safe_searchautocompleteautocomplete_minfavicon_resolverdefault_lang	languagesban_time_on_failmax_ban_time_on_failsuspended_timesformatsmax_pagei"  SEARXNG_PORTz	127.0.0.1SEARXNG_BIND_ADDRESSSEARXNG_LIMITERSEARXNG_PUBLIC_INSTANCESEARXNG_SECRET)r5   SEARXNG_BASE_URLSEARXNG_IMAGE_PROXY)1.0z1.1r   )POSTGETr   SEARXNG_METHOD)
portbind_addresslimiterpublic_instance
secret_keybase_urlimage_proxyhttp_protocol_versionmethoddefault_http_headersurlSEARXNG_REDIS_URLSEARXNG_VALKEY_URLstatic	templatessimplesimple_stylezhttps://web.archive.org/web/)r4   vimr4   )prettyfullhostr   )static_pathtemplates_pathdefault_themedefault_locale
theme_argscenter_alignmentresults_on_new_tabadvanced_searchquery_in_title	cache_urlsearch_on_category_selecthotkeysurl_formattinglockg      @d   
   g      @   )useragent_suffixrequest_timeoutenable_http2verifymax_request_timeoutpool_connectionspool_maxsizekeepalive_expirymax_redirectsretriesproxies
source_ipsusing_tor_proxyextra_proxy_timeoutnetworks)r   brandsearchserverredisvalkeyuipreferencesoutgoingpluginscategories_as_tabsenginesdoi_resolversSCHEMA)r   rs   r   rs   r   z	list[str])2rX   
__future__r   typingrD   numbersrf   rL   loggingbase64r   os.pathr   r   ry   typing_extensionsr   r   r	   r
   __file__	searx_dir	getLoggerr   OUTPUT_FORMATSr]   SXNG_LOCALE_TAGSSIMPLE_STYLEr$   __annotations__rO   objectrK   r2   rN   r;   rr   intr+   r,   r.   r[   r`   rp   r   Realr   rc   r>   r   r   r9   r   <module>r     sT   - "    	   $  &   &GH%&				7	#/6?T)E)E%EE 1
3 /  
	
 X
 
$d
D$D$J D$J D$J	
 Dk C#IsN   "&!6 ; 6% %P	T- 	T'] ' ' '#P tUO<&sI6*D%+=tD$dE3%7>%tSk3YZ'd3%c2. $Y2%c2.)#q1)#r2%e,<t,C&DbI()9;KL)',,: -gllC @'4W\\5'I"/e"D*7d*K%27<<%I*7e*L,9',,,O
 !~6!#q)%* sCj$?%c;8NO u.?@(u6OP#C6FG!5#,7IJ$T52GH!.~u!E9IJ -dB 7 	}dE3/8KL 	}dE3/8LM .c277<<	83TU0bggll9k6Z[&sH5'R0M,?
 *$6+D%8(u5'e4"3(FG%24%> !3Y?'(BHM$ 	dB' *#r2(s;%dD1sT2,dGLL-A4H)#s3%c2.)',,< 'sB/ a( $T!2D9#T3$5t<(u5,S!4%( T2&'.@AT2&{^ ^r9   