On Sun, 31 Aug 2025, Marcin Cieslak wrote:
On Sat, 30 Aug 2025, Mark Felder wrote:On Aug 26, 2025, at 15:33, Marcin Cieslak <[email protected]> wrote: On Tue, 26 Aug 2025, Marcin Cieslak wrote:On Tue, 26 Aug 2025, Mark Felder wrote:If someone could figure out a way to dynamically patch the class in the jar file -- either manually with a script the porter needs to run or as part of the port itself -- I'll pay out a $200 bounty. It would remove a lot of tedious pain when doing updates. I don't think it's possible though.What about something like the below. Requires xxd and jar. JARFILE=../Omada_SDN_Controller_v5.15.24.19_linux_x64/lib/omada-common-5.15.24.19.jar ISLINUXOS_CLASS="com/tplink/smb/omada/common/util/S.class"[...]Can't test if this really works at the moment, should update the omada-common-5.15.24.19.jar file in place. If "check" fails, we need to figure out whether the Linux-checking function has been moved, renamed or discarded.This seems to let me go past the following message:08-26-2025 22:28:52.159 ERROR [main] [] c.t.s.o.s.OmadaLinuxMain(): Error: system is not linux, should not call this founctionThat's looking promising. Does it ever listen on these ports? If so, it started up correctly. Might take 30 seconds or so.
[...]
"patch" function of the following script could be added to
the post-patch or something like this to patch the jar file
during the build.
"check" function is only needed for the maintainer to check
if the newer version behaves the same as the old one.
JARFILE=../Omada_SDN_Controller_v5.15.24.19_linux_x64/lib/omada-common-5.15.24.19.jar
ISLINUXOS_CLASS="com/tplink/smb/omada/common/util/S.class"
check() {
unzip -p "${JARFILE}" "${ISLINUXOS_CLASS}" | xxd -p -c 0 |
grep -q 01000969734c696e75784f53 || { echo >&2 "\"${ISLINUXOS_CLASS}\" does
not check for Linux"; exit 1; }
}
patch() {
new_class_dir=`mktemp -d`
trap 'rm -rf -- "${new_class_dir}"' EXIT
dest_dir=`dirname "${ISLINUXOS_CLASS}"`
mkdir -p "${new_class_dir}/${dest_dir}"
unzip -p "${JARFILE}" "${ISLINUXOS_CLASS}" | xxd -p -c 0 | {
sed -e s,0100056c696e7578,01000766726565627364,
} | xxd -r -p > "${new_class_dir}/${ISLINUXOS_CLASS}"
jar uf "${JARFILE}" -C "${new_class_dir}" "${ISLINUXOS_CLASS}"
}
check && patch
I would also suggest the following change to the logging configuration:
---
Omada_SDN_Controller_v5.15.24.19_linux_x64/properties/log4j2.properties.orig
2025-08-31 12:55:55.330326000 +0000
+++ Omada_SDN_Controller_v5.15.24.19_linux_x64/properties/log4j2.properties
2025-08-31 12:56:08.237266000 +0000
@@ -2,7 +2,7 @@
dest = err
name = PropertiesConfig
-property.pattern = %d{MM-dd-yyyy HH:mm:ss.SSS} %p [%t] [%X{REQUEST_ID}]
%c{1.}(%L): %m%n
+property.pattern = %d{MM-dd-yyyy HH:mm:ss.SSS} %p [%t] [%X{REQUEST_ID}]
%c(%L): %m%n
property.filePath = ../logs
property.fileName = server
property.maxSize = 20MB
This will increase the size of the log (newsyslog configuration!) but we
will have full class names for eventual further troubleshooting.
I wouldn't worry about the following warning in the server.log: WARN [main] [] com.tplink.smb.omada.common.util.S(): Nonsupport system:freebsd. As the code checks only for Windows and Linux, I believe we get the same message on macos. If we fix it, it tries to run the "arch" program we do not have only to add the current architecture name to some string. I think this is not worth the hassle of extra patching. Marcin
smime.p7s
Description: S/MIME Cryptographic Signature
