summaryrefslogtreecommitdiffstats
path: root/roles/upload/tasks/main.yml
blob: b63e3f18a01b218a8b79cf74c8b28d1a54559eab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
- name: Set up packages as root
  block:
  - name: Add GPG
    apt:
      update_cache: yes
      name:
        - gnupg
        - sudo
      state: present
  - name: Import the NodeSource GPG key into apt
    apt_key:
      url: https://deb.nodesource.com/gpgkey/nodesource.gpg.key
      state: present
  - name: Add nodesource repository
    ansible.builtin.apt_repository:
      repo: deb https://deb.nodesource.com/node_20.x nodistro main
      update_cache: yes
  - name: Install packages
    apt:
      update_cache: yes
      name:
        - nodejs
      state: present
- name: Add to dehydrated.conf
  become: true
  lineinfile:
    line: "{{ upload_server_name }}"
    path: /etc/dehydrated/domains.txt
- name: Create or renew cert
  command: "dehydrated --cron"
  become: true
- name: Create upload user
  become: true
  user:
    name: "{{ upload_user }}"
    shell: /bin/bash
    state: present
- name: Ensure upload directory exists
  file:
    path: "{{ upload_dir }}"
    owner: "{{ upload_user }}"
    state: directory
- name: Install precompiled version  
  unarchive:
    src: https://github.com/psi-4ward/psitransfer/releases/download/v2.1.2/psitransfer-v2.1.2.tar.gz
    dest: "/home/{{ upload_user }}"
    remote_src: yes
- name: Create link
  file:
    src: "/home/{{ upload_user }}/psitransfer-v2.1.2"
    dest: "/home/{{ upload_user }}/psitransfer"
    state: link
- name: Upload production config
  become: true
  template:
    src: config.production.js
    dest: "/home/{{ upload_user }}/psitransfer/config.production.js"
- name: Copy the SSL key
  become: true
  copy:
    remote_src: yes
    src: "{{ upload_ssl_key }}"
    dest: "/home/{{ upload_user }}/privkey.pem"
- name: Copy the SSL cert
  become: true
  copy:
    remote_src: yes
    src: "{{ upload_ssl_cert }}"
    dest: "/home/{{ upload_user }}/fullchain.pem"
    owner: "{{ upload_user }}"
    group: "{{ upload_group }}"
- name: Install dependencies
  npm:
    path: "/home/{{ upload_user }}/psitransfer"
    production: yes
    ci: yes
- name: Add LibreJS tag start
  lineinfile:
    path: /home/{{ upload_user }}/psitransfer/public/app/{{ item.path }}
    line: // @license {{ item.license }}
    insertbefore: BOF
  loop:
    - path: common.js
      license: magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
    - path: upload.js
      license: magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
    - path: admin.js
      license: magnet:?xt=urn:btih:87f119ba0b429ba17a44b4bffcab33165ebdacc0&dn=freebsd.txt BSD-2-Clause
    - path: download.js
      license: magnet:?xt=urn:btih:87f119ba0b429ba17a44b4bffcab33165ebdacc0&dn=freebsd.txt BSD-2-Clause
- name: Add license tag end
  lineinfile:
    path: /home/{{ upload_user }}/psitransfer/public/app/{{ item.path }}
    line: // @license-end
  loop:
    - path: common.js
    - path: upload.js
    - path: admin.js
    - path: download.js
- name: Update head template
  template:
    src: head.pug
    dest: /home/{{ upload_user }}/psitransfer/public/pug/partials/head.pug
- name: Change ownership
  file:
    path: "/home/{{ upload_user }}"
    owner: "{{ upload_user }}"
    group: "{{ upload_group }}"
    recurse: true
- name: Create backup dir to use when the conference is done
  file:
    path: "{{ upload_done_dir }}"
    owner: "{{ upload_user }}"
    group: "{{ upload_group }}"
    state: directory
- name: Create backup file to use when the conference is done
  template:
    src: index.html
    owner: "{{ upload_user }}"
    group: "{{ upload_group }}"
    mode: 0755
    dest: "{{ upload_done_dir }}/index.html"
- name: Install systemd configuration
  tags: system
  become: true
  template:
    src: upload.service
    dest: /etc/systemd/system/upload.service
    owner: root
    group: root
    mode: 0755
  when: not use_initd
- name: Create main configuration if needed
  template:
    src: nginx-site-config
    dest: /etc/nginx/sites-available/{{ upload_server_name }}
- name: Make sure main configuration is enabled
  file:
    src: /etc/nginx/sites-available/{{ upload_server_name }}
    dest: /etc/nginx/sites-enabled/{{ upload_server_name }}
    owner: "{{ emacsconf_user }}"
    group: "{{ emacsconf_group }}"
    force: no
    state: link
- name: Reload configuration
  become: true
  service:
    name: nginx
    state: reloaded
- name: Restart Upload
  become: true
  when: upload_enabled
  service:
    name: upload
    state: restarted
    enabled: true
- name: Stop upload
  become: true
  when: not upload_enabled
  service:
    name: upload
    state: stopped
    enabled: false