Skip to content

Commit

Permalink
Release version 1.8.0-beta.1
Browse files Browse the repository at this point in the history
The previous revision on master (d967914), that claimed to be 1.8.0, had a
problem (see #3654), and so 1.8.0 was put on hold.

In #3660 I decided to do a beta.1 release, in order to be able to catch similar
problems.

Closes #3658.
  • Loading branch information
muxator committed Nov 2, 2019
2 parents d967914 + 7e44dc5 commit 503b117
Show file tree
Hide file tree
Showing 8 changed files with 7,427 additions and 22 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
@@ -1,8 +1,9 @@
# 1.8
# 1.8-beta.1
* FEATURE: code was migrated to `async`/`await`, getting rid of a lot of callbacks (see https://github.com/ether/etherpad-lite/issues/3540)
* FEATURE: support configuration via environment variables
* FEATURE: include an official Dockerfile in the main repository
* FEATURE: support including plugins in custom Docker builds
* FEATURE: conditional creation of users: when its password is null, a user is not created. This helps, for example, in advanced configuration of Docker images.
* REQUIREMENTS: minimum required Node version is **8.9.0 LTS**. Release 1.8.3 will require at least Node **10.13.0** LTS
* MINOR: in the HTTP API, allow URL parameters and POST bodies to co-exist
* MINOR: fix Unicode bug in HTML export
Expand Down
2 changes: 1 addition & 1 deletion bin/installDeps.sh
Expand Up @@ -100,7 +100,7 @@ echo "Ensure that all dependencies are up to date... If this is the first time
cd node_modules
[ -e ep_etherpad-lite ] || ln -s ../src ep_etherpad-lite
cd ep_etherpad-lite
npm install --no-save --loglevel warn
npm install --save --loglevel warn
) || {
rm -rf src/node_modules
exit 1
Expand Down
20 changes: 13 additions & 7 deletions docker/Dockerfile
Expand Up @@ -6,7 +6,7 @@
#
# Version 0.1

FROM node:buster-slim
FROM node:10-buster-slim
LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite"

# git hash of the version to be built.
Expand Down Expand Up @@ -53,13 +53,19 @@ RUN bin/installDeps.sh && \
# able to split at spaces.
RUN for PLUGIN_NAME in ${ETHERPAD_PLUGINS}; do npm install "${PLUGIN_NAME}"; done

# Copy the custom configuration file, if present. The configuration file has to
# be manually put inside the same directory containing the Dockerfile (we cannot
# directly point to "../settings.json" for Docker's security restrictions).
#
# For the conditional COPY trick, see:
# https://stackoverflow.com/questions/31528384/conditional-copy-add-in-dockerfile#46801962
# Copy the configuration file.
COPY ./settings.json /opt/etherpad-lite/

# Follow the principle of least privilege: run as unprivileged user.
#
# Running as non-root enables running this image in platforms like OpenShift
# that do not allow images running as root.
RUN \
echo 'etherpad:x:65534:65534:etherpad:/:' > /etc/passwd && \
echo 'etherpad:x:65534:' > /etc/group && \
chown -R etherpad:etherpad ./

USER etherpad

EXPOSE 9001
CMD ["node", "node_modules/ep_etherpad-lite/node/server.js"]
29 changes: 24 additions & 5 deletions src/locales/bs.json
Expand Up @@ -2,9 +2,12 @@
"@metadata": {
"authors": [
"Edinwiki",
"Srdjan m"
"Srdjan m",
"Semina x"
]
},
"index.newPad": "Novi Pad",
"index.createOpenPad": "ili napravite/otvorite Pad sa imenom:",
"pad.toolbar.bold.title": "Podebljano (Ctrl+B)",
"pad.toolbar.italic.title": "Ukošeno (Ctrl+I)",
"pad.toolbar.underline.title": "Podvučeno (Ctrl+U)",
Expand All @@ -15,16 +18,24 @@
"pad.toolbar.unindent.title": "Izvučeno (Shift+TAB)",
"pad.toolbar.undo.title": "Poništi (Ctrl+Z)",
"pad.toolbar.redo.title": "Ponovi (Ctrl+Y)",
"pad.toolbar.clearAuthorship.title": "Očisti autorske boje (Ctrl+Shift+C)",
"pad.toolbar.timeslider.title": "Historijski pregled",
"pad.toolbar.savedRevision.title": "Sačuvaj Reviziju",
"pad.toolbar.settings.title": "Postavke",
"pad.toolbar.embed.title": "Podijeli i ugradi ovaj pad",
"pad.toolbar.showusers.title": "Pokaži korisnike na ovom padu",
"pad.colorpicker.save": "Sačuvaj",
"pad.colorpicker.cancel": "Otkaži",
"pad.loading": "Učitavam...",
"pad.noCookie": "Kolačić nije pronađen. Dozvolite kolačiće u Vašem pregledniku!",
"pad.wrongPassword": "Pogrešna lozinka",
"pad.noCookie": "Kolačić nije pronađen. Molimo Vas dozvolite kolačiće u Vašem pregledniku!",
"pad.passwordRequired": "Treba Vam lozinka da bi ste pristupili ovom padu",
"pad.permissionDenied": "Nemate dopuštenje da pistupite ovom padu",
"pad.wrongPassword": "Vaša lozinka je pogrešna",
"pad.settings.padSettings": "Postavke stranice",
"pad.settings.myView": "Moj prikaz",
"pad.settings.stickychat": "Ćaskanje uvijek na ekranu",
"pad.settings.chatandusers": "Prikaži ćaskanje i korisnike",
"pad.settings.colorcheck": "Autorske boje",
"pad.settings.linenocheck": "Brojevi redova",
"pad.settings.rtlcheck": "Da prikažem sadržaj zdesna ulijevo?",
"pad.settings.fontType": "Vrsta fonta:",
Expand Down Expand Up @@ -54,12 +65,17 @@
"pad.modals.disconnected": "Veza je prekinuta.",
"pad.modals.disconnected.explanation": "Izgubljena je veza sa serverom",
"pad.modals.disconnected.cause": "Moguće je da server nije dostupan. Obavijestite administratora ako se ovo nastavi dešavati.",
"pad.share": "Podijeli ovaj pad",
"pad.share.readonly": "Samo za čitanje",
"pad.share.link": "Link",
"pad.share.emebdcode": "URL za ugradnju",
"pad.chat": "Ćaskanje",
"pad.chat.title": "Otvori chat za ovaj pad.",
"pad.chat.loadmessages": "Učitaj više poruka",
"pad.chat.stick.title": "Zalijepi chat na screen",
"pad.chat.writeMessage.placeholder": "Napišite Vašu poruku ovjde",
"timeslider.pageTitle": "{{appTitle}} Historijski pregled",
"timeslider.toolbar.returnbutton": "Vrati se na pad",
"timeslider.toolbar.authors": "Autori:",
"timeslider.toolbar.authorsList": "Nema autora",
"timeslider.toolbar.exportlink.title": "Izvoz",
Expand All @@ -78,13 +94,16 @@
"timeslider.month.october": "oktobar",
"timeslider.month.november": "novembar",
"timeslider.month.december": "decembar",
"pad.savedrevs.marked": "Ova revizija je sada označena kao sačuvana revizija",
"pad.userlist.entername": "Upišite svoje ime",
"pad.userlist.unnamed": "bez imena",
"pad.userlist.unnamed": "neimenovano",
"pad.userlist.guest": "Gost",
"pad.userlist.deny": "Odbij",
"pad.userlist.approve": "Odobri",
"pad.editbar.clearcolors": "Očisti autorske boje na čitavom dokumentu?",
"pad.impexp.importbutton": "Uvezi odmah",
"pad.impexp.importing": "Uvozim...",
"pad.impexp.uploadFailed": "Postavljanje nije uspjelo. Pokušajte ponovo",
"pad.impexp.importfailed": "Uvoz neuspješan"
"pad.impexp.importfailed": "Uvoz neuspješan",
"pad.impexp.copypaste": "Molimo Vas copy/paste"
}
133 changes: 133 additions & 0 deletions src/locales/id.json
@@ -0,0 +1,133 @@
{
"@metadata": {
"authors": [
"Bennylin",
"IvanLanin",
"Marwan Mohamad"
]
},
"index.newPad": "Pad baru",
"index.createOpenPad": "atau buat/buka Pad dengan nama:",
"pad.toolbar.bold.title": "Tebal (Ctrl-B)",
"pad.toolbar.italic.title": "Miring (Ctrl-I)",
"pad.toolbar.underline.title": "Garis bawah (Ctrl-U)",
"pad.toolbar.strikethrough.title": "Tanda coret (Ctrl+5)",
"pad.toolbar.ol.title": "Daftar bernomor (Ctrl+Shift+N)",
"pad.toolbar.ul.title": "Daftar tak bernomor (Ctrl+Shift+L)",
"pad.toolbar.indent.title": "Indentasi (TAB)",
"pad.toolbar.unindent.title": "Outdent (Shift+TAB)",
"pad.toolbar.undo.title": "Urungkan (Ctrl-Z)",
"pad.toolbar.redo.title": "Ulangi (Ctrl-Y)",
"pad.toolbar.clearAuthorship.title": "Bersihkan Warna Penulis (Ctrl+Shift+C)",
"pad.toolbar.import_export.title": "Impor/Ekspor dari/ke format-format berkas berbeda",
"pad.toolbar.timeslider.title": "Timeslider",
"pad.toolbar.savedRevision.title": "Simpan Perbaikan",
"pad.toolbar.settings.title": "Pengaturan",
"pad.toolbar.embed.title": "Bagi dan Cantumkan pad ini",
"pad.toolbar.showusers.title": "Tampilkan pengguna di pad ini",
"pad.colorpicker.save": "Simpan",
"pad.colorpicker.cancel": "Batalkan",
"pad.loading": "Memuat...",
"pad.noCookie": "Kuki tidak dapat ditemukan. Izinkan kuki di peramban Anda!",
"pad.passwordRequired": "Anda memerlukan kata sandi untuk mengakses pad ini",
"pad.permissionDenied": "Anda tidak memiliki izin untuk mengakses pad ini",
"pad.wrongPassword": "Kata sandi Anda salah",
"pad.settings.padSettings": "Pengaturan Pad",
"pad.settings.myView": "Tampilan Saya",
"pad.settings.stickychat": "Chat selalu di layar",
"pad.settings.chatandusers": "Tampilkan Chat dan Pengguna",
"pad.settings.colorcheck": "Warna penulis",
"pad.settings.linenocheck": "Nomor baris",
"pad.settings.rtlcheck": "Membaca dari kanan ke kiri?",
"pad.settings.fontType": "Jenis fonta:",
"pad.settings.globalView": "Tampilan Global",
"pad.settings.language": "Bahasa:",
"pad.importExport.import_export": "Impor/Ekspor",
"pad.importExport.import": "Unggah setiap berkas teks atau dokumen",
"pad.importExport.importSuccessful": "Berhasil!",
"pad.importExport.export": "Ekspor pad sebagai:",
"pad.importExport.exportetherpad": "Etherpad",
"pad.importExport.exporthtml": "HTML",
"pad.importExport.exportplain": "Teks biasa",
"pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Anda hanya dapat mengimpor dari format teks biasa atau HTML. Untuk fitur impor yang lebih canggih, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">pasanglah AbiWord</a>.",
"pad.modals.connected": "Tersambung.",
"pad.modals.reconnecting": "Menyambungkan kembali ke pad Anda...",
"pad.modals.forcereconnect": "Sambung kembali secara paksa",
"pad.modals.reconnecttimer": "Mencoba menghubungkan ulang",
"pad.modals.cancel": "Batalkan",
"pad.modals.userdup": "Dibuka di jendela lain",
"pad.modals.userdup.explanation": "Pad ini tampaknya telah dibuka di lebih dari satu jendela peramban pada komputer ini.",
"pad.modals.userdup.advice": "Sambung kembali di jendela ini.",
"pad.modals.unauth": "Tidak terotoritas",
"pad.modals.unauth.explanation": "Hak-hak Anda telah berubah ketika Anda sedang melihat halaman ini. Coba menyambungkan kembali.",
"pad.modals.looping.explanation": "Ada masalah komunikasi dengan peladen sinkronisasi.",
"pad.modals.looping.cause": "Mungkin Anda telah tersambung melalui firewall atau proksi yang tidak kompatibel.",
"pad.modals.initsocketfail": "Peladen tidak dapat dihubungi.",
"pad.modals.initsocketfail.explanation": "Peladen sinkronisasi tidak dapat dihubungi.",
"pad.modals.initsocketfail.cause": "Ini mungkin disebabkan oleh masalah dengan peramban atau sambungan internet Anda.",
"pad.modals.slowcommit.explanation": "Peladen tidak merespons.",
"pad.modals.slowcommit.cause": "Ini mungkin disebabkan oleh masalah dengan sambungan jaringan Anda.",
"pad.modals.badChangeset.explanation": "Suntingan yang Anda lakukan dianggap ilegal oleh server sinkronisasi.",
"pad.modals.badChangeset.cause": "Hal ini mungkin disebabkan oleh konfigurasi peladen salah atau sesuatu perilaku yang tidak diperkirakan. Silahkan hubungi administrator Anda jika Anda merasakan ini adalah satu kesalahan. Coba sambungkan kembali untuk terus menyunting.",
"pad.modals.corruptPad.explanation": "Pad yang Anda coba akses telah korup.",
"pad.modals.corruptPad.cause": "Hal ini mungkin disebabkan oleh konfigurasi peladen salah atau sesuatu perilaku yang tidak diperkirakan. Silahkan hubungi administrator Anda jika Anda merasakan ini adalah satu kesalahan.",
"pad.modals.deleted": "Dihapus",
"pad.modals.deleted.explanation": "Pad ini telah dibuang.",
"pad.modals.disconnected": "Sambungan Anda telah diputuskan.",
"pad.modals.disconnected.explanation": "Sambungan ke peladen terputus",
"pad.modals.disconnected.cause": "Peladen ini mungkin tidak tersedia. Silakan beritahu administrator jika masalah ini berkelanjutan.",
"pad.share": "Bagikan pad ini",
"pad.share.readonly": "Baca saja",
"pad.share.link": "Pranala",
"pad.share.emebdcode": "Embed URL",
"pad.chat": "Chat",
"pad.chat.title": "Buka chat untuk pad ini.",
"pad.chat.loadmessages": "Muatkan lebih banyak pesan",
"pad.chat.stick.title": "Tempelkan chat ke layar",
"pad.chat.writeMessage.placeholder": "Tuliskan pesan Anda di sini",
"timeslider.pageTitle": "{{appTitle}} Timeslider",
"timeslider.toolbar.returnbutton": "Kembali ke pad",
"timeslider.toolbar.authors": "Pembuat:",
"timeslider.toolbar.authorsList": "Tidak ada penulis",
"timeslider.toolbar.exportlink.title": "Ekspor",
"timeslider.exportCurrent": "Ekspor versi saat ini sebagai:",
"timeslider.version": "Versi {{version}}",
"timeslider.saved": "Disimpan pada {{day}} {{month}} {{year}}",
"timeslider.playPause": "Mainkan / Pause Konten Pad",
"timeslider.backRevision": "Mundur satu revisi di Pad ini",
"timeslider.forwardRevision": "Maju satu revisi dalam Pad ini",
"timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}",
"timeslider.month.january": "Januari",
"timeslider.month.february": "Februari",
"timeslider.month.march": "Maret",
"timeslider.month.april": "April",
"timeslider.month.may": "Mei",
"timeslider.month.june": "Juni",
"timeslider.month.july": "Juli",
"timeslider.month.august": "Agustus",
"timeslider.month.september": "September",
"timeslider.month.october": "Oktober",
"timeslider.month.november": "November",
"timeslider.month.december": "Desember",
"timeslider.unnamedauthors": "{{num}} orang {[plural(num) other: penulis]} awanama",
"pad.savedrevs.marked": "Revisi ini telah ditandai sebagai revisi tersimpan",
"pad.savedrevs.timeslider": "Anda bisa melihat revisi yang tersimpan dengan mengunjungi timeslider",
"pad.userlist.entername": "Masukkan nama Anda",
"pad.userlist.unnamed": "tanpa nama",
"pad.userlist.guest": "Tamu",
"pad.userlist.deny": "Tolak",
"pad.userlist.approve": "Terima",
"pad.editbar.clearcolors": "Padamkan warna penulis pada seluruh dokumen?",
"pad.impexp.importbutton": "Impor Sekarang",
"pad.impexp.importing": "Mengimpor...",
"pad.impexp.confirmimport": "Mengimpor berkas akan menimpa teks saat ini di pad ini. Apakah Anda benar-benar ingin melakukannya?",
"pad.impexp.convertFailed": "Berkas tidak dapat diimport. Silakan gunakan format dokumen yang lain atau salin tempel secara manual",
"pad.impexp.padHasData": "Kami tidak dapat mengimpor berkas ini karena Pad ini sudah mengalami perubahan. Silakan impor ke pad yang baru",
"pad.impexp.uploadFailed": "Penunggahan gagal, silakan mencoba lagi",
"pad.impexp.importfailed": "Impor gagal",
"pad.impexp.copypaste": "Silahkan salin tempel",
"pad.impexp.exportdisabled": "Mengekspor dalam format {{type}} dilarang. Silakan hubungi administrator untuk detilnya."
}
17 changes: 12 additions & 5 deletions src/node/utils/Settings.js
Expand Up @@ -637,14 +637,21 @@ exports.reloadSettings = function reloadSettings() {
* This is used by the settings.json in the default Dockerfile to eschew
* creating an admin user if no password is set.
*/
var filteredUsers = _.filter(exports.users, function(user, username) {
if ((user.hasOwnProperty("password")) || user.password !== null) {
return true;
var filteredUsers = _.pick(exports.users, function(userProperties, username) {
if (userProperties.hasOwnProperty("password") === false) {
console.warn(`Removing user "${username}", because it has no "password" field.`);

return false;
}

console.warn(`The password for ${username} is null. This means the user must not be created. Removing it.`);
if (userProperties.password === null) {
console.warn(`Removing user "${username}", because its password is null.`);

return false;
return false;
}

// This user has a password, and its password is not null. Keep it.
return true;
});

exports.users = filteredUsers;
Expand Down

0 comments on commit 503b117

Please sign in to comment.