mirror of
https://github.com/YunoHost/SSOwat.git
synced 2024-09-03 20:06:27 +02:00
Merge branch 'unstable' into testing
This commit is contained in:
commit
b9c6fb976a
13 changed files with 305 additions and 219 deletions
|
@ -204,14 +204,14 @@ function is_protected()
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, url in ipairs(conf["protected_urls"]) do
|
for _, url in ipairs(conf["protected_urls"]) do
|
||||||
if hlp.string.starts(ngx.var.host..ngx.var.uri, url)
|
if hlp.string.starts(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), url)
|
||||||
or hlp.string.starts(ngx.var.uri, url) then
|
or hlp.string.starts(ngx.var.uri..hlp.uri_args_string(), url) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for _, regex in ipairs(conf["protected_regex"]) do
|
for _, regex in ipairs(conf["protected_regex"]) do
|
||||||
if string.match(ngx.var.host..ngx.var.uri, regex)
|
if string.match(ngx.var.host..ngx.var.uri..hlp.uri_args_string(), regex)
|
||||||
or string.match(ngx.var.uri, regex) then
|
or string.match(ngx.var.uri..hlp.uri_args_string(), regex) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
20
conf.json
20
conf.json
|
@ -1,16 +1,16 @@
|
||||||
{
|
{
|
||||||
"portal_scheme": "https",
|
"portal_scheme": "https",
|
||||||
"portal_domain": "mydomain.com",
|
"portal_domain": "example.com",
|
||||||
"portal_path": "/ssowat/",
|
"portal_path": "/ssowat/",
|
||||||
"domains": [
|
"domains": [
|
||||||
"mydomain.com",
|
"example.com",
|
||||||
"myotherdomain.com"
|
"example.org"
|
||||||
],
|
],
|
||||||
"skipped_urls": [
|
"skipped_urls": [
|
||||||
"mydomain.com/megusta",
|
"example.com/megusta",
|
||||||
"myotherdomain.com/somuchwin"
|
"example.org/somuchwin"
|
||||||
],
|
],
|
||||||
"unprotected_urls": ["mydomain.com/yunoprotect"],
|
"unprotected_urls": ["example.com/yunoprotect"],
|
||||||
"additional_headers": {
|
"additional_headers": {
|
||||||
"Auth-User": "uid",
|
"Auth-User": "uid",
|
||||||
"Remote-User": "uid",
|
"Remote-User": "uid",
|
||||||
|
@ -19,12 +19,12 @@
|
||||||
},
|
},
|
||||||
"users": {
|
"users": {
|
||||||
"myuser": {
|
"myuser": {
|
||||||
"mydomain.com/myapp": "My App",
|
"example.com/myapp": "My App",
|
||||||
"mydomain.com/myapp2": "My second App"
|
"example.com/myapp2": "My second App"
|
||||||
},
|
},
|
||||||
"myuser2": {
|
"myuser2": {
|
||||||
"myotherdomain.com/myapp": "My other domain App",
|
"example.org/myapp": "My other domain App",
|
||||||
"mydomain.com/myapp2": "My second App"
|
"example.com/myapp2": "My second App"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
module('config', package.seeall)
|
module('config', package.seeall)
|
||||||
|
|
||||||
function get_config ()
|
function get_config()
|
||||||
|
|
||||||
-- Load the configuration file
|
-- Load the configuration file
|
||||||
local conf_file = assert(io.open(conf_path, "r"), "Configuration file is missing")
|
local conf_file = assert(io.open(conf_path, "r"), "Configuration file is missing")
|
||||||
|
|
42
helpers.lua
42
helpers.lua
|
@ -21,7 +21,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Lua has no sugar :D
|
-- Lua has no sugar :D
|
||||||
function is_in_table (t, v)
|
function is_in_table(t, v)
|
||||||
for key, value in ipairs(t) do
|
for key, value in ipairs(t) do
|
||||||
if value == v then return key end
|
if value == v then return key end
|
||||||
end
|
end
|
||||||
|
@ -37,19 +37,19 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Test whether a string starts with another
|
-- Test whether a string starts with another
|
||||||
function string.starts (String, Start)
|
function string.starts(String, Start)
|
||||||
return string.sub(String, 1, string.len(Start)) == Start
|
return string.sub(String, 1, string.len(Start)) == Start
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Test whether a string ends with another
|
-- Test whether a string ends with another
|
||||||
function string.ends (String, End)
|
function string.ends(String, End)
|
||||||
return End=='' or string.sub(String, -string.len(End)) == End
|
return End=='' or string.sub(String, -string.len(End)) == End
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Find a string by its translate key in the right language
|
-- Find a string by its translate key in the right language
|
||||||
function t (key)
|
function t(key)
|
||||||
if conf.lang and i18n[conf.lang] then
|
if conf.lang and i18n[conf.lang] then
|
||||||
return i18n[conf.lang][key] or ""
|
return i18n[conf.lang][key] or ""
|
||||||
else
|
else
|
||||||
|
@ -60,7 +60,7 @@ end
|
||||||
|
|
||||||
-- Store a message in the flash shared table in order to display it at the
|
-- Store a message in the flash shared table in order to display it at the
|
||||||
-- next response
|
-- next response
|
||||||
function flash (wat, message)
|
function flash(wat, message)
|
||||||
if wat == "fail"
|
if wat == "fail"
|
||||||
or wat == "win"
|
or wat == "win"
|
||||||
or wat == "info"
|
or wat == "info"
|
||||||
|
@ -71,7 +71,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Convert a table of arguments to an URI string
|
-- Convert a table of arguments to an URI string
|
||||||
function uri_args_string (args)
|
function uri_args_string(args)
|
||||||
if not args then
|
if not args then
|
||||||
args = ngx.req.get_uri_args()
|
args = ngx.req.get_uri_args()
|
||||||
end
|
end
|
||||||
|
@ -84,7 +84,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Set the Cross-Domain-Authentication key for a specific user
|
-- Set the Cross-Domain-Authentication key for a specific user
|
||||||
function set_cda_key ()
|
function set_cda_key()
|
||||||
local cda_key = random_string()
|
local cda_key = random_string()
|
||||||
cache:set(cda_key, authUser, 10)
|
cache:set(cda_key, authUser, 10)
|
||||||
return cda_key
|
return cda_key
|
||||||
|
@ -102,7 +102,7 @@ end
|
||||||
-- It enables the SSO to quickly retrieve the username and the session
|
-- It enables the SSO to quickly retrieve the username and the session
|
||||||
-- expiration time, and to prove their authenticity to avoid session hijacking.
|
-- expiration time, and to prove their authenticity to avoid session hijacking.
|
||||||
--
|
--
|
||||||
function set_auth_cookie (user, domain)
|
function set_auth_cookie(user, domain)
|
||||||
local maxAge = conf["session_max_timeout"]
|
local maxAge = conf["session_max_timeout"]
|
||||||
local expire = ngx.req.start_time() + maxAge
|
local expire = ngx.req.start_time() + maxAge
|
||||||
local session_key = cache:get("session_"..user)
|
local session_key = cache:get("session_"..user)
|
||||||
|
@ -128,7 +128,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Expires the 3 session cookies
|
-- Expires the 3 session cookies
|
||||||
function delete_cookie ()
|
function delete_cookie()
|
||||||
conf = config.get_config()
|
conf = config.get_config()
|
||||||
|
|
||||||
expired_time = "Thu, Jan 01 1970 00:00:00 UTC;"
|
expired_time = "Thu, Jan 01 1970 00:00:00 UTC;"
|
||||||
|
@ -146,7 +146,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Expires the redirection cookie
|
-- Expires the redirection cookie
|
||||||
function delete_redirect_cookie ()
|
function delete_redirect_cookie()
|
||||||
expired_time = "Thu, Jan 01 1970 00:00:00 UTC;"
|
expired_time = "Thu, Jan 01 1970 00:00:00 UTC;"
|
||||||
local cookie_str = "; Path="..conf["portal_path"]..
|
local cookie_str = "; Path="..conf["portal_path"]..
|
||||||
"; Max-Age="..expired_time
|
"; Max-Age="..expired_time
|
||||||
|
@ -159,7 +159,7 @@ end
|
||||||
-- Check if the session cookies are set, and rehash server + client information
|
-- Check if the session cookies are set, and rehash server + client information
|
||||||
-- to match the session hash.
|
-- to match the session hash.
|
||||||
--
|
--
|
||||||
function is_logged_in ()
|
function is_logged_in()
|
||||||
local expireTime = ngx.var.cookie_SSOwAuthExpire
|
local expireTime = ngx.var.cookie_SSOwAuthExpire
|
||||||
local user = ngx.var.cookie_SSOwAuthUser
|
local user = ngx.var.cookie_SSOwAuthUser
|
||||||
local authHash = ngx.var.cookie_SSOwAuthHash
|
local authHash = ngx.var.cookie_SSOwAuthHash
|
||||||
|
@ -193,7 +193,7 @@ end
|
||||||
|
|
||||||
-- Check whether a user is allowed to access a URL using the `users` directive
|
-- Check whether a user is allowed to access a URL using the `users` directive
|
||||||
-- of the configuration file
|
-- of the configuration file
|
||||||
function has_access (user, url)
|
function has_access(user, url)
|
||||||
user = user or authUser
|
user = user or authUser
|
||||||
url = url or ngx.var.host..ngx.var.uri
|
url = url or ngx.var.host..ngx.var.uri
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ end
|
||||||
-- Authenticate a user against the LDAP database using a username or an email
|
-- Authenticate a user against the LDAP database using a username or an email
|
||||||
-- address.
|
-- address.
|
||||||
-- Reminder: conf["ldap_identifier"] is "uid" by default
|
-- Reminder: conf["ldap_identifier"] is "uid" by default
|
||||||
function authenticate (user, password)
|
function authenticate(user, password)
|
||||||
conf = config.get_config()
|
conf = config.get_config()
|
||||||
|
|
||||||
-- Try to find the username from an email address by openning an anonymous
|
-- Try to find the username from an email address by openning an anonymous
|
||||||
|
@ -277,7 +277,7 @@ end
|
||||||
|
|
||||||
-- Set the authentication headers in order to pass credentials to the
|
-- Set the authentication headers in order to pass credentials to the
|
||||||
-- application underneath.
|
-- application underneath.
|
||||||
function set_headers (user)
|
function set_headers(user)
|
||||||
|
|
||||||
-- We definetly don't want to pass credential on a non-encrypted
|
-- We definetly don't want to pass credential on a non-encrypted
|
||||||
-- connection.
|
-- connection.
|
||||||
|
@ -298,7 +298,11 @@ function set_headers (user)
|
||||||
-- If the user information is not in cache, open an LDAP connection and
|
-- If the user information is not in cache, open an LDAP connection and
|
||||||
-- fetch it.
|
-- fetch it.
|
||||||
if not cache:get(user.."-"..conf["ldap_identifier"]) then
|
if not cache:get(user.."-"..conf["ldap_identifier"]) then
|
||||||
ldap = lualdap.open_simple(conf["ldap_host"])
|
ldap = lualdap.open_simple(
|
||||||
|
conf["ldap_host"],
|
||||||
|
conf["ldap_identifier"].."=".. user ..","..conf["ldap_group"],
|
||||||
|
cache:get(user.."-password")
|
||||||
|
)
|
||||||
ngx.log(ngx.NOTICE, "Reloading LDAP values for: "..user)
|
ngx.log(ngx.NOTICE, "Reloading LDAP values for: "..user)
|
||||||
for dn, attribs in ldap:search {
|
for dn, attribs in ldap:search {
|
||||||
base = conf["ldap_identifier"].."=".. user ..","..conf["ldap_group"],
|
base = conf["ldap_identifier"].."=".. user ..","..conf["ldap_group"],
|
||||||
|
@ -520,7 +524,7 @@ end
|
||||||
-- Compute the user modification POST request
|
-- Compute the user modification POST request
|
||||||
-- It has to update cached information and edit the LDAP user entry
|
-- It has to update cached information and edit the LDAP user entry
|
||||||
-- according to the changes detected.
|
-- according to the changes detected.
|
||||||
function edit_user ()
|
function edit_user()
|
||||||
conf = config.get_config()
|
conf = config.get_config()
|
||||||
|
|
||||||
-- We need these calls since we are in a POST request
|
-- We need these calls since we are in a POST request
|
||||||
|
@ -768,7 +772,7 @@ end
|
||||||
|
|
||||||
-- Compute the user login POST request
|
-- Compute the user login POST request
|
||||||
-- It authenticates the user against the LDAP base then redirects to the portal
|
-- It authenticates the user against the LDAP base then redirects to the portal
|
||||||
function login ()
|
function login()
|
||||||
|
|
||||||
-- We need these calls since we are in a POST request
|
-- We need these calls since we are in a POST request
|
||||||
ngx.req.read_body()
|
ngx.req.read_body()
|
||||||
|
@ -814,14 +818,14 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Set cookie and redirect (needed to properly set cookie)
|
-- Set cookie and redirect (needed to properly set cookie)
|
||||||
function redirect (url)
|
function redirect(url)
|
||||||
ngx.log(ngx.NOTICE, "Redirect to: "..url)
|
ngx.log(ngx.NOTICE, "Redirect to: "..url)
|
||||||
return ngx.redirect(url)
|
return ngx.redirect(url)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Set cookie and go on with the response (needed to properly set cookie)
|
-- Set cookie and go on with the response (needed to properly set cookie)
|
||||||
function pass ()
|
function pass()
|
||||||
delete_redirect_cookie()
|
delete_redirect_cookie()
|
||||||
|
|
||||||
-- When we are in the SSOwat portal, we need a default `content-type`
|
-- When we are in the SSOwat portal, we need a default `content-type`
|
||||||
|
|
2
init.lua
2
init.lua
|
@ -28,7 +28,7 @@ flashs = {}
|
||||||
i18n = {}
|
i18n = {}
|
||||||
|
|
||||||
-- Efficient function to get a random string
|
-- Efficient function to get a random string
|
||||||
function random_string ()
|
function random_string()
|
||||||
math.randomseed( tonumber(tostring(socket.gettime()*10000):reverse()) )
|
math.randomseed( tonumber(tostring(socket.gettime()*10000):reverse()) )
|
||||||
str = tostring(math.random()):sub(3)
|
str = tostring(math.random()):sub(3)
|
||||||
socket.sleep(1e-400)
|
socket.sleep(1e-400)
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"portal": "YunoHost Portal",
|
"add_forward": "E-Mail Weiterleitung hinzufügen",
|
||||||
"information": "Deine Informationen",
|
"add_mail": "E-Mail Alias hinzufügen",
|
||||||
"username": "Benutzername",
|
"cancel": "Abbrechen",
|
||||||
"password": "Passwort",
|
"change_password": "Passwort ändern",
|
||||||
"fullname": "Vollständiger Name",
|
"confirm": "Bestätigen",
|
||||||
"mail_addresses": "E-Mail Adressen",
|
"current_password": "Aktuelles Passwort",
|
||||||
"mail_forward": "E-Mail Weiterleitung",
|
"edit": "Bearbeiten",
|
||||||
"new_mail": "neuemail@meinedomain.org",
|
"footerlink_administration": "Verwaltung",
|
||||||
"new_forward": "neueweiterleitung@anderedomain.org",
|
"footerlink_documentation": "Dokumentation",
|
||||||
"add_mail": "E-Mail alias hinzufügen",
|
"footerlink_edit": "Mein Profil bearbeiten",
|
||||||
"add_forward": "E-Mail Weiterleitung hinzufügen",
|
"footerlink_support": "Support",
|
||||||
"ok": "OK",
|
"fullname": "Vollständiger Name",
|
||||||
"cancel": "Abbrechen",
|
"information": "Deine Informationen",
|
||||||
"change_password": "Passwort ändern",
|
"information_updated": "Informationen wurden aktualisiert",
|
||||||
"edit": "Bearbeiten",
|
"invalid_domain": "Ungültige Domain angegeben",
|
||||||
"current_password": "Derzeitiges Passwort",
|
"invalid_mail": "Ungültige E-Mail Adresse",
|
||||||
"new_password": "Neues Passwort",
|
"invalid_mailforward": "Ungültige E-Mail Weiterleitung",
|
||||||
"confirm": "Bestätigen",
|
"logged_out": "Ausgeloggt",
|
||||||
"login": "Anmelden",
|
"login": "Anmelden",
|
||||||
"logout": "Abmelden",
|
"logout": "Abmelden",
|
||||||
"password_changed": "Passwort erfolgreich geändert",
|
"mail_addresses": "E-Mail Adressen",
|
||||||
"password_changed_error": "Beim ändern des Passworts ist ein Fehler aufgetreten",
|
"mail_already_used": "Diese E-Mail Adresse wird bereits verwendet:",
|
||||||
"password_not_match": "Die neuen Passwörter stimmen nicht überein",
|
"mail_forward": "E-Mail Weiterleitung",
|
||||||
"wrong_current_password": "Derzeitiges Passwort ist falsch",
|
"missing_required_fields": "Benötigte Felder fehlen",
|
||||||
"invalid_mail": "Ungültige E-Mail Adresse",
|
"new_forward": "neueweiterleitung@anderedomain.org",
|
||||||
"invalid_domain": "Ungültige Domain in",
|
"new_mail": "neuemail@meinedomain.org",
|
||||||
"invalid_mailforward": "Ungültige E-Mail Weiterleitungsadresse",
|
"new_password": "Neues Passwort",
|
||||||
"mail_already_used": "E-Mail Adresse wird bereits verwendet:",
|
"ok": "OK",
|
||||||
"information_updated": "Informationen wurden aktualisiert",
|
"password": "Passwort",
|
||||||
"user_saving_fail": "Beim ändern der Benutzerinformationen ist ein Fehler aufgetreten",
|
"password_changed": "Passwort erfolgreich geändert",
|
||||||
"missing_required_fields": "Benötigte Felder fehlen",
|
"password_changed_error": "Beim Ändern des Passworts ist ein Fehler aufgetreten",
|
||||||
"wrong_username_password": "Falscher Benutzername oder Passwort",
|
"password_not_match": "Die neuen Passwörter stimmen nicht überein",
|
||||||
"logged_out": "Abgemeldet",
|
"please_login": "Bitte logge dich ein, um auf diesen Inhalt zu zugreifen",
|
||||||
"please_login": "Bitte logge dich ein, um auf diesen Inhalt zu zugreifen",
|
"please_login_from_portal": "Bitte logge dich am Portal ein",
|
||||||
"please_login_from_portal": "Bitte logge dich im Portal ein",
|
"portal": "YunoHost Portal",
|
||||||
"footerlink_edit": "Mein Profil editieren",
|
"user_saving_fail": "Ein Fehler trat beim Speichern der Änderungen auf",
|
||||||
"footerlink_documentation": "Dokumentation",
|
"username": "Benutzername",
|
||||||
"footerlink_support": "Support",
|
"wrong_current_password": "Aktuelles Passwort ist falsch",
|
||||||
"footerlink_administration": "Administration"
|
"wrong_username_password": "Falscher Benutzername oder Passwort"
|
||||||
}
|
}
|
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"portal": "Portal YunoHost",
|
|
||||||
"information": "Su información ",
|
|
||||||
"username": "Nombre de usuario",
|
|
||||||
"password": "Contraseña",
|
|
||||||
"fullname": "Nombre completo",
|
|
||||||
"mail_addresses": "Direcciones de correo electrónico",
|
|
||||||
"mail_forward": "Adelante correo electrónico",
|
|
||||||
"new_mail": "nuevomail@midominio.org",
|
|
||||||
"new_forward": "nuevoadelante@miextranjerodominio.org",
|
|
||||||
"add_mail": "Añadir un alias de correo electrónico ",
|
|
||||||
"add_forward": "Añadir un adelante de correo electrónico ",
|
"add_forward": "Añadir un adelante de correo electrónico ",
|
||||||
"ok": "OK",
|
"add_mail": "Añadir un alias de correo electrónico ",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"change_password": "Cambiar la contraseña",
|
"change_password": "Cambiar la contraseña",
|
||||||
"edit": "Editar",
|
|
||||||
"current_password": "Contraseña actual",
|
|
||||||
"new_password": "Nueva contraseña",
|
|
||||||
"confirm": "Confirmar",
|
"confirm": "Confirmar",
|
||||||
|
"current_password": "Contraseña actual",
|
||||||
|
"edit": "Editar",
|
||||||
|
"footerlink_administration": "Administración",
|
||||||
|
"footerlink_documentation": "Documentación",
|
||||||
|
"footerlink_edit": "Cambiar mi perfil",
|
||||||
|
"footerlink_support": "Apoyo",
|
||||||
|
"fullname": "Nombre completo",
|
||||||
|
"information": "Su información ",
|
||||||
|
"information_updated": "Información actualizada ",
|
||||||
|
"invalid_domain": "Dominio no válido en la",
|
||||||
|
"invalid_mail": "Dirección de correo electrónico no es válido",
|
||||||
|
"invalid_mailforward": "Adelante dirección de correo electrónico no es válido",
|
||||||
|
"logged_out": "Sesión cerrada",
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"logout": "Logout",
|
"logout": "Logout",
|
||||||
|
"mail_addresses": "Direcciones de correo electrónico",
|
||||||
|
"mail_already_used": "Mail ya utilizado:",
|
||||||
|
"mail_forward": "Adelante correo electrónico",
|
||||||
|
"missing_required_fields": "Los campos necesarios están desaparecidos",
|
||||||
|
"new_forward": "nuevoadelante@miextranjerodominio.org",
|
||||||
|
"new_mail": "nuevomail@midominio.org",
|
||||||
|
"new_password": "Nueva contraseña",
|
||||||
|
"ok": "OK",
|
||||||
|
"password": "Contraseña",
|
||||||
"password_changed": "Contraseña se ha cambiado satisfactoriamente",
|
"password_changed": "Contraseña se ha cambiado satisfactoriamente",
|
||||||
"password_changed_error": "Se produjo un error en el cambio de contraseña ",
|
"password_changed_error": "Se produjo un error en el cambio de contraseña ",
|
||||||
"password_not_match": "Las nuevas contraseñas no coinciden",
|
"password_not_match": "Las nuevas contraseñas no coinciden",
|
||||||
"wrong_current_password": "La contraseña actual es incorrecto",
|
|
||||||
"invalid_mail": "Dirección de correo electrónico no es válido",
|
|
||||||
"invalid_domain": "Dominio no válido en la",
|
|
||||||
"invalid_mailforward": "Adelante dirección de correo electrónico no es válido",
|
|
||||||
"mail_already_used": "Mail ya utilizado:",
|
|
||||||
"information_updated": "Información actualizada ",
|
|
||||||
"user_saving_fail": "Se produjo un error en el ahorro de la modificación del usuario ",
|
|
||||||
"missing_required_fields": "Los campos necesarios están desaparecidos",
|
|
||||||
"wrong_username_password": "Nombre de usuario o contraseña incorrectos",
|
|
||||||
"logged_out": "Sesión cerrada",
|
|
||||||
"please_login": "Por favor, inicie sesión para acceder a este contenido",
|
"please_login": "Por favor, inicie sesión para acceder a este contenido",
|
||||||
"please_login_from_portal": "Por favor, iniciar sesión desde el portal",
|
"please_login_from_portal": "Por favor, iniciar sesión desde el portal",
|
||||||
"footerlink_edit": "Cambiar mi perfil",
|
"portal": "Portal YunoHost",
|
||||||
"footerlink_documentation": "Documentación",
|
"user_saving_fail": "Se produjo un error en el ahorro de la modificación del usuario ",
|
||||||
"footerlink_support": "Apoyo",
|
"username": "Nombre de usuario",
|
||||||
"footerlink_administration": "Administración"
|
"wrong_current_password": "La contraseña actual es incorrecto",
|
||||||
}
|
"wrong_username_password": "Nombre de usuario o contraseña incorrectos"
|
||||||
|
}
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"portal": "Portail YunoHost",
|
|
||||||
"information": "Vos informations",
|
|
||||||
"username": "Nom d'utilisateur",
|
|
||||||
"password": "Mot de passe",
|
|
||||||
"fullname": "Nom complet",
|
|
||||||
"mail_addresses": "Adresses email",
|
|
||||||
"mail_forward": "Adresses de transfert",
|
|
||||||
"new_mail": "nouvelle_adresse@domaine.org",
|
|
||||||
"new_forward": "nouveau_transfert@domainedistant.org",
|
|
||||||
"add_mail": "Ajouter une adresse email",
|
|
||||||
"add_forward": "Ajouter une adresse de transfert",
|
"add_forward": "Ajouter une adresse de transfert",
|
||||||
"ok": "Valider",
|
"add_mail": "Ajouter une adresse email",
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"change_password": "Changer de mot de passe",
|
"change_password": "Changer de mot de passe",
|
||||||
"edit": "Éditer",
|
|
||||||
"current_password": "Mot de passe actuel",
|
|
||||||
"new_password": "Nouveau mot de passe",
|
|
||||||
"confirm": "Confirmation",
|
"confirm": "Confirmation",
|
||||||
|
"current_password": "Mot de passe actuel",
|
||||||
|
"edit": "Éditer",
|
||||||
|
"footerlink_administration": "Administration",
|
||||||
|
"footerlink_documentation": "Documentation",
|
||||||
|
"footerlink_edit": "Éditer mon profil",
|
||||||
|
"footerlink_support": "Support",
|
||||||
|
"fullname": "Nom complet",
|
||||||
|
"information": "Vos informations",
|
||||||
|
"information_updated": "Informations mises à jour",
|
||||||
|
"invalid_domain": "Nom de domaine invalide dans",
|
||||||
|
"invalid_mail": "Adresse email invalide",
|
||||||
|
"invalid_mailforward": "Adresse email de transfert invalide",
|
||||||
|
"logged_out": "Déconnecté",
|
||||||
"login": "Connexion",
|
"login": "Connexion",
|
||||||
"logout": "Déconnexion",
|
"logout": "Déconnexion",
|
||||||
|
"mail_addresses": "Adresses email",
|
||||||
|
"mail_already_used": "Adresse déjà utilisée :",
|
||||||
|
"mail_forward": "Adresses de transfert",
|
||||||
|
"missing_required_fields": "Champs requis manquants",
|
||||||
|
"new_forward": "nouveau_transfert@domainedistant.org",
|
||||||
|
"new_mail": "nouvelle_adresse@domaine.org",
|
||||||
|
"new_password": "Nouveau mot de passe",
|
||||||
|
"ok": "Valider",
|
||||||
|
"password": "Mot de passe",
|
||||||
"password_changed": "Mot de passe modifié",
|
"password_changed": "Mot de passe modifié",
|
||||||
"password_changed_error": "Une erreur s'est produite lors du changement de mot de passe",
|
"password_changed_error": "Une erreur s'est produite lors du changement de mot de passe",
|
||||||
"password_not_match": "Les nouveaux mots de passe ne correspondent pas",
|
"password_not_match": "Les nouveaux mots de passe ne correspondent pas",
|
||||||
"wrong_current_password": "Le mot de passe actuel est incorrect",
|
|
||||||
"invalid_mail": "Adresse email invalide",
|
|
||||||
"invalid_domain": "Nom de domaine invalide dans",
|
|
||||||
"invalid_mailforward": "Adresse email de transfert invalide",
|
|
||||||
"mail_already_used": "Adresse déjà utilisée :",
|
|
||||||
"information_updated": "Informations mises à jour",
|
|
||||||
"user_saving_fail": "Une erreur s'est produite lors de la modification des informations",
|
|
||||||
"missing_required_fields": "Champs requis manquants",
|
|
||||||
"wrong_username_password": "Nom d'utilisateur ou mot de passe incorrect",
|
|
||||||
"logged_out": "Déconnecté",
|
|
||||||
"please_login": "Veuillez vous identifier pour accéder à cette page",
|
"please_login": "Veuillez vous identifier pour accéder à cette page",
|
||||||
"please_login_from_portal": "Veuillez vous identifiez depuis le portail",
|
"please_login_from_portal": "Veuillez vous identifiez depuis le portail",
|
||||||
"footerlink_edit": "Éditer mon profil",
|
"portal": "Portail YunoHost",
|
||||||
"footerlink_documentation": "Documentation",
|
"user_saving_fail": "Une erreur s'est produite lors de la modification des informations",
|
||||||
"footerlink_support": "Support",
|
"username": "Nom d'utilisateur",
|
||||||
"footerlink_administration": "Administration"
|
"wrong_current_password": "Le mot de passe actuel est incorrect",
|
||||||
|
"wrong_username_password": "Nom d'utilisateur ou mot de passe incorrect"
|
||||||
}
|
}
|
||||||
|
|
41
portal/locales/it.json
Normal file
41
portal/locales/it.json
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"add_forward": "Aggiungi un inoltro email",
|
||||||
|
"add_mail": "Aggiungi un alias email",
|
||||||
|
"cancel": "Annulla",
|
||||||
|
"change_password": "Cambia password",
|
||||||
|
"confirm": "Conferma",
|
||||||
|
"current_password": "Password attuale",
|
||||||
|
"edit": "Modifica",
|
||||||
|
"footerlink_administration": "Amministrazione",
|
||||||
|
"footerlink_documentation": "Documentazione",
|
||||||
|
"footerlink_edit": "Modifica il mio profilo",
|
||||||
|
"footerlink_support": "Supporto",
|
||||||
|
"fullname": "Nome completo",
|
||||||
|
"information": "Le tue informazioni",
|
||||||
|
"information_updated": "Informazioni aggiornate",
|
||||||
|
"invalid_domain": "Dominio non valido",
|
||||||
|
"invalid_mail": "Indirizzo email non valido",
|
||||||
|
"invalid_mailforward": "Indirizzo di inoltro email non valido",
|
||||||
|
"logged_out": "Uscita effettuata",
|
||||||
|
"login": "Accedi",
|
||||||
|
"logout": "Esci",
|
||||||
|
"mail_addresses": "Indirizzo email",
|
||||||
|
"mail_already_used": "Indirizzo email già utilizzato:",
|
||||||
|
"mail_forward": "Email di inoltro",
|
||||||
|
"missing_required_fields": "Campi obbligatori non compilati",
|
||||||
|
"new_forward": "nuovoinoltro@miodominiodifferente.org",
|
||||||
|
"new_mail": "nuovaemail@miodominio.org",
|
||||||
|
"new_password": "Nuova password",
|
||||||
|
"ok": "OK",
|
||||||
|
"password": "Password",
|
||||||
|
"password_changed": "Password cambiata con successo",
|
||||||
|
"password_changed_error": "Si è verificato un errore durante il cambio password",
|
||||||
|
"password_not_match": "Le nuove password non corrispondono",
|
||||||
|
"please_login": "Per favore, accedi per visualizzare il contenuto",
|
||||||
|
"please_login_from_portal": "Per favore, accedi dal portale",
|
||||||
|
"portal": "Portale YunoHost",
|
||||||
|
"user_saving_fail": "Si è verificato un errore durante il salvataggio delle modifiche dell'utente",
|
||||||
|
"username": "Nome utente",
|
||||||
|
"wrong_current_password": "La password attuale è sbagliata",
|
||||||
|
"wrong_username_password": "Nome utente o password sbagliati"
|
||||||
|
}
|
41
portal/locales/nl.json
Normal file
41
portal/locales/nl.json
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"add_forward": "Voeg een email forward toe",
|
||||||
|
"add_mail": "Voeg een emailalias toe",
|
||||||
|
"cancel": "Annuleren",
|
||||||
|
"change_password": "Verander wachtwoord",
|
||||||
|
"confirm": "Bevestigen",
|
||||||
|
"current_password": "Huidig wachtwoord",
|
||||||
|
"edit": "Bewerken",
|
||||||
|
"footerlink_administration": "Administratie",
|
||||||
|
"footerlink_documentation": "Documentatie",
|
||||||
|
"footerlink_edit": "Bewerk mijn profiel",
|
||||||
|
"footerlink_support": "Ondersteuning",
|
||||||
|
"fullname": "Volledige naam",
|
||||||
|
"information": "Uw informatie",
|
||||||
|
"information_updated": "Informatie bijgewerkt",
|
||||||
|
"invalid_domain": "Ongeldig domein",
|
||||||
|
"invalid_mail": "Ongeldig emailadres",
|
||||||
|
"invalid_mailforward": "Ongeldig email-forward adres ",
|
||||||
|
"logged_out": "Uitgelogd ",
|
||||||
|
"login": "Inloggen",
|
||||||
|
"logout": "Uitloggen",
|
||||||
|
"mail_addresses": "Emailadressen",
|
||||||
|
"mail_already_used": "Emailadres al gebruikt:",
|
||||||
|
"mail_forward": "Email forward",
|
||||||
|
"missing_required_fields": "Verplichte velden zijn niet ingevuld",
|
||||||
|
"new_forward": "nieuwe_forward@mijndomein.org",
|
||||||
|
"new_mail": "nieuwe_email@mijndomein.org",
|
||||||
|
"new_password": "Nieuw wachtwoord",
|
||||||
|
"ok": "Ok",
|
||||||
|
"password": "Wachtwoord",
|
||||||
|
"password_changed": "Wachtwoord successvol verandert",
|
||||||
|
"password_changed_error": "Er is een fout opgetreden bij het veranderen van het wachtwoord",
|
||||||
|
"password_not_match": "Nieuwe wachtwoorden zijn niet gelijk",
|
||||||
|
"please_login": "Log in om toegang te krijgen tot deze inhoud",
|
||||||
|
"please_login_from_portal": "Log in vanaf het portaal",
|
||||||
|
"portal": "YunoHost Portaal",
|
||||||
|
"user_saving_fail": "Er is een fout opgetreden bij het opslaan van wijzigingen aan gebruiker",
|
||||||
|
"username": "Gebruikersnaam",
|
||||||
|
"wrong_current_password": "Huidig wachtwoord is verkeerd",
|
||||||
|
"wrong_username_password": "Verkeerde gebruikersnaam of wachtwoord"
|
||||||
|
}
|
|
@ -1,29 +1,29 @@
|
||||||
{
|
{
|
||||||
"portal": "YunoHost Portal",
|
|
||||||
"information": "Your information",
|
|
||||||
"username": "Nazwa użytkownika",
|
|
||||||
"password": "Hasło",
|
|
||||||
"fullname": "Imię i nazwisko",
|
|
||||||
"mail_addresses": "Adresy E-mail",
|
|
||||||
"new_mail": "nowymail@domena.org",
|
|
||||||
"new_forward": "newforward@myforeigndomain.org",
|
|
||||||
"add_mail": "Dodaj dodatkowy email",
|
"add_mail": "Dodaj dodatkowy email",
|
||||||
"ok": "Akceptuj",
|
|
||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
"change_password": "Zmień hasło",
|
"change_password": "Zmień hasło",
|
||||||
"edit": "Edytuj",
|
|
||||||
"current_password": "Aktualne hasło",
|
|
||||||
"new_password": "Nowe hasło",
|
|
||||||
"confirm": "Potwierdź",
|
"confirm": "Potwierdź",
|
||||||
|
"current_password": "Aktualne hasło",
|
||||||
|
"edit": "Edytuj",
|
||||||
|
"footerlink_administration": "Panel administracyjny",
|
||||||
|
"footerlink_documentation": "Dokumentacja",
|
||||||
|
"footerlink_edit": "Edytuj mój profil",
|
||||||
|
"footerlink_support": "Pomoc techniczna",
|
||||||
|
"fullname": "Imię i nazwisko",
|
||||||
|
"information": "Your information",
|
||||||
|
"logged_out": "Wylogowany",
|
||||||
"login": "Zaloguj",
|
"login": "Zaloguj",
|
||||||
"logout": "Wyloguj",
|
"logout": "Wyloguj",
|
||||||
"password_changed": "Hasło zmienione",
|
"mail_addresses": "Adresy E-mail",
|
||||||
"mail_already_used": "Ten adres e-mail aktualnie w użyciu:",
|
"mail_already_used": "Ten adres e-mail aktualnie w użyciu:",
|
||||||
"wrong_username_password": "Zła nazwa użytkownika lub hasło",
|
"new_forward": "newforward@myforeigndomain.org",
|
||||||
"logged_out": "Wylogowany",
|
"new_mail": "nowymail@domena.org",
|
||||||
|
"new_password": "Nowe hasło",
|
||||||
|
"ok": "Akceptuj",
|
||||||
|
"password": "Hasło",
|
||||||
|
"password_changed": "Hasło zmienione",
|
||||||
"please_login": "Proszę się zalogować by uzyskać dostęp do tej strony",
|
"please_login": "Proszę się zalogować by uzyskać dostęp do tej strony",
|
||||||
"footerlink_edit": "Edytuj mój profil",
|
"portal": "YunoHost Portal",
|
||||||
"footerlink_documentation": "Dokumentacja",
|
"username": "Nazwa użytkownika",
|
||||||
"footerlink_support": "Pomoc techniczna",
|
"wrong_username_password": "Zła nazwa użytkownika lub hasło"
|
||||||
"footerlink_administration": "Panel administracyjny"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"portal": "Portal YunoHost",
|
"add_forward": "Adicionar reencaminhamento de mensagem",
|
||||||
"information": "Informação pessoal",
|
"add_mail": "Adicionar nova etiqueta a mensagens",
|
||||||
"username": "Nome de utilizador",
|
"cancel": "Cancelar",
|
||||||
"password": "Senha",
|
"change_password": "Alterar senha",
|
||||||
"fullname": "Nome completo",
|
"confirm": "Confirmar",
|
||||||
"mail_addresses": "Correio eletrónico",
|
"current_password": "Senha atual",
|
||||||
"mail_forward": "Reencaminhar mensagem",
|
"edit": "Editar",
|
||||||
"new_mail": "novomail@meudominio.org",
|
"footerlink_administration": "Administração",
|
||||||
"new_forward": "novoreenvio@dominioexterno.org",
|
"footerlink_documentation": "Documentação",
|
||||||
"add_mail": "Adicionar nova etiqueta a mensagens",
|
"footerlink_edit": "Editar o meu perfil",
|
||||||
"add_forward": "Adicionar reencaminhamento de mensagem",
|
"footerlink_support": "Suporte",
|
||||||
"ok": "Confirmar",
|
"fullname": "Nome completo",
|
||||||
"cancel": "Cancelar",
|
"information": "Informação pessoal",
|
||||||
"change_password": "Alterar senha",
|
"information_updated": "Informação atualizada",
|
||||||
"edit": "Editar",
|
"invalid_domain": "Domínio inválido em",
|
||||||
"current_password": "Senha atual",
|
"invalid_mail": "Endereço de correio inválido",
|
||||||
"new_password": "Nova senha",
|
"invalid_mailforward": "Endereço de correio para reencaminhamento inválido",
|
||||||
"confirm": "Confirmar",
|
"logged_out": "Sessão terminada",
|
||||||
"login": "Iniciar sessão",
|
"login": "Iniciar sessão",
|
||||||
"logout": "Terminar sessão",
|
"logout": "Terminar sessão",
|
||||||
"password_changed": "Senha alterada com êxito",
|
"mail_addresses": "Correio eletrónico",
|
||||||
"password_changed_error": "Ocorreu um erro durante a alteração da senha",
|
"mail_already_used": "O endereço de correio já está utilizado.",
|
||||||
"password_not_match": "As senhas novas não coincidem",
|
"mail_forward": "Reencaminhar mensagem",
|
||||||
"wrong_current_password": "Senha atual está errada",
|
"missing_required_fields": "Campos obrigatórios em falta",
|
||||||
"invalid_mail": "Endereço de correio inválido",
|
"new_forward": "novoreenvio@dominioexterno.org",
|
||||||
"invalid_domain": "Domínio inválido em",
|
"new_mail": "novomail@meudominio.org",
|
||||||
"invalid_mailforward": "Endereço de correio para reencaminhamento inválido",
|
"new_password": "Nova senha",
|
||||||
"mail_already_used": "O endereço de correio já está utilizado.",
|
"ok": "Confirmar",
|
||||||
"information_updated": "Informação atualizada",
|
"password": "Senha",
|
||||||
"user_saving_fail": "Ocorreu um erro ao guardar as modificações do utilizador.",
|
"password_changed": "Senha alterada com êxito",
|
||||||
"missing_required_fields": "Campos obrigatórios em falta",
|
"password_changed_error": "Ocorreu um erro durante a alteração da senha",
|
||||||
"wrong_username_password": "Nome de utilizador e senha errados",
|
"password_not_match": "As senhas novas não coincidem",
|
||||||
"logged_out": "Ligação terminada",
|
"please_login": "Por favor inicie sessão para aceder a este conteúdo",
|
||||||
"please_login": "Por favor inicie sessão para aceder a este conteúdo",
|
"please_login_from_portal": "Por favor inicie sessão no portal",
|
||||||
"please_login_from_portal": "Por favor inicie sessão no portal",
|
"portal": "Portal YunoHost",
|
||||||
"footerlink_edit": "Editar o meu perfil",
|
"user_saving_fail": "Ocorreu um erro ao guardar as modificações do utilizador.",
|
||||||
"footerlink_documentation": "Documentação",
|
"username": "Nome de utilizador",
|
||||||
"footerlink_support": "Suporte",
|
"wrong_current_password": "Senha atual está errada",
|
||||||
"footerlink_administration": "Administração"
|
"wrong_username_password": "Nome de utilizador e senha errados"
|
||||||
}
|
}
|
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"portal": "YunoHost Portalı",
|
|
||||||
"information": "Bilgileriniz",
|
|
||||||
"username": "Kullanıcı adı",
|
|
||||||
"password": "Parola",
|
|
||||||
"fullname": "İsim",
|
|
||||||
"mail_addresses": "E-posta adresleri",
|
|
||||||
"mail_forward": "E-posta yönlendirme",
|
|
||||||
"new_mail": "newmail@mydomain.org",
|
|
||||||
"new_forward": "newforward@myforeigndomain.org",
|
|
||||||
"add_mail": "E-posta alias'ı ekle",
|
|
||||||
"add_forward": "E-posta yönlendirmesi ekle",
|
"add_forward": "E-posta yönlendirmesi ekle",
|
||||||
"ok": "Tamam",
|
"add_mail": "E-posta alias'ı ekle",
|
||||||
"cancel": "İptal",
|
"cancel": "İptal",
|
||||||
"change_password": "Parolayı değiştir",
|
"change_password": "Parolayı değiştir",
|
||||||
"edit": "Düzenle",
|
|
||||||
"current_password": "Mevcut parola",
|
|
||||||
"new_password": "Yeni parola",
|
|
||||||
"confirm": "Onayla",
|
"confirm": "Onayla",
|
||||||
|
"current_password": "Mevcut parola",
|
||||||
|
"edit": "Düzenle",
|
||||||
|
"footerlink_administration": "Yönetim",
|
||||||
|
"footerlink_documentation": "Belgelendirme",
|
||||||
|
"footerlink_edit": "Profilimi düzenle",
|
||||||
|
"footerlink_support": "Destek",
|
||||||
|
"fullname": "İsim",
|
||||||
|
"information": "Bilgileriniz",
|
||||||
|
"information_updated": "Bilgileriniz güncellendi",
|
||||||
|
"invalid_domain": "Geçersiz domain",
|
||||||
|
"invalid_mail": "Geçersiz e-posta adresi",
|
||||||
|
"invalid_mailforward": "Geçersiz e-posta yönlendirme adresi",
|
||||||
|
"logged_out": "Çıkış yapıldı",
|
||||||
"login": "Giriş yap",
|
"login": "Giriş yap",
|
||||||
"logout": "Çıkış yap",
|
"logout": "Çıkış yap",
|
||||||
|
"mail_addresses": "E-posta adresleri",
|
||||||
|
"mail_already_used": "Mail adresi zaten kullanılıyor",
|
||||||
|
"mail_forward": "E-posta yönlendirme",
|
||||||
|
"missing_required_fields": "Gerekli alanlar eksik",
|
||||||
|
"new_forward": "newforward@myforeigndomain.org",
|
||||||
|
"new_mail": "newmail@mydomain.org",
|
||||||
|
"new_password": "Yeni parola",
|
||||||
|
"ok": "Tamam",
|
||||||
|
"password": "Parola",
|
||||||
"password_changed": "Parola başarıyla değiştirildi",
|
"password_changed": "Parola başarıyla değiştirildi",
|
||||||
"password_changed_error": "Parola değiştirirken hata oluştu",
|
"password_changed_error": "Parola değiştirirken hata oluştu",
|
||||||
"password_not_match": "Parolalar uyuşmuyor",
|
"password_not_match": "Parolalar uyuşmuyor",
|
||||||
"wrong_current_password": "Mevcut parola yanlış",
|
|
||||||
"invalid_mail": "Geçersiz e-posta adresi",
|
|
||||||
"invalid_domain": "Geçersiz domain",
|
|
||||||
"invalid_mailforward": "Geçersiz e-posta yönlendirme adresi",
|
|
||||||
"mail_already_used": "Mail adresi zaten kullanılıyor",
|
|
||||||
"information_updated": "Bilgileriniz güncellendi",
|
|
||||||
"user_saving_fail": "Değişiklikler kaydedilirken hata oluştu",
|
|
||||||
"missing_required_fields": "Gerekli alanlar eksik",
|
|
||||||
"wrong_username_password": "Yanlış kullanıcı adı veya parola",
|
|
||||||
"logged_out": "Çıkış yapıldı",
|
|
||||||
"please_login": "Bu içeriğe erişmek için lütfen giriş yapınız",
|
"please_login": "Bu içeriğe erişmek için lütfen giriş yapınız",
|
||||||
"please_login_from_portal": "Lütfen portaldan giriş yapınız",
|
"please_login_from_portal": "Lütfen portaldan giriş yapınız",
|
||||||
"footerlink_edit": "Profilimi düzenle",
|
"portal": "YunoHost Portalı",
|
||||||
"footerlink_documentation": "Belgelendirme",
|
"user_saving_fail": "Değişiklikler kaydedilirken hata oluştu",
|
||||||
"footerlink_support": "Destek",
|
"username": "Kullanıcı adı",
|
||||||
"footerlink_administration": "Yönetim"
|
"wrong_current_password": "Mevcut parola yanlış",
|
||||||
}
|
"wrong_username_password": "Yanlış kullanıcı adı veya parola"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue