§ Ù@ªju#ãóê—ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddlm Z mZddlmZdZdaGd„d e¦«Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z dS)éN)Ú reboot_lock)ÚconfigÚdbengine)ÚLVEVersionErrorÚget_lve_version)Ú setup_loggingz /dev/nullÚcó‡—eZdZˆfd„ZˆxZS)ÚEnvironmentExceptioncóV•—t¦« ¦«||_dS)N)ÚsuperÚ__init__Úmessage)ÚselfrÚ __class__s €ú‡/builddir/build/BUILDROOT/lve-stats-5.0.5-1.el8.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/lib/lvestats_server.pyrzEnvironmentException.__init__s$ø€Ý ‰Œ×ÒÑÔÐØˆŒ ˆ ˆ ó)Ú__name__Ú __module__Ú __qualname__rÚ __classcell__)rs@rr r s8ø€€€€€ðððððððððrr cóˆ—tr¸tj t¦«r– t tdd¬¦«5}t | ¦« ¦«¦«}tj|d¦«|cddd¦«S#1swxYwYdS#ttf$rYdSwxYwdSdS)z‚ Check if lvestats already running :return int|None: None - if no process found; pid - if some lvestats-server found Úrúutf-8)ÚencodingrN) ÚPIDFILEÚosÚpathÚisfileÚopenÚintÚreadÚstripÚkillÚIOErrorÚOSError)ÚfÚpids rÚget_process_pidr) s €õ ð•2”7—>’>¥'Ñ*Ô*ðð Ý•g˜s¨WÐ5Ñ5Ô5ð ¸Ý˜!Ÿ&š&™(œ(Ÿ.š.Ñ*Ô*Ñ+Ô+�Ý”˜˜Q‘”�Øð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð øõ�Ð!ð ð ð Ø�4�4ð øøøð ðððs6­B(ÁA B B(ÂBÂB(Â"BÂ#B(Â(B=Â<B=có$‡ —d}dtdtjfˆ fd„ }dtjfˆ fd„ }dtjfˆ fd„ }t id¬ ¦«Š t ¦«}|€d }�n*tj|¦«}| d ¬ ¦«}td ¬¦«5|D]6}tj |j ¦«r||j tj ¦«Œ7tj |d|¬¦«\}} | D]} || j tj ¦«Œtj |d|¬¦«\}} ||tj ¦«tjd¦«| D]}||j tj¦«Œ ddd¦«n #1swxYwY|S)NrÚ_pidÚ_signalcó�•— tj||¦«dS#ttf$r‰ d|¦«YdSwxYw)z6Kill process by pid by sending a specific signal to itz%Process with pid '%d' is already deadN)rr$r&ÚProcessLookupErrorÚinfo)r+r,Úlogs €rÚ kill_processz!stop_server..kill_process2sdø€ð DÝ ŒG�D˜'Ñ "Ô "Ð "Ð "Ð "øÝÕ+Ð,ð Dð Dð DØ �HŠHÐ<¸dÑ CÔ CÐ CÐ CÐ CÐ Cð Døøøsƒš'AÁAÚ_proccó4•—‰ d|¦«dS)ú callback for psutil.wait_procs()z*Signal 'SIGUSR2' sent to child process: %sN©r/©r2r0s €rÚ on_sigusr2zstop_server..on_sigusr29óø€à �ŠÐ=¸uÑEÔEÐEÐEÐErcó4•—‰ d|¦«dS)r4z*Signal 'SIGTERM' sent to child process: %sNr5r6s €rÚ on_terminatez!stop_server..on_terminate=r8rÚ stop_server)Ú caller_nameéT)Ú recursiveiX)Útimeouté)r?Úcallbackg333333Ã?)r!ÚsignalÚSignalsÚpsutilÚProcessrr)ÚchildrenrÚ pid_existsr(ÚSIGUSR2Ú wait_procsÚSIGTERMÚtimeÚsleepÚSIGKILL) Ú exit_coder1r7r:r(ÚprocessÚchildsÚchildÚ_ÚaliveÚpr0s @rr;r;/sDø€Ø€IðD�3ðD­¬ðDðDðDðDðDðDðF�&œ.ðFðFðFðFðFðFðF�FœNðFðFðFðFðFðFõ ˜¨ Ð 6Ñ 6Ô 6€CÝ Ñ Ô €CØ €{؈ ‰ å”. Ñ%Ô%ˆØ×!Ò!¨DÐ!Ñ1Ô1ˆÝ  Ð )Ñ )Ô )ð 8ð 8Øð <ð <�õÔ$ U¤YÑ/Ô/ð<Ø �L ¤­F¬NÑ;Ô;Ð;øÝÔ(¨¸ÀZÐPÑPÔP‰HˆAˆuØð 4ð 4�Ø� ˜QœU¥F¤NÑ3Ô3Ð3Ð3ÝÔ(¨¸À\ÐRÑRÔR‰HˆAˆuØ ˆL˜�fœnÑ -Ô -Ð -Ý ŒJ�tÑ Ô Ð Øð 8ð 8�Ø� ˜UœY­¬Ñ7Ô7Ð7Ð7ð 8ð 8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð Ðs CFÆF Æ F có$—d„}|t_dS)Ncó"—tj¦«}tj||¬¦«d|›d�}t j|t |¦«| ¦«¦«| ¦«tj |||¦«dS)N)ÚfilezUncaught exception z message='%s' :%s) ÚioÚStringIOÚ tracebackÚprint_tbÚloggingÚerrorÚstrÚgetvalueÚcloseÚsysÚ__excepthook__)Ú_typeÚ_exÚ_traceÚsioÚmsgs rÚhookz*setup_default_exception_hook..hookZs}€ÝŒk‰mŒmˆÝÔ˜6¨Ð,Ñ,Ô,Ð,Ø> EÐ>Ð>Ð>ˆÝŒ �c�3˜s™8œ8 S§\¢\¡^¤^Ñ4Ô4Ð4Ø � Š ‰ Œ ˆ Ý Ô˜5 # vÑ.Ô.Ð.Ð.Ð.r)raÚ excepthook)rhs rÚsetup_default_exception_hookrjYs€ð/ð/ð/ð…C„N€N€NrcóD—ddlm}| |||||¦«dS)Nr)Úmain)Úlvestatsrl)ÚcnfÚ singleprocessÚpluginsÚ profiling_logÚtimes_rls rÚrun_mainrses4€ØÐÐÐÐÐØ‡I‚Iˆc�= '¨=¸&ÑAÔAÐAÐAÐArcó€—tjd¦«}| d¦«tjd¦«dS)NÚsigterm_handlerzSIGTERM handler. Shutting Down.r)r\Ú getLoggerr/rÚ_exit)ÚsignumÚframer0s rrurujs7€Ý Ô Ð-Ñ .Ô .€C؇H‚HÐ .Ñ/Ô/Ð/Ý„HˆQ�K„K€K€K€Krcóæ—| d¦« tj|¦«}| d¦«tj||¦«tj|¦«}|ds|drt jd¦«dSdS#t$rU}d}|  t|¦«¦«|  |¦«td|›d|›d�¦«|‚d}~wwxYw) zØ Check whether database connection can be established and db schema is ok. Raises exception if database is broken. :type cnf: dict :type log_: logging.Logger :raises: EnvironmentException zCheck for running SQL serverz SELECT 1;Ú column_errorÚ table_errorr=z/Error occurred during connecting to SQL server:ú N) ÚdebugrÚmake_db_engineÚexecuteÚnormalize_sqlite_journal_modeÚvalidate_databaseraÚexitÚ ExceptionÚfatalr^Ú exceptionr )rnÚlog_ÚengineÚ validationÚexrgs rÚ_check_db_connectionr‹ps €ð ‡J‚JÐ-Ñ.Ô.Ð.ð?ÝÔ(¨Ñ-Ô-ˆØ�Š�{Ñ#Ô#Ð#õ Ô.¨v°tÑ<Ô<Ð<ÝÔ/°Ñ7Ô7ˆ Ø �nÔ %ð ¨°MÔ)Bð Ý ŒH�Q‰KŒKˆKˆKˆKð ð øå ð?ð?ð?Ø?ˆØ � Š •3�r‘7”7ÑÔÐØ �Š�rÑÔÐå"Ð#5¨Ð#5Ð#5¨rÐ#5Ð#5Ð#5Ñ6Ô6¸BÐ>øøøøð ?øøøs—A6B C0ÂAC+Ã+C0có¬—| d¦«t¦«}|dkr*d}| d¦«td|›d�¦«‚dS)zÖ Check for possible misconfiguration if cpu speed is reported as 0 with /proc/cpuinfo and lve version <= 4. Raises exception, if so. :type log_: logging.Logger :raises: EnvironmentException zCheck for valid LVE versionézLVE version <= 4z!LVE version <= 4. Please, update.r}N)r~rr…r )r‡Ú lve_versionrgs rÚ_check_valid_lve_versionr�Œsc€ð ‡J‚JÐ,Ñ-Ô-Ð-å!Ñ#Ô#€KØ�aÒÐØ ˆØ � Š Ð6Ñ7Ô7Ð7Ý" <¨ < < <Ñ0Ô0Ð0ðÐrcó¤—| d¦«t¦«}|r*d|›d�}| |¦«t|¦«‚dS)z£ Check if another instance of lve-stats is already running. Raises exception, if so. :param log_: logging.Logger :raises: EnvironmentException z!Check for running lvestats-serverz)Lvestats-server already running with pid z . ExitingN)r~r)Úwarningr )r‡Úrcrgs rÚ_check_running_processr“�sd€ð ‡J‚JÐ2Ñ3Ô3Ð3Ý Ñ Ô €BØ ð(ØG¸"ÐGÐGÐGˆØ � Š �SÑÔÐå" 3Ñ'Ô'Ð'ð (ð(rcó— t|¦«t||¦«t|¦«nZ#t$rM}tj |j¦«tj ¦«Yd}~dSd}~wwxYwdS)z£ Checks whether system environment works fine. Return True if ok, False otherwise. :type cnf: dict :type log_: logging.Logger :rtype: bool NFT) r“r‹r�r raÚstderrÚwriterÚflush)rnr‡rŠs rÚ_is_environment_okr˜­s•€ðݘtÑ$Ô$Ð$ݘS $Ñ'Ô'Ð'Ý  Ñ&Ô&Ð&Ð&øÝ ðððÝ Œ ×Ò˜œÑ$Ô$Ð$Ý Œ ×ÒÑÔÐØˆuˆuˆuˆuˆuøøøøðøøøð ˆ4s‚.1± B»ABÂBcóÔ—d„}t|tj¬¦«t¦«tjd¦«}t ||¦«st jd¦«| d¦«|¦«}|r>| d|¦«tj d¦«tj d¦«tj ¦«tjtjt ¦«|¦«}|�r| d |¦«t"rË| d t"¦«tjt"tjtjztjztjzd ¦«} tj|t1|¦« d ¦«¦«tj|¦«n#tj|¦«wxYw| d ¦«tj d¦«tjd¦«tj¦«tjd¦«tjd¦«} t j  ¦«t j!  ¦«t%tDd¦«} t%tDd¦«} t%tDd¦«} tj#|  $¦«t j% $¦«¦«tj#|  $¦«t j $¦«¦«tj#|  $¦«t j! $¦«¦«| &d¦«tj| ¦«tO|||||¦«dS)NcóŽ— tj¦«S#t$r%}t|j›d|j›d�¦«|‚d}~wwxYw)Nz [ú])rÚforkr&Ú RuntimeErrorÚstrerrorÚerrno)Úes rrœzdaemonize..forkÂs\€ð CÝ”7‘9”9Ð øÝð Cð Cð CÝ !¤*Ð:Ð:°´Ð:Ð:Ð:Ñ;Ô;ÀÐ Bøøøøð Cøøøs‚• AŸ ?¿A)Ú console_levelÚserverr=zStarting serverzFirst fork, pid=%dgš™™™™™É?rzSecond fork, pid=%dzWriting pid to file %si¤rzChild daemon fork oké ú/rza+zStarting main() in daemon)(rr\ÚCRITICALrjrvr˜rarƒr~rKrLrrwÚsetsidrBrJrurr ÚO_WRONLYÚO_CREATÚO_TRUNCÚ O_NOFOLLOWr–r^Úencoder`ÚniceÚsetpgrpÚchdirÚumaskÚstdoutr—r•ÚDEV_NULLÚdup2ÚfilenoÚstdinr/rs) rnrorprqÚtimesrœr‡r(ÚfdÚprevious_umaskÚsiÚsoÚses rÚ daemonizer»Ásó€ðCðCðCõ �#¥WÔ%5Ð6Ñ6Ô6Ð6Ý Ñ"Ô"Ð"å Ô ˜XÑ &Ô &€Då ˜c 4Ñ (Ô (ðÝ Œ�‰ Œ ˆ à‡J‚JÐ Ñ!Ô!Ð!à ˆ$‰&Œ&€CØ ðØ � Š Ð'¨Ñ-Ô-Ð-Ý Œ �3‰ŒˆÝ Œ�‰ Œ ˆ å„I�K„K€KÝ „M•&”.¥/Ñ2Ô2Ð2à ˆ$‰&Œ&€CØ ñ Ø � Š Ð(¨#Ñ.Ô.Ð.Ý ð Ø �JŠJÐ/µÑ 9Ô 9Ð 9Ý”�¥"¤+µ´ Ñ":½R¼ZÑ"GÍ"Ì-Ñ"WÐY^Ñ_Ô_ˆBð Ý”˜�S ™XœXŸ_š_¨WÑ5Ô5Ñ6Ô6Ð6唘‘ ” � � ø•”˜‘ ” � � øøøà � Š Ð)Ñ*Ô*Ð*å Œ�‰ Œ ˆ å„GˆB�K„K€KÝ„J�L„L€LÝ„HˆS�M„M€MÝ”X˜a‘[”[€Nå„J×ÒÑÔÐÝ„J×ÒÑÔÐå �h˜Ñ Ô €BÝ �h˜Ñ Ô €BÝ �h˜Ñ Ô €Bå„GˆB�IŠI‰KŒK�œ×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ý„GˆB�IŠI‰KŒK�œ×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ý„GˆB�IŠI‰KŒK�œ×*Ò*Ñ,Ô,Ñ-Ô-Ð-à‡I‚IÐ)Ñ*Ô*Ð*å„Hˆ^ÑÔÐÝ ˆS�- ¨-¸Ñ?Ô?Ð?Ð?Ð?s Æ 5GÇG-có —|jdkr"tjt¦«¦«dS|jdkr2t¦«t ||j|j|j|¦«dS|jdkrŽ|jrc|j r tj n tj }t|||¬¦«t¦«t||j|j|j|¦«dSt ||j|j|j|¦«dSdS)NÚstopÚrestartÚstart)r¡Ú file_level)Úactionrarƒr;r»rorprqÚnodaemonÚ debug_moder\ÚDEBUGÚINFOrrjrs)rnÚ_optsÚ_timesrÃs rÚ process_optsrÈs€Ø „|�vÒÐÝ Œ•‘”ÑÔÐÐÐØ Œ˜Ò "Ð "݉ Œ ˆ Ý�#�uÔ*¨E¬M¸5Ô;NÐPVÑWÔWÐWÐWÐWØ Œ˜Ò Ð Ø Œ>ð \Ø*/Ô*:ÐL�œ˜ÅÄ ˆJÝ ˜#¨ZÀJÐ OÑ OÔ OÐ OÝ (Ñ *Ô *Ð *Ý �S˜%Ô-¨u¬}¸eÔ>QÐSYÑ ZÔ ZÐ ZÐ ZÐ Zå �c˜5Ô.°´ ¸uÔ?RÐTZÑ [Ô [Ð [Ð [Ð [ð !Ð rcó—|js$td¦«tjd¦«n|jad}|jrt |j¦«}d} tj¦«}n0#tj $r}|  ¦«Yd}~nd}~wwxYw t|||¦«dS#t$rK}tj  t|¦«¦«tjd¦«Yd}~dSd}~wwxYw)Nz--pidfile should be specifiedr=)ÚpidfileÚprintrarƒrrµr!rÚ read_configÚ ConfigErrorÚ log_and_exitrÈrr0r]r^)ÚoptsrµÚcfgÚceÚ lve_errors rrlrls€Ø Œ<ðÝ Ð-Ñ.Ô.Ð.Ý Œ�‰ Œ ˆ ˆ ð”,ˆà €EØ „zð Ý�D”J‘”ˆà €CðÝÔ Ñ"Ô"ˆˆøÝ Ô ðððØ �ŠÑÔÐÐÐÐÐÐøøøøðøøøðÝ�S˜$ Ñ&Ô&Ð&Ð&Ð&øÝ ðððÝŒ ×Ò�˜Y™œÑ(Ô(Ð(Ý Œ�‰ Œ ˆ ˆ ˆ ˆ ˆ ˆ ˆ øøøøðøøøs1ÁA'Á'BÁ6BÂBÂB+Â+ DÂ5AC;Ã;D)!rXr\rrBrarKrZrDÚlvestats.lib.commons.funcrÚ lvestats.librrrrÚlvestats.lib.commons.logsetuprr±rr„r r)r;rjrsrur‹r�r“r˜r»rÈrl©rrúr×s£ðð € € € Ø€€€Ø € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ € € € à1Ð1Ð1Ð1Ð1Ð1Ø)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØFÐFÐFÐFÐFÐFÐFÐFØ7Ð7Ð7Ð7Ð7Ð7à €Ø €ððððð˜9ñôðð ð ð ð'ð'ð'ðT ð ð ðBðBðBð ððð ?ð?ð?ð81ð1ð1ð" (ð (ð (ð ððð(<@ð<@ð<@ð~ \ð \ð \ð ððððr