aboutsummaryrefslogtreecommitdiff
path: root/rdrview.filter.dpi
blob: f1a2f84b81ba17e1d4476e6a7105f9cfd8644cf3 (plain)
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
#!/bin/bash
# Copyright (c) 2025 Rodrigo Arias Mallo
# SPDX-License-Identifier: GPL-3.0-or-later

IFS= read -d '>' auth # Ignore auth
IFS= read -d '>' cmd
dir="$(dirname $(readlink -f $0))"

case "$cmd" in
  "<cmd='open_url' url='"*);;
  *) echo $cmd; exit;;
esac

url=${cmd#"<cmd='open_url' url='"}
url=${url%"' '"}

serve_error() {
  printf "<cmd='start_send_page' url='' '>\n"
  printf "Content-type: text/plain\r\n\r\n"
  echo "Error: $@"
  exit 0
}

serve_page() {
  # For debug:
  #set -x
  url="$1"
  url=${url#"rdrview:"}

  tmpfile=$(mktemp "${TMPDIR:-/tmp}/rdrview.XXXXXX")

  curl -L "$url" -o "$tmpfile" || serve_error "cannot download URL: $url"

  printf "<cmd='start_send_page' url='' '>\n"
  printf "Content-type: text/html\r\n\r\n"
  echo "<!DOCTYPE html>"
  echo "<html>"
  echo "<head>"
  rdrview -M  < "$tmpfile" | grep '^Title' | sed 's/^Title: //g;s/^/<title>/;s_$_</title>_'
  echo "<style>"
  cat "$dir/style.css"
  echo "</style>"
  echo "</head>"
  echo "<body>"
  rdrview -u "$url" -T title,body -E utf-8 -H < "$tmpfile"
  echo "</body>"
  echo "</html>"

  rm -f "$tmpfile"
}

case "$url" in
  rdrview:*) serve_page "$url";;
  *) serve_error "unknown URL: ${url}";;
esac