You wrote:
And you want to start:
server.Initialize("Server")
server.Start(80)
You cannot start a second server which use the same port 80 So I think that this is the reason for the "Permission denied" error because there is no free port 80.
sur.SuCommand ("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080")
server.Start (8080)
I'm not an expert in using IPtables under Android. However, there is an old post
https://stackoverflow.com/questions/4577268/iptables-in-android#5409563 which indicate that there are restricts to use IPtables under Android. There is also asked 11 days ago without currently unanswered
https://stackoverflow.com/questions/67592271/how-to-get-port-forwarding-in-android-from-8080-to-80.
So I think that your best bet is to dived your solution in several steps to see what works and what not work by start and test a web server on port 80. Next step add the rerouting from port 8080 to 80, then add NAT and see how far everything works as expected.