dchang0 / torrentwatch-xa

Resurrection of TorrentWatch-X automatic RSS/Atom torrent episode downloader (broadcatcher) with the extra capability of handling anime torrents
GNU General Public License v2.0
26 stars 3 forks source link

Feeds update only when rss cache is cleared #14

Closed JohnDarkhorse closed 3 years ago

JohnDarkhorse commented 3 years ago

I've only been running this a few days but have noticed that the program doesn't update the feeds shown or download anything until I click "Empty Cache > Clear Cache > Feeds"

Is there a PHP command I can run alongside the existing cronjob that will clear the feed cache?

Running the December 1, 2020 release.

dchang0 commented 3 years ago

Hmm. There isn't a PHP command to clear the feed cache per se. All you have to do is set up a cron job that deletes the feed cache files from the cache directory /var/lib/torrentwatch-xa/dl_cache.

rm /var/lib/torrentwatch-xa/dl_cache/rsscache_* rm /var/lib/torrentwatch-xa/dl_cache/feedcache_*

But it might be better to fix the problem directly rather than do a workaround. I don't expect the deletion of the cache files to actually fix your problem, because I suspect that your cron job is not running with the proper permissions to either write to the cache files (and thus cannot update them) or to the directory the cache files are in.

What does your cron job entry look like? What user does your web server run as? What user and group own /var/lib/torrentwatch-xa/dl_cache?

For Debian/Ubuntu systems, the user is www-data for the cron job and the web server, and the owner and group of the directory /var/lib/torrentwatch-xa/dl_cache are both www-data.

JohnDarkhorse commented 3 years ago
What does your cron job entry look like?

The cronjob installation instructions were followed:

/etc/cron.d/torrentwatch-xa-cron

# /etc/cron.d/torrentwatch-xa: crontab fragment for torrentwatch-xa # Checks for new torrents every 15 minutes, which is a good starting # point because the feed cache(s) is marked old every 14 minutes, 50 seconds. */15 www-data /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php >/dev/null 2>&1

What user does your web server run as?
What user and group own /var/lib/torrentwatch-xa/dl_cache?

/var/www.html/torrentwatch-xa files are run under my user name. /lib/torrentwatch-xa/lib is run under my user name /lib/torrentwatch-xa/dl_cache and config_cache are run under www-data

dchang0 commented 3 years ago

Thanks. It might be that the cron job running as www-data cannot actually read and run the PHP file /var/www/html/torrentwatch-xa/twxa_cli.php

What are the owner, group, and permissions on /var/www/html/torrentwatch-xa/twxa_cli.php? I assume the owner is your user name. No idea what the group is. The permissions should be -rw-r--r-- (644) so that www-data can read the file.

Is it possible for you to change everything to www-data and not use your user name? If not, we'll keep working on it. It should still be possible to do if you use groups and group permissions properly.

dchang0 commented 3 years ago

Oh, there is another possibility. On some UNIX/LINUX flavors, the notation

*/15

doesn't work in crontabs.

For those system, you must change it to:

0,15,30,45

so that the line is:

0,15,30,45 * * * * www-data /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php >/dev/null 2>&1

But we should not try this until after verifying the permissions are correct.

JohnDarkhorse commented 3 years ago
What are the owner, group, and permissions on /var/www/html/torrentwatch-xa/twxa_cli.php?

Was: -rw-rw-r-- 1 me me 1577 Nov 30 00:55 /var/www/html/torrentwatch-xa/twxa_cli.php

now is

-rw-r--r-- 1 me me 1577 Nov 30 00:55 /var/www/html/torrentwatch-xa/twxa_cli.php

dchang0 commented 3 years ago

Okay. Your prior permissions were more permissive, so that is not likely the problem.

As yourself (logged in as "me"), run the cron job at the command line by typing:

/usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php

Do you get any errors?

If it runs and says nothing, then it likely worked properly. Then you should go check the cache files in the dl_cache directory. Check the owner, group, and modification datestamp.

It should look something like this:

-rw-rw-r-- 1 www-data www-data 165115 May 9 19:30 feedcache_acd50784f18eb929a9835d4c33b1f

It might be called rsscache and not feedcache.

If they did not change, then delete the cache files in dl_cache, then run the command again. Then go back and look, and you should see fresh cache files owned by me and group me like so:

-rw-rw-r-- 1 me me 165115 May 9 22:00 feedcache_acd50784f18eb929a9835d4c33b1f

Basically, you want to see the cron job command manually create the cache file when run as you. That verifies that it can at least get that far.

Next step would be to try to run the cron job command manually as www-data. But that will require that you enable www-data for shell access or su access.

JohnDarkhorse commented 3 years ago
As yourself (logged in as "me"), run the cron job at the command line by typing:

/usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php

Got this: PHP Warning: file_get_contents(/var/lib/torrentwatch-xa/config_cache/torrentwatch-xa-config.cache): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_config_lib.php on line 225 PHP Warning: file_get_contents(/var/lib/torrentwatch-xa/config_cache/torrentwatch-xa.config): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_config_lib.php on line 233 PHP Warning: file_put_contents(/var/log/twxalog): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_tools.php on line 91 PHP Warning: file_put_contents(/var/log/twxalog): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_tools.php on line 91 PHP Warning: file_put_contents(/var/log/twxalog): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_tools.php on line 91 PHP Warning: file_put_contents(/var/log/twxalog): failed to open stream: Permission denied in /var/lib/torrentwatch-xa/lib/twxa_tools.php on line 91

dchang0 commented 3 years ago

Okay, clear the cache files out like this:

sudo rm /var/lib/torrentwatch-xa/dl_cache/rsscache_*
sudo rm /var/lib/torrentwatch-xa/dl_cache/feedcache_*

Then run the cron job again as root:

sudo /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php
ls -l /var/lib/torrentwatch-xa/dl_cache/

You should see the cache file, and it should be owned by root:root, and it should have a fresh datestamp.

If that works, then destroy the cache files again like this:

sudo rm /var/lib/torrentwatch-xa/dl_cache/rsscache_*
sudo rm /var/lib/torrentwatch-xa/dl_cache/feedcache_*

Then this time run the cron job as yourself, without sudo.

/usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php
ls -l /var/lib/torrentwatch-xa/dl_cache/

I am pretty sure we have a simple permissions mismatch going on somewhere.

JohnDarkhorse commented 3 years ago

Followed latest instructions.

All went as expected until final "run cron job as self", which resulted in identical errors resulted as seen in https://github.com/dchang0/torrentwatch-xa/issues/14#issuecomment-836192367

dchang0 commented 3 years ago

Okay, that is what I expected. When you ran with sudo, since it has root power, it works. This proves that the script is at least able to write the fresh cache files to the correct path with root power. Then, you ran it as yourself, and it failed because of permissions mismatches.

So, let's do this.

First, clear the cache files out just in case:

sudo rm /var/lib/torrentwatch-xa/dl_cache/rsscache_*
sudo rm /var/lib/torrentwatch-xa/dl_cache/feedcache_*

Then change the cron job line to this:

0,15,30,45 * * * * www-data /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php

And then wait 15 minutes.

Why do this?

a) We change from the */15 notation to the older 0,15,30,45 notation just to be sure. b) We will see permissions errors show up in the cron log file (probably the system log, either /var/log/syslog or /var/log/messages).

If you do see the permissions errors in the cron log file, then we are absolutely sure that permissions is the cause.

Then, we can focus on fixing the permissions issues.

JohnDarkhorse commented 3 years ago

From /var/log/syslog:

May 10 01:02:01 serverX12 cron[516]: (*system*torrentwatch-xa-cron) INSECURE MODE (group/other writable) (/etc/cron.d/torrentwatch-xa-cron)

dchang0 commented 3 years ago

Hmm. Not what I expected, but still useful.

Did fresh cache files get written? Check and see. If not, then we are still very confident that it's a permissions issue, since it did work when you ran it using sudo as root.

JohnDarkhorse commented 3 years ago

No rsscache_* files are being written.

As an aside, I've not seen any feedcache_* files since installation.

Another aside: I used the "manual installation" instructions.

dchang0 commented 3 years ago

feedcache_* is for Atom feeds, so if you never used those, then they would never show up.

Okay, let's check to see what user the web server process is running under.

sudo ps aux|grep httpd

or

sudo ps aux|grep apache2

We are looking for lines like this:

root        2355  0.0  0.6 215064 24888 ?        Ss   Apr20   1:05 /usr/sbin/apache2 -k start
www-data  450940  0.0  0.6 290168 25280 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  450941  0.0  0.6 289420 24372 ?        S    00:00   0:00 /usr/sbin/apache2 -k start

The user would be www-data.

Once we know this, then we can decide what to do next.

dchang0 commented 3 years ago

Next will be your choice.

a) You can choose to make all the users and groups uniform. This is the stock method, making everything owned by www-data:www-data. You would run chown on a bunch of files and folders.

b) You can choose to open the permissions on the files and folders. This will work too, but it might be less secure than you need. You would run chmod on a bunch of files and folders.

JohnDarkhorse commented 3 years ago

Okay, let's check to see what user the web server process is running under.

root 60477 0.0 0.3 211704 26060 ? Ss May07 0:06 /usr/sbin/apache2 -k start www-data 92588 0.0 0.2 212008 21816 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92589 0.0 0.3 287496 27232 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92590 0.0 0.2 212008 19624 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92591 0.0 0.2 212280 20224 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92592 0.0 0.2 212008 19624 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92594 0.0 0.2 212008 19572 ? S 00:00 0:00 /usr/sbin/apache2 -k start www-data 92767 0.0 0.2 212008 19624 ? S 00:16 0:00 /usr/sbin/apache2 -k start

 

You can choose to make all the users and groups uniform. This is the stock method, making everything owned by www-data:www-data. You would run chown on a bunch of files and folders.

So make all the torrentwatch stuff owned by www-data?

dchang0 commented 3 years ago

Looks like your apache2 is running as the www-data user.

We should start conservatively if changing owners or permissions.

What does this command say?

ls -la /var/lib/torrentwatch-xa

This is what a stock installation looks like:

# ls -la /var/lib/torrentwatch-xa
total 84
drwxr-xr-x  6 root     root      4096 Dec  7 10:01 .
drwxr-xr-x 36 root     root      4096 Feb  4 23:20 ..
-rw-r--r--  1 root     root        89 Dec  7 10:01 .gitignore
drwxr-xr-x  2 www-data www-data  4096 May  9 07:45 config_cache
drwxr-xr-x  2 www-data www-data 57344 May  9 23:00 dl_cache
drwxr-xr-x  2 root     root      4096 Dec  7 10:01 examples
drwxr-xr-x  4 root     root      4096 Jan 25 12:25 lib

We need to pay close attention to the permissions and owners.

JohnDarkhorse commented 3 years ago

Ah, I recursively chown'd /var/www/html/torrentwatch-xa and /var/lib/torrentwatch-xa to www-data

Lemme redo /var/lib/torrentwatch-xa/lib

dchang0 commented 3 years ago

www-data should still work. You don't have to follow the root:root owner:group that is stock.

JohnDarkhorse commented 3 years ago

Changing /var/lib/torrentwatch-xa/lib to root ownership didn't do anything

Still getting this error message: May 10 01:31:01 server12 cron[516]: (*system*torrentwatch-xa-cron) INSECURE MODE (group/other writable) (/etc/cron.d/torrentwatch-xa-cron)

dchang0 commented 3 years ago

This should work.

sudo chown -R www-data:www-data /var/lib/torrentwatch-xa
sudo chown -R www-data:www-data /var/www/html/torrentwatch-xa
sudo chown -R www-data:www-data /var/lib/torrentwatch-xa/*_cache
sudo rm /var/lib/torrentwatch-xa/dl_cache/*cache_*

Then, we might have to go in and check the permissions of the files and directories, but I doubt it.

One other question: are you running SELINUX in enforcing mode?

JohnDarkhorse commented 3 years ago

All three directorys are owned by www-data

Dunno what SELINUX is. Am running Ubuntu 20.04.2 LTS

dchang0 commented 3 years ago

I think SELINUX is turned off on Ubuntu 20.04.2 LTS.

Once you've run this, then wait and see what the cron job does.

sudo rm /var/lib/torrentwatch-xa/dl_cache/*cache_*

dchang0 commented 3 years ago

If the cron job fails again, then the next step is to enable the ability to log in as www-data and then manually run the cron job as www-data.

It's kind of tedious but would be the next step.

You would do it this way:

Run this once:

sudo usermod --shell /bin/bash www-data

Then run this:

sudo rm /var/lib/torrentwatch-xa/dl_cache/*cache_*
sudo  su -l www-data -c '/usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php'

This should produce errors at the command line if it doesn't write the cache files.

dchang0 commented 3 years ago

If it produces the cache files without errors, then you can switch the www-data user's shell back to nologin with this command. Run this once at the end, only after everything is working:

sudo usermod --shell /usr/sbin/nologin www-data

JohnDarkhorse commented 3 years ago

running it as www-data produced cache files and no errors given at command line

dchang0 commented 3 years ago

That's good news.

Now, as long as the cron job has www-data in it like so:

0,15,30,45 * * * * www-data /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php

It should work going forward. All you have to do is wait 15 minutes and check the timestamps of the cache files.

Once you have confirmed that it's working, then I would let it run for several hours (maybe a whole 24 hours) for some Favorites to automatically download some shows.

At the very end, once everything is working, you can turn off the login for www-data with the command I gave in https://github.com/dchang0/torrentwatch-xa/issues/14#issuecomment-836252787

At the very end, you might also put the tail end of the cron job entry back, like this:

0,15,30,45 * * * * www-data /usr/bin/php -q /var/www/html/torrentwatch-xa/twxa_cli.php >/dev/null 2>&1

ALSO, please test the web UI too by clearing All the caches. It should force a re-creation of fresh cache files too. This is to make sure we didn't break the web UI while fixing the cron job.

Let me know how it goes after a few hours or days of testing so that we can close this issue.

JohnDarkhorse commented 3 years ago

Completely unrelated (would have DM'd you, but don't think that exists on GH), but would you have a website that explains the differences 'tween "simple", "glob" and "regexp"?

I thought I'd filtered out 720p and 1080p versions of one of my favorites and it downloaded a 720p version anyway :(

dchang0 commented 3 years ago

Oh, hmm. I should probably add more detail to the short explanation in USAGE.md.

In all three modes, the Item Title and Filter strings are both converted to lowercase only right before the string comparison.

simple = exact match of string starting at the beginning of the string. So, in simple mode, to match the title you need to spell it exactly. Uses the PHP strpos() function for string comparison.

glob = allows simple wildcards used in filesystem commands. Basically * and ?. Uses the PHP fnmatch() function for string comparison. The name comes from the PHP glob() function that fnmatch() is related to.

regexp = the default--uses Perl-compatible regular expression notation. Uses the PHP preg_match() function for string comparison.

In regexp mode, this is what I'd do for 1080p only:

Quality: 1080p

That should work fine and should never pull down 720p.

JohnDarkhorse commented 3 years ago

The last entry to the rsscache_* was 3-ish hours ago (back when it was run in the shell by www-data)

Since then, the rsscache_* files haven't been updated.

I went into the html interface & used the button to clear the feed caches and everything updated (so, we're back to the beginning of this issue)

EDITED

Since the cron.d entry is throwing INSECURE warnings, I disabled it and put the line into root's crontab. Still no workee.

You are a saint for putting this software out, but I think I will wait for the .deb file.

dchang0 commented 3 years ago

Could you check one more thing?

ls -la /var/log/twxalog

It should say:

-rw-r--r-- 1 www-data www-data 27061172 May 10 08:30 twxalog

Make sure the permissions are 644 and the owner:group are www-data:www-data.

dchang0 commented 3 years ago

Oh, hey, I found the solution.

It is indeed the cron INSECURE MODE error preventing the cron job from running at all.

Check out this other issue on a totally unrelated project for their solution.

https://github.com/webmin/webmin/issues/858

The solution for you would be:

sudo chmod 644 /etc/cron.d/torrentwatch-xa-cron
sudo chown root:root /etc/cron.d/torrentwatch-xa-cron

Then wait 15 minutes. If it doesn't work, try this command:

sudo touch /var/spool/cron/crontabs

JohnDarkhorse commented 3 years ago

Per https://github.com/dchang0/torrentwatch-xa/issues/14#issuecomment-836854155

. . . all is as you posted.

Per https://github.com/dchang0/torrentwatch-xa/issues/14#issuecomment-836860977

No more "INSECURE MODE" errors, but the installation is still not updating unless the "Empty Caches" > "Clear caches" > "RSS Feeds" is clicked.

You are a saint, but you should stop wasting your time with me (it's probably something I mungled up doing a manual install.) and see about rolling all this into a .deb file.

Making the deb file should be relatively easy, as there are no binary blobs here, so you can make one .deb for all architectures.

You don't need a repository or anything (the .deb can be served from here), and just include the instructions for folks to install it:

sudo dpkg -i /path/to/deb sudo apt-get -f install

The targetless apt-get install invocation will pull in any missing components (-the "-f" means "fix broken")

Also, the deb file can be installed by non-debian users.

dchang0 commented 3 years ago

Very interesting and weird.... At this point, your cron job is probably correct, but it is clear that there is still a permissions problem somewhere.

I'll generate a full list of the files and permissions and owner:group for you later from my working test instance. You'll be able to compare the entire list of files you have to the entire known-good list.

And thanks--I'll start looking into making the .deb file. It's been on my TODO list long enough, haha.

dchang0 commented 3 years ago

Here's a complete listing of all the files and processes that matter along with enough info to see the permissions, owner, group of each file and folder. You can check every file and folder you have against this list.

Make sure SELINUX is not installed on your machine. If it is installed, make sure it is not in enforcing mode.

# ls -ld /etc/cron.d
drwxr-xr-x 2 root root 4096 May  9 23:58 /etc/cron.d

# ls -la /etc/cron.d/torrentwatch-xa-cron 
-rw-r--r-- 1 root root 312 Dec  7 10:01 /etc/cron.d/torrentwatch-xa-cron

# find /var/lib/torrentwatch-xa/ -ls
  1574009      4 drwxr-xr-x   6 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/
  1574013     60 drwxr-xr-x   2 www-data www-data    57344 May 12 20:46 /var/lib/torrentwatch-xa/dl_cache
  1573324    156 -rw-r--r--   1 www-data www-data   155784 May 12 20:46 /var/lib/torrentwatch-xa/dl_cache/feedcache_acd50784f18eb929a9835d4c33b22c1f
  1574014      4 -rw-r--r--   1 www-data www-data      154 Dec  7 10:01 /var/lib/torrentwatch-xa/dl_cache/README.md
  1573321      4 -rw-rw-r--   1 www-data www-data       48 May 12 20:15 /var/lib/torrentwatch-xa/dl_cache/.Transmission-Session-Id
  1574015      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/examples
  1574017      4 -rwxr-xr-x   1 root     root         1010 Dec  7 10:01 /var/lib/torrentwatch-xa/examples/example-script.sh
  1574016      4 -rwxr-xr-x   1 root     root         1448 Dec  7 10:01 /var/lib/torrentwatch-xa/examples/example-mailscript.sh
  1574018      4 drwxr-xr-x   4 root     root         4096 Jan 25 12:25 /var/lib/torrentwatch-xa/lib
  1574124      4 -rw-r--r--   1 root     root          471 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_test_parser.php
  1579984     36 -rw-r--r--   1 root     root        33289 Jan 25 12:25 /var/lib/torrentwatch-xa/lib/twxa_parse.php
  1574123      4 -rw-r--r--   1 root     root         3562 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match6.php
  1574099     12 -rw-r--r--   1 root     root         9464 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/class.bdecode.php
  1574118     20 -rw-r--r--   1 root     root        20458 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match1.php
  1574110     36 -rw-r--r--   1 root     root        34131 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_config_lib.php
  1574109     12 -rw-r--r--   1 root     root         9413 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_cache.php
  1574102      4 drwxr-xr-x   3 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml
  1574107     16 -rwxr-xr-x   1 root     root        13188 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml/Security.php
  1574103      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml/Exception
  1574104      4 -rwxr-xr-x   1 root     root          342 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml/Exception/ExceptionInterface.php
  1574105      4 -rwxr-xr-x   1 root     root          446 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml/Exception/InvalidArgumentException.php
  1574106      4 -rwxr-xr-x   1 root     root          421 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/laminas-xml/Exception/RuntimeException.php
  1574019      4 drwxr-xr-x  14 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed
  1574039      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Filter
  1574042      8 -rwxr-xr-x   1 root     root         6587 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Filter/Html.php
  1574043      8 -rwxr-xr-x   1 root     root         4431 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Filter/Tag.php
  1574041      4 -rwxr-xr-x   1 root     root         3768 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Filter/Filter.php
  1574040     20 -rwxr-xr-x   1 root     root        17152 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Filter/Attribute.php
  1574078      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper
  1574080      4 -rwxr-xr-x   1 root     root          322 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper/ParserInterface.php
  1574083      8 -rwxr-xr-x   1 root     root         6320 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper/Scraper.php
  1574082      4 -rwxr-xr-x   1 root     root         2502 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper/RuleParser.php
  1574079      8 -rwxr-xr-x   1 root     root         6512 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper/CandidateParser.php
  1574081      4 -rwxr-xr-x   1 root     root         2624 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Scraper/RuleLoader.php
  1574037      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Encoding
  1574038      4 -rwxr-xr-x   1 root     root          832 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Encoding/Encoding.php
  1574066      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor
  1574069      4 -rwxr-xr-x   1 root     root         2177 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor/ItemPostProcessor.php
  1574067      4 -rwxr-xr-x   1 root     root          917 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor/ContentFilterProcessor.php
  1574068      4 -rwxr-xr-x   1 root     root          985 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor/ContentGeneratorProcessor.php
  1574071      4 -rwxr-xr-x   1 root     root         2072 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor/ScraperProcessor.php
  1574070      4 -rwxr-xr-x   1 root     root          427 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Processor/ItemProcessorInterface.php
  1574084      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization
  1574087      8 -rwxr-xr-x   1 root     root         5277 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization/SubscriptionListBuilder.php
  1574088      4 -rwxr-xr-x   1 root     root         2166 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization/SubscriptionListParser.php
  1574089      4 -rwxr-xr-x   1 root     root         3377 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization/SubscriptionParser.php
  1574086      4 -rwxr-xr-x   1 root     root         1234 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization/SubscriptionList.php
  1574085      4 -rwxr-xr-x   1 root     root         2913 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Serialization/Subscription.php
  1574048      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Logging
  1574049      4 -rwxr-xr-x   1 root     root         1910 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Logging/Logger.php
  1574090      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication
  1574094      4 -rwxr-xr-x   1 root     root         3029 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/FeedBuilder.php
  1574093      4 -rwxr-xr-x   1 root     root         1769 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/AtomItemBuilder.php
  1574098      4 -rwxr-xr-x   1 root     root         2062 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/Rss20ItemBuilder.php
  1574091      4 -rwxr-xr-x   1 root     root         1759 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/AtomFeedBuilder.php
  1574095      4 -rwxr-xr-x   1 root     root         3502 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/ItemBuilder.php
  1574097      4 -rwxr-xr-x   1 root     root         2496 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/Rss20Helper.php
  1574092      4 -rwxr-xr-x   1 root     root         3248 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/AtomHelper.php
  1574096      4 -rwxr-xr-x   1 root     root         2265 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Syndication/Rss20FeedBuilder.php
  1574021      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client
  1574033      4 -rwxr-xr-x   1 root     root          128 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/UnauthorizedException.php
  1574027      4 -rwxr-xr-x   1 root     root          179 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/InvalidCertificateException.php
  1574028      4 -rwxr-xr-x   1 root     root          163 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/InvalidUrlException.php
  1574034      8 -rwxr-xr-x   1 root     root         6680 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/Url.php
  1574029      4 -rwxr-xr-x   1 root     root          165 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/MaxRedirectException.php
  1574023      4 -rwxr-xr-x   1 root     root          199 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/ClientException.php
  1574022     16 -rwxr-xr-x   1 root     root        15676 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/Client.php
  1574032      4 -rwxr-xr-x   1 root     root          157 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/TimeoutException.php
  1574026      4 -rwxr-xr-x   1 root     root         1878 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/HttpHeaders.php
  1574024     16 -rwxr-xr-x   1 root     root        12324 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/Curl.php
  1574031      8 -rwxr-xr-x   1 root     root         5753 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/Stream.php
  1574030      4 -rwxr-xr-x   1 root     root          157 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/MaxSizeException.php
  1574025      4 -rwxr-xr-x   1 root     root          125 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Client/ForbiddenException.php
  1574035      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Config
  1574036      8 -rwxr-xr-x   1 root     root         4502 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Config/Config.php
  1574044      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Generator
  1574045      4 -rwxr-xr-x   1 root     root          375 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Generator/ContentGeneratorInterface.php
  1574047      4 -rwxr-xr-x   1 root     root         1537 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Generator/YoutubeContentGenerator.php
  1574046      4 -rwxr-xr-x   1 root     root          798 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Generator/FileContentGenerator.php
  1574050      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser
  1574054     12 -rwxr-xr-x   1 root     root         9676 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Item.php
  1574057      4 -rwxr-xr-x   1 root     root          227 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/ParserException.php
  1574051     16 -rwxr-xr-x   1 root     root        12320 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Atom.php
  1574058      8 -rwxr-xr-x   1 root     root         4894 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/ParserInterface.php
  1574056     12 -rwxr-xr-x   1 root     root        10986 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Parser.php
  1574052      4 -rwxr-xr-x   1 root     root         2865 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/DateParser.php
  1574060     12 -rwxr-xr-x   1 root     root        10435 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Rss20.php
  1574063      4 -rwxr-xr-x   1 root     root          195 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/XmlEntityException.php
  1574059     12 -rwxr-xr-x   1 root     root         9840 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Rss10.php
  1574062      4 -rwxr-xr-x   1 root     root          153 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Rss92.php
  1574061      4 -rwxr-xr-x   1 root     root          153 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Rss91.php
  1574064      8 -rwxr-xr-x   1 root     root         6226 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/XmlParser.php
  1574053      8 -rwxr-xr-x   1 root     root         5031 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/Feed.php
  1574055      4 -rwxr-xr-x   1 root     root          195 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Parser/MalformedXmlException.php
  1574072      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader
  1574073      8 -rwxr-xr-x   1 root     root         4189 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader/Favicon.php
  1574076      4 -rwxr-xr-x   1 root     root          183 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader/SubscriptionNotFoundException.php
  1574074      8 -rwxr-xr-x   1 root     root         5259 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader/Reader.php
  1574077      4 -rwxr-xr-x   1 root     root          185 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader/UnsupportedFeedFormatException.php
  1574075      4 -rwxr-xr-x   1 root     root          199 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Reader/ReaderException.php
  1574065      4 -rwxr-xr-x   1 root     root          171 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/PicoFeedException.php
  1574020      4 -rwxr-xr-x   1 root     root          700 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/PicoFeed/Base.php
  1574101     44 -rw-r--r--   1 root     root        42587 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/class.smtp.php
  1574119     40 -rw-r--r--   1 root     root        39511 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match2.php
  1574122      4 -rw-r--r--   1 root     root         2138 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match5.php
  1574108     16 -rw-r--r--   1 root     root        13187 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_atomparser.php
  1574112      8 -rw-r--r--   1 root     root         7854 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_feed_parser_wrapper.php
  1574117      4 -rw-r--r--   1 root     root         1607 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match0.php
  1574113      4 -rw-r--r--   1 root     root         3493 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_html.php
  1574125     12 -rw-r--r--   1 root     root        10326 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_tools.php
  1574126     28 -rw-r--r--   1 root     root        27778 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_torrent.php
  1574111     28 -rw-r--r--   1 root     root        26953 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_feed.php
  1574116     36 -rw-r--r--   1 root     root        34663 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match.php
  1574120     24 -rw-r--r--   1 root     root        22967 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match3.php
  1574121      4 -rw-r--r--   1 root     root         1450 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_parse_match4.php
  1574114     16 -rw-r--r--   1 root     root        12762 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/twxa_lastRSS.php
  1574100    144 -rw-r--r--   1 root     root       146763 Dec  7 10:01 /var/lib/torrentwatch-xa/lib/class.phpmailer.php
  1574011      4 drwxr-xr-x   2 www-data www-data     4096 May 12 08:45 /var/lib/torrentwatch-xa/config_cache
  1574012      4 -rw-r--r--   1 www-data www-data      173 Dec  7 10:01 /var/lib/torrentwatch-xa/config_cache/README.md
  1573354     12 -rw-rw----   1 www-data www-data    11132 May 12 20:43 /var/lib/torrentwatch-xa/config_cache/torrentwatch-xa-config.cache
  1573356     16 -rw-------   1 www-data www-data    13732 May 12 08:30 /var/lib/torrentwatch-xa/config_cache/torrentwatch-xa.config
  1574010      4 -rw-r--r--   1 root     root           89 Dec  7 10:01 /var/lib/torrentwatch-xa/.gitignore

# ls -ld /var/www/html
drwxr-xr-x 5 root root 4096 Dec  8 08:30 /var/www/html

# find /var/www/html/torrentwatch-xa/ -ls
   919230      4 drwxr-xr-x   6 root     root         4096 Feb 23 15:56 /var/www/html/torrentwatch-xa/
  1313225      4 drwxr-xr-x   2 root     root         4096 Feb 23 12:41 /var/www/html/torrentwatch-xa/javascript
  1313232      4 -rw-r--r--   1 root     root         1447 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery.tinysort.min.js
  1313236      4 -rw-r--r--   1 root     root         1366 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/twxa_ui_functions.js
  1313234     72 -rw-r--r--   1 root     root        72529 Feb 23 12:41 /var/www/html/torrentwatch-xa/javascript/torrentwatch-xa.js
  1313231     24 -rw-r--r--   1 root     root        22432 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery.form.min.js.map
  1313226     88 -rw-r--r--   1 root     root        89476 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery-3.5.1.min.js
  1313228     12 -rw-r--r--   1 root     root        10976 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery-migrate-3.3.1.min.js
  1313233      4 -rw-r--r--   1 root     root         1642 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/js.cookie-2.2.1.min.js
  1313230     20 -rw-r--r--   1 root     root        16598 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery.form.min.js
  1313237      4 -rw-r--r--   1 root     root         2195 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/twxa_utility_functions.js
  1313235      8 -rw-r--r--   1 root     root         6043 Feb 23 10:36 /var/www/html/torrentwatch-xa/javascript/twxa_event_bindings.js
  1313227    136 -rw-r--r--   1 root     root       137986 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery-3.5.1.min.map
  1313229      8 -rw-r--r--   1 root     root         4246 Dec  7 10:01 /var/www/html/torrentwatch-xa/javascript/jquery.cookie.js
   920069      8 -rw-r--r--   1 root     root         5655 Dec  7 10:01 /var/www/html/torrentwatch-xa/twxa_fav_import.php
   917685      8 -rw-r--r--   1 root     root         7957 Feb 23 15:56 /var/www/html/torrentwatch-xa/index.html
  1181910      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/www/html/torrentwatch-xa/images
  1181946      4 -rw-r--r--   1 root     root          948 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo22.png
  1181934      4 -rw-r--r--   1 root     root          147 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_stop_20x20.png
  1181928      4 -rw-r--r--   1 root     root          162 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_pause_20x20.png
  1181921      4 -rw-r--r--   1 root     root          689 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/search_32x32.png
  1181916      4 -rw-r--r--   1 root     root           49 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/blank.gif
  1181918      4 -rw-r--r--   1 root     root          312 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/dropdown.png
  1181936      4 -rw-r--r--   1 root     root          355 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_trash_20x20.png
  1181943      4 -rw-r--r--   1 root     root         1361 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo16@2x.png
  1181933      4 -rw-r--r--   1 root     root          390 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_start_40x40.png
  1181929      4 -rw-r--r--   1 root     root          160 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_pause_40x40.png
  1181941      8 -rw-r--r--   1 root     root         5240 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo152.png
  1181940      8 -rw-r--r--   1 root     root         5039 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo144.png
  1181938      4 -rw-r--r--   1 root     root         3932 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo114.png
  1181925      4 -rw-r--r--   1 root     root          142 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_hide_40x40.png
  1181950      4 -rw-r--r--   1 root     root         2732 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo72.png
  1181926      4 -rw-r--r--   1 root     root          355 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_move_20x20.png
  1181922      4 -rw-r--r--   1 root     root          359 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_fav_20x20.png
  1181944      8 -rw-r--r--   1 root     root         6102 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo180.png
  1181931      4 -rw-r--r--   1 root     root          346 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_resume_40x40.png
  1181913      4 -rw-r--r--   1 root     root         1084 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/arrow-left.png
  1181927      4 -rw-r--r--   1 root     root          377 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_move_40x40.png
  1181935      4 -rw-r--r--   1 root     root          156 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_stop_40x40.png
  1181930      4 -rw-r--r--   1 root     root          261 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_resume_20x20.png
  1181932      4 -rw-r--r--   1 root     root         1024 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_start_20x20.png
  1181915      4 -rw-r--r--   1 root     root         1077 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/arrow.png
  1181924      4 -rw-r--r--   1 root     root          962 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_hide_20x20.png
  1181951      4 -rw-r--r--   1 root     root          693 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/webui.png
  1181939      8 -rw-r--r--   1 root     root         4131 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo120.png
  1181948      4 -rw-r--r--   1 root     root         1361 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo32.png
  1181949      4 -rw-r--r--   1 root     root         2250 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo57.png
  1181912     12 -rw-r--r--   1 root     root        10819 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/ajaxload.gif
  1181919     36 -rw-r--r--   1 root     root        32988 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/favicon.ico
  1181937      4 -rw-r--r--   1 root     root          680 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_trash_40x40.png
  1181917      4 -rw-r--r--   1 root     root         1447 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/btn_donate_SM.gif
  1181920      4 -rw-r--r--   1 root     root          509 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/refresh_32x32.png
  1181942      4 -rw-r--r--   1 root     root          730 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo16.png
  1181914      4 -rw-r--r--   1 root     root         1082 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/arrow-right.png
  1181945      8 -rw-r--r--   1 root     root         6617 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo192.png
  1181947      4 -rw-r--r--   1 root     root         1771 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/torrentwatch-xa-logo22@2x.png
  1181911      4 -rw-r--r--   1 root     root          673 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/ajax-loader-small.gif
  1181923      4 -rw-r--r--   1 root     root         1864 Dec  7 10:01 /var/www/html/torrentwatch-xa/images/tor_fav_40x40.png
   920064      4 -rw-r--r--   1 root     root          146 Dec  7 10:01 /var/www/html/torrentwatch-xa/README.md
  1448354      4 drwxr-xr-x   2 root     root         4096 Feb 23 12:37 /var/www/html/torrentwatch-xa/templates
  1448356      4 -rw-r--r--   1 root     root         1525 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/favorites.tpl
  1448362      4 -rw-r--r--   1 root     root          323 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/transmission.tpl
  1448360      4 -rw-r--r--   1 root     root          647 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/history.tpl
  1448359     32 -rw-r--r--   1 root     root        32121 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/global_config.tpl
  1448361      4 -rw-r--r--   1 root     root         1963 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/legend.tpl
  1448355      4 -rw-r--r--   1 root     root          593 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/clear_cache.tpl
  1444435      8 -rw-r--r--   1 root     root         5030 Feb 23 12:37 /var/www/html/torrentwatch-xa/templates/feed_item.tpl
  1448357      8 -rw-r--r--   1 root     root         5187 Dec  7 10:01 /var/www/html/torrentwatch-xa/templates/favorites_info.tpl
   920065      4 -rw-r--r--   1 root     root         1039 Dec  7 10:01 /var/www/html/torrentwatch-xa/config.php
   920068      4 -rw-r--r--   1 root     root         1577 Dec  7 10:01 /var/www/html/torrentwatch-xa/twxa_cli.php
  1050628      4 drwxr-xr-x   2 root     root         4096 Dec  7 10:01 /var/www/html/torrentwatch-xa/css
  1050633     32 -rw-r--r--   1 root     root        29269 Dec  7 10:01 /var/www/html/torrentwatch-xa/css/torrentwatch-xa.css
  1050632      4 -rw-r--r--   1 root     root         1850 Dec  7 10:01 /var/www/html/torrentwatch-xa/css/tablet.css
  1050630      4 -rw-r--r--   1 root     root         3069 Dec  7 10:01 /var/www/html/torrentwatch-xa/css/phone.css
  1050629      4 -rw-r--r--   1 root     root          248 Dec  7 10:01 /var/www/html/torrentwatch-xa/css/ie.css
  1050631      4 -rw-r--r--   1 root     root         1058 Dec  7 10:01 /var/www/html/torrentwatch-xa/css/reset.css
   920063      4 -rw-r--r--   1 root     root           18 Dec  7 10:01 /var/www/html/torrentwatch-xa/.gitignore
   920067     32 -rw-r--r--   1 root     root        29515 Feb 23 12:55 /var/www/html/torrentwatch-xa/torrentwatch-xa.php

# ps aux|grep apache2
root        2355  0.0  0.6 215064 24800 ?        Ss   Apr20   1:15 /usr/sbin/apache2 -k start
www-data  498278  0.0  0.6 290176 26012 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  498279  0.0  0.6 289232 23820 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  498280  0.0  0.6 289232 24160 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  498281  0.0  0.6 289232 23868 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  498284  0.0  0.7 291968 30224 ?        S    00:00   0:00 /usr/sbin/apache2 -k start
www-data  512100  0.0  0.6 289232 24176 ?        S    20:37   0:00 /usr/sbin/apache2 -k start
www-data  512101  0.0  0.6 289232 24180 ?        S    20:37   0:00 /usr/sbin/apache2 -k start

ls -la /var/log/twxalog

-rw-r--r-- 1 www-data www-data 27061172 May 10 08:30 twxalog
JohnDarkhorse commented 3 years ago

Here is the problem:

Your "manual instructions" do not have any guidance for directory/file permissions.

The procedure:

git clone url-to-rep ## this gets all the folders & files down with permissions of "myuser"

So when moving the directories & files as directed, I had to guess the file permissions (/var/www/html/torrentwatch-xa was owned by www-data - not root [cuz "web server stuff" = "www-data", right?]) Some of the directories in /var/lib/torrentwatch-xa were not as indicated, either. All permissions are as indicated, now.

Still better to have a deb file, where all that's taken care of :)

Not everyone is sharp about this stuff, so when providing instructions, you should aim at the "lowest common denominator"

 

Still don't know if it's working, as I don't have a lot of shows automated (it will likely be 18-ish hours before the next scheduled show becomes available)

 

Edited: Still not updating without emptying the feed cache.

dchang0 commented 3 years ago

You are correct, which is one reason I'd like to solve the problem, so that I know what permissions to put into the install script, the manual instructions, and the .deb file.

dchang0 commented 3 years ago

Re: Still not updating without emptying the feed cache.

Wow, this is a head-scratcher.

Could you check the file /var/log/twxalog and see if it says anything? Be sure to set Configure > Interface > Log Level to DEBUG and then let the cron job run. It should show either zero lines from the cron job (in which case it's being blocked from running at all) or some lines (in which case we can figure out exactly when it's breaking).

If you run the web UI while the log is in DEBUG level, you'll see how that works and watch as it succeeds when you empty the feed cache. That might be useful to observe if we can see a difference between when it works because you emptied the feed cache and when it doesn't work on its own running off the cron job.

BTW, at this point, I'm not sure a .deb file would solve your issue. There's only so much a .deb file can do, and I think we've covered all of those points (permissions, owners:groups, putting files in the right locations).

Thanks!

JohnDarkhorse commented 3 years ago

Before now, there was nothing in the twxalog since the 10th

Still doesn't update unless I manually empty the cache.

BTW, at this point, I'm not sure a .deb file would solve your issue. There's only so much a .deb file can do, and I think we've covered all of those points (permissions, owners:groups, putting files in the right locations).

Au contraire, mon ami! The deb file is installed by root (or sudo), so if you create the deb with all the files & folders having the proper permissions, so they will be installed into the target machine with all the proper permissions.

dchang0 commented 3 years ago

Re: Not seeing any errors in DEBUG mode in twxalog:

Chances are the cron job is not running at all or is somehow getting blocked. Do you see any cron errors in the system log?

Re: deb file & proper permissions

Well, what I'm saying is that I don't think this is a permissions issue that can be fixed by getting the permissions or owner:group of all the files belonging to torrentwatch-xa correct. (You did so manually by following the huge list of files--that is every file that the .deb package would deliver.)

In other words, the continuing problem seems to be something related to the cron process itself.

It would not surprise me if I built a .deb file that the problem persists in your case.

Still, I will have to build a .deb file someday anyway, so I'll work on that next.

JohnDarkhorse commented 3 years ago

Chances are the cron job is not running at all or is somehow getting blocked. Do you see any cron errors in the system log?

Not since the INSECURE MODE problem was fixed.

dchang0 commented 3 years ago

Thanks. Next step would be to destroy the installation and redo it using the install script (which has some permissions-related commands). After that would be to try the .deb file that I will eventually build. If it isn't fixed by then, then it's definitely something in the OS instance...

JohnDarkhorse commented 3 years ago

This has been resolved via my installing following the commands in the install script (I just don't like install scripts) and the software is updating regularly, but . .

https://github.com/dchang0/torrentwatch-xa/issues/16

dchang0 commented 3 years ago

A question: how do you know the software is updating regularly? (By this I think you mean that the cron job is successfully running...)

BTW, I am studying how to make the .deb package, but it sure is confusing since there are so many guides and some are adamant that I need to do it the right way and package from source.

dchang0 commented 3 years ago

Based on your answer to #16, it does look like this issue is fully solved. Thanks for hanging in there!