test(services): testing remove restart and stop
This commit is contained in:
@@ -125,7 +125,9 @@ export default function ServerPage() {
|
|||||||
token={token as string}
|
token={token as string}
|
||||||
/>
|
/>
|
||||||
<StartServer />
|
<StartServer />
|
||||||
<StopServer />
|
<StopServer
|
||||||
|
plantData={server}
|
||||||
|
/>
|
||||||
<RestartServer />
|
<RestartServer />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,14 +1,46 @@
|
|||||||
import {Button} from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip";
|
import {
|
||||||
import {Octagon} from "lucide-react";
|
Tooltip,
|
||||||
|
TooltipContent,
|
||||||
|
TooltipProvider,
|
||||||
|
TooltipTrigger,
|
||||||
|
} from "@/components/ui/tooltip";
|
||||||
|
import axios from "axios";
|
||||||
|
import { Octagon } from "lucide-react";
|
||||||
|
|
||||||
export default function StopServer() {
|
export default function StopServer(plantData: any) {
|
||||||
|
const token = localStorage.getItem("auth_token");
|
||||||
|
const handleStopServer = async (plant: string) => {
|
||||||
|
let data: any = {
|
||||||
|
processType: "stop",
|
||||||
|
plantToken: plant,
|
||||||
|
};
|
||||||
|
const url: string = window.location.host.split(":")[0];
|
||||||
|
if (url === "localhost") {
|
||||||
|
data = { ...data, remote: "true" };
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await axios.post("/api/server/serviceprocess", data, {
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(res);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<Button variant={"outline"} size={"icon"}>
|
<Button
|
||||||
|
variant="destructive"
|
||||||
|
size={"icon"}
|
||||||
|
onClick={() =>
|
||||||
|
handleStopServer(plantData.plantToken)
|
||||||
|
}
|
||||||
|
>
|
||||||
<Octagon />
|
<Octagon />
|
||||||
</Button>
|
</Button>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
|
|||||||
@@ -1,23 +1,34 @@
|
|||||||
import {Button} from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import {CircleFadingArrowUp} from "lucide-react";
|
import { CircleFadingArrowUp } from "lucide-react";
|
||||||
import {toast} from "sonner";
|
import { toast } from "sonner";
|
||||||
import {Servers} from "./ServerPage";
|
import { Servers } from "./ServerPage";
|
||||||
import {useQuery} from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import {getSettings} from "@/utils/querys/settings";
|
import { getSettings } from "@/utils/querys/settings";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip";
|
import {
|
||||||
|
Tooltip,
|
||||||
|
TooltipContent,
|
||||||
|
TooltipProvider,
|
||||||
|
TooltipTrigger,
|
||||||
|
} from "@/components/ui/tooltip";
|
||||||
|
|
||||||
export default function UpdateServer({server, token}: {server: Servers; token: string}) {
|
export default function UpdateServer({
|
||||||
const {data} = useQuery(getSettings(token ?? ""));
|
server,
|
||||||
|
token,
|
||||||
|
}: {
|
||||||
|
server: Servers;
|
||||||
|
token: string;
|
||||||
|
}) {
|
||||||
|
const { data } = useQuery(getSettings(token ?? ""));
|
||||||
const upgrade = async () => {
|
const upgrade = async () => {
|
||||||
let devDir = data.filter((n: any) => n.name === "devDir");
|
let devDir = data.filter((n: any) => n.name === "devDir");
|
||||||
toast.success("Server being upgraded in the background please wait.");
|
toast.success("Server being upgraded in the background please wait.");
|
||||||
try {
|
try {
|
||||||
const result = await axios.post(
|
const result = await axios.post(
|
||||||
`/api/server/update/${server.plantToken}`,
|
`/api/server/update/${server.plantToken}`,
|
||||||
{devDir: devDir[0].value},
|
{ devDir: devDir[0].value },
|
||||||
{
|
{
|
||||||
headers: {Authorization: `Bearer ${token}`},
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -29,7 +40,9 @@ export default function UpdateServer({server, token}: {server: Servers; token: s
|
|||||||
toast.success(result.data.message);
|
toast.success(result.data.message);
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
toast.error(`There was an error updating the server: ${error.data.message}`);
|
toast.error(
|
||||||
|
`There was an error updating the server: ${error.data.message}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
@@ -37,7 +50,12 @@ export default function UpdateServer({server, token}: {server: Servers; token: s
|
|||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<Button variant={"outline"} size={"icon"} onClick={upgrade} disabled={server.isUpgrading}>
|
<Button
|
||||||
|
variant={`${server.isUpgrading ? "ghost" : "outline"}`}
|
||||||
|
size={"icon"}
|
||||||
|
onClick={upgrade}
|
||||||
|
disabled={server.isUpgrading}
|
||||||
|
>
|
||||||
<CircleFadingArrowUp />
|
<CircleFadingArrowUp />
|
||||||
</Button>
|
</Button>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
|
|||||||
@@ -4,22 +4,22 @@
|
|||||||
|
|
||||||
### To run the server
|
### To run the server
|
||||||
|
|
||||||
- [PostgresSQL](https://www.postgresql.org/download/windows/) - current version using is 17
|
- [PostgresSQL](https://www.postgresql.org/download/windows/) - current version using is 17
|
||||||
- [NodeJS](https://nodejs.org)
|
- [NodeJS](https://nodejs.org)
|
||||||
- [NSSM](https://nssm.cc/)
|
- [NSSM](https://nssm.cc/)
|
||||||
|
|
||||||
### To manage the server
|
### To manage the server
|
||||||
|
|
||||||
- [VSCODE](https://code.visualstudio.com/)
|
- [VSCODE](https://code.visualstudio.com/)
|
||||||
- [Postman](https://www.postman.com/downloads/)
|
- [Postman](https://www.postman.com/downloads/)
|
||||||
|
|
||||||
## Creating directories needed
|
## Creating directories needed
|
||||||
|
|
||||||
- Create a new folder where we will host the server files.
|
- Create a new folder where we will host the server files.
|
||||||
- Copy the nssm.exe into this folder
|
- Copy the nssm.exe into this folder
|
||||||
- Copy the build files to the server (only needed for intial install).
|
- Copy the build files to the server (only needed for intial install).
|
||||||
- This will house all the compiles and minified files needed to start the server up, this includes the frontend.
|
- This will house all the compiles and minified files needed to start the server up, this includes the frontend.
|
||||||
- Save the nssm.exe into this folder as well, this will be used to control the service.
|
- Save the nssm.exe into this folder as well, this will be used to control the service.
|
||||||
|
|
||||||
## Do the intial install
|
## Do the intial install
|
||||||
|
|
||||||
@@ -53,14 +53,12 @@ add in the below and change each setting area that says change me to something t
|
|||||||
|
|
||||||
```env
|
```env
|
||||||
# PORTS
|
# PORTS
|
||||||
|
PROD_PORT=4000
|
||||||
# To keep it all simple we will pass VITE to the ports that are used on both sides.
|
# To keep it all simple we will pass VITE to the ports that are used on both sides.
|
||||||
VITE_SERVER_PORT=4400
|
VITE_SERVER_PORT=4000
|
||||||
|
|
||||||
# logLevel
|
# logLevel
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=info
|
||||||
PROD_PORT=4000
|
|
||||||
# DUE to lstv1 we need 3000
|
|
||||||
SEC_PORT=3000
|
|
||||||
# Auth stuff
|
# Auth stuff
|
||||||
SALTING=12
|
SALTING=12
|
||||||
SECRET=CHANGEME
|
SECRET=CHANGEME
|
||||||
@@ -94,15 +92,15 @@ npm start
|
|||||||
|
|
||||||
This command will start up the server and seed the database.
|
This command will start up the server and seed the database.
|
||||||
|
|
||||||
- Settings will be set here.
|
- Settings will be set here.
|
||||||
- All modules will be added.
|
- All modules will be added.
|
||||||
|
|
||||||
2. Press CTRL + C to stop the server.
|
2. Press CTRL + C to stop the server.
|
||||||
3. Reopen postgres and review the settings make the changes to match the server your going to be running in.
|
3. Reopen postgres and review the settings make the changes to match the server your going to be running in.
|
||||||
- Change the server
|
- Change the server
|
||||||
- change the dbServer
|
- change the dbServer
|
||||||
- change plantToken
|
- change plantToken
|
||||||
- then the remaining settings confirm if you need on or want to leave as default.
|
- then the remaining settings confirm if you need on or want to leave as default.
|
||||||
|
|
||||||
### Creating first user.
|
### Creating first user.
|
||||||
|
|
||||||
@@ -113,8 +111,8 @@ npm start
|
|||||||
```
|
```
|
||||||
|
|
||||||
2. Open http://[SERVER]:[PORT]/api/docs or postman and create a user.
|
2. Open http://[SERVER]:[PORT]/api/docs or postman and create a user.
|
||||||
- Please do not try to manually enter a new user this is due to how the password is hashed, as well as setting systemAdmin for the first user.
|
- Please do not try to manually enter a new user this is due to how the password is hashed, as well as setting systemAdmin for the first user.
|
||||||
- Change the server and port to what you changed in the DB.
|
- Change the server and port to what you changed in the DB.
|
||||||
3. Stop the server again with CTRL + C.
|
3. Stop the server again with CTRL + C.
|
||||||
|
|
||||||
### Running as a serivice.
|
### Running as a serivice.
|
||||||
@@ -127,28 +125,58 @@ cd .\dist\server\scripts\
|
|||||||
|
|
||||||
Next use the example command below to get the service up and running.
|
Next use the example command below to get the service up and running.
|
||||||
|
|
||||||
- Options legend
|
- Options legend
|
||||||
- serviceName = not recommended to change to reduce issues with the update process
|
- serviceName = not recommended to change to reduce issues with the update process
|
||||||
- option = use install for the install, but you can use this script later to stop, start, restart the service.
|
- option = use install for the install, but you can use this script later to stop, start, restart the service.
|
||||||
- appPath = where did you extract the server files
|
- appPath = where did you extract the server files
|
||||||
- description = no need to change this unless you want it to be something else
|
- description = no need to change this unless you want it to be something else
|
||||||
- command = do not change this unless you know what your doing and really need to change this.
|
- command = do not change this unless you know what your doing and really need to change this.
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
.\services.ps1 -serviceName "LSTV2" -option "install" -appPath "E:\LST\lstV2" -description "Logistics Support Tool V2" -command "run start"
|
.\services.ps1 -serviceName "LSTV2" -option "install" -appPath "E:\LST\lstV2" -description "Logistics Support Tool V2" -command "run start"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Adding servers to the mix to update on from the front end
|
||||||
|
|
||||||
|
you will need to add your servers into the serverData.json.
|
||||||
|
when the server starts up it will look at this file and make changes as needed.
|
||||||
|
below is an example of the server
|
||||||
|
|
||||||
|
```JSON
|
||||||
|
{
|
||||||
|
"sName": "Kansas City",
|
||||||
|
"serverDNS": "usksc1vms006",
|
||||||
|
"plantToken": "usksc1",
|
||||||
|
"idAddress": "10.42.9.26",
|
||||||
|
"greatPlainsPlantCode": "85",
|
||||||
|
"streetAddress": "1800 E 94th St Suite 300",
|
||||||
|
"cityState": "Kansas City, MO",
|
||||||
|
"zipcode": "64131",
|
||||||
|
"contactEmail": "example@example.com",
|
||||||
|
"contactPhone": "555-555-5555",
|
||||||
|
"customerTiAcc": "ALPL01KCINT",
|
||||||
|
"lstServerPort": "4000",
|
||||||
|
"active": false,
|
||||||
|
"serverLoc": "E:\\LST\\lstv2",
|
||||||
|
"oldVersion": "E:\\LST\\lst_backend",
|
||||||
|
"shippingHours": "[{\"early\": \"06:30\", \"late\": \"23:00\"}]",
|
||||||
|
"tiPostTime": "[{\"from\": \"24\", \"to\": \"24\"}]",
|
||||||
|
"otherSettings": [{ "specialInstructions": "" }]
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
# Migrating From V1 to V2
|
# Migrating From V1 to V2
|
||||||
|
|
||||||
## User migration
|
## User migration
|
||||||
|
|
||||||
1. Open the sqlite db and export to sql the users table
|
1. Open the sqlite db and export to sql the users table
|
||||||
2. OPen the sql in notepad++ or your editor of choice and change the query to be similar to below.
|
2. OPen the sql in notepad++ or your editor of choice and change the query to be similar to below.
|
||||||
- we only need to have save the username, role, email, password
|
- we only need to have save the username, role, email, password
|
||||||
|
|
||||||
An example new query will look like
|
An example new query will look like
|
||||||
|
|
||||||
- Below is how it looks when exported from sqlite
|
- Below is how it looks when exported from sqlite
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO "User" ("id", "username", "email", "role", "password", "passwordToken", "tokenExpire", "active", "pinCode", "lastLogin", "add_user", "add_date", "upd_user", "upd_date") VALUES
|
INSERT INTO "User" ("id", "username", "email", "role", "password", "passwordToken", "tokenExpire", "active", "pinCode", "lastLogin", "add_user", "add_date", "upd_user", "upd_date") VALUES
|
||||||
@@ -157,7 +185,7 @@ INSERT INTO "User" ("id", "username", "email", "role", "password", "passwordToke
|
|||||||
|
|
||||||
The way we want to put recreate the query to work with the new db
|
The way we want to put recreate the query to work with the new db
|
||||||
|
|
||||||
- Below example
|
- Below example
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO "users" ("username", "email", "role", "password") VALUES
|
INSERT INTO "users" ("username", "email", "role", "password") VALUES
|
||||||
@@ -167,11 +195,11 @@ INSERT INTO "users" ("username", "email", "role", "password") VALUES
|
|||||||
;
|
;
|
||||||
```
|
```
|
||||||
|
|
||||||
- You could have many users and just add like above with the identical info from the db
|
- You could have many users and just add like above with the identical info from the db
|
||||||
|
|
||||||
## Running v1 along Side V2 for the interm
|
## Running v1 along Side V2 for the interm
|
||||||
|
|
||||||
- change v2 prod port to 4000 in the env and db
|
- change v2 prod port to 4000 in the env and db
|
||||||
- change v1 env to 4400 in the env. and in the db you will need to change the auth server to 4000 and the serverPort to 4400
|
- change v1 env to 4400 in the env. and in the db you will need to change the auth server to 4000 and the serverPort to 4400
|
||||||
|
|
||||||
This will change so that v2 is the main server now, this is needed for ocme mainly.
|
This will change so that v2 is the main server now, this is needed for ocme mainly.
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ param (
|
|||||||
[string]$appPath,
|
[string]$appPath,
|
||||||
[string]$command, # just the command like run startadm or what ever you have in npm.
|
[string]$command, # just the command like run startadm or what ever you have in npm.
|
||||||
[string]$description
|
[string]$description
|
||||||
|
[string]$remote
|
||||||
)
|
)
|
||||||
|
|
||||||
# Example string to run with the parameters in it.
|
# Example string to run with the parameters in it.
|
||||||
@@ -24,6 +25,16 @@ param (
|
|||||||
$nssmPath = $AppPath + "\nssm.exe"
|
$nssmPath = $AppPath + "\nssm.exe"
|
||||||
$npmPath = "C:\Program Files\nodejs\npm.cmd" # Path to npm.cmd
|
$npmPath = "C:\Program Files\nodejs\npm.cmd" # Path to npm.cmd
|
||||||
|
|
||||||
|
if($remote -eq "true"){
|
||||||
|
$plantFunness = {
|
||||||
|
param ($service, $processType, $location)
|
||||||
|
# Call your PowerShell script inside plantFunness
|
||||||
|
& "$($location)\dist\server\scripts\services.ps1" -serviceName $service -option $processType -appPath $location
|
||||||
|
}
|
||||||
|
|
||||||
|
Invoke-Command -ComputerName $server -ScriptBlock $plantFunness -ArgumentList $service, $option, $appPath -Credential $credentials
|
||||||
|
}
|
||||||
|
|
||||||
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
|
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
|
||||||
Write-Host "Error: This script must be run as Administrator."
|
Write-Host "Error: This script must be run as Administrator."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -132,6 +132,17 @@ $plantFunness = {
|
|||||||
exit 1 # Exit with a non-zero code if there's an error
|
exit 1 # Exit with a non-zero code if there's an error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# for iowa 2 need to change the port config on the start up of nextjs server
|
||||||
|
if($token -eq "usiow2"){
|
||||||
|
$jsonPkgloc = "$($obslst)\apps\frontend\package.json"
|
||||||
|
#read the file
|
||||||
|
$jsonContent = Get-Content -Path $jsonPkgloc | ConvertFrom-Json
|
||||||
|
#change the second we want to update
|
||||||
|
$jsonContent.scripts.start = "next start -p 3001"
|
||||||
|
# convert back to json
|
||||||
|
$jsonContent | ConvertTo-Json | Set-Content -Path $jsonPkgloc
|
||||||
|
}
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
Write-Host "Stopping the services to do the updates, pkgs and db changes."
|
Write-Host "Stopping the services to do the updates, pkgs and db changes."
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"resolveJsonModule": true
|
"resolveJsonModule": true
|
||||||
},
|
},
|
||||||
"include": ["server", "scripts/**/*.ts", "testFiles/test-tiPostOrders.ts"],
|
"include": [
|
||||||
"exclude": ["node_modules", "frontend", "dist", "testFiles"]
|
"server",
|
||||||
|
"scripts/**/*.ts",
|
||||||
|
"database/testFiles/test-tiPostOrders.ts"
|
||||||
|
],
|
||||||
|
"exclude": ["node_modules", "frontend", "dist", "database/testFiles"]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user