Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eurohlam/rss2kindle
Java Web application that provides a service for scheduled polling RSS feeds and sending them by email as Kindle books in mobi format. It uses Apache Camel, Spring MVC, Jersey RESTful Web Service, Bootstrap, JQuery, Tomcat, Docker, Mongo DB and Amazon kindlegen
https://github.com/eurohlam/rss2kindle
ansible bootstrap4 camel docker java jersey-framework jquery kindlegen mobi-format mongodb rss spring-mvc spring-security tomcat
Last synced: 2 days ago
JSON representation
Java Web application that provides a service for scheduled polling RSS feeds and sending them by email as Kindle books in mobi format. It uses Apache Camel, Spring MVC, Jersey RESTful Web Service, Bootstrap, JQuery, Tomcat, Docker, Mongo DB and Amazon kindlegen
- Host: GitHub
- URL: https://github.com/eurohlam/rss2kindle
- Owner: eurohlam
- License: apache-2.0
- Created: 2016-10-24T21:22:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-10T06:13:48.000Z (about 2 years ago)
- Last Synced: 2024-04-17T09:04:49.343Z (10 months ago)
- Topics: ansible, bootstrap4, camel, docker, java, jersey-framework, jquery, kindlegen, mobi-format, mongodb, rss, spring-mvc, spring-security, tomcat
- Language: Java
- Homepage:
- Size: 19.6 MB
- Stars: 11
- Watchers: 0
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
RSS-to-Kindle Transformer
========================================## Overview
The application polls rss-feeds for subscriber, transforms them into ebook's mobi format using kindlegen tool
and send resulted mobi-files by email.## Prerequisites:
1. MongoDB. It is supposed that all subscribers are stored in mongodb
2. Tomcat. It is supposed that REST API and Web UI are deployed in Tomcat container or any other java container
3. kindlegen. kindlegen is command-line tool for transformation of documents from xml-format to mobi-format
kindlegen is developed and supported by amazon. kindlegen has to be deployed independently. To download kindlegen go to https://www.amazon.com/gp/feature.html?docId=1000765211
4. SMTP-server. Any SMTP-server that allows to send messages from external applications
5. Java 1.8## How to configure
The main configuration file is rss-2-kindle-camel/src/main/resources/camel-context.properties
The follwoing properties has to be configured according to certain environment:
* `mongodb.host` - in case of docker it should be mongo
* `kindlegen.path` - absolute path to kindlegen.sh
* `smtp.uri` - SMTP server URI
* `storage.path.root` - parent folder for saving rss and mobi files## How to build
To build this project usemvn clean install -Dmaven.skip.test.exec
## How to deploy
Docker is used to deploy and run necessary environment.
Docker configuration was tested on versions:
* Docker 1.12.6
* Docker-compose 1.8.1There are 5 containers that have to be run:
* MongoDB 3.2.10. Dockerfile is located in `docker-dir/mongo`. https://hub.docker.com/_/mongo/
* Tomcat 9.0. There are two containers with Tomcat:
* the first one is for REST API application. Dockerfile is located in `docker-dir/tomcat/rss2kindle-api-dockerfile`.
* the second one is for Web UI application. Dockerfile is located in `docker-dir/tomcat/rss2kindle-web-dockerfile`.
* Image: https://hub.docker.com/_/tomcat/
* MailHog 1.0. Dockerfile is located in `docker-dir/mailhog`. https://hub.docker.com/r/mailhog/mailhog/
* Traefik 2.1.4. HTTP reverse proxy and load balancer. https://hub.docker.com/_/traefikYou can run whole environment using one maven command:
mvn clean install docker-compose:up
You also can build and deploy step by step:
* build the project:
mvn clean install
* make sure that war files have been copied to docker folder:
docker-dir/tomcat/resources/rss2kindle##{RELEASE_VERSION}.war
docker-dir/tomcat/resources/r2kweb##{RELEASE_VERSION}.war
* go to docker directory
cd docker-dir
* run docker:
docker-compose build
docker-compose up
## How to runTraefik as a reverse proxy stands before all containers and intercepts and routes every incoming request.
* Traefik dashboard
http://ip_address:8080* Web UI should be available by URL:
https://web.localhost
or
https://ip_address/r2kweb
* Tomcat admin console for Web UI should be available by URL:
https://web.localhost/manager
* REST API should be available by URL:
https://api.localhost/rss2kindle/api/v1
or
https://ip_address/rss2kindle/api/v1* Tomcat admin console for REST API should be available by URL:
https://api.localhost/manager
* MailHog Web UI should be available by URL:
http://smtp.localhost
or
http://ip_address* MailHog SMTP port is 1025
* MongoDB port is 27017* To run this project from within Maven in command-line mode use
mvn exec:java
It will run only `rss-2-kindle-camel` application that does not have user interface,
but can be invoked via camel configuration### Structure of document in mongodb
{
"_id" : "8a60e197-3ad8-4581-83e5-09c17bd3ee96" ,
"username" : "test" ,
"password" : "test" ,
"email" : "[email protected]",
"dateCreated" : "2017-11-13" ,
"status" : "active" ,
"subscribers" :
[
{
"email" : "[email protected]" ,
"name" : "test" ,
"rsslist" :
[
{ "rss" : "test.org/feed" ,
"status" : "active"}
] ,
"settings" : {
"starttime" : "2017-11-13" ,
"timeout" : "24"
} ,
"status" : "active"
}
] ,
"roles" : [ "ROLE_USER"]
}