From c68aee688029e413882fbbc0988acd7b13551c50 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 29 Sep 2019 16:15:23 +0200 Subject: [PATCH] First commit --- .gitignore | 4 + LICENSE.txt | 674 ++++++++++++++++++++++++++++++++++++++++ README.md | 3 + extension/gdpr_page.css | 21 ++ extension/gdpr_page.js | 108 +++++++ extension/icon128.png | Bin 0 -> 34528 bytes extension/manifest.json | 32 ++ 7 files changed, 842 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 extension/gdpr_page.css create mode 100644 extension/gdpr_page.js create mode 100644 extension/icon128.png create mode 100644 extension/manifest.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46b6def --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +extension/web-ext-artifacts/ +*.xpi +*.zip +*.crx diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d22621 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Chakra Magic + +A WebExtension wrapper for [Illuminate](https://github.com/bongikairu/illuminate)! \ No newline at end of file diff --git a/extension/gdpr_page.css b/extension/gdpr_page.css new file mode 100644 index 0000000..b88ba57 --- /dev/null +++ b/extension/gdpr_page.css @@ -0,0 +1,21 @@ +.chakramagic-button { + vertical-align: middle; + padding: 0; + border: 1px solid black; + background-color: black; + cursor: pointer; +} + +.chakramagic-button:not([disabled]):hover { + border: 1px solid gray; +} + +.chakramagic-button:not([disabled]):active { + border: 1px solid white; +} + +.chakramagic-image { + width: 28px; + height: 28px; + vertical-align: middle; +} diff --git a/extension/gdpr_page.js b/extension/gdpr_page.js new file mode 100644 index 0000000..d925753 --- /dev/null +++ b/extension/gdpr_page.js @@ -0,0 +1,108 @@ +function illuminate() { + const read_data = () => { + // Get player name, use this to match it to player name from API response + const player_name = document.getElementsByClassName("profile_small_header_name")[0].children[0].textContent; + // Get table row + const row_list = document.getElementById("personaldata_elements_container").querySelectorAll("tr"); + // List of word that indicate this cell means yes + const yes_marks = [ + "Yes", + "Да", + "Ano", + "Ja", + "Kyllä", + "Oui", + "Ναι", + "Igen", + "Sì", + "はい", + "예", + "Tak", + "Sim", + "Da", + "是", + "Sí", + "ใช่", + "Evet", + "Так", + ]; + // Building compacted output, first cell is player name, each cell is splitted by , + let all_output = encodeURIComponent(player_name) + ","; + // Each table row + for (let i = 1; i < row_list.length; i++) { + const col_list = row_list[i].querySelectorAll("td"); + // td count will be 0 if this is a table header (it use th) + if (col_list.length === 0) continue; + // Build row output from {match id}-{indicator}-{timestamp} + let output = ""; + output += col_list[0].textContent + "-" + col_list[1].textContent + "-"; + for (let j = 2; j < col_list.length; j++) { + output += yes_marks.indexOf(col_list[j].textContent) !== -1 ? "1" : "0"; + } + all_output += output + "," + } + // Redirect user to illuminate to have this output data shown in better format + window.location = "https://illuminate.dotasphere.com/#" + all_output; + }; + const load_all_data = () => { + // Get Element Handle + const b1 = document.getElementById("load_more_button"); + const b2 = document.getElementById("inventory_history_loading"); + // Checking if there is more data by inspecting button and loading text style + const has_more = () => { + return (b1 && b1.style.display !== "none") || (b2 && b2.style.display !== "none"); + }; + const has_load_more = () => b1 && b1.style.display !== "none"; + const load_more = () => b1.click(); + // Loop checking the page, if it is done, read_data() + const watch_load_more = () => { + const interval = setInterval(() => { + if (has_load_more()) { + load_more(); + } else { + if (!has_more()) { + clearInterval(interval); + console.log("done"); + read_data(); + } + } + }, 100); + }; + // Just visual indicator that the script is working + const b3 = document.getElementById("personaldata_elements_container"); + if (!b3) return alert("Data table not found, make sure you are on steam GDPR page"); + const h1 = document.createElement("h1"); + const h1text = document.createTextNode("Loading more data "); + const h1spinner = document.createElement("img"); + h1spinner.src = "https://steamcommunity-a.akamaihd.net/public/images/login/throbber.gif"; + h1.appendChild(h1text); + h1.appendChild(h1spinner); + b3.insertBefore(h1, b3.childNodes[0]); + // Start checking loop + watch_load_more(); + }; + + let chakraElement = document.querySelector(".chakramagic-button"); + chakraElement.setAttribute("disabled", ""); + chakraElement.setAttribute("onclick", ""); + + load_all_data(); +} + +function chakraMagic() { + let parentElement = document.querySelector(".profile_private_info_dropdowns"); + + let chakraElement = document.createElement("button"); + parentElement.appendChild(chakraElement); + chakraElement.setAttribute("onclick", "illuminate()") + chakraElement.setAttribute("class", "chakramagic-button") + + let imageElement = document.createElement("img") + chakraElement.appendChild(imageElement); + imageElement.setAttribute("src", "http://cdn.dota2.com/apps/dota2/images/abilities/keeper_of_the_light_illuminate_hp2.png"); + imageElement.setAttribute("class", "chakramagic-image") + + exportFunction(illuminate, window, {defineAs: "illuminate"}); +} + +chakraMagic(); diff --git a/extension/icon128.png b/extension/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5a51cb5f5a173a0fd0ae341483e9aaf320481f GIT binary patch literal 34528 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 literal 0 HcmV?d00001 diff --git a/extension/manifest.json b/extension/manifest.json new file mode 100644 index 0000000..7f81266 --- /dev/null +++ b/extension/manifest.json @@ -0,0 +1,32 @@ +{ + "manifest_version": 2, + + "applications": { + "gecko": { + "id": "chakramagic@steffo.eu" + } + }, + + "name": "Chakra Magic", + "version": "2019.09.29.1", + "developer": { + "name": "Stefano Pigozzi", + "url": "https://github.com/Steffo99/instant-view-opener" + }, + + "description": "Display which games you were reported and commended in!", + + "permissions": [], + + "content_scripts": [ + { + "matches": ["https://steamcommunity.com/*/gcpd/570?category=Account&tab=MatchPlayerReportIncoming"], + "js": ["gdpr_page.js"], + "css": ["gdpr_page.css"] + } + ], + + "icons": { + "128": "icon128.png" + } +} \ No newline at end of file