CrazyIter_Bin 4 months ago
parent
commit
fe9ba02b99
43 changed files with 303 additions and 781 deletions
  1. 13 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/.config/dotnet-tools.json
  2. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/cert.pem
  3. 0 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/certificate.bat
  4. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/certificate.cer
  5. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/key.pem
  6. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/cert.pem
  7. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/certificate.cer
  8. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/key.pem
  9. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/cert.pem
  10. 0 74
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.bat
  11. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.cer
  12. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/key.pem
  13. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/cert.pem
  14. 0 74
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.bat
  15. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.cer
  16. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/key.pem
  17. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/cert.pem
  18. 0 74
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.bat
  19. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.cer
  20. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/key.pem
  21. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/cert.pem
  22. 0 74
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.bat
  23. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.cer
  24. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/key.pem
  25. 0 22
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/cert.pem
  26. 0 74
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.bat
  27. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.cer
  28. 0 28
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/key.pem
  29. 2 2
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/IndexController.cs
  30. 33 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/WeatherForecastController.cs
  31. 41 18
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/IES.ExamServer.csproj
  32. 15 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Models/ServerDevice.cs
  33. 6 6
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Program.cs
  34. 5 5
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Properties/launchSettings.json
  35. 54 1
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Services/IndexService.cs
  36. 13 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/WeatherForecast.cs
  37. 4 32
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/appsettings.json
  38. 0 9
      TEAMModelOS.Extension/IES.Exam/IES.ExamViews/.editorconfig
  39. 0 1
      TEAMModelOS.Extension/IES.Exam/IES.ExamViews/.gitattributes
  40. 2 2
      TEAMModelOS.Extension/IES.Exam/IES.ExamViews/IES.ExamViews.esproj
  41. 0 13
      TEAMModelOS.Extension/IES.Exam/IES.ExamViews/index.html
  42. 49 6
      TEAMModelOS.Extension/IES.Exam/IES.ExamViews/vue.config.js
  43. 16 16
      TEAMModelOS.sln

+ 13 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/.config/dotnet-tools.json

@@ -0,0 +1,13 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "dotnet-ef": {
+      "version": "9.0.1",
+      "commands": [
+        "dotnet-ef"
+      ],
+      "rollForward": false
+    }
+  }
+}

+ 22 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/cert.pem

@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIUPPqP36ZRSzUSAOh2QsYSeopwRx4wDQYJKoZIhvcNAQEL
+BQAwZjELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
+ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxFTATBgNVBAMMDGhh
+Ym9vay5sb2NhbDAeFw0yNTAxMjMxMTE4NDNaFw00NTAxMTgxMTE4NDNaMGYxCzAJ
+BgNVBAYTAkNOMRAwDgYDVQQIDAdTaUNodWFuMRAwDgYDVQQHDAdDaGVuZ0R1MQ8w
+DQYDVQQKDAZoYWJvb2sxCzAJBgNVBAsMAnJkMRUwEwYDVQQDDAxoYWJvb2subG9j
+YWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCos+IMfiDcYL5+bh67
+vomumx3yI3G16LD94bWzcvq+5hjsXKIqxrHVLU2IwHgxqNCOKBPNQkd2Gm+YthhM
+FpQ04ZG7qikvq64CGKc34CKhItdxw69euoIwTfPGzzsfEfgw597eRE4NMwPWSDo5
+omFTQiHnISYO9zJBWWelNKhfKZ+D4MJXsdw729I+SlNzWhLrLVMZa27JonJYY1j7
+Lg9A/3sLAI15Kbfw0eiaR3fQbqmSaQdZlzq16UAQn0SUE+sdqpJNblFpRFn9zQM6
+9axSEEHWeekjpPJQJOuBEiOyzBNBDHWevraWQ2cWaD2EhglZuwg+BBMJ4JytZKYp
+xSDfAgMBAAGjPDA6MBkGA1UdEQQSMBCCDiouaGFib29rLmxvY2FsMB0GA1UdDgQW
+BBQuz7mA34iNHbBQeCV6B5eaoQ14+jANBgkqhkiG9w0BAQsFAAOCAQEAnidDFi6g
+lkIFRKI120d/kVZK6eNJPK5tYAMUH9SM9wx2IPQGsI/F/qtGuQHNFRyNgXGFx+KY
+KI55oA4jH6BNIANVQZio+H5+ljPbYCBcNfk1k2hDyvypi1qCE+iHMo4RvX/7dTRI
+rhHCQwxfTAkOdOzIhztnQe5bbOfxoUHssCwhrf0NZoZd+PDa6BuYBRnXYr7t+Mz6
+xCus0zYXf025fs2LQj6Z5YwSPmRY8j11pluN/iDgbB6Rdg+OcPGfjZ6wxxLLJvUS
+UmtoJ0BEehLmYrQIAAA6t6fovJe2u1jr3WD0nlgTn9kciaq64Zgm+8xrNs9zh7Ao
+P88lxhd9BOiowA==
+-----END CERTIFICATE-----

TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/certificate.bat → TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/certificate.bat


BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/certificate.cer


+ 28 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cer/key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCos+IMfiDcYL5+
+bh67vomumx3yI3G16LD94bWzcvq+5hjsXKIqxrHVLU2IwHgxqNCOKBPNQkd2Gm+Y
+thhMFpQ04ZG7qikvq64CGKc34CKhItdxw69euoIwTfPGzzsfEfgw597eRE4NMwPW
+SDo5omFTQiHnISYO9zJBWWelNKhfKZ+D4MJXsdw729I+SlNzWhLrLVMZa27JonJY
+Y1j7Lg9A/3sLAI15Kbfw0eiaR3fQbqmSaQdZlzq16UAQn0SUE+sdqpJNblFpRFn9
+zQM69axSEEHWeekjpPJQJOuBEiOyzBNBDHWevraWQ2cWaD2EhglZuwg+BBMJ4Jyt
+ZKYpxSDfAgMBAAECggEANnHbVZnNBCJqyAXFAGVFLOcdunwK4iDHIiBaUiAc4UgE
+Kh/ZLEH0uW5F9AjdoXUwXXh8r4Ug5/IvKtM1szSkPw6/SBfp89sNrNqE+OjqdCN4
+8VuseL9rbahysKpHk8bqWOo0CHp10BezONAVjm0jyMlyhJOzoyfO/b0bUHtWjWMs
+07ZK8hr7UWXDsqq9l/fqkF/sy3ACslx++z+rJrzcEmHO4ARQS/HcUCKjxLyd0ruJ
+sXY8T36wJItWZyJAO/S/Yf0vvSZ2DgLPqJK4q3duq/Xjfosre/ZR5yX3G00kmzly
+JMG2mu8xagtNFGQr+IRTod+Xgh2LxUuHDTHjl6ucDQKBgQDSuBd7P4m3/ajVpjmk
+2MkBacKXZYGinTHkUzH6VQAFQnsq6OxRtnF6XBVvXruGpCsfW4e1XgYfTJ2wGFEo
+T0I2OCRlGhsETSPv55Q5cyBgvke1Dx506uuUrkmxCvvlT+CQ6rJ+B9cMkTm/DOAh
+scpol6fbHd71KDWBFbPEt5BnLQKBgQDM9GrB/Bt2vlQKdB+2M8/ZnO9VZ1jwPohM
+UwYqqiyHQ9F3FDlaDychv57Na+7GPieiuXTCMY/EmC9tio17KmcqXEXkEM8mceCM
+CHrAJ+Y27frMkoEaMUIp7Ozg6iWFDLLJXZjlaGq8v1FPGkxg4PUO8Sfc7Hk2/6n0
+J+hayQqvuwKBgDg6h4mL2uQN/A+G27rxXjHSVuqvW3hZGgcjbCKwq+C7bMJ2hRkI
+5h8Qk2e0j7XN+PPVKNFs1ZVkjG+BDacD/1cYhB22aZ8sNnq+AP+TiQBHxjq6XhY0
+2chC+ccUd0MpnXMOLbMTxH7GAfLJLMXQ+4INde0ye1xP7ncTo3TKxu3BAoGATQwx
+Of2JYYlJVKi05yzxHTCW9HcmgyIu4OpxLgbNOIhxLR/IM6fwoQpFK5pAp/vjsJOh
+ZgN1tYU0hyyH5V5abB1GFOeQyDYVIO9rHeOh8tJh7xfAOtV7twEfR6oeMrdEWti5
+yrwHLC+L5H3RarYGyfg0cSPgqaFRBb0e50oen1MCgYBAIkG5GdKT4RqxONSC2zDn
+Qf5CO0pfuuEUfYH42Q0OGYM/QQsWC0vztQdit0lEraQk/+RJx+ILrtyl3U9w287e
+u2VNH0VY+5xDLWox7+mR7sGDZeBco24vOKZu97T6EvGPQN9l3j/t0O6TRHMGxySO
+dzlTniivDhJI6sWWHuPFSA==
+-----END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDozCCAougAwIBAgIUXVG28xNwGPdDM2SRRiCQhDTZG60wDQYJKoZIhvcNAQEL
-BQAwazELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGjAYBgNVBAMMEWV4
-YW0uaGFib29rLmxvY2FsMB4XDTI1MDEyMTA0MzM0NVoXDTI2MDEyMTA0MzM0NVow
-azELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0NoZW5n
-RHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGjAYBgNVBAMMEWV4YW0u
-aGFib29rLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxAl2
-7myycEOgiO0OEohPYDV/1raik81QuU3485caFoxs2UUXJoW0zkG0TKHVqVJGcNbg
-xncN7gjThRAKy4PSLTrn9A9fPJVqRpB0ElJlBsChhfXxpWzrFl/wHOxdmYz5rUjs
-gjq0zdlodSQ2yWE0VdZhI6VqIbvz16rHXj19B1kKcGVzlnwuRxuqldDEJSUD3UTe
-epPGaSbdqI4riUcOaksEMEAgll7HqixTv5tB3/aKJ0w+nxZFimocdA/XFXIXMO1M
-lLP2CCck1Jv7vlAL/TP22wQnfINifYDisTmsdtFvq6hgkFgh34lDX+moM92MPR5/
-m5D4GQi6BYtFpOoC+wIDAQABoz8wPTAcBgNVHREEFTATghFleGFtLmhhYm9vay5s
-b2NhbDAdBgNVHQ4EFgQUXr4ImISHw4eBN6r8MO3LiM0o+5gwDQYJKoZIhvcNAQEL
-BQADggEBAIFTbpGUwtpMa//mrHGghAcF+jw3+6G/I6K0bsfcFfYVQJCwJ+HcNWDJ
-+nCn64rdu5sQvFmpPSlXBMbFoW/ZAxs2g7jhk90MUrR0MFBu91qAu2gqwE55S6xr
-O7fg4sd0aVvR2tE2e6wxMaLGTfNtF9Uo0tKFehDUQXIiCSAQkLGwsWneZ+GRE8Dc
-CwGjJXpwvBfmcQoNMLqZpZ8P8AdOUVjp7PIEkWJWSGcaa+RCrP4qhVwNv+ZloBbc
-XBNxCrftg2epupYOGvsq5ACX7u3nLbRfuKu3X+E0F7V/Qwmjfc9+WS50LouCMIx/
-TvVawMxytPaTUlQe45aNANW4reHWezQ=
------END CERTIFICATE-----

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDECXbubLJwQ6CI
-7Q4SiE9gNX/WtqKTzVC5TfjzlxoWjGzZRRcmhbTOQbRModWpUkZw1uDGdw3uCNOF
-EArLg9ItOuf0D188lWpGkHQSUmUGwKGF9fGlbOsWX/Ac7F2ZjPmtSOyCOrTN2Wh1
-JDbJYTRV1mEjpWohu/PXqsdePX0HWQpwZXOWfC5HG6qV0MQlJQPdRN56k8ZpJt2o
-jiuJRw5qSwQwQCCWXseqLFO/m0Hf9oonTD6fFkWKahx0D9cVchcw7UyUs/YIJyTU
-m/u+UAv9M/bbBCd8g2J9gOKxOax20W+rqGCQWCHfiUNf6agz3Yw9Hn+bkPgZCLoF
-i0Wk6gL7AgMBAAECggEABMSeKepm5KggbXQmlXjPRW3HsDc8+Q9TWU52MaaJMec0
-doxhpcQ2w5WBhyOgiL/BitkPGoSmyBVa36+mM5D/Oa5nGd6N2HFh5ll5GUD7yBBD
-XXi/6eAeT6sBshJlrGhrYjWV2w0GfMM+8SpyUq+UkEnoju9lB3EE20gCFV61fco3
-pK7en/hHCK0/jLDJYxEhEk5FMKA0BAUdsoD2WRVCnakCSaKRJzJEafL9CHQaL/oq
-pPVIYO3tx0ryNtdcLsc0j01rLMJ8n9lG59+3zAu5nCEVHYKO7oPuj8kpwdqxIj9J
-ZnSHX9ayJYNOdJDGD8zQYKhZQdquOYOAE9NnbINAMQKBgQD+OCf02IIuK4NcU1Ef
-wlx/sRjvCIWq39S1KNQ0kPtI4dWUNLI5DJqVQgylHIkVC/FNbTcaW1A6nVqukJfJ
-Nu3HrZoN+585QRKesTGNd45Zmwwy8JuV1OblV6SbI5xZ3g3S4SVkWnldOz36FThn
-wdHf2lg/unGzX4ojgYfuV1VpfwKBgQDFaPsd7Lo9oDUEZH4GDjk8onsIWwad6Nut
-3CCdBn3tiSlSAddVbZfu60VtM25CA9K1UbPsV1FU7ZYX1wKma019r1VqkwhPMWoq
-FsnhoHMOl69vV/3brjfHZDflbCMbMt/vYc91kRS7nVDAeqz5sDf4mJ7BSs70ZGth
-oAqHLQfMhQKBgQDhg71mRX5OKMmR6FMpwkg9+kNtIHk7GO5feoWs0AQqJjRKEekc
-FKM4zuvauJKeegaoMb9VATYNmTMtchVEKRcMMGNeDh20M5ap8fRMU4eS06khszHB
-26isQHBEM3XqfsJylMmP2XaaDwiuxY5Q9K4ST2ZDukhM3+7yCmEkPJMHTwKBgEEK
-DXIWhGW5Wr5PvZWRKhpoDdD67HsqNPZbCAO0F9kiz5JNOPzUVrJIoV8RCsqFJ+7F
-NFoxioJIpKLGHAFoaOd31NSADMTKqwei6nCDxGSSZSJyAxlVlNsEkcXsksRrRow/
-1XIOkp4dfnVr9YFuJYKqBeP5GaY7T4WijNVsaJ1hAoGAGQD8EyQXcfsaIEjaPQ65
-io+DloCFqwJd5EkCFPyv7Qz+5A9Jv6/RTznXSXtNBv+j6t7MG/o6A8ZX0ZR5UjuG
-WB/U87QpUokC+wzNTCdbDWaF/GvOU8lziksDrMMzrV8Yy+CVtGNiscAZyj6QJ1Am
-WrPltUEZoXxKkRRcmvNeti8=
------END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpjCCAo6gAwIBAgIUOJhd4SHuDg1Y/zNtpBHCVtmwcSMwDQYJKoZIhvcNAQEL
-BQAwbDELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGzAZBgNVBAMMEmV4
-YW0xLmhhYm9vay5sb2NhbDAeFw0yNTAxMjIwMTU2MzlaFw0yNjAxMjIwMTU2Mzla
-MGwxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdTaUNodWFuMRAwDgYDVQQHDAdDaGVu
-Z0R1MQ8wDQYDVQQKDAZoYWJvb2sxCzAJBgNVBAsMAnJkMRswGQYDVQQDDBJleGFt
-MS5oYWJvb2subG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0
-qV10i/hFgxYUCQ2fz230qf2dpjvLlOXC/6VR9j7sRPoLlPrS7ux1i5/ysqjBxSvr
-4vAAyTRqtr8xGusj0pP3KrZ1s1ETFhfs1I1+VwRVBdrQYCtc18a2H6KTl1QJhH53
-i8otPG6xe3+x/CN+f67VYhuVLGmvfT+a/VehDu4INqZF35xzNDYwyT7xGZLFZiCD
-GrcVmZrpkIcBe0NWdkZyfx2U0fuuDxJHe3j+HNB/xZMFJWlTtqOcx1c4iQHwFGyR
-niPkzhjGt+9d4bnQ0wgKMs/ACSACl0QK+R5SMGqKiex2WOmd1GMkhm7B3Y5g9MbI
-koRLPW1iHgycvFt/Dy65AgMBAAGjQDA+MB0GA1UdEQQWMBSCEmV4YW0xLmhhYm9v
-ay5sb2NhbDAdBgNVHQ4EFgQUPxmKwaVyZjfo+c5KUbIieL2BjZIwDQYJKoZIhvcN
-AQELBQADggEBAKIqBNcwHswBt9OE8H9jGxS13JYmpwV3W01bbJP7Uf0uiElZFKZo
-A9l4/snc7dNbF65mQMWnRiTZKRdm5rO4VgRAjiZ+n9/dGFdfgJZp7vsGfzfrPvax
-eMu0R++KKT7NdECwF24CgZfzyR1rqmDbofrdOr6zhWC8dRtxcGXlrdn8Y9cuXHVE
-uCK2u52RK7F+z86G5LTNCXmY/HjJwB4zEdL/T2f0MZxumrdPNyzekSQsMwe1ogGQ
-Zt/4EuS/+Qc6cvjTph7x1AXtRE9PfGDPKpohJiQpq/QG2dpnPe23JxKLIRcWOKq9
-qwoamlyjFKFhfc9AfAle3z0ehR/2X8mxxWs=
------END CERTIFICATE-----

+ 0 - 74
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.bat

@@ -1,74 +0,0 @@
-@echo off
-echo Configuring hosts file
-
-net session >nul 2>&1
-if %errorLevel% neq 0 (
-    echo Please run this script as an administrator
-    pause
-    exit /b
-)
-
-set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.132 exam1.habook.local"
-
-if not exist "%hostsFile%" (
-    echo hosts file does not exist:%hostsFile%
-    pause
-    exit /b
-)
-
-
-findstr /v /i /c:"exam.habook.local" "%hostsFile%" > "%hostsFile%.tmp"
-if %errorLevel% equ 0 (
-    move /y "%hostsFile%.tmp" "%hostsFile%" >nul 2>&1
-    echo Removed all entries containing exam.habook.local
-) else (
-    echo Failed to remove entries containing exam.habook.local
-    pause
-    exit /b
-)
-
-
-echo %newEntry% >> "%hostsFile%"
-if %errorLevel% equ 0 (
-    echo Hosts file configured successfully
-) else (
-    echo Hosts file configuration failed
-    pause
-    exit /b
-)
-
-:ImportCert
-echo Importing certificate
-
-if not exist "%~dp0certificate.cer" (
-    echo Certificate file does not exist:%~dp0certificate.cer
-    pause
-    exit /b
-)
-
-set "certSubject="
-for /f "tokens=*" %%i in ('certutil -dump "%~dp0certificate.cer" ^| findstr /i "CN="') do (
-    set "certSubject=%%i"
-)
-
-if defined certSubject (
-    echo Deleting existing certificate with the same name
-    certutil -delstore "Root" "%certSubject%"
-    if %errorLevel% equ 0 (
-        echo Existing certificate deleted successfully
-    ) else (
-        echo Failed to delete existing certificate (may not exist)
-    )
-)
-
-echo Importing new certificate
-certutil -addstore -f "Root" "%~dp0certificate.cer"
-if %errorLevel% equ 0 (
-    echo Certificate imported successfully
-) else (
-    echo Certificate import failed
-)
-
-echo All operations completed
-pause

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC0qV10i/hFgxYU
-CQ2fz230qf2dpjvLlOXC/6VR9j7sRPoLlPrS7ux1i5/ysqjBxSvr4vAAyTRqtr8x
-Gusj0pP3KrZ1s1ETFhfs1I1+VwRVBdrQYCtc18a2H6KTl1QJhH53i8otPG6xe3+x
-/CN+f67VYhuVLGmvfT+a/VehDu4INqZF35xzNDYwyT7xGZLFZiCDGrcVmZrpkIcB
-e0NWdkZyfx2U0fuuDxJHe3j+HNB/xZMFJWlTtqOcx1c4iQHwFGyRniPkzhjGt+9d
-4bnQ0wgKMs/ACSACl0QK+R5SMGqKiex2WOmd1GMkhm7B3Y5g9MbIkoRLPW1iHgyc
-vFt/Dy65AgMBAAECggEAJhdXpw0kCbP74bmO79USf/Wfja/RB7mbQCQavU9IMRTS
-C8Mbp4HMxXPtA4T74+8otZGhvOivbpidc0MTtPffTsvosKRgQb/0x3CBbNP4C90y
-J6E/Q1ITia7d3nSXuXIAIECPHj6RsEYzxFk/Opq9SCxpWGiG2AN2d71WzpSRR5Wy
-4ljWxyqrpq+9yBW+6a6ZESNTG3wnscysy1EENt5TrHrpSaH90aLDNGYFfY1x+d3h
-lCNzuAvCv9F0DIzhvsICfrWYVmLPZHFMVdR6oYiAkOQ+FwqYbvrBttCXs7Mqod+e
-JI2hzyDgxHQ0p0SFjGocTaZ+lirnwkzct/wZwDotKQKBgQDyEvIxnxZDi0maYkIW
-feJpOJP9bClkziVc2ng+HdlcUW9zAvsmnQOYqzNemjJ1N+UWvcVjVfHh8K9ISLUV
-bmygIGxHGP1wUhLojlJqHTRJ2tMvgxeO5xDmgY/te/WSaqCj/bauPy1xUEEfado2
-kTuu0zL7RPehG4iyAN0dfSudgwKBgQC/Df2Wswnsi2yptinyfUmjzlqgotHJlFDr
-iGQSOpqR9v68wLAMPt5nIvJwNpUILvFa20Wk6+GuJy5BcK5rrfBAVLx+8OJMpuA5
-G6beWx3CWKK/fLMH6F6YMyVDSKu9KvLOMVkCG8uqjSXU0aL9Ymwx7+leU7kbznIY
-+Nw1cSkqEwKBgQDpUtmeeng7IkYPSCXrB+rzAFWkLly3jPr2RJ0hQiP/l36UnIr2
-7OBKhrk8teNsmDN3d/KJjI1X+WT5hxsDTSvmK1oyLSQa3wDaplNJdFyx0vk7El/i
-nVTs2HShsplARwYPCrzJtptWXMRoQt7ROasNFwRMrG0CHEflSm/VvJANgQKBgCnK
-5a4RfBpCZYK6VnK09WbfvPNmqn1t9EWRkFJsf2NupEql29zR49Sr0Fy7k942ZpV5
-YcKx1qxB5dxqybzET8nCv3kFOHuMBYB4jAgX5mqc+PzqSj9wlUC173DIdMjsnDB+
-mvnbGrI0LhJfyUekQAasdGAt8FAk2NCdn44RMvABAoGABmHKJ+mRl/T+x/XeY5ED
-CRpi5q6H2t/90g9lP0S7DHRVOkbCFvDCzdwYgmaxJatGo8TOH7PziuZDpgULjL8O
-/250oj5nNMyMsst5Uk4NopBsb7+f2TdM7Br/tOAdm+Tzl7KCHwsh+fDBlcJRq+Bb
-knsLLVKfkMLMm3WuWiIN/7Y=
------END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpjCCAo6gAwIBAgIUDfoU75/CWmzBsSuNiuRxG7V2j8owDQYJKoZIhvcNAQEL
-BQAwbDELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGzAZBgNVBAMMEmV4
-YW0yLmhhYm9vay5sb2NhbDAeFw0yNTAxMjIwMTU3NTBaFw0yNjAxMjIwMTU3NTBa
-MGwxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdTaUNodWFuMRAwDgYDVQQHDAdDaGVu
-Z0R1MQ8wDQYDVQQKDAZoYWJvb2sxCzAJBgNVBAsMAnJkMRswGQYDVQQDDBJleGFt
-Mi5oYWJvb2subG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCl
-Zx/kmGkyrPtpAfDgfbYhRImryj4Ez+CFloyZO49bdlFJ4qNrwx3WSdvay4Vk/2jQ
-wAZaRU6ojxt4rBbL7VKU/xHd1CPLjoiq8pAVdfoYiJTb3Nj4xsAer+xaCuwfC96a
-J/Wgw40JByzrBBR2b14GEOx2A6M99e+V2/Wvhc+pUu9h2F6vrND43TNy2UGtAyWQ
-Oya4RIubb4zRSLjPN4wECjtbZ2Rm1lTB+tOW+Q/PVgVj6YddVONVpaEorpoae5lX
-zsjpJchegY0UJrVUZqII1HWmItzuu5ZZbydBLxKcMcfteRK7awqgUYWTA1RbEkyb
-k69alkylL84hD9XOO+0FAgMBAAGjQDA+MB0GA1UdEQQWMBSCEmV4YW0yLmhhYm9v
-ay5sb2NhbDAdBgNVHQ4EFgQUtfCBPHkTSDDMBerflEj46zlTjrYwDQYJKoZIhvcN
-AQELBQADggEBAHCuW3w/nWm9Cek2CPWcHS+nP65UK8ql7H3nX7vBws0cmWlTHD7j
-cyJf6YHP/T2SdpaPJJIp9AxzlvQUPE0UKf92+hQci5E+422zIz1C++GLtkMwoGll
-Aj7SpsCAYIXlOd6Xe2k7EF2A3wJD0UU5v4GBQ2iZSKhSTTnv/slkBKvOLcCmnIXG
-Z9W40M3fXNzk1+oHfXXrXzL6ysL4xpmaHn5INB9wOgL77hLsDoqLG+HS1WOaPtQ3
-Ck4CSsJ8msJybCjPV3SJ2+9bUgBJlal7WP/0HyvIjF6Lh0IFRlpHr4eY+OV2PaVy
-i1gCnF5/vBOWWaAq2oyD+kHiJslX3XUPi/Y=
------END CERTIFICATE-----

+ 0 - 74
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.bat

@@ -1,74 +0,0 @@
-@echo off
-echo Configuring hosts file
-
-net session >nul 2>&1
-if %errorLevel% neq 0 (
-    echo Please run this script as an administrator
-    pause
-    exit /b
-)
-
-set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.132 exam2.habook.local"
-
-if not exist "%hostsFile%" (
-    echo hosts file does not exist:%hostsFile%
-    pause
-    exit /b
-)
-
-
-findstr /v /i /c:"exam.habook.local" "%hostsFile%" > "%hostsFile%.tmp"
-if %errorLevel% equ 0 (
-    move /y "%hostsFile%.tmp" "%hostsFile%" >nul 2>&1
-    echo Removed all entries containing exam.habook.local
-) else (
-    echo Failed to remove entries containing exam.habook.local
-    pause
-    exit /b
-)
-
-
-echo %newEntry% >> "%hostsFile%"
-if %errorLevel% equ 0 (
-    echo Hosts file configured successfully
-) else (
-    echo Hosts file configuration failed
-    pause
-    exit /b
-)
-
-:ImportCert
-echo Importing certificate
-
-if not exist "%~dp0certificate.cer" (
-    echo Certificate file does not exist:%~dp0certificate.cer
-    pause
-    exit /b
-)
-
-set "certSubject="
-for /f "tokens=*" %%i in ('certutil -dump "%~dp0certificate.cer" ^| findstr /i "CN="') do (
-    set "certSubject=%%i"
-)
-
-if defined certSubject (
-    echo Deleting existing certificate with the same name
-    certutil -delstore "Root" "%certSubject%"
-    if %errorLevel% equ 0 (
-        echo Existing certificate deleted successfully
-    ) else (
-        echo Failed to delete existing certificate (may not exist)
-    )
-)
-
-echo Importing new certificate
-certutil -addstore -f "Root" "%~dp0certificate.cer"
-if %errorLevel% equ 0 (
-    echo Certificate imported successfully
-) else (
-    echo Certificate import failed
-)
-
-echo All operations completed
-pause

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQClZx/kmGkyrPtp
-AfDgfbYhRImryj4Ez+CFloyZO49bdlFJ4qNrwx3WSdvay4Vk/2jQwAZaRU6ojxt4
-rBbL7VKU/xHd1CPLjoiq8pAVdfoYiJTb3Nj4xsAer+xaCuwfC96aJ/Wgw40JByzr
-BBR2b14GEOx2A6M99e+V2/Wvhc+pUu9h2F6vrND43TNy2UGtAyWQOya4RIubb4zR
-SLjPN4wECjtbZ2Rm1lTB+tOW+Q/PVgVj6YddVONVpaEorpoae5lXzsjpJchegY0U
-JrVUZqII1HWmItzuu5ZZbydBLxKcMcfteRK7awqgUYWTA1RbEkybk69alkylL84h
-D9XOO+0FAgMBAAECggEABfHUm5z1j4b8ojYZ7sC6eeMLlDkK30zUyGYPpUkWuDY+
-IR0cKV2h4Xd6q/OUn8SlFXcIMSHO16JWOUgRhRvvCsBt1RoL6rqzkQy7UPfbYdHG
-2iSm/on4bbQ08nCrMrcHERxzH4wMRHWn2MXwMcPMoLsvjZv/SfmpbQX78fi8EV07
-/99u5lFcIxkF837PLgbXtX0OQY3hjZqbPo429jDWGvGdSdR+Zu+QKh09fGF2brBz
-FXp+TfbZmWFyTI9I6qNPyq1++amlTGidxemSEToCzCMNC5BxPFHyT7VBj4UpmIz/
-0jdvbbIJQ6Xhr1OX5HQdWg2CRWJIVuYEC/pPbcocIQKBgQDh6hpJsw/Upj5NbiHZ
-ecnx3fZk1jxlpe23VAAnH/3ACF8rGSUnsnCSaxONj7cznjf94Nta+i5SX4uSW+KF
-fiY5hjA4GzcFzuRQGu1IJsW9uyYCBsY6hk4CEZEEBSLgUj5N6mUAKG+KMLKlytSd
-3SAReGe2Lrc2FSxQGYkvs1KtewKBgQC7bg219gB18C5fgMiBgq9y8jdusCVfdnvH
-k1vX4c1EDrP7Q+2fs4AwlMtekf3b7UuL5fFRWkSsQ0deI7KE0CrBC+vFEJEX23xV
-Ws09jLQ0P6GHhcyGMO6o2B/U9YKSrVlKJs7VB1VrcpH/Yv9ZVAYoNT6B/Ix8iTyO
-1Ge4+XSHfwKBgBu9MfMgsG3s57N8NV3NrXUsSufAwnO8tv6OquIi9HZS0NSq5rwE
-Ffx0d1cncVg+MiPTKzv1giCNKMcUzzCS98CScHNDLDNjXvdTBxWX5SnRw+31xPtE
-qGlqnMLAmrKuhoXspPArBt8R8a2XxRmJIDnk7d8Zx1c1rFY9fHHF8/3nAoGAAh8+
-3H6KhstPWxl0K7M1FVIUupYX9jq7MAlFEu6lik24T/H28MXxf5tPqiRxAVpwbocN
-8mPZPzILzs8MqGBK+6CM7NBBNEnx4G2EwVukdqr5wzUKmcJYEWVRBvI4pjx8NFC4
-KsVIfEzxxjhyt6ox36aqrIIVfRt4qg1Rl1CLtzUCgYBRpu52mx6JKsWmHcTLCTNU
-Fkl5DVr1qsaWtRUmnlOtS0ZSne+pQERMMqkoDsBa1toGueK4Xy/CI0Kksn/jM/fE
-FDqWHRUjVzw9RMMNrILb+uWuIuPyL4Ro1iVeINnSOLaGQYuYbyW3tb/BEX4lL4ev
-+7G4gILX8EFF1TRmfuGGnQ==
------END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpjCCAo6gAwIBAgIUA3r/m8KYXj7zWeGVj+JSAKZ4npowDQYJKoZIhvcNAQEL
-BQAwbDELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGzAZBgNVBAMMEmV4
-YW0zLmhhYm9vay5sb2NhbDAeFw0yNTAxMjIwMTU4MDZaFw0yNjAxMjIwMTU4MDZa
-MGwxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdTaUNodWFuMRAwDgYDVQQHDAdDaGVu
-Z0R1MQ8wDQYDVQQKDAZoYWJvb2sxCzAJBgNVBAsMAnJkMRswGQYDVQQDDBJleGFt
-My5oYWJvb2subG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
-yRuBicfR66FpVq0EC9lhAaBgjjJtsZW7t8R0G6xnmrHGHThawLhM9vXHD9nFxIkT
-R+AT9UioJ7+kvoD7LeZ4HcqrV000GYNyV3Sa+vlwt6O3jXtVkGdF/vW/07FMhsUk
-I8nDiwkj2bOmC0/eTDFBfuomVmS1f+a771PzbF82WSfxK+4gl2RKm0lRm075wjzA
-3Bd+7ve4pCasw6ln64+tcUt9SnRe9B/BBULwmHuPOm5xvY9Pg2Juj2lTqfRdm+K0
-zbNf67Ic+nhS6pWb6gx4qAIWtz1kyDavAPo4bHv8GMrNkzUUunOXjAAk9jf6Jyeb
-SbHQr8EKJCiswdvH0F35AgMBAAGjQDA+MB0GA1UdEQQWMBSCEmV4YW0zLmhhYm9v
-ay5sb2NhbDAdBgNVHQ4EFgQUpSH12rGZ955/Nrt2dkYk4GsTyQIwDQYJKoZIhvcN
-AQELBQADggEBAAnuCoDG7o/TNMEqFXIWCuINSpKhkb5N+wsE23W/fJulmAtxifZj
-kBUYfIZW/OdT9xBOtgCCrbu4hjWVjcIfFhyoZ9bI1kWvX6fPcnCNT3qQPCbgZjBc
-sJe7bTl9qLMs58+988KaHl2VIm1z6xDDs+3N1DI2okssKTkEJtTWT8k8SJFczLEn
-2YAmufHfGcyH1KmN3tv2i8lcmhrJju5ljf6ovaYALV/LfcjjspelKdPn8wmTkpFA
-ZqYwUftHHnnm7qy8a485yYA08uHvJXTpLxm8yagr2AKP5vr9YJ+cGrF55jp/NXCd
-HriFs4skM94BJtoZRjVdGZjpG9aYjqNxIjg=
------END CERTIFICATE-----

+ 0 - 74
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.bat

@@ -1,74 +0,0 @@
-@echo off
-echo Configuring hosts file
-
-net session >nul 2>&1
-if %errorLevel% neq 0 (
-    echo Please run this script as an administrator
-    pause
-    exit /b
-)
-
-set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.132 exam3.habook.local"
-
-if not exist "%hostsFile%" (
-    echo hosts file does not exist:%hostsFile%
-    pause
-    exit /b
-)
-
-
-findstr /v /i /c:"exam.habook.local" "%hostsFile%" > "%hostsFile%.tmp"
-if %errorLevel% equ 0 (
-    move /y "%hostsFile%.tmp" "%hostsFile%" >nul 2>&1
-    echo Removed all entries containing exam.habook.local
-) else (
-    echo Failed to remove entries containing exam.habook.local
-    pause
-    exit /b
-)
-
-
-echo %newEntry% >> "%hostsFile%"
-if %errorLevel% equ 0 (
-    echo Hosts file configured successfully
-) else (
-    echo Hosts file configuration failed
-    pause
-    exit /b
-)
-
-:ImportCert
-echo Importing certificate
-
-if not exist "%~dp0certificate.cer" (
-    echo Certificate file does not exist:%~dp0certificate.cer
-    pause
-    exit /b
-)
-
-set "certSubject="
-for /f "tokens=*" %%i in ('certutil -dump "%~dp0certificate.cer" ^| findstr /i "CN="') do (
-    set "certSubject=%%i"
-)
-
-if defined certSubject (
-    echo Deleting existing certificate with the same name
-    certutil -delstore "Root" "%certSubject%"
-    if %errorLevel% equ 0 (
-        echo Existing certificate deleted successfully
-    ) else (
-        echo Failed to delete existing certificate (may not exist)
-    )
-)
-
-echo Importing new certificate
-certutil -addstore -f "Root" "%~dp0certificate.cer"
-if %errorLevel% equ 0 (
-    echo Certificate imported successfully
-) else (
-    echo Certificate import failed
-)
-
-echo All operations completed
-pause

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1yRuBicfR66Fp
-Vq0EC9lhAaBgjjJtsZW7t8R0G6xnmrHGHThawLhM9vXHD9nFxIkTR+AT9UioJ7+k
-voD7LeZ4HcqrV000GYNyV3Sa+vlwt6O3jXtVkGdF/vW/07FMhsUkI8nDiwkj2bOm
-C0/eTDFBfuomVmS1f+a771PzbF82WSfxK+4gl2RKm0lRm075wjzA3Bd+7ve4pCas
-w6ln64+tcUt9SnRe9B/BBULwmHuPOm5xvY9Pg2Juj2lTqfRdm+K0zbNf67Ic+nhS
-6pWb6gx4qAIWtz1kyDavAPo4bHv8GMrNkzUUunOXjAAk9jf6JyebSbHQr8EKJCis
-wdvH0F35AgMBAAECggEAE2SWdh3MPuVLzXCNOZrIAHTLdrGEyLYCuslygE55eH4E
-zBVO70OTBcbs1mUm/tWmJ/PpgEeRDjtbUwhtux4c8aCAAAJqvo2gO8D/tA7lMHSu
-1wSVbT3f/pQiBGphhj/0ZRQaUK2S9ouhgiu/w//N22ZeNWPPD5vK8i6ofpYHnET9
-AuHm/7Toh3eUSpOCoCxKSAtyWbg/9Vr1CAjAp4mAlFYHtO8rm7/yGszUIofWz1hc
-+EntN2FV7auXZdJyo5a5tbOKd9Ii0NlEHAXxmFHcunjl68OonScNEFfRDF9YJTxq
-TEtDP5cTRU2TnkfEVHw92XGaXmRU34DxSP6D1ZnaxwKBgQD9LuG02IKZIVB6n4xb
-kNzJcwoGNo948LTXCJE2yKU+iK99lz5vNJyyFaLfYY5xbuQZRf7dcPgTyUuRS+ur
-oS6ruX5Z9j+FdCJwAUdjOYXNQwtqwCAq6IorbNTrTY8WA6cAmzUlZdlZsa/gScZN
-IwEsTW0RBeocFqKR6fHAjIAOZwKBgQC3zt7jfI4hSVPAIpFn5YDU5DGVenELyPHg
-3D7fNtvVbKX5gmtr24rJmlxCFCOREUNyF4S2nj6oql9I9PJadPBmCSju2OhnD/zj
-TtWc0SyuN3AWpU+2WS02B5v/PSm5NrnUkddU3835de5Ajzah38AfTyB3RRSBWSie
-ui3LXkG0nwKBgQDmZOEz5sqBetV3oPTi5mJkV3FJ0iChV7nY7Izoo5Hr5Ap+aUGB
-hQkK7bF3QZmUE+syLIYPERxPNSC1KbdeSaDk2Dnot7N6SAKGlkNWQiRGc7pR/F/J
-bC8/8RuYvM12pQA2BwdH7vTpME7x9XClBTOuEw8rLIyr3tU1nwRFyhVGBQKBgG+R
-njEvFYaW38MsOF58LCsNKBu3ao7gthDrHy6WOfHeNRCyXUnmxOOCUqW5W61ecTX7
-mI7QlvACGjxKkiDeAl2tCa+Q8eA9EB9ZZsf9H8XP2LWmOjBRCORW0hWnpn/J/BpP
-PAlEn93f+3Ise9jd29wlR2ud/shUuhc+ozViTTe5AoGBAIIh/D7tbB4Zhxz9gcGG
-bEFMruveLIDxrs5Bqt33tcaZdYmnQ+OFhuMjDtZ4cJAERHSrnBVWb2x+cl/lxgOX
-1VAWCWFPAquxMFGkh2Xdcpd4UKgrv0YJEd1r8J9s6574fqYvJkzNP/Ph3VOYUMxg
-m51TzcO13938amX0MiII0PVk
------END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDpjCCAo6gAwIBAgIUWa2IOFQksnU2Vb1Z/YDmaKflvFAwDQYJKoZIhvcNAQEL
-BQAwbDELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGzAZBgNVBAMMEmV4
-YW00LmhhYm9vay5sb2NhbDAeFw0yNTAxMjIwMTU4MjVaFw0yNjAxMjIwMTU4MjVa
-MGwxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdTaUNodWFuMRAwDgYDVQQHDAdDaGVu
-Z0R1MQ8wDQYDVQQKDAZoYWJvb2sxCzAJBgNVBAsMAnJkMRswGQYDVQQDDBJleGFt
-NC5oYWJvb2subG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDp
-u91Jfyvh421jTABrq0M/gX1GQXZ6DZE81M9853TmX9S6Hh59nFFYTZ/h62LjKQyY
-6kMWzOvCQeSPmsbOCT7iUuvYa8jMUdxQYGd974uu0fk1TS58ZGyH9M02iMceRdmR
-Z1zc6ojfhLMgCcKAkC8yd5RuqGzqAPXD/lf/p6RBICwdRFMLxvCigP2wsDCkGm+u
-EAdQFIQGdoUdJDr73H9almIomJ/rAwXBPbeYp2TgWzzD1TlsWS2MgfWPZICiAz0I
-aO+a2518jeLGQHi80LIvr1RFwXS75nlSk0WDYevpXr6946VML+wUY1X9/vrlmBvo
-QRzuwfvXHTWGDu679I1hAgMBAAGjQDA+MB0GA1UdEQQWMBSCEmV4YW00LmhhYm9v
-ay5sb2NhbDAdBgNVHQ4EFgQUt44zMPIaFyMJP6m/DoAVwd6cskgwDQYJKoZIhvcN
-AQELBQADggEBABp8wbwAdrKC3JkcgiywrGLtIQ0+6bunZ1lCc655zoVfFU5Xln3b
-mO6hXMMhN/u5ySItmaSX3T/zEA8j57L9XMvZk3+scS5JHOD9NW8pqsnnVLFU3mFO
-MGfAOqispu+HRI4hpjK7J+LlGSn1ftng6QHrgp/j1YAmrG0SxOuPHVpnvk9Lfl8c
-COCGkR4q1w8YVBn75ca6tX8TNhqZz26H21OM70XfdFe/cK3XrDOwFk62fsCyeofW
-0izDItZCi9lPHKuBOwUcKnkk3d2qJ5SyoDgQ7KvRu+JgnARi0vVS5CopuibTSmyC
-IVJ7C+L5c+zQeQk/uKLGC9pOJW9+VHoulpc=
------END CERTIFICATE-----

+ 0 - 74
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.bat

@@ -1,74 +0,0 @@
-@echo off
-echo Configuring hosts file
-
-net session >nul 2>&1
-if %errorLevel% neq 0 (
-    echo Please run this script as an administrator
-    pause
-    exit /b
-)
-
-set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.132 exam4.habook.local"
-
-if not exist "%hostsFile%" (
-    echo hosts file does not exist:%hostsFile%
-    pause
-    exit /b
-)
-
-
-findstr /v /i /c:"exam.habook.local" "%hostsFile%" > "%hostsFile%.tmp"
-if %errorLevel% equ 0 (
-    move /y "%hostsFile%.tmp" "%hostsFile%" >nul 2>&1
-    echo Removed all entries containing exam.habook.local
-) else (
-    echo Failed to remove entries containing exam.habook.local
-    pause
-    exit /b
-)
-
-
-echo %newEntry% >> "%hostsFile%"
-if %errorLevel% equ 0 (
-    echo Hosts file configured successfully
-) else (
-    echo Hosts file configuration failed
-    pause
-    exit /b
-)
-
-:ImportCert
-echo Importing certificate
-
-if not exist "%~dp0certificate.cer" (
-    echo Certificate file does not exist:%~dp0certificate.cer
-    pause
-    exit /b
-)
-
-set "certSubject="
-for /f "tokens=*" %%i in ('certutil -dump "%~dp0certificate.cer" ^| findstr /i "CN="') do (
-    set "certSubject=%%i"
-)
-
-if defined certSubject (
-    echo Deleting existing certificate with the same name
-    certutil -delstore "Root" "%certSubject%"
-    if %errorLevel% equ 0 (
-        echo Existing certificate deleted successfully
-    ) else (
-        echo Failed to delete existing certificate (may not exist)
-    )
-)
-
-echo Importing new certificate
-certutil -addstore -f "Root" "%~dp0certificate.cer"
-if %errorLevel% equ 0 (
-    echo Certificate imported successfully
-) else (
-    echo Certificate import failed
-)
-
-echo All operations completed
-pause

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDpu91Jfyvh421j
-TABrq0M/gX1GQXZ6DZE81M9853TmX9S6Hh59nFFYTZ/h62LjKQyY6kMWzOvCQeSP
-msbOCT7iUuvYa8jMUdxQYGd974uu0fk1TS58ZGyH9M02iMceRdmRZ1zc6ojfhLMg
-CcKAkC8yd5RuqGzqAPXD/lf/p6RBICwdRFMLxvCigP2wsDCkGm+uEAdQFIQGdoUd
-JDr73H9almIomJ/rAwXBPbeYp2TgWzzD1TlsWS2MgfWPZICiAz0IaO+a2518jeLG
-QHi80LIvr1RFwXS75nlSk0WDYevpXr6946VML+wUY1X9/vrlmBvoQRzuwfvXHTWG
-Du679I1hAgMBAAECggEACcxDgjd3xDQXq4wtz1WiT8jykq2fVQ35CuMD4KFGO/sD
-7JpjHlJdcZVtcJfAsTOREN7vGYdVEbNX7LIpB82I6o1d0BhyligPU3o7FGMkiJtK
-NlMKMhI2n3tiV9kjebAlZuw9jxAw1SfXp23pTqDcraGoIfxi9ms8Yi8pCrFBGC63
-zx1JzAvFSrfybWT8ExjslID3VX9AhYahlJyXZ6fayTwqFn5FQtqzpa070gnEBshB
-mXJ8Lb88pVvkPjWjHMlcUa3whTtZ+FvIozz2Fe0aRLICplitYzQKpqgIAuyaiWeI
-MDbYYBKgmGHCwM0S6EGBWPAw19BwTxT9Hm4ehVdoQQKBgQD6c+POW6bd1Lg31Sjl
-GiabN2bb2S9hI2WnfsYlYBX2mW4/WPvRK5ckgluPai5tt9zQ71FOIZ7U0HV4tMZG
-Fcu+dn+mBgRmcEjqI+/Uxy0SxZmZYbT4Row178Mc66iplUNkRNfZNQdo+RWQc3e7
-pUgoNT5I9hWNUZZTuCb6T4c+UQKBgQDu6Sz+6hRY7QZ4b7MMQl0oc9B8PDRRVi47
-aLlbT3rrtSn4Ng7vNfR80+tQBATmDe7twaM9kzumRzFDO8YO5eiyiicknjG/cyrn
-QM/aaa6xiMNYsClOCmJEcGyfUDeqvZW4AbiBbzGU+U4V0D8CjsIXxEsK8xRd+r9+
-94ONsRZKEQKBgQDlbTIbAERs44dZxg+vR3RkLa0w6dSINIfTlsNmy41zF/wxVY9g
-foD3Nd8wEkGzyoEieIhPfWblZoyl5VvYKfE5aY3nhY2UVXnF2uPBVC/LCW56XlIM
-OXwJkLh4jrwzlQNmH9ZnKDfAhqSlbdEZ+P+Pra5/4cW+biW6TXCPTjkC8QKBgQCW
-XP0rxuldenhLDooS2iXFkvaRalbHJkVcsLGQLXrApLmwdV164mtosPv11UG8BOLu
-kqOJ2oN9SGtR1Gn38G0/CUJPgpzu0K4c86ad4UvIgrnntJ+adWCZkGRc9GDEviNf
-tv2HwRLknu+tPO6bTnwL90f/sTONXoZtg5wxblYH8QKBgQDHHWcdtcxWdOAZQ5Tp
-sPRF0tRH3M261qt1OivhH1o0foKnCQKygThkYN8JoeAG8i1Z/b9D9A9CvDlGfaI9
-YV9V/FjHPrWEWO+5fCquIvO3kI0gpt77pdVp0G67IhqAwYQqniSSNIrfR9J32oEL
-kSQjjBj3xAi7wVNiXEH8Eyinng==
------END PRIVATE KEY-----

+ 0 - 22
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/cert.pem

@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDozCCAougAwIBAgIUXVG28xNwGPdDM2SRRiCQhDTZG60wDQYJKoZIhvcNAQEL
-BQAwazELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0No
-ZW5nRHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGjAYBgNVBAMMEWV4
-YW0uaGFib29rLmxvY2FsMB4XDTI1MDEyMTA0MzM0NVoXDTI2MDEyMTA0MzM0NVow
-azELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1NpQ2h1YW4xEDAOBgNVBAcMB0NoZW5n
-RHUxDzANBgNVBAoMBmhhYm9vazELMAkGA1UECwwCcmQxGjAYBgNVBAMMEWV4YW0u
-aGFib29rLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxAl2
-7myycEOgiO0OEohPYDV/1raik81QuU3485caFoxs2UUXJoW0zkG0TKHVqVJGcNbg
-xncN7gjThRAKy4PSLTrn9A9fPJVqRpB0ElJlBsChhfXxpWzrFl/wHOxdmYz5rUjs
-gjq0zdlodSQ2yWE0VdZhI6VqIbvz16rHXj19B1kKcGVzlnwuRxuqldDEJSUD3UTe
-epPGaSbdqI4riUcOaksEMEAgll7HqixTv5tB3/aKJ0w+nxZFimocdA/XFXIXMO1M
-lLP2CCck1Jv7vlAL/TP22wQnfINifYDisTmsdtFvq6hgkFgh34lDX+moM92MPR5/
-m5D4GQi6BYtFpOoC+wIDAQABoz8wPTAcBgNVHREEFTATghFleGFtLmhhYm9vay5s
-b2NhbDAdBgNVHQ4EFgQUXr4ImISHw4eBN6r8MO3LiM0o+5gwDQYJKoZIhvcNAQEL
-BQADggEBAIFTbpGUwtpMa//mrHGghAcF+jw3+6G/I6K0bsfcFfYVQJCwJ+HcNWDJ
-+nCn64rdu5sQvFmpPSlXBMbFoW/ZAxs2g7jhk90MUrR0MFBu91qAu2gqwE55S6xr
-O7fg4sd0aVvR2tE2e6wxMaLGTfNtF9Uo0tKFehDUQXIiCSAQkLGwsWneZ+GRE8Dc
-CwGjJXpwvBfmcQoNMLqZpZ8P8AdOUVjp7PIEkWJWSGcaa+RCrP4qhVwNv+ZloBbc
-XBNxCrftg2epupYOGvsq5ACX7u3nLbRfuKu3X+E0F7V/Qwmjfc9+WS50LouCMIx/
-TvVawMxytPaTUlQe45aNANW4reHWezQ=
------END CERTIFICATE-----

+ 0 - 74
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.bat

@@ -1,74 +0,0 @@
-@echo off
-echo Configuring hosts file
-
-net session >nul 2>&1
-if %errorLevel% neq 0 (
-    echo Please run this script as an administrator
-    pause
-    exit /b
-)
-
-set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.132 exam.habook.local"
-
-if not exist "%hostsFile%" (
-    echo hosts file does not exist:%hostsFile%
-    pause
-    exit /b
-)
-
-
-findstr /v /i /c:"exam.habook.local" "%hostsFile%" > "%hostsFile%.tmp"
-if %errorLevel% equ 0 (
-    move /y "%hostsFile%.tmp" "%hostsFile%" >nul 2>&1
-    echo Removed all entries containing exam.habook.local
-) else (
-    echo Failed to remove entries containing exam.habook.local
-    pause
-    exit /b
-)
-
-
-echo %newEntry% >> "%hostsFile%"
-if %errorLevel% equ 0 (
-    echo Hosts file configured successfully
-) else (
-    echo Hosts file configuration failed
-    pause
-    exit /b
-)
-
-:ImportCert
-echo Importing certificate
-
-if not exist "%~dp0certificate.cer" (
-    echo Certificate file does not exist:%~dp0certificate.cer
-    pause
-    exit /b
-)
-
-set "certSubject="
-for /f "tokens=*" %%i in ('certutil -dump "%~dp0certificate.cer" ^| findstr /i "CN="') do (
-    set "certSubject=%%i"
-)
-
-if defined certSubject (
-    echo Deleting existing certificate with the same name
-    certutil -delstore "Root" "%certSubject%"
-    if %errorLevel% equ 0 (
-        echo Existing certificate deleted successfully
-    ) else (
-        echo Failed to delete existing certificate (may not exist)
-    )
-)
-
-echo Importing new certificate
-certutil -addstore -f "Root" "%~dp0certificate.cer"
-if %errorLevel% equ 0 (
-    echo Certificate imported successfully
-) else (
-    echo Certificate import failed
-)
-
-echo All operations completed
-pause

BIN
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.cer


+ 0 - 28
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/key.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDECXbubLJwQ6CI
-7Q4SiE9gNX/WtqKTzVC5TfjzlxoWjGzZRRcmhbTOQbRModWpUkZw1uDGdw3uCNOF
-EArLg9ItOuf0D188lWpGkHQSUmUGwKGF9fGlbOsWX/Ac7F2ZjPmtSOyCOrTN2Wh1
-JDbJYTRV1mEjpWohu/PXqsdePX0HWQpwZXOWfC5HG6qV0MQlJQPdRN56k8ZpJt2o
-jiuJRw5qSwQwQCCWXseqLFO/m0Hf9oonTD6fFkWKahx0D9cVchcw7UyUs/YIJyTU
-m/u+UAv9M/bbBCd8g2J9gOKxOax20W+rqGCQWCHfiUNf6agz3Yw9Hn+bkPgZCLoF
-i0Wk6gL7AgMBAAECggEABMSeKepm5KggbXQmlXjPRW3HsDc8+Q9TWU52MaaJMec0
-doxhpcQ2w5WBhyOgiL/BitkPGoSmyBVa36+mM5D/Oa5nGd6N2HFh5ll5GUD7yBBD
-XXi/6eAeT6sBshJlrGhrYjWV2w0GfMM+8SpyUq+UkEnoju9lB3EE20gCFV61fco3
-pK7en/hHCK0/jLDJYxEhEk5FMKA0BAUdsoD2WRVCnakCSaKRJzJEafL9CHQaL/oq
-pPVIYO3tx0ryNtdcLsc0j01rLMJ8n9lG59+3zAu5nCEVHYKO7oPuj8kpwdqxIj9J
-ZnSHX9ayJYNOdJDGD8zQYKhZQdquOYOAE9NnbINAMQKBgQD+OCf02IIuK4NcU1Ef
-wlx/sRjvCIWq39S1KNQ0kPtI4dWUNLI5DJqVQgylHIkVC/FNbTcaW1A6nVqukJfJ
-Nu3HrZoN+585QRKesTGNd45Zmwwy8JuV1OblV6SbI5xZ3g3S4SVkWnldOz36FThn
-wdHf2lg/unGzX4ojgYfuV1VpfwKBgQDFaPsd7Lo9oDUEZH4GDjk8onsIWwad6Nut
-3CCdBn3tiSlSAddVbZfu60VtM25CA9K1UbPsV1FU7ZYX1wKma019r1VqkwhPMWoq
-FsnhoHMOl69vV/3brjfHZDflbCMbMt/vYc91kRS7nVDAeqz5sDf4mJ7BSs70ZGth
-oAqHLQfMhQKBgQDhg71mRX5OKMmR6FMpwkg9+kNtIHk7GO5feoWs0AQqJjRKEekc
-FKM4zuvauJKeegaoMb9VATYNmTMtchVEKRcMMGNeDh20M5ap8fRMU4eS06khszHB
-26isQHBEM3XqfsJylMmP2XaaDwiuxY5Q9K4ST2ZDukhM3+7yCmEkPJMHTwKBgEEK
-DXIWhGW5Wr5PvZWRKhpoDdD67HsqNPZbCAO0F9kiz5JNOPzUVrJIoV8RCsqFJ+7F
-NFoxioJIpKLGHAFoaOd31NSADMTKqwei6nCDxGSSZSJyAxlVlNsEkcXsksRrRow/
-1XIOkp4dfnVr9YFuJYKqBeP5GaY7T4WijNVsaJ1hAoGAGQD8EyQXcfsaIEjaPQ65
-io+DloCFqwJd5EkCFPyv7Qz+5A9Jv6/RTznXSXtNBv+j6t7MG/o6A8ZX0ZR5UjuG
-WB/U87QpUokC+wzNTCdbDWaF/GvOU8lziksDrMMzrV8Yy+CVtGNiscAZyj6QJ1Am
-WrPltUEZoXxKkRRcmvNeti8=
------END PRIVATE KEY-----

+ 2 - 2
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/IndexController.cs

@@ -46,8 +46,8 @@ namespace IES.ExamServer.Controllers
                     var network = serverDevice.networks.Find(x => mac.Equals(x.mac));
                     if (network!=null)
                     {
-                        string pathBat = Path.Combine(Directory.GetCurrentDirectory(), "Configs", "template", "certificate.bat");
-                        string pathCer = Path.Combine(Directory.GetCurrentDirectory(), "Configs", "template" ,"certificate.cer");
+                        string pathBat = Path.Combine(Directory.GetCurrentDirectory(), "Configs", "cer", "certificate.bat");
+                        string pathCer = Path.Combine(Directory.GetCurrentDirectory(), "Configs", "cer", "certificate.cer");
                         string text = await System.IO.File.ReadAllTextAsync(pathBat);
                         text = text.Replace("192.168.8.132", network.ip);
                         string pathCertificateBat = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "package", "certificate.bat");

+ 33 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/WeatherForecastController.cs

@@ -0,0 +1,33 @@
+using Microsoft.AspNetCore.Mvc;
+
+namespace IES.ExamServer.Server.Controllers
+{
+    [ApiController]
+    [Route("[controller]")]
+    public class WeatherForecastController : ControllerBase
+    {
+        private static readonly string[] Summaries = new[]
+        {
+            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
+        };
+
+        private readonly ILogger<WeatherForecastController> _logger;
+
+        public WeatherForecastController(ILogger<WeatherForecastController> logger)
+        {
+            _logger = logger;
+        }
+
+        [HttpGet]
+        public IEnumerable<WeatherForecast> Get()
+        {
+            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
+            {
+                Date = DateTime.Now.AddDays(index),
+                TemperatureC = Random.Shared.Next(-20, 55),
+                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
+            })
+            .ToArray();
+        }
+    }
+}

+ 41 - 18
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/IES.ExamServer.csproj

@@ -6,35 +6,58 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <SpaRoot>..\IES.ExamViews</SpaRoot>
     <SpaProxyLaunchCommand>npm run serve</SpaProxyLaunchCommand>
-    <SpaProxyServerUrl>http://localhost:8081</SpaProxyServerUrl>
+    <SpaProxyServerUrl>https://localhost:8082</SpaProxyServerUrl>
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\IES.ExamLib\IES.ExamLibrary.csproj" />
-    <ProjectReference Include="..\IES.ExamViews\IES.ExamViews.esproj">
+	  <ProjectReference Include="..\IES.ExamLib\IES.ExamLibrary.csproj" />
+	  <ProjectReference Include="..\IES.ExamViews\IES.ExamViews.esproj">
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
   </ItemGroup>
 
   <ItemGroup>
-	  <PackageReference Include="AutoMapper" Version="13.0.1" />
-	  <PackageReference Include="LiteDB" Version="5.0.21" />
-	  <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.36" />
-	  <PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
-	  <PackageReference Include="NLog" Version="5.3.4" />
-	  <PackageReference Include="NLog.Extensions.Logging" Version="5.3.15" />
-	  <PackageReference Include="SkiaSharp.QrCode" Version="0.7.0" />
-	  <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="6.0.2" />
-	  <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.3.0" />
-	  <PackageReference Include="System.Management" Version="6.0.2" />
-	  <PackageReference Include="ZXing.Net.Bindings.ZKWeb.System.Drawing" Version="0.16.7" />
+	<PackageReference Include="LiteDB" Version="5.0.21" />
+	<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.36" />
+	<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="6.0.36" />
+	<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
+	<PackageReference Include="NLog" Version="5.3.4" />
+	<PackageReference Include="NLog.Extensions.Logging" Version="5.3.15" />
+	<PackageReference Include="SkiaSharp.QrCode" Version="0.7.0" />
+	<PackageReference Include="System.Diagnostics.PerformanceCounter" Version="6.0.2" />
+	<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.3.0" />
+	<PackageReference Include="System.Management" Version="6.0.2" />
+	<PackageReference Include="ZXing.Net.Bindings.ZKWeb.System.Drawing" Version="0.16.7" />
     <PackageReference Include="Microsoft.AspNetCore.SpaProxy">
-      <Version>6.*-*</Version>
+    <Version>6.*-*</Version>
     </PackageReference>
   </ItemGroup>
-
   <ItemGroup>
-    <Folder Include="Logs\DataLogs\" />
+	<Folder Include="Logs\DataLogs\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Update="appsettings.Development.json">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Update="appsettings.json">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <None Update="app.manifest">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="Configs\cer\cert.pem">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="Configs\cer\certificate.bat">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="Configs\cer\certificate.cer">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="Configs\cer\key.pem">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
   </ItemGroup>
-
 </Project>

+ 15 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Models/ServerDevice.cs

@@ -70,8 +70,23 @@ namespace IES.ExamServer.Models
     }
     public class Network
     {
+        /// <summary>
+        /// 网卡名称
+        /// </summary>
+        /// </summary>
         public string? name { get; set; }
+        /// <summary>
+        /// mac地址
+        /// </summary>
         public string? mac { get; set; }
+        /// <summary>
+        /// ip地址
+        /// </summary>
         public string? ip { get; set; }
+        /// <summary>
+        /// 绑定域名
+        /// </summary>
+        public string? domain { get; set; }
+        public int physical {  get; set; }
     }
 }

+ 6 - 6
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Program.cs

@@ -15,16 +15,19 @@ namespace IES.ExamServer.Server
         {
             Console.OutputEncoding = Encoding.UTF8;
             var builder = WebApplication.CreateBuilder(args);
+
+            // Add services to the container.
+
             string path = $"{builder.Environment.ContentRootPath}/Configs";
             // Add services to the container.
             builder.Configuration.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
             // Add services to the container.
-            builder.Services.AddControllers().AddJsonOptions(options =>
+            builder.Services.AddControllersWithViews().AddJsonOptions(options =>
             {
                 // 设置 JSON 序列化选项
                 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); // 允许所有 Unicode 字符
                 options.JsonSerializerOptions.WriteIndented = true; // 格式化输出(可选)
-            }); ;
+            });
             builder.Services.AddHttpClient();
             builder.Services.AddSignalR();
             builder.Services.AddHttpContextAccessor();
@@ -81,7 +84,6 @@ namespace IES.ExamServer.Server
             var app = builder.Build();
 
             app.UseDefaultFiles();
-
             var contentTypeProvider = new FileExtensionContentTypeProvider();
             contentTypeProvider.Mappings[".txt"] = "text/plain";
             contentTypeProvider.Mappings[".jpg"] = "image/jpeg";
@@ -110,11 +112,9 @@ namespace IES.ExamServer.Server
 
 
             app.MapControllers();
-            app.MapHub<SignalRExamServerHub>("/signalr/exam").RequireCors("any");
 
             app.MapFallbackToFile("/index.html");
-
-            // 获取 ServiceInitializer 实例并初始化
+            app.MapHub<SignalRExamServerHub>("/signalr/exam").RequireCors("any");
             var connectionManager = app.Services.GetRequiredService<ServiceInitializer>();
             await connectionManager.InitializeAsync();
             await app.RunAsync();

+ 5 - 5
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Properties/launchSettings.json

@@ -4,8 +4,8 @@
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
-      "applicationUrl": "http://localhost:57655",
-      "sslPort": 44395
+      "applicationUrl": "http://localhost:60203",
+      "sslPort": 44397
     }
   },
   "profiles": {
@@ -13,8 +13,8 @@
       "commandName": "Project",
       "dotnetRunMessages": true,
       "launchBrowser": true,
-      "launchUrl": "",
-      "applicationUrl": "https://localhost:7113;http://localhost:5049",
+      "launchUrl": "weatherforecast",
+      "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development",
         "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy"
@@ -23,7 +23,7 @@
     "IIS Express": {
       "commandName": "IISExpress",
       "launchBrowser": true,
-      "launchUrl": "",
+      "launchUrl": "weatherforecast",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development",
         "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy"

+ 54 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Services/IndexService.cs

@@ -240,8 +240,29 @@ namespace IES.ExamServer.Services
             var nics = NetworkInterface.GetAllNetworkInterfaces();
             foreach (var nic in nics)
             {
+                int physical = 0;
                 if (nic.OperationalStatus == OperationalStatus.Up)
                 {
+                    //该方法并不能判断是否是物理网卡
+                    //if (nic.NetworkInterfaceType== NetworkInterfaceType.Ethernet//- 以太网接口,通常用于有线网络连接。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.TokenRing//- 令牌环网接口,一种较早的局域网技术。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.Fddi//- 光纤分布式数据接口,用于光纤网络。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.Ethernet3Megabit//- 3兆比特以太网接口,一种较早的以太网标准。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.FastEthernetT// 快速以太网接口(100Base-T),用于双绞线网络。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.FastEthernetFx//快速以太网接口(100Base-FX),用于光纤网络。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.Wireless80211//无线局域网接口(Wi-Fi)。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.GigabitEthernet //千兆以太网接口,提供1 Gbps的数据速率。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.Wman// 移动宽带接口,用于WiMax设备。
+                    //    ||nic.NetworkInterfaceType== NetworkInterfaceType.Wwanpp//移动宽带接口,用于GSM设备。
+                    //      ||nic.NetworkInterfaceType== NetworkInterfaceType.Wwanpp2//移动宽带接口,用于CDMA设备。
+                    //    )
+                    //{
+                    //    physical=1;
+                    //}
+                    if (IsPhysicalNetworkInterface(nic)) 
+                    {
+                        physical = 1;
+                    }
                     var name = $"{nic.Name}-{nic.Description}";
                     var mac = nic.GetPhysicalAddress().ToString();
                     var properties = nic.GetIPProperties();
@@ -251,7 +272,8 @@ namespace IES.ExamServer.Services
                         if (unicast.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                         {
                             var ip = unicast.Address.ToString();
-                            Network network = new Network() { mac=mac, ip=ip, name= name };
+                            //  绑定域名 优先绑定
+                            Network network = new Network() { mac=mac, ip=ip, name= name, physical=physical };
                             if (!string.IsNullOrWhiteSpace(mac.ToString())  && !mac.Equals("000000000000"))
                             {
                                 device.networks.Add(network);
@@ -280,7 +302,38 @@ namespace IES.ExamServer.Services
             return device;
         }
 
+        public static bool IsPhysicalNetworkInterface(NetworkInterface nic)
+        {
+            // 排除虚拟网卡的关键词
+            string[] virtualKeywords = { "virtual", "hyper-v", "virtualbox", "vmware", "veth","virbr", "tunnel", "docker", "loopback", "vpn","ppp", "slip", "bridge",
+            "vnic", "vif", "tap", "vlan", "vswitch", "vxlan", "gre", "ipsec", "vrf", "vport", "vnet", "vmac", "vxnet"};
+
+            // 检查网卡描述或名称中是否包含虚拟关键词
+            string description = nic.Description.ToLower();
+            string name = nic.Name.ToLower();
 
+            foreach (var keyword in virtualKeywords)
+            {
+                if (description.Contains(keyword,StringComparison.OrdinalIgnoreCase) || name.Contains(keyword, StringComparison.OrdinalIgnoreCase))
+                {
+                    return false; // 是虚拟网卡
+                }
+            }
+
+            // 排除一些常见的虚拟网卡类型
+            if (nic.NetworkInterfaceType == NetworkInterfaceType.Loopback ||
+                nic.NetworkInterfaceType == NetworkInterfaceType.Tunnel ||
+                nic.NetworkInterfaceType == NetworkInterfaceType.Ppp ||
+                nic.NetworkInterfaceType == NetworkInterfaceType.Slip||
+                nic.NetworkInterfaceType == NetworkInterfaceType.Unknown   
+                )
+            {
+                return false; // 是虚拟网卡
+            }
+
+            // 默认认为是物理网卡
+            return true;
+        }
         /// <summary>
         /// 直接获取设备。
         /// </summary>

+ 13 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/WeatherForecast.cs

@@ -0,0 +1,13 @@
+namespace IES.ExamServer.Server
+{
+    public class WeatherForecast
+    {
+        public DateTime Date { get; set; }
+
+        public int TemperatureC { get; set; }
+
+        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
+
+        public string? Summary { get; set; }
+    }
+}

+ 4 - 32
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/appsettings.json

@@ -16,39 +16,11 @@
   "AllowedHosts": "*",
   "Kestrel": {
     "Endpoints": {
-      "Https0": {
-        "Url": "https://*:8000",
-        "Certificate": {
-          "Path": "Configs/exam0/cert.pem",
-          "KeyPath": "Configs/exam0/key.pem"
-        }
-      },
       "Https1": {
-        "Url": "https://*:8001",
-        "Certificate": {
-          "Path": "Configs/exam1/cert.pem",
-          "KeyPath": "Configs/exam1/key.pem"
-        }
-      },
-      "Https2": {
-        "Url": "https://*:8002",
-        "Certificate": {
-          "Path": "Configs/exam2/cert.pem",
-          "KeyPath": "Configs/exam2/key.pem"
-        }
-      },
-      "Https3": {
-        "Url": "https://*:8003",
-        "Certificate": {
-          "Path": "Configs/exam3/cert.pem",
-          "KeyPath": "Configs/exam3/key.pem"
-        }
-      },
-      "Https4": {
-        "Url": "https://*:8004",
+        "Url": "https://*:8888",
         "Certificate": {
-          "Path": "Configs/exam4/cert.pem",
-          "KeyPath": "Configs/exam4/key.pem"
+          "Path": "Configs/cer/cert.pem",
+          "KeyPath": "Configs/cer/key.pem"
         }
       }
     }
@@ -60,6 +32,6 @@
     "NotifyUrl": "https://www.winteach.cn"
   },
   "ExamClient": {
-    "Domain": "exam.habook.local"
+    "Domain": "habook.local"
   }
 }

+ 0 - 9
TEAMModelOS.Extension/IES.Exam/IES.ExamViews/.editorconfig

@@ -1,9 +0,0 @@
-[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}]
-charset = utf-8
-indent_size = 2
-indent_style = space
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-end_of_line = lf
-max_line_length = 100

+ 0 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamViews/.gitattributes

@@ -1 +0,0 @@
-* text=auto eol=lf

+ 2 - 2
TEAMModelOS.Extension/IES.Exam/IES.ExamViews/IES.ExamViews.esproj

@@ -1,6 +1,6 @@
-<Project Sdk="Microsoft.VisualStudio.JavaScript.Sdk/0.5.128-alpha">
+<Project Sdk="Microsoft.VisualStudio.JavaScript.Sdk/1.0.1738743">
   <PropertyGroup>
-    <StartupCommand>npm run serve</StartupCommand>
+    <StartupCommand>npm run dev</StartupCommand>
     <JavaScriptTestRoot>.\</JavaScriptTestRoot>
     <JavaScriptTestFramework>Jest</JavaScriptTestFramework>
     <!-- Allows the build (or compile) script located on package.json to run on Build -->

+ 0 - 13
TEAMModelOS.Extension/IES.Exam/IES.ExamViews/index.html

@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html lang="">
-  <head>
-    <meta charset="UTF-8">
-    <link rel="icon" href="/favicon.ico">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Vite App</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.js"></script>
-  </body>
-</html>

+ 49 - 6
TEAMModelOS.Extension/IES.Exam/IES.ExamViews/vue.config.js

@@ -1,3 +1,5 @@
+const fs = require('fs')
+const { env } = require('process')
 const path = require('path')
 const { CleanWebpackPlugin } = require('clean-webpack-plugin')
 const { defineConfig } = require('@vue/cli-service')
@@ -6,13 +8,54 @@ function resolve(dir) {
 	return path.join(__dirname, './', dir)
 }
 
+const baseFolder =
+  env.APPDATA !== undefined && env.APPDATA !== ''
+    ? `${env.APPDATA}/ASP.NET/https`
+    : `${env.HOME}/.aspnet/https`;
+	const certificateName = 'ies.examserver.client';
+const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
+const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
+
+if (!fs.existsSync(baseFolder)) {
+  fs.mkdirSync(baseFolder, { recursive: true });
+}
+
+if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) {
+  if (
+    0 !==
+    require('child_process').spawnSync(
+      'dotnet',
+      [
+        'dev-certs',
+        'https',
+        '--export-path',
+        certFilePath,
+        '--format',
+        'Pem',
+        '--no-password',
+      ],
+      { stdio: 'inherit' }
+    ).status
+  ) {
+    throw new Error('Could not create certificate.');
+  }
+}
+const target = process.env.VUE_APP_API_BASE_URL || 'https://localhost:6001';
 module.exports = defineConfig({
 	transpileDependencies: true,
 	lintOnSave: false,
-	//transpileDependencies: ['@azure'],
-	/* devServer: { //局域网内可以使用
-		host: '0.0.0.0', //允许所有IP访问
-		port: 8081,
-		disableHostCheck: true, // 禁用主机检查,允许局域网访问
-	} */
+	devServer: {
+		https: {
+		  key: fs.readFileSync(keyFilePath),
+		  cert: fs.readFileSync(certFilePath),
+		},
+		port: 8082,
+		proxy: {
+			'^/(.*)': {
+                target,
+				secure: false,
+				changeOrigin: false,
+            }
+		},
+	  },
 })

+ 16 - 16
TEAMModelOS.sln

@@ -39,16 +39,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IES.Exam", "IES.Exam", "{50
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IES.ExamLibrary", "TEAMModelOS.Extension\IES.Exam\IES.ExamLib\IES.ExamLibrary.csproj", "{888B9C85-5E7E-4E2B-968D-66D8A3561EB7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IES.ExamServer", "TEAMModelOS.Extension\IES.Exam\IES.ExamServer\IES.ExamServer.csproj", "{907EDC59-F77D-4AFA-83ED-1559EF0624F4}"
-EndProject
-Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "IES.ExamViews", "TEAMModelOS.Extension\IES.Exam\IES.ExamViews\IES.ExamViews.esproj", "{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}"
-EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IES.Contest", "IES.Contest", "{58201350-BF9F-40A6-8AE0-BF372AFD2E2D}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HTEX", "HTEX", "{4835C028-0176-4D45-9997-A172EB7446A5}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IES.Hybrid", "IES.Hybrid", "{6B34DA2A-7527-426F-AD36-F5CE923CED62}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IES.ExamServer", "TEAMModelOS.Extension\IES.Exam\IES.ExamServer\IES.ExamServer.csproj", "{41AABD1E-815E-4981-892F-074ED0A18EE4}"
+EndProject
+Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "IES.ExamViews", "TEAMModelOS.Extension\IES.Exam\IES.ExamViews\IES.ExamViews.esproj", "{837FAA7E-E897-49EC-905E-4071CA25539A}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -121,16 +121,16 @@ Global
 		{888B9C85-5E7E-4E2B-968D-66D8A3561EB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{888B9C85-5E7E-4E2B-968D-66D8A3561EB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{888B9C85-5E7E-4E2B-968D-66D8A3561EB7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{907EDC59-F77D-4AFA-83ED-1559EF0624F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{907EDC59-F77D-4AFA-83ED-1559EF0624F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{907EDC59-F77D-4AFA-83ED-1559EF0624F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{907EDC59-F77D-4AFA-83ED-1559EF0624F4}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD}.Release|Any CPU.Deploy.0 = Release|Any CPU
+		{41AABD1E-815E-4981-892F-074ED0A18EE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{41AABD1E-815E-4981-892F-074ED0A18EE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{41AABD1E-815E-4981-892F-074ED0A18EE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{41AABD1E-815E-4981-892F-074ED0A18EE4}.Release|Any CPU.Build.0 = Release|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{837FAA7E-E897-49EC-905E-4071CA25539A}.Release|Any CPU.Deploy.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -149,11 +149,11 @@ Global
 		{0FC9DE8A-488B-4ACD-88D5-8DEDECA1FF42} = {6B34DA2A-7527-426F-AD36-F5CE923CED62}
 		{50CC8BCA-FB13-492E-849D-1E1870DEBBAB} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 		{888B9C85-5E7E-4E2B-968D-66D8A3561EB7} = {50CC8BCA-FB13-492E-849D-1E1870DEBBAB}
-		{907EDC59-F77D-4AFA-83ED-1559EF0624F4} = {50CC8BCA-FB13-492E-849D-1E1870DEBBAB}
-		{6FFC4B7E-731F-45F9-BBBF-9CF73B5AE1FD} = {50CC8BCA-FB13-492E-849D-1E1870DEBBAB}
 		{58201350-BF9F-40A6-8AE0-BF372AFD2E2D} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 		{4835C028-0176-4D45-9997-A172EB7446A5} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
 		{6B34DA2A-7527-426F-AD36-F5CE923CED62} = {9B74B53F-20E8-46CC-903B-62AEB1583DD7}
+		{41AABD1E-815E-4981-892F-074ED0A18EE4} = {50CC8BCA-FB13-492E-849D-1E1870DEBBAB}
+		{837FAA7E-E897-49EC-905E-4071CA25539A} = {50CC8BCA-FB13-492E-849D-1E1870DEBBAB}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {76440725-5E50-4288-851F-BA5C0BC8E8C6}