From 1b5cdf6bef783f6cf05de658a04de965856ab9f3 Mon Sep 17 00:00:00 2001 From: jessicamack Date: Thu, 22 Aug 2024 09:38:57 -0400 Subject: [PATCH] Replace ansiconv with ansi2html (#15328) * replace ansiconv with ansi2html The ansiconv package is archived so I'm replacing it with a similar package that's still actively being worked on. * remove minimum version The version minimum was used to get the latest version while running the upgrader * set minimum version for ansi2html * provide usage info --- awx/api/views/__init__.py | 7 +- licenses/ansi2html-1.9.2.tar.gz | Bin 0 -> 40333 bytes licenses/ansi2html.txt | 165 ++++++++++++++++++++++++++++++++ licenses/ansiconv.txt | 20 ---- requirements/requirements.in | 2 +- requirements/requirements.txt | 4 +- 6 files changed, 172 insertions(+), 26 deletions(-) create mode 100644 licenses/ansi2html-1.9.2.tar.gz create mode 100644 licenses/ansi2html.txt delete mode 100644 licenses/ansiconv.txt diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index 51e57b0711..43ac803de7 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -48,8 +48,8 @@ from rest_framework import status from rest_framework_yaml.parsers import YAMLParser from rest_framework_yaml.renderers import YAMLRenderer -# ANSIConv -import ansiconv +# ansi2html +from ansi2html import Ansi2HTMLConverter # Python Social Auth from social_core.backends.utils import load_backends @@ -4205,7 +4205,8 @@ class UnifiedJobStdout(RetrieveAPIView): # Remove any ANSI escape sequences containing job event data. content = re.sub(r'\x1b\[K(?:[A-Za-z0-9+/=]+\x1b\[\d+D)+\x1b\[K', '', content) - body = ansiconv.to_html(html.escape(content)) + conv = Ansi2HTMLConverter() + body = conv.convert(html.escape(content)) context = {'title': get_view_name(self.__class__), 'body': mark_safe(body), 'dark': dark_bg, 'content_only': content_only} data = render_to_string('api/stdout.html', context).strip() diff --git a/licenses/ansi2html-1.9.2.tar.gz b/licenses/ansi2html-1.9.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e232ea45f199b5f1ad3e4558f1ebc060aa99ed83 GIT binary patch literal 40333 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⪼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

0PJ3DI7m3j!Ka8bCv8{o0V4kPlpNECnQz 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 iVc`YxqlFuzha2aISHb_^>qPi + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. \ No newline at end of file diff --git a/licenses/ansiconv.txt b/licenses/ansiconv.txt deleted file mode 100644 index 11c3089c9d..0000000000 --- a/licenses/ansiconv.txt +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Dan Horrigan - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/requirements/requirements.in b/requirements/requirements.in index aa5b4116dc..8a2bd21ae6 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -1,5 +1,5 @@ aiohttp>=3.9.4 # CVE-2024-30251 -ansiconv==1.0.0 # UPGRADE BLOCKER: from 2013, consider replacing instead of upgrading +ansi2html # Used to format the stdout from jobs into html for display asciichartpy asn1 azure-identity diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 1329fce4b1..2838fb6e15 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -11,9 +11,9 @@ aiosignal==1.3.1 # via aiohttp annotated-types==0.6.0 # via pydantic - # via -r /awx_devel/requirements/requirements_git.txt -ansiconv==1.0.0 +ansi2html==1.9.2 # via -r /awx_devel/requirements/requirements.in + # via -r /awx_devel/requirements/requirements_git.txt asciichartpy==1.5.25 # via -r /awx_devel/requirements/requirements.in asgiref==3.7.2