elixsr / fwdportforwardingapp Goto Github PK
View Code? Open in Web Editor NEWPort Forwarding App for Android
Home Page: http://elix.sr/fwd
License: GNU General Public License v3.0
Port Forwarding App for Android
Home Page: http://elix.sr/fwd
License: GNU General Public License v3.0
web server ports 8080 works, but other ones like 27015, 15567 just cant connect. No multiple port uses, so mby you have suggestion.
07-18 23:58:03.815 27697-28123/? I/ForwardingService: Found the relevant Interface. Will attempt to fetch IP Address
07-18 23:58:03.825 27697-27697/? I/MainActivity: Forwarding Enabled: true
07-18 23:58:03.827 27697-28126/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.828 27697-28151/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.829 27697-28135/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.829 27697-28146/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.829 27697-28132/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.830 27697-28140/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.830 27697-28128/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.830 27697-28142/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.830 27697-28150/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.831 27697-28141/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.832 27697-28145/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.832 27697-28123/? D/ForwardingService: dummy0 vs lo
07-18 23:58:03.832 27697-28123/? D/ForwardingService: p2p0 vs lo
07-18 23:58:03.833 27697-28123/? D/ForwardingService: usb0 vs lo
07-18 23:58:03.833 27697-28123/? D/ForwardingService: sit0 vs lo
07-18 23:58:03.833 27697-28123/? D/ForwardingService: lo vs lo
07-18 23:58:03.833 27697-28123/? I/ForwardingService: Found the relevant Interface. Will attempt to fetch IP Address
07-18 23:58:03.833 27697-28137/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.834 27697-28133/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.834 27697-28153/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.835 27697-28130/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.835 27697-28154/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.836 27697-28124/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.836 285-625/? D/audio_hw_primary: out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
07-18 23:58:03.836 285-625/? V/msm8916_platform: platform_get_output_snd_device: enter: output devices(0x2)
07-18 23:58:03.836 285-625/? V/msm8916_platform: platform_get_output_snd_device: exit: snd_device(speaker)
07-18 23:58:03.836 27697-28152/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.836 27697-28139/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.837 27697-28131/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.837 27697-28143/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.837 27697-28147/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.837 27697-28134/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.838 27697-28129/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.838 27697-28149/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.838 27697-28138/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.838 27697-28136/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.838 27697-28148/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.839 27697-28127/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.839 27697-28125/? I/TcpForwarder: TCP Thread interrupted, will perform cleanup
07-18 23:58:03.847 27697-27697/? I/ForwardingService: Ended the ForwardingService. Cleanup finished.
07-18 23:58:03.858 27697-27697/? I/MainActivity: Response from ForwardingService, Forwarding status has changed.
07-18 23:58:03.860 27697-27697/? I/MainActivity: Forwarding status has changed to false
07-18 23:58:03.884 27697-28123/? E/AndroidRuntime: FATAL EXCEPTION: IntentService[ForwardingService]
Process: com.elixsr.portforwarder, PID: 27697
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ExecutorCompletionService$QueueingFuture@53a4c74 rejected from java.util.concurrent.ThreadPoolExecutor@2d6159d[Terminated, pool size = 17, active threads = 0, queued tasks = 0, completed tasks = 30]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2014)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:794)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1340)
at java.util.concurrent.ExecutorCompletionService.submit(ExecutorCompletionService.java:152)
at com.elixsr.portforwarder.forwarding.ForwardingService.onHandleIntent(ForwardingService.java:198)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
07-18 23:58:03.888 2216-4073/? W/ActivityManager: Force finishing activity com.elixsr.portforwarder/.ui.MainActivity
07-18 23:58:03.889 2216-4073/? I/ActivityManager: moveHomeStack, setupComplete:true
07-18 23:58:04.027 2216-3295/? I/OpenGLRenderer: Initialized EGL, version 1.4```
First, thanks for this amazing app!
Is it possible to start the port forwarding on Android startup or on the app startup? It could be an option in the settings.
It would be really helpful!
Only wlan0 and lo interfaces shows up in the app. Could you change this to a manual input instead?
I run a web server on my RPi using docker. It works on local connection using the local ip.
I use rule as
protocol: Both
From: rmnet0, port : 2280
Target: , port: 80
but I'm not able to see my webssite on the public ip
please help me out
08-18 19:42:26.496 2191-6187/? D/NetlinkSocketObserver: NeighborEvent{elapsedMs=5001910, 192.168.0.1, [400D108BFBD0], RTM_NEWNEIGH, NUD_STALE}
08-18 19:42:26.567 2191-2194/? I/art: Wrote stack traces to '/data/anr/traces.txt'
08-18 19:42:26.581 2191-2205/? E/ActivityManager: ANR in com.elixsr.portforwarder (com.elixsr.portforwarder/.ui.MainActivity)
PID: 32597
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 14. Wait queue head age: 5306.9ms.)
Load: 8.17 / 6.58 / 5.86
CPU usage from 181199ms to 0ms ago:
70% 5101/perfd: 53% user + 17% kernel / faults: 1375 minor
67% 2191/system_server: 26% user + 41% kernel / faults: 18660 minor 80 major
13% 206/logd: 13% user + 0.3% kernel / faults: 503 minor
11% 26674/com.google.android.apps.docs: 10% user + 1.2% kernel / faults: 63035 minor 166 major
3.1% 253/surfaceflinger: 1.7% user + 1.4% kernel / faults: 811 minor
3.1% 4490/com.google.android.gms: 2.3% user + 0.7% kernel / faults: 19590 minor 84 major
2.3% 4266/com.google.android.gms.persistent: 1.8% user + 0.5% kernel / faults: 17611 minor 61 major
2.1% 496/adbd: 0.4% user + 1.7% kernel / faults: 17 minor
1.6% 4034/com.google.android.googlequicksearchbox: 1.4% user + 0.2% kernel / faults: 9975 minor 371 major
1.2% 32372/com.google.android.googlequicksearchbox:search: 1% user + 0.1% kernel / faults: 28859 minor 43 major
0.5% 294/mediaserver: 0.2% user + 0.2% kernel / faults: 458 minor 2 major
0.5% 169/mmcqd/0: 0% user + 0.5% kernel
0.4% 4972/logcat: 0.1% user + 0.2% kernel / faults: 50 minor
0.3% 3333/com.android.systemui: 0.2% user + 0.1% kernel / faults: 4886 minor 7 major
0.3% 88/kswapd0: 0% user + 0.3% kernel
0.3% 26627/com.android.documentsui: 0.2% user + 0% kernel / faults: 4778 minor 1 major
0.2% 22516/mdss_fb0: 0% user + 0.2% kernel
0.1% 252/servicemanager: 0% user + 0.1% kernel / faults: 67 minor
0.1% 143/cfinteractive: 0% user + 0.1% kernel
0.1% 32340/kworker/0:0: 0% user + 0.1% kernel
0.1% 8/rcu_preempt: 0% user + 0.1% kernel
0.1% 114/hwrng: 0% user + 0.1% kernel
0.1% 22518/irq/326-synapti: 0% user + 0.1% kernel
0% 3/ksoftirqd/0: 0% user + 0% kernel
0% 16/ksoftirqd/2: 0% user + 0% kernel
0% 20/ksoftirqd/3: 0% user + 0% kernel
0% 129/spi0: 0% user + 0% kernel
0% 4021/com.android.phone: 0% user + 0% kernel / faults: 1694 minor 6 major
0% 5339/com.motorola.motocare: 0% user + 0% kernel / faults: 1872 minor 23 major
0% 12/ksoftirqd/1: 0% user + 0% kernel
0% 31597/kworker/u8:13: 0% user + 0% kernel
0% 21151/kworker/0:1: 0% user + 0% kernel
0% 22188/kworker/2:0: 0% user + 0% kernel
0% 30500/kworker/u8:6: 0% user + 0% kernel
0% 32/kworker/u9:0: 0% user + 0% kernel
0% 3314/wpa_supplicant: 0% user + 0% kernel / faults: 144 minor
0% 22396/kworker/1:2: 0% user + 0% kernel
0% 704/kworker/3:2: 0% user + 0% kernel
0% 4200/com.google.process.gapps: 0% user + 0% kernel / faults: 1657 minor 4 major
0% 26891/kworker/u8:3: 0% user + 0% kernel
0% 3312/VosRXThread: 0% user + 0% kernel
0% 54/system: 0% user + 0% kernel
0% 3310/VosMCThread: 0% user + 0% kernel
0% 3311/VosTXThread: 0% user + 0% kernel
0% 3907/com.google.android.inputmethod.latin: 0% user + 0% kernel / faults: 704 minor
0% 22536/kworker/u8:10: 0% user + 0% kernel
0% 30502/kworker/u8:8: 0% user + 0% kernel
0% 30504/kworker/u8:11: 0% user + 0% kernel
0% 1//init: 0% user + 0% kernel / faults: 471 minor
0% 52/kworker/0:1H: 0% user + 0% kernel
0% 30497/kworker/u8:2: 0% user + 0% kernel
0% 6/kworker/u8:0: 0% user + 0% kernel
0% 251/lmkd: 0% user + 0% kernel / faults: 33 minor
0% 307/zygote: 0% user + 0% kernel / faults: 5100 minor
0% 22379/kworker/u8:1: 0% user + 0% kernel
0% 26614/android:ui: 0% user + 0% kernel / faults: 2000 minor
0% 30499/kworker/u8:5: 0% user + 0% kernel
0% 3393/android.process.media: 0% user + 0% kernel / faults: 1795 minor
0% 282/netd: 0% user + 0% kernel / faults: 174 minor 1 major
0% 285/rild: 0% user + 0% kernel / faults: 287 minor
0% 416/qmuxd: 0% user + 0% kernel / faults: 97 minor
0% 4005/com.motorola.process.system: 0% user + 0% kernel / faults: 652 minor
0% 30503/kworker/u8:9: 0% user + 0% kernel
0% 195/f
08-18 19:42:26.660 2191-1564/? W/DropBoxManagerService: Dropping: data_app_anr (10 > 0 bytes)
08-18 19:42:26.767 2191-28280/? I/OpenGLRenderer: Initialized EGL, version 1.4
08-18 19:42:26.821 2191-2200/? I/art: Background sticky concurrent mark sweep GC freed 90094(5MB) AllocSpace `
This apps only worked once (or better say, "random")... Now always says "Could not bind port XXXX for tcp rule XXXX"... any ideas?
Android: 7.1.2
Once the snackbar shows what rules have clashed, the Fab to create rules disappears
I used FWD on a phone tethered to my router, it would be great to be able to add and remove forwarded ports via a web interface rather than only on the phone screen.
App does not load rules from a json file. While doing an export operation succeeds, import always fails.
It'd be nice if this app was on F-Droid, but you'd have to create a version without Google Play Services or Firebase. It should be relatively simple to create a version without Firebase, but Google Play Services might be trickier. You could try using https://github.com/microg/android_external_GmsLib, but I'm not sure if that would work.
I am using an Apache web server in Termux on port 8080. My device is rooted and I want to forward port 80 to 8080 so my device can be accessed by port 80 (or any below 1024, e.g. 443) without running Apache as root (insecure).
It appeared however that Fwd does not support to allow ports < 1024. Can that be supported ?
help i cant open ports mentioned before the app deosnt allows me says needts to be minimun 1024
08-18 19:26:25.472 6263-6263/? E/UncaughtException: java.lang.RuntimeException: Failure delivering result ResultInfo{who=android:fragment:0, request=1, result=-1, data=Intent { act=android.intent.action.VIEW dat=content://com.google.android.apps.docs.storage.legacy/enc=dKw0p6lN989gqy1pZq6Rcif-r8e0qxtoKPhcVspqh6l0Mh1M
(has extras) }} to activity {com.elixsr.portforwarder/com.elixsr.portforwarder.ui.preferences.SettingsActivity}: android.os.NetworkOnMainThreadException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3720)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1287)
at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
at java.net.InetAddress.getByName(InetAddress.java:305)
at java.net.InetSocketAddress.<init>(InetSocketAddress.java:100)
at java.net.InetSocketAddress.<init>(InetSocketAddress.java:85)
at com.elixsr.portforwarder.adapters.RuleListTargetJsonDeserializer.deserialize(RuleListTargetJsonDeserializer.java:26)
at com.elixsr.portforwarder.adapters.RuleListTargetJsonDeserializer.deserialize(RuleListTargetJsonDeserializer.java:16)
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
at com.google.gson.Gson.fromJson(Gson.java:887)`
When using hardware back button
07-18 20:27:29.267 9017-9017/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.elixsr.portforwarder, PID: 9017
java.lang.RuntimeException: Failure delivering result ResultInfo{who=android:fragment:0, request=1, result=0, data=null} to activity {com.elixsr.portforwarder/com.elixsr.portforwarder.ui.preferences.SettingsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri android.content.Intent.getData()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:3720)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri android.content.Intent.getData()' on a null object reference
at com.elixsr.portforwarder.ui.preferences.SettingsFragment.onActivityResult(SettingsFragment.java:340)
at android.app.Activity.dispatchActivityResult(Activity.java:6466)```
Hello. I'd like to try your app but Google's Play Store says:
This app is not available for any of your devices
This is surprising since my history of devices connected to this account is not narrow. I wonder what it takes for a device to be compatible. Can you clarify?
Thanks!
Hi,
Thanks for the app!
It would be great if this app was available on F-Droid as well for those who prefer it as an app store 🤟
Hi!
can you keep forwarding service running even when the app is completely closed?
android 7.0
Hey,
I'm using your app which is great!
But, I want to perform port forwarding through a pc which is connected to my android device via adb connect, I want to write some script which will automatically perform port forwarding given a known target, protocol, ports and etc.
Basically I have a device which is connected via usb to my android and I want to ssh to it so I need to do port forward to it.
just rings up an item not found error
I have made a localhost Apache server on port 8080, and i forwarded it on public IP with port 8080, no problem while setup, but when i want to access it from browser, http://public_ip:8080
It doesn't show content, site work perfectly on localhost
08-18 19:59:46.212 3240-6088/com.elixsr.portforwarder D/ForwardingService: lo vs wlan0
08-18 19:59:46.727 4074-4074/? W/Binder_7: type=1400 audit(0.0:1342): avc: denied { ioctl } for uid=1000 path="socket:[487543]" dev="sockfs" ino=487543 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
08-18 19:59:48.717 6507-6507/? W/Binder_F: type=1400 audit(0.0:1343): avc: denied { ioctl } for uid=1000 path="socket:[491731]" dev="sockfs" ino=491731 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
08-18 19:59:48.727 6507-6507/? W/Binder_F: type=1400 audit(0.0:1344): avc: denied { ioctl } for uid=1000 path="socket:[491731]" dev="sockfs" ino=491731 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
08-18 19:59:57.356 2191-6187/? D/NetlinkSocketObserver: NeighborEvent{elapsedMs=6052770, 192.168.0.1, [400D108BFBD0], RTM_NEWNEIGH, NUD_STALE}
08-18 19:59:57.452 3430-3467/? D/SLPC: slpc_poll_loop(): handled 1
08-18 19:59:57.452 3430-3467/? D/SLPC: slpc_poll_handle_event(): transition
08-18 19:59:57.453 3430-3467/? D/SLPC: slpc_poll_loop(): about to poll...
08-18 19:59:57.453 3430-3467/? D/sensorhub: sensorhub_poll() polling...
08-18 19:59:57.454 3430-3430/? D/ModalityService: ModalityListener(): callback onModalityChange() -> 2
08-18 19:59:57.454 2191-6249/? D/ModalityManager: onEndMovement(), package: android
08-18 19:59:57.454 2191-2191/? D/MotWifiScanMovementListener: MovementListener onEndMovement`
04-07 17:56:19.460 5086-5086/com.elixsr.portforwarder W/Ads: The webview is destroyed. Ignoring action. 04-07 17:56:20.014 5086-5086/com.elixsr.portforwarder E/AndroidRuntime: FATAL EXCEPTION: main Process: com.elixsr.portforwarder, PID: 5086 android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.elixsr.portforwarder/cache/fwd_rule_list3598144147339057752.json exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958) at android.net.Uri.checkFileUriExposed(Uri.java:2356) at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941) at android.content.Intent.prepareToLeaveProcess(Intent.java:9735) at android.content.Intent.prepareToLeaveProcess(Intent.java:9741) at android.content.Intent.prepareToLeaveProcess(Intent.java:9720) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1742) at android.app.Activity.startActivityForResult(Activity.java:5153) at android.app.Activity.startActivityFromFragment(Activity.java:5129) at android.app.Activity$HostCallbacks.onStartActivityFromFragment(Activity.java:7602) at android.app.Fragment.startActivity(Fragment.java:1179) at android.app.Fragment.startActivity(Fragment.java:1158) at com.elixsr.portforwarder.ui.preferences.SettingsFragment.exportRules(SettingsFragment.java:325) at com.elixsr.portforwarder.ui.preferences.SettingsFragment.access$400(SettingsFragment.java:72) at com.elixsr.portforwarder.ui.preferences.SettingsFragment$4.onPreferenceClick(SettingsFragment.java:206) at android.preference.Preference.performClick(Preference.java:1136) at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:249) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1165) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3134) at android.widget.AbsListView$3.run(AbsListView.java:4049) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 04-07 17:56:20.118 1406-5140/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 1004859 , only wrote 1002240 04-07 17:56:20.122 1406-5140/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 1002384 , only wrote 1002240 04-07 17:56:20.133 5086-5086/com.elixsr.portforwarder E/UncaughtException: android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.elixsr.portforwarder/cache/fwd_rule_list3598144147339057752.json exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958) at android.net.Uri.checkFileUriExposed(Uri.java:2356) at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941) at android.content.Intent.prepareToLeaveProcess(Intent.java:9735) at android.content.Intent.prepareToLeaveProcess(Intent.java:9741) at android.content.Intent.prepareToLeaveProcess(Intent.java:9720) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1742) at android.app.Activity.startActivityForResult(Activity.java:5153) at android.app.Activity.startActivityFromFragment(Activity.java:5129) at android.app.Activity$HostCallbacks.onStartActivityFromFragment(Activity.java:7602) at android.app.Fragment.startActivity(Fragment.java:1179) at android.app.Fragment.startActivity(Fragment.java:1158) at com.elixsr.portforwarder.ui.preferences.SettingsFragment.exportRules(SettingsFragment.java:325) at com.elixsr.portforwarder.ui.preferences.SettingsFragment.access$400(SettingsFragment.java:72) at com.elixsr.portforwarder.ui.preferences.SettingsFragment$4.onPreferenceClick(SettingsFragment.java:206) at android.preference.Preference.performClick(Preference.java:1136) at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:249) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1165) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3134) at android.widget.AbsListView$3.run(AbsListView.java:4049) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 04-07 17:56:20.377 5086-5635/com.elixsr.portforwarder I/FirebaseCrash: Sending crashes 04-07 17:56:20.384 1732-2469/system_process W/ActivityManager: Force finishing activity c
07-23 20:08:24.836 8776-8776/com.elixsr.portforwarder E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.elixsr.portforwarder, PID: 8776
java.lang.RuntimeException: Failure delivering result ResultInfo{who=android:fragment:0, request=1, result=-1, data=Intent { dat=content://com.google.android.apps.docs.storage/document/acc=6;doc=11404 flg=0x1 }} to activity {com.elixsr.portforwarder/com.elixsr.portforwarder.ui.preferences.SettingsActivity}: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 85 path $[0].isTcp
at android.app.ActivityThread.deliverResults(ActivityThread.java:3720)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 85 path $[0].isTcp
at com.google.gson.Gson.fromJson(Gson.java:902)
at com.elixsr.portforwarder.ui.preferences.SettingsFragment.onActivityResult(SettingsFragment.java:346)
at android.app.Activity.dispatchActivityResult(Activity.java:6466)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3716)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 85 path $[0].isTcp
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559)
at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1017)
at com.google.gson.stream.JsonReader.nextName(JsonReader.java:787)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.elixsr.portforwarder.ui.preferences.SettingsFragment.onActivityResult(SettingsFragment.java:346)
at android.app.Activity.dispatchActivityResult(Activity.java:6466)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3716)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Hi, I'd like to be able to forward all unused ports to a tethered device IP (i.e a DMZ). This would be very useful in permanent installations where a phone is being used as the primary internet connection for a dwelling, tethered to a Linux or FreeBSD router.
I wan to rout UDP packets coming on port X to the broadcast address of my LAN. I can setup the rul and start the service, but when a packet arrives the service stops saying "permission denied". This should not requrie any kind of root permissions, so I do not understand why Fwd is not able to to the forwarding.
need to setup a range of ports and range of IP's .0 -> .22 and ports 7000-7500
IP checker shows rmnet_data0 interface is private and the port forwarding is not working. What am I missing here?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.