+5
-1
beep.service
etc/beep.service
+5
-1
beep.service
etc/beep.service
···
1
1
[Unit]
2
2
Description=beep server
3
-
After=network.target
3
+
Requires=beep-db.service
4
+
After=beep-db.service
4
5
5
6
[Service]
6
7
ExecStart=/usr/local/bin/v run . config.real.maple
7
8
Restart=always
8
9
User=beep
9
10
WorkingDirectory=/home/beep/beep
11
+
StandardOutput=journal
12
+
StandardError=journal
13
+
LimitNOFILE=65536
10
14
11
15
[Install]
12
16
WantedBy=multi-user.target
+2
doc/resources.md
+2
doc/resources.md
···
21
21
- https://stackoverflow.com/questions/11144394/order-sql-by-strongest-like
22
22
- helped me develop the initial search system, which is subject to be
23
23
overhauled, but for now, this helped a lot.
24
+
- https://stackoverflow.com/questions/1237725/copying-postgresql-database-to-another-server
25
+
- database migrations
24
26
25
27
## sql security
26
28
+14
etc/beep-db.service
+14
etc/beep-db.service
···
1
+
[Unit]
2
+
Description=beep database
3
+
Requires=docker.service
4
+
After=docker.service
5
+
6
+
[Service]
7
+
Type=oneshot
8
+
ExecStart=/usr/bin/docker start beep-database
9
+
ExecStop=/usr/bin/docker stop beep-database
10
+
RemainAfterExit=yes
11
+
WorkingDirectory=/home/beep/beep
12
+
13
+
[Install]
14
+
WantedBy=multi-user.target
+6
-2
src/static/js/render_body.js
+6
-2
src/static/js/render_body.js
···
61
61
// give the body a loading """animation""" while we let the fetches cook
62
62
element.innerText = 'loading...'
63
63
64
-
const matches = body.matchAll(/[@#*]\([a-zA-Z0-9_.-]*\)/g)
64
+
const matches = body.matchAll(/\\?[@#*]\([a-zA-Z0-9_.-]*\)/g)
65
65
const cache = {}
66
66
for (const match of matches) {
67
+
// escaped
68
+
if (match[0][0] == '\\') {
69
+
html = html.replace(match[0], match[0].replace('\\', ''))
70
+
}
67
71
// mention
68
-
if (match[0][0] == '@') {
72
+
else if (match[0][0] == '@') {
69
73
if (cache.hasOwnProperty(match[0])) {
70
74
html = html.replace(match[0], cache[match[0]])
71
75
continue
+8
-2
src/webapp/app.v
+8
-2
src/webapp/app.v
···
126
126
eprintln('failed to compile regex for process_post_mentions (err: ${err})')
127
127
return
128
128
}
129
-
matches := re.find_all_str(post.body)
130
-
for mat in matches {
129
+
matches := re.find_all(post.body)
130
+
for i := 0 ; i < matches.len ; i += 2 {
131
+
mat := post.body[matches[i]..matches[i+1]]
132
+
// skip escaped mentions
133
+
if matches[i] != 0 && post.body[matches[i] - 1] == `\\` {
134
+
continue
135
+
}
136
+
131
137
println('found mentioned user: ${mat}')
132
138
username := mat#[2..-1]
133
139
user := app.get_user_by_name(username) or {