diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f611005f5..377367aee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -174,35 +174,24 @@ jobs: path: ./drakcore_*_amd64.deb package_drakrun: needs: [ package_drakvuf_bundle ] - strategy: - fail-fast: false - matrix: - include: - - distro: debian - version: buster - - distro: debian - version: bullseye runs-on: ubuntu-latest - container: "${{ matrix.distro }}:${{matrix.version}}" + container: "python:3.8" steps: - uses: actions/checkout@v3 - name: Download draksetup compiled tools from artifacts uses: actions/download-artifact@v3 with: - name: draksetup-tools-${{ matrix.distro }}-${{ matrix.version }} + name: draksetup-tools-debian-buster path: drakrun/drakrun/tools - name: Build drakrun run: | - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get install -y wget python3 python3-pip python3-venv dh-virtualenv debhelper devscripts + chmod +x drakrun/drakrun/tools/* # gh artifacts don't keep file permissions cd drakrun - package/find-python.sh - dpkg-buildpackage -us -uc -b + python3 setup.py bdist_wheel - uses: actions/upload-artifact@v3 with: - name: drakrun-debs-${{ matrix.distro }}-${{ matrix.version }} - path: ./drakrun_*_amd64.deb + name: drakrun-whl + path: ./drakrun/dist/drakrun-*.whl test_e2e: needs: [ package_drakcore, package_drakrun, package_drakvuf_bundle ] strategy: @@ -226,7 +215,7 @@ jobs: - name: Download drakrun debs from artifacts uses: actions/download-artifact@v3 with: - name: drakrun-debs-${{ matrix.distro }}-${{ matrix.version }} + name: drakrun-whl path: /debs - name: Download drakcore debs from artifacts uses: actions/download-artifact@v3 @@ -248,7 +237,7 @@ jobs: cd test pip install -r requirements.txt pytest -v --capture=no - python -m vm_runner_client destroy + python3 -m vm_runner_client destroy env: DRAKVUF_DEBS_PATH: "/debs" BASE_IMAGE: "${{ matrix.distro }}-${{ matrix.version_number }}-generic-amd64" @@ -264,7 +253,7 @@ jobs: - name: Job failed - suspending VM (if possible) if: ${{ failure() }} run: | - python -m vm_runner_client suspend + python3 -m vm_runner_client suspend env: VM_RUNNER_API_URL: "http://127.0.0.1:8080" VM_SUFFIX: "${{ matrix.distro }}-${{ matrix.version_number }}" diff --git a/drakrun/MANIFEST.in b/drakrun/MANIFEST.in index f952b79a0..61f6dcece 100644 --- a/drakrun/MANIFEST.in +++ b/drakrun/MANIFEST.in @@ -1,3 +1,6 @@ include drakrun/cfg.template include drakrun/tools/* include drakrun/test/* +include drakrun/config.dist.ini +include drakrun/hooks.dist.txt +include drakrun/systemd/drakrun@.service diff --git a/drakrun/debian/changelog b/drakrun/debian/changelog deleted file mode 100644 index 786c1c52a..000000000 --- a/drakrun/debian/changelog +++ /dev/null @@ -1,63 +0,0 @@ -drakrun (0.19.0-dev) unstable; urgency=low - * See GitHub for release notes. - -- Arkadiusz Wróbel Wed, 27 Oct 2021 14:00:00 +0100 - -drakrun (0.18.0) unstable; urgency=low - * See GitHub for release notes. - -- Arkadiusz Wróbel Wed, 27 Oct 2021 12:00:00 +0100 - -drakrun (0.17.0) unstable; urgency=low - * See GitHub for release notes. - -- Hubert Jasudowicz Mon, 12 Jul 2021 15:00:00 +0200 - -drakrun (0.16.0) unstable; urgency=low - * See GitHub for release notes. - -- Hubert Jasudowicz Mon, 26 Apr 2021 15:00:00 +0200 - -drakrun (0.15.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Fri, 12 Mar 2021 00:46:00 +0100 - -drakrun (0.14.0) unstable; urgency=low - * See GitHub for release notes. - -- Hubert Jasudowicz Mon, 30 Nov 2020 10:00:00 +0100 - -drakrun (0.13.0) unstable; urgency=low - * See GitHub for release notes. - -- Hubert Jasudowicz Mon, 30 Nov 2020 10:00:00 +0100 - -drakrun (0.12.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Fri, 23 Oct 2020 10:00:00 +0100 - -drakrun (0.11.1) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Wed, 22 Oct 2020 10:00:00 +0100 - -drakrun (0.11.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Tue, 21 Oct 2020 10:00:00 +0100 - -drakrun (0.10.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Mon, 28 Sep 2020 10:00:00 +0100 - -drakrun (0.9.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Thu, 17 Sep 2020 10:00:00 +0100 - -drakrun (0.8.1) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Fri, 4 Sep 2020 10:00:00 +0100 - -drakrun (0.8.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Sat, 8 Aug 2020 10:00:00 +0100 - -drakrun (0.7.0) unstable; urgency=low - * See GitHub for release notes. - -- Adam Kliś Tue, 14 Jul 2020 10:00:00 +0100 - -drakrun (0.6.0) unstable; urgency=low - * See GitHub for release notes. - -- Michał Leszczyński Fri, 29 May 2020 10:00:00 +0100 diff --git a/drakrun/debian/compat b/drakrun/debian/compat deleted file mode 100644 index ec635144f..000000000 --- a/drakrun/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/drakrun/debian/copyright b/drakrun/debian/copyright deleted file mode 100644 index 5802454be..000000000 --- a/drakrun/debian/copyright +++ /dev/null @@ -1,466 +0,0 @@ -/*****************IMPORTANT DRAKVUF SANDBOX LICENSE TERMS******************* - * * - * DRAKVUF Sandbox (C) 2019-2022 CERT Polska - NASK PIB. * - * * - * Please note that this program incorporates * - * DRAKVUF (C) 2014-2022 Tamas K Lengyel * - * which is a separate project under it's own license: * - * https://github.com/tklengyel/drakvuf/blob/master/COPYING * - * * - * CERT Polska - NASK PIB and Tamas K Lengyel are hereinafter referred to * - * as the authors. * - * * - * This program is free software; you may redistribute and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; Version 2 ("GPL"), BUT ONLY WITH ALL OF THE * - * CLARIFICATIONS AND EXCEPTIONS DESCRIBED HEREIN. This guarantees your * - * right to use, modify, and redistribute this software under certain * - * conditions. If you wish to embed DRAKVUF Sandbox technology into * - * proprietary software, alternative licenses can be aquired after * - * obtaining the consent of both authors. * - * * - * Note that the GPL places important restrictions on "derivative works", * - * yet it does not provide a detailed definition of that term. To avoid * - * misunderstandings, we interpret that term as broadly as copyright law * - * allows. For example, we consider an application to constitute a * - * derivative work for the purpose of this license if it does any of the * - * following with any software or content covered by this license * - * ("Covered Software"): * - * * - * o Integrates source code from Covered Software. * - * * - * o Reads or includes copyrighted data files. * - * * - * o Is designed specifically to execute Covered Software and parse the * - * results (as opposed to typical shell or execution-menu apps, which will * - * execute anything you tell them to). * - * * - * o Includes Covered Software in a proprietary executable installer. The * - * installers produced by InstallShield are an example of this. Including * - * DRAKVUF Sandbox with other software in compressed or archival form does * - * not trigger this provision, provided appropriate open source * - * decompression or de-archiving software is widely available for no * - * charge. For the purposes of this license, an installer is considered to * - * include Covered Software even if it actually retrieves a copy of * - * Covered Software from another source during runtime (such as by * - * downloading it from the Internet). * - * * - * o Links (statically or dynamically) to a library which does any of the * - * above. * - * * - * o Executes a helper program, module, or script to do any of the above. * - * * - * This list is not exclusive, but is meant to clarify our interpretation * - * of derived works with some common examples. Other people may interpret * - * the plain GPL differently, so we consider this a special exception to * - * the GPL that we apply to Covered Software. Works which meet any of * - * these conditions must conform to all of the terms of this license, * - * particularly including the GPL Section 3 requirements of providing * - * source code and allowing free redistribution of the work as a whole. * - * * - * As another special exception to the GPL terms, the authors grant * - * permission to link the code of this program with any version of the * - * OpenSSL library which is distributed under a license identical to that * - * listed in the included docs/licenses/OpenSSL.txt file, and distribute * - * linked combinations including the two. * - * * - * Any redistribution of Covered Software, including any derived works, * - * must obey and carry forward all of the terms of this license, including * - * obeying all GPL rules and restrictions. For example, source code of * - * the whole work must be provided and free redistribution must be * - * allowed. All GPL references to "this License", are to be treated as * - * including the terms and conditions of this license text as well. * - * * - * Because this license imposes special exceptions to the GPL, Covered * - * Work may not be combined (even as part of a larger work) with plain GPL * - * software. The terms, conditions, and exceptions of this license must * - * be included as well. This license is incompatible with some other open * - * source licenses as well. In some cases we can relicense portions of * - * DRAKVUF Sandbox or grant special permissions to use it in other open * - * source software. Please contact both info@cert.pl and * - * tamas.k.lengyel@gmail.com with any such requests. * - * Similarly, we don't incorporate incompatible open source software into * - * Covered Software without special permission from the copyright holders. * - * * - * If you have any questions about the licensing restrictions on using * - * DRAKVUF Sandbox in other works, we are happy to help. As mentioned * - * above, alternative license can be requested from the authors to * - * integrate DRAKVUF Sandbox into proprietary applications and appliances. * - * Please email both info@cert.pl and tamas.k.lengyel@gmail.com for * - * further information. * - * * - * If you have received a written license agreement or contract for * - * Covered Software stating terms other than these, you may choose to use * - * and redistribute Covered Software under those terms instead of these. * - * * - * Source is provided to this software because we believe users have a * - * right to know exactly what a program is going to do before they run it. * - * This also allows you to audit the software for security holes. * - * * - * Source code also allows you to port DRAKVUF Sandbox to new platforms, * - * fix bugs, and add new features. You are highly encouraged to submit * - * your changes on https://github.com/CERT-Polska/drakvuf-sandbox, or by * - * other methods. By sending these changes, it is understood (unless you * - * specify otherwise) that you are offering unlimited, non-exclusive right * - * to reuse, modify, and relicense the code. DRAKVUF Sandbox will always * - * be available Open Source, but this is important because the inability * - * to relicense code has caused devastating problems for other Free * - * Software projects (such as KDE and NASM). * - * To specify special license conditions of your contributions, just say * - * so when you send them. * - * * - * This program is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the DRAKVUF * - * Sandbox license file for more details (it's in a COPYING file included * - * with DRAKVUF Sandbox, and also available from * - * https://github.com/CERT-Polska/drakvuf-sandbox/COPYING) * - * * - ***************************************************************************/ - -GNU General Public License - ----------------------------------------------------------------------------- - -Table of Contents - - * GNU GENERAL PUBLIC LICENSE - o Preamble - o TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - o How to Apply These Terms to Your New Programs - ----------------------------------------------------------------------------- - -GNU GENERAL PUBLIC LICENSE - -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to -share and change it. By contrast, the GNU General Public License is intended -to guarantee your freedom to share and change free software--to make sure -the software is free for all its users. This General Public License applies -to most of the Free Software Foundation's software and to any other program -whose authors commit to using it. (Some other Free Software Foundation -software is covered by the GNU Library General Public License instead.) You -can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom -to distribute copies of free software (and charge for this service if you -wish), that you receive source code or can get it if you want it, that you -can change the software or use pieces of it in new free programs; and that -you know you can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to -deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you distribute -copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or -for a fee, you must give the recipients all the rights that you have. You -must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) -offer you this license which gives you legal permission to copy, distribute -and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If -the software is modified by someone else and passed on, we want its -recipients to know that what they have is not the original, so that any -problems introduced by others will not reflect on the original authors' -reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program -proprietary. To prevent this, we have made it clear that any patent must be -licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice -placed by the copyright holder saying it may be distributed under the terms -of this General Public License. The "Program", below, refers to any such -program or work, and a "work based on the Program" means either the Program -or any derivative work under copyright law: that is to say, a work -containing the Program or a portion of it, either verbatim or with -modifications and/or translated into another language. (Hereinafter, -translation is included without limitation in the term "modification".) Each -licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running the Program -is not restricted, and the output from the Program is covered only if its -contents constitute a work based on the Program (independent of having been -made by running the Program). Whether that is true depends on what the -Program does. - -1. You may copy and distribute verbatim copies of the Program's source code -as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -License and to the absence of any warranty; and give any other recipients of -the Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you -may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, -thus forming a work based on the Program, and copy and distribute such -modifications or work under the terms of Section 1 above, provided that you -also meet all of these conditions: - - * a) You must cause the modified files to carry prominent notices stating - that you changed the files and the date of any change. - - * b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties - under the terms of this License. - - * c) If the modified program normally reads commands interactively when - run, you must cause it, when started running for such interactive use - in the most ordinary way, to print or display an announcement including - an appropriate copyright notice and a notice that there is no warranty - (or else, saying that you provide a warranty) and that users may - redistribute the program under these conditions, and telling the user - how to view a copy of this License. (Exception: if the Program itself - is interactive but does not normally print such an announcement, your - work based on the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be -reasonably considered independent and separate works in themselves, then -this License, and its terms, do not apply to those sections when you -distribute them as separate works. But when you distribute the same sections -as part of a whole which is a work based on the Program, the distribution of -the whole must be on the terms of this License, whose permissions for other -licensees extend to the entire whole, and thus to each and every part -regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise -the right to control the distribution of derivative or collective works -based on the Program. - -In addition, mere aggregation of another work not based on the Program with -the Program (or with a work based on the Program) on a volume of a storage -or distribution medium does not bring the other work under the scope of this -License. - -3. You may copy and distribute the Program (or a work based on it, under -Section 2) in object code or executable form under the terms of Sections 1 -and 2 above provided that you also do one of the following: - - * a) Accompany it with the complete corresponding machine-readable source - code, which must be distributed under the terms of Sections 1 and 2 - above on a medium customarily used for software interchange; or, - - * b) Accompany it with a written offer, valid for at least three years, - to give any third party, for a charge no more than your cost of - physically performing source distribution, a complete machine-readable - copy of the corresponding source code, to be distributed under the - terms of Sections 1 and 2 above on a medium customarily used for - software interchange; or, - - * c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed only - for noncommercial distribution and only if you received the program in - object code or executable form with such an offer, in accord with - Subsection b above.) - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all -the source code for all modules it contains, plus any associated interface -definition files, plus the scripts used to control compilation and -installation of the executable. However, as a special exception, the source -code distributed need not include anything that is normally distributed (in -either source or binary form) with the major components (compiler, kernel, -and so on) of the operating system on which the executable runs, unless that -component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to -copy from a designated place, then offering equivalent access to copy the -source code from the same place counts as distribution of the source code, -even though third parties are not compelled to copy the source along with -the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to copy, -modify, sublicense or distribute the Program is void, and will automatically -terminate your rights under this License. However, parties who have received -copies, or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed -it. However, nothing else grants you permission to modify or distribute the -Program or its derivative works. These actions are prohibited by law if you -do not accept this License. Therefore, by modifying or distributing the -Program (or any work based on the Program), you indicate your acceptance of -this License to do so, and all its terms and conditions for copying, -distributing or modifying the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these terms -and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. You are not responsible -for enforcing compliance by third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot distribute so -as to satisfy simultaneously your obligations under this License and any -other pertinent obligations, then as a consequence you may not distribute -the Program at all. For example, if a patent license would not permit -royalty-free redistribution of the Program by all those who receive copies -directly or indirectly through you, then the only way you could satisfy both -it and this License would be to refrain entirely from distribution of the -Program. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents -or other property right claims or to contest validity of any such claims; -this section has the sole purpose of protecting the integrity of the free -software distribution system, which is implemented by public license -practices. Many people have made generous contributions to the wide range of -software distributed through that system in reliance on consistent -application of that system; it is up to the author/donor to decide if he or -she is willing to distribute software through any other system and a -licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain -countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Program under this License may add an -explicit geographical distribution limitation excluding those countries, so -that distribution is permitted only in or among countries not thus excluded. -In such case, this License incorporates the limitation as if written in the -body of this License. - -9. The Free Software Foundation may publish revised and/or new versions of -the 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 Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free programs -whose distribution conditions are different, write to the author to ask for -permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO -THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM -PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible -use to the public, the best way to achieve this is to make it free software -which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively convey the -exclusion of warranty; and each file should have at least the "copyright" -line and a pointer to where the full notice is found. - -one line to give the program's name and an idea of what it does. -Copyright (C) 19yy name of author - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when -it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) 19yy name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. This is free software, and you are welcome -to redistribute it under certain conditions; type `show c' -for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may be -called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright -interest in the program `Gnomovision' -(which makes passes at compilers) written -by James Hacker. - -signature of Ty Coon, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General Public -License instead of this License. diff --git a/drakrun/debian/drakrun.install b/drakrun/debian/drakrun.install deleted file mode 100644 index de6f100d9..000000000 --- a/drakrun/debian/drakrun.install +++ /dev/null @@ -1,4 +0,0 @@ -drakrun/config.ini /etc/drakrun/ -drakrun/scripts/* /etc/drakrun/scripts/ -drakrun/hooks.txt /etc/drakrun/ -drakrun/systemd/*.service /lib/systemd/system/ diff --git a/drakrun/debian/drakrun.links b/drakrun/debian/drakrun.links deleted file mode 100644 index f1310f410..000000000 --- a/drakrun/debian/drakrun.links +++ /dev/null @@ -1,7 +0,0 @@ -opt/venvs/drakrun/bin/draksetup usr/bin/draksetup -opt/venvs/drakrun/bin/drakrun usr/bin/drakrun -opt/venvs/drakrun/bin/drakpush usr/bin/drakpush -opt/venvs/drakrun/bin/drakpdb usr/bin/drakpdb -opt/venvs/drakrun/bin/drakplayground usr/bin/drakplayground -opt/venvs/drakrun/bin/draktestd usr/bin/draktestd -opt/venvs/drakrun/bin/draktest usr/bin/draktest diff --git a/drakrun/debian/postinst b/drakrun/debian/postinst deleted file mode 100644 index 4f13b4c23..000000000 --- a/drakrun/debian/postinst +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -e - -case "$1" in - configure) - # continue with the script - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -mkdir -p /var/lib/drakrun/{profiles,volumes} -systemctl daemon-reload -/opt/venvs/drakrun/bin/draksetup postupgrade diff --git a/drakrun/debian/prerm b/drakrun/debian/prerm deleted file mode 100644 index cea92de75..000000000 --- a/drakrun/debian/prerm +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -e - -case "$1" in - remove) - ;; - - purge) - rm -rf /var/lib/drakrun - ;; - - deconfigure|disappear|upgrade|failed-upgrade|abort-install|abort-install|abort-upgrade) - ;; - - *) - echo "prerm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac diff --git a/drakrun/debian/rules b/drakrun/debian/rules deleted file mode 100644 index bef341ffe..000000000 --- a/drakrun/debian/rules +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/make -f - -PYTHON_BIN := "$(shell cat 'package/python-bin')" - -%: - dh $@ --with python-virtualenv - -build: - if [ ! -f drakrun/tools/test-hvm64-example ] ; then cp /opt/xtf/tests/example/test-hvm64-example drakrun/tools/test-hvm64-example ; $(MAKE) -C drakrun/tools ; fi - chmod +x drakrun/tools/test-hvm64-example drakrun/tools/get-explorer-pid drakrun/tools/test-altp2m - cp drakrun/config.dist.ini drakrun/config.ini - cp drakrun/hooks.dist.txt drakrun/hooks.txt - -override_dh_virtualenv: - dh_virtualenv --python ${PYTHON_BIN} - -# Silence libvmi.so info errors -override_dh_shlibdeps: - dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -Xdrakrun/tools diff --git a/drakrun/drakrun/draksetup.py b/drakrun/drakrun/draksetup.py index a82b016bf..2122445bc 100644 --- a/drakrun/drakrun/draksetup.py +++ b/drakrun/drakrun/draksetup.py @@ -72,8 +72,10 @@ log = logging.getLogger(__name__) +config_path = os.path.join(ETC_DIR, "config.ini") conf = configparser.ConfigParser() -conf.read(os.path.join(ETC_DIR, "config.ini")) +if os.path.isfile(config_path): + conf.read(config_path) def find_default_interface(): @@ -1311,6 +1313,21 @@ def do_import_full(mc, name, bucket, zpool): ) +@click.command(help="Pre-installation activities") +def init(): + # Simple activities handled by deb packages before + # In the future, consider splitting this to remove hard dependency on systemd etc + Path(ETC_DIR).mkdir(exist_ok=True) + default_config = (Path(__file__).parent / "config.dist.ini").read_text() + (Path(ETC_DIR) / "config.ini").write_text(default_config) + + default_hooks = (Path(__file__).parent / "hooks.dist.txt").read_text() + (Path(ETC_DIR) / "hooks.txt").write_text(default_hooks) + + systemd_unit = (Path(__file__).parent / "systemd/drakrun@.service").read_text() + Path("/etc/systemd/system/drakrun@.service").write_text(systemd_unit) + + @click.group() def main(): logging.basicConfig( @@ -1329,6 +1346,7 @@ def main(): main.add_command(snapshot) main.add_command(memdump) main.add_command(cleanup) +main.add_command(init) if __name__ == "__main__": diff --git a/drakrun/drakrun/systemd/drakrun@.service b/drakrun/drakrun/systemd/drakrun@.service index bdc615d43..910e91bb8 100644 --- a/drakrun/drakrun/systemd/drakrun@.service +++ b/drakrun/drakrun/systemd/drakrun@.service @@ -4,7 +4,7 @@ After=network.target [Service] Type=simple -ExecStart=/opt/venvs/drakrun/bin/drakrun %i +ExecStart=/usr/local/bin/drakrun %i User=root Group=root Restart=on-failure diff --git a/test/conftest.py b/test/conftest.py index 02cfc0ec6..153b0a471 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -8,7 +8,7 @@ from invoke.exceptions import UnexpectedExit from vm_runner_client import DrakvufVM -from utils import apt_install +from utils import apt_install, pip_install logging.basicConfig(level=logging.INFO) @@ -33,7 +33,7 @@ ] DRAKVUF_SANDBOX_DEBS = [ - "drakrun_*.deb", + "drakrun-*.whl", "drakcore_*.deb", ] @@ -113,12 +113,16 @@ def drakmon_setup(): with drakvuf_vm.connect_ssh() as ssh: ssh.run("apt-get --allow-releaseinfo-change update", in_stream=False) - apt_install(ssh, ["redis-server"]) + apt_install(ssh, ["redis-server", "python3", "python3-pip", "git", "dnsmasq", "bridge-utils"]) + pip_install(ssh, ["pip"], "--upgrade") for d in drakvuf_sandbox_debs: - apt_install(ssh, ["./" + d.name]) + if str(d).endswith(".deb"): + apt_install(ssh, ["./" + d.name]) + else: + pip_install(ssh, ["./" + d.name]) # Save default config - ssh.run("cp /etc/drakrun/config.ini /etc/drakrun/config.ini.bak") + ssh.run("mkdir /etc/drakrun/") ssh.run(f""" cat > /etc/drakrun/config.ini <