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
|
# acit
acit is Another Custom Issue Tracker. It could've been called EDIT (Email-Driven Issue Tracker), but acit was chosen as the eventual name.
As the alternative name (EDIT) suggests, acit is an email-driven issue tracker. This means the primary way to interact with issues is email. It uses plus-addresses (eg `bugs+project1@example.com`) for sorting between projects, meaning it only needs 1 account on the mail server to track multiple projects.
# projectlist
This fetches your projects using a projectlist. This list is refreshed every few requests, and every time an email is received. The file should just be a newline-separated file of projects. `.git` is stripped off the end of each name if present. This allows for quick integration with gitolite's `project.list`.
Note that if a project disappears from your projectlist file, acit will simply stop accepting emails for that project. It'll also stop displaying the project on the webui's projects lists. No data will be deleted though; readding the project to the file will simply start showing the project again.
# configuration
Acit requires all email is stored in a single imap account. Aliases are fine (I use them myself).
To configure acit, use environment variables. Here's an overview of them, including example values:
```sh
#
# IMAP login
# ----------
# set this to the IMAP login values of your email server
ACIT_IMAP_USER="bugs@example.com"
ACIT_IMAP_PASS="SuperSecurePassword"
ACIT_IMAP_SERVER="mail.example.com"
ACIT_IMAP_PORT=993
# note we only support IMAP with Implicit TLS.
# usage of IMAP using STARTTLS and unencrypted imap aren't implemented.
ACIT_IMAP_POOL_SIZE=4 # the amount of IMAP connections to make. Note at least 2 is recommended.
# a pool size of 1 can lead to it taking ridiculously long to process new email or generate pages.
#
# SMTP login
# ----------
# set this to the SMTP login values of your email server
ACIT_SMTP_USER="bugs@example.com"
ACIT_SMTP_PASS="SuperSecurePassword"
ACIT_SMTP_SERVER="mail.example.com"
ACIT_SMTP_PORT=0 # SMTP port to connect to. If set to 0, uses port 465
# note only SMTP using Implicit TLS is supported.
# STARTTLS and unencrypted SMTP are, just like with IMAP, not implemented.
#
# Database
# --------
MYSQL_USER=acit # username for the mariadb server
MYSQL_PASSWORD=AnotherSecurePassword # password for said server
MYSQL_DATABASE=acit # the database to use
MYSQL_HOST=localhost # the hostname/ip of the server. to define a port, use host:port syntax.
#
# Email matching/formatting
# -------------------------
ACIT_MAIL_NAME="bugs" # the user part of user@example.com
ACIT_MAIL_DOMAIN="example.com" # the domain of the emailaddress
ACIT_MAIL_USES_ALIASES= # if set to any value, enables the usage of aliases.
:<<-DOC
Normally, acit looks for an emailaddress that matches email addresses in this style:
bugs+projectname#15@example.com
where 'bugs' is your value of ACIT_MAIL_NAME, and 'example.com' is
your value of ACIT_MAIL_DOMAIN. 'projectname' can be any set of characters that
isn't one of: @+#
it then strips the value ACIT_MAIL_NAME and a plus (+) from the start and the value
of ACIT_MAIL_DOMAIN and an at (@) from the back, and splits it on the last hash (#).
anything before the hashtag is the project name, anything after is the issue number.
Note that if ACIT_MAIL_USES_ALIASES is set, it simply skips stripping the value of
ACIT_MAIL_NAME and plus from the start.
if ACIT_MAIL_NAME is unset, it uses everything before the at (@) in ACIT_IMAP_USER.
if ACIT_MAIL_DOMAIN is unset, it uses everything behind the at (@) in ACIT_IMAP_USER.
DOC
#
# Settings
# --------
ACIT_HOME_REDIRECT=about:blank # where to redirect to when someone queries the webroot
# the following option should be the full path to an executable.
# said executable should return a table of trackers and urls.
# see #acit-list-trackers below in this README.md # TODO: write mentioned section
ACIT_LIST_TRACKERS=/usr/lib/acit-list-trackers
```
# crawling
Acit makes use of the fact that crawlers will probably often crawl the index page for running certain tasks once in a while. If you are planning on blocking crawlers or want to ensure these tasks run regularly regardless of trackers, curl the webroot (`https://bugs.example.com/` if `bugs.example.com` is your domain) once in a while (every 5 minutes would be nice). Note some of these tasks will also happen when needing relevant resources.
Currently these tasks include:
- Updating the projectlist
|