From 7f5f921fc055cb5ab3a9880a47390b01ea6822a7 Mon Sep 17 00:00:00 2001
From: BezierQuadratic <ridrulikke@vusra.com>
Date: Sat, 2 Apr 2022 00:10:18 +0200
Subject: [PATCH] Checks if all licenses are free before marking the software
 as free

---
 licenses.json                              |   8 +++++++
 modules/__pycache__/render.cpython-310.pyc | Bin 0 -> 3172 bytes
 modules/__pycache__/search.cpython-310.pyc | Bin 0 -> 1891 bytes
 modules/render.py                          |  25 ++++++++++++++++-----
 4 files changed, 28 insertions(+), 5 deletions(-)
 create mode 100644 licenses.json
 create mode 100644 modules/__pycache__/render.cpython-310.pyc
 create mode 100644 modules/__pycache__/search.cpython-310.pyc

diff --git a/licenses.json b/licenses.json
new file mode 100644
index 0000000..5ad845d
--- /dev/null
+++ b/licenses.json
@@ -0,0 +1,8 @@
+{
+	"licenses": [
+			"GNU GPL v3.0",
+			"GPL3",
+			"GPL3+",
+			"MIT"
+		]
+}
diff --git a/modules/__pycache__/render.cpython-310.pyc b/modules/__pycache__/render.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b75ff1b422a4affec9c965d2a4e982a97dea6af9
GIT binary patch
literal 3172
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

literal 0
HcmV?d00001

diff --git a/modules/__pycache__/search.cpython-310.pyc b/modules/__pycache__/search.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..232ccb21b18029e22ca199dfadc40ff341d69b48
GIT binary patch
literal 1891
zcmaKt&u`pB6vt=A;~)F8+ZKolDHJ3GE0wG`QK2YBYMKg(21KMrwOS%)XR>kQwRdNn
zZW4{Fp!AA*;lye8$iKm#F&7S;`Uh}{s+RY>yCo^8w&pv2<C!-<{CUq=qfsSrZA5pr
z6L|Uyjk6a6;~OaY28bYnCM2BJG^Aj&g!P@!p+q=>KP4d-uJE9Cg)aiAJwZ1}yYd`H
zll3;W7dGT@U#4AoH_E%aQgv~H`GwCM$}K3m1(L&5h8TL{jOm1cBf8#Z3cH1_it;#X
zGfN{&w|^(fh1SzAI=fk4b|RI>2c0z~<*lqgka?VEN_YC1*iWSHXc?*Q?$Y4U`a15%
zNu(M$A-ZjG<wMn_AoB|ks0O86)eU$PlY$CbupTL#oQ$bp6S_(st`^+zF%!;&s_&1k
z=5Qc}FOU=ZtWmf*AG^k#(8Ak<J#n~C;Ly_GOQPE&N(tWgp=^@$eNJ-k@LNg>pOT|y
z?hDs&<70oA8OGlS4~754Pu*!fq9bCQabUa&cpBD>1FN}KuBIZq9+@z(7m6USnqXX;
zz=@)su%corhV5}RG!@~OH7}^C6l@p{e>7B$41B!O+v3byF!Of#E#7`Lb1y#+55dcC
z=tbbytE?+LSj(fqK%crxk93xvx@dGxz1vD<>SODsQD5rbgJ*yI{rQ7GZ`yiKrc%Y-
zEo^VsEz7j^lUU~>RyL5S(4#otwLBZh)N=G_d6GrKR&F13<p3B-tvgV0np+QMf&td)
z$-Ml`)=jdJRPCze=soniNv5UFt=mUBZ4f2N7B0`y*jCW@)=r#A>&7C=0Xu1FYH7bj
zZz>*cuQ~+`M_vY7e+R-{PC0ARDrKN`y7-D8H(8ywXmHG4RyjKkoEE(VHuR(Hn7!a0
zrvb;d;9MJjr9J_N=MY6aUn9B-XAEdkD6GVj&hT^q5{9s<yCt4r&+z0Wo*eLW|AXge
z|BL4xz|))I$&F*Y8J;k{#M67?m3Ts3;>iF{z#s4g<N(J{3rDzxFT5$5fMmtY;cAv(
zI`fvtL?y--{#O9~@TcKDL&2ACoF421{QYor(a=X#5s1oDBC5YYTVBiSkTl>f=q99(
z4G1>~smYl&*I>nr;yG3SUGWsuVz%aXeO(1`u&RQBSwP_#mk77rGG~O1ROX{h?ddHg
zBM~-Vn<EwHGOX`p3Q(H8ZOpCm<#P;$b6*h~FbQoy(Kxe#e0v20hfM>gWDJrhJ$Mtj
zU^$8U+ag+dh-1-7K#s2H{az1nURqAFZj|U1c$oGAAI_dUJZi3G`>D7#P}z1O`(L*k
zstH5Y1r*G`>LSV|6eL-_gYquQdngMamg`LA5OWZcHc;}hR9cF5Eu6+n87S@!PNP1+
zF^ecyQ9eZZ2qbiMH&YNyU4_{{EW77#Zqc9Z<|cH}Yakd>Zw)900YqC2LJR}yWs5U-
zZc^?xUsSPX5PC1vb#T@8ryIwehQ5e*c9M9z{Lhqmq71mQ<C#U_|3;PZ9xPA)EGzf{
QbsZ!K0*LW|1z!F7KXToyV*mgE

literal 0
HcmV?d00001

diff --git a/modules/render.py b/modules/render.py
index 253ffa5..f5a1ef5 100644
--- a/modules/render.py
+++ b/modules/render.py
@@ -7,6 +7,21 @@
 # your ability to set it up and running.
 
 from modules import search
+import json
+
+def isFree(licenses):
+    matches = 0
+    with open("licenses.json", "r") as data:
+        all_licenses = json.load(data)
+        for license in licenses:
+            for license2 in all_licenses["licenses"]:
+                if license2 == license:
+                    matches = matches + 1
+                    break
+        if matches == len(licenses):
+            return True
+        return False
+
 
 def html(page, json):
 
@@ -18,11 +33,10 @@ def html(page, json):
     # the four essential freedoms.
     
     free = False
+    has_license = False
     if "licenses" in json and json["licenses"]:
-        free = True
-
-    
-
+        has_license = True
+        free = isFree(json["licenses"])
     page = page + "\n <h1>"
     try:
         page = page + '\n<img src="'+ json["links"]["icon"] + '" alt="Logo" style="width:50px;">'
@@ -122,7 +136,8 @@ def suggestions(page, json):
         
         free = False
         if "licenses" in i[-1] and i[-1]["licenses"]:
-            free = True
+            has_license = True
+            free = isFree(i[-1]["licenses"])
     
         if not i[0] or i[-1] == json or not free:
             continue