Compare commits
10 Commits
197620fc84
...
2074154f71
Author | SHA1 | Date | |
---|---|---|---|
2074154f71 | |||
3063c64115 | |||
b65bf9f639 | |||
7cf1d5771f | |||
94b788a47b | |||
9630600144 | |||
e94f279144 | |||
b985898ab2 | |||
9a525b44cc | |||
c0cbf05a5a |
4
.gitignore
vendored
4
.gitignore
vendored
@ -346,4 +346,6 @@ SignalRChat/*
|
|||||||
Server/wwwroot/js/chat.js
|
Server/wwwroot/js/chat.js
|
||||||
Server/Hubs/ChatHub.cs
|
Server/Hubs/ChatHub.cs
|
||||||
Server/Pages/Chat.cshtml
|
Server/Pages/Chat.cshtml
|
||||||
Server/Pages/Chat.cshtml.cs
|
Server/Pages/Chat.cshtml.cs
|
||||||
|
|
||||||
|
.kanbn
|
@ -1,28 +0,0 @@
|
|||||||
.kanbn-column-wip .kanbn-column-task-list {
|
|
||||||
border-color: #6929c4;
|
|
||||||
}
|
|
||||||
.kanbn-column-next .kanbn-column-task-list {
|
|
||||||
border-color: #1192e8;
|
|
||||||
}
|
|
||||||
.kanbn-column-wait .kanbn-column-task-list {
|
|
||||||
border-color: #005d5d;
|
|
||||||
}
|
|
||||||
.kanbn-column-later .kanbn-column-task-list {
|
|
||||||
border-color: #9f1853;
|
|
||||||
}
|
|
||||||
.kanbn-column-maybe .kanbn-column-task-list {
|
|
||||||
border-color: #fa4d56;
|
|
||||||
}
|
|
||||||
.kanbn-column-friday .kanbn-column-task-list {
|
|
||||||
border-color: #570408;
|
|
||||||
}
|
|
||||||
.kanbn-column-done .kanbn-column-task-list {
|
|
||||||
border-color: #198038;
|
|
||||||
}
|
|
||||||
.kanbn-task-data-workload {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.kanbn-task-data-relation {
|
|
||||||
display: block;
|
|
||||||
color: #198038;
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
---
|
|
||||||
startedColumns:
|
|
||||||
- "In Progress"
|
|
||||||
completedColumns:
|
|
||||||
- Done
|
|
||||||
dateFormat: mm/dd
|
|
||||||
---
|
|
||||||
|
|
||||||
# Barcode-Host
|
|
||||||
|
|
||||||
## Backlog
|
|
||||||
|
|
||||||
- [apt-get-install](tasks/apt-get-install.md)
|
|
||||||
- [netplan](tasks/netplan.md)
|
|
||||||
|
|
||||||
## Todo
|
|
||||||
|
|
||||||
- [epi-pro-scan](tasks/epi-pro-scan.md)
|
|
||||||
|
|
||||||
## In Progress
|
|
||||||
|
|
||||||
- [azure-pipeline](tasks/azure-pipeline.md)
|
|
||||||
- [update-os](tasks/update-os.md)
|
|
||||||
- [self-signed-certificate](tasks/self-signed-certificate.md)
|
|
||||||
- [roll-out](tasks/roll-out.md)
|
|
||||||
- [publish](tasks/publish.md)
|
|
||||||
- [post-only-once](tasks/post-only-once.md)
|
|
||||||
|
|
||||||
## Done
|
|
||||||
|
|
||||||
- [setup-nginx](tasks/setup-nginx.md)
|
|
||||||
- [run-test-ports](tasks/run-test-ports.md)
|
|
||||||
- [run-secrets-task](tasks/run-secrets-task.md)
|
|
||||||
- [pull-repo](tasks/pull-repo.md)
|
|
||||||
- [install-vscode-extensions](tasks/install-vscode-extensions.md)
|
|
||||||
- [install-ubuntu-frame](tasks/install-ubuntu-frame.md)
|
|
||||||
- [install-net-7-0](tasks/install-net-7-0.md)
|
|
||||||
- [create-as-service](tasks/create-as-service.md)
|
|
||||||
- [configure-ufw](tasks/configure-ufw.md)
|
|
||||||
|
|
||||||
## Archive
|
|
||||||
|
|
||||||
- [signalr](tasks/signalr.md)
|
|
@ -1,77 +0,0 @@
|
|||||||
---
|
|
||||||
status: "1-Backlog"
|
|
||||||
created: "2023-06-23T22:41:35.812Z"
|
|
||||||
updated: "2023-07-27T18:05:52.706Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# apt-get-install
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
apt-get install links unzip net-tools ufw nginx git -y
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Checking your Ubuntu Version
|
|
||||||
lsb_release -a
|
|
||||||
# There are several good, effective answers listed above.
|
|
||||||
# However, this is the mechanism I personally use -- apt-ftparchive.
|
|
||||||
# I'm documenting it here, in case I need it again in the future. Perhaps it might be useful to you.
|
|
||||||
# Creating the Archive Snapshot
|
|
||||||
# Create an instance of Ubuntu that closely mimics the target environment
|
|
||||||
# For example, an Ubuntu 12.04 64-bit instance in Amazon
|
|
||||||
# Start with a clean package environment
|
|
||||||
apt-get clean
|
|
||||||
# Update the package lists
|
|
||||||
apt-get update
|
|
||||||
# Download all package updates available
|
|
||||||
apt-get dist-upgrade --download-only
|
|
||||||
# recursive-dependencies-of-a-debian-package
|
|
||||||
apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances smbclient | grep "^\w" | sort -u
|
|
||||||
# Download all relevant packages and dependencies
|
|
||||||
apt-get install --download-only byobu run-one bikeshed dotdee powernap
|
|
||||||
apt-get install --download-only --reinstall e2fsprogs fwupd grub-common libcups2 libglib2.0-0 netplan.io python3-systemd rsyslog smbclient
|
|
||||||
apt-get install --download-only --reinstall cdebconf coreutils debconf dpkg e2fsprogs fwupd gcc-10-base grub-common install-info libacl1 libarchive13 libasn1-8-heimdal libattr1 libaudit-common libaudit1 libavahi-client3 libavahi-common-data libavahi-common3 libbsd0 libbz2-1.0 libc6 libcap-ng0 libcap2 libcom-err2 libcrypt1 libcups2 libdb5.3 libdbus-1-3 libdebian-installer4 libexpat1 libffi7 libfuse2 libgcc-s1 libgcrypt20 libglib2.0-0 libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5 libhx509-5-heimdal libicu66 libidn2-0 libjansson4 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libldb2 liblmdb0 liblz4-1 liblzma5 libmpdec2 libncursesw6 libnetplan0 libnettle7 libnewt0.52 libp11-kit0 libpam0g libpcre2-8-0 libpopt0 libpython3-stdlib libpython3.8 libpython3.8-minimal libpython3.8-stdlib libreadline8 libroken18-heimdal libsasl2-2 libsasl2-modules-db libselinux1 libslang2 libsmbclient libsqlite3-0 libssl1.1 libstdc++6 libsystemd0 libtalloc2 libtasn1-6 libtdb1 libtevent0 libtextwrap1 libtinfo6 libtss2-esys0 libunistring2 libuuid1 libwbclient0 libwind0-heimdal libxml2 libzstd1 mime-support netplan.io perl-base python3 python3-ldb python3-minimal python3-systemd python3-talloc python3.8 python3.8-minimal readline-common rsyslog samba-common samba-libs sensible-utils smbclient tar tzdata ucf zlib1g
|
|
||||||
# Create the package manifest
|
|
||||||
(cd /var/cache/apt/archives/ && apt-ftparchive packages . ) | tee /var/cache/apt/archives/Packages
|
|
||||||
ls /var/cache/apt/archives
|
|
||||||
# Create an archive of the packages
|
|
||||||
cd /home/unity4
|
|
||||||
tar cvf snapshot.tar -C /var/cache/apt archives/
|
|
||||||
ls /home/unity4
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
scp unity4@unity4:/home/unity4/snapshot.tar D:/Tmp/Phares/snapshot.tar
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pscp D:/Tmp/Phares/snapshot.tar unity5@unity5:/home/unity5/snapshot.tar
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Using the Archive Snapshot on the Offline Target System
|
|
||||||
# Through some mechanism, you will need to get the snapshot.tar from the source to the target system.
|
|
||||||
# Perhaps on a USB stick, or otherwise.
|
|
||||||
# Extract the archive on the target system (in this case, in /home/ubuntu)
|
|
||||||
cd /home/unity5
|
|
||||||
tar xvf snapshot.tar
|
|
||||||
cd /home/unity5/archives
|
|
||||||
ls /home/unity5/archives
|
|
||||||
dpkg -i *.deb
|
|
||||||
dpkg -i smbclient_2%3a4.15.13+dfsg-0ubuntu0.20.04.2_amd64.deb
|
|
||||||
# Add the local, offline source to /etc/apt/sources.list
|
|
||||||
echo "deb file:/home/unity5/archives /" | tee -a /etc/apt/sources.list
|
|
||||||
# Update the package list
|
|
||||||
apt-get update
|
|
||||||
# Install the packages as desired
|
|
||||||
apt-get install byobu run-one bikeshed dotdee powernap
|
|
||||||
apt-get install smbclient
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
created: "2023-07-27T18:04:46.640Z"
|
|
||||||
updated: "2023-07-27T18:05:52.731Z"
|
|
||||||
assigned: ""
|
|
||||||
progress: 0
|
|
||||||
started: "2023-07-27T18:04:48.076Z"
|
|
||||||
status: "3-In Progress"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Azure Pipeline
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt install putty-tools
|
|
||||||
pscp D:/Tmp/phares/ag/vsts-agent-linux-x64-2.210.1.tar.gz unity4@unity4:/home/unity4/vsts-agent-linux-x64-2.210.1.tar.gz
|
|
||||||
pscp D:/Tmp/phares/ag/vsts-agent-linux-x64-2.210.1.tar.gz unity5@unity5:/home/unity5/vsts-agent-linux-x64-2.210.1.tar.gz
|
|
||||||
pscp D:/Tmp/phares/ag/vsts-agent-linux-x64-2.210.1.tar.gz room006@mescroom006:/home/room006/vsts-agent-linux-x64-2.210.1.tar.gz
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install libicu66
|
|
||||||
mv vsts-agent-linux-x64-2.210.1.tar.gz vsts-agent-linux-x64-2.210.1-unity4
|
|
||||||
mkdir vsts-agent-linux-x64-2.210.1-unity4
|
|
||||||
cd vsts-agent-linux-x64-2.210.1-unity4
|
|
||||||
tar xvzf vsts-agent-linux-x64-2.210.1.tar.gz
|
|
||||||
chown unity4 /home/unity4/vsts-agent-linux-x64-2.210.1-unity4 -R
|
|
||||||
chgrp unity4 /home/unity4/vsts-agent-linux-x64-2.210.1-unity4 -R
|
|
||||||
./config.sh --url https://tfs.intra.infineon.com/tfs/manufacturingit --pool Mesa-Linux --auth negotiate --userName infineon@phares
|
|
||||||
./config.sh --url https://tfs.intra.infineon.com/tfs/manufacturingit --pool Mesa-Linux --auth pat --token asdf
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
echo >/etc/systemd/system/vsts-agent-linux.service && nano /etc/systemd/system/vsts-agent-linux.service
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
[Unit]
|
|
||||||
Description=vsts-agent-linux
|
|
||||||
After=multi-user.target
|
|
||||||
[Service]
|
|
||||||
User=unity4
|
|
||||||
WorkingDirectory= /home/unity4/vsts-agent-linux-x64-2.210.1-unity4
|
|
||||||
ExecStart=/home/unity4/vsts-agent-linux-x64-2.210.1-unity4/run.sh
|
|
||||||
Restart=always
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable vsts-agent-linux.service
|
|
||||||
systemctl start vsts-agent-linux.service
|
|
||||||
systemctl status vsts-agent-linux.service
|
|
||||||
systemctl stop vsts-agent-linux.service
|
|
||||||
journalctl -fu vsts-agent-linux.service
|
|
||||||
journalctl --rotate
|
|
||||||
journalctl --vacuum-time=1s
|
|
||||||
```
|
|
@ -1,78 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-07-25T17:31:10.375Z"
|
|
||||||
updated: "2023-07-27T18:05:52.733Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# configure-ufw
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 22 comment "01) SSH"
|
|
||||||
ufw allow to 0.0.0.0/0 port 80 comment "02) HTTP"
|
|
||||||
ufw allow to 0.0.0.0/0 port 443 comment "03) HTTPS"
|
|
||||||
ufw allow to 0.0.0.0/0 port 9418 comment "04) Git"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8005 comment "05) Pi-hole"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8006 comment "06) Ajenti"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8007 comment "07) code-server"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8008 comment "08) Nginx"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 5002 comment "09) BaGet"
|
|
||||||
ufw allow to 0.0.0.0/0 port 5000 comment "10) .netCore"
|
|
||||||
ufw allow to 0.0.0.0/0 port 5001 comment "11) .netCore"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 53 comment "12) DNS"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 67 comment "13) Unknown"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 9654 comment "14) barcode-server"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8009 comment "15) barcode-server-statistics"
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 9400 comment "16) dashkiosk"
|
|
||||||
ufw delete 16
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 8010 comment "16) Test"
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 5052 comment "17) NGINdeX.io"
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 3000 comment "18) gogs"
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 4001 comment "19) gogs"
|
|
||||||
ufw delete 19
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 4001 comment "19) photoview api"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 1234 comment "20) photoview ui"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 3306 comment "21) mysql"
|
|
||||||
ufw allow from 192.168.0.0/24 to any port 8011 comment "22) syncthing"
|
|
||||||
ufw allow from 0.0.0.0/0 to any port 5201 comment "23) iperf3"
|
|
||||||
ufw enable
|
|
||||||
ufw status numbered
|
|
||||||
ufw disable
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
Status: active
|
|
||||||
|
|
||||||
To Action From
|
|
||||||
-- ------ ----
|
|
||||||
[ 1] 22 ALLOW IN 192.168.0.0/24 # 01) SSH
|
|
||||||
[ 2] 80 ALLOW IN Anywhere # 02) HTTP
|
|
||||||
[ 3] 443 ALLOW IN Anywhere # 03) HTTPS
|
|
||||||
[ 4] 9418 ALLOW IN Anywhere # 04) Git
|
|
||||||
[ 5] 8005 ALLOW IN 192.168.0.0/24 # 05) Pi-hole
|
|
||||||
[ 6] 8006 ALLOW IN 192.168.0.0/24 # 06) Ajenti
|
|
||||||
[ 7] 8007 ALLOW IN 192.168.0.0/24 # 07) code-server
|
|
||||||
[ 8] 8008 ALLOW IN 192.168.0.0/24 # 08) Nginx
|
|
||||||
[ 9] 5002 ALLOW IN 192.168.0.0/24 # 09) BaGet
|
|
||||||
[10] 5000 ALLOW IN Anywhere # 10) .netCore
|
|
||||||
[11] 5001 ALLOW IN Anywhere # 11) .netCore
|
|
||||||
[12] 53 ALLOW IN 192.168.0.0/24 # 12) DNS
|
|
||||||
[13] 67 ALLOW IN 192.168.0.0/24 # 13) Unknown
|
|
||||||
[14] 9654 ALLOW IN 192.168.0.0/24 # 14) barcode-server
|
|
||||||
[15] 8009 ALLOW IN 192.168.0.0/24 # 15) barcode-server-statistics
|
|
||||||
[16] 8010 ALLOW IN Anywhere # 16) Test
|
|
||||||
[17] 5052 ALLOW IN Anywhere # 17) NGINdeX.io
|
|
||||||
[18] 3000 ALLOW IN Anywhere # 18) gogs
|
|
||||||
[19] 4001 ALLOW IN 192.168.0.0/24 # 19) photoview api
|
|
||||||
[20] 1234 ALLOW IN 192.168.0.0/24 # 20) photoview ui
|
|
||||||
[21] 3306 ALLOW IN 192.168.0.0/24 # 21) mysql
|
|
||||||
[22] 8011 ALLOW IN 192.168.0.0/24 # 22) syncthing
|
|
||||||
[23] 5201 ALLOW IN Anywhere # 23) iperf3
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.344Z"
|
|
||||||
updated: "2023-07-27T18:05:52.738Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Create as Service
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
echo >/etc/systemd/system/barcode-host.service && nano /etc/systemd/system/barcode-host.service
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
[Unit]
|
|
||||||
Description=Barcode Server
|
|
||||||
After=multi-user.target
|
|
||||||
[Service]
|
|
||||||
User=unity4
|
|
||||||
WorkingDirectory=/var/www/Barcode-Host/Server
|
|
||||||
ExecStart=/usr/local/bin/dotnet /var/www/Barcode-Host/Server/Barcode.Host.Server.dll
|
|
||||||
Restart=always
|
|
||||||
# Environment=ASPNETCORE_ENVIRONMENT=Development
|
|
||||||
# Environment=ASPNETCORE_ENVIRONMENT=Staging
|
|
||||||
Environment=ASPNETCORE_ENVIRONMENT=Production
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable barcode-host.service
|
|
||||||
systemctl start barcode-host.service
|
|
||||||
systemctl status barcode-host.service
|
|
||||||
systemctl stop barcode-host.service
|
|
||||||
journalctl -fu barcode-host.service
|
|
||||||
journalctl --rotate
|
|
||||||
journalctl --vacuum-time=1s
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
status: "2-Todo"
|
|
||||||
created: "2023-07-25T17:33:20.243Z"
|
|
||||||
updated: "2023-07-27T18:05:52.708Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# epi-pro-scan
|
|
||||||
|
|
||||||
```bash
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.346Z"
|
|
||||||
updated: "2023-07-27T18:05:52.739Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Install .net 7.0
|
|
||||||
|
|
||||||
```bask
|
|
||||||
# https://learn.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#scripted-install
|
|
||||||
cd /home/unity4
|
|
||||||
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
|
|
||||||
chmod +x ./dotnet-install.sh
|
|
||||||
./dotnet-install.sh --channel 7.0
|
|
||||||
export DOTNET_ROOT=$HOME/.dotnet
|
|
||||||
export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools
|
|
||||||
ln -s /home/unity4/.dotnet/dotnet /usr/local/bin/dotnet
|
|
||||||
dotnet --info
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.347Z"
|
|
||||||
updated: "2023-07-27T18:05:52.740Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# install-ubuntu-frame
|
|
||||||
|
|
||||||
```bash
|
|
||||||
apt-get install links unzip net-tools -y
|
|
||||||
snap install dashkiosk
|
|
||||||
timedatectl set-timezone America/Phoenix
|
|
||||||
snap restart dashkiosk
|
|
||||||
snap install ubuntu-frame wpe-webkit-mir-kiosk
|
|
||||||
snap set wpe-webkit-mir-kiosk daemon=true
|
|
||||||
snap set wpe-webkit-mir-kiosk url=http://localhost:9400/receiver
|
|
||||||
wpe-webkit-mir-kiosk.cog http://localhost:9400/receiver
|
|
||||||
/snap/wpe-webkit-mir-kiosk/current/bin/setup.sh
|
|
||||||
wpe-webkit-mir-kiosk.cog http://localhost:9400/receiver
|
|
||||||
snap set ubuntu-frame daemon=true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.348Z"
|
|
||||||
updated: "2023-07-27T18:05:52.741Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# install-vscode-extensions
|
|
||||||
|
|
||||||
- .NET Watch Attach (trottero.dotnetwatchattach)
|
|
||||||
- C# (ms-dotnettools.csharp)
|
|
||||||
- Git Graph (mhutchie.git-graph)
|
|
||||||
- Live Preview (ms-vscode.live-server)
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
status: "1-Backlog"
|
|
||||||
created: "2023-06-23T22:41:35.814Z"
|
|
||||||
updated: "2023-07-27T18:05:52.707Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# netplan
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ip link
|
|
||||||
```
|
|
||||||
|
|
||||||
```echo
|
|
||||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
|
||||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
|
||||||
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 10
|
|
||||||
link/ether 6c:0b:84:e3:94:11 brd ff:ff:ff:ff:ff:ff
|
|
||||||
altname enp0s31f6
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
https://ubuntu.com/server/docs/network-configuration
|
|
||||||
ip a
|
|
||||||
ip address show eno1
|
|
||||||
echo >/etc/netplan/99_config.yaml && nano /etc/netplan/99_config.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: networkd
|
|
||||||
ethernets:
|
|
||||||
eno1:
|
|
||||||
addresses:
|
|
||||||
- 192.168.0.204/24
|
|
||||||
routes:
|
|
||||||
- to: default
|
|
||||||
via: 192.168.0.1
|
|
||||||
nameservers:
|
|
||||||
addresses: [192.168.0.1, 8.8.8.8, 4.4.4.4]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: networkd
|
|
||||||
ethernets:
|
|
||||||
eno1:
|
|
||||||
addresses:
|
|
||||||
- 192.168.0.12/24
|
|
||||||
routes:
|
|
||||||
- to: default
|
|
||||||
via: 192.168.0.1
|
|
||||||
nameservers:
|
|
||||||
addresses: [192.168.0.1, 8.8.8.8, 4.4.4.4]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
netplan apply
|
|
||||||
ip addr flush eno1
|
|
||||||
# soft reset
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: networkd
|
|
||||||
ethernets:
|
|
||||||
eno1:
|
|
||||||
addresses:
|
|
||||||
- 10.95.154.54/24
|
|
||||||
routes:
|
|
||||||
- to: default
|
|
||||||
via: 10.95.154.1
|
|
||||||
nameservers:
|
|
||||||
addresses: [10.95.128.11, 10.64.152.171, 8.8.8.8, 4.4.4.4]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
network:
|
|
||||||
version: 2
|
|
||||||
renderer: networkd
|
|
||||||
ethernets:
|
|
||||||
eno1:
|
|
||||||
addresses:
|
|
||||||
- 10.95.154.18/24
|
|
||||||
routes:
|
|
||||||
- to: default
|
|
||||||
via: 10.95.154.1
|
|
||||||
nameservers:
|
|
||||||
addresses: [10.95.128.11, 10.64.152.171, 8.8.8.8, 4.4.4.4]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
status: "3-In Progress"
|
|
||||||
created: "2023-07-25T17:33:20.245Z"
|
|
||||||
updated: "2023-07-27T18:05:52.709Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# post-only-once
|
|
||||||
|
|
||||||
- Change to keep track but only post on a timmer
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
status: "3-In Progress"
|
|
||||||
created: "2023-07-25T17:31:10.379Z"
|
|
||||||
updated: "2023-07-27T18:05:52.711Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# publish
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
systemctl stop barcode-host.service
|
|
||||||
rm -r /var/www/Barcode-Host/Server
|
|
||||||
mkdir /var/www
|
|
||||||
mkdir /var/www/Barcode-Host
|
|
||||||
mkdir /var/www/Barcode-Host/Server
|
|
||||||
cd /home/unity4/Barcode-Host/Server
|
|
||||||
dotnet user-secrets list
|
|
||||||
dotnet nuget list source
|
|
||||||
dotnet nuget remove source nuget.org
|
|
||||||
dotnet build --source https://api.nuget.org/v3/index.json
|
|
||||||
dotnet publish --configuration Release --output /var/www/Barcode-Host/Server --source https://api.nuget.org/v3/index.json
|
|
||||||
cd /var/www/Barcode-Host/Server
|
|
||||||
dotnet /var/www/Barcode-Host/Server/Barcode.Host.Server.dll
|
|
||||||
systemctl start barcode-host.service
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nano /etc/fstab
|
|
||||||
10.95.176.46:EC_Metrology_Si /var/locally-mounted/eaf-dev.mes.infineon.com nfs defaults 0 0
|
|
||||||
mount /var/locally-mounted/eaf-dev.mes.infineon.com nfs defaults 0 0
|
|
||||||
mkdir /mnt/share
|
|
||||||
mkdir /mnt/share/nmshare
|
|
||||||
mkdir /mnt/share/nmshare/eaf-dev.mes.infineon.com
|
|
||||||
apt install cifs-utils
|
|
||||||
mount.cifs //10.95.128.34/EC_Metrology_Si /mnt/share/nmshare/eaf-dev.mes.infineon.com
|
|
||||||
mount -t cifs -o rw,guest,vers=1.0 //10.95.128.34/EC_Metrology_Si /mnt/share/nmshare/eaf-dev.mes.infineon.com
|
|
||||||
smbclient --list=10.95.128.34 --no-pass
|
|
||||||
apt install smbclient
|
|
||||||
ecmesEAF-10.95.128.34-mestsa07ec(A-Both)
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
2023-06-03 16:02:25.011 -07:00 [Information] (Barcode.Host.Server.Program.) () () Starting Web Application
|
|
||||||
2023-06-03 16:02:25.062 -07:00 [Information] (Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.) () () User profile is available. Using '"/root/.aspnet/DataProtection-Keys"' as key repository; keys will not be encrypted at rest.
|
|
||||||
2023-06-03 16:02:25.093 -07:00 [Information] (Barcode.Host.Server.HostedService.TimedHostedService.StartAsync) () () Timed Hosted Service: 1234567:3070 running.
|
|
||||||
2023-06-03 16:02:25.175 -07:00 [Information] (Microsoft.Hosting.Lifetime.) () () Now listening on: "http://localhost:5003"
|
|
||||||
2023-06-03 16:02:25.175 -07:00 [Information] (Microsoft.Hosting.Lifetime.) () () Application started. Press Ctrl+C to shut down.
|
|
||||||
2023-06-03 16:02:25.176 -07:00 [Information] (Microsoft.Hosting.Lifetime.) () () Hosting environment: "Production"
|
|
||||||
2023-06-03 16:02:25.176 -07:00 [Information] (Microsoft.Hosting.Lifetime.) () () Content root path: "/var/www/Barcode-Host/Server"
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
links http://localhost:5003/api/lastScan
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.351Z"
|
|
||||||
updated: "2023-07-27T18:05:52.742Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# Pull Repo
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/unity4
|
|
||||||
git clone http://76df8eca4a6c11fe29a58c3be37543c11389ab93@192.168.0.73:3000/mikepharesjr/Barcode-Host.git
|
|
||||||
cd Barcode-Host
|
|
||||||
code .
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
status: "3-In Progress"
|
|
||||||
created: "2023-06-08T20:40:12.526Z"
|
|
||||||
updated: "2023-07-27T18:05:52.712Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# roll-out
|
|
||||||
|
|
||||||
- New page in the OI Viewer
|
|
||||||
- Set ubuntu frame to new OI Viewer page
|
|
||||||
- Does it refesh by it self?
|
|
||||||
- EAF needs what for the batch field
|
|
||||||
- SP1 needs to get the barcode from one of the two servers dependent on tool queued by EDA
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [ ] unity4
|
|
||||||
- [ ] unity5
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-07-25T18:25:05.485Z"
|
|
||||||
updated: "2023-07-27T18:05:52.743Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# run-secrets-task
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd Barcode-Host/Server
|
|
||||||
dotnet user-secrets init
|
|
||||||
dotnet user-secrets set "SerialPortName" ""
|
|
||||||
dotnet user-secrets set "RootPassword" "asdf"
|
|
||||||
dotnet user-secrets set "PostTo" "http://eaf-staging.mes.infineon.com:8080/api/Barcode/asdf"
|
|
||||||
dotnet user-secrets list
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-06T02:52:34.353Z"
|
|
||||||
updated: "2023-07-27T18:05:52.744Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# run-test-ports
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ls -l /dev/ttyUSB*
|
|
||||||
```
|
|
||||||
|
|
||||||
```echo
|
|
||||||
# crw-rw---- 1 root dialout 188, 0 Jun 3 14:54 /dev/ttyUSB0
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
adduser unity4 dialout
|
|
||||||
reboot
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
status: "3-In Progress"
|
|
||||||
created: "2023-07-25T17:31:10.382Z"
|
|
||||||
updated: "2023-07-27T18:05:52.713Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# self-signed-certificate
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
echo >/etc/hosts && nano /etc/hosts
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
127.0.0.1 localhost
|
|
||||||
127.0.1.1 unity4
|
|
||||||
10.95.154.18 unity5
|
|
||||||
#; 10.95.154.54 unity4
|
|
||||||
192.168.0.40 DESKTOP-H6JG91B
|
|
||||||
192.168.0.118 ISCN5CG1325C0X
|
|
||||||
10.95.176.46 eaf-dev.mes.infineon.com
|
|
||||||
10.95.128.35 eaf-prod.mes.infineon.com
|
|
||||||
10.95.128.34 eaf-staging.mes.infineon.com
|
|
||||||
10.95.128.122 oi-prod-ec-api.mes.infineon.com
|
|
||||||
10.95.176.124 eaf-dev-reporting.mes.infineon.com
|
|
||||||
10.95.128.37 oi-metrology-viewer-prod.mes.infineon.com
|
|
||||||
# The following lines are desirable for IPv6 capable hosts
|
|
||||||
::1 ip6-localhost ip6-loopback
|
|
||||||
fe00::0 ip6-localnet
|
|
||||||
ff00::0 ip6-mcastprefix
|
|
||||||
ff02::1 ip6-allnodes
|
|
||||||
ff02::2 ip6-allrouters
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo -i
|
|
||||||
apt-get install -y ca-certificates
|
|
||||||
cd /home/unity4/Barcode-Host
|
|
||||||
openssl s_client -showcerts -connect DESKTOP-H6JG91B:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >DESKTOP-H6JG91B.crt
|
|
||||||
cp /home/unity4/Barcode-Host/DESKTOP-H6JG91B.crt /usr/local/share/ca-certificates/DESKTOP-H6JG91B.crt
|
|
||||||
update-ca-certificates
|
|
||||||
openssl s_client -showcerts -connect unity4:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >unity4.crt
|
|
||||||
cp /home/unity4/Barcode-Host/unity4.crt /usr/local/share/ca-certificates/unity4.crt
|
|
||||||
update-ca-certificates
|
|
||||||
openssl s_client -showcerts -connect unity5:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >unity5.crt
|
|
||||||
cp /home/unity5/Barcode-Host/unity5.crt /usr/local/share/ca-certificates/unity5.crt
|
|
||||||
update-ca-certificates
|
|
||||||
cd /home/unity4/Barcode-Host
|
|
||||||
openssl s_client -showcerts -connect eaf-prod.mes.infineon.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >eaf-prod.mes.infineon.com.crt
|
|
||||||
cp /home/unity4/Barcode-Host/eaf-prod.mes.infineon.com.crt /usr/local/share/ca-certificates/eaf-prod.mes.infineon.com.crt
|
|
||||||
update-ca-certificates
|
|
||||||
links https://eaf-prod.mes.infineon.com/v3/index.json
|
|
||||||
exit
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,131 +0,0 @@
|
|||||||
---
|
|
||||||
status: "4-Done"
|
|
||||||
created: "2023-06-08T20:40:12.528Z"
|
|
||||||
updated: "2023-07-27T18:05:52.745Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# setup-nginx
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo >/etc/nginx/sites-available/default && nano /etc/nginx/sites-available/default
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
server {
|
|
||||||
listen 80 default_server;
|
|
||||||
listen [::]:80 default_server;
|
|
||||||
root /var/www/html;
|
|
||||||
index index.html index.htm index.nginx-debian.html;
|
|
||||||
server_name _;
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl restart nginx
|
|
||||||
lsof -i -P -n | grep LISTEN
|
|
||||||
links http://192.168.0.204/
|
|
||||||
nginx -t
|
|
||||||
nginx -s reload
|
|
||||||
echo >/etc/nginx/sites-available/Barcode-Host-Server && nano /etc/nginx/sites-available/Barcode-Host-Server
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
server {
|
|
||||||
listen 80 default_server;
|
|
||||||
listen [::]:80 default_server;
|
|
||||||
root /var/www/html;
|
|
||||||
index index.html index.htm index.nginx-debian.html;
|
|
||||||
server_name _;
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo >/home/unity4/localhost.conf && nano /home/unity4/localhost.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
[req]
|
|
||||||
default_bits = 2048
|
|
||||||
default_keyfile = localhost.key
|
|
||||||
distinguished_name = req_distinguished_name
|
|
||||||
req_extensions = req_ext
|
|
||||||
x509_extensions = v3_ca
|
|
||||||
|
|
||||||
[req_distinguished_name]
|
|
||||||
countryName = Country Name (2 letter code)
|
|
||||||
countryName_default = US
|
|
||||||
stateOrProvinceName = State or Province Name (full name)
|
|
||||||
stateOrProvinceName_default = Arizona
|
|
||||||
localityName = Locality Name (eg, city)
|
|
||||||
localityName_default = Mesa
|
|
||||||
organizationName = Organization Name (eg, company)
|
|
||||||
organizationName_default = Infineon Technologies Americas Corp.
|
|
||||||
organizationalUnitName = organizationalunit
|
|
||||||
organizationalUnitName_default = Development
|
|
||||||
commonName = Common Name (e.g. server FQDN or YOUR name)
|
|
||||||
commonName_default = unity4
|
|
||||||
commonName_max = 64
|
|
||||||
|
|
||||||
[req_ext]
|
|
||||||
subjectAltName = @alt_names
|
|
||||||
|
|
||||||
[v3_ca]
|
|
||||||
subjectAltName = @alt_names
|
|
||||||
|
|
||||||
[alt_names]
|
|
||||||
DNS.1 = unity4
|
|
||||||
DNS.2 = localhost
|
|
||||||
DNS.3 = 127.0.0.1
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/localhost.key -out /etc/nginx/localhost.crt -config /home/unity4/localhost.conf
|
|
||||||
ls /etc/nginx
|
|
||||||
echo >/etc/nginx/sites-available/Barcode-Host-Server && nano /etc/nginx/sites-available/Barcode-Host-Server
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
server {
|
|
||||||
server_name _;
|
|
||||||
ssl_certificate 'localhost.crt';
|
|
||||||
listen 443 default_server ssl http2;
|
|
||||||
ssl_certificate_key 'localhost.key';
|
|
||||||
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
|
||||||
listen [::]:443 default_server ssl http2;
|
|
||||||
location / {
|
|
||||||
proxy_pass http://localhost:5003;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection $http_connection;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -s /etc/nginx/sites-available/Barcode-Host-Server /etc/nginx/sites-enabled/Barcode-Host-Server
|
|
||||||
nginx -t
|
|
||||||
nginx -s reload
|
|
||||||
links https://localhost/api/lastscan
|
|
||||||
links https://unity4/api/lastscan
|
|
||||||
```
|
|
||||||
|
|
||||||
```conf
|
|
||||||
# C:\Windows\System32\drivers\etc\hosts
|
|
||||||
192.168.0.204 unity4
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [x] unity5
|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
status: "5-Archive"
|
|
||||||
created: "2023-06-08T20:40:12.529Z"
|
|
||||||
updated: "2023-07-27T18:05:52.746Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# signalr
|
|
||||||
|
|
||||||
- [Framework-4.5.1](https://learn.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr?source=recommendations)
|
|
||||||
- [OnNotificationReceivedAsync](https://learn.microsoft.com/en-us/training/modules/aspnet-core-signalr/3-how-signalr-works)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# https://learn.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-7.0&tabs=visual-studio-code
|
|
||||||
dotnet tool uninstall -g Microsoft.Web.LibraryManager.Cli
|
|
||||||
dotnet tool install -g Microsoft.Web.LibraryManager.Cli
|
|
||||||
libman install @microsoft/signalr@latest -p unpkg -d wwwroot/js/signalr --files dist/browser/signalr.js --files dist/browser/signalr.js
|
|
||||||
# http://localhost:5003/notification
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [ ] phares3757
|
|
||||||
- [ ] unity4
|
|
||||||
- [ ] unity5
|
|
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
status: "3-In Progress"
|
|
||||||
created: "2023-07-25T17:31:10.383Z"
|
|
||||||
updated: "2023-07-27T18:05:52.714Z"
|
|
||||||
type: "kanbn"
|
|
||||||
---
|
|
||||||
|
|
||||||
# update-os
|
|
||||||
|
|
||||||
```bash
|
|
||||||
lsb_release -a
|
|
||||||
apt update
|
|
||||||
apt upgrade -y
|
|
||||||
apt install update-manager-core
|
|
||||||
do-release-upgrade
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sub-tasks
|
|
||||||
|
|
||||||
- [x] phares3757
|
|
||||||
- [x] unity4
|
|
||||||
- [ ] unity5
|
|
31
.vscode/settings.json
vendored
31
.vscode/settings.json
vendored
@ -1,19 +1,16 @@
|
|||||||
{
|
{
|
||||||
"files.eol": "\n",
|
"[markdown]": {
|
||||||
"[markdown]": {
|
"editor.wordWrap": "off"
|
||||||
"editor.wordWrap": "off"
|
},
|
||||||
},
|
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/*",
|
||||||
"cSpell.enabled": false,
|
"cSpell.enabled": false,
|
||||||
"thunder-client.saveToWorkspace": true,
|
"files.eol": "\n",
|
||||||
"thunder-client.workspaceRelativePath": ".vscode",
|
"files.exclude": {
|
||||||
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/*",
|
"**/node_modules": true
|
||||||
"[markdown]": {
|
},
|
||||||
"editor.wordWrap": "off"
|
"files.watcherExclude": {
|
||||||
},
|
"**/node_modules": true
|
||||||
"files.exclude": {
|
},
|
||||||
"**/node_modules": true
|
"thunder-client.saveToWorkspace": true,
|
||||||
},
|
"thunder-client.workspaceRelativePath": ".vscode"
|
||||||
"files.watcherExclude": {
|
|
||||||
"**/node_modules": true
|
|
||||||
}
|
|
||||||
}
|
}
|
142
.vscode/tasks.json
vendored
142
.vscode/tasks.json
vendored
@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
"version": "2.0.0",
|
|
||||||
"options": {
|
"options": {
|
||||||
"env": {
|
"env": {
|
||||||
"serverUserSecretsId": "02dce973-df1d-4325-962a-ed549af8d4c5"
|
"serverUserSecretsId": "02dce973-df1d-4325-962a-ed549af8d4c5"
|
||||||
@ -7,21 +6,18 @@
|
|||||||
},
|
},
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"label": "userSecretsInit",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"user-secrets",
|
"user-secrets",
|
||||||
"-p",
|
"-p",
|
||||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||||
"init"
|
"init"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "userSecretsInit",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "userSecretsSet",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"user-secrets",
|
"user-secrets",
|
||||||
"-p",
|
"-p",
|
||||||
@ -30,12 +26,12 @@
|
|||||||
"asdf",
|
"asdf",
|
||||||
"123"
|
"123"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "userSecretsSet",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "userSecretsMkLink",
|
|
||||||
"command": "cmd",
|
|
||||||
"type": "shell",
|
|
||||||
"args": [
|
"args": [
|
||||||
"/c",
|
"/c",
|
||||||
"mklink",
|
"mklink",
|
||||||
@ -43,47 +39,47 @@
|
|||||||
".vscode\\UserSecrets",
|
".vscode\\UserSecrets",
|
||||||
"${userHome}\\AppData\\Roaming\\Microsoft\\UserSecrets\\$env:serverUserSecretsId"
|
"${userHome}\\AppData\\Roaming\\Microsoft\\UserSecrets\\$env:serverUserSecretsId"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "cmd",
|
||||||
|
"label": "userSecretsMkLink",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "shell"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "buildServer",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"build",
|
"build",
|
||||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
"/consoleloggerparameters:NoSummary"
|
"/consoleloggerparameters:NoSummary"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "buildServer",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "publishServer",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"publish",
|
"publish",
|
||||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
"/consoleloggerparameters:NoSummary"
|
"/consoleloggerparameters:NoSummary"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "publishServer",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "testDebug",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"test",
|
"test",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
"/consoleloggerparameters:NoSummary"
|
"/consoleloggerparameters:NoSummary"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "testDebug",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "testRelease",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"test",
|
"test",
|
||||||
"/property:GenerateFullPaths=true",
|
"/property:GenerateFullPaths=true",
|
||||||
@ -91,12 +87,12 @@
|
|||||||
"-c",
|
"-c",
|
||||||
"Release"
|
"Release"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "testRelease",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "format",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"format",
|
"format",
|
||||||
"--report",
|
"--report",
|
||||||
@ -106,24 +102,24 @@
|
|||||||
"--severity",
|
"--severity",
|
||||||
"warn"
|
"warn"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "format",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "old-watch",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"watch",
|
"watch",
|
||||||
"run",
|
"run",
|
||||||
"--project",
|
"--project",
|
||||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj"
|
"${workspaceFolder}/Server/Barcode.Host.Server.csproj"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"command": "dotnet",
|
||||||
|
"label": "old-watch",
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "watchServer",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
"args": [
|
||||||
"watch",
|
"watch",
|
||||||
"--launch-profile",
|
"--launch-profile",
|
||||||
@ -133,68 +129,72 @@
|
|||||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||||
"--verbose"
|
"--verbose"
|
||||||
],
|
],
|
||||||
"isBackground": true,
|
"command": "dotnet",
|
||||||
"dependsOn": [
|
"dependsOn": [
|
||||||
"build"
|
"build"
|
||||||
],
|
],
|
||||||
|
"isBackground": true,
|
||||||
|
"label": "watchServer",
|
||||||
"problemMatcher": {
|
"problemMatcher": {
|
||||||
"fileLocation": "relative",
|
|
||||||
"pattern": {
|
|
||||||
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
|
|
||||||
"file": 1,
|
|
||||||
"location": 2,
|
|
||||||
"severity": 3,
|
|
||||||
"code": 4,
|
|
||||||
"message": 5
|
|
||||||
},
|
|
||||||
"background": {
|
"background": {
|
||||||
"activeOnStart": true,
|
"activeOnStart": true,
|
||||||
"beginsPattern": "^.*Shutdown requested.*",
|
"beginsPattern": "^.*Shutdown requested.*",
|
||||||
"endsPattern": "^.*Application started.*"
|
"endsPattern": "^.*Application started.*"
|
||||||
|
},
|
||||||
|
"fileLocation": "relative",
|
||||||
|
"pattern": {
|
||||||
|
"code": 4,
|
||||||
|
"file": 1,
|
||||||
|
"location": 2,
|
||||||
|
"message": 5,
|
||||||
|
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
|
||||||
|
"severity": 3
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"type": "process"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "PowerShell Force Clean",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "& Get-ChildItem . -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }",
|
"command": "& Get-ChildItem . -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }",
|
||||||
"problemMatcher": []
|
"label": "PowerShell Force Clean",
|
||||||
|
"problemMatcher": [],
|
||||||
|
"type": "shell"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "PowerShell Clean TestResults",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "& Get-ChildItem . -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }",
|
"command": "& Get-ChildItem . -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }",
|
||||||
"problemMatcher": []
|
"label": "PowerShell Clean TestResults",
|
||||||
|
"problemMatcher": [],
|
||||||
|
"type": "shell"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe .kanbn",
|
||||||
"label": "File-Folder-Helper AOT s Set metadata",
|
"label": "File-Folder-Helper AOT s Set metadata",
|
||||||
"type": "shell",
|
"problemMatcher": [],
|
||||||
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe .kanbn",
|
"type": "shell"
|
||||||
"problemMatcher": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe s M L:/DevOps/Mesa_FI/Barcode-Host -s L:/DevOps/Mesa_FI/Barcode-Host/.kanbn/tasks",
|
||||||
"label": "File-Folder-Helper AOT s M tasks",
|
"label": "File-Folder-Helper AOT s M tasks",
|
||||||
"type": "shell",
|
"problemMatcher": [],
|
||||||
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s M .kanbn/tasks",
|
"type": "shell"
|
||||||
"problemMatcher": []
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Kanbn Console",
|
"label": "Kanbn Console",
|
||||||
"type": "npm",
|
"problemMatcher": [],
|
||||||
"script": "kanbn.board",
|
"script": "kanbn.board",
|
||||||
"problemMatcher": []
|
"type": "npm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Kanbn Write Boad",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "& kanbn board -j | L:/Git/kanbn2md/kanbn2md.exe >.kanbn/board.md",
|
"command": "& kanbn board -j | L:/Git/kanbn2md/kanbn2md.exe >.kanbn/board.md",
|
||||||
"problemMatcher": []
|
"label": "Kanbn Write Boad",
|
||||||
|
"problemMatcher": [],
|
||||||
|
"type": "shell"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Kanbn Write json",
|
"label": "Kanbn Write json",
|
||||||
"type": "npm",
|
"problemMatcher": [],
|
||||||
"script": "kanbn.board.json",
|
"script": "kanbn.board.json",
|
||||||
"problemMatcher": []
|
"type": "npm"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"version": "2.0.0"
|
||||||
}
|
}
|
286
JavaScript/.vscode/4992.json
vendored
Normal file
286
JavaScript/.vscode/4992.json
vendored
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
{
|
||||||
|
"prodSpec": {
|
||||||
|
"keyId": 4992,
|
||||||
|
"specType": null,
|
||||||
|
"status": "Inactive",
|
||||||
|
"minutesPerWafer": 15.74,
|
||||||
|
"proveInTime": 381.7,
|
||||||
|
"layerType": "Standard 2 Layer",
|
||||||
|
"reactorType": "HTR",
|
||||||
|
"susceptorType": "GMSI",
|
||||||
|
"tubePressureType": "AP",
|
||||||
|
"recipeLayers": [
|
||||||
|
{
|
||||||
|
"layerNo": 1,
|
||||||
|
"layerId": "L1",
|
||||||
|
"layerType": "DEP",
|
||||||
|
"layerRecipe": null,
|
||||||
|
"layerDopant": null,
|
||||||
|
"layerThickMin": 18.05,
|
||||||
|
"layerThickTarget": 19,
|
||||||
|
"layerThickMax": 19.95,
|
||||||
|
"layerThickUnits": "<22>m",
|
||||||
|
"layerThickAMin": null,
|
||||||
|
"layerThickATarget": null,
|
||||||
|
"layerThickAMaxes": null,
|
||||||
|
"layerThickAUnits": null,
|
||||||
|
"layerResMin": 1.9,
|
||||||
|
"layerResTarget": 2,
|
||||||
|
"layerResMax": 2.1,
|
||||||
|
"layerResUnits": "<22>-cm",
|
||||||
|
"layerSResMin": null,
|
||||||
|
"layerSResTarget": null,
|
||||||
|
"layerSResMax": null,
|
||||||
|
"layerSResUnits": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"layerNo": 2,
|
||||||
|
"layerId": "L2",
|
||||||
|
"layerType": "DEP",
|
||||||
|
"layerRecipe": null,
|
||||||
|
"layerDopant": null,
|
||||||
|
"layerThickMin": 20.9,
|
||||||
|
"layerThickTarget": 22,
|
||||||
|
"layerThickMax": 23.1,
|
||||||
|
"layerThickUnits": "<22>m",
|
||||||
|
"layerThickAMin": null,
|
||||||
|
"layerThickATarget": null,
|
||||||
|
"layerThickAMaxes": null,
|
||||||
|
"layerThickAUnits": null,
|
||||||
|
"layerResMin": 5.7,
|
||||||
|
"layerResTarget": 6,
|
||||||
|
"layerResMax": 6.3,
|
||||||
|
"layerResUnits": "<22>-cm",
|
||||||
|
"layerSResMin": null,
|
||||||
|
"layerSResTarget": null,
|
||||||
|
"layerSResMax": null,
|
||||||
|
"layerSResUnits": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"layerNo": 3,
|
||||||
|
"layerId": 2,
|
||||||
|
"layerType": "CMB",
|
||||||
|
"layerRecipe": null,
|
||||||
|
"layerDopant": null,
|
||||||
|
"layerThickMin": 38.95,
|
||||||
|
"layerThickTarget": 41,
|
||||||
|
"layerThickMax": 43.05,
|
||||||
|
"layerThickUnits": "<22>m",
|
||||||
|
"layerThickAMin": null,
|
||||||
|
"layerThickATarget": null,
|
||||||
|
"layerThickAMaxes": null,
|
||||||
|
"layerThickAUnits": null,
|
||||||
|
"layerResMin": null,
|
||||||
|
"layerResTarget": null,
|
||||||
|
"layerResMax": null,
|
||||||
|
"layerResUnits": null,
|
||||||
|
"layerSResMin": null,
|
||||||
|
"layerSResTarget": null,
|
||||||
|
"layerSResMax": null,
|
||||||
|
"layerSResUnits": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prodVers": [
|
||||||
|
{
|
||||||
|
"keyId": 14574
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"epiPart": {
|
||||||
|
"keyID": "U021E",
|
||||||
|
"waferSize": "200 mm 8 in"
|
||||||
|
},
|
||||||
|
"custEpiParts": [
|
||||||
|
{
|
||||||
|
"keyId": "7113*U021E"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prsStages": [
|
||||||
|
{
|
||||||
|
"keyId": "4992*UNLOAD",
|
||||||
|
"psn": 4992,
|
||||||
|
"stage": "UNLOAD",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": false,
|
||||||
|
"brightlight": false,
|
||||||
|
"inspSigReq": false,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": null,
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"pits": null,
|
||||||
|
"mounds": null,
|
||||||
|
"stackFaults": null,
|
||||||
|
"spikes": null,
|
||||||
|
"spots": null,
|
||||||
|
"blDefects": null
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": false,
|
||||||
|
"surfscanRecipes": []
|
||||||
|
},
|
||||||
|
"qaMetTests": [
|
||||||
|
{
|
||||||
|
"test": "THICK_ONLY",
|
||||||
|
"property": "THICK",
|
||||||
|
"propertyDesc": "Thickness",
|
||||||
|
"toolClass": "FTIR",
|
||||||
|
"recipe": "8IN_INF",
|
||||||
|
"recipePattern": "8IN_INF",
|
||||||
|
"min": 38.95,
|
||||||
|
"max": 43.05,
|
||||||
|
"phaseMin": null,
|
||||||
|
"slots": "L",
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": false,
|
||||||
|
"interval": 2,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 3, 5..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "CRES",
|
||||||
|
"property": "CRES",
|
||||||
|
"propertyDesc": "HgCv Res",
|
||||||
|
"toolClass": "HGCV",
|
||||||
|
"recipe": "8IN4_10.SET",
|
||||||
|
"recipePattern": "8IN4_10.SET",
|
||||||
|
"min": 5.385,
|
||||||
|
"max": 5.952,
|
||||||
|
"phaseMin": 88.5,
|
||||||
|
"slots": 1,
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": true,
|
||||||
|
"interval": 8,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 9, 17..."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": "4992*LWI",
|
||||||
|
"psn": 4992,
|
||||||
|
"stage": "LWI",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": true,
|
||||||
|
"brightlight": true,
|
||||||
|
"inspSigReq": true,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": 20,
|
||||||
|
"scratches": 1,
|
||||||
|
"scratchLen": 1,
|
||||||
|
"pits": 1,
|
||||||
|
"mounds": 1,
|
||||||
|
"stackFaults": 10,
|
||||||
|
"spikes": 5,
|
||||||
|
"spots": 3,
|
||||||
|
"blDefects": 1
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": 1,
|
||||||
|
"scratchLen": 1,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": true,
|
||||||
|
"surfscanRecipes": [
|
||||||
|
{
|
||||||
|
"recipe": "8IN_IFX_ROTR",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipe": "IFX100_ROTR",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": 25
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": "4992*QA",
|
||||||
|
"psn": 4992,
|
||||||
|
"stage": "QA",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": false,
|
||||||
|
"brightlight": false,
|
||||||
|
"inspSigReq": false,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": null,
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"pits": null,
|
||||||
|
"mounds": null,
|
||||||
|
"stackFaults": null,
|
||||||
|
"spikes": null,
|
||||||
|
"spots": null,
|
||||||
|
"blDefects": null
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": false,
|
||||||
|
"surfscanRecipes": []
|
||||||
|
},
|
||||||
|
"qaMetTests": [
|
||||||
|
{
|
||||||
|
"test": "ADE",
|
||||||
|
"property": "THICK",
|
||||||
|
"propertyDesc": "Thickness",
|
||||||
|
"toolClass": "FTIR",
|
||||||
|
"recipe": "8IN_INF",
|
||||||
|
"recipePattern": "Centerpoint",
|
||||||
|
"min": 38.95,
|
||||||
|
"max": 43.05,
|
||||||
|
"phaseMin": null,
|
||||||
|
"slots": 1,
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": false,
|
||||||
|
"interval": 1,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 2, 3..."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"_links": {
|
||||||
|
"self": {
|
||||||
|
"href": "https://messa014.infineon.com/api/oiWizard/materials/PROD_SPEC/4992",
|
||||||
|
"title": "Self"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"_class": "resource"
|
||||||
|
}
|
316
JavaScript/.vscode/5227.json
vendored
Normal file
316
JavaScript/.vscode/5227.json
vendored
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
{
|
||||||
|
"prodSpec": {
|
||||||
|
"keyId": 5227,
|
||||||
|
"specType": "Production",
|
||||||
|
"status": "Active",
|
||||||
|
"minutesPerWafer": 15.99,
|
||||||
|
"proveInTime": 339.8,
|
||||||
|
"layerType": "Standard 1 Layer",
|
||||||
|
"reactorType": "ASM",
|
||||||
|
"susceptorType": "GMSI",
|
||||||
|
"tubePressureType": "AP",
|
||||||
|
"recipeLayers": [
|
||||||
|
{
|
||||||
|
"layerNo": 1,
|
||||||
|
"layerId": "L1",
|
||||||
|
"layerType": "DEP",
|
||||||
|
"layerRecipe": 946,
|
||||||
|
"layerDopant": "Phosphorus",
|
||||||
|
"layerThickMin": 21.15,
|
||||||
|
"layerThickTarget": 21.8,
|
||||||
|
"layerThickMax": 22.45,
|
||||||
|
"layerThickUnits": "<22>m",
|
||||||
|
"layerThickAMin": null,
|
||||||
|
"layerThickATarget": null,
|
||||||
|
"layerThickAMaxes": null,
|
||||||
|
"layerThickAUnits": null,
|
||||||
|
"layerResMin": 5.102,
|
||||||
|
"layerResTarget": 5.26,
|
||||||
|
"layerResMax": 5.418,
|
||||||
|
"layerResUnits": "<22>-cm",
|
||||||
|
"layerSResMin": null,
|
||||||
|
"layerSResTarget": null,
|
||||||
|
"layerSResMax": null,
|
||||||
|
"layerSResUnits": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prodVers": [
|
||||||
|
{
|
||||||
|
"keyId": 15185
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": 15186
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": 15187
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": 15526
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"epiPart": {
|
||||||
|
"keyID": "U108",
|
||||||
|
"waferSize": "200 mm 8 in"
|
||||||
|
},
|
||||||
|
"custEpiParts": [
|
||||||
|
{
|
||||||
|
"keyId": "7127*U108"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prsStages": [
|
||||||
|
{
|
||||||
|
"keyId": "5227*UNLOAD",
|
||||||
|
"psn": 5227,
|
||||||
|
"stage": "UNLOAD",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": false,
|
||||||
|
"brightlight": false,
|
||||||
|
"inspSigReq": false,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": null,
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"pits": null,
|
||||||
|
"mounds": null,
|
||||||
|
"stackFaults": null,
|
||||||
|
"spikes": null,
|
||||||
|
"spots": null,
|
||||||
|
"blDefects": null
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": false,
|
||||||
|
"surfscanRecipes": []
|
||||||
|
},
|
||||||
|
"qaMetTests": [
|
||||||
|
{
|
||||||
|
"test": "THICK_ONLY",
|
||||||
|
"property": "THICK",
|
||||||
|
"propertyDesc": "Thickness",
|
||||||
|
"toolClass": "FTIR",
|
||||||
|
"recipe": "PROD_8inch",
|
||||||
|
"recipePattern": "14PT_3mm",
|
||||||
|
"min": 21.05,
|
||||||
|
"max": 22.45,
|
||||||
|
"phaseMin": null,
|
||||||
|
"slots": "L",
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": false,
|
||||||
|
"interval": 2,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 3, 5..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "CRES",
|
||||||
|
"property": "CRES",
|
||||||
|
"propertyDesc": "HgCv Res",
|
||||||
|
"toolClass": "HGCV",
|
||||||
|
"recipe": "8IN4_10.SET",
|
||||||
|
"recipePattern": "8IN4_10.SET",
|
||||||
|
"min": 4.74,
|
||||||
|
"max": 5.47,
|
||||||
|
"phaseMin": 88.5,
|
||||||
|
"slots": 1,
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": true,
|
||||||
|
"interval": 8,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 9, 17..."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": "5227*LWI",
|
||||||
|
"psn": 5227,
|
||||||
|
"stage": "LWI",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": true,
|
||||||
|
"brightlight": true,
|
||||||
|
"inspSigReq": true,
|
||||||
|
"inspInterval": 2,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": 20,
|
||||||
|
"scratches": 1,
|
||||||
|
"scratchLen": 1,
|
||||||
|
"pits": 1,
|
||||||
|
"mounds": 1,
|
||||||
|
"stackFaults": 10,
|
||||||
|
"spikes": 5,
|
||||||
|
"spots": 4,
|
||||||
|
"blDefects": 1
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": 1,
|
||||||
|
"scratchLen": 1,
|
||||||
|
"nodules": 10,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": true,
|
||||||
|
"surfscanRecipes": [
|
||||||
|
{
|
||||||
|
"recipe": "8IN_IFX_ROTR",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipe": "IFX100_ROTR",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"recipe": "IFX25_ROTR",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": 25
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": "5227*POST",
|
||||||
|
"psn": 5227,
|
||||||
|
"stage": "POST",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": "8INCLEAN",
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": false,
|
||||||
|
"brightlight": false,
|
||||||
|
"inspSigReq": false,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": null,
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"pits": null,
|
||||||
|
"mounds": null,
|
||||||
|
"stackFaults": null,
|
||||||
|
"spikes": null,
|
||||||
|
"spots": null,
|
||||||
|
"blDefects": null
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": false,
|
||||||
|
"surfscanRecipes": [
|
||||||
|
{
|
||||||
|
"recipe": "IFXPOSTCLEAN",
|
||||||
|
"defects": 40,
|
||||||
|
"haze": 2,
|
||||||
|
"sampleSize": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keyId": "5227*QA",
|
||||||
|
"psn": 5227,
|
||||||
|
"stage": "QA",
|
||||||
|
"cleans": {
|
||||||
|
"cleanRecipe": null,
|
||||||
|
"cleanSigReq": false,
|
||||||
|
"cleanTools": []
|
||||||
|
},
|
||||||
|
"inspection": {
|
||||||
|
"microscope": false,
|
||||||
|
"brightlight": false,
|
||||||
|
"inspSigReq": false,
|
||||||
|
"inspInterval": null,
|
||||||
|
"frontSide": {
|
||||||
|
"lpd": null,
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"pits": null,
|
||||||
|
"mounds": null,
|
||||||
|
"stackFaults": null,
|
||||||
|
"spikes": null,
|
||||||
|
"spots": null,
|
||||||
|
"blDefects": null
|
||||||
|
},
|
||||||
|
"backSide": {
|
||||||
|
"scratches": null,
|
||||||
|
"scratchLen": null,
|
||||||
|
"nodules": null,
|
||||||
|
"spikes": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"surfscan": {
|
||||||
|
"surfscanSigReq": false,
|
||||||
|
"surfscanRecipes": []
|
||||||
|
},
|
||||||
|
"qaMetTests": [
|
||||||
|
{
|
||||||
|
"test": "ADE",
|
||||||
|
"property": "THICK",
|
||||||
|
"propertyDesc": "Thickness",
|
||||||
|
"toolClass": "FTIR",
|
||||||
|
"recipe": "8inch Centerpoint",
|
||||||
|
"recipePattern": "Centerpoint",
|
||||||
|
"min": 21.05,
|
||||||
|
"max": 22.45,
|
||||||
|
"phaseMin": null,
|
||||||
|
"slots": 1,
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": false,
|
||||||
|
"interval": 1,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 2, 3..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "ADE",
|
||||||
|
"property": "THICK",
|
||||||
|
"propertyDesc": "Thickness",
|
||||||
|
"toolClass": "FTIR",
|
||||||
|
"recipe": "8inch Centerpoint",
|
||||||
|
"recipePattern": "Centerpoint",
|
||||||
|
"min": 21.05,
|
||||||
|
"max": 22.45,
|
||||||
|
"phaseMin": null,
|
||||||
|
"slots": "L",
|
||||||
|
"wfrQty": 1,
|
||||||
|
"reactSched": false,
|
||||||
|
"interval": 1,
|
||||||
|
"start": 1,
|
||||||
|
"sequence": "1, 2, 3..."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"_links": {
|
||||||
|
"self": {
|
||||||
|
"href": "http://messa014.infineon.com/api/oiWizard/materials/PROD_SPEC/5227",
|
||||||
|
"title": "Self"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"_class": "resource"
|
||||||
|
}
|
11
JavaScript/.vscode/launch.json
vendored
Normal file
11
JavaScript/.vscode/launch.json
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Launch Current Opened File",
|
||||||
|
"program": "${file}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
21
JavaScript/index.js
Normal file
21
JavaScript/index.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
var _apiUrl = "http://messa014.infineon.com/api/oiWizard";
|
||||||
|
|
||||||
|
fetch(_apiUrl + '/materials/PROD_SPEC/4992', { method: 'GET' })
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
for (const prsStage of data.prodSpec.prsStages) {
|
||||||
|
if (!prsStage.qaMetTests)
|
||||||
|
continue;
|
||||||
|
for (const qaMetTest of prsStage.qaMetTests) {
|
||||||
|
console.log(qaMetTest.test);
|
||||||
|
console.log(qaMetTest.slots);
|
||||||
|
console.log(qaMetTest.recipe);
|
||||||
|
console.log(qaMetTest.recipePattern);
|
||||||
|
if (qaMetTest.test !== 'THICK_ONLY')
|
||||||
|
continue;
|
||||||
|
console.log(qaMetTest.min);
|
||||||
|
console.log(qaMetTest.max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => console.log(error));
|
@ -3,7 +3,8 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<UserSecretsId>02dce973-df1d-4325-962a-ed549af8d4c5</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VSTestLogger>trx</VSTestLogger>
|
<VSTestLogger>trx</VSTestLogger>
|
||||||
@ -26,29 +27,17 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.5" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.0.4" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.2.0" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.0.4" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.2.0" />
|
||||||
<PackageReference Include="Serilog.Settings.Configuration" Version="7.0.0" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
|
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
|
||||||
<PackageReference Include="Serilog" Version="2.12.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
||||||
<ProjectReference Include="..\Server\Barcode.Host.Server.csproj" />
|
<ProjectReference Include="..\Server\Barcode.Host.Server.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="..\Server\appsettings.json">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="..\Server\appsettings.Development.json">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.Models;
|
|||||||
using Barcode.Host.Shared.Models.Stateless;
|
using Barcode.Host.Shared.Models.Stateless;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Serilog;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Barcode.Host.Tests;
|
namespace Barcode.Host.Tests;
|
||||||
|
|
||||||
@ -10,20 +10,17 @@ namespace Barcode.Host.Tests;
|
|||||||
public class UnitTestFileService
|
public class UnitTestFileService
|
||||||
{
|
{
|
||||||
|
|
||||||
#pragma warning disable CS8618
|
private static ILogger? _Logger;
|
||||||
|
private static TestContext? _TestContext;
|
||||||
private static ILogger _Logger;
|
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||||
private static TestContext _TestContext;
|
|
||||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
|
||||||
|
|
||||||
#pragma warning restore
|
|
||||||
|
|
||||||
[ClassInitialize]
|
[ClassInitialize]
|
||||||
public static void ClassInitAsync(TestContext testContext)
|
public static void ClassInitAsync(TestContext testContext)
|
||||||
{
|
{
|
||||||
_TestContext = testContext;
|
_TestContext = testContext;
|
||||||
_Logger = Log.ForContext<UnitTestFileService>();
|
|
||||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||||
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
|
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void NonThrowTryCatch()
|
private static void NonThrowTryCatch()
|
||||||
@ -39,13 +36,15 @@ public class UnitTestFileService
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void GetWrite()
|
public void GetWrite()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger?.LogInformation("Starting Web Application");
|
||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||||
Server.Models.AppSettings appSettings = serviceProvider.GetRequiredService<Server.Models.AppSettings>();
|
Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>();
|
||||||
IFileService fileService = serviceProvider.GetRequiredService<IFileService>();
|
IFileService? fileService = serviceProvider?.GetRequiredService<IFileService>();
|
||||||
Notification notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
Assert.IsNotNull(appSettings);
|
||||||
|
Assert.IsNotNull(fileService);
|
||||||
|
Notification? notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
||||||
fileService.Write(appSettings.EquipmentName, appSettings.FileShare, calendar: null, notification);
|
fileService.Write(appSettings.EquipmentName, appSettings.FileShare, calendar: null, notification);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||||
NonThrowTryCatch();
|
NonThrowTryCatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.DataModels;
|
|||||||
using Barcode.Host.Shared.Models.Stateless;
|
using Barcode.Host.Shared.Models.Stateless;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Serilog;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Barcode.Host.Tests;
|
namespace Barcode.Host.Tests;
|
||||||
|
|
||||||
@ -10,21 +10,18 @@ namespace Barcode.Host.Tests;
|
|||||||
public class UnitTestLastScanController
|
public class UnitTestLastScanController
|
||||||
{
|
{
|
||||||
|
|
||||||
#pragma warning disable CS8618
|
private static ILogger? _Logger;
|
||||||
|
private static string? _ControllerName;
|
||||||
private static ILogger _Logger;
|
private static TestContext? _TestContext;
|
||||||
private static string _ControllerName;
|
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||||
private static TestContext _TestContext;
|
|
||||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
|
||||||
|
|
||||||
#pragma warning restore
|
|
||||||
|
|
||||||
[ClassInitialize]
|
[ClassInitialize]
|
||||||
public static void ClassInitAsync(TestContext testContext)
|
public static void ClassInitAsync(TestContext testContext)
|
||||||
{
|
{
|
||||||
_TestContext = testContext;
|
_TestContext = testContext;
|
||||||
_Logger = Log.ForContext<UnitTestLastScanController>();
|
|
||||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||||
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
|
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||||
_ControllerName = nameof(Server.ApiControllers.LastScanController)[..^10];
|
_ControllerName = nameof(Server.ApiControllers.LastScanController)[..^10];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,9 +35,9 @@ public class UnitTestLastScanController
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestControllerName()
|
public void TestControllerName()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger?.LogInformation("Starting Web Application");
|
||||||
Assert.AreEqual(ILastScanController<string>.GetRouteName(), _ControllerName);
|
Assert.AreEqual(ILastScanController<string>.GetRouteName(), _ControllerName);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||||
NonThrowTryCatch();
|
NonThrowTryCatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,12 +47,13 @@ public class UnitTestLastScanController
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void GetScan()
|
public void GetScan()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger?.LogInformation("Starting Web Application");
|
||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||||
ILastScanService lastScanService = serviceProvider.GetRequiredService<ILastScanService>();
|
ILastScanService? lastScanService = serviceProvider?.GetRequiredService<ILastScanService>();
|
||||||
|
Assert.IsNotNull(lastScanService);
|
||||||
Result<string> result = lastScanService.GetScan();
|
Result<string> result = lastScanService.GetScan();
|
||||||
Assert.IsNotNull(result?.Results);
|
Assert.IsNotNull(result?.Results);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||||
NonThrowTryCatch();
|
NonThrowTryCatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,13 +63,14 @@ public class UnitTestLastScanController
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public async Task GetScanApi()
|
public async Task GetScanApi()
|
||||||
{
|
{
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger?.LogInformation("Starting Web Application");
|
||||||
|
Assert.IsNotNull(httpClient);
|
||||||
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/O171927.1.37/");
|
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/O171927.1.37/");
|
||||||
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetScan)}.json"), json);
|
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetScan)}.json"), json);
|
||||||
Result<string>? result = System.Text.Json.JsonSerializer.Deserialize<Result<string>>(json);
|
Result<string>? result = System.Text.Json.JsonSerializer.Deserialize<Result<string>>(json);
|
||||||
Assert.IsNotNull(result?.Results);
|
Assert.IsNotNull(result?.Results);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||||
NonThrowTryCatch();
|
NonThrowTryCatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.Models;
|
|||||||
using Barcode.Host.Shared.Models.Stateless;
|
using Barcode.Host.Shared.Models.Stateless;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Serilog;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Barcode.Host.Tests;
|
namespace Barcode.Host.Tests;
|
||||||
|
|
||||||
@ -10,20 +10,17 @@ namespace Barcode.Host.Tests;
|
|||||||
public class UnitTestPostService
|
public class UnitTestPostService
|
||||||
{
|
{
|
||||||
|
|
||||||
#pragma warning disable CS8618
|
private static ILogger? _Logger;
|
||||||
|
private static TestContext? _TestContext;
|
||||||
private static ILogger _Logger;
|
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||||
private static TestContext _TestContext;
|
|
||||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
|
||||||
|
|
||||||
#pragma warning restore
|
|
||||||
|
|
||||||
[ClassInitialize]
|
[ClassInitialize]
|
||||||
public static void ClassInitAsync(TestContext testContext)
|
public static void ClassInitAsync(TestContext testContext)
|
||||||
{
|
{
|
||||||
_TestContext = testContext;
|
_TestContext = testContext;
|
||||||
_Logger = Log.ForContext<UnitTestPostService>();
|
|
||||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||||
|
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||||
|
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void NonThrowTryCatch()
|
private static void NonThrowTryCatch()
|
||||||
@ -39,14 +36,18 @@ public class UnitTestPostService
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void GetPostTo()
|
public void GetPostTo()
|
||||||
{
|
{
|
||||||
_Logger.Information("Starting Web Application");
|
_Logger?.LogInformation("Starting Web Application");
|
||||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
|
||||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||||
Server.Models.AppSettings appSettings = serviceProvider.GetRequiredService<Server.Models.AppSettings>();
|
Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>();
|
||||||
IPostService postService = serviceProvider.GetRequiredService<IPostService>();
|
IPostService? postService = serviceProvider?.GetRequiredService<IPostService>();
|
||||||
Notification notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
Assert.IsNotNull(httpClient);
|
||||||
|
Assert.IsNotNull(appSettings);
|
||||||
|
Assert.IsNotNull(postService);
|
||||||
|
Notification? notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
||||||
|
Assert.IsNotNull(notification);
|
||||||
_ = postService.Post(appSettings.PostTo, httpClient, notification);
|
_ = postService.Post(appSettings.PostTo, httpClient, notification);
|
||||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||||
NonThrowTryCatch();
|
NonThrowTryCatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<UserSecretsId>02dce973-df1d-4325-962a-ed549af8d4c5</UserSecretsId>
|
<UserSecretsId>02dce973-df1d-4325-962a-ed549af8d4c5</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@ -22,27 +22,17 @@
|
|||||||
<DefineConstants>Linux</DefineConstants>
|
<DefineConstants>Linux</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CliWrap" Version="3.6.3" />
|
<PackageReference Include="CliWrap" Version="3.6.6" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.5" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
|
||||||
<PackageReference Include="Serilog.Settings.Configuration" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.0" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="7.0.0" />
|
|
||||||
<PackageReference Include="Serilog" Version="2.12.0" />
|
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
|
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
<PackageReference Include="System.Text.Json" Version="8.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="appsettings.json">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="appsettings.Development.json">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
@ -5,7 +5,6 @@ using Barcode.Host.Shared.KeyboardMouse;
|
|||||||
using Barcode.Host.Shared.Models;
|
using Barcode.Host.Shared.Models;
|
||||||
using Barcode.Host.Shared.Models.Stateless;
|
using Barcode.Host.Shared.Models.Stateless;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using Serilog.Context;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
|
||||||
namespace Barcode.Host.Server.HostedService;
|
namespace Barcode.Host.Server.HostedService;
|
||||||
@ -65,12 +64,9 @@ public class TimedHostedService : IHostedService, IAggregateInputReader, IDispos
|
|||||||
|
|
||||||
public Task StartAsync(CancellationToken stoppingToken)
|
public Task StartAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
string? methodName = IMethodName.GetActualAsyncMethodName();
|
_Logger.LogInformation("Timed Hosted Service: {BuildSourceVersion}:{ProcessId} running.", _AppSettings.BuildSourceVersion, Environment.ProcessId);
|
||||||
using (LogContext.PushProperty("MethodName", methodName))
|
if (!string.IsNullOrEmpty(_AppSettings.SerialPortName))
|
||||||
{
|
_SerialService.Open();
|
||||||
_Logger.LogInformation($"Timed Hosted Service: {_AppSettings.BuildSourceVersion}:{Environment.ProcessId} running.");
|
|
||||||
if (!string.IsNullOrEmpty(_AppSettings.SerialPortName))
|
|
||||||
_SerialService.Open();
|
|
||||||
#if Linux
|
#if Linux
|
||||||
if (!_LinuxGroupManager.IsInInputGroup().WaitAsync(stoppingToken).Result)
|
if (!_LinuxGroupManager.IsInInputGroup().WaitAsync(stoppingToken).Result)
|
||||||
{
|
{
|
||||||
@ -80,32 +76,29 @@ public class TimedHostedService : IHostedService, IAggregateInputReader, IDispos
|
|||||||
_ = _LinuxGroupManager.RebootSystem(_AppSettings.RootPassword);
|
_ = _LinuxGroupManager.RebootSystem(_AppSettings.RootPassword);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
List<(EventCode, char)> collection = _LastScanService.IncludeEventCodes();
|
List<(EventCode, char)> collection = _LastScanService.IncludeEventCodes();
|
||||||
foreach ((EventCode eventCode, char @char) in collection)
|
foreach ((EventCode eventCode, char @char) in collection)
|
||||||
_CharToEventCodes.Add(eventCode, @char);
|
_CharToEventCodes.Add(eventCode, @char);
|
||||||
int dueTime = 0;
|
int dueTime = 0;
|
||||||
foreach ((string _, Timer timer) in _Timers)
|
foreach ((string _, Timer timer) in _Timers)
|
||||||
{
|
{
|
||||||
dueTime += 300;
|
dueTime += 300;
|
||||||
_ = timer.Change(dueTime, Timeout.Infinite);
|
_ = timer.Change(dueTime, Timeout.Infinite);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task StopAsync(CancellationToken stoppingToken)
|
public Task StopAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
string? methodName = IMethodName.GetActualAsyncMethodName();
|
_Logger.LogInformation("Timed Hosted Service: {BuildSourceVersion}:{ProcessId} is stopping.", _AppSettings.BuildSourceVersion, Environment.ProcessId);
|
||||||
using (LogContext.PushProperty("MethodName", methodName))
|
for (short i = 0; i < short.MaxValue; i++)
|
||||||
{
|
{
|
||||||
_Logger.LogInformation($"Timed Hosted Service: {_AppSettings.BuildSourceVersion}:{Environment.ProcessId} is stopping.");
|
Thread.Sleep(500);
|
||||||
for (short i = 0; i < short.MaxValue; i++)
|
if (_ExecutionCount == 0)
|
||||||
{
|
break;
|
||||||
Thread.Sleep(500);
|
|
||||||
if (_ExecutionCount == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Barcode.Host.Server.Models;
|
namespace Barcode.Host.Server.Models;
|
||||||
|
|
||||||
@ -32,8 +33,14 @@ public record AppSettings(string BuildNumber,
|
|||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(AppSettings))]
|
||||||
|
internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
}
|
}
|
2
Server/Models/Binder/.editorconfig
Normal file
2
Server/Models/Binder/.editorconfig
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[*.cs]
|
||||||
|
csharp_preserve_single_line_statements = true
|
@ -1,4 +1,3 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace Barcode.Host.Server.Models.Binder;
|
namespace Barcode.Host.Server.Models.Binder;
|
||||||
@ -6,34 +5,32 @@ namespace Barcode.Host.Server.Models.Binder;
|
|||||||
public class AppSettings
|
public class AppSettings
|
||||||
{
|
{
|
||||||
|
|
||||||
[Display(Name = "Build Number"), Required] public string? BuildNumber { get; set; }
|
public string? BuildNumber { get; set; }
|
||||||
[Display(Name = "Build Source Version"), Required] public string? BuildSourceVersion { get; set; }
|
public string? BuildSourceVersion { get; set; }
|
||||||
[Display(Name = "Last Scan Service Clear After"), Required] public int? ClearLastScanServiceAfter { get; set; }
|
public int? ClearLastScanServiceAfter { get; set; }
|
||||||
[Display(Name = "Company"), Required] public string? Company { get; set; }
|
public string? Company { get; set; }
|
||||||
[Display(Name = "Device Name Ends With"), Required] public string? DeviceNameEndsWith { get; set; }
|
public string? DeviceNameEndsWith { get; set; }
|
||||||
[Display(Name = "Equipment Name"), Required] public string? EquipmentName { get; set; }
|
public string? EquipmentName { get; set; }
|
||||||
[Display(Name = "ExpectedScanLengthA"), Required] public int? ExpectedScanLengthA { get; set; }
|
public int? ExpectedScanLengthA { get; set; }
|
||||||
[Display(Name = "ExpectedScanLengthB"), Required] public int? ExpectedScanLengthB { get; set; }
|
public int? ExpectedScanLengthB { get; set; }
|
||||||
[Display(Name = "File Share"), Required] public string? FileShare { get; set; }
|
public string? FileShare { get; set; }
|
||||||
[Display(Name = "Is Development"), Required] public bool? IsDevelopment { get; set; }
|
public bool? IsDevelopment { get; set; }
|
||||||
[Display(Name = "Is Staging"), Required] public bool? IsStaging { get; set; }
|
public bool? IsStaging { get; set; }
|
||||||
[Display(Name = "Linux Device Path"), Required] public string? LinuxDevicePath { get; set; }
|
public string? LinuxDevicePath { get; set; }
|
||||||
[Display(Name = "Mock Root"), Required] public string? MockRoot { get; set; }
|
public string? MockRoot { get; set; }
|
||||||
[Display(Name = "MonA Resource"), Required] public string? MonAResource { get; set; }
|
public string? MonAResource { get; set; }
|
||||||
[Display(Name = "MonA Site"), Required] public string? MonASite { get; set; }
|
public string? MonASite { get; set; }
|
||||||
[Display(Name = "Notify Minimum"), Required] public int? NotifyMinimum { get; set; }
|
public int? NotifyMinimum { get; set; }
|
||||||
[Display(Name = "OpenInsight Application Programming Interface"), Required] public string? OpenInsightApplicationProgrammingInterface { get; set; }
|
public string? OpenInsightApplicationProgrammingInterface { get; set; }
|
||||||
[Display(Name = "PostTo"), Required] public string? PostTo { get; set; }
|
public string? PostTo { get; set; }
|
||||||
[Display(Name = "Post to Every"), Required] public int? PostToEvery { get; set; }
|
public int? PostToEvery { get; set; }
|
||||||
[Display(Name = "RootPassword"), Required] public string? RootPassword { get; set; }
|
public string? RootPassword { get; set; }
|
||||||
[Display(Name = "Serial Port Name"), Required] public string? SerialPortName { get; set; }
|
public string? SerialPortName { get; set; }
|
||||||
[Display(Name = "Share to Every"), Required] public int? ShareToEvery { get; set; }
|
public int? ShareToEvery { get; set; }
|
||||||
[Display(Name = "ToolClass"), Required] public string? ToolClass { get; set; }
|
public string? ToolClass { get; set; }
|
||||||
[Display(Name = "URLs"), Required] public string? URLs { get; set; }
|
public string? URLs { get; set; }
|
||||||
[Display(Name = "Working Directory Name"), Required] public string? WorkingDirectoryName { get; set; }
|
public string? WorkingDirectoryName { get; set; }
|
||||||
[Display(Name = "WriteToSerialEvery"), Required] public int? WriteToSerialEvery { get; set; }
|
public int? WriteToSerialEvery { get; set; }
|
||||||
|
|
||||||
#nullable restore
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
@ -41,63 +38,53 @@ public class AppSettings
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings)
|
||||||
|
{
|
||||||
|
if (appSettings?.Company is null)
|
||||||
|
{
|
||||||
|
List<string> paths = new();
|
||||||
|
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
|
||||||
|
{
|
||||||
|
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
||||||
|
continue;
|
||||||
|
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
||||||
|
continue;
|
||||||
|
paths.Add(physicalFileProvider.Root);
|
||||||
|
}
|
||||||
|
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static Models.AppSettings Get(AppSettings? appSettings)
|
private static Models.AppSettings Get(AppSettings? appSettings)
|
||||||
{
|
{
|
||||||
Models.AppSettings result;
|
Models.AppSettings result;
|
||||||
if (appSettings is null)
|
if (appSettings is null) throw new NullReferenceException(nameof(appSettings));
|
||||||
throw new NullReferenceException(nameof(appSettings));
|
if (appSettings.BuildNumber is null) throw new NullReferenceException(nameof(BuildNumber));
|
||||||
if (appSettings.BuildNumber is null)
|
if (appSettings.BuildSourceVersion is null) throw new NullReferenceException(nameof(BuildSourceVersion));
|
||||||
throw new NullReferenceException(nameof(BuildNumber));
|
if (appSettings.ClearLastScanServiceAfter is null) throw new NullReferenceException(nameof(ClearLastScanServiceAfter));
|
||||||
if (appSettings.BuildSourceVersion is null)
|
if (appSettings.Company is null) throw new NullReferenceException(nameof(Company));
|
||||||
throw new NullReferenceException(nameof(BuildSourceVersion));
|
if (appSettings.DeviceNameEndsWith is null) throw new NullReferenceException(nameof(DeviceNameEndsWith));
|
||||||
if (appSettings.ClearLastScanServiceAfter is null)
|
if (appSettings.EquipmentName is null) throw new NullReferenceException(nameof(EquipmentName));
|
||||||
throw new NullReferenceException(nameof(ClearLastScanServiceAfter));
|
if (appSettings.ExpectedScanLengthA is null) throw new NullReferenceException(nameof(ExpectedScanLengthA));
|
||||||
if (appSettings.Company is null)
|
if (appSettings.ExpectedScanLengthB is null) throw new NullReferenceException(nameof(ExpectedScanLengthB));
|
||||||
throw new NullReferenceException(nameof(Company));
|
if (appSettings.FileShare is null) throw new NullReferenceException(nameof(FileShare));
|
||||||
if (appSettings.DeviceNameEndsWith is null)
|
if (appSettings.IsDevelopment is null) throw new NullReferenceException(nameof(IsDevelopment));
|
||||||
throw new NullReferenceException(nameof(DeviceNameEndsWith));
|
if (appSettings.IsStaging is null) throw new NullReferenceException(nameof(IsStaging));
|
||||||
if (appSettings.EquipmentName is null)
|
if (appSettings.LinuxDevicePath is null) throw new NullReferenceException(nameof(LinuxDevicePath));
|
||||||
throw new NullReferenceException(nameof(EquipmentName));
|
if (appSettings.MockRoot is null) throw new NullReferenceException(nameof(MockRoot));
|
||||||
if (appSettings.ExpectedScanLengthA is null)
|
if (appSettings.MonAResource is null) throw new NullReferenceException(nameof(MonAResource));
|
||||||
throw new NullReferenceException(nameof(ExpectedScanLengthA));
|
if (appSettings.MonASite is null) throw new NullReferenceException(nameof(MonASite));
|
||||||
if (appSettings.ExpectedScanLengthB is null)
|
if (appSettings.NotifyMinimum is null) throw new NullReferenceException(nameof(NotifyMinimum));
|
||||||
throw new NullReferenceException(nameof(ExpectedScanLengthB));
|
if (appSettings.OpenInsightApplicationProgrammingInterface is null) throw new NullReferenceException(nameof(OpenInsightApplicationProgrammingInterface));
|
||||||
if (appSettings.FileShare is null)
|
if (appSettings.PostTo is null) throw new NullReferenceException(nameof(PostTo));
|
||||||
throw new NullReferenceException(nameof(FileShare));
|
if (appSettings.PostToEvery is null) throw new NullReferenceException(nameof(PostToEvery));
|
||||||
if (appSettings.IsDevelopment is null)
|
if (appSettings.RootPassword is null) throw new NullReferenceException(nameof(RootPassword));
|
||||||
throw new NullReferenceException(nameof(IsDevelopment));
|
if (appSettings.SerialPortName is null) throw new NullReferenceException(nameof(SerialPortName));
|
||||||
if (appSettings.IsStaging is null)
|
if (appSettings.ShareToEvery is null) throw new NullReferenceException(nameof(ShareToEvery));
|
||||||
throw new NullReferenceException(nameof(IsStaging));
|
if (appSettings.ToolClass is null) throw new NullReferenceException(nameof(ToolClass));
|
||||||
if (appSettings.LinuxDevicePath is null)
|
if (appSettings.URLs is null) throw new NullReferenceException(nameof(URLs));
|
||||||
throw new NullReferenceException(nameof(LinuxDevicePath));
|
if (appSettings.WorkingDirectoryName is null) throw new NullReferenceException(nameof(WorkingDirectoryName));
|
||||||
if (appSettings.MockRoot is null)
|
if (appSettings.WriteToSerialEvery is null) throw new NullReferenceException(nameof(WriteToSerialEvery));
|
||||||
throw new NullReferenceException(nameof(MockRoot));
|
|
||||||
if (appSettings.MonAResource is null)
|
|
||||||
throw new NullReferenceException(nameof(MonAResource));
|
|
||||||
if (appSettings.MonASite is null)
|
|
||||||
throw new NullReferenceException(nameof(MonASite));
|
|
||||||
if (appSettings.NotifyMinimum is null)
|
|
||||||
throw new NullReferenceException(nameof(NotifyMinimum));
|
|
||||||
if (appSettings.OpenInsightApplicationProgrammingInterface is null)
|
|
||||||
throw new NullReferenceException(nameof(OpenInsightApplicationProgrammingInterface));
|
|
||||||
if (appSettings.PostTo is null)
|
|
||||||
throw new NullReferenceException(nameof(PostTo));
|
|
||||||
if (appSettings.PostToEvery is null)
|
|
||||||
throw new NullReferenceException(nameof(PostToEvery));
|
|
||||||
if (appSettings.RootPassword is null)
|
|
||||||
throw new NullReferenceException(nameof(RootPassword));
|
|
||||||
if (appSettings.SerialPortName is null)
|
|
||||||
throw new NullReferenceException(nameof(SerialPortName));
|
|
||||||
if (appSettings.ShareToEvery is null)
|
|
||||||
throw new NullReferenceException(nameof(ShareToEvery));
|
|
||||||
if (appSettings.ToolClass is null)
|
|
||||||
throw new NullReferenceException(nameof(ToolClass));
|
|
||||||
if (appSettings.URLs is null)
|
|
||||||
throw new NullReferenceException(nameof(URLs));
|
|
||||||
if (appSettings.WorkingDirectoryName is null)
|
|
||||||
throw new NullReferenceException(nameof(WorkingDirectoryName));
|
|
||||||
if (appSettings.WriteToSerialEvery is null)
|
|
||||||
throw new NullReferenceException(nameof(WriteToSerialEvery));
|
|
||||||
result = new(
|
result = new(
|
||||||
appSettings.BuildNumber,
|
appSettings.BuildNumber,
|
||||||
appSettings.BuildSourceVersion,
|
appSettings.BuildSourceVersion,
|
||||||
@ -131,7 +118,10 @@ public class AppSettings
|
|||||||
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
|
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
|
||||||
{
|
{
|
||||||
Models.AppSettings result;
|
Models.AppSettings result;
|
||||||
|
#pragma warning disable IL3050, IL2026
|
||||||
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
|
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
|
||||||
|
#pragma warning restore IL3050, IL2026
|
||||||
|
PreVerify(configurationRoot, appSettings);
|
||||||
result = Get(appSettings);
|
result = Get(appSettings);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace Barcode.Host.Server.Pages;
|
namespace Barcode.Host.Server.Pages;
|
||||||
|
|
||||||
@ -19,5 +19,4 @@ public class ErrorModel : PageModel
|
|||||||
|
|
||||||
public void OnGet() =>
|
public void OnGet() =>
|
||||||
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
|
RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
|
||||||
}
|
}
|
||||||
|
|
@ -15,4 +15,4 @@ public class NotificationModel : PageModel
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,50 +2,21 @@
|
|||||||
using Barcode.Host.Server.Hubs;
|
using Barcode.Host.Server.Hubs;
|
||||||
using Barcode.Host.Server.Models;
|
using Barcode.Host.Server.Models;
|
||||||
using Barcode.Host.Server.Services;
|
using Barcode.Host.Server.Services;
|
||||||
using Barcode.Host.Shared.Models;
|
|
||||||
using Barcode.Host.Shared.Models.Stateless;
|
using Barcode.Host.Shared.Models.Stateless;
|
||||||
using Serilog;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
namespace Barcode.Host.Server;
|
namespace Barcode.Host.Server;
|
||||||
|
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
|
|
||||||
private static (string, WebApplicationOptions) Get(string[] args)
|
|
||||||
{
|
|
||||||
Assembly assembly = Assembly.GetExecutingAssembly();
|
|
||||||
string? assemblyName = assembly.GetName()?.Name;
|
|
||||||
if (string.IsNullOrEmpty(assemblyName))
|
|
||||||
throw new Exception();
|
|
||||||
string baseAssemblyName = assemblyName.Split('.')[0];
|
|
||||||
string webRootPath = Path.Combine(AppContext.BaseDirectory.Split(baseAssemblyName)[0], baseAssemblyName, "wwwroot");
|
|
||||||
if (!Directory.Exists(webRootPath))
|
|
||||||
webRootPath = string.Empty;
|
|
||||||
WebApplicationOptions webApplicationOptions = new()
|
|
||||||
{
|
|
||||||
Args = args,
|
|
||||||
ContentRootPath = AppContext.BaseDirectory,
|
|
||||||
WebRootPath = webRootPath
|
|
||||||
};
|
|
||||||
return new(assemblyName, webApplicationOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
LoggerConfiguration loggerConfiguration = new();
|
ILogger<Program>? logger = null;
|
||||||
(string assemblyName, _) = Get(args);
|
|
||||||
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
|
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
|
||||||
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
|
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
|
||||||
AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
|
AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
|
||||||
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
|
if (string.IsNullOrEmpty(appSettings.Company))
|
||||||
throw new Exception("Working directory name must have a value!");
|
throw new Exception("Company name must have a value!");
|
||||||
string workingDirectory = IWorkingDirectory.GetWorkingDirectory(assemblyName, appSettings.WorkingDirectoryName);
|
|
||||||
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
|
|
||||||
_ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, webApplicationBuilder.Configuration);
|
|
||||||
_ = SerilogHostBuilderExtensions.UseSerilog(webApplicationBuilder.Host);
|
|
||||||
Log.Logger = loggerConfiguration.CreateLogger();
|
|
||||||
Serilog.ILogger log = Log.ForContext<Program>();
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (appSettings.IsStaging && appSettings.IsDevelopment)
|
if (appSettings.IsStaging && appSettings.IsDevelopment)
|
||||||
@ -68,6 +39,7 @@ public class Program
|
|||||||
_ = webApplicationBuilder.Services.AddHostedService<TimedHostedService>();
|
_ = webApplicationBuilder.Services.AddHostedService<TimedHostedService>();
|
||||||
_ = webApplicationBuilder.Services.AddSwaggerGen();
|
_ = webApplicationBuilder.Services.AddSwaggerGen();
|
||||||
WebApplication webApplication = webApplicationBuilder.Build();
|
WebApplication webApplication = webApplicationBuilder.Build();
|
||||||
|
logger = webApplication.Services.GetRequiredService<ILogger<Program>>();
|
||||||
if (appSettings.IsDevelopment)
|
if (appSettings.IsDevelopment)
|
||||||
{
|
{
|
||||||
_ = webApplication.UseSwagger();
|
_ = webApplication.UseSwagger();
|
||||||
@ -79,25 +51,23 @@ public class Program
|
|||||||
_ = webApplication.UseExceptionHandler("/Error");
|
_ = webApplication.UseExceptionHandler("/Error");
|
||||||
_ = webApplication.UseHsts();
|
_ = webApplication.UseHsts();
|
||||||
}
|
}
|
||||||
_ = webApplication.Lifetime.ApplicationStopped.Register(Log.CloseAndFlush);
|
|
||||||
_ = webApplication.UseStaticFiles();
|
_ = webApplication.UseStaticFiles();
|
||||||
_ = webApplication.UseRouting();
|
_ = webApplication.UseRouting();
|
||||||
_ = webApplication.UseAuthorization();
|
_ = webApplication.UseAuthorization();
|
||||||
_ = webApplication.MapControllers();
|
_ = webApplication.MapControllers();
|
||||||
_ = webApplication.MapRazorPages();
|
_ = webApplication.MapRazorPages();
|
||||||
_ = webApplication.MapHub<NotificationHub>($"/{nameof(NotificationHub)}");
|
_ = webApplication.MapHub<NotificationHub>($"/{nameof(NotificationHub)}");
|
||||||
log.Information("Starting Web Application");
|
logger.LogInformation("Starting Web Application");
|
||||||
|
logger.LogCritical("{Company}", appSettings.Company);
|
||||||
webApplication.Run();
|
webApplication.Run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
log.Fatal(ex, "Host terminated unexpectedly");
|
try
|
||||||
return 1;
|
{ logger?.LogCritical(ex, "Host terminated unexpectedly"); }
|
||||||
}
|
catch (Exception) { }
|
||||||
finally
|
throw;
|
||||||
{
|
|
||||||
Log.CloseAndFlush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"ExpectedScanLengthA": 6,
|
|
||||||
"ExpectedScanLengthB": 9,
|
|
||||||
"Logging": {
|
|
||||||
"LogLevel": {
|
|
||||||
"Log4netProvider": "Debug"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"IsDevelopment": true,
|
|
||||||
"Serilog": {
|
|
||||||
"MinimumLevel": "Debug"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
{
|
|
||||||
"BuildNumber": "1",
|
|
||||||
"BuildSourceVersion": "1234567",
|
|
||||||
"Company": "Infineon Technologies Americas Corp.",
|
|
||||||
"ClearLastScanServiceAfter": 250,
|
|
||||||
"DeviceNameEndsWith": "Symbol Bar Code Scanner",
|
|
||||||
"EquipmentName": "",
|
|
||||||
"ExpectedScanLengthA": 8,
|
|
||||||
"ExpectedScanLengthB": 14,
|
|
||||||
"ExpectedScanLengthBExample": "1TO172125.1.11",
|
|
||||||
"FileShare": "",
|
|
||||||
"LinuxDevicePath": "/proc/bus/input/devices",
|
|
||||||
"Logging": {
|
|
||||||
"LogLevel": {
|
|
||||||
"Default": "Information",
|
|
||||||
"Microsoft": "Warning",
|
|
||||||
"Log4netProvider": "Information",
|
|
||||||
"Microsoft.Hosting.Lifetime": "Information"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"IsDevelopment": false,
|
|
||||||
"IsStaging": false,
|
|
||||||
"NotifyMinimum": 3,
|
|
||||||
"MockRoot": "",
|
|
||||||
"MonAResource": "OI_Metrology_Viewer_EC",
|
|
||||||
"MonASite": "auc",
|
|
||||||
"OpenInsightApplicationProgrammingInterface": "https://oi-prod-ec-api.mes.infineon.com/api/oiWizard",
|
|
||||||
"PostTo": "",
|
|
||||||
"PostToEvery": 1000,
|
|
||||||
"SerialPortName": "/dev/ttyUSB0",
|
|
||||||
"Serilog": {
|
|
||||||
"Using": [
|
|
||||||
"Serilog.Sinks.Console",
|
|
||||||
"Serilog.Sinks.File"
|
|
||||||
],
|
|
||||||
"MinimumLevel": "Information",
|
|
||||||
"WriteTo": [
|
|
||||||
{
|
|
||||||
"Name": "Debug",
|
|
||||||
"Args": {
|
|
||||||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "Console",
|
|
||||||
"Args": {
|
|
||||||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "File",
|
|
||||||
"Args": {
|
|
||||||
"path": "%workingDirectory% - Log/log-.txt",
|
|
||||||
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}",
|
|
||||||
"rollingInterval": "Hour"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"Enrich": [
|
|
||||||
"FromLogContext",
|
|
||||||
"WithMachineName",
|
|
||||||
"WithThreadId"
|
|
||||||
],
|
|
||||||
"Properties": {
|
|
||||||
"Application": "Sample"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ShareToEvery": 1000,
|
|
||||||
"RootPassword": "",
|
|
||||||
"ToolClass": "FTIR",
|
|
||||||
"URLs": "http://localhost:5003;",
|
|
||||||
"WorkingDirectoryName": "IFXApps",
|
|
||||||
"WriteToSerialEvery": 750
|
|
||||||
}
|
|
@ -3,7 +3,7 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true</IsWindows>
|
<IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true</IsWindows>
|
||||||
@ -20,10 +20,10 @@
|
|||||||
<DefineConstants>Linux</DefineConstants>
|
<DefineConstants>Linux</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
<PackageReference Include="System.Text.Json" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
58
azure-pipelines-server.yml
Normal file
58
azure-pipelines-server.yml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- red-hat
|
||||||
|
paths:
|
||||||
|
include:
|
||||||
|
- "Server/*"
|
||||||
|
- "Shared/*"
|
||||||
|
- "Server.Tests/*"
|
||||||
|
exclude:
|
||||||
|
- ".vscode/*"
|
||||||
|
- "JavaScript/*"
|
||||||
|
- "SignalRChat/*"
|
||||||
|
- "**/*.yml"
|
||||||
|
|
||||||
|
variables:
|
||||||
|
BuildConfiguration: "Release"
|
||||||
|
ASPNETCORE_ENVIRONMENT: "Production"
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: auclv0558
|
||||||
|
displayName: auclv0558
|
||||||
|
pool:
|
||||||
|
name: open-insight-metrology-viewer
|
||||||
|
demands: barcode-host-auclv0558
|
||||||
|
jobs:
|
||||||
|
- job: auclv0558
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
echo $(Build.BuildId)
|
||||||
|
echo $(Build.Reason)
|
||||||
|
echo $(Build.Repository.Id)
|
||||||
|
echo $(Build.Repository.Name)
|
||||||
|
echo $(Build.SourceVersion)
|
||||||
|
displayName: "Echo Check"
|
||||||
|
|
||||||
|
- script: "dotnet nuget locals all --clear"
|
||||||
|
displayName: "Nuget Clear"
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
dotnet user-secrets init
|
||||||
|
dotnet user-secrets set "BuildNumber" "$(Build.BuildId)"
|
||||||
|
dotnet user-secrets set "BuildSourceVersion" "$(Build.SourceVersion)"
|
||||||
|
dotnet user-secrets list
|
||||||
|
workingDirectory: Server
|
||||||
|
displayName: "Safe storage of app secrets - Server"
|
||||||
|
|
||||||
|
- script: "dotnet build --configuration $(BuildConfiguration) --source https://eaf-prod.mes.infineon.com/v3/index.json"
|
||||||
|
workingDirectory: Server
|
||||||
|
displayName: "Core Build - Server"
|
||||||
|
|
||||||
|
- script: "dotnet publish --configuration $(BuildConfiguration) --output ~/Barcode-Host-$(Build.SourceVersion)-$(Build.BuildId)-$(BuildConfiguration)/Server"
|
||||||
|
workingDirectory: Server
|
||||||
|
displayName: "Core Publish - Server"
|
||||||
|
|
||||||
|
- script: "echo ln -s /home/$USER/Barcode-Host-$(Build.SourceVersion)-$(Build.BuildId)-$(BuildConfiguration)/Server /var/www/Barcode-Host/Server"
|
||||||
|
displayName: "Echo Symbolic Link Command"
|
Loading…
x
Reference in New Issue
Block a user