summaryrefslogtreecommitdiffstats
path: root/README.md
blob: 6d99a0c6c4060f182ecf0ce709749314defe73ca (plain) (blame)
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
# sear.c

sear.c is used as a lightweight replacement for [SearX](https://en.wikipedia.org/wiki/Searx) that proxies and caches search results
from the Google web search engine. The main advantages over SearX are speed and simplicity.

## instructions for debian and ubuntu systems

First add my software distribution repository [prog.sijanec.eu](https://prog.sijanec.eu) into your APT sources list.

```
apt install sear.c
service sear.c start
```

## requirements

* a POSIX system
* GNU C library
* GNU compiler collection (it's written in GNU C - it uses ~~anonymous~~ nested functions)
	- anonymous functions were a pain to debug
* GNU Make
* libxml2-dev (for the simple HTML/1.0 client and HTML parser)
* libmicrohttpd-dev (for serving results - use a reverse proxy, such as nginx, for HTTPS)
* xxd (for converting HTML pages into C arrays when compiling from source)

## compiling from source

```
make prepare
make
```

## instructions

* run the daemon - it starts listening on HTTP port 7327 (remember it by picturing phone keyboard buttons with letters SEAR (; )
* optional: create a reverse proxy for HTTPS
* navigate to [http://localhost:7327](http://localhost:7327) and do a couple of searches to see if everything works
* the horseshoe button redirects directly to the first result without wasting time on the results page. use if you feel lucky. (BP) 
* the painting button performs a search for images. PRIVACY WARNING: images are loaded directly from servers (not from google)
* check logs by navigating to /logs.html
* program also writes all logs to standard error

## prebuilt binaries

apart from the usual debian distribution, there are also prebuilt binaries built for amd64 and arm64, as well as debian packages.

before downloading, check that the build passed, indicated below on the badge:

[![Build Status](https://jenkins.sijanec.eu/job/sear.c/badge/icon)](https://jenkins.sijanec.eu/job/sear.c/)

* amd64: [https://cargova.sijanec.eu/prog/sear.c](https://cargova.sijanec.eu/prog/sear.c)
* arm64: [https://of.sijanec.eu/prog/sear.c/](https://of.sijanec.eu/prog/sear.c)
* i386: *only published in debian package repository because they are built on my personal laptop*

## screenshots

![screenshot in chromium 0](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc.png)
![screenshot in chromium 2](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc2.png)
![screenshot in chromium 3](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc3.png)
![screenshot in chromium 4](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc4.png)
![screenshot in chromium 5](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc5.png)