Skip to content

Commit 260f9b1

Browse files
authored
Merge pull request #36 from gregPerlinLi/dev
Dev
2 parents 4639d3b + 26bf253 commit 260f9b1

File tree

31 files changed

+927
-363
lines changed

31 files changed

+927
-363
lines changed

Makefile

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Makefile for CertVault build process
2+
3+
# Variables
4+
FRONTEND_DIR = frontend
5+
BACKEND_DIR = server
6+
STATIC_DIR = $(BACKEND_DIR)/src/main/resources/static
7+
DIST_DIR = $(FRONTEND_DIR)/dist
8+
JAR_SOURCE = $(BACKEND_DIR)/target/*.jar
9+
JAR_DEST = ./certvault.jar
10+
INSTALL_DIR = /etc/certvault
11+
SERVICE_FILE = certvault.service
12+
SYSTEMD_DIR = /etc/systemd/system
13+
14+
.PHONY: all clean install uninstall
15+
16+
all: frontend-build copy-frontend backend-build move-jar
17+
18+
frontend-build:
19+
@echo "Building frontend..."
20+
cd $(FRONTEND_DIR) && pnpm install && pnpm run build
21+
22+
copy-frontend:
23+
@echo "Copying frontend resources..."
24+
mkdir -p $(STATIC_DIR)
25+
cp -r $(DIST_DIR)/* $(STATIC_DIR)/
26+
27+
backend-build:
28+
@echo "Building backend..."
29+
mvn clean package -f $(BACKEND_DIR)/pom.xml -DskipTests
30+
chmod +x $(JAR_SOURCE)
31+
32+
move-jar:
33+
@echo "Moving JAR file..."
34+
mv $(JAR_SOURCE) $(JAR_DEST)
35+
36+
clean:
37+
@echo "Cleaning up..."
38+
rm -rf $(DIST_DIR)
39+
rm -rf $(STATIC_DIR)
40+
rm -f $(JAR_DEST)
41+
mvn clean -f $(BACKEND_DIR)/pom.xml
42+
43+
install:
44+
@echo "Installing CertVault service..."
45+
@# Create installation directory
46+
sudo mkdir -p $(INSTALL_DIR)
47+
48+
@# Install application files
49+
sudo install -m 644 $(JAR_DEST) $(INSTALL_DIR)/certvault.jar
50+
sudo install -m 644 application.yml $(INSTALL_DIR)/application.yml
51+
52+
@# Create systemd service file
53+
@echo "[Unit]\n\
54+
Description=CertVault Certificate Management Service\n\
55+
After=network.target\n\n\
56+
[Service]\n\
57+
User=root\n\
58+
WorkingDirectory=$(INSTALL_DIR)\n\
59+
ExecStart=/usr/bin/java -jar $(INSTALL_DIR)/certvault.jar \n\
60+
-Xmx512m \n\
61+
-Xms256m \n\
62+
-XX:+UseZGC \n\
63+
-XX:ZCollectionInterval=120 \n\
64+
-XX:ZAllocationSpikeTolerance=4 \n\
65+
-XX:-ZProactive \n\
66+
-XX:+HeapDumpOnOutOfMemoryError \n\
67+
-XX:HeapDumpPath=./errorDump.hprof \n\
68+
--spring.profiles.active=prod \n\
69+
SuccessExitStatus=143\n\
70+
Restart=always\n\
71+
RestartSec=30\n\
72+
[Install]\n\
73+
WantedBy=multi-user.target" | sudo tee $(SYSTEMD_DIR)/$(SERVICE_FILE) > /dev/null
74+
75+
@# Reload and enable service
76+
sudo systemctl daemon-reload
77+
sudo systemctl enable $(SERVICE_FILE)
78+
sudo systemctl start $(SERVICE_FILE)
79+
@echo "Installation completed. Service is now running."
80+
81+
uninstall:
82+
@echo "Uninstalling CertVault service..."
83+
sudo systemctl stop $(SERVICE_FILE) || true
84+
sudo systemctl disable $(SERVICE_FILE) || true
85+
sudo rm -f $(SYSTEMD_DIR)/$(SERVICE_FILE)
86+
sudo rm -rf $(INSTALL_DIR)
87+
sudo systemctl daemon-reload
88+
@echo "Uninstallation completed."
89+
90+
# Shortcut targets
91+
build: all
92+
jar: backend-build move-jar

application.yml.example

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
server:
2+
port: 1888
3+
4+
spring:
5+
datasource:
6+
driver-class-name: org.postgresql.Driver
7+
url: jdbc:postgresql://127.0.0.1:5432/cert_vault?sslmode=disable
8+
username: cert_vault
9+
password: changeme
10+
data:
11+
redis:
12+
host: 127.0.0.1
13+
port: 5432
14+
database: 8
15+
password: changeme
16+
sql:
17+
init:
18+
platform: postgresql
19+
security:
20+
oauth2:
21+
client:
22+
registration:
23+
registration:
24+
oidc:
25+
client-id: cert-vault
26+
client-secret: changeme
27+
scope: openid,email,profile
28+
redirect-uri: "${SERVER_BASE_URL:http://127.0.0.1:1888}/api/v1/auth/oauth/callback/oidc"
29+
authorization-grant-type: authorization_code
30+
client-authentication-method: client_secret_basic
31+
provider:
32+
oidc:
33+
token-uri: "https://127.0.0.1:8443/realms/cert-vault/protocol/openid-connect/token"
34+
authorization-uri: "https://127.0.0.1:8443/realms/cert-vault/protocol/openid-connect/auth"
35+
user-info-uri: "https://127.0.0.1:8443/realms/cert-vault/protocol/openid-connect/userinfo"
36+
jwk-set-uri: "https://127.0.0.1:8443/realms/cert-vault/protocol/openid-connect/certs"
37+
user-name-attribute: "preferred_username"
38+
oidc:
39+
enabled: true
40+
providers:
41+
oidc:
42+
name: "OpenID Connect"
43+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGhlaWdodD0iNTEycHgiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEycHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnIGlkPSJfeDMyXzM5LW9wZW5pZCI+PGc+PHBhdGggZD0iTTIzNC44NDksNDE5djYuNjIzYy03OS4yNjgtOS45NTgtMTM5LjMzNC01My4zOTMtMTM5LjMzNC0xMDUuNzU3ICAgIGMwLTM5LjMxMywzMy44NzMtNzMuNTk1LDg0LjQ4NS05Mi41MTFMMTc4LjAyMywxODBDODguODkyLDIwMi40OTcsMjYuMDAxLDI1Ni42MDcsMjYuMDAxLDMxOS44NjYgICAgYzAsNzYuMjg4LDkwLjg3MSwxMzkuMTI4LDIwOC45NSwxNDkuNzA1bDAuMDE4LTAuMDA5VjQxOUgyMzQuODQ5eiIgc3R5bGU9ImZpbGw6I0IyQjJCMjsiLz48cG9seWdvbiBwb2ludHM9IjMwNC43NzIsNDM2LjcxMyAzMDQuNjcsNDM2LjcxMyAzMDQuNjcsMjIxLjY2NyAzMDQuNjcsMjEzLjY2NyAzMDQuNjcsNDIuNDI5ICAgICAyMzQuODQ5LDc4LjI1IDIzNC44NDksMjIxLjY2NyAyMzQuOTY5LDIyMS42NjcgMjM0Ljk2OSw0NjkuNTYzICAgIiBzdHlsZT0iZmlsbDojRjc5MzFFOyIvPjxwYXRoIGQ9Ik00ODUuOTk5LDI5MS45MzhsLTkuNDQ2LTEwMC4xMTRsLTM1LjkzOCwyMC4zMzFDNDE1LjA4NywxOTYuNjQ5LDM4Mi41LDE3Ny41LDM0MCwxNzcuMjYxICAgIGwwLjAwMiwzNi40MDZ2Ny40OThjMy41MDIsMC45NjgsNi45MjMsMi4wMjQsMTAuMzAxLDMuMTI1YzE0LjE0NSw0LjYxMSwyNy4xNzYsMTAuMzUyLDM4LjY2NiwxNy4xMjhsLTM3Ljc4NiwyMS4yNTQgICAgTDQ4NS45OTksMjkxLjkzOHoiIHN0eWxlPSJmaWxsOiNCMkIyQjI7Ii8+PC9nPjwvZz48ZyBpZD0iTGF5ZXJfMSIvPjwvc3ZnPg==}"
44+
45+
geoip:
46+
# mmdb or ip-api.com
47+
type: ip-api.com
48+
file-path: /path/to/GeoLite2-City.mmdb
49+
50+
management:
51+
server:
52+
port: 1999
53+
54+
springdoc:
55+
api-docs:
56+
enabled: true
57+
58+
init:
59+
superadmin:
60+
username: superadmin
61+
display-name: Default Superadmin
62+
email: superadmin@certvault.example
63+
password: changeme
64+
65+
encrypt:
66+
rsa:
67+
key:
68+
public-key: changeme
69+
private-key: changeme

docker-compose/application.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#OpenID Connect Configuration
12
spring:
23
security:
34
oauth2:

frontend/TODO.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
- [x] Import CA
22
- [x] Support OAuth
3-
- [ ] Refactor certificate management
4-
- [ ] User management
3+
- [x] Refactor certificate management
54
- [ ] Bind/Unbind CA/SSL to user
5+
- [ ] User management
66
- [ ] Dashboard

frontend/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"nanoid": "^5.1.5",
1616
"primeicons": "^7.0.0",
1717
"primevue": "^4.3.3",
18-
"tailwindcss": "^4.1.3",
18+
"tailwindcss": "^4.1.4",
1919
"tailwindcss-primeui": "^0.5.1",
2020
"valibot": "^1.0.0",
2121
"vue": "^3.5.13",
@@ -24,14 +24,14 @@
2424
"devDependencies": {
2525
"@primeuix/themes": "^1.0.3",
2626
"@primevue/auto-import-resolver": "^4.3.3",
27-
"@tailwindcss/vite": "^4.1.3",
27+
"@tailwindcss/vite": "^4.1.4",
2828
"@vitejs/plugin-vue": "^5.2.3",
2929
"@vue/tsconfig": "^0.7.0",
3030
"prettier": "^3.5.3",
3131
"rollup-plugin-visualizer": "^5.14.0",
3232
"typescript": "~5.8.3",
3333
"unplugin-auto-import": "^19.1.2",
34-
"unplugin-vue-components": "^28.4.1",
34+
"unplugin-vue-components": "^28.5.0",
3535
"vite": "^6.2.6",
3636
"vite-tsconfig-paths": "^5.1.4",
3737
"vitest": "^3.1.1",

0 commit comments

Comments
 (0)