Unable to install WyzeHacks on V3 Camera

I have been attempting to install wyze_hacks_0_5_04 on some v3 cameras I received. I installed the <IP_ADDRESS> firmware found within the tools/v3/firmwares folder. I was unable to find init_v3.sh as directed int the directions but I did find v3_init.sh. I ran this and then ran remote_install.sh. There were to voice prompts as seen in v2 of the camera but all seem's to have installed. Unfortunately, after install, I cannot telnet into the camera, and remote storage is not enabled. Any thoughts on what I may be doing wrong?

I have the same issues, here's the steps to reproduce:

WyzeCam v3
firmware <IP_ADDRESS>
Trying to install via command line on chromebook
NFS mount is SMB 1
Run ./remote_install.sh

Output:
Found local config file, including into firmware update archive...
Upgrade/config.inc
Requirement already satisfied: requests in /opt/miniconda3/lib/python3.8/site-packages (2.24.0)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/miniconda3/lib/python3.8/site-packages (from requests) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/miniconda3/lib/python3.8/site-packages (from requests) (1.25.11)
Requirement already satisfied: certifi>=2017.4.17 in /opt/miniconda3/lib/python3.8/site-packages (from requests) (2020.6.20)
Requirement already satisfied: idna<3,>=2.5 in /opt/miniconda3/lib/python3.8/site-packages (from requests) (2.10)
INFO:root:Trying saved credentials from /home/gregairel/.wyze_token.
INFO:root:Checking device, mac=7C78B20C54DD

Device type:      Camera (WYZE_CAKP2JFUS)
Device name:      Camv3test
Firmware version: <IP_ADDRESS>
IP Address:       <IP_ADDRESS>

Pushing firmware to this device? [y/N]:y
INFO:root:Serving firmware file './firmware.bin' as 'http://<IP_ADDRESS>:11808/firmware.bin', md5=46fa9ae2b27081fe386fd2148e8842a4
INFO:root:Checking device, mac=2CAA8EA50415

Device type:      Camera (WYZEC1-JZ)
Device name:       Test
Firmware version: <IP_ADDRESS>
IP Address:       <IP_ADDRESS>

Pushing firmware to this device? [y/N]:

The light turns to purple blinking on the camera after I push the firmware.
The output of the command line just continues to output "......"
I never hear "installation begins"

Sound play not wot on v3 is a known issue. But other than that it should work. Your case it seems the update is not even pushed to camera, you should see some message when it is happening.

I receive a line stating "GET /firmware.bin HTTP/1.1" 200 -". Once this happens the LED on the camera starts flashing purple for a few minutes and then reboots. This is when running v3.init_sh. When running remote_install.sh, I receive the same "GET /firmware.bin HTTP/1.1" 200 -" line but the camera reboots after only a few seconds. I have tried this with two cameras.

I was able to resolve the issue. Today, I attempted the process again a total of 5 times. On the 5th time, I was successful in the install. The only difference was I left the SD card in for the entire process on the 5th attempt. Previously I would remove the CD card after installing the <IP_ADDRESS> firmware. Then once the SD card is removed I would complete the process of running v3_init.sh and remote_install.sh. The fifth time I simply forgot to remove the card and went through the process. It worked. I tried to replicate it on the second camera and I was able to. If I removed the SD card after installing <IP_ADDRESS>, the process would complete and it appeared all worked as it should. But I was not able to telnet into the cameras and it was not saving files remotely. But if I completed the process with the SD card in, and removed it after the process, all seems to work. Not sure if this is something unique to my implementation but all seem good now.

That is interesting. So to clarify:
The hack installation requires the presence of physical sd card, however,
after installation, the hack works without physical sd card. Is that
correct?
Can you reboot the camera and verify if it's still working without sd card?
On Thu, Mar 18, 2021, 12:48 barthohomeautomation @.***>
wrote:

I was able to resolve the issue. Today, I attempted the process again a
total of 5 times. On the 5th time, I was successful in the install. The
only difference was I left the SD card in for the entire process on the 5th
attempt. Previously I would remove the CD card after installing the
<IP_ADDRESS> firmware. Then once the SD card is removed I would complete the
process of running v3_init.sh and remote_install.sh. The fifth time I
simply forgot to remove the card and went through the process. It worked. I
tried to replicate it on the second camera and I was able to. If I removed
the SD card after installing <IP_ADDRESS>, the process would complete and it
appeared all worked as it should. But I was not able to telnet into the
cameras and it was not saving files remotely. But if I completed the
process with the SD card in, and removed it after the process, all seems to
work. Not sure if this is something unique to my implementation but all
seem good now.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-802241190, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWD677L75AOJSN2UPYH3TEJKKJANCNFSM4ZJWTCOQ
.

Yes, that is correct. I was not able to get the hack to install if I removed the SD card after the manual firmware install, but before installing the hack. But if I left the card in for the whole process, and removed the card after the hack install, I was able to telnet and the cameras are recording remotely. I have confirmed they are actually recording as I have viewed the recorded files stored on the remote storage.

I think I know why: can you check if you have a config.inc file on sdcard?
You will need one either on sdcard or at the installer directory.
On Thu, Mar 18, 2021, 13:16 barthohomeautomation @.***>
wrote:

Yes, that is correct. I was not able to get the hack to install if I
removed the SD card after the manual firmware install, but before
installing the hack. But if I left the card in for the whole process, and
removed the card after the hack install, I was able to telnet and the
cameras are recording remotely. I have confirmed they are actually
recording as I have viewed the recorded files stored on the remote storage.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-802258730, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWDZMU6CNZ3TEEUNQLFTTEJNTVANCNFSM4ZJWTCOQ
.

I just checked, there is no config file on the SD card. Just the firmware .bin file along with the files/directories created from the install and few seconds of recording. But there is one in the install directory on the source computer. This is the config I edited for my use case.

I have experienced the unable to install. I ran the remote_install the first time without copying the config file. I hid have telnet. I edited copied and edited the config and redid the install. The second time, I no longer had telnet access and as reported earlier, the firmware update stops and the camera resets after a few seconds. I have tried with an SD card and without. I rolled back to the original firmware, reset the camera. I have run the script dozens of times and occasionally the firmware update process does take several minutes as it should, but I still do not have telnet nor does the SD card show up in the app.

I have experienced the unable to install. I ran the remote_install the first time without copying the config file. I hid have telnet. I edited copied and edited the config and redid the install. The second time, I no longer had telnet access and as reported earlier, the firmware update stops and the camera resets after a few seconds. I have tried with an SD card and without. I rolled back to the original firmware, reset the camera. I have run the script dozens of times and occasionally the firmware update process does take several minutes as it should, but I still do not have telnet nor does the SD card show up in the app.

You may want to create a separate issue to help keep issues organized for the developer.

Looks like the same issue to me.

For those running into issues, I have a recent change pushed to bugfixes branch. This change does nothing but integrates the init process into installation so all you need is running remote install and it should work. Please give it a try: if it doesn't work, please put an sd card in camera while running the installer and paste install.log here.

The install still fails with the yesterdays update. I don't seem to get an install.log file with the 0.5.05
The actual wyze_updater.py was not in the zip file. It looks like the symlink was not followed, so just the link no actual file. I copied wyze_updater.py from the previous version so that may account for the numbering error. The install log below is what I had on the SD card when I pulled it out after running the installer, but the DS card had been in during all my previous install runs with  0.5.04. I copied all the files off and reformatted the SD card. Restarted the camera and inserted the SD card. Re-ran the remote_install script. Pulled the SD card and I did not find the install.log this time. I ran the remote_install script several times but no install.log and no telnet access.
Let me know if I should try something else.
Log output from 0.5.04

echo WyzeHack: Starting wyze hack installer...
WyzeHack: Starting wyze hack installer...
play_sound /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
[ -f /media/mmc/debug/.copyfiles ]
pgrep -f telnetd
set_passwd root::10933:0:99999:7:::
/bin/umount /etc
umount: can't umount /etc: Invalid argument
rm -rf /tmp/etc
cp -r /etc /tmp/
echo root::10933:0:99999:7:::
/bin/mount -o bind /tmp/etc /etc
echo WyzeHack: Enabling telnetd...
WyzeHack: Enabling telnetd...
busybox telnetd
[ -z <IP_ADDRESS> ]
echo WyzeHack: Current Wyze software version is <IP_ADDRESS>
WyzeHack: Current Wyze software version is <IP_ADDRESS>
echo WyzeHack: Installing WyzeHacks version 0.5.04
WyzeHack: Installing WyzeHacks version 0.5.04
[ -f /params/wyze_hack.cfg ]
[ -f /tmp/Upgrade/config.inc ]
[ -f /media/mmc/config.inc ]
[ ! -f /configs/wyze_hack.cfg ]
[ -z V3 ]
echo WyzeHack: Copying wyze hack binary...
WyzeHack: Copying wyze hack binary...
cp /tmp/Upgrade/wyze_hack.sh /configs/wyze_hack.sh
echo WyzeHack: Hooking up boot script...
WyzeHack: Hooking up boot script...
hook_init
grep wyze_hack.sh /etc/init.d/rcS
[ ! -f /configs/wyze_hack.sh ]
[ ! -f /configs/wyze_hack.cfg ]
local SYSTEM_DIR=/system
[ ! -L /system/init/app_init.sh ]
echo WyzeHack: backing up app_init.sh ...
WyzeHack: backing up app_init.sh ...
cp /system/init/app_init.sh /system/init/app_init_orig.sh
cp: can't create '/system/init/app_init_orig.sh': Read-only file system
readlink /system/init/app_init.sh
local APP_INIT=
[  != /configs/wyze_hack.sh ]
echo WyzeHack: setting up symlink ...
WyzeHack: setting up symlink ...
ln -s -f /configs/wyze_hack.sh /system/init/app_init.sh
ln: /system/init/app_init.sh: File exists
ls -la /system/init
drwxrwxr-x    2 1000     1000           104 Feb  3 01:00 .
drwxrwxr-x    8 1000     1000            87 Feb  3 01:00 ..
-rwxrwxr-x    1 1000     1000          2207 Feb  2 22:05 app_init.sh
-rwxrwxr-x    1 1000     1000           148 Dec 30 06:07 factory.sh
-rw-r--r--    1 1000     1000            11 Feb  3 01:00 firmware_build_epoch_time.txt
-rwxrwxr-x    1 1000     1000           574 Nov 11 03:57 wifi.sh
return 0
play_sound /tmp/Upgrade/install_snd/finished.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/finished.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
rm /media/mmc/version.ini.old
mv /media/mmc/version.ini /media/mmc/version.ini.old
/sbin/reboot

@zarthan your log shows you either didn't run "v3_init.sh" prior the installation of 0.5.04, or the init thing failed for some reason. There might be an init.log on sdcard for details.
Anyway, v3_init.sh is no longer needed with 0.5.05. I don't know why it didn't work and didn't create logs though.

I did run v3_init although I did not see anything in the readme only in this issue thread.
I re-ran <IP_ADDRESS> with an SD card.
the contents of the v3_init.log
Installing...
Enabling telnetd...
Incorrect app version: <IP_ADDRESS>
I imagine the install log will be the same but here for completeness

echo WyzeHack: Starting wyze hack installer...
WyzeHack: Starting wyze hack installer...
play_sound /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
[ -f /media/mmc/debug/.copyfiles ]
pgrep -f telnetd
set_passwd root::10933:0:99999:7:::
/bin/umount /etc
umount: can't umount /etc: Invalid argument
rm -rf /tmp/etc
cp -r /etc /tmp/
echo root::10933:0:99999:7:::
/bin/mount -o bind /tmp/etc /etc
echo WyzeHack: Enabling telnetd...
WyzeHack: Enabling telnetd...
busybox telnetd
[ -z <IP_ADDRESS> ]
echo WyzeHack: Current Wyze software version is <IP_ADDRESS>
WyzeHack: Current Wyze software version is <IP_ADDRESS>
echo WyzeHack: Installing WyzeHacks version 0.5.04
WyzeHack: Installing WyzeHacks version 0.5.04
[ -f /params/wyze_hack.cfg ]
[ -f /tmp/Upgrade/config.inc ]
[ -f /media/mmc/config.inc ]
[ ! -f /configs/wyze_hack.cfg ]
[ -z V3 ]
echo WyzeHack: Copying wyze hack binary...
WyzeHack: Copying wyze hack binary...
cp /tmp/Upgrade/wyze_hack.sh /configs/wyze_hack.sh
echo WyzeHack: Hooking up boot script...
WyzeHack: Hooking up boot script...
hook_init
grep wyze_hack.sh /etc/init.d/rcS
[ ! -f /configs/wyze_hack.sh ]
[ ! -f /configs/wyze_hack.cfg ]
local SYSTEM_DIR=/system
[ ! -L /system/init/app_init.sh ]
echo WyzeHack: backing up app_init.sh ...
WyzeHack: backing up app_init.sh ...
cp /system/init/app_init.sh /system/init/app_init_orig.sh
cp: can't create '/system/init/app_init_orig.sh': Read-only file system
readlink /system/init/app_init.sh
local APP_INIT=
[  != /configs/wyze_hack.sh ]
echo WyzeHack: setting up symlink ...
WyzeHack: setting up symlink ...
ln -s -f /configs/wyze_hack.sh /system/init/app_init.sh
ln: /system/init/app_init.sh: File exists
ls -la /system/init
drwxrwxr-x    2 1000     1000           104 Feb  3 01:00 .
drwxrwxr-x    8 1000     1000            87 Feb  3 01:00 ..
-rwxrwxr-x    1 1000     1000          2207 Feb  2 22:05 app_init.sh
-rwxrwxr-x    1 1000     1000           148 Dec 30 06:07 factory.sh
-rw-r--r--    1 1000     1000            11 Feb  3 01:00 firmware_build_epoch_time.txt
-rwxrwxr-x    1 1000     1000           574 Nov 11 03:57 wifi.sh
return 0
play_sound /tmp/Upgrade/install_snd/finished.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/finished.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
rm /media/mmc/version.ini.old
mv /media/mmc/version.ini /media/mmc/version.ini.old
/sbin/reboot

When I saw the "Incorrect app version: <IP_ADDRESS>" from the v3_init log, I decided to downgrade the firmware to <IP_ADDRESS> I re-ran v3_init and got telnet. I then ran remote_install and now have a successful install. I didn't look at the wyze_updater to see whether there was something that checked the firmware version.
I used the <IP_ADDRESS> version of the script. the <IP_ADDRESS> version did not have the wyze_updater.py file, just a symlink to didn't point to anything. Also, the script complained about the firmware_660 bin file being missing and it is.

I am going to leave the firmware at the current level for a little bit because I need to do some testing work.
What is the V3 camera root telnet login password?

The builtin default password is WYom2020
If you have uncommented the default password shadow in config file then
it's changed to ismart12
On Sat, Mar 27, 2021, 11:34 zarthan @.***> wrote:

I am going to leave the firmware at the current level for a little bit
because I need to do some testing work.
What is the V3 camera root telnet login password?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-808783784, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWDZUF7JAX4MXW4M4VVDTFYQL7ANCNFSM4ZJWTCOQ
.

Many thanks.
Once I have done some testing here, I will re-flash with older firmware again and then run the newest script again

the firmware version restriction is removed in 0.5.5 so you should be able
to do a fresh install on any firmware.
On Sat, Mar 27, 2021, 11:53 zarthan @.***> wrote:

Many thanks.
Once I have done some testing here, I will re-flash with older firmware
again and then run the newest script again
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-808786246, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWDZCJIKJIQMNIFWW3ILTFYSULANCNFSM4ZJWTCOQ
.

I am also having a problem - here is the log from the sdcard after doing a remote install to a cam v3:

echo WyzeHack: Starting wyze hack installer...
WyzeHack: Starting wyze hack installer...
play_sound /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
[ -f /media/mmc/debug/.copyfiles ]
pgrep -f telnetd
set_passwd root::10933:0:99999:7:::
/bin/umount /etc
umount: can't umount /etc: Invalid argument
rm -rf /tmp/etc
cp -r /etc /tmp/
echo root::10933:0:99999:7:::
/bin/mount -o bind /tmp/etc /etc
echo WyzeHack: Enabling telnetd...
WyzeHack: Enabling telnetd...
busybox telnetd
[ -z <IP_ADDRESS>0 ]
echo WyzeHack: Current Wyze software version is <IP_ADDRESS>0
WyzeHack: Current Wyze software version is <IP_ADDRESS>0
echo WyzeHack: Installing WyzeHacks version 0.5.05
WyzeHack: Installing WyzeHacks version 0.5.05
[ -f /params/wyze_hack.cfg ]
[ -f /tmp/Upgrade/config.inc ]
echo WyzeHack: Use config file /tmp/Upgrade/config.inc
WyzeHack: Use config file /tmp/Upgrade/config.inc
sed s/\r$// /tmp/Upgrade/config.inc
[ -f /media/mmc/config.inc ]
[ ! -f /configs/wyze_hack.cfg ]
[ -z V3 ]
echo WyzeHack: Copying wyze hack binary...
WyzeHack: Copying wyze hack binary...
cp /tmp/Upgrade/wyze_hack.sh /configs/wyze_hack.sh
init_rootfs /tmp/Upgrade/rootfs
grep wyze_hack.sh /etc/init.d/rcS
[ V3 != V3 ]
grep -i AppVer /usr/app.ver
ROOTFS_VER=<IP_ADDRESS>
ROOTFS_BIN=/tmp/Upgrade/rootfs/<IP_ADDRESS>.bin
[ ! -f /tmp/Upgrade/rootfs/<IP_ADDRESS>.bin ]
echo WyzeHack: No root fs image found for version <IP_ADDRESS>
WyzeHack: No root fs image found for version <IP_ADDRESS>
return 1
echo WyzeHack: Init root fs failed, aborting...
WyzeHack: Init root fs failed, aborting...
play_sound /tmp/Upgrade/install_snd/failed.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/failed.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
return 1

`+ echo WyzeHack: Starting wyze hack installer...
WyzeHack: Starting wyze hack installer...

play_sound /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/begin.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
[ -f /media/mmc/debug/.copyfiles ]
pgrep -f telnetd
set_passwd root::10933:0:99999:7:::
/bin/umount /etc
umount: can't umount /etc: Invalid argument
rm -rf /tmp/etc
cp -r /etc /tmp/
echo root::10933:0:99999:7:::
/bin/mount -o bind /tmp/etc /etc
echo WyzeHack: Enabling telnetd...
WyzeHack: Enabling telnetd...
busybox telnetd
[ -z <IP_ADDRESS>0 ]
echo WyzeHack: Current Wyze software version is <IP_ADDRESS>0
WyzeHack: Current Wyze software version is <IP_ADDRESS>0
echo WyzeHack: Installing WyzeHacks version 0.5.05
WyzeHack: Installing WyzeHacks version 0.5.05
[ -f /params/wyze_hack.cfg ]
[ -f /tmp/Upgrade/config.inc ]
echo WyzeHack: Use config file /tmp/Upgrade/config.inc
WyzeHack: Use config file /tmp/Upgrade/config.inc
sed s/\r$// /tmp/Upgrade/config.inc
[ -f /media/mmc/config.inc ]
[ ! -f /configs/wyze_hack.cfg ]
[ -z V3 ]
echo WyzeHack: Copying wyze hack binary...
WyzeHack: Copying wyze hack binary...
cp /tmp/Upgrade/wyze_hack.sh /configs/wyze_hack.sh
init_rootfs /tmp/Upgrade/rootfs
grep wyze_hack.sh /etc/init.d/rcS
[ V3 != V3 ]
sed -E s/^.=[[:space:]]([0-9.]+)[[:space:]]*$/\1/g
grep -i AppVer /usr/app.ver
ROOTFS_VER=<IP_ADDRESS>
ROOTFS_BIN=/tmp/Upgrade/rootfs/<IP_ADDRESS>.bin
[ ! -f /tmp/Upgrade/rootfs/<IP_ADDRESS>.bin ]
echo WyzeHack: No root fs image found for version <IP_ADDRESS>
WyzeHack: No root fs image found for version <IP_ADDRESS>
return 1
echo WyzeHack: Init root fs failed, aborting...
WyzeHack: Init root fs failed, aborting...
play_sound /tmp/Upgrade/install_snd/failed.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 1
/tmp/wyze_hack/install/bin/audioplay /tmp/Upgrade/install_snd/failed.wav 50
/tmp/wyze_hack/install/main.sh: line 1: can't create /sys/class/gpio/gpio63/value: nonexistent directory
echo 0
return 1
`

Here in my installation log for my WyzeCam V3 that i could not get working.

@musicjeremy @lilchancep To get around this issue, please use SD card recovery method to reflash your camera to firmware <IP_ADDRESS>0 and try it again.
Reason behind this error:
To get the hack work on v3 camera, I have to modify the rootfs image. The first installation will basically re-flash your camera with a modified rootfs image. This rootfs modification can only be done on desktop, so it has to be based on a specific firmware version. When I was doing that I took the image from firmware <IP_ADDRESS>. To avoid version inconsistencies I added a check to make sure the rootfs on the camera matches the one I found from firmware <IP_ADDRESS>.  If it's not, the installation will fail.

Thank you @HclX - just to confirm:

Your script checks for <IP_ADDRESS>
We should flash with <IP_ADDRESS>0 and try again?

@musicjeremy @lilchancep To get around this issue, please use SD card recovery method to reflash your camera to firmware <IP_ADDRESS>0 and try it again.
Reason behind this error:
To get the hack work on v3 camera, I have to modify the rootfs image. The first installation will basically re-flash your camera with a modified rootfs image. This rootfs modification can only be done on desktop, so it has to be based on a specific firmware version. When I was doing that I took the image from firmware <IP_ADDRESS>. To avoid version inconsistencies I added a check to make sure the rootfs on the camera matches the one I found from firmware <IP_ADDRESS>. If it's not, the installation will fail.

Maybe it's easier to build a few rootfs variants for different versions and
make the installer choose the appropriate one?
ons. 14. apr. 2021 kl. 15:20 skrev musicjeremy @.***>:

Thank you @HclX https://github.com/HclX - just to confirm:

Your script checks for <IP_ADDRESS>
We should flash with <IP_ADDRESS>0 and try again?

@musicjeremy https://github.com/musicjeremy @lilchancep
https://github.com/lilchancep To get around this issue, please use SD
card recovery method to reflash your camera to firmware <IP_ADDRESS>0 and try
it again.
Reason behind this error:
To get the hack work on v3 camera, I have to modify the rootfs image. The
first installation will basically re-flash your camera with a modified
rootfs image. This rootfs modification can only be done on desktop, so it
has to be based on a specific firmware version. When I was doing that I
took the image from firmware <IP_ADDRESS>. To avoid version inconsistencies I
added a check to make sure the rootfs on the camera matches the one I found
from firmware <IP_ADDRESS>. If it's not, the installation will fail.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-819512883, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABLR4LYVVKYJMNCDLAMAG2TTIWJCXANCNFSM4ZJWTCOQ
.

So your release includes the rootfs from <IP_ADDRESS> but when I extracted your latest zip and the FIRMWARE_660R.bin inside, I see that the rootfs is <IP_ADDRESS>. Which one is right, 112 or 218?
Does that mean flashing the WyzeHacks on my cam that is on <IP_ADDRESS>0 will be rolled back to <IP_ADDRESS>-or-218?

There are multiple images in demo.bin. The versions app shows or you see on
wyze release note is app image version. The rootfs image version won't
change during regular ota update (as far as I know), it only changes when
you recover using sd card method. Wyzehack installer will only install if
it finds your rootfs version matches the expected version, so it won't
downgrade or upgrade your rootfs version.
On Wed, Apr 14, 2021, 15:21 nijhawank @.***> wrote:

So your release includes the rootfs from <IP_ADDRESS> but when I extracted
your latest zip and the FIRMWARE_660R.bin inside, I see that the rootfs is
<IP_ADDRESS>. Which one is right, 112 or 218?
Does that mean flashing the WyzeHacks on my cam that is on <IP_ADDRESS>0 will
be rolled back to <IP_ADDRESS>-or-218?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-819885666, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWDZKRQL3DJYZPJUL3EDTIYIOBANCNFSM4ZJWTCOQ
.

@HclX Would it be possible to get a version 0.5.05 on the releases page?

@lilchancep ah, totally forgot that, I updated the release page.

@HclX Do you have a link to the firmware i should be using to flash my V3 camera. as version 5.05 is still not working.
Again thank you so much

280 should work.
On Sat, Apr 17, 2021, 15:51 lilchancep @.***> wrote:

@HclX https://github.com/HclX Do you have a link to the firmware i
should be using to flash my V3 camera. as version 5.05 is still not working.
Again thank you so much
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-821898347, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWD4MWVM3VVHWAX2RG4DTJIGIBANCNFSM4ZJWTCOQ
.

@HclX

Flashed wyze cam with V3 firmware <IP_ADDRESS>0

Downloaded and extracted v 0.5.05

copied and set up config.inc
Line Changes
export NFS_ROOT='<IP_ADDRESS>:/mnt/MainPool/ApplicationData/Wyze'
export NFS_OPTIONS='-o nolock,rw,noatime,nodiratime'
export SYNC_BOOT_LOG=1

ran remote_intall.sh
Camera has purple light
Reboots in about a minute or so

The camera starts to reboot every 15 seconds (i think this is due to lack of NFS share access.
It makes the folder and writes on my NAS just fine and writes files. just not recording and the camera says "NO SD Card Detected"
I can provide any files that you think will be helpful.

Try telnet into the camera and check /tmp/boot.log? Make sure you filter
the content before posting it here as it contains sensitive information.
On Sun, Apr 18, 2021, 12:28 lilchancep @.***> wrote:

@HclX https://github.com/HclX

Flashed wyze cam with V3 firmware <IP_ADDRESS>0
2.
Downloaded and extracted v 0.5.05
3.
copied and set up config.inc
Line Changes
export NFS_ROOT='<IP_ADDRESS>:/mnt/MainPool/ApplicationData/Wyze'
export NFS_OPTIONS='-o nolock,rw,noatime,nodiratime'
export SYNC_BOOT_LOG=1
4.
ran remote_intall.sh
Camera has purple light
Reboots in about a minute or so
The camera starts to reboot every 15 seconds (i think this is due to lack
of NFS share access.
It makes the folder and writes on my NAS just fine and writes files. just
not recording and the camera says "NO SD Card Detected"
I can provide any files that you think will be helpful.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/HclX/WyzeHacks/issues/100#issuecomment-822046894, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZNWD3NTV72JHPXDCQFNELTJMXGFANCNFSM4ZJWTCOQ
.

I'm closing this issue as I don't see any update for some days.


Stoping the server bug

In case you are using a HTTP client with keepalive the server will never close till you close the client connections.
You can replicate by:

start clickhouse
telnet <IP_ADDRESS> 8123
stop the clickhouse process (CTRL+Z)

Till you cut of the connection of telnet the server won't close.
Not sure if clickhouse is started as daemon will have the same behavior

Note: seems at some point there is a timeout but in case you have a pool off connections 20 in my case the server is started in few minutes even if no query is sent on that server

The reason of the freezing is that clickhouse does not handle SIGSTOP signal properly.
So, if you make sudo kill -s 15 `pidof clickhouse-server`  than ClickHouse freezes even it there are no active connections.
But it correctly handles SIGTERM.
If you make sudo kill -s 15 `pidof clickhouse-server` with active telnet <IP_ADDRESS> 8123 you will see something like the following in the log:
2018.05.24 15:10:07.712493 [ 31 ] <Information> Application: Received termination signal (Terminated)
2018.05.24 15:10:07.712603 [ 1 ] <Debug> Application: Received termination signal.
2018.05.24 15:10:07.712623 [ 1 ] <Debug> Application: Waiting for current connections to close.
2018.05.24 15:10:08.146284 [ 1 ] <Debug> Application: Closed all listening sockets. Waiting for 1 outstanding connections.
2018.05.24 15:10:13.153275 [ 1 ] <Debug> Application: Closed connections. But 1 remains. Tip: To increase wait time add to config: <shutdown_wait_unfinished>60</shutdown_wait_unfinished>
2018.05.24 15:10:23.154150 [ 1 ] <Information> Application: Shutting down storages.

In this case, the behavior is correct and even adjustable.

Hello @ludv1x ,
On My mac at CTRL+C I see:
2018.05.24 13:26:11.498059 [ 8 ]  Application: Received termination signal (Interrupt: 2)
And server stop accepting new connections but it won't close after all existing connections are closed by the client.
Also I see that on a client that's using http pipeline-ing and persistent connection the server close the connection after each provided response. Is this how should work or it's a bug ?
Silviu

I found why the connection is cut of after a response : keep_alive_timeout setting, but is not working as it suppose to:
For example set : keep_alive_timeout = 3 and create a connection.
This one is not close even after minutes.The send a request and after you get the response connection is closed after that 3 seconds.
So in order to work at least one request needs to be received.
Also keep_alive_timeout is not the best name :) usually this kind of name makes me think about the frequency used by the server to send keep alive messages over the tcp connection in order to keep it alive.. instead a better name might be connection_idle_time or something similar

I am not sure that ClickHouse have to close all connection on SIGSTOP.

The process cannot handle SIGSTOP.

I don't understand, what's wrong with keep_alive_timeout - it's exactly for HTTP/1.1 Connection: Keep-Alive.
Ok, I will close.


Expression analysis missing values cut off?

Hi Jeff, thanks for the package! When I run the expression analysis it automatically gets rid of proteins with missing values for more than 3/13 of the samples in my data set (DIANN data that I would prefer not to impute) so I'm guessing there's a cut-off ~75%? Is there a way to manually adjust this or get rid of it? Or is something else happening? I'm fairly new to R and couldn't find anything in the documentation but would like a bit more control over the filtering. Thanks!

Interesting - by default I return all the proteins with adequate values regardless of the imputation status, that's for you to filter later, and the option is available in the plot_volcano function. If you examine the example in the documentation [jeffsocal.github.io/tidyproteomics/reference/expression.html], there are proteins being accounted for up to 0.83 or 10/12 imputed. However, there are 2226 un-accounted  proteins in the expression analysis - these are proteins with 1 or fewer missing values on one side of the comparison. If you are still having an issue, please email me directly and I can take a look at your data to see whats going on.

Thank you for sharing your data, and pointing out an apparent issue. I tracked this down to an improper check on values missing completely from one group. The issue has been fixed in version 1.6.0, and includes a message on how many observations were dropped due to completely missing data.


--force-color is ignored

The --force-color option declared by Django's BaseCommand is ignored by some commands, e.g. show_urls. The problem is probably the implementation of color_style() which does not take force_color into account.
To demonstrate the problem, run ./manage.py show_urls --force-color and ./manage.py show_urls --force-color | cat. The first command line prints colorized output while the second doesn't.

Linux command "cat" doesn't pass colors at all. You can use some other tools instead of "cat". Please take a look this conversation on AskUbuntu to find some other tools:
https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

Uhhhh, I think you're misunderstanding something here! The question you linked refers to the use-case of using cat to print the contents of a plain file (e.g. source code) to the console and applying color. I.e. converting a file without color information into one with color information. I used cat just to demonstrate that it changes the behavior ./manage.py show_urls but that is not the fault of cat. cat does not change the data it reads from stdin.
If you're not convinced, run git show --color | cat. You will see that the output is colored the same way as if you ran the command without | cat.


Optimize Text VA Search

We currently use the pclntab magic to find the pclntab, then use that VA to locate the moduledata. Once we have the moduledata, we read the .text base from a member of that table and re-parse all pclntab candidates with this correct VA. This is slow.
To fix:

Verify pclntab scan is stable with incorrect .text sections (should be). We heavily rely on a correct pclntab VA now.
Prune the candidate set so that any pclntab candidate with a SecStart != moduledata.text is removed.
Reparse the candidates left
Pick first valid candidate satisfying all of these. In practice, should only have one left.

done :)


Apportioned Emissions streaming endpoints

Add streaming endpoints for all Apportioned Emissions (hourly, daily, monthly, quarterly, annual, & ozone). Please refer to the feature/streaming-endpoints branch uploaded as part of the Streaming POC to resolve the memory/performance issue regarding downloading large files. This branch has working examples of how to provide streaming endpoints for any situation.
Remaining work needed

[x] Remove attachFile request parameter if exists
[x] Require pagination for non streaming endpoints
[x] Validate page size limit of ~25,000 to be configurable
[x] Do not include pagination for streaming endpoints
[ ] Update/expand/increase unit test coverage

Requiring & Validating Pagination

Add the following in app.config.ts changing the env var name to match the name of the app

Add the env var to the manifest.yml

Update page and perPage properties in param DTO's

NOTE: The @Min and @IsRange decorators as well as ErrorMessages are in the easey-common 2.8.0 version or later

The streaming endpoints for hourly, daily, monthly, quarterly, annual, & ozone have already been added as most of the work was done as part of the POC. There has been some significant refactoring so please touch base with tech lead to review!!!

Testing:
Test Case: TC570
Tester: @MaeganWood64

@tlageman-epa @maheese TC570 Passed


openlayers with google map on first time loading the map freezes\stuck in safari and firefox

Describe the bug
Hi all !
I am using angular 9 in my project, with openlayers v-6.5.0.
When my page has finished loading for the first time
in safari and firefox browsers :
when I run my project in localhost/production and the page has finished loading.
The map is stuck\frozen on screen and not responding to any user events (click, swipe, pinch etc ).
after a refresh the map works fine.
But why is this hapening when the page is loading for the first time?

My fix,
When the map loads for the first time (no cheche)
in safari and firefox browsers :
I used a setIntervel() methode to resize the map
`     if(this.userAgentService.getUserBrowser() === 'Safari' || this.userAgentService.getUserBrowser() === 'Firefox'  ) {
  /** Repeat with the interval of 1 second  */
  let interval = setInterval( () => {

    /** if the page has finished loading  */
    if( document.readyState === 'complete' ) {

      this.map.updateSize();
      clearInterval(interval);

    }

  } , 1000);

  /** If the page is not loading for some reason => after 9 seconds stop*/
  setTimeout(() => { clearInterval(interval); alert('please reload the page'); }, 9000);

}`

after that the map loads just fine.
I hope this helps anyone : )

I wouldn't call it a "fix", more of a "workaround", but it works, thank you.

Unstale please, this needs a fix.

I doubt this is an issue with OpenLayers, but I cannot say for sure without seeing your code. The one important thing with Angular is to construct the map or call map.setTarget(targetElement) in an NgOnInit hook. Not earlier!

FYI, my map was in in a React component when I had this issue, not Angular, so it's not angular specific but the behavior and solution was very similar. I can't give you further configuration details right now though.


Fix show again

Fix issue #3

Codecov Report

Merging #4 (c948303) into master (dc19be0) will decrease coverage by 0.81%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master       #4      +/-   ##
==========================================
- Coverage   84.81%   84.00%   -0.82%
==========================================
  Files           1        1
  Lines          79       75       -4
==========================================
- Hits           67       63       -4
  Misses         12       12

Impacted Files
Coverage Δ

src/SumTypes.jl
84.00% <ø> (-0.82%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dc19be0...c948303. Read the comment docs.


Personalisation of application

Displays a welcome message when app is launched.
Improve the way the app interacts with the user at each command.

Example: changes etc.


Feature: Allow snapshot deletion.

I just noticed we don't have a snapshot delete method. This would be useful.

Agreed.  This can be included in 0.5.0.

This was added in bbed0133ce8f3a16bec1e656eea39c11b784be64.  It will be included in 0.5.0.


Add linear resource types to Mirth.

This PR adds a resource stack alongside the usual value stack. Resources are linear, so they cannot be duped or droped. They can be used to represent mutable state in a program. They can also be used as capabilities for external interaction (e.g. file handles) requiring explicit creation, destruction, and sequencing of all the operations in between.
What is implemented in this PR:

TYPES: Resources are incorporated into StackType with the STWith constructor. This means that StackType represents both the value stack and the resource stack. There's special logic inside StackType unification so that the STCons and STWith stack type constructors commute against each other as needed, which makes resources and values act as independent stacks for the purposes of type checking.

When printing out a StackType, the value types are printed before all the resource types, giving a normalized representation. The internal representation via STWith and STCons should not matter to the language user.

PARSING: Resources can show up in type signatures, whenever a stack type is written. Resource types all start with a + to distinguish them from value types. Defined resource types have an uppercase letter following the +, e.g. +C99 is a resource defined in the C99 codegen module, while resource type variables have a lowercase letter, e.g. +a. Resources can be placed anywhere along the stack, it should not matter if you put them before or after the values, but there is a preference to use the normalized representation.  (except: see bug below),

ALGEBRAIC RESOURCES: The language user can define their own resource types via data, similar to defining a value type. These algebraic resource types can have multiple constructors, and these constructors can take both value types and resource types as input. In this PR, this has been used to define a +C99 resource that wraps over the shared state needed in the C99 codegen.

OVERLOADING: The top resource type on the stack can be used for name overloading, either by itself (e.g. +C99.line can be invoked as line in a +C99 context), or together with the top value type on the stack (e.g. the word Str+C99.put with type Str +C99 -- +C99 can be invoked as put in the appropriate context). In this PR, this has been used to significantly clean up the C99 codegen.

Small issues that need to be addressed very soon:

Pattern matching: When pattern matching with an underscore _, the presence of a resource type on the top of the stack causes a unification error. Moving the resource type below the top of the value stack eliminates the unification error, so I'm sure this is a unification bug relating to the STCons and STWith commutation.

Smuggling resources into values: Right now there is nothing preventing the language user from defining a value type via data with a constructor that takes a resource as input. This needs to be prevented, because the value type can be used to dup and drop, leading to non-linear resource usage.

Broader issues to tackle later:

Kind checking & higher-order resources: Right now, only value types can be used as arguments to type constructors. Resource types cannot be used, and so higher-order resource types are possible, but they can only take value types as an argument. :-( This issue goes hand in hand with implementing kind checking, which is completely absent from Mirth at present because there weren't any meaningful kind distinctions until now.

Reusing value types as resources: Right now resource types and value types have different names, so e.g. there isn't a way to reuse Maybe or Either as a resource type (not that you could use it meaningfully, due to the previous point), without defining also a +Maybe and +Either. At this point, I don't know if reuse of the definition of value types is reasonable, or if explicit redefinition is better (in some cases, or in all cases). It's something to investigate.

Records: data resources are useful for modelling resources with multiple possible states, e.g. a ready state and an error state, but more commonly we would like to work with resources that represent multiple parts that can be used independently, for which these algebraic resource types (ARTs!) are a bit cumbersome to use because they rely exclusively on positional notation. Mirth is long overdue some kind of record type construction (tables tend to fill the role of records in the compiler), and resources make that need more dire,

Using resources consistently: Up until now, Mirth has had a very relaxed approach to mutability and side effects. This was crucial to getting things up and running. But, resources are a way to model both mutable state and many "side effects" in a referentially transparent way. It would be good to move the existing compiler onto resources, as has already been done with the bulk of the C99 codegen in this PR, and perhaps in doing so find out where the weaknesses in using resources lie. But this is a big undertaking, so expect it to happen in pieces over a span of time.

[self-promo] If you enjoyed reading this PR summary, please consider supporting my Patreon, and/or consider hiring me to work on your compiler project (my email is typeswitch at protonmail dot com).

Now that's a bomb to drop...


Prevented script execution for labeled issues

Hello there! At first, thank you much for this awesome app!
In general, this pr should do exactly what @rugk suggested in #64: it prevents an execution of the script for those issues that have already been labeled by a person, 'cause bot's attempts to relabel existing labels can be kinda annoying sometimes :)

We are deprecating this bot in production, noted on the README as well.

We are deprecating this bot in production, noted on the README as well.

It's kinda sad :(

It's kinda sad :(


oauth2_proxy not starting, instead raw HTML code to log

Expected Behavior
The command should start the proxy:
sudo /usr/local/bin/oauth2_proxy -config=/etc/oauth2_proxy.cfg

I expect the same when starting the oauth2_proxy systemd service.
Current Behavior
When starting the oauth2_proxy instead of just starting and doing its proxy job as before the change, I now get the following output
$ sudo /usr/local/bin/oauth2_proxy -config=/etc/oauth2_proxy.cfg
[2019/10/30 11:06:46] [main.go:155] 404 Not Found: <!DOCTYPE html>

  <meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport">
  <title>The page you're looking for could not be found (404)</title>

    <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEwIiBo<...snip some more binary data...>sPSIjZTI0MzI5Ii8+Cjwvc3ZnPgo="
       alt="GitLab Logo" />

    404

The page could not be found or you don't have permission to view it.

The resource that you are attempting to access does not exist or you don't have the necessary permissions to view it.

Make sure the address is correct and that the page hasn't moved.

Please contact your GitLab administrator if you think this is a mistake.

    Go back

I doesn't matter if I use systemd or a manual call.
Possible Solution
To be honest, I don't know really how to debug this. I tried different config settings, especially the URLs, but I don't understand this behavior at all, since I do not expect the command line programm to return a HTML page at all.
I think this behavior was introduced by #231.
Your Environment
systemd service
# Systemd service file for oauth2_proxy daemon
[Unit]
Description=oauth2_proxy daemon service
After=syslog.target network.target

[Service]
# www-data group and user need to be created before using these lines
User=www-data
Group=www-data

ExecStart=/usr/local/bin/oauth2_proxy -config=/etc/oauth2_proxy.cfg
ExecReload=/bin/kill -HUP $MAINPID

KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

oauth2_proxy config
I use a self hosted Gitlab CE instance as my oauth provider.
## OAuth2 Proxy Config File
## https://github.com/pusher/oauth2_proxy

provider = "gitlab"

## <addr>:<port> to listen on for HTTP/HTTPS clients
# http_address = "<IP_ADDRESS>:4180"
# https_address = ":443"

## Logging configuration
logging_filename = "/var/log/oauth2.log"
logging_max_size = 100
logging_max_age = 7
logging_local_time = true
logging_compress = false
standard_logging = true
request_logging = true
auth_logging = true

## the OAuth Redirect URL.
redirect_url = "https://subdomain.example.de/oauth2/callback"

## pass HTTP Basic Auth, X-Forwarded-User and X-Forwarded-Email information to upstream
# pass_basic_auth = true
# pass_user_headers = true
## pass the request Host Header to upstream
## when disabled the upstream Host is used as the Host Header
# pass_host_header = true

## Email Domains to allow authentication for (this authorizes any email on this domain)
## for more granular authorization use `authenticated_emails_file`
## To authorize any email addresses use "*"
email_domains = ["example.de"]

## The OAuth Client ID, Secret
client_id = "1234567890"
client_secret = "1234567890"

oidc_issuer_url = "http://git.example.de"

## Pass OAuth Access token to upstream via "X-Forwarded-Access-Token"
# pass_access_token = false

## Authenticated Email Addresses File (one email per line)
# authenticated_emails_file = ""

## Templates
## optional directory with custom sign_in.html and error.html
# custom_templates_dir = ""

## skip SSL checking for HTTPS requests
ssl_insecure_skip_verify = false

## Cookie Settings
## Name     - the cookie name
## Secret   - the seed string for secure cookies; should be 16, 24, or 32 bytes
##            for use with an AES cipher when cookie_refresh or pass_access_token
##            is set
## Domain   - (optional) cookie domain to force cookies to (ie: .yourcompany.com)
## Expire   - (duration) expire timeframe for cookie
## Refresh  - (duration) refresh the cookie when duration has elapsed after cookie was initially set.
##            Should be less than cookie_expire; set to 0 to disable.
##            On refresh, OAuth token is re-validated.
##            (ie: 1h means tokens are refreshed on request 1hr+ after it was set)
## Secure   - secure cookies are only sent by the browser of a HTTPS connection (recommended)
## HttpOnly - httponly cookies are not readable by javascript (recommended)
cookie_name = "subdomain_example_de_oauth2"
cookie_secret = "1234567890"
cookie_domain = "subdomain.example.de"
cookie_expire = "168h"
cookie_refresh = "48h"
cookie_secure = true
cookie_httponly = true

Gitlab Setup

Version used:

$ sudo /usr/local/bin/oauth2_proxy --version
oauth2_proxy undefined (built with go1.12.6)

Installed using go get github.com/pusher/oauth2_proxy

Hi @ccauet! Thanks for filing this issue.
I tried to run both v4.0.0 (latest) and v3.2.0 (the version before #231 was merged) of oauth2_proxy with your provided config and they both encounter the same issue, so I don't think this is related to #231.
While I don't know why this is happening, I will look into it.

so I don't think this is related to #231

Ok. Thank you for ruling this out. It was more of a suspicion.

While I don't know why this is happening, I will look into it.

Thanks a lot. I'm happy to help if I can test something in my setup.

@syscll Do you have any idea how to approach this problem? I'm willing to invest some time, but have no clue how to proceed.

Hi @ccauet, sorry for the delay! I've been on vacation.
My initial thoughts are maybe an error is getting suppressed or not handled correctly. Therefore allowing the application to continue when it shouldn't. I think the best approach would be to add some debug logs to the provider code in order to figure out what is being reported at a few specific points.

Hi @syscll, I hope you had a great offline vacation ;)
I will start looking into it as soon as possible

I ran into this same issue using the oidc provider. For me, the issue was caused by my oidc_jwks_url being broken (it was returning a 404). I saw the same 404 error in the output before it crashed.
I'm not sure what URLs are fetched for the gitlab provider, but that html above indicates the 404 is from gitlab


JavaScript

JavaScript
User Story
As a boot camp student
I want the prework notes to be structured on a webpage
So that I can easily find and read the information
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I view the study guide
THEN I can see the four topics I learned listed along with a suggestion on what I should study first

completed the git glow for mod 3.4.5


Parent Version will get overriden by artifact version

Hello @MarcGiffing,
I was trying your example here.
This one in particular:
https://github.com/MarcGiffing/wicket-spring-boot-examples/tree/master/simple
So what I did in the pom.xml is this:
...
<modelVersion>4.0.0</modelVersion>
  <parent>
  	<groupId>com.giffing.wicket.spring.boot.starter</groupId>
  	<artifactId>wicket-spring-boot-starter-parent</artifactId>
  	<!-- <version>1.0.12</version> -->
  </parent>

  <groupId>com.giffing</groupId>
  <artifactId>simple</artifactId>
  <version>0.0.1</version>
  <name>simple</name>

  <properties>
  	<wicket.version>7.10.0</wicket.version>
  </properties>

...

What happens is that it will make the import in HomePage.java:
import com.giffing.wicket.spring.boot.context.scan.WicketHomePage;
to be unknown.
The particular error is:
Description	Resource	Path	Location	Type
The import com.giffing.wicket.spring.boot.context cannot be resolved	HomePage.java	/simple/src/main/java/com/giffing/examples/wicket/spring/boot/simple	line 8	Java Problem
Your expertise will be much appreciated here.
Thanks,
Artanis

Hey Artanis,
why is the version in the parent pom commented out?
Can you also show your dependencies?
Greets

Hello Marc,
My apologies, that shouldn't have been commented but with this instead:
  <parent>
		<groupId>com.giffing.wicket.spring.boot.starter</groupId>
		<artifactId>wicket-spring-boot-starter-parent</artifactId>
		<!-- <version>1.0.12</version> -->
		<version>2.1.0</version>
	</parent>

I have attached the pom.xml here for more details:
pom.xml.zip
Thanks,
Artanis

Moin Moin @MarcGiffing ,
it's because you use for the versions in the parent project "${project.version}"
This value will be overridden as soon as you created a custom project with a different version and inherit from your parent module.
Better use dependencyManagement in parent-module like e.g. in the module "spring-boot-dependencies"

@thlaegler your right, thanks! I'll fix that.
@artaniszeratul maybe you shouldn't use the starter as a parent pom cause you can't update the Spring Boot parent pom independently which the starter uses itself as a parent.
I'll take a look the next days, sorry.

@MarcGiffing ... ok noted.
But are you trying to suggest that I should follow the pom in this release:
https://github.com/MarcGiffing/wicket-spring-boot/releases/tag/wicket-spring-boot-starter-parent-1.0.12
Thanks,
Artanis

I suggest to use Spring Boots parent pom.
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.11.RELEASE</version>
		<relativePath />
	</parent>

If not your sticked to the version which I have defined in the latest release. But its better you can update Spring Boot independently from the Wicket Starter pom.

Hello @MarcGiffing,
Yes, I have used springboot parent.
And used your wicket-spring-boot-starter-parent's pom as a template for my pom projects.
It worked!
I even used the latest versions
wicket-starter version: 2.10
wicket-version: 8.0.0-M9.
Here is the copy of the pom.xml I have used:
pom.xml.zip
Heaps of thanks @MarcGiffing and @thlaegler!

Kind Regards,
Artanis


Feat: Copy dimension values in TDD and Pivot

Describe the bug
In time dimension detail view or in a pivot table, if i am comparing by any dimension, i can not hit shift+click a value to copy the dimension value to clipboard
To Reproduce
Steps to reproduce the behavior:

Go to https://ui.rilldata.com/demo/rill-cost-monitoring/customer_margin_dash
Click on 'Total Cost' metric to expand to time dimension detail view
Compare by 'Cost by App Name'
Try to copy any of the table values to clipboard (cannot do).

Expected behavior
User should be able to shift+click value to copy to clipboard. This is possible on any dimension table in the main dashboard view, just not in the time dimension detail.

Adding Pivot table to scope

@briangregoryholmes @nishantmonu51 looks like this slipped between sprints, moving it up to current sprint again so we dont miss it.


App Does Not Start on Jetty 11/Tomcat 10 - Incompatability?

Whenever I try to start the order import app on either Jetty 11 or Tomcat 10, it doesn't start the context correctly and I end up with a 404 error.  Tracking down the specific entries in the log file is not easy, but on Jetty 11 I eventually found this:
WARN :oejw.WebAppContext:main: Failed startup of context       o.e.j.w.WebAppContext@553f1d75{order,/order,file:///opt/jetty/my_base/work/jetty-0_0_0_0-8443-     order_war-_order-any-/webapp/,UNAVAILABLE}{/opt/jetty/my_base/webapps/order.war}
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
See the question I submitted to Stack Overflow.   Stack Overflow, in turn, pointed me at another post.  So I want to ask if the app is compatible with Jetty 11 and Tomcat 10.

I think we can conclude that it's somehow not compatible with Jetty 11. Index Data's devops have experienced the same problem when installing it for customers and are staying with Jetty 10 (I believe) until we figure out what's up.

FWIW we are running it on Jetty 9.


Build: silence gcc7's implicit fallthrough warning

GCC 7 now warns if a switch case does not end with a break; statement.
For reference, bitcoin addressed this with the following PR:
This is a well-intentioned but realistically annoying warning. Unfortunately,
it's too easy for a warning in one header to cause dozens of repeated warnings.
https://github.com/bitcoin/bitcoin/pull/10489

utACK


Show source ip in logging

It is possible to add client's source ip in log? Now even with verbose logging enabled (-v) its shows only
wstunnel[16586]: CONNECTING to <IP_ADDRESS>:22
wstunnel[16586]: CLOSE connection to <IP_ADDRESS>:22
I'm running wstunnel server behind cloud serviice (which send x-forwarded-for with real ip) but with direct connection all the same. And ssh or other service "in the end" only see <IP_ADDRESS> so no ip logging at all.

You can try the binaries from this run/artifacts and let me know the outcome ?
https://github.com/erebe/wstunnel/runs/619748369

in release 3.0


ECONNRESET when running "many" tests

Hey there,
we run into random ECONNRESET problems for weeks now and tried many things to mitigate the problem. We use supertest for e2e testing a GraphQL API built with Nest.js.
We run it like so:
GraphQLQuery.ts:
export class GraphQlQuery {
    private static _bindings: Map<string, supertest.SuperTest<supertest.Test>>;

    static queryGraphQl(app: INestApplication, query: GraphQlQuery, token?: string): supertest.Test {
        if (!GraphQlQuery._bindings) {
            GraphQlQuery._bindings = new Map();
        }

        let binding = GraphQlQuery._bindings.get(app.getHttpServer().testHash);
        if (!binding) {
            binding = request(app.getHttpServer());
            GraphQlQuery._bindings.set(app.getHttpServer().testHash, binding);
        }

        const req = binding.post("/graphql");

        if (token) {
            req.set({ Authorization: `Bearer ${token}` });
        }

        req.send({ operationName: null, query: query.build() })
            .expect((response) => {
                if (!response.ok) {
                    console.error(JSON.stringify(response, null, 2));
                }
            })
            .expect(200);

        return req;
    }

    // ...
}

Somewhere in the tests, we can then do
GraphQlQuery.queryGraphQl(app, query, jwt).then((response) => {
    expect(response).toBe(something);
});

The reason we do all the GraphQLQuery._bindings-stuff is because we are aware that those bindings should be reused. We create the Nest.js app in our beforeAll()-hooks, where we also add the testHash to the HTTP Server. It's basically a UUID to ensure that we can map bindings to test-suites. We also run Jest with --runInBand on the CI, so nothing should run concurrently. We have around 80 tests now which all rely on supertest and the more tests we build, the worse it gets. Up until to a point where we need to run the whole CI-step multiple times until ECONNRESET doesn't happen any more. Sometimes up to 10 times or so, with each pipeline needing ~5 minutes.
Unfortunately I didn't find much information about our problems and since Nest.js recommends supertest (and I think I can say that on behalf of the team, we really like the approach), I am wondering what we're missing.
Any help appreciated!

Any update here? I seem to be getting a similar error:
Error: ECONNRESET: Connection reset by peer
      at Test.assert (./node_modules/supertest/lib/test.js:193:18)
      at localAssert (./node_modules/supertest/lib/test.js:159:12)
      at ./node_modules/supertest/lib/test.js:156:5

I wrote test to reproduce problem
describe('a lot of calls', function () {
  this.timeout(10000)

  it('should handle many requests', (done) => {
    const app = express();
    app.get('/', (req, res) => {
      res.send('hi');
    })

    const agent = request(app)

    const reqFn = (i) => {
      return new Promise((resolve, reject) => {
        const st = setTimeout(() => {
          clearTimeout(st)
          const req = agent.get('/')
          req.end((err, res) => {
            if (err) {
              console.log(i, err.message);
              reject(err)
            } else {
              res.text.should.be.eql('hi');
              resolve()
            }
          });
        }, 100)
      })
    }
    const promises = []
    for (let i = 0; i < 200; i++) {
      promises.push(reqFn(i))
    }
    Promise.all(promises)
      .then(() => done())
      .catch(err => done(err))
  });
});

There are may be different output in terminal after executions:
...
160 ECONNREFUSED: Connection refused
159 ECONNREFUSED: Connection refused

or
...
133 ECONNREFUSED: Connection refused
132 ECONNREFUSED: Connection refused

etc.
But i have no idea how to fix this :(

@Dezzpil thanks a lot! But I'm not quite sure if that directly relates to our problem, since we only see ECONNRESET and never ECONNREFUSED :/

same error with me. ECONNRESET is showing when running many tests, but It does not show when running the same test individually

It seems that when calling supertest many times in a concurrent manner this code https://github.com/visionmedia/supertest/blob/28116f9060c1904a433e7d69f1c14db32cf60279/lib/test.js#L61
will spin up multiple HTTP servers or start listening on multiple ports (?).
My solution is to call app.getHttpServer().listen(0); after test app initialization in the beforeAll hook. This way the HTTP server can warm up and all supertest calls use the same address.
So far worked fine for me. Hope that helps in your case as well.

Another issue that @shadowgate15 @spence-s and I found was that port 5000 is being used by AirPlay receiver on macOS Monterey via https://developer.apple.com/forums/thread/682332.  I believe that @shadowgate15 is changing tests to use get-port instead to launch port for ZUUL / server.listen.

Good find @niftylettuce - that might be it.
Perhaps we should find a solution to avoid using port 5000, if that is the case?

@niftylettuce I did try to disable AirPlay Receiver, but still getting random "Connection reset by peer"

We need to fix the tests to use beforeEach and afterEach to make sure the app is started on a random port and closes the app after the test.
This issue should be reopened @niftylettuce.

@shadowgate15 I believe the ticket was never reopened; however, still a relevant issue to tackle! 😊

I've been facing this error for two years now with a project of mine. I've set the tests in a manner that I can run dozens or even hundreds of test cases at once. But it seems to not allow me to run more than 20 tests in a single run.

This is happening to me with Node v20 only..
Look at the evidence of this PR https://github.com/loopbackio/loopback-next/pull/9751

Also started experiencing this in tests while bumping our app to node v20 with many requests with array.map that returns many request-handlers awaited by a Promise.all().

FWIW, I also noticed this issue with Node 20 earlier. The test that ran into it worked fine with Node 18 so far, up to v18.17.1; as of v18.18.0, it's also breaking there. Not sure if this helps at all, but maybe it's useful for narrowing down the cause? 😄

Same node 20 causing this difference in behaviour.

same for us, everything worked fine until node.js v18.17.1, v18.18.0 broke something.

Same here. My GitHub action stopped working when Node version passed from 18.17.1 to 18.18.0, always failing in my supertest tests, each with the error read ECONNRESET.

same problem here with node 18.18.0 and parallel requests.

Same here - bumping node from 18.17.x to 18.18.0

it looks fixed with node.js v18.18.2

This looks like it was introduced in Node with the<EMAIL_ADDRESS>upgrade. It was introduced in Node 20.3.0 and Node 18.18.0.
It was reverted in Node 18.18.1 but never in 20.x 😢

We are experiencing the same issue with the latest node.js v20.9.0 version. Same for the 20.8.1 version.
The libuv seems to be the 1.46.0.
So, for now are there any workaround?

What worked for us is:
-const request = supertest(server);
+const request = supertest(`http://<IP_ADDRESS>:${server.address().port}`);

I couldn't figure out the exact reason but I suspected it was attempting to start another server so providing a URI instead somehow just fixed it.
Hopefully it's useful for at least one person going through this difficult and painful time. 😅

It was reverted in Node 18.18.1 but never in 20.x 😢

Really upsetting.
I had to replace await supertest(app).get(url) with await app.listen(port) + await fetch(url) to run my tests in Node.js 20.11.0.
To avoid EADDRINUSE I had to create a new server on a new port for each test! Quite annoying.

This looks like it was introduced in Node with the<EMAIL_ADDRESS>upgrade. It was introduced in Node 20.3.0 and Node 18.18.0.
It was reverted in Node 18.18.1 but never in 20.x 😢

Hey) Did you have a chance to find out the root cause of the problem that is in the libuv?

This looks like it was introduced in Node with the<EMAIL_ADDRESS>upgrade. It was introduced in Node 20.3.0 and Node 18.18.0.
It was reverted in Node 18.18.1 but never in 20.x 😢

Hey) Did you have a chance to find out the root cause of the problem that is in the libuv?

Node 18.18.1 reverts libuv change which is about importing io_uring and doesn't add it back again, but Node 20.x doesn't.
Using Axios to do parallel http requests has no this problem. I think it shouldn't be duty of Node or libuv. They are chaning, but Supertest doesn't.

We also experienced the same issue, although we found out the ECONNRESET happened to us when upgrading to Node20, in combination of calling supertest in a Promise.all array of promises.
Untangling the Promise.all call and awaiting individually, solved the problem for us.

I encountered similar issues and resolved them by modifying the code as follows (node version: v20.14.0):
Before:
let app: ReturnType<typeof express>
let test: TestAgent

beforeEach(() => {
    app = express()
    // Middleware setup, etc.
    test = supertest(app)
})

After:
let app: ReturnType<typeof express>
let test: TestAgent
let server: ReturnType<typeof app.listen>

beforeEach(() => {
    app = express()
    // Middleware setup, etc.
    server = app.listen(0)
    test = supertest(server)
})

afterEach(() => {
    server.close()
})

It appears that passing the server to supertest instead of the app itself resolves the issue.

@nodify-at 's solution has worked for me. Thanks!

This looks like it was introduced in Node with the<EMAIL_ADDRESS>upgrade. It was introduced in Node 20.3.0 and Node 18.18.0.
It was reverted in Node 18.18.1 but never in 20.x 😢

Hey) Did you have a chance to find out the root cause of the problem that is in the libuv?

Node 18.18.1 reverts libuv change which is about importing io_uring and doesn't add it back again, but Node 20.x doesn't. Using Axios to do parallel http requests has no this problem. I think it shouldn't be duty of Node or libuv. They are chaning, but Supertest doesn't.

Setting parallel fixed my issue, even though I was not using supertest, but got similar issue with cucumberjs


Getting NoSuchMethodError when trying to append or overwrite data and destination table doesn't exist

I'm using following code to write data into sql server from delta lake:
...
table_name = "TEST.TABLE1"
df = spark.sql ("SELECT * FROM table1")
(
df.write
 .format("com.microsoft.sqlserver.jdbc.spark")
  .mode("overwrite")
  .option("url", url)
  .option("dbtable", table_name)
  .option("accessToken", access_token)
  .option("encrypt", "true")
  .option("hostNameInCertificate", "*.database.windows.net")
  .option("truncate","true")
  .save()
)

If table doesn't exists in Azure SQL there is confusing error message:
java.lang.NoSuchMethodError: org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.schemaString(Lorg/apache/spark/sql/Dataset;Ljava/lang/String;Lscala/Option;)Ljava/lang/String;
If table exists in Azure SQL everything works fine.
This also means that mode=overwrite without option truncate=true fails every time.

Hi @rzeq What version of spark are you using? It looks like you have spark version 3.1 or higher. Currently we support spark 2.4 and 3.0. But there is a PR #134 which enables support for 3.1.

I'm using spark 3.1.1 on DBR 8.2 cluster.

Currently the released spark mssql connector jars are only for spark 2.4 / 3.0. please try corresponding spark versions or build spark 3.1 jar from #134. We will release spark 3.1 jar soon.


fix: go1.17 compatibility

Fixes #37

friendly ping @kulti

Pong :)
I can look at this tomorrow or on this weekend.

Closed in favor of #39


Plater Nameplates Module

Integrated Plater Nameplates support for TRP3
The goal for the initial release is (tentatively) a functional replacement for default nameplates for those using Plater.
Only supports the default profile as of right now.
Tasks
Required:

[x] Localization complete

[ ] Review

[ ] Update changelog (leaving this one to @Meorawr or @Solanya to handle)
[ ] Approval from the Mascot

Future plans:

[ ] Nameplates for pets/battle pets with RP profiles
[ ] Better icon placement (need feedback for this one)
[ ] Friend coloring
[ ] Guildmate coloring
[x] Support for non-default Plater profiles (I see this as essential in the long-term)

This task still stands as a checklist for what I'm hoping to accomplish, but the module has been removed in favor of a standalone Plater mod, rather than a built-in TRP module.


removed Viewproptypes

Platforms affected
React native version 69+
What does this PR do?
Depreciated Viewprops replaced with Depreciated viewprops

@meliorence


[SQLite] Our test schema needs to diverge based on the backend

Note: PRs addressing this issue should target the diesel-sqlite-support branch, not master.
posts has the column tags, which is of type varchar[]. This will not work on SQLite. We'll need to remove that field from the various structs when the tests are run against SQLite.

Fixed by #172 (more or less)


SAR of evaluation

Dear author, thank you for your excellent work. I would like to ask why there is a big gap between the SAR of my evaluation results and the one you give. I have tried the evaluation of each model, and the following are some examples of my evaluation results:

For ElasticFace-ElasticFace:
FMR: 0.01 	 threshold: -0.7965051331730502 	 TMR: 0.9683333333333334, SAR: 0.631590181430096
FMR: 0.001 	 threshold: -0.7072022021466418 	 TMR: 0.947, SAR: 0.32689434364994663

Through the help, I know that the model selected by EG3D is ffhqrebalanced512-128.pkl. The problem has been solved, thank you very much.

Thanks @wynsmile for raising the issue. Indeed, there was a typo in the name of EG3D pickle file which is now fixed.


Add control files for Debian packages

@shahmishal can you have a look on this too?
https://forums.swift.org/t/native-linux-swift-installer-packages-rpms-debs-for-swift/62448

thank you @5hv5hvnk there is major refactoring on the debian control files happening in https://github.com/apple/swift-installer-scripts/pull/162, I suggest we follow up on this once that work is merged

Sure let me keep track on the PR


[base-ui][NumberInput] Support adornments

Closes #38515

[x] I have followed (at least) the PR section of the contributing guide.

@mj12albert done!


DTSPO-22117 - Resize DB to General Purpose instead of Basic SKU

Jira link
DTSPO-22117
Change description
Resize DB to General Purpose instead of Basic SKU
Testing done

Checklist

[X] commit messages are meaningful and follow good commit message guidelines
[ ] README and other documentation has been updated / added (if needed)
[ ] tests have been updated / new tests has been added (if needed)
[ ] Does this PR introduce a breaking change

Plan Result (nonprod_general - TerraformPlanApply)
:warning: Resource Deletion will happen :warning:
This plan contains resource delete operation. Please check the plan result very carefully!
Plan: 1 to add, 3 to change, 1 to destroy.

Update

azurerm_application_gateway.ag
azurerm_key_vault.atlasssian_kv
module.networking.azurerm_subnet.this["atlassian-int-nonprod-vnet-atlassian-int-subnet-app"]

Replace

azurerm_postgresql_server.atlassian-server

Change Result (Click me)

  # data.azurerm_key_vault_secret.POSTGRES-SINGLE-SERVER-PASS will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "azurerm_key_vault_secret" "POSTGRES-SINGLE-SERVER-PASS" {
      + content_type            = (known after apply)
      + expiration_date         = (known after apply)
      + id                      = (known after apply)
      + key_vault_id            = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.KeyVault/vaults/atlasssian-nonprod-kv"
      + name                    = "nonprod-POSTGRES-SINGLE-SERVER-PASS"
      + not_before_date         = (known after apply)
      + resource_id             = (known after apply)
      + resource_versionless_id = (known after apply)
      + tags                    = (known after apply)
      + value                   = (sensitive value)
      + versionless_id          = (known after apply)
    }

  # data.azurerm_key_vault_secret.POSTGRES-SINGLE-SERVER-USER will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "azurerm_key_vault_secret" "POSTGRES-SINGLE-SERVER-USER" {
      + content_type            = (known after apply)
      + expiration_date         = (known after apply)
      + id                      = (known after apply)
      + key_vault_id            = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.KeyVault/vaults/atlasssian-nonprod-kv"
      + name                    = "nonprod-POSTGRES-SINGLE-SERVER-USER"
      + not_before_date         = (known after apply)
      + resource_id             = (known after apply)
      + resource_versionless_id = (known after apply)
      + tags                    = (known after apply)
      + value                   = (sensitive value)
      + versionless_id          = (known after apply)
    }

  # azurerm_application_gateway.ag will be updated in-place
  ~ resource "azurerm_application_gateway" "ag" {
        id                                = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway"
        name                              = "atlasssian-nonprod-app-gateway"
        tags                              = {
            "application"  = "atlassian"
            "builtFrom"    = "hmcts/atlassian-infrastructure"
            "businessArea" = "Cross-Cutting"
            "criticality"  = "Medium"
            "environment"  = "staging"
            "startupMode"  = "always"
        }
        # (8 unchanged attributes hidden)

      - probe {
          - id                                        = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/probes/appgw-probe-cnf" -> null
          - interval                                  = 30 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "appgw-probe-cnf" -> null
          - path                                      = "/confluence" -> null
          - pick_host_name_from_backend_http_settings = true -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 30 -> null
          - unhealthy_threshold                       = 3 -> null
            # (1 unchanged attribute hidden)

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - id                                        = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/probes/appgw-probe-crd" -> null
          - interval                                  = 30 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "appgw-probe-crd" -> null
          - path                                      = "/crowd" -> null
          - pick_host_name_from_backend_http_settings = true -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 30 -> null
          - unhealthy_threshold                       = 3 -> null
            # (1 unchanged attribute hidden)

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      - probe {
          - id                                        = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/probes/appgw-probe-jira" -> null
          - interval                                  = 30 -> null
          - minimum_servers                           = 0 -> null
          - name                                      = "appgw-probe-jira" -> null
          - path                                      = "/jira/status" -> null
          - pick_host_name_from_backend_http_settings = true -> null
          - port                                      = 0 -> null
          - protocol                                  = "Http" -> null
          - timeout                                   = 30 -> null
          - unhealthy_threshold                       = 3 -> null
            # (1 unchanged attribute hidden)

          - match {
              - status_code = [
                  - "200-399",
                ] -> null
                # (1 unchanged attribute hidden)
            }
        }
      + probe {
          + id                                        = (known after apply)
          + interval                                  = 30
          + minimum_servers                           = 0
          + name                                      = "appgw-probe-cnf"
          + path                                      = "/confluence"
          + pick_host_name_from_backend_http_settings = true
          + protocol                                  = "Http"
          + timeout                                   = 30
          + unhealthy_threshold                       = 3
            # (1 unchanged attribute hidden)
        }
      + probe {
          + id                                        = (known after apply)
          + interval                                  = 30
          + minimum_servers                           = 0
          + name                                      = "appgw-probe-crd"
          + path                                      = "/crowd"
          + pick_host_name_from_backend_http_settings = true
          + protocol                                  = "Http"
          + timeout                                   = 30
          + unhealthy_threshold                       = 3
            # (1 unchanged attribute hidden)
        }
      + probe {
          + id                                        = (known after apply)
          + interval                                  = 30
          + minimum_servers                           = 0
          + name                                      = "appgw-probe-jira"
          + path                                      = "/jira/status"
          + pick_host_name_from_backend_http_settings = true
          + protocol                                  = "Http"
          + timeout                                   = 30
          + unhealthy_threshold                       = 3
            # (1 unchanged attribute hidden)
        }

      - request_routing_rule {
          - http_listener_id            = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/httpListeners/appgw-http-listener" -> null
          - http_listener_name          = "appgw-http-listener" -> null
          - id                          = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/requestRoutingRules/appgw-routing-rule" -> null
          - name                        = "appgw-routing-rule" -> null
          - priority                    = 1 -> null
          - rule_type                   = "PathBasedRouting" -> null
          - url_path_map_id             = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/applicationGateways/atlasssian-nonprod-app-gateway/urlPathMaps/appgw-url-map-path" -> null
          - url_path_map_name           = "appgw-url-map-path" -> null
            # (8 unchanged attributes hidden)
        }
      + request_routing_rule {
          + backend_address_pool_id     = (known after apply)
          + backend_address_pool_name   = "appgw-backend-pool-cnf"
          + backend_http_settings_id    = (known after apply)
          + backend_http_settings_name  = "appgw-backend-settings-cnf"
          + http_listener_id            = (known after apply)
          + http_listener_name          = "appgw-http-listener"
          + id                          = (known after apply)
          + name                        = "appgw-routing-rule"
          + priority                    = 1
          + redirect_configuration_id   = (known after apply)
          + rewrite_rule_set_id         = (known after apply)
          + rule_type                   = "PathBasedRouting"
          + url_path_map_id             = (known after apply)
          + url_path_map_name           = "appgw-url-map-path"
            # (2 unchanged attributes hidden)
        }

        # (18 unchanged blocks hidden)
    }

  # azurerm_key_vault.atlasssian_kv will be updated in-place
  ~ resource "azurerm_key_vault" "atlasssian_kv" {
      ~ access_policy                   = [
            # (1 unchanged element hidden)
            {
                application_id          = null
                certificate_permissions = [
                    "Get",
                    "List",
                    "Update",
                    "Create",
                    "Import",
                    "Delete",
                    "Recover",
                    "Backup",
                    "Restore",
                    "ManageContacts",
                    "ManageIssuers",
                    "GetIssuers",
                    "ListIssuers",
                    "SetIssuers",
                    "DeleteIssuers",
                ]
                key_permissions         = [
                    "Get",
                    "List",
                    "Update",
                    "Create",
                    "Import",
                    "Delete",
                    "Recover",
                    "Backup",
                    "Restore",
                    "GetRotationPolicy",
                    "SetRotationPolicy",
                    "Rotate",
                ]
                object_id               = "e7ea2042-4ced-45dd-8ae3-e051c6551789"
                secret_permissions      = [
                    "Get",
                    "List",
                    "Set",
                    "Delete",
                    "Purge",
                ]
                storage_permissions     = []
                tenant_id               = "531ff96d-0ae9-462a-8d2d-bec7c0b42082"
            },
          - {
              - certificate_permissions = []
              - key_permissions         = []
              - object_id               = "96f806d7-de3f-4407-bd62-b746b59cc3d7"
              - secret_permissions      = [
                  - "Get",
                  - "List",
                ]
              - storage_permissions     = []
              - tenant_id               = "531ff96d-0ae9-462a-8d2d-bec7c0b42082"
                # (1 unchanged attribute hidden)
            },
        ]
        id                              = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.KeyVault/vaults/atlasssian-nonprod-kv"
        name                            = "atlasssian-nonprod-kv"
        tags                            = {
            "application"  = "atlassian"
            "builtFrom"    = "hmcts/atlassian-infrastructure"
            "businessArea" = "Cross-Cutting"
            "criticality"  = "Medium"
            "environment"  = "staging"
            "startupMode"  = "always"
        }
        # (12 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # azurerm_postgresql_server.atlassian-server must be replaced
-/+ resource "azurerm_postgresql_server" "atlassian-server" {
      ~ administrator_login               = (sensitive value)
      ~ administrator_login_password      = (sensitive value)
      ~ backup_retention_days             = 7 -> (known after apply)
      ~ fqdn                              = "atlassian-nonprod-server.postgres.database.azure.com" -> (known after apply)
      ~ id                                = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.DBforPostgreSQL/servers/atlassian-nonprod-server" -> (known after apply)
      - infrastructure_encryption_enabled = false -> null
        name                              = "atlassian-nonprod-server"
      ~ sku_name                          = "B_Gen5_2" -> "GP_Gen5_8" # forces replacement
      ~ storage_mb                        = 66560 -> 51200
      - tags                              = {
          - "application"  = "atlassian"
          - "builtFrom"    = "hmcts/atlassian-infrastructure"
          - "businessArea" = "Cross-Cutting"
          - "environment"  = "staging"
        } -> null
        # (9 unchanged attributes hidden)
    }

  # module.networking.azurerm_subnet.this["atlassian-int-nonprod-vnet-atlassian-int-subnet-app"] will be updated in-place
  ~ resource "azurerm_subnet" "this" {
        id                                            = "/subscriptions/b7d2bd5f-b744-4acc-9c73-e068cec2e8d8/resourceGroups/atlassian-nonprod-rg/providers/Microsoft.Network/virtualNetworks/atlassian-int-nonprod-vnet/subnets/atlassian-int-subnet-app"
        name                                          = "atlassian-int-subnet-app"
      ~ service_endpoints                             = [
          - "Microsoft.Sql",
        ]
        # (7 unchanged attributes hidden)
    }

Plan: 1 to add, 3 to change, 1 to destroy.


Uniform.r

Hi,
I'm Shinwoo Hyun from Seoul National University.
In Uniform.r, if statement for GLUEFlag==2 doesn't have option for Flag=="G"
I think it should be changed as below
else if (GLUEFlag==2)
{
if (Flag=="P)
else if (Flag=="N")
else if (Flag=="P") -> else if (Flag=="G")
}

Hi @hswhsy!
This issue was already fixed.
Thank you.
Fabio Oliveira


Pinning PyYaml Version to requirements.txt

make install fails with a Cython error. This error originates from trying to install kfp==1.8.22. KFP requires a dependency that requires PyYAML >=5.3 and so pip tries to install PyYAML-5.4.1 and installing this results in a cython error. To avoid this error, pinning the version of PyYaml to 5.4.1.

This PR is not required.


Update walkthrough-create-uii-windows-forms-hosted-control.md

Fixed missing space.

Reference, first line after first hyperlink.

HI @tehstun, thanks for your contribution. This change is noted and updated in the documentation. The docs will reflect the change in the next weekly publishing, which is next week. Hence, this PR will closed now.
Looking forward to more suggestions/feedbacks/contributions on the documentation from you.
Regards,
Karthik