From a96a0cfce4080b7dbe9b7d5a966cb8a90df1d5b2 Mon Sep 17 00:00:00 2001
From: pa <pa@crans.org>
Date: Sat, 2 May 2020 15:43:26 +0200
Subject: [PATCH 1/5] [Framadate] log file creation

---
 roles/framadate/tasks/main.yml | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/roles/framadate/tasks/main.yml b/roles/framadate/tasks/main.yml
index 02c698e7..1452702c 100644
--- a/roles/framadate/tasks/main.yml
+++ b/roles/framadate/tasks/main.yml
@@ -37,9 +37,12 @@
   retries: 3
   until: composer_result is succeeded
 
-# cd framadate
-# sudo -u www-data touch admin/stdout.log
-# sudo chmod 600 admin/stdout.log
+- name:
+  file:
+    path: "{{ framadate.path }}/admin/stdout.log"
+    owner: www-data
+    state: touch
+    mode: 0600
 
 - name: Indicate role in motd
   template:

From b51d53fe35a329dea6d8e87f0cf225f070f7b0a6 Mon Sep 17 00:00:00 2001
From: pa <pa@crans.org>
Date: Sat, 2 May 2020 15:56:27 +0200
Subject: [PATCH 2/5] [Framadate] Specify commit hash of develop branch

---
 services_web.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/services_web.yml b/services_web.yml
index 17515e3f..283f4482 100755
--- a/services_web.yml
+++ b/services_web.yml
@@ -9,7 +9,7 @@
   vars:
     framadate:
       repo: https://framagit.org/framasoft/framadate/framadate.git
-      version: 1.1.10
+      version: "77bf2aaa0c344fd25535e2d0543d9a76bf35b5fd"
       path: /var/www/framadate
   roles:
     - framadate

From bc932b06171d1e34d63bfe0720d85a3e1c5e4523 Mon Sep 17 00:00:00 2001
From: pa <pa@crans.org>
Date: Sat, 2 May 2020 16:47:28 +0200
Subject: [PATCH 3/5] [Framdate] nginx configuration

---
 roles/framadate/tasks/main.yml | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/roles/framadate/tasks/main.yml b/roles/framadate/tasks/main.yml
index 1452702c..80de2318 100644
--- a/roles/framadate/tasks/main.yml
+++ b/roles/framadate/tasks/main.yml
@@ -4,8 +4,8 @@
   apt:
     update_cache: true
     name:
-      - apache2
-      - libapache2-mod-php
+      - nginx
+      - php-fpm
       - php-intl
       - php-mbstring
       - php-pgsql
@@ -37,15 +37,27 @@
   retries: 3
   until: composer_result is succeeded
 
-- name:
+- name: Create log file
   file:
     path: "{{ framadate.path }}/admin/stdout.log"
     owner: www-data
     state: touch
     mode: 0600
 
+- name: Configure nginx site
+  template:
+    src: nginx-site.j2
+    dest: /etc/nginx/sites-available/framadate.conf
+
+- name: Enable nginx site
+  file:
+    src: /etc/nginx/sites-available/framadate.conf
+    dest: /etc/nginx/stes-enabled/framadate.conf
+    state: link
+
 - name: Indicate role in motd
   template:
     src: update-motd.d/05-service.j2
     dest: /etc/update-motd.d/05-framadate
     mode: 0755
+

From 86d17dedfaca8184f435688c3fe6b3a143a421de Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sat, 2 May 2020 16:54:42 +0200
Subject: [PATCH 4/5] [framadate] NGINX config

---
 roles/framadate/tasks/main.yml          |  6 +--
 roles/framadate/templates/nginx-site.j2 | 60 +++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 3 deletions(-)
 create mode 100644 roles/framadate/templates/nginx-site.j2

diff --git a/roles/framadate/tasks/main.yml b/roles/framadate/tasks/main.yml
index 80de2318..507b86e2 100644
--- a/roles/framadate/tasks/main.yml
+++ b/roles/framadate/tasks/main.yml
@@ -47,12 +47,12 @@
 - name: Configure nginx site
   template:
     src: nginx-site.j2
-    dest: /etc/nginx/sites-available/framadate.conf
+    dest: /etc/nginx/sites-available/framadate
 
 - name: Enable nginx site
   file:
-    src: /etc/nginx/sites-available/framadate.conf
-    dest: /etc/nginx/stes-enabled/framadate.conf
+    src: /etc/nginx/sites-available/framadate
+    dest: /etc/nginx/sites-enabled/framadate
     state: link
 
 - name: Indicate role in motd
diff --git a/roles/framadate/templates/nginx-site.j2 b/roles/framadate/templates/nginx-site.j2
new file mode 100644
index 00000000..ef963c3e
--- /dev/null
+++ b/roles/framadate/templates/nginx-site.j2
@@ -0,0 +1,60 @@
+{{ ansible_header | comment }}
+
+server {
+    listen 80;
+    listen [::]:80;
+
+    server_name framadate.crans.org;
+
+    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self'";
+    add_header Referrer-Policy "strict-origin";
+
+    root {{ framadate.path }};
+
+    index index.php;
+
+    location ~^/(\.git)/{
+        deny all;
+    }
+
+    location ~ /\. {
+        deny all;
+    }
+
+    location ~ ^/composer\.json.*$|^/composer\.lock.*$|^/php\.ini.*$|^/.*\.sh {
+        deny all;
+    }
+
+    location /admin/ {
+        auth_basic "Restricted access";
+        auth_basic_user_file /etc/nginx/.htpasswd;
+
+        location ~ \.php$ {
+            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+            include /etc/nginx/fastcgi_params;
+            fastcgi_pass unix:/run/php/php7.3-fpm.sock;
+        }
+        try_files $uri $uri/ =401; 
+    }
+
+    location / {
+        rewrite "^/admin$" "/admin/" permanent;
+
+        # Clean URL
+        rewrite "^/([a-zA-Z0-9-]+)$" "/studs.php?poll=$1" last;
+        rewrite "^/([a-zA-Z0-9-]+)/action/([a-zA-Z_-]+)/(.+)$" "/studs.php?poll=$1&$2=$3" last;
+        rewrite "^/([a-zA-Z0-9-]+)/vote/([a-zA-Z0-9]{16})$" "/studs.php?poll=$1&vote=$2" last;
+        rewrite "^/([a-zA-Z0-9]{24})/admin$" "/adminstuds.php?poll=$1" last;
+        rewrite "^/([a-zA-Z0-9]{24})/admin/vote/([a-zA-Z0-9]{16})$" "/adminstuds.php?poll=$1&vote=$2" last;
+        rewrite "^/([a-zA-Z0-9]{24})/admin/action/([a-zA-Z_-]+)(/([A-Za-z0-9]+))?$" "/adminstuds.php?poll=$1&$2=$4" last;
+        try_files $uri /index.php; 
+    }
+
+    location ~ \.php$ {
+        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+        fastcgi_index index.php;
+        include /etc/nginx/fastcgi_params;
+        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
+    }
+}
+

From c8504973a86fa147f21c7e0a1e2a4c7a3d1afcd3 Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sat, 2 May 2020 18:00:09 +0200
Subject: [PATCH 5/5] Working FramaDate

---
 network.yml                    | 1 +
 roles/framadate/tasks/main.yml | 5 +++++
 services_web.yml               | 2 ++
 3 files changed, 8 insertions(+)

diff --git a/network.yml b/network.yml
index a6ec7a1c..16865b78 100755
--- a/network.yml
+++ b/network.yml
@@ -100,6 +100,7 @@
         - {from: autoconfig.crans.org, to: 10.231.136.46}
         - {from: grafana.crans.org, to: 10.231.136.102}
         - {from: webirc.crans.org, to: "10.231.136.1:9000"}
+        - {from: framadate.crans.org, to: 185.230.79.194}
 
         # Zamok
         - {from: install-party.crans.org, to: 10.231.136.1}
diff --git a/roles/framadate/tasks/main.yml b/roles/framadate/tasks/main.yml
index 507b86e2..4c39e3d5 100644
--- a/roles/framadate/tasks/main.yml
+++ b/roles/framadate/tasks/main.yml
@@ -44,6 +44,11 @@
     state: touch
     mode: 0600
 
+- name: Configure admin password
+  copy:
+    content: "{{ framadate.admin_username }}:{{ framadate.admin_password_hash }}\n"
+    dest: /etc/nginx/.htpasswd
+
 - name: Configure nginx site
   template:
     src: nginx-site.j2
diff --git a/services_web.yml b/services_web.yml
index 283f4482..4c6f7d78 100755
--- a/services_web.yml
+++ b/services_web.yml
@@ -11,6 +11,8 @@
       repo: https://framagit.org/framasoft/framadate/framadate.git
       version: "77bf2aaa0c344fd25535e2d0543d9a76bf35b5fd"
       path: /var/www/framadate
+      admin_username: framadate
+      admin_password_hash: "{{ vault_framadate_password_hash }}"
   roles:
     - framadate