An open API service indexing awesome lists of open source software.

https://github.com/ustclug/mirrors-index

Mirrored infrequently. Go https://git.lug.ustc.edu.cn/mirrors/mirrors-index for latest version
https://github.com/ustclug/mirrors-index

Last synced: about 1 year ago
JSON representation

Mirrored infrequently. Go https://git.lug.ustc.edu.cn/mirrors/mirrors-index for latest version

Awesome Lists containing this project

README

          

# mirrors-index

Help documentation source code: https://github.com/ustclug/mirrorhelp/

## Dependencies

* python3
* python3-requests
* python3-jinja2
* systemd (optional)

## Install

genisolist is a submodule of mirrorz-genisolist, so please checkout the submodule first:

```shell
git submodule update --init --recursive
```

Assuming that your metadata is stored in `/srv/rsync-attrs`. Otherwise, you should modify the `HTTPDIR` variable in gencontent.py (by gencontent.json), and root attribute in genisolist.ini.

Metadata now is generated from rsync-huai hook after every sync by yuki.

### Current Method

Add the following line to your crontab (`crontab -e`)

```
10 * * * * /usr/bin/python3 /home/mirror/scripts/mirrors-index/genindex.py -o /srv/www-misc/index.html 2> /dev/null
```

It will update every hour at minute 10.

### Alternative Method

Copy all the systemd service files (`mirrors-index.service`, `mirrors-index.timer`,
`mirrors-index.path`) from `services/` dir into `/etc/systemd/system/`.
Then enable them and start the timer and the path file.

### Previous Method

The following method is obsolete, because /srv/www only contains symlinks.

Add a following line to incrontab:

```/srv/www IN_CREATE,IN_DELETE,IN_MOVE /home/mirror/newindex/genindex.py```

The crontab file was also used to trigger the update based on time before.
Use `crontab -l -u mirror` to check the line that has been commented out for now.

### Locales

Install zh_CN locales since the `genisolist.ini` file contains Chinese characters.

## Development

Here we introduce how to develop this project on your personal computer (without polluting host's filesystem environment).

Create a Debian container:

```shell
# fish shell
docker run --rm -it -p 8000:8000 -e TZ=Asia/Shanghai -v $(pwd):/workspace ustclug/debian:12
# bash shell
docker run --rm -it -p 8000:8000 -e TZ=Asia/Shanghai -v $PWD:/workspace ustclug/debian:12
```

Then `apt update && apt install -y python3 python3-requests python3-jinja2 rsync` to install dependencies.

`mkdir /srv/rsync-attrs` to create a fake directory for metadata, and `python3 -m http.server --directory /srv/rsync-attrs &` at `/workspace` to start a HTTP server at port 8000 for host browser access.

`python3 genindex.py` to generate the index page. Note that this repo currently does not contain webfont-related files yet.

If you need to debug genisolist, use `z-genisolist/utils/rsync-stub-generator.py` to generate stub files for testing. Example:

```shell
z-genisolist/utils/rsync-stub-generator.py rsync://rsync.mirrors.ustc.edu.cn/archlinux --dist /srv/rsync-attrs/archlinux
```

Also `DEBUG_WITH_REPOLIST=1 python3 genindex.py` can help create folders within `HTTPDIR`/`OUTDIR` without the necessity to create stub files one by one.

## Copyright

Copyright © 2013-2024 USTC Linux User Group
All rights reserved.

This file is part of Mirrors-index.

Mirrors-index is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.

Mirrors-index is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Mirrors-index. If not, see .

* * *
LUG@USTC