Skip to content

Commit fb39b2b

Browse files
committed
Add metasearch
1 parent 49e1f84 commit fb39b2b

5 files changed

Lines changed: 127 additions & 5 deletions

File tree

_do.cr

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ OPUS_BITRATE_KBPS = 256
5454
BANDWIDTH_MB_PER_SEC = 20
5555
IGNORE_HOSTS = ["personal.tracker.com", "tracker.novage.com.ua", "www.googletagmanager.com"]
5656

57-
CERTBOT_DOMAINS = ["media.codonaft.com", "nostr.codonaft.com", "test.codonaft.com"]
57+
CERTBOT_DOMAINS = ["media", "nostr", "metasearch", "test"].map { |i| "#{i}.codonaft.com" }
5858

5959
MAIN_SITE_CONFIG = Path["_config.yml"]
6060

@@ -243,6 +243,13 @@ def build
243243
dependencies: ["g++", "openssl-dev", "openssl-libs-static"],
244244
)
245245

246+
build_rust_app(
247+
MEDIA_HOST,
248+
crate: "metasearch",
249+
branch: "large-images",
250+
git: URI.parse("https://github.com/alopatindev/metasearch2"),
251+
)
252+
246253
generate_certbot_script(MEDIA_HOST)
247254
end
248255

@@ -262,7 +269,7 @@ def start
262269
end
263270
step("start")
264271
start_openrc(MIRROR_HOST, services: ["i2pd", "local", "nginx", "tor"])
265-
start_openrc(MEDIA_HOST, services: ["aquatic_ws", "broadcastr", "rnostr", "i2pd", "local", "nginx", "tor"])
272+
start_openrc(MEDIA_HOST, services: ["aquatic_ws", "broadcastr", "metasearch", "rnostr", "i2pd", "local", "nginx", "tor"])
266273
end
267274

268275
def encode_media(input : String, config : YAML::Any, language : String)
@@ -671,6 +678,8 @@ end
671678
def generate_certbot_script(host)
672679
domains = CERTBOT_DOMAINS.join(',')
673680
user = ssh(host, ["echo -n ${USER}"])
681+
raise "unexpected username" if user.empty?
682+
674683
home_dir = BUILD_DIR.join(host).join("home").join(user)
675684
cron_dir = home_dir.join(".periodic/weekly")
676685
output = cron_dir.join("certbot-prod.sh")
@@ -987,8 +996,12 @@ def build_rust_app(
987996
raise "unspecified version" if version.nil?
988997
"#{crate} --version #{version}"
989998
else
990-
raise "either version or branch is allowed" if !version.nil? && !branch.nil?
991-
version = version.nil? ? "" : " --tag #{version}"
999+
version =
1000+
if version.nil?
1001+
""
1002+
else
1003+
branch.nil? ? " --tag #{version}" : " --rev #{version}"
1004+
end
9921005
branch = branch.nil? ? "" : " --branch #{branch}"
9931006
"--git #{git}#{version}#{branch}"
9941007
end
@@ -1597,7 +1610,7 @@ def find_hosts(host : String?) : Array(String)
15971610
.split('\n')
15981611
.map { |i| i.split(':') }
15991612
.select { |i| i.size > 2 }
1600-
.map { |i| i[2].strip }
1613+
.map { |i| i[2].strip.sub(/^\./, "") }
16011614
.reject { |i| i.empty? }
16021615
.to_set
16031616
(result + [host].to_set).to_a
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/sbin/openrc-run
2+
3+
name="metasearch"
4+
5+
command="/usr/local/bin/${name}"
6+
command_user="nobody:nobody"
7+
command_background="true"
8+
command_args="/etc/${name}/${name}.toml"
9+
10+
pidfile="/run/${name}.pid"
11+
12+
depend() {
13+
need net
14+
use logger
15+
}

_hosts/media.codonaft/etc/local.d/90-inotify-extra.start

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
fi
1616
done &
1717

18+
[ -f /etc/init.d/metasearch ] && inotifywait --event close_write,moved_to,create --monitor --recursive /etc/metasearch/ |
19+
while read -r directory events filename ; do
20+
if [[ "${filename}" == "metasearch.toml" ]] ; then
21+
rc-service --ifstarted metasearch restart 2>>/dev/stdout | logger
22+
fi
23+
done &
24+
1825
# rnostr relay --watch does nothing (probably under load only)
1926
[ -f /etc/init.d/rnostr ] && inotifywait --event close_write,moved_to,create --monitor --recursive /etc/rnostr/ |
2027
while read -r directory events filename ; do
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
bind = "127.0.0.1:28019"
2+
api = true
3+
4+
[ui]
5+
favicon = "https://codonaft.com/favicon.ico"
6+
show_autocomplete = false
7+
show_settings_link = false
8+
9+
[image_search]
10+
enabled = true
11+
max_download_size = 4194304
12+
13+
[engines]
14+
bing = false
15+
minecraft_wiki = false
16+
17+
[urls.replace]
18+
"medium.com" = "scribe.rip"
19+
".medium.com" = "scribe.rip"
20+
"x.com" = "xcancel.com"
21+
".x.com" = "xcancel.com"
22+
23+
[urls.weight]
24+
".zhihu.com" = 0
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
server {
2+
listen 443 ssl;
3+
listen [::]:443 ssl;
4+
#listen 443 quic;
5+
#listen [::]:443 quic;
6+
http2 on;
7+
#http3 on;
8+
9+
include /etc/nginx/allowlist.conf;
10+
11+
server_name metasearch.codonaft.com;
12+
ssl_certificate /etc/nginx/ssl/codonaft.com/fullchain.pem;
13+
ssl_certificate_key /etc/nginx/ssl/codonaft.com/privkey.pem;
14+
ssl_trusted_certificate /etc/nginx/ssl/codonaft.com/chain.pem;
15+
16+
access_log /var/log/nginx/access.log privacy;
17+
18+
location /autocomplete {
19+
default_type "application/json";
20+
return 405 '["",[]]';
21+
}
22+
23+
location /image-proxy {
24+
proxy_http_version 1.1;
25+
proxy_connect_timeout 20s;
26+
proxy_socket_keepalive on;
27+
proxy_send_timeout 20s;
28+
proxy_read_timeout 120s;
29+
30+
proxy_buffer_size 16k;
31+
proxy_buffers 256 16k;
32+
proxy_busy_buffers_size 24k;
33+
proxy_max_temp_file_size 0;
34+
35+
proxy_set_header "Host" $host;
36+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
37+
#proxy_set_header X-Forwarded-Proto $scheme;
38+
39+
proxy_pass http://127.0.0.1:28019;
40+
}
41+
42+
location / {
43+
proxy_http_version 1.1;
44+
proxy_connect_timeout 20s;
45+
proxy_socket_keepalive on;
46+
proxy_send_timeout 20s;
47+
proxy_read_timeout 120s;
48+
49+
proxy_buffer_size 16k;
50+
proxy_buffers 256 16k;
51+
proxy_busy_buffers_size 24k;
52+
proxy_max_temp_file_size 0;
53+
54+
proxy_set_header "Host" $host;
55+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
56+
#proxy_set_header X-Forwarded-Proto $scheme;
57+
58+
add_header Cache-Control "public, max-age=7200";
59+
expires 2h;
60+
61+
proxy_pass http://127.0.0.1:28019;
62+
}
63+
}

0 commit comments

Comments
 (0)