Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit 21b1c48

Browse files
Merge from experimental into master (#43)
v0.2.0-pre-alpha
2 parents 4db22ef + 16dfdf0 commit 21b1c48

25 files changed

Lines changed: 3201 additions & 497 deletions

.github/workflows/docker.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Docker Build
2+
3+
on:
4+
push:
5+
branches: [master, experimental]
6+
7+
env:
8+
DOCKER_PLATFORMS: linux/amd64 #linux/arm/v7,linux/arm64/v8,linux/s390x,linux/ppc64le
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v2
16+
17+
- name: Set up Docker Buildx
18+
uses: crazy-max/ghaction-docker-buildx@v3
19+
20+
- name: Cache Docker layers
21+
uses: actions/cache@v2
22+
with:
23+
path: /tmp/.buildx-cache
24+
key: ${{ runner.os }}-buildx-${{ github.sha }}
25+
restore-keys: |
26+
${{ runner.os }}-buildx-
27+
- name: Create Version
28+
id: prepare
29+
run: |
30+
VERSION=edge
31+
if [[ ${GITHUB_REF#refs/heads/} == master ]]; then
32+
VERSION=latest
33+
elif [[ ${GITHUB_REF#refs/heads/} == experimental ]]; then
34+
VERSION=experimental
35+
fi
36+
IMAGE_NAME=crypticcp/cryptic-network
37+
TAGS="--tag $IMAGE_NAME:${VERSION}"
38+
echo ::set-output name=version::$VERSION
39+
echo ::set-output name=image_name::$IMAGE_NAME
40+
echo ::set-output name=buildx_args::--platform $DOCKER_PLATFORMS \
41+
--build-arg VERSION=$VERSION \
42+
--build-arg SERVICE_NAME=${{ matrix.service }} \
43+
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
44+
--build-arg VCS_REF=${GITHUB_SHA::8} \
45+
${TAGS} --file ./Dockerfile ./
46+
- name: Docker Buildx (build)
47+
run: docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
48+
49+
- name: Log into registry
50+
run: echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
51+
52+
- name: Docker Buildx (push)
53+
run: docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
54+
55+
- name: Docker Check Manifest
56+
run: docker run --rm mplatform/mquery ${{ steps.prepare.outputs.image_name }}:${{ steps.prepare.outputs.version }}
57+
58+
- name: Clear
59+
if: always()
60+
run: rm -f ${HOME}/.docker/config.json

.github/workflows/network.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Cryptic Network MicroService
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- uses: actions/checkout@v1
12+
- name: Set up JDK 11
13+
uses: actions/setup-java@v1
14+
with:
15+
java-version: 11
16+
- name: Build with Maven
17+
run: mvn clean validate compile

Dockerfile

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1-
FROM maven:3.6.0-jdk-8-alpine
1+
FROM maven:3.6.3-adoptopenjdk-11 AS builder
22

33
WORKDIR /app
4+
COPY . /app/
5+
RUN mvn clean install
46

5-
ADD . /app/
7+
FROM adoptopenjdk/openjdk11:alpine-jre
68

7-
RUN mvn clean install
9+
ENV CRYPTIC_HOME /opt/cryptic
10+
ENV DATA_DIR /data
11+
12+
RUN set -o errexit -o nounset \
13+
&& mkdir -p ${DATA_DIR} \
14+
15+
WORKDIR ${DATA_DIR}
16+
COPY --from=builder /app/target/network-0.2.0-jar-with-dependencies.jar ${CRYPTIC_HOME}/network.jar
817

9-
CMD java -jar target/network-0.0.2-SNAPSHOT-jar-with-dependencies.jar
18+
ENTRYPOINT ["java", "-jar", "/opt/cryptic/network.jar"]

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# cryptic-network
22
The network microservice of cryptic-game
3-
3+
44
## Docker-Hub
55

6-
This microservice is online on docker-hub (https://hub.docker.com/r/useto/cryptic-network/).
6+
This microservice is online on docker-hub (https://hub.docker.com/r/crypticcp/cryptic-network/).
77

88
## API
99

pom.xml

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>net.cryptic_game.microservice</groupId>
77
<artifactId>network</artifactId>
8-
<version>0.0.2-SNAPSHOT</version>
8+
<version>0.2.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>cryptic-game-network</name>
@@ -16,7 +16,7 @@
1616
<plugins>
1717
<plugin>
1818
<artifactId>maven-assembly-plugin</artifactId>
19-
<version>3.1.0</version>
19+
<version>3.3.0</version>
2020
<configuration>
2121
<archive>
2222
<manifest>
@@ -40,12 +40,17 @@
4040
<plugin>
4141
<groupId>org.apache.maven.plugins</groupId>
4242
<artifactId>maven-compiler-plugin</artifactId>
43-
<version>3.8.0</version>
43+
<version>3.8.1</version>
4444
<configuration>
45-
<source>1.8</source>
46-
<target>1.8</target>
45+
<source>11</source>
46+
<target>11</target>
4747
</configuration>
4848
</plugin>
49+
<plugin>
50+
<groupId>org.apache.maven.plugins</groupId>
51+
<artifactId>maven-surefire-plugin</artifactId>
52+
<version>2.22.2</version>
53+
</plugin>
4954
</plugins>
5055
</build>
5156

@@ -55,21 +60,32 @@
5560

5661
<repositories>
5762
<repository>
58-
<id>jitpack.io</id>
59-
<url>https://jitpack.io</url>
63+
<snapshots>
64+
<enabled>false</enabled>
65+
</snapshots>
66+
<id>bintray-jannikemmerich-cryptic</id>
67+
<name>bintray</name>
68+
<url>https://dl.bintray.com/jannikemmerich/cryptic</url>
6069
</repository>
6170
</repositories>
6271

6372
<dependencies>
6473
<dependency>
65-
<groupId>org.slf4j</groupId>
66-
<artifactId>slf4j-log4j12</artifactId>
67-
<version>1.7.26</version>
74+
<groupId>org.powermock</groupId>
75+
<artifactId>powermock-module-junit4</artifactId>
76+
<version>2.0.2</version>
77+
<scope>test</scope>
78+
</dependency>
79+
<dependency>
80+
<groupId>org.powermock</groupId>
81+
<artifactId>powermock-api-mockito2</artifactId>
82+
<version>2.0.2</version>
83+
<scope>test</scope>
6884
</dependency>
6985
<dependency>
70-
<groupId>com.github.cryptic-game</groupId>
86+
<groupId>net.cryptic-game</groupId>
7187
<artifactId>java-lib</artifactId>
72-
<version>-a517b1d24b-1</version>
88+
<version>0.2.0</version>
7389
</dependency>
7490
</dependencies>
7591
</project>

sonar-project.properties

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
sonar.organization=cryptic-game
2+
sonar.projectKey=cryptic-game_cryptic-network
3+
sonar.projectName=cryptic-game-network
4+
sonar.projectVersion=1.0
5+
sonar.sources=src/main/java/
6+
sonar.java.binaries=target/classes/
7+
sonar.cpd.exclusions=src/main/java/net/cryptic_game/microservice/network/endpoint/NetworkOwnerEndpoint.java
8+
sonar.coverage.exclusions=src/test/*,src/main/java/net/cryptic_game/microservice/network/App.java

sonar-scanner.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
export SONAR_SCANNER_VERSION=4.0.0.1744
4+
export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux
5+
rm -rf $SONAR_SCANNER_HOME
6+
mkdir -p $SONAR_SCANNER_HOME
7+
curl -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
8+
unzip $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
9+
rm $HOME/.sonar/sonar-scanner.zip
10+
export PATH=$SONAR_SCANNER_HOME/bin:$PATH
11+
export SONAR_SCANNER_OPTS="-server"
12+
13+
sonar-scanner -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package net.cryptic_game.microservice.network;
22

3-
import org.apache.log4j.BasicConfigurator;
4-
53
import net.cryptic_game.microservice.MicroService;
64

75
public class App extends MicroService {
86

9-
public App() {
10-
super("network");
11-
}
12-
13-
public static void main(String[] args) {
14-
BasicConfigurator.configure();
7+
private App() {
8+
super("network");
9+
}
1510

16-
new App();
17-
}
11+
public static void main(String[] args) {
12+
new App();
13+
}
1814

1915
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package net.cryptic_game.microservice.network;
2+
3+
public enum Error {
4+
5+
ERROR_DEVICE_NOT_ONLINE("device_not_online");
6+
7+
final String name;
8+
9+
Error(final String name) {
10+
this.name = name;
11+
}
12+
13+
@Override
14+
public String toString() {
15+
return this.name;
16+
}
17+
}
Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,52 @@
11
package net.cryptic_game.microservice.network.communication;
22

33
import net.cryptic_game.microservice.MicroService;
4-
import net.cryptic_game.microservice.utils.JSONUtils;
4+
import net.cryptic_game.microservice.utils.JSON;
5+
import net.cryptic_game.microservice.utils.JSONBuilder;
56
import org.json.simple.JSONObject;
67

78
import java.util.UUID;
89

10+
import static net.cryptic_game.microservice.utils.JSONBuilder.simple;
11+
912
public class Device {
1013

11-
private static boolean isOwner(UUID device, UUID user) {
12-
JSONObject result = MicroService.getInstance().contactMicroservice("device", new String[] { "owner" },
13-
JSONUtils.simple("device_uuid", device.toString()));
14+
private static boolean isOwner(UUID device, UUID user) {
15+
JSON result = new JSON(MicroService.getInstance().contactMicroService("device", new String[]{"owner"},
16+
simple("device_uuid", device.toString())));
17+
18+
UUID owner = result.getUUID("owner");
19+
20+
return owner != null && owner.equals(user);
21+
}
22+
23+
private static boolean isPartOwner(UUID device, UUID user) {
24+
JSON result = new JSON(MicroService.getInstance().contactMicroService("service", new String[]{"check_part_owner"},
25+
JSONBuilder.anJSON().add("device_uuid", device.toString()).add("user_uuid", user.toString()).build()));
26+
27+
Boolean ok = result.get("ok", Boolean.class);
28+
29+
return ok != null && ok;
30+
}
1431

15-
return result.containsKey("owner") && UUID.fromString((String) result.get("owner")).equals(user);
16-
}
32+
public static boolean checkPermissions(UUID device, UUID user) {
33+
return isOwner(device, user) || isPartOwner(device, user);
34+
}
1735

18-
private static boolean isPartOwner(UUID device, UUID user) {
19-
JSONObject result = MicroService.getInstance().contactMicroservice("service", new String[] { "check_part_owner" },
20-
JSONUtils.json().add("device_uuid", device.toString()).add("user_uuid", user.toString()).build());
36+
/**
37+
* Checks if a Device is online.
38+
*
39+
* @param device the {@link UUID} of the Device.
40+
* @return <code>true</code>: The Device is Online.<br><code>false</code>: The Device is Offline or can't be found.
41+
*/
42+
public static boolean isOnline(final UUID device) {
43+
final JSONObject result = MicroService.getInstance().contactMicroService("device", new String[]{"ping"},
44+
simple("device_uuid", device.toString()));
2145

22-
return result.containsKey("ok") && (boolean) result.get("ok");
23-
}
24-
25-
public static boolean checkPermissions(UUID device, UUID user) {
26-
return isOwner(device, user) || isPartOwner(device, user);
27-
}
46+
if (result.containsKey("online")) {
47+
return (boolean) result.get("online");
48+
}
2849

50+
return false;
51+
}
2952
}

0 commit comments

Comments
 (0)