Commit c600693b authored by Benoit Lavenier's avatar Benoit Lavenier
Browse files

Merge from master

parents 44c897e5 9a5ca1a6
Pipeline #13006 skipped with stage
# ---------------------------------------------------------------
# Global
# ---------------------------------------------------------------
# default image
image: node:12
# stages (main steps of pipeline)
stages:
#- build
#- alt_build
#- publish
- build
- alt_build
- deploy
fast-build:
stage: build
image: $CI_REGISTRY_IMAGE
# ---------------------------------------------------------------
# Global variables
# ---------------------------------------------------------------
variables:
CI_BUILD_IMAGE: $CI_REGISTRY_IMAGE/build:develop
# ---------------------------------------------------------------
# Jobs templates
# ---------------------------------------------------------------
.docker:
image: docker:latest
tags: [redshift]
services:
- docker:dind
before_script:
- mv /customCache/node_modules ./
- cp -rf /customCache/www ./
- cp -rf /customCache/hooks ./
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
#- docker login -u "duniterteam" -p "$DUNITERTEAM_PASSWD"
after_script:
- docker logout ${CI_REGISTRY}
#- docker logout
allow_failure: false
# ---------------------------------------------------------------
# Build jobs
# ---------------------------------------------------------------
.build:
stage: build
tags: [redshift]
script:
- node ./node_modules/gulp/bin/gulp webBuild
- yarn install
- yarn run build:web
after_script:
- ls -la dist/web/
- du -csh dist/web/
......@@ -20,51 +54,63 @@ fast-build:
paths:
- dist/web
expire_in: 60 minutes
build:
extends: .build
image: ${CI_BUILD_IMAGE}
before_script:
- mv /tmp/.build-cache/node_modules ./
only:
- master
- tags
- develop
failsafe-build:
extends: .build
stage: alt_build
when: on_failure
image: node:10
script:
- yarn
- node ./node_modules/gulp/bin/gulp config --env default
- node ./node_modules/gulp/bin/gulp webBuild
artifacts:
untracked: true
paths:
- dist/web
expire_in: 60 minutes
before_script:
- yarn global add gulp
only:
- master
- tags
docker-for-fast-build:
- develop
docker:ci:
extends: .docker
stage: alt_build
when: on_failure
allow_failure: true
tags:
- doppler-docker
image: docker:latest
services:
- docker:dind
script:
- echo 'FROM node:10' > Dockerfile
- echo 'WORKDIR /customCache' >> Dockerfile
# Create the target directory
- mkdir -p dist/ci
- cd dist/ci
# Create the Dockerfile
- echo 'FROM node:12' > Dockerfile
- echo 'WORKDIR /tmp/.build-cache' >> Dockerfile
- echo 'COPY ./ ./' >> Dockerfile
- echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"`>/before.txt' >> Dockerfile
- echo 'RUN yarn' >> Dockerfile
- echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"`>/after.txt' >> Dockerfile
# Store disk usage (before install)
- echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"` > /tmp/before.txt' >> Dockerfile
- echo 'RUN du -s `find /tmp/.cache/yarn -maxdepth 1 | egrep -v "^\.$"` >> /tmp/before.txt' >> Dockerfile
# Install dependencies
- echo 'RUN yarn global add gulp web-ext @ionic/cli' >> Dockerfile
- echo 'RUN yarn install' >> Dockerfile
# Store disk usage (after install)
- echo 'RUN du -s `find . -maxdepth 1 | egrep -v "^\.$"` > /tmp/after.txt' >> Dockerfile
- echo 'RUN du -s `find /tmp/.cache/yarn -maxdepth 1 | egrep -v "^\.$"` >> /tmp/after.txt' >> Dockerfile
# Force docker to detect any changes
- echo "RUN diff /tmp/before.txt /tmp/after.txt || true" >> Dockerfile
- echo 'WORKDIR /build' >> Dockerfile
- echo "RUN diff /before.txt /after.txt || true" >> Dockerfile
- docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
# Build and push the CI image
- docker build --no-cache -t ${CI_BUILD_IMAGE} .
- docker push ${CI_BUILD_IMAGE}
artifacts:
paths:
- dist/ci/Dockerfile
expire_in: 60 minutes
# ---------------------------------------------------------------
# Deploy jobs
# ---------------------------------------------------------------
pages:
stage: publish
image: node:10
stage: deploy
variables:
GIT_STRATEGY: none
script:
......@@ -76,8 +122,9 @@ pages:
- public
only:
- master
mirror:
stage: publish
stage: deploy
image: liaohuqiu/rsync
before_script:
- eval $(ssh-agent -s)
......@@ -94,10 +141,8 @@ mirror:
only:
- master
release-web:
stage: publish
image: node:10
release:
stage: deploy
variables:
GIT_STRATEGY: none
script:
......
FROM node:10-alpine
FROM node:12
LABEL maintainer="benoit [dot] lavenier [at] e-is [dot] pro"
LABEL version="1.6.3"
LABEL version="1.6.12"
LABEL description="Cesium Wallet for Ğ1 libre currency"
ARG CESIUM_VER="1.6.3"
ARG CESIUM_VER="1.6.12"
ENV DEBIAN_FRONTEND=noninteractive \
NODE_VERSION=10.20.0 \
NPM_VERSION=6.14.4 \
YARN_VERSION=1.22.4 \
IONIC_CLI_VERSION=6.6.0 \
CORDOVA_VERSION=8.1.2 \
GRADLE_VERSION=4.10.3 \
GULP_VERSION=3.9.1
NODE_VERSION=12.21.0 \
NPM_VERSION=7.14.0 \
YARN_VERSION=1.22.10 \
IONIC_CLI_VERSION=6.16.3 \
CORDOVA_VERSION=10.0.0 \
GRADLE_VERSION=6.5.1 \
GULP_VERSION=4.0.2
# Install basics
RUN apk update && \
......@@ -31,6 +31,8 @@ RUN yarn global add gulp@"$GULP_VERSION" @ionic/cli@"$IONIC_CLI_VERSION"
# copy source tree
COPY ./ ./
RUN test -f package.json || git clone https://github.com/duniter/cesium.git && cd cesium
# Install project dependencies
# Workaround need for node-sass (- )see https://github.com/yarnpkg/yarn/issues/4867)
RUN yarn install --ignore-engines && \
......
<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="106120" id="fr.duniter.cesium" ios-CFBundleIdentifier="org.duniter.cesium" version="1.6.12" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget android-versionCode="106130" id="fr.duniter.cesium" ios-CFBundleIdentifier="org.duniter.cesium" version="1.6.13" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Cesium</name>
<description>
An simple App for Duniter wallet
......
......@@ -15,7 +15,7 @@ if [ "_$CESIUM_DIR" = "_" ]; then
fi
latest_version() {
echo "v1.6.12" #lastest
echo "v1.6.13" #lastest
}
api_release_url() {
......
{
"name": "cesium",
"version": "1.6.12",
"version": "1.6.13",
"description": "Cesium Wallet for G1 libre currency",
"author": "Benoit Lavenier <benoit.lavenier@e-is.pro>",
"license": "AGPL-3.0",
......@@ -10,8 +10,9 @@
"url": "git@git.duniter.org:clients/cesium/cesium.git"
},
"scripts": {
"clean": "clean webClean webExtClean && trash dist/desktop/**/*.deb platforms/android/**/*.apk",
"clean": "gulp clean webClean webExtClean && rm -rf dist/web dist/android && rm -f desktop/**/cesium-*.deb desktop/**/cesium-*.exe platforms/android/**/*.apk",
"postinstall": "node scripts/node/postinstall.js",
"gulp": "gulp",
"lint": "gulp lint",
"install-platforms": "ionic cordova prepare",
"start": "ionic serve",
......@@ -221,4 +222,4 @@
"node": ">= 12.18.3",
"yarn": ">= 1.22.0"
}
}
\ No newline at end of file
}
{
"name": "Cesium",
"short_name": "Cesium",
"version": "1.6.12",
"version": "1.6.13",
"description": "Manage your Duniter Wallet on a libre currency, like Ğ1",
"background": {
"scripts": ["background.js"]
......
......@@ -2419,6 +2419,10 @@ body.demo {
height: 204px;
}
.popover.popover-login-methods.auth.scan {
height: 252px;
}
@media (max-width: $screen-xs-max) {
.popover.popover-login-methods {
height: 256px;
......
......@@ -70,14 +70,6 @@ angular.module("cesium.config", [])
"host": "g1.presles.fr",
"port": 443
},
{
"host": "g1.le-sou.org",
"port": 443
},
{
"host": "duniter.normandie-libre.fr",
"port": 443
},
{
"host": "g1.duniter.org",
"port": 443
......@@ -101,10 +93,6 @@ angular.module("cesium.config", [])
"host": "g1.data.presles.fr",
"port": 443
},
{
"host": "g1.data.le-sou.org",
"port": 443
},
{
"host": "g1.data.mithril.re",
"port": 443
......@@ -119,8 +107,8 @@ angular.module("cesium.config", [])
"defaultCountry": "France"
}
},
"version": "1.6.12",
"build": "2021-03-03T20:44:36.248Z",
"version": "1.6.13",
"build": "2021-04-26T22:09:07.231Z",
"newIssueUrl": "https://git.duniter.org/clients/cesium-grp/cesium/issues/new"
})
......
......@@ -230,14 +230,14 @@ angular.module('cesium.device.services', ['cesium.utils.services', 'cesium.setti
}
};
exports.isIOS = function() {
return !!navigator.userAgent.match(/iPhone | iPad | iPod/i) || ionic.Platform.isIOS();
};
exports.isOSX = function() {
return !!navigator.userAgent.match(/Macintosh/i) || ionic.Platform.is("osx");
};
exports.isIOS = function() {
return !!navigator.userAgent.match(/iPhone | iPad | iPod/i) || (!!navigator.userAgent.match(/Mobile/i) && !!navigator.userAgent.match(/Macintosh/i)) || ionic.Platform.isIOS();
};
exports.isDesktop = function() {
if (!angular.isDefined(cache.isDesktop)) {
try {
......@@ -269,7 +269,7 @@ angular.module('cesium.device.services', ['cesium.utils.services', 'cesium.setti
if (exports.enable){
exports.camera.enable = !!navigator.camera;
exports.keyboard.enable = cordova && cordova.plugins && !!cordova.plugins.Keyboard;
exports.barcode.enable = cordova && cordova.plugins && !!cordova.plugins.barcodeScanner && !exports.isOSX();
exports.barcode.enable = cordova && cordova.plugins && !!cordova.plugins.barcodeScanner && (!exports.isOSX() || exports.isIOS());
exports.clipboard.enable = cordova && cordova.plugins && !!cordova.plugins.clipboard;
exports.intent.enable = window && !!window.plugins.launchmyapp;
......
Licença Ğ1 - v0.2.9
===================
:data: 2017-04-04 12:59
:modificado: 2019-07-14 12:00
**Licença da moeda e compromisso de responsabilidade.**
Qualquer operação de certificação dum novo membro da Ğ1 deve ser previamente acompanhada pela transmissão desta licença da moeda Ğ1, a qual o certificador deve garantir que foi estudada, compreendida e aceite pela pessoa que será certificada.
Encoraja-se que qualquer evento de grupo relativo à Ğ1 seja acompanhado por uma transmissão desta licença, que poderá ser lida em voz alta, e transmitida por quaisquer meios.
Rede de confiança Ğ1 (RdC Ğ1)
-----------------------------
**Nota de precaução:** Certificarmos alguém não é apenas assegurar-mo-nos que encontrámos a pessoa, é assegurarmos à comunidade Ğ1 que conhecemos suficientemente bem a pessoa a certificar, de modo a conseguirmos contactar a pessoa facilmente, e de termos condições para localizar uma conta em duplicado feita pela pessoa que receberá a nossa certificação, ou outro tipo de problemas (desaparecimento da pessoa…) fazendo despistagens que eventualmente permitirão revelar um problema.
**Conselhos altamente recomendados**
Conhecermos bem uma pessoa pressupõe que seremos capazes de contactá-la por vários meios diferentes (físicos, electrónicos ou outros ...) mas também pressupõe que conhecemos várias pessoas que a conhecem tão bem quanto nós e, portanto, também serão capazes de contactá-la da mesma forma. Em particular, se não conhecermos bem nenhum dos outros certificadores dessa pessoa, há um forte indício de que não conhecemos bem essa pessoa, e uma certificação deste tipo aciona um alerta para toda a comunidade Ğ1. Em caso de conhecimento insuficiente, é fortemente aconselhável não certificarmos.
Nunca certifique alguém sozinho, mas faça-se acompanhar pelo menos por outro membro da RdC Ğ1 para evitar qualquer erro de manipulação. Em caso de erro, avise imediatamente os outros membros da RdC Ğ1.
Antes de qualquer certificação, assegure-se de verificar se a conta dessa pessoa já recebeu uma ou mais certificações (quer esteja em processo de validação ou já seja membro). Eventualmente, peça as informações para entrar em contacto com os outros certificadores, a fim de, juntos, verificarem que conhecem essa pessoa que quer abrir uma nova conta de membro, assim como a chave pública correspondente.
Verifique se o futuro certificado domina a gestão da sua conta: uma boa forma para verificar isto é transferir algumas Ğ1 da sua conta de membro para a conta dessa pessoa, e de seguida, solicitar o retorno do montante para a sua conta de membro… isso garante que o futuro certificado possui um bom domínio da sua chave privada.
Verifique que os seus contactos estudaram e compreenderam a licença Ğ1 em vigor.
Se entender que um certificador real ou potencial de uma determinada conta não conhece a pessoa afecta a essa conta, alerte imediatamente especialistas no assunto dentro dos seus conhecidos na RdC Ğ1, para que o procedimento de validação seja verificado pela RdC Ğ1.
Quando fizer parte dos membros da RdC Ğ1 e estiver prestes a certificar uma nova conta:
**Deverá assegurar-se que:**
1°) Conhece suficientemente bem (não só "de vista") a pessoa que declara gerir a chave pública em questão (nova conta). Veja os conselhos altamente recomendados acima para garantir que “conhece bem a pessoa”.
2°) Já verificou em particular com essa pessoa que a chave pública que está prestes a certificar lhe pertence realmente (veja os conselhos acima).
3°) Já verificou em particular com essa pessoa que o seu documento Duniter de revogação da conta está criado, o que lhe permitirá eventualmente desactivar o seu estatuto de membro (no caso de roubo de uma conta, de uma mudança de identificação, de uma conta criada inadvertidamente, etc).
4a°) Já se encontrou com essa pessoa fisicamente para se certificar de que é de facto a pessoa bem conhecida por si e que detém a chave pública correcta que será certificada por si.
4b°) Ou então já verificou remotamente o conjunto pessoa / chave pública ao contactar essa pessoa por vários meios de comunicação diferentes, como o correio postal + rede social + fórum + email + videoconferência + telefone (reconhecendo a sua voz). Isto porque se eventualmente for possível piratear uma conta de e-mail ou uma conta de fórum, será muito mais difícil imaginar piratear quatro meios distintos de comunicação, de imitar a aparência da pessoa (vídeo), e além disso, de imitar a voz da pessoa.
Todavia o 4a°) permanece preferencial em relação ao 4b°), enquanto os pontos 1°), 2°) e 3°) são previamente indispensáveis.
**Regras abreviadas da RdC:**
Cada membro poderá atribuir um stock de 100 certificações possíveis, e que não pode emitir a uma taxa superior a 1 certificação / cada 5 dias.
Com uma validade de 2 meses, uma certificação para um novo membro só será definitivamente adoptada se no espaço desses 2 meses o membro certificado tiver obtido pelo menos 4 outras certificações, caso contrário, o processo de entrada terá de ser iniciado de novo.
Por isso para se tornar um novo membro da RdC Ğ1, será necessário obter 5 certificações, e encontrar-se a uma distância <= 5 elos de relação com 80% dos membros referentes da RdC.
Um membro da RdC Ğ1 torna-se membro referente a partir do momento em que ele terá recebido e emitido pelo menos Y [N] certificações, em que N é o número de membros da RdC e Y [N] = limite superior de N ^ (1/5). Exemplos:
* Para 1024 <N ≤ 3125, temos Y [N] = 5
* Para 7776 <N ≤ 16807, temos Y [N] = 7
* Para 59049 <N ≤ 100.000 temos Y [N] = 10
Logo que o novo membro tome lugar na RdC Ğ1, as suas certificações permanecerão válidas durante 2 anos.
Para permanecer como membro, será necessário renovar o seu acordo regularmente com a sua chave privada (a cada 12 meses) e certificar-se de que tem sempre pelo menos 5 certificações válidas após os 2 anos iniciais.
Moeda Ğ1
--------
A Ğ1 é criada por meio de um Dividendo Universal (DU) para qualquer ser humano membro da Rede de Confiança Ğ1 e que toma a seguinte forma:
* 1 DU por pessoa por dia
**Código monetário Ğ1**
O valor em Ğ1 do DU é o mesmo a cada dia (com 1 dia = 86400 segundos) até ao dia de equinócio seguinte, onde o DU será então reavaliado de acordo com a fórmula:
* DUdiário (até ao próximo equinócio) = DUdiário (no dia de equinócio) + c² (M / N) (no dia de equinócio) / (182,625 dias)
Com os parâmetros:
* c = 4,88% / cada intervalo de tempo correspondente a um equinócio
* DU(0) = 10,00 Ğ1
E onde as variáveis são:
* *M* a massa monetária total no dia de equinócio
* *N* o número de membros no dia de equinócio
Software Ğ1 e licença Ğ1
------------------------
Os programas informáticos Ğ1 que permitem aos utilizadores a gestão de utilização da Ğ1 devem transmitir esta licença com o programa informático, assim como o conjunto de parâmetros técnicos da moeda Ğ1 e da RdC Ğ1 que estão inscritos no bloco 0 da Ğ1. O programa informático que não cumpra estas obrigações da licença não é compatível com a Ğ1.
Para melhor aprofundar os detalhes técnicos é possível consultar diretamente o código do Duniter, que é software livre, assim com consultar os dados da blockchain Ğ1, obtendo-os por meio de uma instância (ou nó) Duniter Ğ1.
Mais informações no sítio internet da equipa Duniter https://www.duniter.org
......@@ -2,7 +2,7 @@
"short_name": "Cesium",
"name": "Cesium",
"manifest_version": 1,
"version": "1.6.12",
"version": "1.6.13",
"default_locale": "fr",
"description": "Cesium Wallet for Ğ1 libre currency",
"icons": [
......
<ion-popover-view class="fit has-header popover-login-methods"
ng-class="{'auth': isAuth}">
ng-class="{'auth': isAuth, 'scan': $root.device.barcode.enable}">
<ion-header-bar>
<h1 class="title" translate>LOGIN.METHOD_POPOVER_TITLE</h1>
</ion-header-bar>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment