Merge branch 'main' into lang_de
This commit is contained in:
37
README.md
Normal file
37
README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Welcome to Widerhall!
|
||||||
|
|
||||||
|
## What is Widerhall?
|
||||||
|
|
||||||
|
_Widerhall_ is the german word for reverberation.
|
||||||
|
|
||||||
|
This is a software dedicated to the creation of mailing lists without knowhow regarding _mailservers_.
|
||||||
|
|
||||||
|
All you need to create a mailing list with _Widerhall_ is this software and an IMAP-enabled email address.
|
||||||
|
|
||||||
|
## How does it work?
|
||||||
|
|
||||||
|
After you started the software, you go to it's front page, set up an admin account.
|
||||||
|
|
||||||
|
Then, as admin, you can create mailing lists by just entering the respective login credentials into this software.
|
||||||
|
|
||||||
|
When enabling a list, this software connects to the respective mailbox and waits for incoming messages. Everytime a message is received, the software forwards it to any subscriber of that list.
|
||||||
|
|
||||||
|
## How does subscription work?
|
||||||
|
|
||||||
|
You can make public every mailing list you create.
|
||||||
|
All public mailing lists are presented on _Widerhall_`s front page. Visitors may join each of the public mailing lists by hitting the _subscribe_ button. The need to enter their name and email address. After that, they receive a confirmation email with a link, that completes their subscription.
|
||||||
|
|
||||||
|
## Is it free?
|
||||||
|
|
||||||
|
Yes. _Widerhall_ is FOSS, which stands for Free Open Source Software.
|
||||||
|
That means every on can obtain a free copy of the source code and use it on it`s own behalf.
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
Refer to [Instructions] for hints on setup and maintenance.
|
||||||
|
|
||||||
|
## Current state
|
||||||
|
|
||||||
|
This software is brand new and may contain bugs. Regard it as alpha state, do not use in production environments!
|
||||||
|
|
||||||
|
[Instructions]: doc/instructions.md
|
||||||
85
doc/instructions.md
Normal file
85
doc/instructions.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Installation
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
Using docker is the easiest way!
|
||||||
|
|
||||||
|
If you already have docker up and running, all you need to start Widerhall is
|
||||||
|
|
||||||
|
1. Download the [Dockerfile](../Dockerfile)
|
||||||
|
2. Build the image: `docker build -t widerhall /path-to-dockerfile/`
|
||||||
|
3. Start a container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
--name widerhall \
|
||||||
|
-d widerhall
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now be able to go to http://<your machine>/
|
||||||
|
|
||||||
|
### Configuration, data persistence
|
||||||
|
|
||||||
|
To keep data after restarts of your container, you need to mount a volume into the container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
--name widerhall \
|
||||||
|
-v /some/directory:/data
|
||||||
|
-d widerhall
|
||||||
|
```
|
||||||
|
|
||||||
|
Widerhall will create all persistent data in `/data`, resp. your volume:
|
||||||
|
|
||||||
|
* `widerhall.sqlite3` – this is the main database file. Keep it warm, keep it safe.
|
||||||
|
* `widerhall.config.json` – this is the main config file, where you can overload the default settings.
|
||||||
|
* `archive` – Stored mails will end up here.
|
||||||
|
|
||||||
|
Those files/directories will be created on the first start (or whenever you dropped them).
|
||||||
|
|
||||||
|
The config is structured as follows:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"port":80,
|
||||||
|
"base_url":"https://widerhall.srsoftware.de",
|
||||||
|
"locations":{
|
||||||
|
"database":"/data/widerhall.sqlite3",
|
||||||
|
"configuration":"/data/widerhall.config.json",
|
||||||
|
"archive":"/data/archive",
|
||||||
|
"base":"/Widerhall"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* Alter the `base_url` to match your server settings.
|
||||||
|
* If you want the database to be stored somewhere else, alter the `database` string.
|
||||||
|
* If you change the `configuration` property, widerhall will overlaod it's configuation with whatever is found at the given location
|
||||||
|
* If you want the archive to be stored somewhere else, alter the `archive` string.
|
||||||
|
* `base` should point to the installation dir of Widerhall, which is _/Widerhall_ by default
|
||||||
|
|
||||||
|
### SSL termination
|
||||||
|
|
||||||
|
Widerhall tries to keep it simple. The built-in webserver does not know anything about SSL.
|
||||||
|
If you want to keep a secure webiste, run _Widerhall_ behind a reverse proxy, such as [nginx_proxy].
|
||||||
|
|
||||||
|
## Maven
|
||||||
|
|
||||||
|
Widerhall is a Java project built with Apache Maven.
|
||||||
|
If you have a recent installation of java (17) and maven on your system, you should be able to
|
||||||
|
|
||||||
|
1. get the sources: `git clone https://git.srsoftware.de/StephanRichter/Widerhall.git`
|
||||||
|
2. change to the downloaded dir: `cd Widerhall`
|
||||||
|
3. build the runnable jar: `mvn clean test compile assembly:single`
|
||||||
|
4. execute the jar: `java -jar target/*.jar`
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
|
||||||
|
_Widerhall_`s translations are managed as branches of the source code:
|
||||||
|
|
||||||
|
* _main_ branch: english
|
||||||
|
* _lang_de_ branch: german
|
||||||
|
|
||||||
|
Just checkout the language branch you want.
|
||||||
|
|
||||||
|
[nginx_proxy]: https://github.com/nginx-proxy/nginx-proxy
|
||||||
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>org.example</groupId>
|
<groupId>org.example</groupId>
|
||||||
<artifactId>Widerhall</artifactId>
|
<artifactId>Widerhall</artifactId>
|
||||||
<version>0.2.26</version>
|
<version>0.2.28</version>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
|||||||
@@ -94,6 +94,15 @@ public class MailingList implements MessageHandler, ProblemListener {
|
|||||||
return setFlag(STATE_PUBLIC_ARCHIVE,enabled);
|
return setFlag(STATE_PUBLIC_ARCHIVE,enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearProblems() {
|
||||||
|
try {
|
||||||
|
setLastError(null);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
LOG.warn("setLastError(null) failed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create a new ML object int the database
|
* create a new ML object int the database
|
||||||
* @param email
|
* @param email
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public class ImapClient {
|
|||||||
|
|
||||||
while (!stopped){
|
while (!stopped){
|
||||||
handleMessages();
|
handleMessages();
|
||||||
|
problemListener.clearProblems();
|
||||||
LOG.debug("Warte.");
|
LOG.debug("Warte.");
|
||||||
inbox.idle(true);
|
inbox.idle(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,6 @@ import javax.mail.MessagingException;
|
|||||||
|
|
||||||
public interface ProblemListener {
|
public interface ProblemListener {
|
||||||
public void onImapException(MessagingException e);
|
public void onImapException(MessagingException e);
|
||||||
|
|
||||||
|
public void clearProblems();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user