Skip to content

Commit 9cd2248

Browse files
lvhuichaoQIQI03
authored andcommitted
1. Add oracle data source
2. Refactor with errorPropagate utils 3. Fix token based connection serialization issue 4. Unify maven groupId for plugins 5. Refactor rest api plugin 6. Update banner 7. Rename mssqlDatasourceForm.tsx 8. Add server setup 9. Add cors support for view app related urls
1 parent e74df63 commit 9cd2248

File tree

78 files changed

+1934
-961
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1934
-961
lines changed

deploy/docker/Dockerfile

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ LABEL maintainer="openblocks"
2626
# Update APT packages - Base Layer python-setuptools
2727
RUN apt-get update && DEBIAN_FRONTEND=noninteractive \
2828
apt-get install --no-install-recommends -y \
29-
supervisor curl nginx wget netcat software-properties-common gettext python3-pip git gnupg vim iputils-ping \
29+
supervisor curl nginx wget netcat software-properties-common gettext python3-pip git gnupg vim iputils-ping gosu\
3030
&& add-apt-repository ppa:redislabs/redis \
3131
&& apt-get remove -y git python3-pip \
3232
&& apt-get clean \
@@ -67,16 +67,16 @@ ARG PLUGIN_JARS=/openblocks-server/openblocks-plugins/*/target/*.jar
6767

6868
RUN mkdir -p /openblocks /openblocks/plugins /var/www/openblocks /env2
6969

70-
COPY --from=build-server ${JAR_FILE} /openblocks/server.jar
71-
COPY --from=build-server ${PLUGIN_JARS} /openblocks/plugins/
70+
COPY --from=build-server ${JAR_FILE} /openblocks/server/server.jar
71+
COPY --from=build-server ${PLUGIN_JARS} /openblocks/server/plugins/
7272

7373

7474
# copy tace-fe build
75-
COPY --from=build-client /openblocks-client/packages/openblocks/build/ /var/www/openblocks/
75+
COPY --from=build-client /openblocks-client/packages/openblocks/build/ /openblocks/client/
7676

7777
# copy nginx conf
78-
COPY ./deploy/docker/templates/nginx/* /openblocks-nginx/
79-
COPY ./deploy/docker/scripts/start-nginx.sh /openblocks-nginx/start-nginx.sh
78+
COPY ./deploy/docker/templates/nginx/* /openblocks/nginx/
79+
COPY ./deploy/docker/scripts/start-nginx.sh /openblocks/nginx/start-nginx.sh
8080

8181
# copy redis conf
8282
COPY ./deploy/docker/templates/redis.conf /etc/redis/redis.conf
@@ -86,16 +86,15 @@ COPY ./deploy/docker/templates/supervisord.conf /etc/supervisor/supervisord.conf
8686
COPY ./deploy/docker/templates/supervisord/* /etc/supervisor/conf.d/
8787

8888
# copy application.yml
89-
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application.yml /env/
90-
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application-selfhost.yml /env2/
89+
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application.yml /openblocks/env/
90+
COPY ./server/openblocks-server/src/main/resources/selfhost/ce/application-selfhost.yml /openblocks/env2/
9191

9292
# Add bootstrapfile
93-
# COPY ./entrypoint.sh /
94-
COPY ./deploy/docker/entrypoint.sh /
95-
RUN chmod +x /entrypoint.sh
93+
COPY ./deploy/docker/entrypoint.sh /openblocks/
94+
RUN chmod +x /openblocks/entrypoint.sh
9695

9796
EXPOSE 3000
9897

99-
ENTRYPOINT [ "sh" , "/entrypoint.sh" ]
98+
ENTRYPOINT [ "sh" , "/openblocks/entrypoint.sh" ]
10099
CMD ["/usr/bin/supervisord", "-n" , "-c" , "/etc/supervisor/supervisord.conf"]
101100

deploy/docker/entrypoint.sh

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,42 @@
33
set -e
44

55
init_mongodb() {
6-
echo "Init mongoDB"
7-
MONGO_DB_PATH="/openblocks-stacks/data/mongodb"
8-
mkdir -p "$MONGO_DB_PATH"
6+
echo "Init mongoDB"
7+
MONGO_DB_PATH="/openblocks-stacks/data/mongodb"
8+
mkdir -p "$MONGO_DB_PATH"
99
}
1010

1111
init_configuration() {
12-
echo "Init configuration"
13-
CONFIG_PATH="/openblocks-stacks/configuration"
14-
YML_PATH="$CONFIG_PATH/application-selfhost.yml"
15-
if ! [ -e "$YML_PATH" ]; then
16-
echo "yml configuration not exist"
17-
mkdir -p "$CONFIG_PATH"
18-
cp /env2/application-selfhost.yml $CONFIG_PATH/
19-
fi
12+
echo "Init configuration"
13+
CONFIG_PATH="/openblocks-stacks/configuration"
14+
YML_PATH="$CONFIG_PATH/application-selfhost.yml"
15+
if ! [ -e "$YML_PATH" ]; then
16+
echo "yml configuration not exist"
17+
mkdir -p "$CONFIG_PATH"
18+
cp /openblocks/env2/application-selfhost.yml $CONFIG_PATH/
19+
fi
2020
}
2121

22-
init_mongodb
22+
add_user() {
23+
USER_ID=${LOCAL_USER_ID:-9001}
24+
GROUP_ID=$USER_ID
25+
USER_NAME="openblocks_$USER_ID"
26+
GROUP_NAME=$USER_NAME
27+
echo "Starting with UID : $USER_ID"
28+
groupadd -g $GROUP_ID $GROUP_NAME || true
29+
useradd -u $USER_ID -g $GROUP_ID $USER_NAME || true
30+
chown -R $USER_ID:$GROUP_ID /openblocks /openblocks-stacks /etc/nginx /var /etc/redis /run /etc/supervisor
31+
}
2332

33+
init_mongodb
2434
init_configuration
25-
2635
# Create sub-directory to store services log in the container mounting folder
2736
mkdir -p /openblocks-stacks/logs/backend
2837
mkdir -p /openblocks-stacks/logs/frontend
29-
mkdir -p /openblocks-stacks/logs/mongodb
3038
mkdir -p /openblocks-stacks/logs/redis
3139
mkdir -p /openblocks-stacks/data/redis
3240

41+
add_user
42+
3343
# Handle CMD command
34-
exec "$@"
44+
exec gosu $USER_NAME "$@"

deploy/docker/scripts/start-nginx.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
set -o errexit
66
set -o xtrace
77

8-
cp /openblocks-nginx/nginx-root.conf.template /etc/nginx/nginx.conf
8+
cp /openblocks/nginx/nginx-root.conf.template /etc/nginx/nginx.conf
99

1010
if [ -e "/openblocks-stacks/ssl/fullchain.pem" ] && [ -e "/openblocks-stacks/ssl/privkey.pem" ];
1111
then
12-
envsubst '$OPENBLOCKS_SERVER_PROXY_PASS' < /openblocks-nginx/nginx-app-https.conf.template > /etc/nginx/conf.d/default.conf
12+
envsubst '$OPENBLOCKS_SERVER_PROXY_PASS' < /openblocks/nginx/nginx-app-https.conf.template > /etc/nginx/conf.d/default.conf
1313
else
14-
envsubst '$OPENBLOCKS_SERVER_PROXY_PASS' < /openblocks-nginx/nginx-app-http.conf.template > /etc/nginx/conf.d/default.conf
14+
envsubst '$OPENBLOCKS_SERVER_PROXY_PASS' < /openblocks/nginx/nginx-app-http.conf.template > /etc/nginx/conf.d/default.conf
1515
fi
1616

1717
exec nginx -g 'daemon off;'

deploy/docker/templates/nginx/nginx-app-http.conf.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
server {
22
listen 3000 default_server;
3-
root /var/www/openblocks;
3+
root /openblocks/client;
44
location / {
55
try_files $uri /index.html;
66

deploy/docker/templates/nginx/nginx-app-https.conf.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ server {
33
ssl_certificate /openblocks-stacks/ssl/fullchain.pem;
44
ssl_certificate_key /openblocks-stacks/ssl/privkey.pem;
55

6-
root /var/www/openblocks;
6+
root /openblocks/client;
77
location / {
88
try_files $uri /index.html;
99

deploy/docker/templates/supervisord/backend.conf

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
[program:backend]
2-
directory=/openblocks
2+
directory=/openblocks/server
33
# Ref -Dlog4j2.formatMsgNoLookups=true https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot
4-
command=/app/bin/java -Djava.security.egd="file:/dev/./urandom" -Dlog4j2.formatMsgNoLookups=true -Dspring.config.location="file:///env/application.yml,file:///openblocks-stacks/configuration/application-selfhost.yml" -jar /openblocks/server.jar
5-
4+
command=/app/bin/java -Djava.security.egd="file:/dev/./urandom" -Dlog4j2.formatMsgNoLookups=true -Dspring.config.location="file:///openblocks/env/application.yml,file:///openblocks-stacks/configuration/application-selfhost.yml" -jar server.jar
65
priority=15
76
autostart=true
87
autorestart=true

deploy/docker/templates/supervisord/frontend.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[program:frontend]
2-
command=/openblocks-nginx/start-nginx.sh
2+
command=/openblocks/nginx/start-nginx.sh
33
priority=25
44
autostart=true
55
autorestart=true

server/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@ package-lock.json
3434
# test coverage
3535
coverage-summary.json
3636
app/client/cypress/locators/Widgets.json
37+
/openblocks-domain/logs/

server/README.md

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,80 @@
1-
# Ground control to major Tom!
1+
# Server Setup
22

3-
#### Module dependency
3+
This document explains how to start Openblocks server locally.
44

5-
- openblocks-sdk
6-
- openblocks-plugins
7-
- openblocks-infra
8-
- openblocks-domain
9-
- openblocks-server(API+Runner)
5+
## System Prerequisites
6+
7+
Java - OpenJDK 17 Maven - Version 3+ (preferably 3.8+)
8+
9+
### MongoDB
10+
11+
If you don't have an available MongoDB, you can start a local MongoDB service with docker:
12+
13+
```shell
14+
docker run -d --name openblocks-mongodb -p 27017:27017 -e MONGO_INITDB_DATABASE=openblocks mongo
15+
```
16+
17+
Configure the MongoDB connection URI in the application-openblocks.yml
18+
<img src="https://cdn-files.openblocks.dev/server-setup/image1.png"/>
19+
20+
### Redis
21+
22+
If you don't have an available MongoDB, you can start a local Redis service with docker:
23+
24+
```shell
25+
docker run -d --name openblocks-redis -p 6379:6379 redis
26+
```
27+
28+
Configure the Redis connection URI in the application-openblocks.yml
29+
<img src="https://cdn-files.openblocks.dev/server-setup/image2.png"/>
30+
31+
## Build and start the Openblocks server jar
32+
33+
1. Clone Openblocks repository
34+
2. Next, execute the following commands in sequence
35+
36+
```shell
37+
cd server
38+
mvn clean package
39+
java -Dpf4j.mode=development -Dspring.profiles.active=openblocks -Dpf4j.pluginsDir=openblocks-plugins -jar openblocks-server/target/openblocks-server-1.0-SNAPSHOT.jar
40+
```
41+
42+
<img src="https://cdn-files.openblocks.dev/server-setup/start.gif"/>
43+
Now, you can check the status of the service by visiting http://localhost:8080 through your browser. By default, you should see an HTTP 404 error.
44+
45+
<img src="https://cdn-files.openblocks.dev/server-setup/image3.png"/>
46+
47+
## Start with IntelliJ IDEA
48+
49+
Configure the Run/Debug configuration as shown in the screenshot below, the version used in the screenshot is IntelliJ
50+
IDEA 2021.3.2 (Community Edition):
51+
<img src="https://cdn-files.openblocks.dev/server-setup/image4.png"/>
52+
<img src="https://cdn-files.openblocks.dev/server-setup/image5.png"/>
53+
54+
<table>
55+
<tr>
56+
<td style="width: 115px">JDK version</td>
57+
<td>Java 17 </td>
58+
</tr>
59+
<tr>
60+
<td>-cp </td>
61+
<td>openblocks-server </td>
62+
</tr>
63+
<tr>
64+
<td>VM options </td>
65+
<td>-Dpf4j.mode=development -Dpf4j.pluginsDir=openblocks-plugins -Dspring.profiles.active=openblocks -XX:+AllowRedefinitionToAddDeleteMethods </td>
66+
</tr>
67+
<tr>
68+
<td>Main class </td>
69+
<td>com.openblocks.api.ServerApplication </td>
70+
</tr>
71+
</table>
72+
73+
Next, execute the following commands in sequence
74+
75+
```shell
76+
cd server
77+
mvn clean package
78+
```
79+
80+
After Maven package runs successfully, you can start the Openblocks server with IntelliJ IDEA.

server/build.sh

Lines changed: 0 additions & 25 deletions
This file was deleted.

server/makefile

Lines changed: 0 additions & 4 deletions
This file was deleted.

server/openblocks-domain/src/main/java/com/openblocks/domain/datasource/repository/DatasourceDORepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ public interface DatasourceDORepository extends ReactiveMongoRepository<Datasour
1111

1212
Flux<DatasourceDO> findAllByOrganizationId(String organizationId);
1313

14+
Mono<DatasourceDO> findByOrganizationIdAndTypeAndCreationSource(String organizationId, String type, int creationSource);
15+
1416
Mono<Long> countByOrganizationId(String organizationId);
1517
}

server/openblocks-domain/src/main/java/com/openblocks/domain/datasource/repository/DatasourceRepository.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.stereotype.Repository;
88

99
import com.openblocks.domain.datasource.model.Datasource;
10+
import com.openblocks.domain.datasource.model.DatasourceCreationSource;
1011
import com.openblocks.domain.datasource.model.DatasourceDO;
1112
import com.openblocks.domain.datasource.model.DatasourceStatus;
1213
import com.openblocks.domain.encryption.EncryptionService;
@@ -41,6 +42,12 @@ public Mono<Datasource> findById(String datasourceId) {
4142
.map(this::convertToDomainObjectAndDecrypt);
4243
}
4344

45+
public Mono<Datasource> findSystemPredefinedDatasourceByOrgIdAndType(String organizationId, String type) {
46+
return repository.findByOrganizationIdAndTypeAndCreationSource(organizationId, type,
47+
DatasourceCreationSource.SYSTEM_PREDEFINED.getValue())
48+
.map(this::convertToDomainObjectAndDecrypt);
49+
}
50+
4451
public Flux<Datasource> findAllByOrganizationId(String orgId) {
4552
return repository.findAllByOrganizationId(orgId)
4653
.map(this::convertToDomainObjectAndDecrypt);

server/openblocks-domain/src/main/java/com/openblocks/domain/datasource/repository/TokenBasedConnectionRepository.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package com.openblocks.domain.datasource.repository;
22

3-
import static com.openblocks.sdk.util.JsonUtils.fromJsonMap;
4-
import static com.openblocks.sdk.util.JsonUtils.toJson;
5-
63
import java.util.Map;
74

85
import org.springframework.beans.factory.annotation.Autowired;
96
import org.springframework.stereotype.Repository;
107

8+
import com.openblocks.domain.datasource.model.TokenBasedConnection;
119
import com.openblocks.domain.datasource.model.TokenBasedConnectionDO;
1210
import com.openblocks.domain.encryption.EncryptionService;
1311
import com.openblocks.domain.plugin.service.DatasourceMetaInfoService;
@@ -33,35 +31,36 @@ public class TokenBasedConnectionRepository {
3331
@Autowired
3432
private MongoUpsertHelper mongoUpsertHelper;
3533

36-
public Mono<com.openblocks.domain.datasource.model.TokenBasedConnection> findByDatasourceId(String datasourceId, String datasourceType) {
34+
public Mono<TokenBasedConnection> findByDatasourceId(String datasourceId, String datasourceType) {
3735
return tokenBasedConnectionDORepository.findByDatasourceId(datasourceId)
3836
.map(connectionDO -> convertToDatasourceConnection(connectionDO, datasourceType));
3937
}
4038

41-
public Mono<Void> saveConnection(com.openblocks.domain.datasource.model.TokenBasedConnection tokenBasedConnection, String datasourceId) {
39+
public Mono<Void> saveConnection(TokenBasedConnection tokenBasedConnection, String datasourceId) {
4240

4341
tokenBasedConnection.getTokenDetail().doEncrypt(encryptionService::encryptString);
4442

4543
TokenBasedConnectionDO result = new TokenBasedConnectionDO();
4644
result.setDatasourceId(tokenBasedConnection.getDatasourceId());
47-
result.setTokenDetail(fromJsonMap(toJson(tokenBasedConnection.getTokenDetail())));
45+
result.setTokenDetail(tokenBasedConnection.getTokenDetail().toMap());
4846
result.setId(tokenBasedConnection.getId());
4947
result.setCreatedAt(tokenBasedConnection.getCreatedAt());
5048
result.setUpdatedAt(tokenBasedConnection.getUpdatedAt());
5149
result.setCreatedBy(tokenBasedConnection.getCreatedBy());
5250
result.setModifiedBy(tokenBasedConnection.getModifiedBy());
53-
return mongoUpsertHelper.upsertWithAuditingParams(tokenBasedConnection, "datasourceId", datasourceId)
51+
return mongoUpsertHelper.upsertWithAuditingParams(result, "datasourceId", datasourceId)
52+
.doOnNext(__ -> tokenBasedConnection.getTokenDetail().doDecrypt(encryptionService::decryptString))
5453
.then();
5554
}
5655

57-
private com.openblocks.domain.datasource.model.TokenBasedConnection convertToDatasourceConnection(TokenBasedConnectionDO tokenBasedConnectionDO,
56+
private TokenBasedConnection convertToDatasourceConnection(TokenBasedConnectionDO tokenBasedConnectionDO,
5857
String datasourceType) {
5958

6059
Map<String, Object> tokenDetailMap = tokenBasedConnectionDO.getTokenDetail();
6160
TokenBasedConnectionDetail tokenDetail = getDatasourceConnector(datasourceType).resolveTokenDetail(tokenDetailMap);
6261
tokenDetail.doDecrypt(encryptionService::decryptString);
6362

64-
com.openblocks.domain.datasource.model.TokenBasedConnection result = new com.openblocks.domain.datasource.model.TokenBasedConnection();
63+
TokenBasedConnection result = new TokenBasedConnection();
6564
result.setDatasourceId(tokenBasedConnectionDO.getDatasourceId());
6665
result.setTokenDetail(tokenDetail);
6766
result.setId(tokenBasedConnectionDO.getId());

server/openblocks-domain/src/main/java/com/openblocks/domain/datasource/service/DatasourceService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ public interface DatasourceService {
2424
Mono<List<Datasource>> getByAppId(String appId);
2525

2626
Mono<Long> countByOrganizationId(String orgId);
27+
28+
Mono<Datasource> findSystemPredefinedDatasource(String organizationId, String datasourceType);
2729
}

0 commit comments

Comments
 (0)