madiele / vod2pod-rss

Vod2Pod-RSS converts a YouTube or Twitch channel into a podcast with ease. It creates a podcast RSS that can be listened to directly inside any podcast client. VODs are transcoded to MP3 on the fly and no server storage is needed!
MIT License
202 stars 5 forks source link

adding host to the config #134

Closed samtrek closed 6 months ago

samtrek commented 7 months ago

app version: 1.1.0


issue description: I am using audibookshelf to automate downloading of the audios from the link and it is banning the recursion (I am sure that is the right term) of the host back to the internal local IP when I am about to download the podcast from the supplied link (using the nginx and duckdns), so can we have a host in the docker-compose.yml?, A similar app that I am using podsync has a host in the config file, I will like to switch to vod2pod because it does not download the podcast into my PC, thank you.

madiele commented 6 months ago

I'm not sure I understood your setup...

I'll write what I think your doing and either confirm or not if I got it:

You are using vod2pod-rss to get an rss feed for a youtube channel, you are giving the feed generated by vod2pod-rss to audiobookshelf shelf that will automatically download the episodes

Correct?

If yes is vod2pod-rss hosted on the public internet?

Also if you can drop some logs here if you have them

samtrek commented 6 months ago

Nothing is wrong with vod2pod, the problem is actually with audiobookshelf, I am using a dns host name (duckdns) address pointed to my local ip address, the link generated by vod2pod exposes my local ip address to audiobookshelf, which is banning the downloading of podcast that is referring to local ip addresses due to an exploit due to this GHSA-mgj7-rfx8-vhpr. I had the same issue with podysnc, which has a host name option, once I supplied it with a host address it was resolved. Error: Call to 192.168.*.* is blocked. ERROR [PodcastManager] Podcast Episode download failed Error: Call to 192.168.*.* is blocked. my host address through nginx is *.duckdns.org (accessible only through internal private network)

madiele commented 6 months ago

Vod2pod-rss should take the host of where you are accessing it, are you generating the url by accessing the front end of vod2pod-rss from your browser on 192.168.x.x inside your lan? Can't you access the front end from your *.duckdns.org domain? Or you want vod2pod-rss to be internal only so that it can't be accessed from the internet?

BTW you can link vod2pod-rss to audiobookshelf by creating a docker external network and adding it to both docker compose, then you could give audiobookshelf something like (just replace the 192.168.x.x. portion with vod2pod) http://vod2pod/..../... And skirt around the limitation.

The option you are asking to be added if I got it right would be one to force the generated url to have a specific host independent of where you access the front end, right?

madiele commented 6 months ago

Ohhh, wait, your duckdns.org points to 192.168.x.x in your lan not your public address and then your modem forwards it to your local address, now I understood

samtrek commented 6 months ago

Yes, tried to link my public address to no avail with duckdns, my provider is not permitting it. So had to use my local lan IP with tailscale.

samtrek commented 6 months ago

Vod2pod-rss should take the host of where you are accessing it, are you generating the url by accessing the front end of vod2pod-rss from your browser on 192.168.x.x inside your lan? Can't you access the front end from your *.duckdns.org domain? Or you want vod2pod-rss to be internal only so that it can't be accessed from the internet?

BTW you can link vod2pod-rss to audiobookshelf by creating a docker external network and adding it to both docker compose, then you could give audiobookshelf something like (just replace the 192.168.x.x. portion with vod2pod) http://vod2pod/..../... And skirt around the limitation.

The option you are asking to be added if I got it right would be one to force the generated url to have a specific host independent of where you access the front end, right?

Yes that is the option I am looking for, I will be glad if you can implement it. Tried the option you gave above seems it is not working, created a private network then replaced the local Lan IP with the docker IP address.

madiele commented 6 months ago

then yes, the fix is to use docker external network and generate the url as you normally would, you get https://vod2pod-rss.duckdns.org/.../... Instead of adding this to audiobookshelf you add this http://vod2pod:8080/.../... (same url path but different host, notice http instead of https too). If this works for you I might consider a setting to do the replacement automatically.

Here the doc for external networks

https://docs.docker.com/compose/compose-file/06-networks/#external

samtrek commented 6 months ago

yes your suggestion seems to have worked, but their is a caveat, audiobookshelf seems to block any IP with 192.168.., some docker seems to use these for their own private network, I created something with 172.5. and it started working. So you can do the "replacement" even though I dont fully understand what you are referring to.

madiele commented 6 months ago

If it's fixed then I'll close the issue, if someone else has this kind of use case comment here or open a new issue and I'll consider adding the feature for real to force a custom domain in feed generation, but for now I'll hold of adding more complexity to the project.