mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-22 14:45:10 +00:00
Merge branch 'dev' into websocket_scopes
This commit is contained in:
commit
9f2b61708e
2
README.md
vendored
2
README.md
vendored
|
@ -1,5 +1,5 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="" rel="noopener">
|
<a href="https://dev.lemmy.ml/" rel="noopener">
|
||||||
<img width=200px height=200px src="ui/assets/favicon.svg"></a>
|
<img width=200px height=200px src="ui/assets/favicon.svg"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
15
ansible/lemmy.yml
vendored
15
ansible/lemmy.yml
vendored
|
@ -29,12 +29,15 @@
|
||||||
- { path: '/lemmy/' }
|
- { path: '/lemmy/' }
|
||||||
- { path: '/lemmy/volumes/' }
|
- { path: '/lemmy/volumes/' }
|
||||||
|
|
||||||
- name: add all template files
|
- block:
|
||||||
template: src={{item.src}} dest={{item.dest}}
|
- name: add template files
|
||||||
with_items:
|
template: src={{item.src}} dest={{item.dest}} mode={{item.mode}}
|
||||||
- { src: '../docker/prod/docker-compose.yml', dest: '/lemmy/docker-compose.yml' }
|
with_items:
|
||||||
- { src: 'templates/config.hjson', dest: '/lemmy/lemmy.hjson' }
|
- { src: 'templates/docker-compose.yml', dest: '/lemmy/docker-compose.yml', mode: '0600' }
|
||||||
- { src: 'templates/nginx.conf', dest: '/etc/nginx/sites-enabled/lemmy.conf' }
|
- { src: 'templates/nginx.conf', dest: '/etc/nginx/sites-enabled/lemmy.conf', mode: '0644' }
|
||||||
|
|
||||||
|
- name: add config file (only during initial setup)
|
||||||
|
template: src='templates/config.hjson' dest='/lemmy/lemmy.hjson' mode='0600' force='no' owner='1000' group='1000'
|
||||||
vars:
|
vars:
|
||||||
postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
|
postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
|
||||||
jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
|
jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
|
||||||
|
|
35
ansible/templates/docker-compose.yml
vendored
Normal file
35
ansible/templates/docker-compose.yml
vendored
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
version: '3.3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
lemmy:
|
||||||
|
image: dessalines/lemmy:v0.6.5
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8536:8536"
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./lemmy.hjson:/config/config.hjson:ro
|
||||||
|
depends_on:
|
||||||
|
- lemmy_db
|
||||||
|
- lemmy_pictshare
|
||||||
|
|
||||||
|
lemmy_db:
|
||||||
|
image: postgres:12-alpine
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=lemmy
|
||||||
|
- POSTGRES_PASSWORD={{ postgres_password }}
|
||||||
|
- POSTGRES_DB=lemmy
|
||||||
|
volumes:
|
||||||
|
- lemmy_db:/var/lib/postgresql/data
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
lemmy_pictshare:
|
||||||
|
image: shtripok/pictshare:latest
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8537:80"
|
||||||
|
volumes:
|
||||||
|
- lemmy_pictshare:/usr/share/nginx/html/data
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
lemmy_db:
|
||||||
|
lemmy_pictshare:
|
48
ansible/uninstall.yml
vendored
Normal file
48
ansible/uninstall.yml
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
|
||||||
|
vars_prompt:
|
||||||
|
|
||||||
|
- name: confirm_uninstall
|
||||||
|
prompt: "Do you really want to uninstall Lemmy? This will delete all data and can not be reverted [yes/no]"
|
||||||
|
private: no
|
||||||
|
|
||||||
|
- name: delete_certs
|
||||||
|
prompt: "Delete certificates? Select 'no' if you want to reinstall Lemmy [yes/no]"
|
||||||
|
private: no
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: end play if no confirmation was given
|
||||||
|
debug:
|
||||||
|
msg: "Uninstall cancelled, doing nothing"
|
||||||
|
when: not confirm_uninstall|bool
|
||||||
|
|
||||||
|
- meta: end_play
|
||||||
|
when: not confirm_uninstall|bool
|
||||||
|
|
||||||
|
- name: stop docker-compose
|
||||||
|
docker_compose:
|
||||||
|
project_src: /lemmy/
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: delete data
|
||||||
|
file: path={{item.path}} state=absent
|
||||||
|
with_items:
|
||||||
|
- { path: '/lemmy/' }
|
||||||
|
- { path: '/etc/nginx/sites-enabled/lemmy.conf' }
|
||||||
|
|
||||||
|
- name: Remove a volume
|
||||||
|
docker_volume: name={{item.name}} state=absent
|
||||||
|
with_items:
|
||||||
|
- { name: 'lemmy_lemmy_db' }
|
||||||
|
- { name: 'lemmy_lemmy_pictshare' }
|
||||||
|
|
||||||
|
- name: delete entire ecloud folder
|
||||||
|
file: path='/mnt/repo-base/' state=absent
|
||||||
|
when: delete_certs|bool
|
||||||
|
|
||||||
|
- name: remove certbot cronjob
|
||||||
|
cron:
|
||||||
|
name=certbot-renew-lemmy
|
||||||
|
state=absent
|
||||||
|
|
3
server/query_testing/apache_bench_report.sh
vendored
3
server/query_testing/apache_bench_report.sh
vendored
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
declare -a arr=(
|
declare -a arr=(
|
||||||
"https://mastodon.social/"
|
"https://mastodon.social/"
|
||||||
|
|
34
server/query_testing/api_benchmark.sh
vendored
Executable file
34
server/query_testing/api_benchmark.sh
vendored
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# By default, this script runs against `http://127.0.0.1:8536`, but you can pass a different Lemmy instance,
|
||||||
|
# eg `./api_benchmark.sh "https://example.com"`.
|
||||||
|
DOMAIN=${1:-"http://127.0.0.1:8536"}
|
||||||
|
|
||||||
|
declare -a arr=(
|
||||||
|
"/api/v1/site"
|
||||||
|
"/api/v1/categories"
|
||||||
|
"/api/v1/modlog"
|
||||||
|
"/api/v1/search?q=test&type_=Posts&sort=Hot"
|
||||||
|
"/api/v1/community"
|
||||||
|
"/api/v1/community/list?sort=Hot"
|
||||||
|
"/api/v1/post/list?sort=Hot&type_=All"
|
||||||
|
)
|
||||||
|
|
||||||
|
## now loop through the above array
|
||||||
|
for path in "${arr[@]}"
|
||||||
|
do
|
||||||
|
URL="$DOMAIN$path"
|
||||||
|
printf "\n\n\n"
|
||||||
|
echo "testing $URL"
|
||||||
|
curl --show-error --fail --silent "$URL" >/dev/null
|
||||||
|
ab -c 64 -t 10 "$URL" > out.abtest
|
||||||
|
grep "Server Hostname:" out.abtest
|
||||||
|
grep "Document Path:" out.abtest
|
||||||
|
grep "Requests per second" out.abtest
|
||||||
|
grep "(mean, across all concurrent requests)" out.abtest
|
||||||
|
grep "Transfer rate:" out.abtest
|
||||||
|
echo "---"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm *.abtest
|
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
# Do the views first
|
# Do the views first
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ use diesel::PgConnection;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct ListCategories;
|
pub struct ListCategories {}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct ListCategoriesResponse {
|
pub struct ListCategoriesResponse {
|
||||||
|
@ -72,7 +72,7 @@ pub struct EditSite {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct GetSite;
|
pub struct GetSite {}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct SiteResponse {
|
pub struct SiteResponse {
|
||||||
|
|
2
ui/src/components/navbar.tsx
vendored
2
ui/src/components/navbar.tsx
vendored
|
@ -84,7 +84,7 @@ export class Navbar extends Component<any, NavbarState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return <div>{this.navbar()}</div>;
|
return this.navbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
|
|
4
ui/src/services/WebSocketService.ts
vendored
4
ui/src/services/WebSocketService.ts
vendored
|
@ -130,7 +130,7 @@ export class WebSocketService {
|
||||||
|
|
||||||
public listCategories() {
|
public listCategories() {
|
||||||
this.subject.next(
|
this.subject.next(
|
||||||
this.wsSendWrapper(UserOperation.ListCategories, undefined)
|
this.wsSendWrapper(UserOperation.ListCategories, {})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ export class WebSocketService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public getSite() {
|
public getSite() {
|
||||||
this.subject.next(this.wsSendWrapper(UserOperation.GetSite, undefined));
|
this.subject.next(this.wsSendWrapper(UserOperation.GetSite, {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public search(form: SearchForm) {
|
public search(form: SearchForm) {
|
||||||
|
|
19
ui/src/translations/nl.ts
vendored
19
ui/src/translations/nl.ts
vendored
|
@ -211,6 +211,23 @@ export const nl = {
|
||||||
open_registration: 'Open registratie',
|
open_registration: 'Open registratie',
|
||||||
registration_closed: 'Registratie gesloten',
|
registration_closed: 'Registratie gesloten',
|
||||||
enable_nsfw: 'NSFW toestaan',
|
enable_nsfw: 'NSFW toestaan',
|
||||||
theme: 'Thema'
|
theme: 'Thema',
|
||||||
|
create_private_message: 'Maak een beveiligd bericht',
|
||||||
|
send_secure_message: 'Verstuur beveiligd bericht',
|
||||||
|
send_message: 'Verstuur bericht',
|
||||||
|
message: 'Bericht',
|
||||||
|
old: 'Oud',
|
||||||
|
message_sent: 'Bericht verstuurd',
|
||||||
|
messages: 'Berichten',
|
||||||
|
matrix_user_id: 'Matrix gebruikers-id',
|
||||||
|
private_message_disclaimer: 'Waarschuwing: Privé berichten in Lemmy zijn niet beveiligd. Maak een account aan op <1>Riot.im</1> om veilig te communiceren',
|
||||||
|
donate_to_lemmy: 'Doneer aan Lemmy',
|
||||||
|
donate: 'Doneer',
|
||||||
|
from: 'van',
|
||||||
|
logged_in: 'Ingelogd',
|
||||||
|
email_already_exists: 'Email bestaat al',
|
||||||
|
couldnt_create_private_message: 'Kan beveiligd bericht niet maken',
|
||||||
|
no_private_message_edit_allowed: 'Niet toegestaan om privé berichten te wijzigen',
|
||||||
|
couldnt_update_private_message: 'Kan beveiligd bericht niet bijwerken'
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue