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/Hubs/ChatHub.cs
|
||||
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]": {
|
||||
"editor.wordWrap": "off"
|
||||
},
|
||||
"cSpell.enabled": false,
|
||||
"thunder-client.saveToWorkspace": true,
|
||||
"thunder-client.workspaceRelativePath": ".vscode",
|
||||
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/*",
|
||||
"[markdown]": {
|
||||
"editor.wordWrap": "off"
|
||||
},
|
||||
"files.exclude": {
|
||||
"**/node_modules": true
|
||||
},
|
||||
"files.watcherExclude": {
|
||||
"**/node_modules": true
|
||||
}
|
||||
"[markdown]": {
|
||||
"editor.wordWrap": "off"
|
||||
},
|
||||
"coverage-gutters.coverageBaseDir": "../.vscode/TestResults/*",
|
||||
"cSpell.enabled": false,
|
||||
"files.eol": "\n",
|
||||
"files.exclude": {
|
||||
"**/node_modules": true
|
||||
},
|
||||
"files.watcherExclude": {
|
||||
"**/node_modules": true
|
||||
},
|
||||
"thunder-client.saveToWorkspace": true,
|
||||
"thunder-client.workspaceRelativePath": ".vscode"
|
||||
}
|
142
.vscode/tasks.json
vendored
142
.vscode/tasks.json
vendored
@ -1,5 +1,4 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"options": {
|
||||
"env": {
|
||||
"serverUserSecretsId": "02dce973-df1d-4325-962a-ed549af8d4c5"
|
||||
@ -7,21 +6,18 @@
|
||||
},
|
||||
"tasks": [
|
||||
{
|
||||
"label": "userSecretsInit",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"user-secrets",
|
||||
"-p",
|
||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||
"init"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "userSecretsInit",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "userSecretsSet",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"user-secrets",
|
||||
"-p",
|
||||
@ -30,12 +26,12 @@
|
||||
"asdf",
|
||||
"123"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "userSecretsSet",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "userSecretsMkLink",
|
||||
"command": "cmd",
|
||||
"type": "shell",
|
||||
"args": [
|
||||
"/c",
|
||||
"mklink",
|
||||
@ -43,47 +39,47 @@
|
||||
".vscode\\UserSecrets",
|
||||
"${userHome}\\AppData\\Roaming\\Microsoft\\UserSecrets\\$env:serverUserSecretsId"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "cmd",
|
||||
"label": "userSecretsMkLink",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "buildServer",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"build",
|
||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "buildServer",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "publishServer",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"publish",
|
||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "publishServer",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "testDebug",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"test",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "testDebug",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "testRelease",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"test",
|
||||
"/property:GenerateFullPaths=true",
|
||||
@ -91,12 +87,12 @@
|
||||
"-c",
|
||||
"Release"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "testRelease",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "format",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"format",
|
||||
"--report",
|
||||
@ -106,24 +102,24 @@
|
||||
"--severity",
|
||||
"warn"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "format",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "old-watch",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"watch",
|
||||
"run",
|
||||
"--project",
|
||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"command": "dotnet",
|
||||
"label": "old-watch",
|
||||
"problemMatcher": "$msCompile",
|
||||
"type": "process"
|
||||
},
|
||||
{
|
||||
"label": "watchServer",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"watch",
|
||||
"--launch-profile",
|
||||
@ -133,68 +129,72 @@
|
||||
"${workspaceFolder}/Server/Barcode.Host.Server.csproj",
|
||||
"--verbose"
|
||||
],
|
||||
"isBackground": true,
|
||||
"command": "dotnet",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"isBackground": true,
|
||||
"label": "watchServer",
|
||||
"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": {
|
||||
"activeOnStart": true,
|
||||
"beginsPattern": "^.*Shutdown requested.*",
|
||||
"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 }",
|
||||
"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 }",
|
||||
"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",
|
||||
"type": "shell",
|
||||
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe .kanbn",
|
||||
"problemMatcher": []
|
||||
"problemMatcher": [],
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"type": "shell",
|
||||
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s M .kanbn/tasks",
|
||||
"problemMatcher": []
|
||||
"problemMatcher": [],
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "Kanbn Console",
|
||||
"type": "npm",
|
||||
"problemMatcher": [],
|
||||
"script": "kanbn.board",
|
||||
"problemMatcher": []
|
||||
"type": "npm"
|
||||
},
|
||||
{
|
||||
"label": "Kanbn Write Boad",
|
||||
"type": "shell",
|
||||
"command": "& kanbn board -j | L:/Git/kanbn2md/kanbn2md.exe >.kanbn/board.md",
|
||||
"problemMatcher": []
|
||||
"label": "Kanbn Write Boad",
|
||||
"problemMatcher": [],
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"label": "Kanbn Write json",
|
||||
"type": "npm",
|
||||
"problemMatcher": [],
|
||||
"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>
|
||||
<Nullable>enable</Nullable>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<UserSecretsId>02dce973-df1d-4325-962a-ed549af8d4c5</UserSecretsId>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<VSTestLogger>trx</VSTestLogger>
|
||||
@ -26,29 +27,17 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.1" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.0.4" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.0.4" />
|
||||
<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" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.2.0" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.2.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
||||
<ProjectReference Include="..\Server\Barcode.Host.Server.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\Server\appsettings.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="..\Server\appsettings.Development.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.Models;
|
||||
using Barcode.Host.Shared.Models.Stateless;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Serilog;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Barcode.Host.Tests;
|
||||
|
||||
@ -10,20 +10,17 @@ namespace Barcode.Host.Tests;
|
||||
public class UnitTestFileService
|
||||
{
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
private static ILogger _Logger;
|
||||
private static TestContext _TestContext;
|
||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
||||
|
||||
#pragma warning restore
|
||||
private static ILogger? _Logger;
|
||||
private static TestContext? _TestContext;
|
||||
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitAsync(TestContext testContext)
|
||||
{
|
||||
_TestContext = testContext;
|
||||
_Logger = Log.ForContext<UnitTestFileService>();
|
||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
@ -39,13 +36,15 @@ public class UnitTestFileService
|
||||
[TestMethod]
|
||||
public void GetWrite()
|
||||
{
|
||||
_Logger.Information("Starting Web Application");
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
Server.Models.AppSettings appSettings = serviceProvider.GetRequiredService<Server.Models.AppSettings>();
|
||||
IFileService fileService = serviceProvider.GetRequiredService<IFileService>();
|
||||
Notification notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
||||
_Logger?.LogInformation("Starting Web Application");
|
||||
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||
Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>();
|
||||
IFileService? fileService = serviceProvider?.GetRequiredService<IFileService>();
|
||||
Assert.IsNotNull(appSettings);
|
||||
Assert.IsNotNull(fileService);
|
||||
Notification? notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
||||
fileService.Write(appSettings.EquipmentName, appSettings.FileShare, calendar: null, notification);
|
||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.DataModels;
|
||||
using Barcode.Host.Shared.Models.Stateless;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Serilog;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Barcode.Host.Tests;
|
||||
|
||||
@ -10,21 +10,18 @@ namespace Barcode.Host.Tests;
|
||||
public class UnitTestLastScanController
|
||||
{
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
private static ILogger _Logger;
|
||||
private static string _ControllerName;
|
||||
private static TestContext _TestContext;
|
||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
||||
|
||||
#pragma warning restore
|
||||
private static ILogger? _Logger;
|
||||
private static string? _ControllerName;
|
||||
private static TestContext? _TestContext;
|
||||
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitAsync(TestContext testContext)
|
||||
{
|
||||
_TestContext = testContext;
|
||||
_Logger = Log.ForContext<UnitTestLastScanController>();
|
||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||
_ControllerName = nameof(Server.ApiControllers.LastScanController)[..^10];
|
||||
}
|
||||
|
||||
@ -38,9 +35,9 @@ public class UnitTestLastScanController
|
||||
[TestMethod]
|
||||
public void TestControllerName()
|
||||
{
|
||||
_Logger.Information("Starting Web Application");
|
||||
_Logger?.LogInformation("Starting Web Application");
|
||||
Assert.AreEqual(ILastScanController<string>.GetRouteName(), _ControllerName);
|
||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
@ -50,12 +47,13 @@ public class UnitTestLastScanController
|
||||
[TestMethod]
|
||||
public void GetScan()
|
||||
{
|
||||
_Logger.Information("Starting Web Application");
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
ILastScanService lastScanService = serviceProvider.GetRequiredService<ILastScanService>();
|
||||
_Logger?.LogInformation("Starting Web Application");
|
||||
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||
ILastScanService? lastScanService = serviceProvider?.GetRequiredService<ILastScanService>();
|
||||
Assert.IsNotNull(lastScanService);
|
||||
Result<string> result = lastScanService.GetScan();
|
||||
Assert.IsNotNull(result?.Results);
|
||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
@ -65,13 +63,14 @@ public class UnitTestLastScanController
|
||||
[TestMethod]
|
||||
public async Task GetScanApi()
|
||||
{
|
||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||
_Logger.Information("Starting Web Application");
|
||||
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
|
||||
_Logger?.LogInformation("Starting Web Application");
|
||||
Assert.IsNotNull(httpClient);
|
||||
string? json = await httpClient.GetStringAsync($"api/{_ControllerName}/O171927.1.37/");
|
||||
File.WriteAllText(Path.Combine(AppContext.BaseDirectory, $"{_ControllerName}-{nameof(GetScan)}.json"), json);
|
||||
Result<string>? result = System.Text.Json.JsonSerializer.Deserialize<Result<string>>(json);
|
||||
Assert.IsNotNull(result?.Results);
|
||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ using Barcode.Host.Shared.Models;
|
||||
using Barcode.Host.Shared.Models.Stateless;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Serilog;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Barcode.Host.Tests;
|
||||
|
||||
@ -10,20 +10,17 @@ namespace Barcode.Host.Tests;
|
||||
public class UnitTestPostService
|
||||
{
|
||||
|
||||
#pragma warning disable CS8618
|
||||
|
||||
private static ILogger _Logger;
|
||||
private static TestContext _TestContext;
|
||||
private static WebApplicationFactory<Server.Program> _WebApplicationFactory;
|
||||
|
||||
#pragma warning restore
|
||||
private static ILogger? _Logger;
|
||||
private static TestContext? _TestContext;
|
||||
private static WebApplicationFactory<Server.Program>? _WebApplicationFactory;
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitAsync(TestContext testContext)
|
||||
{
|
||||
_TestContext = testContext;
|
||||
_Logger = Log.ForContext<UnitTestPostService>();
|
||||
_WebApplicationFactory = new WebApplicationFactory<Server.Program>();
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
_Logger = serviceProvider.GetRequiredService<ILogger<Server.Program>>();
|
||||
}
|
||||
|
||||
private static void NonThrowTryCatch()
|
||||
@ -39,14 +36,18 @@ public class UnitTestPostService
|
||||
[TestMethod]
|
||||
public void GetPostTo()
|
||||
{
|
||||
_Logger.Information("Starting Web Application");
|
||||
HttpClient httpClient = _WebApplicationFactory.CreateClient();
|
||||
IServiceProvider serviceProvider = _WebApplicationFactory.Services.CreateScope().ServiceProvider;
|
||||
Server.Models.AppSettings appSettings = serviceProvider.GetRequiredService<Server.Models.AppSettings>();
|
||||
IPostService postService = serviceProvider.GetRequiredService<IPostService>();
|
||||
Notification notification = new(KeyPressEvent: null, "Test", appSettings.ToolClass, null);
|
||||
_Logger?.LogInformation("Starting Web Application");
|
||||
HttpClient? httpClient = _WebApplicationFactory?.CreateClient();
|
||||
IServiceProvider? serviceProvider = _WebApplicationFactory?.Services.CreateScope().ServiceProvider;
|
||||
Server.Models.AppSettings? appSettings = serviceProvider?.GetRequiredService<Server.Models.AppSettings>();
|
||||
IPostService? postService = serviceProvider?.GetRequiredService<IPostService>();
|
||||
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);
|
||||
_Logger.Information($"{_TestContext?.TestName} completed");
|
||||
_Logger?.LogInformation("{testName} completed", _TestContext?.TestName);
|
||||
NonThrowTryCatch();
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<UserSecretsId>02dce973-df1d-4325-962a-ed549af8d4c5</UserSecretsId>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
@ -22,27 +22,17 @@
|
||||
<DefineConstants>Linux</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CliWrap" Version="3.6.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="7.0.5" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
||||
<PackageReference Include="Serilog.Settings.Configuration" Version="7.0.0" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="7.0.0" />
|
||||
<PackageReference Include="Serilog" Version="2.12.0" />
|
||||
<PackageReference Include="CliWrap" Version="3.6.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.1" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Shared\Barcode.Host.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="appsettings.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="appsettings.Development.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -5,7 +5,6 @@ using Barcode.Host.Shared.KeyboardMouse;
|
||||
using Barcode.Host.Shared.Models;
|
||||
using Barcode.Host.Shared.Models.Stateless;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Serilog.Context;
|
||||
using System.Globalization;
|
||||
|
||||
namespace Barcode.Host.Server.HostedService;
|
||||
@ -65,12 +64,9 @@ public class TimedHostedService : IHostedService, IAggregateInputReader, IDispos
|
||||
|
||||
public Task StartAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
string? methodName = IMethodName.GetActualAsyncMethodName();
|
||||
using (LogContext.PushProperty("MethodName", methodName))
|
||||
{
|
||||
_Logger.LogInformation($"Timed Hosted Service: {_AppSettings.BuildSourceVersion}:{Environment.ProcessId} running.");
|
||||
if (!string.IsNullOrEmpty(_AppSettings.SerialPortName))
|
||||
_SerialService.Open();
|
||||
_Logger.LogInformation("Timed Hosted Service: {BuildSourceVersion}:{ProcessId} running.", _AppSettings.BuildSourceVersion, Environment.ProcessId);
|
||||
if (!string.IsNullOrEmpty(_AppSettings.SerialPortName))
|
||||
_SerialService.Open();
|
||||
#if Linux
|
||||
if (!_LinuxGroupManager.IsInInputGroup().WaitAsync(stoppingToken).Result)
|
||||
{
|
||||
@ -80,32 +76,29 @@ public class TimedHostedService : IHostedService, IAggregateInputReader, IDispos
|
||||
_ = _LinuxGroupManager.RebootSystem(_AppSettings.RootPassword);
|
||||
}
|
||||
#endif
|
||||
List<(EventCode, char)> collection = _LastScanService.IncludeEventCodes();
|
||||
foreach ((EventCode eventCode, char @char) in collection)
|
||||
_CharToEventCodes.Add(eventCode, @char);
|
||||
int dueTime = 0;
|
||||
foreach ((string _, Timer timer) in _Timers)
|
||||
{
|
||||
dueTime += 300;
|
||||
_ = timer.Change(dueTime, Timeout.Infinite);
|
||||
}
|
||||
List<(EventCode, char)> collection = _LastScanService.IncludeEventCodes();
|
||||
foreach ((EventCode eventCode, char @char) in collection)
|
||||
_CharToEventCodes.Add(eventCode, @char);
|
||||
int dueTime = 0;
|
||||
foreach ((string _, Timer timer) in _Timers)
|
||||
{
|
||||
dueTime += 300;
|
||||
_ = timer.Change(dueTime, Timeout.Infinite);
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task StopAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
string? methodName = IMethodName.GetActualAsyncMethodName();
|
||||
using (LogContext.PushProperty("MethodName", methodName))
|
||||
_Logger.LogInformation("Timed Hosted Service: {BuildSourceVersion}:{ProcessId} is stopping.", _AppSettings.BuildSourceVersion, Environment.ProcessId);
|
||||
for (short i = 0; i < short.MaxValue; i++)
|
||||
{
|
||||
_Logger.LogInformation($"Timed Hosted Service: {_AppSettings.BuildSourceVersion}:{Environment.ProcessId} is stopping.");
|
||||
for (short i = 0; i < short.MaxValue; i++)
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
if (_ExecutionCount == 0)
|
||||
break;
|
||||
}
|
||||
Thread.Sleep(500);
|
||||
if (_ExecutionCount == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Barcode.Host.Server.Models;
|
||||
|
||||
@ -32,8 +33,14 @@ public record AppSettings(string BuildNumber,
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
||||
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
|
||||
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;
|
||||
|
||||
namespace Barcode.Host.Server.Models.Binder;
|
||||
@ -6,34 +5,32 @@ namespace Barcode.Host.Server.Models.Binder;
|
||||
public class AppSettings
|
||||
{
|
||||
|
||||
[Display(Name = "Build Number"), Required] public string? BuildNumber { get; set; }
|
||||
[Display(Name = "Build Source Version"), Required] public string? BuildSourceVersion { get; set; }
|
||||
[Display(Name = "Last Scan Service Clear After"), Required] public int? ClearLastScanServiceAfter { get; set; }
|
||||
[Display(Name = "Company"), Required] public string? Company { get; set; }
|
||||
[Display(Name = "Device Name Ends With"), Required] public string? DeviceNameEndsWith { get; set; }
|
||||
[Display(Name = "Equipment Name"), Required] public string? EquipmentName { get; set; }
|
||||
[Display(Name = "ExpectedScanLengthA"), Required] public int? ExpectedScanLengthA { get; set; }
|
||||
[Display(Name = "ExpectedScanLengthB"), Required] public int? ExpectedScanLengthB { get; set; }
|
||||
[Display(Name = "File Share"), Required] public string? FileShare { get; set; }
|
||||
[Display(Name = "Is Development"), Required] public bool? IsDevelopment { get; set; }
|
||||
[Display(Name = "Is Staging"), Required] public bool? IsStaging { get; set; }
|
||||
[Display(Name = "Linux Device Path"), Required] public string? LinuxDevicePath { get; set; }
|
||||
[Display(Name = "Mock Root"), Required] public string? MockRoot { get; set; }
|
||||
[Display(Name = "MonA Resource"), Required] public string? MonAResource { get; set; }
|
||||
[Display(Name = "MonA Site"), Required] public string? MonASite { get; set; }
|
||||
[Display(Name = "Notify Minimum"), Required] public int? NotifyMinimum { get; set; }
|
||||
[Display(Name = "OpenInsight Application Programming Interface"), Required] public string? OpenInsightApplicationProgrammingInterface { get; set; }
|
||||
[Display(Name = "PostTo"), Required] public string? PostTo { get; set; }
|
||||
[Display(Name = "Post to Every"), Required] public int? PostToEvery { get; set; }
|
||||
[Display(Name = "RootPassword"), Required] public string? RootPassword { get; set; }
|
||||
[Display(Name = "Serial Port Name"), Required] public string? SerialPortName { get; set; }
|
||||
[Display(Name = "Share to Every"), Required] public int? ShareToEvery { get; set; }
|
||||
[Display(Name = "ToolClass"), Required] public string? ToolClass { get; set; }
|
||||
[Display(Name = "URLs"), Required] public string? URLs { get; set; }
|
||||
[Display(Name = "Working Directory Name"), Required] public string? WorkingDirectoryName { get; set; }
|
||||
[Display(Name = "WriteToSerialEvery"), Required] public int? WriteToSerialEvery { get; set; }
|
||||
|
||||
#nullable restore
|
||||
public string? BuildNumber { get; set; }
|
||||
public string? BuildSourceVersion { get; set; }
|
||||
public int? ClearLastScanServiceAfter { get; set; }
|
||||
public string? Company { get; set; }
|
||||
public string? DeviceNameEndsWith { get; set; }
|
||||
public string? EquipmentName { get; set; }
|
||||
public int? ExpectedScanLengthA { get; set; }
|
||||
public int? ExpectedScanLengthB { get; set; }
|
||||
public string? FileShare { get; set; }
|
||||
public bool? IsDevelopment { get; set; }
|
||||
public bool? IsStaging { get; set; }
|
||||
public string? LinuxDevicePath { get; set; }
|
||||
public string? MockRoot { get; set; }
|
||||
public string? MonAResource { get; set; }
|
||||
public string? MonASite { get; set; }
|
||||
public int? NotifyMinimum { get; set; }
|
||||
public string? OpenInsightApplicationProgrammingInterface { get; set; }
|
||||
public string? PostTo { get; set; }
|
||||
public int? PostToEvery { get; set; }
|
||||
public string? RootPassword { get; set; }
|
||||
public string? SerialPortName { get; set; }
|
||||
public int? ShareToEvery { get; set; }
|
||||
public string? ToolClass { get; set; }
|
||||
public string? URLs { get; set; }
|
||||
public string? WorkingDirectoryName { get; set; }
|
||||
public int? WriteToSerialEvery { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
@ -41,63 +38,53 @@ public class AppSettings
|
||||
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)
|
||||
{
|
||||
Models.AppSettings result;
|
||||
if (appSettings is null)
|
||||
throw new NullReferenceException(nameof(appSettings));
|
||||
if (appSettings.BuildNumber is null)
|
||||
throw new NullReferenceException(nameof(BuildNumber));
|
||||
if (appSettings.BuildSourceVersion is null)
|
||||
throw new NullReferenceException(nameof(BuildSourceVersion));
|
||||
if (appSettings.ClearLastScanServiceAfter is null)
|
||||
throw new NullReferenceException(nameof(ClearLastScanServiceAfter));
|
||||
if (appSettings.Company is null)
|
||||
throw new NullReferenceException(nameof(Company));
|
||||
if (appSettings.DeviceNameEndsWith is null)
|
||||
throw new NullReferenceException(nameof(DeviceNameEndsWith));
|
||||
if (appSettings.EquipmentName is null)
|
||||
throw new NullReferenceException(nameof(EquipmentName));
|
||||
if (appSettings.ExpectedScanLengthA is null)
|
||||
throw new NullReferenceException(nameof(ExpectedScanLengthA));
|
||||
if (appSettings.ExpectedScanLengthB is null)
|
||||
throw new NullReferenceException(nameof(ExpectedScanLengthB));
|
||||
if (appSettings.FileShare is null)
|
||||
throw new NullReferenceException(nameof(FileShare));
|
||||
if (appSettings.IsDevelopment is null)
|
||||
throw new NullReferenceException(nameof(IsDevelopment));
|
||||
if (appSettings.IsStaging is null)
|
||||
throw new NullReferenceException(nameof(IsStaging));
|
||||
if (appSettings.LinuxDevicePath is null)
|
||||
throw new NullReferenceException(nameof(LinuxDevicePath));
|
||||
if (appSettings.MockRoot is null)
|
||||
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));
|
||||
if (appSettings is null) throw new NullReferenceException(nameof(appSettings));
|
||||
if (appSettings.BuildNumber is null) throw new NullReferenceException(nameof(BuildNumber));
|
||||
if (appSettings.BuildSourceVersion is null) throw new NullReferenceException(nameof(BuildSourceVersion));
|
||||
if (appSettings.ClearLastScanServiceAfter is null) throw new NullReferenceException(nameof(ClearLastScanServiceAfter));
|
||||
if (appSettings.Company is null) throw new NullReferenceException(nameof(Company));
|
||||
if (appSettings.DeviceNameEndsWith is null) throw new NullReferenceException(nameof(DeviceNameEndsWith));
|
||||
if (appSettings.EquipmentName is null) throw new NullReferenceException(nameof(EquipmentName));
|
||||
if (appSettings.ExpectedScanLengthA is null) throw new NullReferenceException(nameof(ExpectedScanLengthA));
|
||||
if (appSettings.ExpectedScanLengthB is null) throw new NullReferenceException(nameof(ExpectedScanLengthB));
|
||||
if (appSettings.FileShare is null) throw new NullReferenceException(nameof(FileShare));
|
||||
if (appSettings.IsDevelopment is null) throw new NullReferenceException(nameof(IsDevelopment));
|
||||
if (appSettings.IsStaging is null) throw new NullReferenceException(nameof(IsStaging));
|
||||
if (appSettings.LinuxDevicePath is null) throw new NullReferenceException(nameof(LinuxDevicePath));
|
||||
if (appSettings.MockRoot is null) 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(
|
||||
appSettings.BuildNumber,
|
||||
appSettings.BuildSourceVersion,
|
||||
@ -131,7 +118,10 @@ public class AppSettings
|
||||
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
|
||||
{
|
||||
Models.AppSettings result;
|
||||
#pragma warning disable IL3050, IL2026
|
||||
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
|
||||
#pragma warning restore IL3050, IL2026
|
||||
PreVerify(configurationRoot, appSettings);
|
||||
result = Get(appSettings);
|
||||
return result;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
using System.Diagnostics;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Barcode.Host.Server.Pages;
|
||||
|
||||
@ -19,5 +19,4 @@ public class ErrorModel : PageModel
|
||||
|
||||
public void OnGet() =>
|
||||
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.Models;
|
||||
using Barcode.Host.Server.Services;
|
||||
using Barcode.Host.Shared.Models;
|
||||
using Barcode.Host.Shared.Models.Stateless;
|
||||
using Serilog;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Barcode.Host.Server;
|
||||
|
||||
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)
|
||||
{
|
||||
LoggerConfiguration loggerConfiguration = new();
|
||||
(string assemblyName, _) = Get(args);
|
||||
ILogger<Program>? logger = null;
|
||||
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
|
||||
_ = webApplicationBuilder.Configuration.AddUserSecrets<Program>();
|
||||
AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
|
||||
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
|
||||
throw new Exception("Working directory 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>();
|
||||
if (string.IsNullOrEmpty(appSettings.Company))
|
||||
throw new Exception("Company name must have a value!");
|
||||
try
|
||||
{
|
||||
if (appSettings.IsStaging && appSettings.IsDevelopment)
|
||||
@ -68,6 +39,7 @@ public class Program
|
||||
_ = webApplicationBuilder.Services.AddHostedService<TimedHostedService>();
|
||||
_ = webApplicationBuilder.Services.AddSwaggerGen();
|
||||
WebApplication webApplication = webApplicationBuilder.Build();
|
||||
logger = webApplication.Services.GetRequiredService<ILogger<Program>>();
|
||||
if (appSettings.IsDevelopment)
|
||||
{
|
||||
_ = webApplication.UseSwagger();
|
||||
@ -79,25 +51,23 @@ public class Program
|
||||
_ = webApplication.UseExceptionHandler("/Error");
|
||||
_ = webApplication.UseHsts();
|
||||
}
|
||||
_ = webApplication.Lifetime.ApplicationStopped.Register(Log.CloseAndFlush);
|
||||
_ = webApplication.UseStaticFiles();
|
||||
_ = webApplication.UseRouting();
|
||||
_ = webApplication.UseAuthorization();
|
||||
_ = webApplication.MapControllers();
|
||||
_ = webApplication.MapRazorPages();
|
||||
_ = webApplication.MapHub<NotificationHub>($"/{nameof(NotificationHub)}");
|
||||
log.Information("Starting Web Application");
|
||||
logger.LogInformation("Starting Web Application");
|
||||
logger.LogCritical("{Company}", appSettings.Company);
|
||||
webApplication.Run();
|
||||
return 0;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
log.Fatal(ex, "Host terminated unexpectedly");
|
||||
return 1;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Log.CloseAndFlush();
|
||||
try
|
||||
{ logger?.LogCritical(ex, "Host terminated unexpectedly"); }
|
||||
catch (Exception) { }
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
<Nullable>enable</Nullable>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true</IsWindows>
|
||||
@ -20,10 +20,10 @@
|
||||
<DefineConstants>Linux</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="8.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
</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