aboutsummaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
Diffstat (limited to 'roles')
-rw-r--r--roles/host/tasks/main.yml4
-rw-r--r--roles/jails/07_aggro/defaults/main.yml13
-rw-r--r--roles/jails/07_aggro/handlers/main.yml4
-rw-r--r--roles/jails/07_aggro/tasks/main.yml29
-rw-r--r--roles/jails/07_aggro/templates/Aggrofile.j2315
-rw-r--r--roles/jails/07_aggro/templates/aggro.env.j23
6 files changed, 368 insertions, 0 deletions
diff --git a/roles/host/tasks/main.yml b/roles/host/tasks/main.yml
index 3608499..8e559ec 100644
--- a/roles/host/tasks/main.yml
+++ b/roles/host/tasks/main.yml
@@ -144,6 +144,10 @@
name: "zroot/jails/volumes/komga_data",
mountpoint: "/usr/local/jails/containers/komga/root/.komga",
}
+ - {
+ name: "zroot/jails/volumes/aggro_data",
+ mountpoint: "/usr/local/jails/containers/aggro/var/db/aggro",
+ }
- { name: "zroot/storage", mountpoint: "/usr/local/jails/volumes/storage" }
loop_control:
label: "{{ item.name }}"
diff --git a/roles/jails/07_aggro/defaults/main.yml b/roles/jails/07_aggro/defaults/main.yml
index 5416267..e3a2b0e 100644
--- a/roles/jails/07_aggro/defaults/main.yml
+++ b/roles/jails/07_aggro/defaults/main.yml
@@ -1 +1,14 @@
userland: "15.0-RELEASE"
+
+pkg:
+ - python311
+ - py311-pip
+ - py311-setuptools
+ - py311-build
+ - py311-installer
+ - py311-wheel
+ - libxml2
+ - libxslt
+
+services:
+ - aggro
diff --git a/roles/jails/07_aggro/handlers/main.yml b/roles/jails/07_aggro/handlers/main.yml
new file mode 100644
index 0000000..2a2b757
--- /dev/null
+++ b/roles/jails/07_aggro/handlers/main.yml
@@ -0,0 +1,4 @@
+- name: Restart aggro
+ service:
+ name: aggro
+ state: restarted
diff --git a/roles/jails/07_aggro/tasks/main.yml b/roles/jails/07_aggro/tasks/main.yml
index 2abdaff..175fd80 100644
--- a/roles/jails/07_aggro/tasks/main.yml
+++ b/roles/jails/07_aggro/tasks/main.yml
@@ -1,2 +1,31 @@
- import_role:
name: jail
+ tasks_from: jail_setup
+
+- name: Install aggro from port
+ shell: cd /usr/ports/www/aggro && make install WRKDIRPREFIX=/tmp/ports DISTDIR=/tmp/distfiles
+ register: _aggro_install
+ failed_when: "_aggro_install.rc != 0 and 'already installed' not in _aggro_install.stdout"
+ changed_when: "'already installed' not in _aggro_install.stdout"
+
+- name: Deploy aggro env file
+ template:
+ src: "{{ jail_role_dir }}/templates/aggro.env.j2"
+ dest: /usr/local/etc/aggro.env
+ owner: root
+ group: wheel
+ mode: "0600"
+ notify: Restart aggro
+
+- name: Deploy Aggrofile
+ template:
+ src: "{{ jail_role_dir }}/templates/Aggrofile.j2"
+ dest: /usr/local/etc/Aggrofile
+ owner: root
+ group: wheel
+ mode: "0644"
+ notify: Restart aggro
+
+- import_role:
+ name: jail
+ tasks_from: jail_launch
diff --git a/roles/jails/07_aggro/templates/Aggrofile.j2 b/roles/jails/07_aggro/templates/Aggrofile.j2
new file mode 100644
index 0000000..76ee259
--- /dev/null
+++ b/roles/jails/07_aggro/templates/Aggrofile.j2
@@ -0,0 +1,315 @@
+{
+ "db_path": "/var/db/aggro/db.json",
+ "server": {
+ "host": "0.0.0.0",
+ "port": 80
+ },
+ "plugins": {
+ "aaniwalli_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://www.ääniwalli.fi/",
+ "selector_post": "page.select('.event-wrapper')",
+ "selector_title": "post.select('.event-title')",
+ "selector_date": "post.select('.pill')",
+ "selector_link": "post.select('a.event')",
+ "selector_description": "detail_page.select('.right-pane')",
+ "selector_image": "post.select('img')"
+ },
+ "aaniwalli_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "aaniwalli",
+ "feed_title": "Ääniwalli",
+ "feed_description": "Ääniwalli events",
+ "feed_link": "https://www.ääniwalli.fi/"
+ },
+ "tavastia_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://tavastiaklubi.fi/#days",
+ "selector_post": "page.select('table.event-table tbody tr')",
+ "selector_title": "post.select('.title')",
+ "selector_date": "post.select('.date')",
+ "selector_link": "post.select('a.item')",
+ "selector_description": "detail_page.select('.event')",
+ "selector_image": "detail_page.select('img.img')",
+ "show_image_in_description": false
+ },
+ "tavastia_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "tavastia",
+ "feed_title": "Tavastia",
+ "feed_description": "Tavastia events",
+ "feed_link": "https://tavastiaklubi.fi/"
+ },
+ "semifinal_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://tavastiaklubi.fi/semifinal/#days",
+ "selector_post": "page.select('.table.event-table tbody tr')",
+ "selector_title": "post.select('.title')",
+ "selector_date": "post.select('.date')",
+ "selector_link": "post.select('a.item')",
+ "selector_description": "detail_page.select('.event')",
+ "selector_image": "detail_page.select('img.img')",
+ "show_image_in_description": false
+ },
+ "semifinal_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "semifinal",
+ "feed_title": "Semifinal",
+ "feed_description": "Semifinal events",
+ "feed_link": "https://tavastiaklubi.fi/semifinal"
+ },
+ "kaiku_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://clubkaiku.fi/",
+ "selector_post": "page.select('.events article')",
+ "selector_title": "post.select('.title')",
+ "selector_date": "post.select('.date')",
+ "selector_link": "post.select('p .icon-ticket + a')",
+ "selector_description": "post.select('.card')",
+ "crawl_detail_page": false
+ },
+ "kaiku_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "kaiku",
+ "feed_title": "Kaiku",
+ "feed_description": "Club Kaiku events",
+ "feed_link": "https://clubkaiku.fi"
+ },
+ "postbar_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://postbar.fi",
+ "selector_post": "page.select('.simcal-event-details')",
+ "selector_title": "post.select('.simcal-event-title')",
+ "selector_date": "post.select('.simcal-event-start')",
+ "selector_description": "[post]"
+ },
+ "postbar_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "postbar",
+ "feed_title": "Post Bar",
+ "feed_description": "Post Bar events",
+ "feed_link": "https://postbar.fi"
+ },
+ "barloose_scraper": {
+ "plugin": "JsonApiSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://barloose.com/wp-json/tribe/events/v1/events",
+ "selector_post": "data['events']",
+ "selector_title": "post['title']",
+ "selector_link": "post['url']",
+ "selector_date": "post['start_date']",
+ "selector_description": "post['description']",
+ "selector_image": "post['image']['url']",
+ "show_image_in_description": true
+ },
+ "barloose_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "barloose",
+ "feed_title": "Bar Loose",
+ "feed_description": "Bar Loose events",
+ "feed_link": "https://barloose.com"
+ },
+ "lepakkomies_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://lepis.fi/tapahtumat",
+ "selector_post": "page.select('.tapahtuma-inner')",
+ "selector_title": "post.select('h1')",
+ "selector_link": "post.select('h1 a')",
+ "selector_image": "post.select('a.img-link img')",
+ "selector_date": "post.select('.date-info')",
+ "selector_description": "detail_page.select('.entry-content')",
+ "show_image_in_description": true
+ },
+ "lepakkomies_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "lepakkomies",
+ "feed_title": "Lepakkomies",
+ "feed_description": "Lepakkomies events",
+ "feed_link": "https://lepis.fi"
+ },
+ "glivelab_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://glivelab.fi/?show_all=1#events",
+ "selector_post": "page.select('.listing .item > a')",
+ "selector_title": "post.select('h2')",
+ "selector_link": "[post]",
+ "selector_image": "post.select('.img')",
+ "selector_date": "post.select('.date')",
+ "selector_description": "detail_page.select('.info')",
+ "show_image_in_description": true
+ },
+ "glivelab_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "glivelab",
+ "feed_title": "G Livelab",
+ "feed_description": "G Livelab events",
+ "feed_link": "https://glivelab.fi"
+ },
+ "korjaamo_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://korjaamo.fi/tapahtumat/",
+ "selector_post": "page.select('.gt-event-style-1')",
+ "selector_title": "post.select('.gt-title')",
+ "selector_link": "post.select('a')",
+ "selector_image": "detail_page.select('meta[property=\"og:image\"]')",
+ "selector_date": "post.select('.gt-date span')",
+ "selector_description": "detail_page.select('.gt-page-content > .gt-content')",
+ "show_image_in_description": true
+ },
+ "korjaamo_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "korjaamo",
+ "feed_title": "Korjaamo",
+ "feed_description": "Korjaamo events",
+ "feed_link": "https://korjaamo.fi/tapahtumat/"
+ },
+ "kulttuuritalo_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://kulttuuritalo.fi/tapahtumat/",
+ "selector_post": "page.select('.pp-content-post')",
+ "selector_title": "post.select('.pp-content-grid-post-title')",
+ "selector_link": "post.select('a')",
+ "selector_image": "detail_page.select('.fl-photo-content noscript img')",
+ "selector_date": "detail_page.select('.fl-col-content .date')",
+ "selector_description": "detail_page.select('.fl-module-fl-post-content')",
+ "show_image_in_description": true
+ },
+ "kulttuuritalo_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "kulttuuritalo",
+ "feed_title": "Kulttuuritalo",
+ "feed_description": "Kulttuuritalo events",
+ "feed_link": "https://kulttuuritalo.fi/tapahtumat/"
+ },
+ "ontherocks_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://www.rocks.fi/tapahtumat/",
+ "selector_post": "page.select('article.tapahtuma')",
+ "selector_title": "post.select('h1 a')",
+ "selector_link": "post.select('h1 a')",
+ "selector_image": "detail_page.select('.img-link img')",
+ "selector_date": "detail_page.select('.date-info')",
+ "selector_description": "detail_page.select('.entry-content')",
+ "show_image_in_description": true
+ },
+ "ontherocks_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "ontherocks",
+ "feed_title": "On The Rocks",
+ "feed_description": "On The Rocks events",
+ "feed_link": "https://www.rocks.fi/tapahtumat/"
+ },
+ "metallikeikat_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://metallikeikat.fi/",
+ "selector_post": "page.select('#results > a')",
+ "selector_title": "post.select('h2')",
+ "selector_link": "[post]",
+ "selector_date": "post.select('.arkisto-grid-date')",
+ "selector_description": "[post]"
+ },
+ "metallikeikat_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "metallikeikat.fi",
+ "feed_title": "Metallikeikat.fi",
+ "feed_description": "Metallikeikat.fi events",
+ "feed_link": "https://metallikeikat.fi/"
+ },
+ "skenesali_scraper": {
+ "plugin": "ScraperSourcePlugin",
+ "schedule_expr": "schedule.every(24).hours",
+ "url": "https://allevents.in/org/skenesali-myyr%C3%A4ncolo/22853164#",
+ "selector_post": "page.select('#upcoming_event_php li')",
+ "selector_title": "post.select('h3')",
+ "selector_link": "post.select('a')",
+ "selector_date": "post.select('.date')",
+ "selector_description": "detail_page.select('.event-description-html')",
+ "show_image_in_description": true
+ },
+ "skenesali_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "skenesali",
+ "feed_title": "Skenesali",
+ "feed_description": "Skenesali (Vantaa) events",
+ "feed_link": "https://allevents.in/org/skenesali-myyr%C3%A4ncolo/22853164#"
+ },
+ "caisa_scraper": {
+ "plugin": "JsonApiSourcePlugin",
+ "schedule_expr": "schedule.every(6).hours",
+ "url": "https://www.caisa.fi/services/Resurssivaraus/EventCalendarService.svc/GetEvents",
+ "method": "post",
+ "body": { "Language": "fi" },
+ "headers": { "Content-Type": "application/json; charset=utf-8" },
+ "selector_post": "json.loads(data['EventData'])",
+ "selector_title": "post['title']",
+ "selector_link": "post['ticketLink']",
+ "selector_date": "post['timeSpanToShow']",
+ "selector_description": "post['description']",
+ "selector_image": "f\"https://www.caisa.fi/instancedata/prime_product_resurssivaraus/kulke/Embeds/EventPic_{post['masterID']}.jpg\"",
+ "show_image_in_description": true
+ },
+ "caisa_feed": {
+ "plugin": "FeedSinkPlugin",
+ "feed_id": "caisa",
+ "feed_title": "Caisa",
+ "feed_description": "Caisa events",
+ "feed_link": "https://www.caisa.fi/fi/tapahtumat/"
+ }
+ },
+ "graph": {
+ "aaniwalli_scraper": [
+ "aaniwalli_feed"
+ ],
+ "tavastia_scraper": [
+ "tavastia_feed"
+ ],
+ "semifinal_scraper": [
+ "semifinal_feed"
+ ],
+ "kaiku_scraper": [
+ "kaiku_feed"
+ ],
+ "postbar_scraper": [
+ "postbar_feed"
+ ],
+ "barloose_scraper": [
+ "barloose_feed"
+ ],
+ "lepakkomies_scraper": [
+ "lepakkomies_feed"
+ ],
+ "glivelab_scraper": [
+ "glivelab_feed"
+ ],
+ "korjaamo_scraper": [
+ "korjaamo_feed"
+ ],
+ "kulttuuritalo_scraper": [
+ "kulttuuritalo_feed"
+ ],
+ "ontherocks_scraper": [
+ "ontherocks_feed"
+ ],
+ "metallikeikat_scraper": [
+ "metallikeikat_feed"
+ ],
+ "skenesali_scraper": [
+ "skenesali_feed"
+ ],
+ "caisa_scraper": [
+ "caisa_feed"
+ ]
+ }
+}
+
diff --git a/roles/jails/07_aggro/templates/aggro.env.j2 b/roles/jails/07_aggro/templates/aggro.env.j2
new file mode 100644
index 0000000..a5c0daf
--- /dev/null
+++ b/roles/jails/07_aggro/templates/aggro.env.j2
@@ -0,0 +1,3 @@
+AGGRO_BASE_URL=https://aggro.jan.systems
+AGGRO_FB_LOGIN_EMAIL="{{ aggro.fb_login_email }}"
+AGGRO_FB_LOGIN_PASSWORD="{{ aggro.fb_login_password }}"