CrazyIter_Bin 4 months ago
parent
commit
716b126224
33 changed files with 2222 additions and 52 deletions
  1. 0 11
      TEAMModelOS.Extension/IES.Exam/IES.ExamClient/CHANGELOG.md
  2. 30 3
      TEAMModelOS.Extension/IES.Exam/IES.ExamClient/app.js
  3. 0 7
      TEAMModelOS.Extension/IES.Exam/IES.ExamClient/eslint.config.js
  4. 33 5
      TEAMModelOS.Extension/IES.Exam/IES.ExamClient/package.json
  5. 1501 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamClient/yarn.lock
  6. 0 13
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/.config/dotnet-tools.json
  7. 0 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/cert.pem
  8. 1 1
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/certificate.bat
  9. 0 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/certificate.cer
  10. 0 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/key.pem
  11. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/cert.pem
  12. 74 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.bat
  13. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/certificate.cer
  14. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam1/key.pem
  15. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/cert.pem
  16. 74 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.bat
  17. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/certificate.cer
  18. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam2/key.pem
  19. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/cert.pem
  20. 74 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.bat
  21. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/certificate.cer
  22. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam3/key.pem
  23. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/cert.pem
  24. 74 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.bat
  25. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/certificate.cer
  26. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam4/key.pem
  27. 22 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/cert.pem
  28. 74 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.bat
  29. BIN
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/certificate.cer
  30. 28 0
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/template/key.pem
  31. 3 3
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/IndexController.cs
  32. 1 4
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/appsettings.Development.json
  33. 33 5
      TEAMModelOS.Extension/IES.Exam/IES.ExamServer/appsettings.json

+ 0 - 11
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/CHANGELOG.md

@@ -1,11 +0,0 @@
-This file explains how Visual Studio created the project.
-
-The following steps were used to generate this project:
-- Create project file (`IES.ExamClient.esproj`).
-- Create `launch.json` to enable debugging.
-- Install npm packages: `npm init && npm i --save-dev eslint`.
-- Create `app.js`.
-- Update `package.json` entry point.
-- Create `eslint.config.js` to enable linting.
-- Add project to solution.
-- Write this file.

+ 30 - 3
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/app.js

@@ -1,8 +1,7 @@
 const { app, BrowserWindow, Menu } = require('electron/main');
 const { app, BrowserWindow, Menu } = require('electron/main');
 const { spawn } = require('child_process');
 const { spawn } = require('child_process');
 const net = require('net');
 const net = require('net');
-
-let dotnetProcess;
+//const si = require('systeminformation');
 //const startDotnet = () => {
 //const startDotnet = () => {
 //    return new Promise((resolve, reject) => {
 //    return new Promise((resolve, reject) => {
 //        dotnetProcess = spawn('dotnet', ['run', '--project', '../IES.ExamServer/IES.ExamServer.csproj']);
 //        dotnetProcess = spawn('dotnet', ['run', '--project', '../IES.ExamServer/IES.ExamServer.csproj']);
@@ -27,16 +26,44 @@ let dotnetProcess;
 //        });
 //        });
 //    });
 //    });
 //};
 //};
+// 获取网卡信息
+// npm start  启动命令
+const platform = process.platform;
+if (platform === 'win32') {
+    console.log('Running on Windows');
+} else if (platform === 'linux') {
+    console.log('Running on Linux');
+} else if (platform === 'darwin') {
+    console.log('Running on macOS');
+} else {
+    console.log('Running on an unknown platform');
+}
 
 
+//si.networkInterfaces()
+//    .then(data => {
+//        console.log('Network Interfaces:', data);
+//        //mainWindow.webContents.send('network-interfaces', data);
+//    })
+//    .catch(error => {
+//        console.error('Error fetching network interfaces:', error);
+//    });
 const createWindow = async () => {
 const createWindow = async () => {
     try {
     try {
         //await startDotnet();
         //await startDotnet();
         const win = new BrowserWindow({
         const win = new BrowserWindow({
             width: 800,
             width: 800,
             height: 600
             height: 600
+            //webPreferences: {
+            //    nodeIntegration: true,
+            //    contextIsolation: false,
+            //},
         });
         });
+        // 忽略证书错误
+        //win.webContents.session.setCertificateVerifyProc((request, callback) => {
+        //    callback(0); // 允许所有证书
+        //});
         win.maximize();
         win.maximize();
-        win.loadURL('https://exam.habook.local:6001');
+        win.loadURL('https://exam.habook.local:8001');
     } catch (error) {
     } catch (error) {
         console.error('Error starting dotnet or loading window:', error);
         console.error('Error starting dotnet or loading window:', error);
     }
     }

+ 0 - 7
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/eslint.config.js

@@ -1,7 +0,0 @@
-module.exports = [
-    {
-        rules: {
-            // Add rules here.
-        }
-    }
-];

+ 33 - 5
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/package.json

@@ -1,17 +1,45 @@
 {
 {
-  "name": "ies.examclient",
+  "name": "examclient",
   "version": "1.0.0",
   "version": "1.0.0",
   "description": "",
   "description": "",
   "main": "app.js",
   "main": "app.js",
   "scripts": {
   "scripts": {
     "start": "electron .",
     "start": "electron .",
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "package": "electron-packager . --platform=win32 --arch=ia32 --out=dist --overwrite",
+    "build": "electron-builder --win --ia32"
   },
   },
   "keywords": [],
   "keywords": [],
   "author": "",
   "author": "",
-  "license": "ISC",
+  "license": "MIT",
   "devDependencies": {
   "devDependencies": {
-    "electron": "21.4.4",
-    "eslint": "^9.17.0"
+    "electron": "12.2.3",
+    "electron-packager": "^17.1.2"
+  },
+  "build": {
+    "electronDownload": {
+      "mirror": "https://npm.taobao.org/mirrors/electron/"
+    },
+    "appId": "exam.habool.local",
+    "productName": "评测局域网教师端",
+    "directories": {
+      "output": "dist"
+    },
+    "win": {
+      "target": "nsis",
+      "sign": false
+    },
+    "nsis": {
+      "runAfterFinish": false
+    },
+    "extraFiles": [
+      {
+        "from": "server",
+        "to": "server",
+        "filter": [
+          "**/*"
+        ]
+      }
+    ]
   }
   }
 }
 }

File diff suppressed because it is too large
+ 1501 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamClient/yarn.lock


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

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

TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/cert.pem → TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/cert.pem


+ 1 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/certificate.bat

@@ -9,7 +9,7 @@ if %errorLevel% neq 0 (
 )
 )
 
 
 set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
 set "hostsFile=C:\Windows\System32\drivers\etc\hosts"
-set "newEntry=192.168.8.131 exam.habook.local"
+set "newEntry=192.168.8.132 exam.habook.local"
 
 
 if not exist "%hostsFile%" (
 if not exist "%hostsFile%" (
     echo hosts file does not exist:%hostsFile%
     echo hosts file does not exist:%hostsFile%

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


TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/key.pem → TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Configs/exam0/key.pem


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

@@ -0,0 +1,22 @@
+-----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-----

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

@@ -0,0 +1,74 @@
+@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


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

@@ -0,0 +1,28 @@
+-----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-----

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

@@ -0,0 +1,22 @@
+-----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-----

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

@@ -0,0 +1,74 @@
+@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


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

@@ -0,0 +1,28 @@
+-----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-----

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

@@ -0,0 +1,22 @@
+-----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-----

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

@@ -0,0 +1,74 @@
+@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


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

@@ -0,0 +1,28 @@
+-----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-----

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

@@ -0,0 +1,22 @@
+-----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-----

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

@@ -0,0 +1,74 @@
+@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


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

@@ -0,0 +1,28 @@
+-----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-----

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

@@ -0,0 +1,22 @@
+-----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-----

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

@@ -0,0 +1,74 @@
+@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


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

@@ -0,0 +1,28 @@
+-----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-----

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

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

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

@@ -7,11 +7,8 @@
   },
   },
   "Kestrel": {
   "Kestrel": {
     "Endpoints": {
     "Endpoints": {
-      "Http": {
-        "Url": "https://*:6001"
-      },
       "Https": {
       "Https": {
-        "Url": "http://*:6000"
+        "Url": "https://*:6001"
       }
       }
     }
     }
   }
   }

+ 33 - 5
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/appsettings.json

@@ -16,11 +16,39 @@
   "AllowedHosts": "*",
   "AllowedHosts": "*",
   "Kestrel": {
   "Kestrel": {
     "Endpoints": {
     "Endpoints": {
-      "Https": {
-        "Url": "https://exam.habook.local:8001",
+      "Https0": {
+        "Url": "https://*:8000",
         "Certificate": {
         "Certificate": {
-          "Path": "Configs/cert.pem",
-          "KeyPath": "Configs/key.pem"
+          "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",
+        "Certificate": {
+          "Path": "Configs/exam4/cert.pem",
+          "KeyPath": "Configs/exam4/key.pem"
         }
         }
       }
       }
     }
     }
@@ -32,6 +60,6 @@
     "NotifyUrl": "https://www.winteach.cn"
     "NotifyUrl": "https://www.winteach.cn"
   },
   },
   "ExamClient": {
   "ExamClient": {
-    "Domain": "edge-exam.habook.cn"
+    "Domain": "exam.habook.local"
   }
   }
 }
 }