Skip to content

Commit

Permalink
CI updates + biometric authenticator
Browse files Browse the repository at this point in the history
  • Loading branch information
mjfelis committed Jan 21, 2024
1 parent e099d5a commit 81748f7
Show file tree
Hide file tree
Showing 46 changed files with 2,937 additions and 10 deletions.
40 changes: 40 additions & 0 deletions containers/biometric-authenticator/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
release.properties
.flattened-pom.xml

# Eclipse
.project
.classpath
.settings/
bin/

# IntelliJ
.idea
*.ipr
*.iml
*.iws

# NetBeans
nb-configuration.xml

# Visual Studio Code
.vscode
.factorypath

# OSX
.DS_Store

# Vim
*.swp
*.swo

# patch
*.orig
*.rej

# Local environment
.env
1 change: 1 addition & 0 deletions containers/biometric-authenticator/.mvn/wrapper/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
maven-wrapper.jar
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;

public class MavenWrapperDownloader
{
private static final String WRAPPER_VERSION = "3.1.1";

/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL =
"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/" + WRAPPER_VERSION
+ "/maven-wrapper-" + WRAPPER_VERSION + ".jar";

/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use instead of the
* default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH = ".mvn/wrapper/maven-wrapper.properties";

/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar";

/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

public static void main( String args[] )
{
System.out.println( "- Downloader started" );
File baseDirectory = new File( args[0] );
System.out.println( "- Using base directory: " + baseDirectory.getAbsolutePath() );

// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File( baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH );
String url = DEFAULT_DOWNLOAD_URL;
if ( mavenWrapperPropertyFile.exists() )
{
FileInputStream mavenWrapperPropertyFileInputStream = null;
try
{
mavenWrapperPropertyFileInputStream = new FileInputStream( mavenWrapperPropertyFile );
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load( mavenWrapperPropertyFileInputStream );
url = mavenWrapperProperties.getProperty( PROPERTY_NAME_WRAPPER_URL, url );
}
catch ( IOException e )
{
System.out.println( "- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'" );
}
finally
{
try
{
if ( mavenWrapperPropertyFileInputStream != null )
{
mavenWrapperPropertyFileInputStream.close();
}
}
catch ( IOException e )
{
// Ignore ...
}
}
}
System.out.println( "- Downloading from: " + url );

File outputFile = new File( baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH );
if ( !outputFile.getParentFile().exists() )
{
if ( !outputFile.getParentFile().mkdirs() )
{
System.out.println( "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath()
+ "'" );
}
}
System.out.println( "- Downloading to: " + outputFile.getAbsolutePath() );
try
{
downloadFileFromURL( url, outputFile );
System.out.println( "Done" );
System.exit( 0 );
}
catch ( Throwable e )
{
System.out.println( "- Error downloading" );
e.printStackTrace();
System.exit( 1 );
}
}

private static void downloadFileFromURL( String urlString, File destination )
throws Exception
{
if ( System.getenv( "MVNW_USERNAME" ) != null && System.getenv( "MVNW_PASSWORD" ) != null )
{
String username = System.getenv( "MVNW_USERNAME" );
char[] password = System.getenv( "MVNW_PASSWORD" ).toCharArray();
Authenticator.setDefault( new Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication( username, password );
}
} );
}
URL website = new URL( urlString );
ReadableByteChannel rbc;
rbc = Channels.newChannel( website.openStream() );
FileOutputStream fos = new FileOutputStream( destination );
fos.getChannel().transferFrom( rbc, 0, Long.MAX_VALUE );
fos.close();
rbc.close();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
9 changes: 9 additions & 0 deletions containers/biometric-authenticator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Auth

A example template of a conversational service (chatbot) that requests identity document presentation, and then perform a remote biometric face verification with liveness detection, by comparing the credential embed subject photo with handset user face.

## How it works

- A User scans the QR code of the service. Service will request presentation of an Identity credential.
- Service will receive the credential, extract embed photo
- User will
1 change: 1 addition & 0 deletions containers/biometric-authenticator/docker/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/afj/
78 changes: 78 additions & 0 deletions containers/biometric-authenticator/docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
version: '3.3'

services:

artemis:
image: joylife/apache-artemis:2.20.0
ports:
- "8161:8161"
- "61616:61616"
- "5672:5672"
restart: unless-stopped
environment:
- ARTEMIS_USER=quarkus
- ARTEMIS_PASSWORD=Quar2060enbPi26
# volumes:
# - /tmp/artemis/artemis-instance:/var/lib/artemis-instance
# - ./artemis/etc-override:/var/lib/artemis-instance/etc-override
networks:
- chatbot

service-agent:

image: gitlab.mobiera.com:4567/2060/2060-service-agent:dev

networks:
- chatbot
ports:
- 2600:3000
- 2601:3001
environment:
- AGENT_PUBLIC_DID=did:web:p2601.ovpndev.2060.io
- AGENT_ENDPOINT=wss://p2601.ovpndev.2060.io
- ANONCREDS_SERVICE_BASE_URL=https://p2601.ovpndev.2060.io
- AGENT_INVITATION_IMAGE_URL=https://p2603.ovpndev.2060.io/avatar.png
- AGENT_NAME=Auth Demo (mj)
- USE_CORS=true
- EVENTS_BASE_URL=https://p2603.ovpndev.2060.io
volumes:
- /tmp/afj:/root/.afj

postgres:
image: postgres:15.2
networks:
- chatbot
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=2060demo
- POSTGRES_USER=gaia
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- /tmp/postgresql:/var/lib/postgresql/data

datastore:
image: gitlab.mobiera.com:4567/2060/2060-data-store:dev
ports:
- "2604:2604"
restart: unless-stopped
environment:
- DEBUG=1
- QUARKUS_HTTP_PORT=2604
- IO_TWENTYSIXTY_DATASTORE_TMP_DIR=/tmp/data/tmp
- IO_TWENTYSIXTY_DATASTORE_TMP_LIFETIMEDAYS=5
- IO_TWENTYSIXTY_DATASTORE_REPO_LIFETIMEDAYS=43800
- IO_TWENTYSIXTY_DATASTORE_REPO_FS_DIR=/tmp/data/repo
- IO_TWENTYSIXTY_DATASTORE_MEDIA_MAXCHUNKS=128
volumes:
- /tmp/data:/tmp/data
networks:
- "chatbot"


networks:
chatbot:
ipam:
driver: default
config:
- subnet: 172.28.0.0/27
Loading

0 comments on commit 81748f7

Please sign in to comment.