diff --git a/src/freedombone-app-smolrss b/src/freedombone-app-smolrss index e1b743fd9cb92d95758acb74fb29e6bb4394a937..a7dfb660de46c277a7742ec647a592bfd0daf9ee 100755 --- a/src/freedombone-app-smolrss +++ b/src/freedombone-app-smolrss @@ -43,6 +43,19 @@ smolrss_variables=(ONION_ONLY DDNS_PROVIDER MY_USERNAME) +function smolrss_update_settings_template { + # Creates rss feeds list within the web UI + read_config_param SMOLRSS_DOMAIN_NAME + # shellcheck disable=SC2154 + app_settings_screen_template="$webadmin_install_dir/settings_smolrss_template.html" + app_settings_screen="$webadmin_install_dir/settings_smolrss.html" + cp "$app_settings_screen_template" "$app_settings_screen" + feedslist=$(sed 's@[/\&]@\\&@g;s/$/\\/' "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs/feeds.txt"; echo .) + feedslist=${feedslist%.} + sed -i "s|RSSFEEDS|$feedslist|g" "$app_settings_screen" + chown www-data:www-data "$app_settings_screen" +} + function logging_on_smolrss { echo -n '' } diff --git a/src/freedombone-installer b/src/freedombone-installer index e7fa01d1ff488a8fcb3b7226b5d19c2e20f97e30..51b0852a1f815faf8e4276eee248bdeae9734b7f 100755 --- a/src/freedombone-installer +++ b/src/freedombone-installer @@ -52,6 +52,7 @@ FIREWALL_DOMAINS=/root/${PROJECT_NAME}-firewall-domains.cfg local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin" +smolrss_file="$webadmin_install_dir/.rssfeeds.txt" syncthing_file="$webadmin_install_dir/.syncthing.txt" appsettings_file="$webadmin_install_dir/.appsettings.txt" factoryreset_file="$webadmin_install_dir/.factoryreset.txt" @@ -1416,6 +1417,18 @@ function syncthing_update_settings_template { chown www-data:www-data "$app_settings_screen" } +function smolrss_update_settings_template { + # Creates rss feeds list within the web UI + # shellcheck disable=SC2154 + app_settings_screen_template="$webadmin_install_dir/settings_smolrss_template.html" + app_settings_screen="$webadmin_install_dir/settings_smolrss.html" + cp "$app_settings_screen_template" "$app_settings_screen" + feedslist=$(sed 's@[/\&]@\\&@g;s/$/\\/' "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs/feeds.txt"; echo .) + feedslist=${feedslist%.} + sed -i "s|RSSFEEDS|$feedslist|g" "$app_settings_screen" + chown www-data:www-data "$app_settings_screen" +} + function update_syncthing { if [ -f "$syncthing_file" ]; then @@ -1454,6 +1467,43 @@ function update_syncthing { fi } +function update_smolrss { + if [ -f "$smolrss_file" ]; then + + SMOLRSS_DOMAIN_NAME=$(grep 'SMOLRSS_DOMAIN_NAME=' "/root/${PROJECT_NAME}.cfg" | awk -F '=' '{print $2}') + + cd "/var/www/$SMOLRSS_DOMAIN_NAME/htdocs" || return + + if [ -f "feeds.new" ]; then + rm "feeds.new" + fi + touch "feeds.new" + + feeds_lines_ctr=0 + while read -r line; do + if [ $feeds_lines_ctr -gt 1024 ]; then + # This prevents someone copy-pasting a giant amount of text + # into the rss feeds + break + fi + feeds_lines_ctr=$((feeds_lines_ctr + 1)) + + if [ "$line" ]; then + # remove leading and trailing spaces + newline="$(echo -e "${line}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" + echo "$newline" >> "feeds.new" + fi + done < "$smolrss_file" + + mv "feeds.new" feeds.txt + ./create_feeds feeds.txt > feeds.xml + chown www-data:www-data feeds.txt + + rm "$smolrss_file" + smolrss_update_settings_template + fi +} + function update_blocklist { if [ -f "$blocklist_file" ]; then @@ -1779,6 +1829,7 @@ do add_remove_users update_app_settings update_syncthing + update_smolrss webadmin_upgrade install_apps_from_webadmin sleep 1 diff --git a/webadmin/EN/settings_smolrss_template.html b/webadmin/EN/settings_smolrss_template.html new file mode 100644 index 0000000000000000000000000000000000000000..c7c934fdc44cd7f397ca094d0441579363d8508b --- /dev/null +++ b/webadmin/EN/settings_smolrss_template.html @@ -0,0 +1,125 @@ +<!DOCTYPE html> +<html> + <head> + <style> + #headerpic { + width: 60%; + height: auto; + margin-right : auto; + margin-left : auto; + min-width : 220px; + } + + .header { + text-align: center; + padding: 32px; + } + + .card { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); + max-width: 600px; + margin: auto; + text-align: center; + font-family: arial; + clear: both; + } + + .card input[type=text] { + width: 90%; + clear: both; + text-align: center; + color: black; + background-color: lightblue; + } + + .appurl { + color: grey; + font-size: 100%; + } + + .welcomeheader { + color: black; + font-size: 200%; + font-weight: bold; + } + + .descriptiontext { + color: black; + font-size: 90%; + } + + .logintext { + color: black; + font-size: 120%; + font-weight: bold; + color: #981737; + } + + button { + border: none; + outline: 0; + display: inline-block; + padding: 8px; + color: white; + background-color: #000; + text-align: center; + cursor: pointer; + width: 100%; + font-size: 18px; + } + + a { + text-decoration: none; + color: black; + } + + button:hover, a:hover { + opacity: 0.7; + } + + .chip { + display: inline-block; + padding: 0 25px; + height: 50px; + font-size: 70%; + line-height: 50px; + border-radius: 25px; + background-color: #f1f1f1; + } + + .chip img { + float: left; + margin: 0 10px 0 -25px; + height: 50px; + width: 50px; + border-radius: 50%; + } + + textarea { + width: 90%; + color: black; + font-weight: bold; + background: lightblue; + font-size: 120%; + } + </style> + </head> + <body> + <div class="card"> + <div class="header"> + <a href="app_smolrss.html"><img id="headerpic" class="img-responsive" src="images/logo.png"></a><br> + + <p class="descriptiontext">RSS Feeds</p> + + <form action="settings_smolrss.php" method="post"> + <textarea rows="10" cols="50" name="feeds">RSSFEEDS</textarea> + <br><br> + <input type="submit" name="submitcancel" value="Cancel"> + <input type="submit" name="submitfeeds" value="Update"> + </form> + + <br> + </div> + </div> + </body> +</html> diff --git a/webadmin/settings_smolrss.php b/webadmin/settings_smolrss.php new file mode 100755 index 0000000000000000000000000000000000000000..91479b1ff2ca9c4c491d0572de509df93bc3593c --- /dev/null +++ b/webadmin/settings_smolrss.php @@ -0,0 +1,19 @@ +<?php + +// SmolRSS feeds + +$output_filename = "app_smolrss.html"; + +if (isset($_POST['submitfeeds'])) { + $feeds = htmlspecialchars($_POST['feeds']); + + $feeds_file = fopen(".rssfeeds.txt", "w") or die("Unable to create feeds file"); + fwrite($feeds_file, $feeds); + fclose($feeds_file); +} + +$htmlfile = fopen("$output_filename", "r") or die("Unable to open $output_filename"); +echo fread($htmlfile,filesize("$output_filename")); +fclose($htmlfile); + +?>