§ ­Z n$é4ãóö—ddlZddlmZmZddlmZddlZddlmZddl m Z dZ dZ dZ Gd „d e¦«ZGd „d ¦«Zd „Ze e e fdœdedeedefd„Zdedeefd„Zdedeefd„ZdS)éN)ÚIterableÚList)Údeque)Ú DictCursor)Ú load_fastz/etc/psa/psa.confz /etc/my.cnfz/etc/mysql/my.cnfcó—eZdZdZdS)Ú MySQLErrorz4 Exception related to operation with MySQL. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óúr/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/clcommon/mysql_lib.pyr r s€€€€€ððððrr c óÖ—eZdZddefd„Zd„Zd„Zd„Zdd„Zdd „Z dd „Z d „Z e d „¦«Z ddedeed zdeedfeeefzfd„Zedededd fd„¦«Zd S)ÚMySQLConnectorFÚas_dictc ó–—| | dd¦«|¦«d|_|rtnd|_||_dS)NÚhostÚ localhost)Úadd_unix_socket_if_localhostÚgetÚ _connectionrÚ _cursor_typeÚ_connect_kwargs)ÚselfrÚkwargss rÚ__init__zMySQLConnector.__init__sM€Ø ×)Ò)¨&¯*ª*°V¸[Ñ*IÔ*IÈ6ÑRÔRÐRàˆÔØ*1Ð;�J˜J°tˆÔØ%ˆÔÐÐrcó.—| ¦«dS©N©Úclose©rs rÚ__del__zMySQLConnector.__del__&ó€Ø � Š ‰ Œ ˆ ˆ ˆ rcó*—| ¦«Sr )Úconnectr#s rÚ __enter__zMySQLConnector.__enter__)s€Ø�|Š|‰~Œ~Ðrcó.—| ¦«dSr r!)rÚexc_typeÚ exc_valueÚ tracebacks rÚ__exit__zMySQLConnector.__exit__,r%rÚreturncó¸—|j�|S tjdi|j¤Ž|_|S#tj$r"}t t |¦«¦«|‚d}~wwxYw)Nr)rÚpymysqlr'rÚErrorr Ústr)rÚes rr'zMySQLConnector.connect/sl€Ø Ô Ð '؈Kð ,Ý&œÐFÐF°Ô1EÐFÐFˆDÔ ØˆKøÝŒ}ð ,ð ,ð ,Ý�S ™VœVÑ$Ô$¨!Ð +øøøøð ,øøøs‹(¨A·AÁANcóX—|j�"|j ¦«d|_dSdSr )rr"r#s rr"zMySQLConnector.close8s6€Ø Ô Ð 'Ø Ô × "Ò "Ñ $Ô $Ð $Ø#ˆDÔ Ð Ð ð (Ð 'rcóJ—|j�|j ¦«dSdSr )rÚcommitr#s rr6zMySQLConnector.commit=s.€Ø Ô Ð 'Ø Ô × #Ò #Ñ %Ô %Ð %Ð %Ð %ð (Ð 'rcó@—|j |j¦«Sr )Ú connectionÚcursorrr#s rr9zMySQLConnector.cursorAs€ØŒ×%Ò% dÔ&7Ñ8Ô8Ð8rcóF—|j€| ¦«|jSr )rr'r#s rr8zMySQLConnector.connectionDs!€à Ô Ð #Ø �LŠL‰NŒNˆNØÔÐrÚ sql_queryÚargs.cóÊ—|j |j¦«5}| ||¬¦«| ¦«cddd¦«S#1swxYwYdS)z: Execute SQL query and return the result. )r<N)r8r9rÚexecuteÚfetchall)rr;r<r9s rÚ execute_queryzMySQLConnector.execute_queryJs¡€ðŒ_× #Ò # DÔ$5Ñ 6Ô 6ð %¸&Ø �NŠN˜9¨4ˆNÑ 0Ô 0Ð 0Ø—?’?Ñ$Ô$ð %ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s +AÁAÁArrcóD—|dkrd|vrt¦«|d<dSdSdS)ag Add 'unix_socket' to kwargs if host is 'localhost'. It seems that when the host is set to 'localhost', establishing a connection through TCP/IP might encounter issues due to some MySQL configuration options. To prioritize a Unix socket connection, we should include the 'unix_socket' query parameter. rÚ unix_socketN)Úget_unix_socket_path)rrs rrz+MySQLConnector.add_unix_socket_if_localhostVs=€ð �;Ò Ð  =¸Ð#>Ð#>Ý$8Ñ$:Ô$:ˆF�=Ñ !Ð !Ð !ð Ð Ð#>Ð#>r)F)r.r)r.Nr )r r r Úboolrr$r(r-r'r"r6r9Úpropertyr8r2rÚobjectÚtupleÚdictr@Ú staticmethodrrrrrrsW€€€€€ð&ð& ð&ð&ð&ð&ðððððððððð,ð,ð,ð,ð$ð$ð$ð$ð &ð&ð&ð&ð9ð9ð9ðð ð ñ„Xð ð)-ð %ð %àð %ð�vÔ Ñ%ð %ð ˆv�sˆ{Ô ˜d 3¨ ;Ô/Ñ /ð %ð %ð %ð %ðð ;¨3ð ;¸ð ;Àð ;ð ;ð ;ñ„\ð ;ð ;ð ;rrcóP—t |j|j¦«|S)zF Get a modified RFC 1738 URL for a MySQL database connection. )rrrÚquery)Úurls rÚget_rfc1738_db_urirMes#€õ×/Ò/°´¸#¼)ÑDÔDÐDØ €Jr)Úplesk_config_pathÚ mysql_configsrNrOr.có—tj |¦«r*t|d¬¦«}| d¦«}|�|St |¦«}t |¦«dkr“| ¦«}tj |¦«sŒGt|d¬¦«}| d¦«}|�|S| t|¦«¦«t |¦«dk°“d S) z¹ Get the Unix socket path for MySQL connection. Check Plesk and MySQL config files for the socket path. If found, return that path. If not, return default socket path. ú )Ú delimiterÚ MYSQL_SOCKETNrT)Ú strip_quotesÚsocketz/var/lib/mysql/mysql.sock) ÚosÚpathÚisfilerrrÚlenÚpopleftÚextendÚ get_cnf_paths)rNrOÚpsa_confÚpsa_conf_socketÚmysql_configs_queueÚ my_conf_pathÚmy_confÚmy_conf_sockets rrCrCms€õ „w‡~‚~Ð'Ñ(Ô(ð#ÝÐ.¸#Ð>Ñ>Ô>ˆØ"Ÿ,š, ~Ñ6Ô6ˆØ Ð &Ø"Ð "å  Ñ.Ô.ÐÝ Ð!Ñ "Ô " QÒ &Ð &Ø*×2Ò2Ñ4Ô4ˆ ÝŒw�~Š~˜lÑ+Ô+ð Ø å˜L°tÐ<Ñ<Ô<ˆà Ÿš XÑ.Ô.ˆØ Ð %Ø!Ð !ð ×"Ò"¥=°Ñ#>Ô#>Ñ?Ô?Ð?õ Ð!Ñ "Ô " QÒ &Ð &ð 'Ð &rrWcó—g}g} t|ddd¬¦«5}|D�] }| ¦«} | d¦«r\| d¦« ¦«}tj |¦«r| |¦«np| d¦«r[| d¦« ¦«}tj |¦«r| |¦«Œú#t$rY�ŒwxYw|D]}|t|¦«z }Œ ddd¦«n #1swxYwYn/#ttf$r}td |›d |›�¦«|‚d}~wwxYw|S) z¢ Get all included config files paths in the given config file marked with !include and !includedir. Returns an empty list if there are no paths. Úrzutf-8Úsurrogateescape)ÚencodingÚerrorsz !includedirz !include z!includeNzError reading config file z: )ÚopenÚstripÚ startswithÚ removeprefixrVrWÚisdirÚappendrXÚ IndexErrorÚget_cnf_files_in_dirÚOSErrorÚIOErrorr ) rWÚ include_dirsÚ list_of_pathsÚ config_fileÚlineÚincluded_dir_pathÚincluded_file_pathÚdir_pathr3s rr\r\�s€ð!€LØ!€MðJÝ �$˜ gÐ6GÐ HÑ HÔ Hð @ÈKØ#ð ñ �Ø—z’z‘|”|�ð Ø—’ }Ñ5Ô5ðEØ,0×,=Ò,=¸mÑ,LÔ,L×,RÒ,RÑ,TÔ,TÐ)Ýœ7Ÿ=š=Ð):Ñ;Ô;ðCØ(×/Ò/Ð0AÑBÔBÐBøØŸš¨Ñ5Ô5ðEØ-1×->Ò->¸zÑ-JÔ-J×-PÒ-PÑ-RÔ-RÐ*Ýœ7Ÿ>š>Ð*<Ñ=Ô=ðEØ)×0Ò0Ð1CÑDÔDÐDøøÝ!ðððà‘Dðøøøð)ð @ð @�ØÕ!5°hÑ!?Ô!?Ñ?� � ð @ð @ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @øøõ" •WÐ ðJðJðJÝÐA°dÐAÐA¸aÐAÐAÑBÔBÈÐIøøøøðJøøøà Ðs^†E™E ´C!DÄE Ä D$Ä E Ä#D$Ä$E Ä? EÅ EÅEÅEÅEÅFÅ(E>Å>Fcó¨—g}tj |¦«r°tj|¦«D]›}tj tj ||¦«¦«r\tj |¦«ddkr3| tj ||¦«¦«Œœ|S)zT Get paths list in given dir Returns an empty list if there is no paths éz.cnf)rVrWrlÚlistdirrXÚjoinÚsplitextrm)rWrsÚitems rroro±sª€ð €MÝ „w‡}‚}�TÑÔð?Ý”J˜tÑ$Ô$ð ?ð ?ˆDÝŒw�~Š~�bœgŸlšl¨4°Ñ6Ô6Ñ7Ô7ð ?½B¼G×Ô>Ð>øØ Ðr)rVÚtypingrrÚ collectionsrr0Úpymysql.cursorsrÚclcommon.clconfparsrÚPLESK_CONFIG_PATHÚMY_CONFIG_PATHÚMY_CONFIG_PATH2Ú Exceptionr rrMr2rCÚlistr\rorrrúrˆs„ðð € € € Ø!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÐÐÐÐÐà€€€Ø&Ð&Ð&Ð&Ð&Ð&à)Ð)Ð)Ð)Ð)Ð)à'ÐØ€Ø%€ððððð�ñôðð E;ðE;ðE;ðE;ðE;ñE;ôE;ðE;ðPððð/Ø$2°OÐ#Dð 'ð 'ð 'àð 'ð˜C”=ð 'ð ð 'ð 'ð 'ð 'ðF˜ð  S¤ ðððððB ˜sð  t¨C¤yð ð ð ð ð ð r