Compare commits
560 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e5df1f8cb | ||
|
|
58d54f7bf5 | ||
|
|
a3ddee65a3 | ||
|
|
87a2892fc4 | ||
|
|
fcec6579d7 | ||
|
|
4468a429dd | ||
|
|
5dcd8cbad2 | ||
|
|
700b6d221d | ||
|
|
3d0250dd5f | ||
|
|
e1325b3128 | ||
|
|
5b611f20c2 | ||
|
|
ad31a6c298 | ||
|
|
b55efe035d | ||
|
|
fa389f611e | ||
|
|
4bdefc6194 | ||
|
|
eb81a030e3 | ||
|
|
f1771ce676 | ||
|
|
da766f0b85 | ||
|
|
1328894188 | ||
|
|
9a7cfc4061 | ||
|
|
87f39b9fa2 | ||
|
|
49a0b6786e | ||
|
|
091e810f70 | ||
|
|
5e0257b59b | ||
|
|
277f8fafae | ||
|
|
80e7c28ef1 | ||
|
|
154f8d56ac | ||
|
|
156e63bef9 | ||
|
|
34d65c0bc5 | ||
|
|
decbce5410 | ||
|
|
8b795e889a | ||
|
|
b75446f405 | ||
|
|
2b43270896 | ||
|
|
9d4c2aaeb4 | ||
|
|
712b175179 | ||
|
|
10178d998e | ||
|
|
c603c57ad8 | ||
|
|
f69093de66 | ||
|
|
cec7e21d5a | ||
|
|
f1ade56e13 | ||
|
|
b182452f30 | ||
|
|
5ed513f472 | ||
|
|
aa8b380289 | ||
|
|
6149010bf4 | ||
|
|
5183b7ccb4 | ||
|
|
f78958532b | ||
|
|
603dd89be4 | ||
|
|
1a58e40607 | ||
|
|
84721f2e17 | ||
|
|
d72ccb1df6 | ||
|
|
6d4952c483 | ||
|
|
7fab68f8c0 | ||
|
|
3a586c47a3 | ||
|
|
1767079249 | ||
|
|
fdd3be5a91 | ||
|
|
2457a015e4 | ||
|
|
40a99eb67a | ||
|
|
1fcf239561 | ||
|
|
bbb1bb0db6 | ||
|
|
f79d89def9 | ||
|
|
fd535f00c8 | ||
|
|
2c07551b88 | ||
|
|
86914321a6 | ||
|
|
f64c15a01b | ||
|
|
8265cc3cfd | ||
|
|
84c8bc98af | ||
|
|
858ca1becc | ||
|
|
0e0c9cc628 | ||
|
|
cdc3c88507 | ||
|
|
10624b42c4 | ||
|
|
6479694b4b | ||
|
|
d2e72aea56 | ||
|
|
986f0974db | ||
|
|
6b5c7fd409 | ||
|
|
ca803e4e5a | ||
|
|
5de22e4b41 | ||
|
|
b8e81ee100 | ||
|
|
0b53924dbd | ||
|
|
3359d163fb | ||
|
|
2ef1517338 | ||
|
|
a5bee66afa | ||
|
|
88fd0e31e0 | ||
|
|
226dfb2c25 | ||
|
|
94ed071897 | ||
|
|
4efd2b5ec2 | ||
|
|
76e766367f | ||
|
|
b3009bb65e | ||
|
|
819520ef73 | ||
|
|
a2acbc0c3a | ||
|
|
2e8a7c40d9 | ||
|
|
94c0b6a785 | ||
|
|
9752dfa680 | ||
|
|
bc776e4186 | ||
|
|
cdce5a0dc1 | ||
|
|
0db732fc19 | ||
|
|
69f331c048 | ||
|
|
032f1763f6 | ||
|
|
d071ef64d8 | ||
|
|
c820443a3b | ||
|
|
14c4e77445 | ||
|
|
79d9f69ed4 | ||
|
|
6c9065072d | ||
|
|
05bc6c1fbb | ||
|
|
a1dd9eec01 | ||
|
|
660df7c110 | ||
|
|
093501a400 | ||
|
|
7943deb924 | ||
|
|
490167e649 | ||
|
|
8635f6bb05 | ||
|
|
9e31d820e0 | ||
|
|
92353d859a | ||
|
|
bef8d69e59 | ||
|
|
ac46dd6703 | ||
|
|
b3ab78e063 | ||
|
|
95d2c6cb65 | ||
|
|
7017c7502b | ||
|
|
c14055ba8c | ||
|
|
04aa6c9680 | ||
|
|
397bbb2657 | ||
|
|
9a68282127 | ||
|
|
dcd02acc61 | ||
|
|
1025688e9b | ||
|
|
26eeb26a75 | ||
|
|
7f76325284 | ||
|
|
de9a921c49 | ||
|
|
a9ac9d0f79 | ||
|
|
a14b28de6a | ||
|
|
ccd7430b8f | ||
|
|
6791ea5770 | ||
|
|
2d5835b150 | ||
|
|
cec11ce8c3 | ||
|
|
972103841c | ||
|
|
89f6d2cd1c | ||
|
|
d13008ce0c | ||
|
|
abf384dd3c | ||
|
|
0abd4a893b | ||
|
|
d0710fb52b | ||
|
|
534fe83ac2 | ||
|
|
d95d958de0 | ||
|
|
4e5730f31f | ||
|
|
81b9bacb96 | ||
|
|
dc42a31711 | ||
|
|
27e3e65ea1 | ||
|
|
a001ab3f16 | ||
|
|
aeb161a482 | ||
|
|
5ecb476be5 | ||
|
|
5389334304 | ||
|
|
56ece9c854 | ||
|
|
a217b95783 | ||
|
|
ffcdd80996 | ||
|
|
f804dc0338 | ||
|
|
25359f0f66 | ||
|
|
932bdb86ad | ||
|
|
0e14e55c5a | ||
|
|
e2a645d1e1 | ||
|
|
51392e09e2 | ||
|
|
8d71d64d49 | ||
|
|
956c34176d | ||
|
|
f65aa89421 | ||
|
|
c481cb0ae4 | ||
|
|
a734ec40ec | ||
|
|
2a5bda3d00 | ||
|
|
72579c7e83 | ||
|
|
41797e41d2 | ||
|
|
35733e80eb | ||
|
|
4119dbad6a | ||
|
|
c0122079c1 | ||
|
|
c793ebf394 | ||
|
|
45b3e0746a | ||
|
|
aaf18d79bf | ||
|
|
4e3f548ac8 | ||
|
|
cbe1eeec74 | ||
|
|
0557c41454 | ||
|
|
c2311f0682 | ||
|
|
3b89e9bf29 | ||
|
|
6b14c2ef9c | ||
|
|
6606d2ca76 | ||
|
|
1846a496c1 | ||
|
|
7996ae5b63 | ||
|
|
cb5657c685 | ||
|
|
95759adf91 | ||
|
|
4d08a18548 | ||
|
|
8f1e976c2f | ||
|
|
5ee18436b8 | ||
|
|
00ea709f9e | ||
|
|
4873d2cc91 | ||
|
|
4c306fb4f8 | ||
|
|
9017ada3aa | ||
|
|
00c4484184 | ||
|
|
5a6b1bfafd | ||
|
|
c25e74c296 | ||
|
|
bbe2980998 | ||
|
|
544a01534d | ||
|
|
41a9bebe06 | ||
|
|
c84452630a | ||
|
|
23bf0e360f | ||
|
|
62eb8f2d9a | ||
|
|
adcc6dddef | ||
|
|
8bbda6691d | ||
|
|
79f14632bb | ||
|
|
d51de4a520 | ||
|
|
f65e17c723 | ||
|
|
c04859294c | ||
|
|
23363efade | ||
|
|
933e9d90d1 | ||
|
|
b2341ce62e | ||
|
|
7fb17a173e | ||
|
|
c95d52e197 | ||
|
|
d651c37e87 | ||
|
|
1d89b392b0 | ||
|
|
04327c19e3 | ||
|
|
786d07907d | ||
|
|
1227ed1770 | ||
|
|
6d74b4379e | ||
|
|
985091f42b | ||
|
|
885446dc58 | ||
|
|
dd973a46fc | ||
|
|
190b78d14a | ||
|
|
824f7317d7 | ||
|
|
247ae2c862 | ||
|
|
f52a81f9d0 | ||
|
|
32e4859ba7 | ||
|
|
0de59dd77d | ||
|
|
d0b25c38a6 | ||
|
|
9fe2531d2f | ||
|
|
28ce2317c0 | ||
|
|
f38ae06fa0 | ||
|
|
e434d85ea5 | ||
|
|
d303406332 | ||
|
|
952d63b282 | ||
|
|
cffb3c9e90 | ||
|
|
d828d4a754 | ||
|
|
30ff601078 | ||
|
|
eb18f4281a | ||
|
|
b850aa1f7f | ||
|
|
100b5e8740 | ||
|
|
148d9f1201 | ||
|
|
88ddc7c4b2 | ||
|
|
4a2c01fba6 | ||
|
|
45c83f6080 | ||
|
|
08a0eeb6b5 | ||
|
|
73b034b27c | ||
|
|
95a31d613d | ||
|
|
8027d39938 | ||
|
|
e3d33295fe | ||
|
|
691c61613f | ||
|
|
a75ce2143d | ||
|
|
cb828e5684 | ||
|
|
168f193416 | ||
|
|
211a50d33d | ||
|
|
713af9d032 | ||
|
|
214b6fe9ac | ||
|
|
343c188749 | ||
|
|
fc6418caf3 | ||
|
|
cf093e1023 | ||
|
|
90eb6003c9 | ||
|
|
652691b32b | ||
|
|
eb77f33574 | ||
|
|
9bfd5888bf | ||
|
|
73c18c79b8 | ||
|
|
562052b868 | ||
|
|
6f42d41344 | ||
|
|
8db677684d | ||
|
|
988528ccca | ||
|
|
029a46c07d | ||
|
|
8ace3ddd1f | ||
|
|
2c705f0b67 | ||
|
|
3ec43bd8a5 | ||
|
|
b33abd3196 | ||
|
|
d82f5b4bfb | ||
|
|
3e41e17367 | ||
|
|
6e3abab232 | ||
|
|
6306baa51a | ||
|
|
7ceb7e162a | ||
|
|
2243d3cf5b | ||
|
|
e6937d67c1 | ||
|
|
6e977dabf6 | ||
|
|
c229029c1d | ||
|
|
76aa64fe75 | ||
|
|
3b1d6ab8a4 | ||
|
|
7015468e04 | ||
|
|
ef57040e1d | ||
|
|
2a6537c604 | ||
|
|
541a9790ad | ||
|
|
011e8ad089 | ||
|
|
3918d36c24 | ||
|
|
37f452c7c3 | ||
|
|
fc885bc0ad | ||
|
|
44c226092d | ||
|
|
14cf8c2492 | ||
|
|
d6f5898e61 | ||
|
|
0ab8e405cc | ||
|
|
4e4231d5a5 | ||
|
|
2df3f2fa1a | ||
|
|
d6048f78f0 | ||
|
|
f73fa14bfd | ||
|
|
fd88c725d3 | ||
|
|
3a16f9d9ab | ||
|
|
de9b89d805 | ||
|
|
a05c387ba1 | ||
|
|
3cb6e5a2d4 | ||
|
|
104a9a0aa3 | ||
|
|
d7b747eac4 | ||
|
|
d2949c11f3 | ||
|
|
cd05f71173 | ||
|
|
e0dca73369 | ||
|
|
b8599a6693 | ||
|
|
a0adb415fa | ||
|
|
6c60756e54 | ||
|
|
ee9f51ce7d | ||
|
|
924b46b41a | ||
|
|
1fca5a1912 | ||
|
|
120eb1ee69 | ||
|
|
252c538571 | ||
|
|
1eec373b7e | ||
|
|
aa9b96a9c1 | ||
|
|
059fb30aa4 | ||
|
|
2afaf7ad34 | ||
|
|
076a0956c5 | ||
|
|
4a91ec47bf | ||
|
|
1066b43b3d | ||
|
|
3f78125c43 | ||
|
|
144a44673b | ||
|
|
777f7b3758 | ||
|
|
947fa0fea3 | ||
|
|
7109e89fb4 | ||
|
|
70e7b1d544 | ||
|
|
613f86155c | ||
|
|
8d0b58e48f | ||
|
|
8cea9dc977 | ||
|
|
471acfdf00 | ||
|
|
8ed42131d0 | ||
|
|
18c605354a | ||
|
|
8c04411458 | ||
|
|
9a8d1d05cd | ||
|
|
1cbaf9c424 | ||
|
|
537c2fc108 | ||
|
|
122b568cf5 | ||
|
|
8b97c02d15 | ||
|
|
dcfb016ce5 | ||
|
|
c842de9e23 | ||
|
|
1b2753a2b7 | ||
|
|
29b44b8b77 | ||
|
|
7290b1364c | ||
|
|
3851ead8bb | ||
|
|
305312cc26 | ||
|
|
b4217555d2 | ||
|
|
87b8e405f5 | ||
|
|
3513196a78 | ||
|
|
0240a12321 | ||
|
|
3a8eac4d4a | ||
|
|
4bd2de4ce2 | ||
|
|
b7608fccb3 | ||
|
|
bb925d354d | ||
|
|
3a476d41d2 | ||
|
|
1927b10bcc | ||
|
|
0664eff151 | ||
|
|
a71456b209 | ||
|
|
48d308b1a8 | ||
|
|
f75d097d8a | ||
|
|
0d46d81c4e | ||
|
|
c20c83245f | ||
|
|
849e010bc3 | ||
|
|
95c299eea4 | ||
|
|
ad3edd4ccd | ||
|
|
81b7b3505e | ||
|
|
1522a6f3ad | ||
|
|
04bae45955 | ||
|
|
873e910eb1 | ||
|
|
a7f86bf62a | ||
|
|
7ba278d210 | ||
|
|
e9ac9b9f13 | ||
|
|
d34843f90c | ||
|
|
374d0bdd9c | ||
|
|
5d3dc83bab | ||
|
|
05d0f75cdc | ||
|
|
711a4a6bab | ||
|
|
08895ba170 | ||
|
|
c2c8b108ac | ||
|
|
318e9f30b8 | ||
|
|
39a1001510 | ||
|
|
5e7b7ebfa7 | ||
|
|
8d85cdf173 | ||
|
|
79d95d1997 | ||
|
|
1eb07d0b24 | ||
|
|
601564b573 | ||
|
|
41384fab17 | ||
|
|
f0a122d862 | ||
|
|
b08d75be62 | ||
|
|
02f5bef6b4 | ||
|
|
ef10c8b8b6 | ||
|
|
6c4e9cd5c6 | ||
|
|
8dec40553d | ||
|
|
9ae5a6c627 | ||
|
|
2ec1678f01 | ||
|
|
f9e436e885 | ||
|
|
2a49e7670d | ||
|
|
95d8988f11 | ||
|
|
e04a972df5 | ||
|
|
1ca9311625 | ||
|
|
630a1fd3cd | ||
|
|
0f6d84dab2 | ||
|
|
f64eb395a8 | ||
|
|
2e69c67de0 | ||
|
|
7747b4e52e | ||
|
|
830622aafb | ||
|
|
2919950c5b | ||
|
|
d56cfbba82 | ||
|
|
cfe1924f11 | ||
|
|
dfd2ec45f4 | ||
|
|
19c7e31f53 | ||
|
|
f618aef988 | ||
|
|
af97f752f5 | ||
|
|
bfb80afee2 | ||
|
|
72695af0f0 | ||
|
|
3a5b84eec4 | ||
|
|
387ed53328 | ||
|
|
c9cbc5fd55 | ||
|
|
ae03460a33 | ||
|
|
4b060a864a | ||
|
|
07e8e63ee6 | ||
|
|
ab1d4ed97f | ||
|
|
2bd7dfd5b8 | ||
|
|
c39049e5f5 | ||
|
|
5113aa63bd | ||
|
|
518fd8c839 | ||
|
|
a046faaa07 | ||
|
|
dcf25392ff | ||
|
|
7f24948efa | ||
|
|
59d9739f36 | ||
|
|
26a6d08d96 | ||
|
|
cd59c51344 | ||
|
|
8dec98406d | ||
|
|
9386bfc5c1 | ||
|
|
370272ca43 | ||
|
|
5c6758c8e7 | ||
|
|
11606e25bb | ||
|
|
285f0532d3 | ||
|
|
7bfa8a73be | ||
|
|
d1c6e0cb1c | ||
|
|
fc34b24029 | ||
|
|
7e2269a040 | ||
|
|
55d4d9f7e5 | ||
|
|
06a45c9cf2 | ||
|
|
16dd34ef58 | ||
|
|
aed2436ec5 | ||
|
|
df0ec5b3f7 | ||
|
|
9c2b37ec29 | ||
|
|
47fdcad370 | ||
|
|
76295ba1e3 | ||
|
|
4c1f0ca2c0 | ||
|
|
48a53bc248 | ||
|
|
6d18b016c1 | ||
|
|
f54acf595b | ||
|
|
8acebd5ad7 | ||
|
|
c28c12ee01 | ||
|
|
532c4afeaa | ||
|
|
c201eb301f | ||
|
|
ca8e629e4c | ||
|
|
35ee4faffc | ||
|
|
aee2795285 | ||
|
|
0656c18e85 | ||
|
|
cce511c4b4 | ||
|
|
4f0f320fcd | ||
|
|
2fed2aaa34 | ||
|
|
4eeedb85de | ||
|
|
4523138864 | ||
|
|
630291df46 | ||
|
|
8ff1ec35df | ||
|
|
5a51d598ac | ||
|
|
a23a2b292c | ||
|
|
a9dd8f2f36 | ||
|
|
c85ab97cc5 | ||
|
|
97d88ddea3 | ||
|
|
d13ec07f4c | ||
|
|
89d9cd4c25 | ||
|
|
9a7437e8db | ||
|
|
77cf635eea | ||
|
|
d3a045ec20 | ||
|
|
f7189e34cb | ||
|
|
31df0c6cdf | ||
|
|
81b7c7d592 | ||
|
|
a6209751de | ||
|
|
4fe6208d0e | ||
|
|
2fa3eb2251 | ||
|
|
a0717c3338 | ||
|
|
e86bf3f19d | ||
|
|
1ae47f8ab9 | ||
|
|
4b17d7b4ab | ||
|
|
faefed54c2 | ||
|
|
1e819eadc2 | ||
|
|
0bde1b0c05 | ||
|
|
f7a7b6905f | ||
|
|
cce6da2017 | ||
|
|
69a2cffaa6 | ||
|
|
049d102792 | ||
|
|
792ec067ab | ||
|
|
978d94dddf | ||
|
|
0a43e5db45 | ||
|
|
564e40a31d | ||
|
|
cd312ef5c8 | ||
|
|
cf17cf93b0 | ||
|
|
af00e71651 | ||
|
|
42f1c6f0cb | ||
|
|
26172ea651 | ||
|
|
0774662b4f | ||
|
|
f323690472 | ||
|
|
f416e63b66 | ||
|
|
1379150369 | ||
|
|
908c4a3345 | ||
|
|
b19911bfa7 | ||
|
|
320c4c272a | ||
|
|
69bad68cbc | ||
|
|
8c8098ea85 | ||
|
|
8cc801f3b7 | ||
|
|
bea8dc3511 | ||
|
|
4d43021cd6 | ||
|
|
2f48ba95a2 | ||
|
|
f420315d3e | ||
|
|
2b8d64da45 | ||
|
|
4fb4afdd53 | ||
|
|
1decd92bd9 | ||
|
|
91b25b8d0c | ||
|
|
af8fedbe44 | ||
|
|
142c0fff1d | ||
|
|
f5b07ee906 | ||
|
|
d52c1f4d88 | ||
|
|
d6a021b4d9 | ||
|
|
8ecb5a687e | ||
|
|
cdf10770d6 | ||
|
|
e04e14a6e4 | ||
|
|
f146989a1a | ||
|
|
c14c0248cb | ||
|
|
b6ee28731b | ||
|
|
c8c947d8a8 | ||
|
|
c66e62623e | ||
|
|
f1207be0ec | ||
|
|
be87c930e2 | ||
|
|
e057ab858f | ||
|
|
30e0d23d11 | ||
|
|
c46fa28d25 | ||
|
|
af99abab71 | ||
|
|
2224bc7ae7 | ||
|
|
d3fe012501 | ||
|
|
38f64eb3bb | ||
|
|
c880065e39 | ||
|
|
714940bdcf | ||
|
|
33cfb13342 | ||
|
|
83ceb0e1e5 | ||
|
|
fe4b87927e | ||
|
|
1034ba4896 | ||
|
|
256e54ffd8 | ||
|
|
339d86fc87 | ||
|
|
bc8e04b908 | ||
|
|
7f1f286a7d | ||
|
|
a3e354cea9 | ||
|
|
e3fd75e570 | ||
|
|
73537d8671 | ||
|
|
4150ab0666 | ||
|
|
07977124fe |
21
.env.example
Normal file
@@ -0,0 +1,21 @@
|
||||
VOLUME_BASE=/data/orion-visor-space/docker-volumes
|
||||
|
||||
DEMO_MODE=false
|
||||
|
||||
SERVICE_PORT=1081
|
||||
SPRING_PROFILES_ACTIVE=prod
|
||||
SECRET_KEY=uQeacXV8b3isvKLK
|
||||
|
||||
MYSQL_HOST=mysql
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_DATABASE=orion_visor
|
||||
MYSQL_USER=orion
|
||||
MYSQL_PASSWORD=Data@123456
|
||||
MYSQL_ROOT_PASSWORD=Data@123456
|
||||
|
||||
REDIS_HOST=redis
|
||||
REDIS_PASSWORD=Data@123456
|
||||
|
||||
GUACD_HOST=guacd
|
||||
GUACD_PORT=4822
|
||||
GUACD_DRIVE_PATH=/drive
|
||||
21
.github/workflows/e2e.yaml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
name: E2E
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
concurrency:
|
||||
group: ${{github.workflow}} - ${{github.ref}}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
testing:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: E2E Testing
|
||||
run: |
|
||||
sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
|
||||
sudo chmod u+x /usr/local/bin/docker-compose
|
||||
docker compose -f docker-compose-testing.yml up --build testing --exit-code-from testing --remove-orphans
|
||||
1
.gitignore
vendored
@@ -33,3 +33,4 @@ build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
.env
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## 免责声明
|
||||
|
||||
> 欢迎您选择使用 orion-ops-pro(以下简称「本项目」)。在使用本项目前,请您仔细阅读本免责声明,并确保您已充分理解其中的内容。您的使用行为将视为对本声明全部内容的认可和接受。
|
||||
> 欢迎您选择使用 orion-visor(以下简称「本项目」)。在使用本项目前,请您仔细阅读本免责声明,并确保您已充分理解其中的内容。您的使用行为将视为对本声明全部内容的认可和接受。
|
||||
|
||||
> 本项目为一款开源免费的运维管理工具,采用 Apache 2.0 许可证授权。您可在遵守相关法律法规及许可证条款的前提下,自由修改和使用本项目。
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
7. 任何单位或个人不得在未经本人书面授权的情况下对本项目本身申请相关的知识产权。
|
||||
8. 如果本声明的任何部分被认为无效或不可执行,则该部分将被解释为反映本人的初衷,其余部分仍具有完全效力。不可执行的部分声明,并不构成我们放弃执行该声明的权利。
|
||||
9. 本人有权随时对本声明条款及附件内容进行单方面的变更,并以消息推送、网页公告等方式予以公布,公布后立即自动生效,无需另行单独通知;若您在本声明内容公告变更后继续使用的,表示您已充分阅读、理解并接受修改后的声明内容。
|
||||
10. 本人对本声明拥有最终解释权。
|
||||
10. 本人保留对本声明的最终解释权。
|
||||
|
||||
87
LICENSE
@@ -200,90 +200,3 @@
|
||||
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.
|
||||
|
||||
|
||||
Apache Dubbo Submodules:
|
||||
|
||||
Apache Dubbo includes a number of submodules with separate copyright notices
|
||||
and license terms. Your use of these submodules is subject to the terms and
|
||||
conditions of the following licenses.
|
||||
|
||||
For the package org.apache.dubbo.common.threadlocal and org.apache.dubbo.common.timer:
|
||||
|
||||
This product contains a modified portion of 'Netty', an event-driven asynchronous network application framework also
|
||||
under a "Apache License 2.0" license, see https://github.com/netty/netty/blob/4.1/LICENSE.txt:
|
||||
|
||||
* io.netty.util.concurrent.FastThreadLocal
|
||||
* io.netty.util.internal.InternalThreadLocalMap
|
||||
* io.netty.util.Timer
|
||||
* io.netty.util.TimerTask
|
||||
* io.netty.util.Timeout
|
||||
* io.netty.util.HashedWheelTimer
|
||||
|
||||
For the org.apache.dubbo.common.utils.CIDRUtils :
|
||||
|
||||
This product contains a modified portion of 'edazdarevic.commons.net.CIDRUtils' published at
|
||||
https://github.com/edazdarevic/CIDRUtils. The project is licensed under a MIT License:
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2013 Edin Dazdarevic (edin.dazdarevic@gmail.com)
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
|
||||
For the file org.apache.dubbo.common.utils.Utf8Utils.java:
|
||||
|
||||
This product contains a portion of the Protocol Buffers project, which is published at
|
||||
https://developers.google.com/protocol-buffers/ and is licensed under the following License:
|
||||
|
||||
Copyright 2008 Google Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Code generated by the Protocol Buffer compiler is owned by the owner
|
||||
of the input file used when generating it. This code is not
|
||||
standalone and requires a support library to be linked with it. This
|
||||
support library is itself covered by the above license.
|
||||
|
||||
For the ca.proto in dubbo-registry-xds:
|
||||
|
||||
This product contains a modified portion of 'Istio', an open platform to connect, manage, and secure microservices also
|
||||
under a "Apache License 2.0" license, see https://github.com/istio/api/blob/master/LICENSE:
|
||||
|
||||
* security/v1alpha1/ca.proto
|
||||
|
||||
9
NOTICE
Normal file
@@ -0,0 +1,9 @@
|
||||
* 在使用本项目前,请您仔细阅读使用须知及免责声明,确保您已充分理解其中的内容
|
||||
|
||||
* 本项目采用 APACHE LICENSE 2.0 开源协议,如您需要源码的开发方式,需要遵循以下几点
|
||||
|
||||
1. 禁止修改或删除 LICENSE 文件。
|
||||
2. 禁止修改或删除源码头部的版权声明。
|
||||
3. 本项目可免费商业使用,商业使用请保留项目源码、出处、描述文件和作者声明等。
|
||||
4. 分发源码时候,请注明软件出处 https://visor.dromara.org/
|
||||
5. 不可二次开发或参与同类竞品的开发。
|
||||
216
README.md
@@ -1,139 +1,165 @@
|
||||
<h1 style="display: flex; align-items: center;">
|
||||
<img style="margin-right: 8px;" src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/2/27/8c687ef1-5711-4a93-9db0-79c010af7902.png" width="32px" height="32px"/> orion-ops-pro 是什么
|
||||
</h1>
|
||||
|
||||
`orion-ops-pro`
|
||||
是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、Web终端、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。它是基于 `orion-ops`
|
||||
的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷更友好。
|
||||
|
||||
<p style="text-align: left">
|
||||
<a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade">
|
||||
<img src="https://app.codacy.com/project/badge/Grade/49eaab3a9a474af3b87e1d21ffec71c4" alt="quality"/>
|
||||
<div align="center"><img src="docs/assets/logo_horizontal.png?time=20250627" alt="logo" width="520" /></div>
|
||||
<p style="margin-top: 12px" align="center"><b>【Dromara】 一款高颜值、现代化的自动化运维&轻量堡垒机平台。</b></p>
|
||||
<p align="center">
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://app.codacy.com/gh/lijiahangmax/orion-visor/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade">
|
||||
<img src="https://app.codacy.com/project/badge/Grade/49eaab3a9a474af3b87e1d21ffec71c4" alt="quality" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://www.apache.org/licenses/LICENSE-2.0">
|
||||
<img src="https://img.shields.io/github/license/dromara/orion-visor" alt="License" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://github.com/dromara/orion-visor/releases">
|
||||
<img src="https://img.shields.io/github/v/release/dromara/orion-visor" alt="release" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://gitee.com/dromara/orion-visor/stargazers">
|
||||
<img src="https://gitee.com/dromara/orion-visor/badge/star.svg?theme=gvp" alt="star" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://gitee.com/dromara/orion-visor/members">
|
||||
<img src="https://gitee.com/dromara/orion-visor/badge/fork.svg?theme=gvp" alt="fork" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://github.com/dromara/orion-visor">
|
||||
<img src="https://img.shields.io/github/stars/dromara/orion-visor" alt="star" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://github.com/dromara/orion-visor">
|
||||
<img src="https://img.shields.io/github/forks/dromara/orion-visor" alt="star" />
|
||||
</a>
|
||||
<a target="_blank"
|
||||
style="text-decoration: none !important;"
|
||||
href="https://gitcode.com/dromara/orion-visor">
|
||||
<img src="https://gitcode.com/dromara/orion-visor/star/badge.svg" alt="star"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">
|
||||
<img src="https://img.shields.io/badge/JDK-8+-green.svg" alt="jdk8"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://www.apache.org/licenses/LICENSE-2.0">
|
||||
<img src="https://img.shields.io/github/license/lijiahangmax/orion-ops-pro" alt="License"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://gitee.com/lijiahangmax/orion-ops-pro/stargazers">
|
||||
<img src="https://gitee.com/lijiahangmax/orion-ops-pro/badge/star.svg?theme=dark" alt="star"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://gitee.com/lijiahangmax/orion-ops-pro/members">
|
||||
<img src="https://gitee.com/lijiahangmax/orion-ops-pro/badge/fork.svg?theme=dark" alt="fork"/>
|
||||
</a>
|
||||
<!-- <a target="_blank" style="text-decoration: none" href="https://github.com/lijiahangmax/orion-ops-pro">
|
||||
<img src="https://img.shields.io/github/stars/lijiahangmax/orion-ops-pro.svg?style=social" alt="star"/>
|
||||
</a> -->
|
||||
</p>
|
||||
|
||||
<br/>
|
||||
------------------------------
|
||||
|
||||
当前版本: **1.0.4**
|
||||
github: https://github.com/lijiahangmax/orion-ops-pro
|
||||
gitee: https://gitee.com/lijiahangmax/orion-ops-pro
|
||||
文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/
|
||||
demo: http://101.43.254.243:1081/
|
||||
**`orion-visor`** 提供一站式自动化运维解决方案。
|
||||
|
||||
演示账号: `admin`
|
||||
演示密码: `admin`
|
||||
⭐ 体验后可以点一下 `star` 这对我很重要
|
||||
📞 合作/功能定制请联系底部 备注: '定制'
|
||||
* **资产管理**:支持对资产进行分组,实现对主机、密钥和身份的统一管理和授权。
|
||||
* **在线终端**:提供在线终端 SSH/RDP 等多种协议,支持快捷命令、自定义快捷键和主题风格。
|
||||
* **文件管理**:支持远程主机 SFTP 大文件的批量上传、下载和在线编辑等操作。
|
||||
* **批量操作**:支持批量执行主机命令、多主机文件分发等功能。
|
||||
* **计划任务**:支持配置 cron 表达式,定时执行主机命令。
|
||||
* **安全可靠**:动态配置权限,记录用户操作日志,提供简单的审计功能。
|
||||
|
||||
## 特性
|
||||
## 演示环境
|
||||
|
||||
* 易用便捷: 极简配置, 开箱即用, 支持 Docker 部署方式。
|
||||
* 资产管理: 支持灵活配置主机分组, 实现对主机、秘钥和身份的统一管理。
|
||||
* 资产授权: 可将资产数据授权给指定角色和用户, 确保数据安全性。
|
||||
* 权限控制: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。
|
||||
* 在线终端: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。
|
||||
* 文件管理: 实现远程主机大文件的批量上传、下载和在线编辑等操作。
|
||||
* 批量操作: 支持远程主机批量执行 shell 命令。
|
||||
* 计划任务: 支持配置 cron 表达式, 定时执行主机 shell 命令。
|
||||
* 操作日志: 记录用户操作日志,确保操作可追溯, 提高系统安全性。
|
||||
* 可扩展性: 前后端代码规范统一、代码质量高、健壮且易于阅读和扩展。
|
||||
* 🔗 演示地址: [https://dv.orionsec.cn/](https://dv.orionsec.cn/)
|
||||
* 🔏 演示账号: admin/admin
|
||||
* ⭐ 体验后可以点一下 `star`
|
||||
这对我很重要! [github](https://github.com/dromara/orion-visor) [gitee](https://gitee.com/dromara/orion-visor) [gitcode](https://gitcode.com/dromara/orion-visor)
|
||||
* 🌈 如果本项目对你有帮助请帮忙推广一下 让更多的人知道此项目!
|
||||
* 🎭 演示环境部分功能不可用, 完整功能请本地部署!
|
||||
* 📛 演示环境请不要随便删除数据!
|
||||
* 📧 如果演示环境不可用请联系我!
|
||||
* 📨 **作者随缘寻java高级/资深内推 望京/5号/10号线 有坑位的联系我哦** 微信: `ljh1553488`
|
||||
|
||||
## 快速开始
|
||||
|
||||
docker安装: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install
|
||||
安装文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install
|
||||
开发文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/advance/dev
|
||||
操作手册: https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset
|
||||
常见问题: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq
|
||||
roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap
|
||||
```bash
|
||||
# clone
|
||||
git clone --depth=1 https://github.com/dromara/orion-visor
|
||||
cd orion-visor
|
||||
# 启动
|
||||
docker compose up -d
|
||||
# 等待后端服务启动后 (2min±) 访问 http://localhost:1081/
|
||||
```
|
||||
|
||||
## 项目文档
|
||||
|
||||
* [文档地址](https://visor.dromara.org/)
|
||||
* [安装文档](https://visor.dromara.org/quickstart/docker.html)
|
||||
* [更新日志](https://visor.dromara.org/update/change-log.html)
|
||||
* [操作手册](https://visor.dromara.org/operator/asset.html)
|
||||
* [常见问题](https://visor.dromara.org/support/faq.html)
|
||||
|
||||
## 技术栈
|
||||
|
||||
* Docker
|
||||
* SpringBoot
|
||||
* Mysql
|
||||
* Redis
|
||||
* Vue3
|
||||
* Arco Design
|
||||
* SpringBoot 2.7.17
|
||||
* Mysql 8.0+
|
||||
* Redis 6.0+
|
||||
* Vue3 3.5+
|
||||
* Arco Design 2.56+
|
||||
|
||||
## 功能预览
|
||||
## 主要功能预览
|
||||
|
||||
> 工作台
|
||||
#### 工作台
|
||||
|
||||

|
||||

|
||||
|
||||
> 资产管理
|
||||
#### 主机终端
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 主机终端
|
||||
#### 主机列表
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 批量执行
|
||||
#### 批量执行
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 计划任务
|
||||
#### 批量上传
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 用户管理
|
||||
#### 计划任务
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 系统管理
|
||||
## Star History
|
||||
|
||||

|
||||

|
||||
[](https://star-history.com/#dromara/orion-visor&Date)
|
||||
|
||||
## 关于我
|
||||
|
||||
本人专注于使用 Java 和 Vue 进行全栈开发, 并在系统自动化运维方面拥有丰富开发的经验。如果您在这些领域有需求或遇到痛点, 请随时联系我, 并备注“合作”。
|
||||
|
||||
## 联系我
|
||||
|
||||
<div style="display: flex;">
|
||||
<img src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/2/27/d452cd30-cecd-4236-86f5-5ecbf3eac091.jpg" alt="qq" width="268px" height="398px"/>
|
||||
<img src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/2/27/4f1c4e77-8e36-45a3-8be6-9da5387bb96e.jpg" alt="wx" width="298px" height="398px"/>
|
||||
</div>
|
||||
<img src="docs/assets/vx.jpg?time=20250627" alt="vx" width="628px"/>
|
||||
|
||||
📧 咨询问题微信备注: ops
|
||||
微信: ljh1553488
|
||||
QQ群: 755242157
|
||||
|
||||
📧 问题/加群微信备注: ops
|
||||
📧 合作/功能定制备注: 合作
|
||||
|
||||
## 支持一下
|
||||
|
||||
<img src="https://bjuimg.obs.cn-north-4.myhuaweicloud.com/images/2024/2/27/8063cf87-9de9-4df2-8009-d5dea6d69861.jpg" alt="收款码" width="540px"/>
|
||||
<img src="docs/assets/pay.jpg?time=20250627" alt="收款码" width="540px"/>
|
||||
|
||||
🎁 为了项目能健康持续的发展, 我期望获得相应的资金支持, 你们的支持是我不断更新前进的动力!
|
||||
|
||||
## 免责声明
|
||||
|
||||
在使用本项目之前, 请确保您已经了解并同意相关的使用协议和隐私政策。[免责声明](https://github.com/lijiahangmax/orion-ops-pro/blob/main/DISCLAIMER.md)
|
||||
在使用本项目之前, 请确保您已经了解并同意相关的使用协议和隐私政策。[免责声明](https://github.com/dromara/orion-visor/blob/main/DISCLAIMER.md)
|
||||
|
||||
## License
|
||||
|
||||
本项目遵循 [Apache-2.0](https://github.com/lijiahangmax/orion-ops-pro/blob/main/LICENSE) 开源许可证。
|
||||
本项目遵循 [Apache-2.0](https://github.com/dromara/orion-visor/blob/main/LICENSE) 开源许可证。
|
||||
|
||||
## Gitee 最有价值的开源项目 GVP
|
||||
|
||||

|
||||
|
||||
## GitCode 最有影响力的开源项目 G-Star
|
||||
|
||||

|
||||
|
||||
90
docker-compose-testing.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
service:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 9200:9200
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: prod
|
||||
MYSQL_HOST: mysql
|
||||
MYSQL_PORT: 3306
|
||||
MYSQL_DATABASE: orion_visor
|
||||
MYSQL_USER: root
|
||||
MYSQL_PASSWORD: Data@123456
|
||||
REDIS_HOST: redis
|
||||
REDIS_PASSWORD: Data@123456
|
||||
SECRET_KEY: uQeacXV8b3isvKLK
|
||||
DEMO_MODE: false
|
||||
volumes:
|
||||
- /data/orion-visor-space/docker-volumes/service/root-orion:/root/orion
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 15s
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
mysql:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 3307:3306
|
||||
environment:
|
||||
MYSQL_DATABASE: orion_visor
|
||||
MYSQL_USER: orion
|
||||
MYSQL_PASSWORD: Data@123456
|
||||
MYSQL_ROOT_PASSWORD: Data@123456
|
||||
volumes:
|
||||
- /data/orion-visor-space/docker-volumes/mysql/var-lib-mysql:/var/lib/mysql
|
||||
- /data/orion-visor-space/docker-volumes/mysql/var-lib-mysql-files:/var/lib/mysql-files
|
||||
healthcheck:
|
||||
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 5s
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
redis:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 6380:6379
|
||||
environment:
|
||||
REDIS_PASSWORD: Data@123456
|
||||
volumes:
|
||||
- /data/orion-visor-space/docker-volumes/redis/data:/data
|
||||
command: sh -c "redis-server /usr/local/redis.conf --requirepass $${REDIS_PASSWORD}"
|
||||
healthcheck:
|
||||
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 5s
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
testing:
|
||||
build:
|
||||
context: ./docker/e2e
|
||||
environment:
|
||||
SERVER: http://service:9200
|
||||
depends_on:
|
||||
service:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
networks:
|
||||
orion-visor-net:
|
||||
driver: bridge
|
||||
@@ -1,45 +1,131 @@
|
||||
version: '3.3'
|
||||
|
||||
# latest = 2.4.1
|
||||
services:
|
||||
orion-ops-pro:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/lijiahangmax/orion-ops-pro:1.0.4
|
||||
ui:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest
|
||||
ports:
|
||||
- 1081:80
|
||||
environment:
|
||||
- MYSQL_HOST=orion-ops-pro-db
|
||||
- MYSQL_USER=orion
|
||||
- MYSQL_PASSWORD=Data@123456
|
||||
- REDIS_HOST=orion-ops-pro-redis
|
||||
- REDIS_PASSWORD=Data@123456
|
||||
- SECRET_KEY=uQeacXV8b3isvKLK
|
||||
volumes:
|
||||
- /data/orion-ops-pro-space/docker-volumes/orion-ops-pro/logs:/root/orion/logs/orion-ops-pro
|
||||
- ${SERVICE_PORT:-1081}:80
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- orion-ops-pro-db
|
||||
- orion-ops-pro-redis
|
||||
orion-ops-pro-db:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/mysql/Dockerfile
|
||||
service:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
service:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 9200:9200
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
|
||||
MYSQL_HOST: ${MYSQL_HOST:-mysql}
|
||||
MYSQL_PORT: ${MYSQL_PORT:-3306}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE:-orion_visor}
|
||||
MYSQL_USER: ${MYSQL_USER:-root}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-Data@123456}
|
||||
REDIS_HOST: ${REDIS_HOST:-redis}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD:-Data@123456}
|
||||
GUACD_HOST: ${GUACD_HOST:-guacd}
|
||||
GUACD_PORT: ${GUACD_PORT:-4822}
|
||||
GUACD_DRIVE_PATH: ${GUACD_DRIVE_PATH:-/drive}
|
||||
SECRET_KEY: ${SECRET_KEY:-uQeacXV8b3isvKLK}
|
||||
DEMO_MODE: ${DEMO_MODE:-false}
|
||||
volumes:
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/service/root-orion:/root/orion
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "http://127.0.0.1:9200/orion-visor/api/server/bootstrap/health" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 15
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
mysql:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 3307:3306
|
||||
environment:
|
||||
- MYSQL_DATABASE=orion-ops-pro
|
||||
- MYSQL_USER=orion
|
||||
- MYSQL_PASSWORD=Data@123456
|
||||
- MYSQL_ROOT_PASSWORD=Data@123456
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE:-orion_visor}
|
||||
MYSQL_USER: ${MYSQL_USER:-orion}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-Data@123456}
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-Data@123456}
|
||||
volumes:
|
||||
- /data/orion-ops-pro-space/docker-volumes/mysql/var-lib-mysql:/var/lib/mysql
|
||||
- /data/orion-ops-pro-space/docker-volumes/mysql/var-lib-mysql-files:/var/lib/mysql-files
|
||||
- /data/orion-ops-pro-space/docker-volumes/mysql/etc-mysql:/etc/mysql
|
||||
orion-ops-pro-redis:
|
||||
image: redis:6.0.16-alpine
|
||||
command: redis-server --requirepass Data@123456
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/mysql/var-lib-mysql:/var/lib/mysql
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/mysql/var-lib-mysql-files:/var/lib/mysql-files
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
redis:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
|
||||
privileged: true
|
||||
ports:
|
||||
- 6380:6379
|
||||
environment:
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD:-Data@123456}
|
||||
volumes:
|
||||
- /data/orion-ops-pro-space/docker-volumes/redis/data:/data
|
||||
orion-ops-pro-adminer:
|
||||
image: adminer
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/redis/data:/data
|
||||
command: sh -c "redis-server /usr/local/redis.conf --requirepass $${REDIS_PASSWORD}"
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
guacd:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-guacd:latest
|
||||
ports:
|
||||
- 4822:4822
|
||||
environment:
|
||||
GUACD_LOG_LEVEL: info
|
||||
GUACD_LOG_FILE: /var/log/guacd.log
|
||||
volumes:
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/guacd/drive:${GUACD_DRIVE_PATH:-/drive}
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/guacd/var-logs:/var/log
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/guacd/local-guacamole-lib:/usr/local/guacamole/lib
|
||||
- ${VOLUME_BASE:-/data/orion-visor-space/docker-volumes}/guacd/local-guacamole-extensions:/usr/local/guacamole/extensions
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: [ "CMD", "nc", "-vz", "localhost", "4822" ]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 10s
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
adminer:
|
||||
image: registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
|
||||
ports:
|
||||
- 8081:8080
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: ${MYSQL_HOST:-mysql}
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- orion-visor-net
|
||||
|
||||
networks:
|
||||
orion-visor-net:
|
||||
driver: bridge
|
||||
16
docker-upgrade.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 停止并移除现有容器
|
||||
docker compose down --remove-orphans
|
||||
|
||||
if [ "$1" == "demo" ]; then
|
||||
# 设置 DEMO_MODE 环境变量为 true
|
||||
export DEMO_MODE=true
|
||||
echo "Starting services for demo mode..."
|
||||
# 启动指定的服务
|
||||
docker compose up -d --remove-orphans mysql redis ui service adminer
|
||||
else
|
||||
echo "Starting all services..."
|
||||
# 正常启动所有服务
|
||||
docker compose up -d --remove-orphans
|
||||
fi
|
||||
1
docker/adminer/Dockerfile
Normal file
@@ -0,0 +1 @@
|
||||
FROM adminer:latest
|
||||
6
docker/adminer/build.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
docker build -t orion-visor-adminer:${version} .
|
||||
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
|
||||
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
|
||||
7
docker/e2e/Dockerfile
Normal file
@@ -0,0 +1,7 @@
|
||||
FROM ghcr.io/linuxsuren/api-testing:v0.0.17
|
||||
|
||||
WORKDIR /workspace
|
||||
COPY . .
|
||||
RUN chmod 777 *
|
||||
|
||||
CMD [ "/workspace/entrypoint.sh" ]
|
||||
3
docker/e2e/entrypoint.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
atest run -p testsuite.yaml --report md
|
||||
49
docker/e2e/testsuite.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
#!api-testing
|
||||
# yaml-language-server: $schema=https://linuxsuren.github.io/api-testing/api-testing-schema.json
|
||||
name: orion-visor
|
||||
api: |
|
||||
{{default "http://service:9200" (env "SERVER")}}
|
||||
items:
|
||||
- name: login
|
||||
request:
|
||||
api: /orion-visor/api/infra/auth/login
|
||||
method: POST
|
||||
header:
|
||||
Content-type: application/json
|
||||
body: |
|
||||
{"username":"admin","password":"21232f297a57a5a743894a0e4a801fc3"}
|
||||
expect:
|
||||
bodyFieldsExpect:
|
||||
code: 200
|
||||
- name: user
|
||||
request:
|
||||
api: /orion-visor/api/infra/user-aggregate/user
|
||||
header:
|
||||
Authorization: Bearer {{.login.data.token}}
|
||||
expect:
|
||||
bodyFieldsExpect:
|
||||
code: 200
|
||||
msg: "success"
|
||||
- name: menu
|
||||
request:
|
||||
api: /orion-visor/api/infra/user-aggregate/menu
|
||||
header:
|
||||
Authorization: Bearer {{.login.data.token}}
|
||||
expect:
|
||||
bodyFieldsExpect:
|
||||
code: 200
|
||||
msg: "success"
|
||||
- name: haveUnRead
|
||||
request:
|
||||
api: /orion-visor/api/infra/system-message/has-unread
|
||||
- name: queryOperatorLog
|
||||
request:
|
||||
api: /orion-visor/api/infra/mine/query-operator-log
|
||||
method: POST
|
||||
- name: hostList
|
||||
request:
|
||||
api: /orion-visor/api/infra/tag/list?type=HOST
|
||||
- name: queryHost
|
||||
request:
|
||||
api: /orion-visor/api/asset/host/query
|
||||
method: POST
|
||||
10
docker/guacd/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM guacamole/guacd:1.6.0
|
||||
USER root
|
||||
# 系统时区
|
||||
ARG TZ=Asia/Shanghai
|
||||
# 设置时区
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo '${TZ}' > /etc/timezone
|
||||
|
||||
# 创建所需目录
|
||||
RUN mkdir -p /home/guacd/drive /usr/share/guacd/drive
|
||||
6
docker/guacd/build.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
docker build -t orion-visor-guacd:${version} .
|
||||
docker tag orion-visor-guacd:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-guacd:${version}
|
||||
docker tag orion-visor-guacd:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-guacd:latest
|
||||
@@ -1,8 +1,17 @@
|
||||
FROM mysql:8.0.28
|
||||
COPY sql/init-1-schema-databases.sql /tmp
|
||||
COPY sql/init-2-schema-tables.sql /tmp
|
||||
COPY sql/init-3-data.sql /tmp
|
||||
COPY docker/mysql/my.cnf /etc/mysql/conf.d/my.cnf
|
||||
# 系统时区
|
||||
ARG TZ=Asia/Shanghai
|
||||
# 设置时区
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo '${TZ}' > /etc/timezone
|
||||
# 复制配置
|
||||
COPY ./my.cnf /etc/mysql/conf.d/my.cnf
|
||||
# 复制初始化脚本
|
||||
COPY ./sql/init-1-schema-databases.sql /tmp
|
||||
COPY ./sql/init-2-schema-tables.sql /tmp
|
||||
COPY ./sql/init-3-schema-quartz.sql /tmp
|
||||
COPY ./sql/init-4-data.sql /tmp
|
||||
# 设置初始化脚本
|
||||
RUN cat /tmp/init-1-schema-databases.sql >> /tmp/init.sql && \
|
||||
cat /tmp/init-2-schema-tables.sql >> /tmp/init.sql && \
|
||||
cat /tmp/init-3-schema-quartz.sql >> /tmp/init.sql && \
|
||||
|
||||
8
docker/mysql/build.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
cp -r ../../sql ./sql
|
||||
docker build -t orion-visor-mysql:${version} .
|
||||
rm -rf ./sql
|
||||
docker tag orion-visor-mysql:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:${version}
|
||||
docker tag orion-visor-mysql:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
|
||||
@@ -12,13 +12,13 @@ socket=/var/run/mysqld/mysqld.sock
|
||||
# 数据目录
|
||||
datadir=/var/lib/mysql
|
||||
# 不区分大小 0区分 1不区分
|
||||
lower_case_table_names=1
|
||||
lower_case_table_names=0
|
||||
# 服务器时区
|
||||
default-time_zone='+8:00'
|
||||
# 服务端字符集
|
||||
character_set_server=utf8mb4
|
||||
# 字符排序规则
|
||||
collation_server=utf8mb4_general_ci
|
||||
collation_server=utf8mb4_unicode_ci
|
||||
# 默认存储引擎
|
||||
default-storage-engine=InnoDB
|
||||
# 禁止 DNS 解析
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
FROM nginx:alpine
|
||||
USER root
|
||||
RUN \
|
||||
echo "" > /etc/apk/repositories && \
|
||||
echo "http://mirrors.aliyun.com/alpine/v3.8/main" >> /etc/apk/repositories &&\
|
||||
echo "http://mirrors.aliyun.com/alpine/v3.8/community" >> /etc/apk/repositories && \
|
||||
apk update
|
||||
RUN apk add openjdk8
|
||||
RUN rm -rf /etc/nginx/conf.d/*
|
||||
WORKDIR /app
|
||||
COPY ./orion-ops-launch.jar /app/app.jar
|
||||
COPY ./dist /usr/share/nginx/html
|
||||
COPY ./entrypoint.sh /app/entrypoint.sh
|
||||
COPY ./nginx.conf /etc/nginx/conf.d
|
||||
ENTRYPOINT [ "sh", "/app/entrypoint.sh" ]
|
||||
@@ -1,3 +0,0 @@
|
||||
mv ../../orion-ops-launch/target/orion-ops-launch.jar ./
|
||||
mv ../../orion-ops-ui/dist ./dist
|
||||
docker build -t orion-ops-pro:1.0.4 .
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
cd /app
|
||||
nohup java -jar app.jar --spring.profiles.active=prod 2>&1 &
|
||||
nginx -g 'daemon off;'
|
||||
15
docker/push.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-guacd:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:${version}
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:latest
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-guacd:latest
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest
|
||||
15
docker/redis/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
||||
FROM redis:6.0.16-alpine
|
||||
WORKDIR /data
|
||||
# 系统时区
|
||||
ARG TZ=Asia/Shanghai
|
||||
# 添加包
|
||||
RUN \
|
||||
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
||||
apk update && \
|
||||
apk add tzdata
|
||||
# 设置时区
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo '${TZ}' > /etc/timezone
|
||||
# redis 配置
|
||||
COPY ./redis.conf /tmp
|
||||
RUN cat /tmp/redis.conf > /usr/local/redis.conf
|
||||
6
docker/redis/build.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
docker build -t orion-visor-redis:${version} .
|
||||
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
|
||||
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
|
||||
1877
docker/redis/redis.conf
Normal file
20
docker/service/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM openjdk:8-jdk-alpine
|
||||
USER root
|
||||
WORKDIR /app
|
||||
# 系统时区
|
||||
ARG TZ=Asia/Shanghai
|
||||
# 添加包
|
||||
RUN \
|
||||
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
||||
apk update && \
|
||||
apk add curl && \
|
||||
apk add udev && \
|
||||
apk add tzdata && \
|
||||
apk add dmidecode
|
||||
# 设置时区
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo '${TZ}' > /etc/timezone
|
||||
# 复制包
|
||||
COPY ./orion-visor-launch.jar /app/app.jar
|
||||
# 启动
|
||||
CMD ["java", "-jar", "/app/app.jar"]
|
||||
8
docker/service/build.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar
|
||||
docker build -t orion-visor-service:${version} .
|
||||
rm -rf ./orion-visor-launch.jar
|
||||
docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:${version}
|
||||
docker tag orion-visor-service:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-service:latest
|
||||
18
docker/ui/Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
FROM nginx:alpine
|
||||
# 系统时区
|
||||
ARG TZ=Asia/Shanghai
|
||||
# 添加包
|
||||
RUN \
|
||||
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
||||
apk update && \
|
||||
apk add tzdata
|
||||
# 设置时区
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo '${TZ}' > /etc/timezone
|
||||
# 删除原 nginx 配置
|
||||
RUN rm -rf /etc/nginx/conf.d/*
|
||||
# 复制包
|
||||
COPY ./dist /usr/share/nginx/html
|
||||
COPY ./nginx.conf /etc/nginx/conf.d
|
||||
# 启动
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
9
docker/ui/build.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
#/bin/bash
|
||||
set -e
|
||||
version=2.4.1
|
||||
mv ../../orion-visor-ui/dist ./dist
|
||||
docker build -t orion-visor-ui:${version} .
|
||||
rm -rf ./orion-visor-launch.jar
|
||||
rm -rf ./dist
|
||||
docker tag orion-visor-ui:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:${version}
|
||||
docker tag orion-visor-ui:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-ui:latest
|
||||
@@ -19,23 +19,23 @@ server {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# web history 模式 404
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
location /orion/api {
|
||||
proxy_pass http://localhost:9200/orion/api;
|
||||
location /orion-visor/api {
|
||||
proxy_pass http://service:9200/orion-visor/api;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /orion/keep-alive {
|
||||
proxy_pass http://localhost:9200/orion/keep-alive;
|
||||
location /orion-visor/keep-alive {
|
||||
proxy_pass http://service:9200/orion-visor/keep-alive;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
@@ -1,17 +0,0 @@
|
||||
## 免责声明
|
||||
|
||||
> 欢迎您选择使用 orion-ops-pro(以下简称「本项目」)。在使用本项目前,请您仔细阅读本免责声明,并确保您已充分理解其中的内容。您的使用行为将视为对本声明全部内容的认可和接受。
|
||||
|
||||
> 本项目为一款开源免费的运维管理工具,采用 Apache 2.0 许可证授权。您可在遵守相关法律法规及许可证条款的前提下,自由修改和使用本项目。
|
||||
|
||||
1. 本项目尊重并保护所有用户的个人隐私权。本项目不会收集、存储或传输用户的任何个人信息。
|
||||
2. 您承诺秉着合法、合理的原则使用本项目,不利用本项目进行任何违法、侵害他人合法利益等恶意的行为,亦不将本项目运用于任何违反我国法律法规的平台。
|
||||
3. 任何单位或个人因下载使用本项目而产生的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带或衍生的损失等),本人不承担任何法律责任。
|
||||
4. 用户明确并同意本声明条款列举的全部内容,对使用本项目可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。
|
||||
5. 任何单位或个人在阅读本免责声明后,应在《Apache 2.0
|
||||
开源许可证》所允许的范围内进行合法的发布、传播和使用本项目等行为,若违反本免责声明条款或违反法律法规所造成的法律责任(包括但不限于民事赔偿和刑事责任),由违约者自行承担。
|
||||
6. 本人对本项目拥有知识产权(包括但不限于商标权、专利权、著作权、商业秘密等),上述产品均受到相关法律法规的保护。
|
||||
7. 任何单位或个人不得在未经本人书面授权的情况下对本项目本身申请相关的知识产权。
|
||||
8. 如果本声明的任何部分被认为无效或不可执行,则该部分将被解释为反映本人的初衷,其余部分仍具有完全效力。不可执行的部分声明,并不构成我们放弃执行该声明的权利。
|
||||
9. 本人有权随时对本声明条款及附件内容进行单方面的变更,并以消息推送、网页公告等方式予以公布,公布后立即自动生效,无需另行单独通知;若您在本声明内容公告变更后继续使用的,表示您已充分阅读、理解并接受修改后的声明内容。
|
||||
10. 本人对本声明拥有最终解释权。
|
||||
139
docs/README.md
@@ -1,139 +0,0 @@
|
||||
<h1 style="display: flex; align-items: center;">
|
||||
<img style="margin-right: 8px;" src="./assert/logo.svg" width="32px" height="32px"/> orion-ops-pro 是什么
|
||||
</h1>
|
||||
|
||||
`orion-ops-pro`
|
||||
是一款现代化、高颜值的一站式智能运维管理平台,集资产管理、资产授权、批量执行、计划任务、Web终端、WebSftp、角色管理、系统管理等功能于一体,致力于简化运维团队的治理工作。它是基于 `orion-ops`
|
||||
的产品思路进行重构,技术架构升级,并优化了交互逻辑,让操作更快捷更友好。
|
||||
|
||||
<p style="text-align: left">
|
||||
<a target="_blank" style="text-decoration: none" href="https://app.codacy.com/gh/lijiahangmax/orion-ops-pro/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade">
|
||||
<img src="https://app.codacy.com/project/badge/Grade/49eaab3a9a474af3b87e1d21ffec71c4" alt="quality"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html">
|
||||
<img src="https://img.shields.io/badge/JDK-8+-green.svg" alt="jdk8"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://www.apache.org/licenses/LICENSE-2.0">
|
||||
<img src="https://img.shields.io/github/license/lijiahangmax/orion-ops-pro" alt="License"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://gitee.com/lijiahangmax/orion-ops-pro/stargazers">
|
||||
<img src="https://gitee.com/lijiahangmax/orion-ops-pro/badge/star.svg?theme=dark" alt="star"/>
|
||||
</a>
|
||||
<a target="_blank" style="text-decoration: none" href="https://gitee.com/lijiahangmax/orion-ops-pro/members">
|
||||
<img src="https://gitee.com/lijiahangmax/orion-ops-pro/badge/fork.svg?theme=dark" alt="fork"/>
|
||||
</a>
|
||||
<!-- <a target="_blank" style="text-decoration: none" href="https://github.com/lijiahangmax/orion-ops-pro">
|
||||
<img src="https://img.shields.io/github/stars/lijiahangmax/orion-ops-pro.svg?style=social" alt="star"/>
|
||||
</a> -->
|
||||
</p>
|
||||
|
||||
<br/>
|
||||
|
||||
当前版本: **1.0.4**
|
||||
github: https://github.com/lijiahangmax/orion-ops-pro
|
||||
gitee: https://gitee.com/lijiahangmax/orion-ops-pro
|
||||
文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/
|
||||
demo: http://101.43.254.243:1081/
|
||||
|
||||
演示账号: `admin`
|
||||
演示密码: `admin`
|
||||
⭐ 体验后可以点一下 `star` 这对我很重要
|
||||
📞 合作/功能定制请联系底部 备注: '合作'
|
||||
|
||||
## 特性
|
||||
|
||||
* 易用便捷: 极简配置, 开箱即用, 支持 Docker 部署方式。
|
||||
* 资产管理: 支持灵活配置主机分组, 实现对主机、秘钥和身份的统一管理。
|
||||
* 资产授权: 可将资产数据授权给指定角色和用户, 确保数据安全性。
|
||||
* 权限控制: 全面管理用户角色, 支持动态菜单配置和强制下线等功能。
|
||||
* 在线终端: 提供便捷的在线 Web 终端服务, 支持快捷命令、自定义快捷键和主题风格。
|
||||
* 文件管理: 实现远程主机大文件的批量上传、下载和在线编辑等操作。
|
||||
* 批量操作: 支持远程主机批量执行 shell 命令。
|
||||
* 计划任务: 支持配置 cron 表达式, 定时执行主机 shell 命令。
|
||||
* 操作日志: 记录用户操作日志,确保操作可追溯, 提高系统安全性。
|
||||
* 可扩展性: 前后端代码规范统一、代码质量高、健壮且易于阅读和扩展。
|
||||
|
||||
## 快速开始
|
||||
|
||||
docker安装: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/docker-install
|
||||
安装文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/install
|
||||
开发文档: https://lijiahangmax.gitee.io/orion-ops-pro/#/advance/dev
|
||||
操作手册: https://lijiahangmax.gitee.io/orion-ops-pro/#/operator/asset
|
||||
常见问题: https://lijiahangmax.gitee.io/orion-ops-pro/#/quickstart/faq
|
||||
roadmap: https://lijiahangmax.gitee.io/orion-ops-pro/#/about/roadmap
|
||||
|
||||
## 技术栈
|
||||
|
||||
* Docker
|
||||
* SpringBoot
|
||||
* Mysql
|
||||
* Redis
|
||||
* Vue3
|
||||
* Arco Design
|
||||
|
||||
## 功能预览
|
||||
|
||||
> 工作台
|
||||
|
||||

|
||||
|
||||
> 资产管理
|
||||
|
||||

|
||||

|
||||
|
||||
> 主机终端
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 批量执行
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
> 计划任务
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
> 用户管理
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
> 系统管理
|
||||
|
||||

|
||||

|
||||
|
||||
## 联系我
|
||||
|
||||
<div style="display: flex;">
|
||||
<img src="./assert/img/qq_group1.jpg" alt="qq" width="268px" height="398px"/>
|
||||
<img src="./assert/img/wx.jpg" alt="wx" width="298px" height="398px"/>
|
||||
</div>
|
||||
|
||||
📧 咨询问题微信备注: ops
|
||||
📧 合作/功能定制备注: 合作
|
||||
|
||||
## 支持一下
|
||||
|
||||
<img src="./assert/img/support_pay.jpg" alt="收款码" width="540px"/>
|
||||
|
||||
🎁 为了项目能健康持续的发展, 我期望获得相应的资金支持, 你们的支持是我不断更新前进的动力!
|
||||
|
||||
## 免责声明
|
||||
|
||||
在使用本项目之前, 请确保您已经了解并同意相关的使用协议和隐私政策。[免责声明](DISCLAIMER.md)
|
||||
|
||||
## License
|
||||
|
||||
本项目遵循 [Apache-2.0](https://github.com/lijiahangmax/orion-ops-pro/blob/main/LICENSE) 开源许可证。
|
||||
@@ -1,11 +0,0 @@
|
||||
# orion-ops-pro <small>1.0.4</small>
|
||||
|
||||
> 一款开箱即用的运维平台。
|
||||
|
||||
- 友好 易用
|
||||
- 安全 稳定
|
||||
- 智能 高效
|
||||
|
||||
[GitHub](https://github.com/lijiahangmax/orion-ops-pro)
|
||||
[Gitee](https://gitee.com/lijiahangmax/orion-ops-pro)
|
||||
[Get Started](README.md)
|
||||
@@ -1,15 +0,0 @@
|
||||
* 关于
|
||||
* [Roadmap](about/roadmap.md)
|
||||
* [更新日志](about/change-log.md)
|
||||
* 快速开始
|
||||
* [docker安装](quickstart/docker-install.md)
|
||||
* [普通安装](quickstart/install.md)
|
||||
* [本地调试](quickstart/dev.md)
|
||||
* [常见问题](quickstart/faq.md)
|
||||
* 操作手册
|
||||
* [资产管理](operator/asset.md)
|
||||
* [主机运维](operator/host-ops.md)
|
||||
* [命令执行](operator/exec.md)
|
||||
* [运维审计](operator/asset-audit.md)
|
||||
* [用户管理](operator/user.md)
|
||||
* [系统管理](operator/system.md)
|
||||
@@ -1,100 +0,0 @@
|
||||
> 版本号严格遵循 Semver 规范。
|
||||
|
||||
⚡ 注意: 应用不支持跨版本升级, 可以进行多次升级
|
||||
|
||||
## v1.0.4
|
||||
|
||||
`2024-04-15` `release`
|
||||
|
||||
* 🚀 升级 `orion-kit` 到 `1.0.7`
|
||||
* 🐞 修复 批量执行选择模板后默认参数未自动设置
|
||||
* 🐞 修复 主机列表卡片视图重置条件后 tag 消失
|
||||
* 🐞 修复 主机分组授权页面刷新不显示 loading
|
||||
* 🐞 修复 面包屑组件路径显示不全的问题
|
||||
* 🐞 修复 数据字典历史提示无权限
|
||||
* 🐞 修复 批量执行较短命令日志不显示
|
||||
* 🩰 修改 主机终端亮色模式配色
|
||||
* 🩰 修改 执行模板 UI 修改
|
||||
* 🌈 新增 计划任务模块
|
||||
* 🌈 新增 计划任务日志模块
|
||||
* 🔨 添加 quartz 配置
|
||||
* 🔨 修改 redisson 配置
|
||||
* 🔨 优化 orion-ops-framework 配置规范化
|
||||
* 🔨 优化 前端 props 命名规范化
|
||||
|
||||
[如何升级](/update/v1.0.4.md)
|
||||
|
||||
## v1.0.3
|
||||
|
||||
`2024-03-25` `release`
|
||||
|
||||
* 🚀 升级 `arco design` 到 `2.55.0`
|
||||
* 🐞 修复 新创建的用户登录会跳转到 **404**
|
||||
* 🐞 修复 分配菜单模态框没有子菜单不显示的问题
|
||||
* 🐞 修复 工作台页面快捷操作面板会展示隐藏的菜单
|
||||
* 🐞 修复 主机终端无法粘贴 (浏览器安全策略)
|
||||
* 🐞 修复 卡片列表组件控制台 warn 提示
|
||||
* 🐞 修复 关闭终端时控制台提示 handleResize 错误信息
|
||||
* 🔨 修改 系统菜单渲染逻辑 (移除 JSX 构建时不会提示 JSX.IntrinsicElements)
|
||||
|
||||
[如何升级](/update/v1.0.3.md)
|
||||
|
||||
## v1.0.2
|
||||
|
||||
`2024-03-22` `release`
|
||||
|
||||
* 🐞 修复 SFTP 加载失败后一直 loading
|
||||
* 🐞 修复 主机终端搜索框报错
|
||||
* 🐞 修复 SSH 配置未启用还可以连接
|
||||
* 🐞 修复 主机配置保存后无法修改状态
|
||||
* 🐞 修复 添加快捷命令时编辑器无代码提示
|
||||
* 🔨 修改 菜单路由命名逻辑修改
|
||||
* 🔨 优化 前端组件命名规范化
|
||||
* 🔨 优化 前端 emit 命名规范化
|
||||
* 🌈 新增 双击终端会话 Tab 快速复制
|
||||
* 🌈 新增 批量执行命令
|
||||
* 🌈 新增 命令执行日志
|
||||
* 🌈 新增 执行模板功能
|
||||
|
||||
[如何升级](/update/v1.0.2.md)
|
||||
|
||||
## v1.0.1
|
||||
|
||||
`2024-03-06` `release`
|
||||
|
||||
* 🐞 修复 用户操作日志条件重置后类型框数据不正常的问题
|
||||
* 🩰 修改 主机连接日志 UI
|
||||
* 🌈 新增 SFTP 使用日志列表
|
||||
* 🌈 新增 主机连接日志强制下线会话
|
||||
* 🌈 新增 主机连接日志删除/清理
|
||||
* 🌈 新增 用户操作日志日志删除/清理
|
||||
* 🌈 新增 用户操作日志日志删除/清理
|
||||
* 🔨 优化 用户锁定次数/时间可配置
|
||||
|
||||
[如何升级](/update/v1.0.1.md)
|
||||
|
||||
## v1.0.0
|
||||
|
||||
`2024-03-01` `release`
|
||||
|
||||
* 🌈 新增 用户自定义终端标签颜色
|
||||
* 🔨 拓展数据模块添加缓存
|
||||
|
||||
[如何升级](/update/v1.0.0.md)
|
||||
|
||||
## v1.0.0-beta.1
|
||||
|
||||
`2024-02-28` `preview`
|
||||
|
||||
* 🌈 主机管理
|
||||
* 🌈 主机秘钥
|
||||
* 🌈 主机身份
|
||||
* 🌈 资产授权
|
||||
* 🌈 主机终端
|
||||
* 🌈 连接日志
|
||||
* 🌈 角色管理
|
||||
* 🌈 用户管理
|
||||
* 🌈 操作日志
|
||||
* 🌈 系统菜单
|
||||
* 🌈 数据字典项
|
||||
* 🌈 数据字典值
|
||||
@@ -1,24 +0,0 @@
|
||||
## 功能排期 ⏳
|
||||
|
||||
* tracker 使用配置文件
|
||||
* 文件重复删除/重命名 可配置
|
||||
* 定时删除未引用的 tag
|
||||
* 管理员也需要自行授权资产
|
||||
* 使用文件执行命令
|
||||
* 主机身份类型
|
||||
* 文件夹书签
|
||||
* 批量上传
|
||||
* 优化文件传输列表进度显示
|
||||
* 终端断开连接后回车重新连接
|
||||
* 站内消息
|
||||
* 终端背景图片
|
||||
* 资产授权 UI 改版
|
||||
* RDP 远程桌面
|
||||
* 接入 config 后端动态配置
|
||||
* 文档中巡检模板
|
||||
* 批量执行 模板 定时任务 配置是否使用文件执行
|
||||
* 使用 vite press 开发文档
|
||||
|
||||
## 已知问题 🐞
|
||||
|
||||
* 顶部菜单折叠宽度计算有问题 (arco 框架内问题)
|
||||
9
docs/assert/docsify-copy-code.min.js
vendored
@@ -1,9 +0,0 @@
|
||||
/*!
|
||||
* docsify-copy-code
|
||||
* v2.1.1
|
||||
* https://github.com/jperasmus/docsify-copy-code
|
||||
* (c) 2017-2020 JP Erasmus <jperasmus11@gmail.com>
|
||||
* MIT license
|
||||
*/
|
||||
!function(){"use strict";function s(o){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:0;right:0;overflow:visible;padding:.65em .8em;border:0;border-radius:0;outline:0;font-size:1em;background:grey;background:var(--theme-color,grey);color:#fff;opacity:0}.docsify-copy-code-button span{border-radius:3px;background:inherit;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error,.docsify-copy-code-button.success .success{right:100%;opacity:1;-webkit-transform:translate(-115%,-50%);transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,r){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:"Copy to clipboard",errorText:"Error",successText:"Copied"};r.config.copyCode&&Object.keys(c).forEach(function(t){var n=r.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===s(n)&&Object.keys(n).some(function(o){var e=-1<location.href.indexOf(o);return c[t]=e?n[o]:c[t],e})});var e=['<button class="docsify-copy-code-button">','<span class="label">'.concat(c.buttonText,"</span>"),'<span class="error">'.concat(c.errorText,"</span>"),'<span class="success">'.concat(c.successText,"</span>"),"</button>"].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1e3))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1e3)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}();
|
||||
//# sourceMappingURL=docsify-copy-code.min.js.map
|
||||
1
docs/assert/docsify-pagination.min.js
vendored
@@ -1,242 +0,0 @@
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_SeW4Ep0.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_QOW4Ep0.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_R-W4Ep0.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_S-W4Ep0.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_SuW4Ep0.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Roboto Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/robotomono/v21/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_ROW4.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url(https://fonts.gstatic.com/s/sourcesanspro/v19/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 601 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 141 KiB |
@@ -1,17 +0,0 @@
|
||||
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<defs>
|
||||
<style>.cls-1{fill:url(#未命名的渐变_4);}.cls-2{fill:url(#未命名的渐变_6);}</style>
|
||||
<linearGradient id="未命名的渐变_4" x1="0.32" y1="15.03" x2="20.16" y2="15.03" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#23b6b6"/>
|
||||
<stop offset="1" stop-color="#189c98"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="未命名的渐变_6" x1="11.84" y1="16.97" x2="31.68" y2="16.97" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#08589b"/>
|
||||
<stop offset="1" stop-color="#2167b2"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path class="cls-1"
|
||||
d="M20,17.37a1.56,1.56,0,0,0-2.13-.65l-7.56,4.07A4.65,4.65,0,0,1,4,18.91H4a4.65,4.65,0,0,1,1.88-6.3L13.6,8.44a1.56,1.56,0,0,0,.64-2.1h0a1.56,1.56,0,0,0-2.13-.65l-8,4.3a7.24,7.24,0,0,0-2.94,9.82l.51.94a7.24,7.24,0,0,0,9.82,2.94l7.81-4.22a1.56,1.56,0,0,0,.65-2.1Z"/>
|
||||
<path class="cls-2"
|
||||
d="M12,14.63a1.56,1.56,0,0,0,2.13.65l7.56-4.07A4.65,4.65,0,0,1,28,13.09h0a4.65,4.65,0,0,1-1.88,6.3L18.4,23.56a1.56,1.56,0,0,0-.64,2.1h0a1.56,1.56,0,0,0,2.13.65l8-4.3a7.24,7.24,0,0,0,2.94-9.82l-.51-.94a7.24,7.24,0,0,0-9.82-2.94l-7.81,4.22a1.56,1.56,0,0,0-.65,2.1Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
1
docs/assert/search.min.js
vendored
BIN
docs/assets/gstar.jpg
Normal file
|
After Width: | Height: | Size: 427 KiB |
BIN
docs/assets/gvp.jpg
Normal file
|
After Width: | Height: | Size: 312 KiB |
22
docs/assets/logo.svg
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{fill:#3B28CC;}
|
||||
</style>
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="27.1802" y1="7.7935" x2="15.2269" y2="25.137">
|
||||
<stop offset="0" style="stop-color:#ADD7F6"/>
|
||||
<stop offset="0.2512" style="stop-color:#AAD5F6"/>
|
||||
<stop offset="0.4195" style="stop-color:#A1CDF7"/>
|
||||
<stop offset="0.5636" style="stop-color:#92C1F8"/>
|
||||
<stop offset="0.694" style="stop-color:#7DAFF9"/>
|
||||
<stop offset="0.8152" style="stop-color:#6198FB"/>
|
||||
<stop offset="0.9279" style="stop-color:#407CFD"/>
|
||||
<stop offset="1" style="stop-color:#2667FF"/>
|
||||
</linearGradient>
|
||||
<path class="st0" d="M31.41,4.01h-8.04c-0.27,0-0.51,0.18-0.57,0.44c-0.64,2.56-4.19,15.45-11.86,20.81c0,0,9.5,13.77,21.03-20.47
|
||||
C32.1,4.4,31.81,4.01,31.41,4.01z"/>
|
||||
<path class="st1" d="M0.62,3.98h8.02c0.28,0,0.52,0.18,0.59,0.45c0.69,2.58,4.47,15.52,12.14,20.88c0,0-10.88,13.73-21.34-20.54
|
||||
C-0.09,4.37,0.2,3.98,0.62,3.98z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
docs/assets/logo_267.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
docs/assets/logo_horizontal.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB |
BIN
docs/assets/screenshot/batch-upload.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
docs/assets/screenshot/exec-command.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
docs/assets/screenshot/exec-job.png
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
docs/assets/screenshot/exec-log.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
docs/assets/screenshot/host-list.png
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
docs/assets/screenshot/terminal-hosts.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
docs/assets/screenshot/terminal-rdp.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
docs/assets/screenshot/terminal-sftp.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
docs/assets/screenshot/terminal-ssh.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
docs/assets/screenshot/terminal-theme.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
docs/assets/screenshot/workplace.png
Normal file
|
After Width: | Height: | Size: 231 KiB |
BIN
docs/assets/vx.jpg
Normal file
|
After Width: | Height: | Size: 143 KiB |
@@ -1,2 +0,0 @@
|
||||
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" "http://localhost:3000/"
|
||||
docsify serve ./
|
||||
@@ -1,10 +0,0 @@
|
||||
### 如何使用
|
||||
|
||||
1. 安装 node
|
||||
2. 安装 docsify-cli
|
||||
```npm i docsify-cli -g```
|
||||
3. 在 doc 目录执行命令
|
||||
```docsify serve ./```
|
||||
4. 在浏览器访问 http://localhost:3000
|
||||
5. 官方文档 https://docsify.js.org/#/?id=docsify
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>关于 orion-ops-pro</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta name="description" content="Description">
|
||||
<link rel="icon" href="./assert/logo.svg">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<!-- Theme: Defaults -->
|
||||
<link rel="stylesheet" href="./assert/font.css">
|
||||
<link rel="stylesheet" href="./assert/vue.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
loading...
|
||||
</div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
// 左侧文档名称
|
||||
name: 'orion-ops-pro',
|
||||
// 右上角仓库
|
||||
repo: 'https://github.com/lijiahangmax/orion-ops-pro',
|
||||
coverpage: true,
|
||||
// 加载侧边栏
|
||||
loadSidebar: true,
|
||||
// 侧边栏折叠
|
||||
subMaxLevel: 3,
|
||||
// 标题搜索
|
||||
search: {
|
||||
// 过期时间
|
||||
// 搜索路径 []
|
||||
maxAge: 1000 * 60 * 60,
|
||||
paths: 'auto',
|
||||
placeholder: '搜索',
|
||||
// 无数据
|
||||
noData: '找不到结果',
|
||||
// 搜索标题的最大层级
|
||||
depth: 3,
|
||||
// 是否隐藏其他侧边栏内容
|
||||
hideOtherSidebarContent: false
|
||||
},
|
||||
// 页码
|
||||
pagination: {
|
||||
previousText: '上一章',
|
||||
nextText: '下一章',
|
||||
crossChapter: true,
|
||||
crossChapterText: true,
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<!-- Docsify v4 -->
|
||||
<script src="./assert/docsify@4.js"></script>
|
||||
<script src="./assert/docsify-pagination.min.js"></script>
|
||||
<script src="./assert/docsify-copy-code.min.js"></script>
|
||||
<script src="./assert/search.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
### 连接日志
|
||||
|
||||
在主机终端页面打开的 `SSH` `SFTP` 连接都会记录下来。
|
||||
|
||||
* 详情: 查看连接详情
|
||||
* 断开: 断开会话连接
|
||||
* 删除: 删除连接记录
|
||||
* 清理: 根据条件清理数据
|
||||
|
||||
### 文件操作日志
|
||||
|
||||
查看用户 SFTP 操作日志, 是从用户操作日志中过滤查询。
|
||||
|
||||
* 删除: 删除操作日志
|
||||
@@ -1,40 +0,0 @@
|
||||
### 主机管理
|
||||
|
||||
管理和维护可操作的主机。
|
||||
|
||||
* 主机分组: 设置主机分组以及组内数据
|
||||
* 角色授权: 跳转页面到主机授权页面(角色)
|
||||
* 用户授权: 跳转页面到主机授权页面(用户)
|
||||
* 新增: 添加一台主机
|
||||
* 修改: 修改主机信息
|
||||
* 配置: 修改主机配置信息
|
||||
* 删除: 删除这台主机以及主机关联的数据
|
||||
|
||||
### 主机秘钥
|
||||
|
||||
统一管理和维护用于连接主机的秘钥。
|
||||
|
||||
* 角色授权: 跳转页面到主机秘钥授权页面(角色)
|
||||
* 用户授权: 跳转页面到主机秘钥授权页面(用户)
|
||||
* 新增: 添加一个主机秘钥
|
||||
* 修改: 修改主机秘钥信息
|
||||
* 详情: 查看主机秘钥信息
|
||||
* 删除: 删除当前主机秘钥
|
||||
|
||||
### 主机身份
|
||||
|
||||
统一管理和维护用于连接主机的身份。这里同时维护了用户名,密码/秘钥。
|
||||
|
||||
* 角色授权: 跳转页面到主机身份授权页面(角色)
|
||||
* 用户授权: 跳转页面到主机身份授权页面(用户)
|
||||
* 新增: 添加一个主机身份
|
||||
* 修改: 修改主机身份信息
|
||||
* 删除: 删除当前主机身份
|
||||
|
||||
### 资产授权
|
||||
|
||||
给用户/角色授权资产数据, 若无授权则无法访问资产。
|
||||
|
||||
给用户授权时: 若当前选择的用户有管理员角色(admin)则无需配置, 管理员拥有全部权限。
|
||||
给角色授权时: 无需给管理员(admin)配置, 管理员拥有全部权限。
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
### 批量执行
|
||||
|
||||
批量执行 ssh 主机 shell 脚本。
|
||||
|
||||
* 重置: 重置全部参数
|
||||
* 执行: 执行所输入的命令
|
||||
* 返回: 返回到执行命令页面
|
||||
* 从模板中选择: 从模板中选择需要执行的命令
|
||||
* 执行历史: 点击历史命令可以快速填入
|
||||
|
||||
### 批量执行日志
|
||||
|
||||
查看批量执行任务日志。
|
||||
|
||||
* 执行命令: 跳转到批量执行页面
|
||||
* 清空: 清空执行日志
|
||||
* 删除: 删除执行日志
|
||||
* 重新执行: 重新执行此命令
|
||||
* 命令: 查看执行时的命令
|
||||
* 参数: 查看执行时的参数
|
||||
* 中断: 中断命令执行
|
||||
* 日志: 查看执行日志, ctrl + 左键点击会用新页面打开
|
||||
* 下载: 下载执行日志
|
||||
|
||||
### 计划任务
|
||||
|
||||
维护计划任务, 定时执行命令。
|
||||
|
||||
* 新增: 新增计划任务
|
||||
* 详情: 查看计划任务详情
|
||||
* 修改: 修改计划任务
|
||||
* 状态: 修改计划任务状态
|
||||
* 手动触发: 手动触发计划任务
|
||||
* 删除: 删除计划任务
|
||||
|
||||
### 计划任务日志
|
||||
|
||||
查看计划任务执行日志
|
||||
|
||||
* 清空: 清空执行日志
|
||||
* 删除: 删除执行日志
|
||||
* 命令: 查看执行时的命令
|
||||
* 参数: 查看执行时的参数
|
||||
* 中断: 中断命令执行
|
||||
* 日志: 查看执行日志, ctrl + 左键点击会用新页面打开
|
||||
* 下载: 下载执行日志
|
||||
|
||||
### 执行模板
|
||||
|
||||
用来维护批量执行的命令模板, 支持动态参数, 使用 `@{{ xxx }}` 来替换命令参数。
|
||||
|
||||
* 新增: 新增执行模板
|
||||
* 执行: 打开命令执行框并且带入模板参数
|
||||
* 修改: 修改执行模板
|
||||
* 删除: 删除执行模板
|
||||
|
||||
> 日志面板快捷键
|
||||
|
||||
* 回车: `Enter`
|
||||
* 向上滚动一行: `↑`
|
||||
* 向上滚动一页: `Home`
|
||||
* 向下滚动一行: `↓`
|
||||
* 向下滚动一页: `End`
|
||||
* 全选: `ctrl` `A`
|
||||
* 复制: `ctrl` `C`
|
||||
* 搜索: `ctrl` `F`
|
||||
* 清空: `ctrl` `L`
|
||||
|
||||
> 命令内置参数
|
||||
|
||||
⚡ 使用 `@{{ xxx }}` 来替换命令参数
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------------|:--------------------------|
|
||||
| source | 执行来源 (BATCH/JOB) |
|
||||
| sourceId | 执行来源id (JOB特有) |
|
||||
| seq | 执行序列 (JOB特有) |
|
||||
| execId | 执行记录id |
|
||||
| hostId | 执行主机id |
|
||||
| hostName | 执行主机名称 |
|
||||
| hostCode | 执行主机编码 |
|
||||
| hostAddress | 执行主机地址 |
|
||||
| userId | 执行用户id |
|
||||
| username | 执行用户名 |
|
||||
| uuid | 生成任务维度 uuid |
|
||||
| uuidShort | 生成任务维度 uuid 无 '-' |
|
||||
| hostUuid | 生成机器维度 uuid |
|
||||
| hostUuidShort | 生成机器维度 uuid 无 '-' |
|
||||
| timestampMillis | 时间戳毫秒 |
|
||||
| timestamp | 时间戳 |
|
||||
| date | 执行时间 yyyy-MM-dd |
|
||||
| datetime | 执行时间 yyyy-MM-dd HH:mm :ss |
|
||||
@@ -1,44 +0,0 @@
|
||||
### 主机终端
|
||||
|
||||
主机终端页面 支持 SSH, SFTP。
|
||||
打开后默认会进入新建连接页面, 页面的主机数据是用户授权的资产数据。
|
||||
鼠标移入列表内的主机上时, 右侧会出现 `打开 SSH` `打开 SFTP` `主机设置` `收藏` 的按钮。
|
||||
|
||||
> 主机设置
|
||||
|
||||
* SSH 配置: 可以自定义配置连接主机的 密码/秘钥/身份, 仅对自己生效, 不会修改全局配置, `秘钥` `身份` 数据是用户授权的资产数据
|
||||
* 标签颜色: 自定义配置标签的颜色, 可以用来区分环境等
|
||||
|
||||
> 顶部状态栏
|
||||
|
||||
* 全屏: 开启或关闭全屏
|
||||
|
||||
> 左侧状态栏
|
||||
|
||||
* 新建连接: 新建主机连接 `SSH` `SFTP`
|
||||
* 快捷键设置: 配置 `全局` `会话` `终端` 的快捷键
|
||||
* 显示设置: 配置终端 `显示偏好` `操作栏按钮` `右键菜单` 设置
|
||||
* 主题设置: 修改终端主题配色
|
||||
* 终端设置: 配置终端 `交互` `插件` `会话` 设置
|
||||
|
||||
> 右侧状态栏
|
||||
|
||||
* 命令片段: 自定义快速执行的命令片段, 双击直接执行
|
||||
* 传输列表: 打开文件传输列表, 当前会话下, 所有的文件上传下载传输都会显示在这里
|
||||
* 截图: 截屏终端并且自动下载
|
||||
|
||||
> 文件传输
|
||||
|
||||
点击上传或者下载后会自动添加到传输列表。
|
||||
|
||||
* 上传: 关闭页面自动清除
|
||||
* 下载: 下载完成后自动下载, 关闭页面自动清除
|
||||
|
||||
> SFTP
|
||||
|
||||
* 预览: 默认只能预览 2MB 以内的普通文件, 这个大小可以在前端 env 文件中修改 `VITE_SFTP_PREVIEW_MB`
|
||||
* 上传: 如果文件已存在则自动重命名之前的文件
|
||||
|
||||
> 终端面板
|
||||
|
||||
⭐ 双击终端标签可快速复制会话
|
||||
@@ -1,27 +0,0 @@
|
||||
### 系统菜单
|
||||
|
||||
管理系统菜单。点击 `状态` 可以快速切换 启用/停用 和 显示/隐藏。
|
||||
|
||||
* 新增: 添加一个菜单
|
||||
* 刷新缓存: 强制刷新服务器缓存, 一般是手动修改了数据库后需要点击此按钮
|
||||
* 修改: 修改菜单信息
|
||||
* 删除: 删除菜单以及子菜单
|
||||
|
||||
### 数据字典项
|
||||
|
||||
维护数据字典项, 前端统一显示。
|
||||
|
||||
* 新增: 添加一个字典项
|
||||
* 刷新缓存: 强制刷新服务器缓存, 一般是手动修改了数据库后需要点击此按钮
|
||||
* 查看: 查看字典值的json
|
||||
* 修改: 修改字典项
|
||||
* 删除: 删除字典项以及字典值
|
||||
|
||||
### 数据字典值
|
||||
|
||||
维护数据字典项对应的值。
|
||||
|
||||
* 新增: 新增字典值
|
||||
* 修改: 修改字典值
|
||||
* 历史: 查询当前字典值的修改历史
|
||||
* 删除: 删除字典值
|
||||
@@ -1,28 +0,0 @@
|
||||
### 角色管理
|
||||
|
||||
定义以及维护系统内的角色。 `admin` 是管理员角色, 无法删除/停用/分配菜单。
|
||||
|
||||
* 新增: 新增角色
|
||||
* 启用/停用: 启用/停用角色, 停用后授权的数据/菜单将无法使用
|
||||
* 分配菜单: 给角色分配菜单
|
||||
* 修改: 修改角色名称
|
||||
* 删除: 删除当前角色, 如果已被关联则移除用户关联
|
||||
|
||||
### 用户管理
|
||||
|
||||
维护系统内的用户。
|
||||
|
||||
* 新增: 新增用户
|
||||
* 启用/停用: 启用/停用角色, 停用后则无法登录系统
|
||||
* 修改: 修改用户的基本信息
|
||||
* 详情: 查看用户的基本信息, 登录日志, 当前登录设备, 操作日志
|
||||
* 重置密码: 重置用户密码
|
||||
* 分配角色: 设置用户绑定的角色
|
||||
* 删除: 删除当前用户以及用户数据
|
||||
|
||||
### 操作日志
|
||||
|
||||
记录用户在系统内的操作日志。
|
||||
|
||||
* 详情: 查看操作的参数以及留痕信息
|
||||
* 清理: 根据条件清理数据
|
||||
@@ -1,72 +0,0 @@
|
||||
### 所需环境
|
||||
|
||||
* JDK 1.8
|
||||
* Mysql 8.0(+)
|
||||
* Redis 5.0.5(+)
|
||||
* Node 16.16.0(+)
|
||||
* Maven 3.5.4(+)
|
||||
|
||||
⚡ maven 推荐使用阿里云 mirror
|
||||
⚡ npm 建议使用淘宝镜像 `npm config set registry https://registry.npmmirror.com/`
|
||||
|
||||
### 配置
|
||||
|
||||
1. 拉取代码
|
||||
|
||||
```
|
||||
# github
|
||||
git clone https://github.com/lijiahangmax/orion-ops-pro
|
||||
# gitee
|
||||
git clone https://gitee.com/lijiahangmax/orion-ops-pro
|
||||
```
|
||||
|
||||
2. 初始化数据库
|
||||
|
||||
```
|
||||
# 执行脚本
|
||||
orion-ops-pro/sql/init-1-schema-databases.sql
|
||||
orion-ops-pro/sql/init-2-schema-tables.sql
|
||||
orion-ops-pro/sql/init-3-data.sql
|
||||
```
|
||||
|
||||
3. 修改后端配置
|
||||
|
||||
```
|
||||
# 修改配置文件 (mysql, redis, secret-key)
|
||||
orion-ops-pro/orion-ops-launch/src/main/resources/application-prod.yaml
|
||||
|
||||
# 进入代码目录
|
||||
cd orion-ops-pro
|
||||
# 编译
|
||||
mvn -U clean install -DskipTests
|
||||
# 启动
|
||||
com.orion.ops.launch.LaunchApplication
|
||||
```
|
||||
|
||||
4. 修改前端配置
|
||||
|
||||
```
|
||||
# 进入代码目录
|
||||
cd orion-ops-pro/orion-ops-ui
|
||||
# 下载 pnpm
|
||||
npm i -g pnpm
|
||||
# 下载依赖
|
||||
pnpm i
|
||||
# 运行
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### 测试访问
|
||||
|
||||
启动前端后会自动打开浏览器 输入
|
||||
账号: `admin`
|
||||
密码: `admin`
|
||||
|
||||
### 文档
|
||||
|
||||
文档只有在 `dev` 环境才可以访问
|
||||
|
||||
- swagger 文档 http://127.0.0.1:9200/doc.html
|
||||
- druid console http://127.0.0.1:9200/druid/index.html
|
||||
- actuator endpoint http://127.0.0.1:9200/actuator
|
||||
- admin console http://127.0.0.1:9200/admin
|
||||
@@ -1,59 +0,0 @@
|
||||
### 所需环境
|
||||
|
||||
* Docker 20.10.14+
|
||||
* Docker Compose 2.3.3+
|
||||
|
||||
由于访问 DockerHub 镜像比较慢, 可以修改一下配置加速镜像 /etc/docker/daemon.json, 如果没有此文件可以创建此文件 (Linux系统, Window 和 Mac 直接可以通过 Docker 的
|
||||
Dashboard 修改)
|
||||
|
||||
```json
|
||||
{
|
||||
"registry-mirrors": [
|
||||
"https://registry.docker-cn.com",
|
||||
"https://registry.cn-hangzhou.aliyuncs.com",
|
||||
"https://mirror.ccs.tencentyun.com",
|
||||
"https://docker.mirrors.ustc.edu.cn"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 构建镜像
|
||||
|
||||
```
|
||||
# 进入仓库目录
|
||||
cd orion-ops-pro
|
||||
# 修改 docker-compose.yml (建议修改)
|
||||
# MYSQL_USER mysql 用户名
|
||||
# MYSQL_PASSWORD mysql 用户密码
|
||||
# MYSQL_ROOT_PASSWORD mysql root 密码
|
||||
# REDIS_PASSWORD redis 密码
|
||||
# SECRET_KEY 加密秘钥
|
||||
# 构建
|
||||
docker compose build
|
||||
```
|
||||
|
||||
### 启动
|
||||
|
||||
```
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 连接 mysql (如果需要在 navicat 中连接)
|
||||
|
||||
```
|
||||
访问 adminer: http://localhost:8081
|
||||
服务器: orion-ops-pro-db
|
||||
用户名: root
|
||||
密码: Data@123456
|
||||
数据库: orion-ops-pro
|
||||
|
||||
点击左侧 SQL命令 输入:
|
||||
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Data@123456';
|
||||
执行 OK
|
||||
```
|
||||
|
||||
### 测试访问
|
||||
|
||||
在浏览器中输入 http://localhost:1081/ 访问
|
||||
账号: admin
|
||||
密码: admin
|
||||
@@ -1,50 +0,0 @@
|
||||
> ##### 1. 数据误删除怎么办?
|
||||
|
||||
数据库的数据都采用了逻辑删除, 可以将已删除的数据中的 `deleted` 字段改为 `0`
|
||||
如果不知道数据是哪一条, 可以查询用户操作日志, 点击 `参数` 寻找操作的id
|
||||
|
||||
> ##### 2. 是否支持维护 Windows 主机?
|
||||
|
||||
支持, 但是 Windows 的 ssh 命令兼容性不好, 一切需要执行ssh命令的地方都不友好
|
||||
如: 批量执行, 调度任务兼容性非常不友好
|
||||
|
||||
> ##### 3. 执行命令时为什么会找不到环境变量?
|
||||
|
||||
可以在执行命令的第一行设置 `source /etc/profile` 来加载环境变量
|
||||
|
||||
> ##### 4. 命令中途执行失败如何设置中断执行?
|
||||
|
||||
可以在执行命令的第一行设置 `set -e`
|
||||
作用是: 当执行出现意料之外的情况时, 立即退出
|
||||
|
||||
> ##### 5. 在调度任务、批量执行 命令执行成功的依据是什么?
|
||||
|
||||
是获取命令的 `exitcode` 判断是否为 `0` 如果非0则代表命令执行失败
|
||||
同理, 在命令的最后一行设置 `exit 1` 结果将会是失败, 可以用此来中断后续流程
|
||||
|
||||
> ##### 6. 为什么使用秘钥认证还是无法连接机器?
|
||||
|
||||
```
|
||||
# 升级 openssh
|
||||
yum update openssh
|
||||
sshd -v (我的版本: OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017)
|
||||
|
||||
# 生成秘钥时添加参数 -m PEM
|
||||
ssh-keygen -t rsa -m PEM
|
||||
chmod 700 ~/.ssh
|
||||
chmod 700 ~/.ssh/authorized_keys
|
||||
|
||||
# 修改 sshd 配置 /etc/ssh/sshd_config
|
||||
PubkeyAuthentication yes
|
||||
RSAAuthentication yes
|
||||
AuthorizedKeysFile .ssh/authorized_keys
|
||||
|
||||
# 重启 sshd 服务
|
||||
service sshd restart
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
⚡ 详细使用请参考操作手册~
|
||||
|
||||
<br/>
|
||||
@@ -1,133 +0,0 @@
|
||||
### 所需环境
|
||||
|
||||
* JDK 1.8
|
||||
* Mysql 8.0(+)
|
||||
* Redis 5.0.5(+)
|
||||
* Node 16.16.0(+)
|
||||
* Maven 3.5.4(+)
|
||||
* Nginx
|
||||
|
||||
⚡ maven 推荐使用阿里云 mirror
|
||||
⚡ npm 建议使用淘宝镜像 `npm config set registry https://registry.npmmirror.com/`
|
||||
|
||||
### 构建
|
||||
|
||||
1. 拉取代码
|
||||
|
||||
```
|
||||
# github
|
||||
git clone https://github.com/lijiahangmax/orion-ops-pro
|
||||
# gitee
|
||||
git clone https://gitee.com/lijiahangmax/orion-ops-pro
|
||||
```
|
||||
|
||||
2. 初始化数据库
|
||||
|
||||
```
|
||||
# 执行脚本
|
||||
orion-ops-pro/sql/init-1-schema-databases.sql
|
||||
orion-ops-pro/sql/init-2-schema-tables.sql
|
||||
orion-ops-pro/sql/init-3-data.sql
|
||||
```
|
||||
|
||||
3. 构建后端代码
|
||||
|
||||
```
|
||||
# 修改配置文件 (mysql, redis, secret-key)
|
||||
orion-ops-pro/orion-ops-launch/src/main/resources/application-prod.yaml
|
||||
|
||||
# 进入代码目录
|
||||
cd orion-ops-pro
|
||||
# 编译
|
||||
mvn -U clean install -DskipTests
|
||||
```
|
||||
|
||||
4. 构建前端代码
|
||||
|
||||
```
|
||||
# 进入代码目录
|
||||
cd orion-ops-pro/orion-ops-ui
|
||||
# 下载 pnpm
|
||||
npm i -g pnpm
|
||||
# 下载依赖
|
||||
pnpm i
|
||||
# 编译
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### 修改 nginx 配置
|
||||
|
||||
```
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
client_max_body_size 1024m;
|
||||
|
||||
# 是否启动 gzip 压缩
|
||||
gzip on;
|
||||
# 需要压缩的常见静态资源
|
||||
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
|
||||
# 如果文件大于 1k 就启动压缩
|
||||
gzip_min_length 1k;
|
||||
# 缓冲区
|
||||
gzip_buffers 4 16k;
|
||||
# 压缩的等级
|
||||
gzip_comp_level 2;
|
||||
# access_log /var/log/nginx/host.access.log main;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# web history 模式 404
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
location /orion/api {
|
||||
proxy_pass http://localhost:9200/orion/api;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /orion/keep-alive {
|
||||
proxy_pass http://localhost:9200/orion/keep-alive;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 3600s;
|
||||
proxy_send_timeout 3600s;
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root /usr/share/nginx/html;
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
### 部署
|
||||
|
||||
```
|
||||
复制 orion-ops-pro/orion-ops-ui/dist 到 /usr/share/nginx/html
|
||||
复制 orion-ops-pro/orion-ops-launch/target/orion-ops-launch.jar 到 /data/orion
|
||||
# 启动后台服务
|
||||
nohup java -jar orion-ops-launch.jar --spring.profiles.active=prod 2>&1 &
|
||||
# 启动 nginx
|
||||
service nginx start
|
||||
```
|
||||
|
||||
### 测试访问
|
||||
|
||||
在浏览器中输入 http://localhost 访问
|
||||
账号: `admin`
|
||||
密码: `admin`
|
||||
@@ -1,22 +0,0 @@
|
||||
## v1.0.0
|
||||
|
||||
> sql 脚本 - DML
|
||||
|
||||
```sql
|
||||
-- 字典配置项
|
||||
DELETE FROM `dict_key` WHERE id >= 32;
|
||||
INSERT INTO `dict_key` VALUES (32, 'terminalTabColor', 'COLOR', '[]', '终端标签页颜色', '2024-03-01 15:01:44', '2024-03-01 15:01:44', '1', '1', 0);
|
||||
|
||||
-- 字典配置值
|
||||
DELETE FROM `dict_value` WHERE id >= 203;
|
||||
INSERT INTO `dict_value` VALUES (203, 32, 'terminalTabColor', 'rgb(var(--red-6))', '红色', '{}', 10, '2024-03-01 15:07:41', '2024-03-01 15:07:41', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (204, 32, 'terminalTabColor', 'rgb(var(--orange-6))', '橙色', '{}', 20, '2024-03-01 15:07:55', '2024-03-01 15:07:55', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (205, 32, 'terminalTabColor', 'rgb(var(--yellow-6))', '黄色', '{}', 30, '2024-03-01 15:08:13', '2024-03-01 15:08:13', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (206, 32, 'terminalTabColor', 'rgb(var(--green-6))', '绿色', '{}', 40, '2024-03-01 15:08:23', '2024-03-01 15:08:23', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (207, 32, 'terminalTabColor', 'rgb(var(--cyan-6))', '青色', '{}', 50, '2024-03-01 15:08:46', '2024-03-01 15:08:46', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (208, 32, 'terminalTabColor', 'rgb(var(--blue-6))', '浅蓝', '{}', 60, '2024-03-01 15:11:01', '2024-03-01 15:11:01', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (209, 32, 'terminalTabColor', 'rgb(var(--arcoblue-6))', '蓝色', '{}', 70, '2024-03-01 15:11:11', '2024-03-01 15:11:11', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (210, 32, 'terminalTabColor', 'rgb(var(--purple-6))', '紫色', '{}', 80, '2024-03-01 15:11:20', '2024-03-01 15:11:20', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (211, 32, 'terminalTabColor', 'rgb(var(--pinkpurple-6))', '粉紫', '{}', 90, '2024-03-01 15:11:41', '2024-03-01 15:11:41', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (213, 32, 'terminalTabColor', 'rgb(var(--gray-6))', '灰色', '{}', 100, '2024-03-01 15:12:01', '2024-03-01 15:39:34', '1', '1', 0);
|
||||
```
|
||||
@@ -1,51 +0,0 @@
|
||||
## v1.0.1
|
||||
|
||||
> sql 脚本 - DDL
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `command_template`;
|
||||
ALTER TABLE `operator_log` ADD INDEX `idx_type`(`type`);
|
||||
```
|
||||
|
||||
> sql 脚本 - DML
|
||||
|
||||
```sql
|
||||
-- 菜单配置
|
||||
DELETE FROM `system_menu` WHERE id >= 148;
|
||||
INSERT INTO `system_menu` VALUES (148, 152, '连接日志', NULL, 2, 10, 1, 1, 1, 0, 'IconLink', NULL, 'assetAuditConnectLog', '2023-12-26 22:53:07', '2024-03-05 23:31:23', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (149, 148, '查询连接日志', 'asset:host-connect-log:management:query', 3, 10, 1, 1, 1, 0, NULL, NULL, NULL, '2023-12-26 22:53:08', '2024-03-04 13:40:42', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (152, 0, '运维审计', NULL, 1, 410, 1, 1, 1, 0, 'IconSafe', NULL, 'assetAudit', '2024-01-04 17:54:56', '2024-03-05 23:31:10', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (153, 148, '删除连接日志', 'asset:host-connect-log:management:delete', 3, 20, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-04 13:39:46', '2024-03-04 13:40:29', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (154, 148, '清空连接日志', 'asset:host-connect-log:management:clear', 3, 30, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-04 13:40:05', '2024-03-04 13:40:34', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (155, 148, '强制断开连接', 'asset:host-connect-log:management:force-offline', 3, 40, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-04 13:41:02', '2024-03-05 23:32:01', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (156, 122, '删除操作日志', 'infra:operator-log:delete', 3, 20, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-04 17:06:55', '2024-03-04 17:08:22', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (157, 122, '清空操作日志', 'infra:operator-log:clear', 3, 30, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-04 17:07:25', '2024-03-04 17:08:27', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (158, 152, 'SFTP 操作日志', NULL, 2, 20, 1, 1, 1, 0, 'IconFile', NULL, 'assetAuditSftpLog', '2024-03-05 15:30:13', '2024-03-05 23:31:32', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (159, 158, '查询 SFTP 操作日志', 'asset:host-sftp-log:management:query', 3, 10, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-05 15:31:02', '2024-03-05 15:57:20', '1', '1', 0);
|
||||
INSERT INTO `system_menu` VALUES (160, 158, '删除 SFTP 操作日志', 'asset:host-sftp-log:management:delete', 3, 20, 1, 1, 1, 0, NULL, NULL, NULL, '2024-03-05 15:31:17', '2024-03-05 15:57:30', '1', '1', 0);
|
||||
|
||||
-- 字典配置项
|
||||
DELETE FROM `dict_key` WHERE id >= 33;
|
||||
INSERT INTO `dict_key` VALUES (33, 'sftpOperatorType', 'STRING', '[]', 'SFTP 操作类型', '2024-03-05 16:49:54', '2024-03-05 16:49:54', '1', '1', 0);
|
||||
|
||||
-- 字典配置值
|
||||
DELETE FROM `dict_value` WHERE id >= 214;
|
||||
INSERT INTO `dict_value` VALUES (214, 28, 'hostConnectStatus', 'FORCE_OFFLINE', '强制下线', '{\"color\": \"rgb(var(--red-6))\"}', 40, '2024-03-04 12:51:13', '2024-03-04 12:51:13', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (215, 1, 'operatorLogModule', 'asset:host-connect-log', '主机连接日志', '{}', 2060, '2024-03-04 13:43:33', '2024-03-04 13:43:33', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (216, 2, 'operatorLogType', 'host-connect-log:delete', '删除记录', '{}', 10, '2024-03-04 13:44:34', '2024-03-04 13:44:34', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (217, 2, 'operatorLogType', 'host-connect-log:clear', '清空记录', '{}', 20, '2024-03-04 13:45:07', '2024-03-04 14:22:08', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (218, 2, 'operatorLogType', 'host-connect-log:force-offline', '强制下线', '{}', 30, '2024-03-04 13:45:36', '2024-03-04 13:45:36', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (219, 1, 'operatorLogModule', 'infra:operator-log', '操作日志', '{}', 1060, '2024-03-04 16:32:11', '2024-03-04 16:32:11', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (220, 2, 'operatorLogType', 'operator-log:delete', '删除操作日志', '{}', 10, '2024-03-04 16:33:11', '2024-03-04 16:33:44', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (221, 2, 'operatorLogType', 'operator-log:clear', '清空操作日志', '{}', 20, '2024-03-04 16:33:31', '2024-03-04 16:33:31', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (222, 2, 'operatorLogType', 'host-terminal:delete-sftp-log', '删除SFTP操作日志', '{}', 15, '2024-03-05 15:28:00', '2024-03-05 17:40:47', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (223, 33, 'sftpOperatorType', 'host-terminal:sftp-mkdir', '创建文件夹', '{}', 10, '2024-03-05 16:50:17', '2024-03-05 16:50:17', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (224, 33, 'sftpOperatorType', 'host-terminal:sftp-touch', '创建文件', '{}', 20, '2024-03-05 16:50:27', '2024-03-05 16:50:27', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (225, 33, 'sftpOperatorType', 'host-terminal:sftp-move', '移动文件', '{}', 30, '2024-03-05 16:50:41', '2024-03-05 16:50:41', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (226, 33, 'sftpOperatorType', 'host-terminal:sftp-remove', '删除文件', '{}', 40, '2024-03-05 16:50:53', '2024-03-05 16:50:53', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (227, 33, 'sftpOperatorType', 'host-terminal:sftp-truncate', '截断文件', '{}', 50, '2024-03-05 16:51:04', '2024-03-05 16:51:04', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (228, 33, 'sftpOperatorType', 'host-terminal:sftp-chmod', '文件提权', '{}', 60, '2024-03-05 16:51:15', '2024-03-05 16:51:15', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (229, 33, 'sftpOperatorType', 'host-terminal:sftp-set-content', '修改文件内容', '{}', 70, '2024-03-05 16:51:30', '2024-03-05 16:51:48', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (230, 33, 'sftpOperatorType', 'host-terminal:sftp-upload', '上传文件', '{}', 80, '2024-03-05 16:52:06', '2024-03-05 16:52:06', '1', '1', 0);
|
||||
INSERT INTO `dict_value` VALUES (231, 33, 'sftpOperatorType', 'host-terminal:sftp-download', '下载文件', '{}', 90, '2024-03-05 16:52:18', '2024-03-05 16:52:18', '1', '1', 0);
|
||||
```
|
||||