From aac60dd4da223181191862c53066a34db3b88c60 Mon Sep 17 00:00:00 2001
From: Tue Herlau <tuhe@dtu.dk>
Date: Tue, 11 Oct 2022 14:48:08 +0200
Subject: [PATCH] CICD

---
 .gitlab-ci.yml              |  36 +++++++++++++++++++++++++
 requirements.txt            |   3 +++
 server.pem                  |  51 ++++++++++++++++++++++++++++++++++++
 src/unlearn/cache/cache.db  | Bin 32768 -> 32768 bytes
 src/unlearn/learn_config.py |   2 +-
 src/unlearn/tokenpage.py    |   9 +++++++
 6 files changed, 100 insertions(+), 1 deletion(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 requirements.txt
 create mode 100644 server.pem
 create mode 100644 src/unlearn/tokenpage.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..b897a87
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,36 @@
+image: python:3.9-buster
+
+before_script:
+  - pip install -r requirements.txt
+  - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
+  ##
+  ## Run ssh-agent (inside the build environment)
+  ##
+  - eval $(ssh-agent -s)
+  ##
+  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
+  ## We're using tr to fix line endings which makes ed25519 keys work
+  ## without extra base64 encoding.
+  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
+  ##
+  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
+
+  ##
+  ## Create the SSH directory and give it the right permissions
+  ##
+  - mkdir -p ~/.ssh
+  - chmod 700 ~/.ssh
+
+pages:
+  stage: deploy
+  script:
+    - pwd
+    - cd src
+    - python -m unlearn.tokenpage
+    - cd ..
+    - ls
+    - pwd
+  artifacts:
+    paths:
+      - public
+
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..110fb16
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,3 @@
+diskcache
+selenium
+auth-code-flow
diff --git a/server.pem b/server.pem
new file mode 100644
index 0000000..2e3ee64
--- /dev/null
+++ b/server.pem
@@ -0,0 +1,51 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDtu+nfL7imC3/q
+SSdomzKlhAdOIMV03zjF/9fZhkls7MCfHwdbAtqvU3SBVG6VqdPT0Y+36daYjaeB
+TNFG80G/3YmLwdp/55UQpjszGQGk+iOO1cf87o611Q/RyrPXgdU8YnE6g/pkNWeZ
+rdUjnTGDtFmgp1RY4cdJf3FHAzX2Y3w5GFLc4fe2J0yX/EklIdB4lyD6iud0HxsR
+EDoPbLUM6LCRZIGcNnK4rR64pDM9ZYeP2ja1tPX7H2E1YcLUFtn96KQO8izllTBY
+lgV6nsfQNp6ucX4UoUFcLw3zoIQu3w/xmwSLGpEJu6dzbMuBqiLdEitNjt4Jku4r
+eozu02qFAgMBAAECggEAAphDNCEnUtrykNlLPuM+Ubd+3KZabi04Y/iAKzkfqmVs
+d41Nb9mkjB02YsqKe5u/p3J+tLP1uob6WP7UVe3vPdkni6QNBYWRRdvZMx8nh1RQ
+fl/WCUzyQCsFrUqhkDDvzuffcvP8y7gMyt9v77DA79fkVR8pzi9Y3AJDOOZVS0Ue
+Ky2yTpNZbXV3CDZ4Qxqyp+a2sLt5GhoQuENOpWzd9gOHusRuNJ9C6ULNMGbgkhqA
+kpSEfHQs4zswgc0hTappk5qPn6LWK5hfNuLEPZKcvgcx04zq/a0jNcFRwdul1fzm
+hpqaL/2ileFfW3wluZgHwcc30HfxzP2vmZFQVIfxbQKBgQD6SmaGS9O66qaX3DHR
+RJHfics8BmuMG0bC1Xu8Qxatm4RA4D0ssQzObB09Gb7mhp8AW+ZhbNBPKPaaA1i5
+Kf2ZeZlMJ2Tbq54Xnny2lY1rB5TxtjoEJK/Okwg8KWXyhm+Y+9jUN85vifDTB9Et
+zuHLxjV5hWIyJPZ1LVMQyQNK1wKBgQDzKC//vAWHHPDBZhWdDQzHNidruZ4BJRUl
+UbxH9uZfnPNC2YmZ4Fq6V0IfYfe6i1FidlgKmqj8McA948Wti8m497TzDZ4Wg4UD
+0larFYvmuv2mGhe5lmC+dRsANkDBMDlsRgW6nXeaR78X79hbkO04VwEXFqNMQdBE
+GhWYa6uGAwKBgQCQyel1Vvgs8QFeaCsJfDlGr1e6aZxdeIn+u7DQv56m34gqX44E
+BIf8Ad8IMZSVltr0QjWLtn7qzC+b+MOimf/ygL2FqGRYD3dtAmny1aDxgXlQOrJl
+IzPwtG3XH7uyCMMWJNrSKVZqf8moyqTfcwZ78zWMDvU3PNq1/npHA4G8EQKBgFsY
+3kq4PXXuQMCkJ0rMfdIQltpEE08ofnCZ26k2df6yRWzxJR0yMauIT2yEfpQz58y0
+u61VXiQF25kUQZYQPgX/P5qjqmuS4H2bCv9TtjM+MRNOyT6teRdBtljw+nemQo0u
++qx8nDd/07b7E5rShB1Mc0scHxfNvGIXR6nwBLXTAoGBAJVELi6VD0M3ipTyphmL
+csq66K0AQVWZF5DjBzq5ard9g1vvzQtR7Yj77K8l2/33iwXlgU4k9PbURK6U0nXu
+yB5/UpW7PMFwySyWi+9ECy5i88rd59A0y44tKg6o3+kkz1EJ9dtHRATIc0YOMqZ4
+Rx4Y1WlMxHQ6cgth2VeEGgbP
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIUEryDQqti++a1sW38AkS4bH1MbaMwDQYJKoZIhvcNAQEL
+BQAwfjELMAkGA1UEBhMCREsxEzARBgNVBAgMCkNvcGVuaGFnZW4xDzANBgNVBAcM
+Bkx5bmdieTENMAsGA1UECgwEQmxhaDEOMAwGA1UECwwFQmxhYWgxDjAMBgNVBAMM
+BXNkbGZhMRowGAYJKoZIhvcNAQkBFgt0dWhlQGR0dS5kazAeFw0yMjEwMTAxMDE0
+MjNaFw0yMzEwMTAxMDE0MjNaMH4xCzAJBgNVBAYTAkRLMRMwEQYDVQQIDApDb3Bl
+bmhhZ2VuMQ8wDQYDVQQHDAZMeW5nYnkxDTALBgNVBAoMBEJsYWgxDjAMBgNVBAsM
+BUJsYWFoMQ4wDAYDVQQDDAVzZGxmYTEaMBgGCSqGSIb3DQEJARYLdHVoZUBkdHUu
+ZGswggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtu+nfL7imC3/qSSdo
+mzKlhAdOIMV03zjF/9fZhkls7MCfHwdbAtqvU3SBVG6VqdPT0Y+36daYjaeBTNFG
+80G/3YmLwdp/55UQpjszGQGk+iOO1cf87o611Q/RyrPXgdU8YnE6g/pkNWeZrdUj
+nTGDtFmgp1RY4cdJf3FHAzX2Y3w5GFLc4fe2J0yX/EklIdB4lyD6iud0HxsREDoP
+bLUM6LCRZIGcNnK4rR64pDM9ZYeP2ja1tPX7H2E1YcLUFtn96KQO8izllTBYlgV6
+nsfQNp6ucX4UoUFcLw3zoIQu3w/xmwSLGpEJu6dzbMuBqiLdEitNjt4Jku4reozu
+02qFAgMBAAGjUzBRMB0GA1UdDgQWBBSQMKELaOGDCQSBwGOdSzmYWcQK2TAfBgNV
+HSMEGDAWgBSQMKELaOGDCQSBwGOdSzmYWcQK2TAPBgNVHRMBAf8EBTADAQH/MA0G
+CSqGSIb3DQEBCwUAA4IBAQDpk/9oa8tz3DxDZ4HVTIP/9xqQLdGNo/h3IR9ndR+I
+2BrO+OCV5q7z6nszlgXxptpiUmcsYo0a6ZIQSXZpQHejrEgdFTpXzFSLJfFeersT
+qQxuhlCKnGzpQgrV0/25SDbdy5Pzh1QjjJONPsxVBgmu07qnzUQg3ifr561gxW+i
+QgKznl3jEItDUaRwdu2zWWaQa95cS1s7AqIpfMXUSn9X9c9p9EXr/3+6ppH3H4RS
+o74PdqkFtZU9zE6hSU0IVYBe/qBaNeKCPZpq+mOLYaW+2S11DgXt6eFnAnJMIAVh
+YUoeMj/GjUYSrSESvoavnWLA66bxjCf6oIwhkNla0DyD
+-----END CERTIFICATE-----
diff --git a/src/unlearn/cache/cache.db b/src/unlearn/cache/cache.db
index 5a465383480a955a4d7182746db396d09b70aaf9..60a956895cd062e8a3c59c7857a054d7bb0d5509 100644
GIT binary patch
delta 386
zcmZvXT}s116os7(LKUPU)-?6O=1D|MC{hpvE$*TJw$ot}?X{Ck+L;uq4~A?ZJ8%UN
zSKu<-f~zp0mJ0fM?%~|;iy|$Gv^2F)Cwa4OE?fAhpy)jT-*F#z;wCl=Qc(p`0h8r;
zgzLxwIUxbC33o{_6G||_H_I_eEW2V1acxUZIVhLNh0n$_;fqk}@gSkLfo_v$`>@i-
zw)WFul#R0{Jh|14Qrt^YTi@$q6S0tU!odTzeH^#nKkeNjY9(J+7cZTCe5$!~U<!m!
z0>ObTP`ijtZOw_A2Ci%WaiWoqYs-rVKDmR;A^(m@p8o|$!xBDQ<(@}_>asp4<MUPg
mAi|kXIq`(!W`-Zv2PgesYcy1X%qa^)5A|}+wHxZbHX7eK;(`7E

delta 386
zcmZvXTS~(~6o#D)LKUPU)?R$Dc@hy5iWCGvi*LQ#%lj})qdj(#Ni&mT^}#S($PQdV
z#TB>=x8N#FsHK9w{^#dE-xozj6d8+!g<A2Ob#vLkM;S%$33wytaYxs&nURVrkP4VA
z=pnA65y%PgflatW{6Hwd1m7&^L2TKjVjoww<dlPQh@5+D90*T@GOv3vwTtLBezp%w
zU2Gda9Y)zWX~L6J-pJ`rys-0oZEPYIa!xq7ptg^7^ZnD_&7wy9b#?L5+Q+AcGXthT
zc*GYR*c>&p*fiFhs9wZX<3CO`%;U=P;(|x+AaO{)qd}Vg1xNiHK3nCkOa1b)-Yekq
oRs0~rz@wbFV&o)-AJ+#b-Ct`oRD#SX3qu!mQqHv-YQNTM-%@{o-T(jq

diff --git a/src/unlearn/learn_config.py b/src/unlearn/learn_config.py
index 72f58b8..35a1960 100644
--- a/src/unlearn/learn_config.py
+++ b/src/unlearn/learn_config.py
@@ -152,7 +152,7 @@ class LearnConfig:
 
             else:
                 if "refresh_token" in cc:
-
+                    import requests
                     url = "https://auth.brightspace.com/core/connect/token"
                     print("Getting refresh token using", refresh_token)
                     refresh_token = cc['refresh_token']
diff --git a/src/unlearn/tokenpage.py b/src/unlearn/tokenpage.py
new file mode 100644
index 0000000..1897a02
--- /dev/null
+++ b/src/unlearn/tokenpage.py
@@ -0,0 +1,9 @@
+import os
+
+if __name__ == "__main__":
+    pages = os.path.dirname(__file__) + "../../pages"
+    if not os.path.isdir(pages):
+        os.mkdir(pages)
+    with open(pages + "/index.html", 'w') as f:
+        f.write("hello world!")
+
-- 
GitLab