text:
CSS not loading; website loads blank html

Hello i installed the latest version of the software i pulled from github yesterday.. I have tried three clean installations one on ampps localhost and another on my digital ocean vps with a lamp environment...and another on  a wamp local host. I get the same issues still! CSS never loads. I have tried all fix i can read up online like clearing caches both in ph7builder, my browser and the server but still no changes. Please help!

It’s the content there with no style or is the screen empty?

the content is there with no style.
https://jossymall.com

You have a couple of problems, you have a valid SSL but you have content that is http:// this is normally a logo or profile image. upload any images again via https://jossymall.com
And you are using Nginx and the site is Gzip encoding the stylesheets but your server is not configured for this. You need to go to https://jossymall.com/admin123 and find the Settings link for the cache settings, its called "Cache Settings" , disable all but the top 2 settings.
Then you need to clear the server cache the link is called "Cache Manger" then finally clear your browsers cache (browsing history etc)
Now your site will look normal!

Read this
https://docs.nginx.com/nginx/admin-guide/web-server/compression/
This would also solve your issue!

thanks for the responses but the problem remain unsolved. error log looks like this
2020/04/19 11:09:26 [error] 4377#4377: *2229 "/var/www/www-root/data/www/jossymall.com//asset/gzip/index.php" is not found (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/gzip/?t=js&d=templates/themes/base/js/&f=global.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:09:26 [error] 4377#4377: *2228 openat() "/var/www/www-root/data/www/jossymall.com//asset/js/mailcheck.js" failed (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/js/mailcheck.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:09:26 [error] 4377#4377: *2229 openat() "/var/www/www-root/data/www/jossymall.com//asset/js/script.js" failed (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/js/script.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:09:26 [error] 4377#4377: *2228 "/var/www/www-root/data/www/jossymall.com//asset/gzip/index.php" is not found (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/gzip/?t=js&d=.&f=static/js/jquery/carouFredSel.js,templates/themes/base/js/splash.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:09:26 [error] 4377#4377: *2229 "/var/www/www-root/data/www/jossymall.com//asset/gzip/index.php" is not found (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/gzip/?t=js&d=static/js/&f=jquery/box.js,jquery/tipTip.js,bootstrap.js,common.js,str.js,holder.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:09:29 [error] 4377#4377: *2228 "/var/www/www-root/data/www/jossymall.com//asset/gzip/index.php" is not found (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /asset/gzip/?t=js&d=templates/themes/base/js/&f=global.js HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/"
2020/04/19 11:10:04 [error] 4377#4377: *2238 openat() "/var/www/www-root/data/www/jossymall.com//admin123/tool/cacheconfig" failed (2: No such file or directory), client: 197.211.61.75, server: jossymall.com, request: "GET /admin123/tool/cacheconfig HTTP/1.1", host: "jossymall.com", referrer: "https://jossymall.com/admin123/tool/cache"

What have you tried? Did you do what I said above? You still have gzip in the URL so you have not done everything I explained. Also there is double ````//'''' too.
Set up a temp admin account and email the login details to hey@undefined-variables.com and I will have a quick look!

I sent the email with admin details and login details to the hosting vps.
I really have no idea what to do again @Undefined-Variables

I have the info, give me some time and I will look!

Thanks! m counting on you sire.

Copy and paste your .htaccess  and your nginx.conf files here. This is down to server mis configuration as nothing is working in the admin panel either.  I cant do anything.

okay...copying
.htaccess
####################
File:           .htaccess
Author:         Pierre-Henry Soria hello@ph7cms.com
Copyright:      (c) 2012-2019, Pierre-Henry Soria. All Rights Reserved.
License:        GNU General Public License; See PH7.LICENSE.txt and PH7.COPYRIGHT.txt in the root directory.
####################
Note: You can remove some lines below if your Apache server already supports one of the parameters below (this will relieve Apache since this file is read on every request).
Finally, if your host allows it, you are strongly advised to put these settings in your Apache configuration file (httpd.conf).

        Options -MultiViews -Indexes

    Options +FollowSymLinks
RewriteEngine On

## Uncomment the below "#RewriteBase /" (remove "#") if pH7CMS is installed in a folder, and add the folder name after the slash "/"
## Example: If pH7CMS is installed in "/public_html/ph7cms/", then it should be "RewriteBase /ph7cms/", however it may depends of your Apache configuration.
## If you need, please ask your hosting company or check the Apache doc: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

# RewriteBase /

    php_flag allow_url_include Off
    php_flag expose_php Off

Security and Spam
Protect the repository directory

    RewriteRule "(^|/)\.git" - [F,L]

Remove Apache version
#ServerTokens Prod
Remove the version number and installed module versions in the list at the bottom error pages (404, 403, ...)
ServerSignature Off
Deny access to all CGI, Perl, Python, Bash, SQL, Template, INI configuration, cache, log, temporary and text files
<FilesMatch ".(cgi|pl|py|sh|bash|sql|tpl|ini|cache|log|tmp|txt|md)$">
# Apache 2.4+

Require all denied

# Apache 2.2
<IfModule !mod_authz_core.c>
    Deny from all
</IfModule>

Leave open the humans.txt and robots.txt file
<FilesMatch "humans.txt|robots.txt|(app-)?ads.txt">
# Apache 2.4+

Require all granted

# Apache 2.2
<IfModule !mod_authz_core.c>
    Allow from all
</IfModule>

Deny access for "composer.json" and "sample.htaccess" (since they won't be removed after packaging by _tools/deployment.sh)
<FilesMatch "composer.json|sample.htaccess">
# Apache 2.4+

Require all denied

# Apache 2.2
<IfModule !mod_authz_core.c>
    Deny from all
</IfModule>

Prevent .htaccess/.htpasswd from being downloaded
<Files ~ "^.ht">
# Apache 2.4+

Require all denied

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
    Satisfy all
</IfModule>

Block bots spam

    SetEnvIfNoCase User-Agent "^aesop_com_spiderman" bad_bot
    SetEnvIfNoCase User-Agent "^BackWeb" bad_bot
    SetEnvIfNoCase User-Agent "^Bandit" bad_bot
    SetEnvIfNoCase User-Agent "^BatchFTP" bad_bot
    SetEnvIfNoCase User-Agent "^Buddy" bad_bot
    SetEnvIfNoCase User-Agent "^[Ww]eb[Bb]andit" bad_bot
    SetEnvIfNoCase User-Agent "^2icommerce" bad_bot
    SetEnvIfNoCase User-Agent "^80legs.com" bad_bot
    SetEnvIfNoCase User-Agent "^Accoona" bad_bot
    SetEnvIfNoCase User-Agent "^ActiveTouristBot" bad_bot
    SetEnvIfNoCase User-Agent "^adressendeutschland" bad_bot
    SetEnvIfNoCase User-Agent "^aipbot" bad_bot
    SetEnvIfNoCase User-Agent "^Alexibot" bad_bot
    SetEnvIfNoCase User-Agent "^Alligator" bad_bot
    SetEnvIfNoCase User-Agent "^AllSubmitter" bad_bot
    SetEnvIfNoCase User-Agent "^almaden" bad_bot
    SetEnvIfNoCase User-Agent "^anarchie" bad_bot
    SetEnvIfNoCase User-Agent "^Anonymous" bad_bot
    SetEnvIfNoCase User-Agent "^Apexoo" bad_bot
    SetEnvIfNoCase User-Agent "^Aqua_Products" bad_bot
    SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot
    SetEnvIfNoCase User-Agent "^asterias" bad_bot
    SetEnvIfNoCase User-Agent "^ASSORT" bad_bot
    SetEnvIfNoCase User-Agent "^ATHENS" bad_bot
    SetEnvIfNoCase User-Agent "^AtHome" bad_bot
    SetEnvIfNoCase User-Agent "^Atomz" bad_bot
    SetEnvIfNoCase User-Agent "^attache" bad_bot
    SetEnvIfNoCase User-Agent "^autoemailspider" bad_bot
    SetEnvIfNoCase User-Agent "^autohttp" bad_bot
    SetEnvIfNoCase User-Agent "^b2w" bad_bot
    SetEnvIfNoCase User-Agent "^bew" bad_bot
    SetEnvIfNoCase User-Agent "^BackDoorBot" bad_bot
    SetEnvIfNoCase User-Agent "^Badass" bad_bot
    SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
    SetEnvIfNoCase User-Agent "^Baiduspider+" bad_bot
    SetEnvIfNoCase User-Agent "^BecomeBot" bad_bot
    SetEnvIfNoCase User-Agent "^berts" bad_bot
    SetEnvIfNoCase User-Agent "^Bitacle" bad_bot
    SetEnvIfNoCase User-Agent "^bigfoot" bad_bot
    SetEnvIfNoCase User-Agent "^Biz360" bad_bot
    SetEnvIfNoCase User-Agent "^Black.Hole" bad_bot
    SetEnvIfNoCase User-Agent "^BlackWidow" bad_bot
    SetEnvIfNoCase User-Agent "^bladder\ fusion" bad_bot
    SetEnvIfNoCase User-Agent "^Blog\ Checker" bad_bot
    SetEnvIfNoCase User-Agent "^BlogPeople" bad_bot
    SetEnvIfNoCase User-Agent "^Blogshares\ Spiders" bad_bot
    SetEnvIfNoCase User-Agent "^Bloodhound" bad_bot
    SetEnvIfNoCase User-Agent "^BlowFish" bad_bot
    SetEnvIfNoCase User-Agent "^Board\ Bot" bad_bot
    SetEnvIfNoCase User-Agent "^Bookmark\ search\ tool" bad_bot
    SetEnvIfNoCase User-Agent "^BotALot" bad_bot
    SetEnvIfNoCase User-Agent "^BotRightHere" bad_bot
    SetEnvIfNoCase User-Agent "^Bot\ mailto:craftbot@yahoo.com" bad_bot
    SetEnvIfNoCase User-Agent "^Bropwers" bad_bot
    SetEnvIfNoCase User-Agent "^Browsezilla" bad_bot
    SetEnvIfNoCase User-Agent "^BTWebClient" bad_bot
    SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_bot
    SetEnvIfNoCase User-Agent "^Bullseye" bad_bot
    SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot
    SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot
    SetEnvIfNoCase User-Agent "^CFNetwork" bad_bot
    SetEnvIfNoCase User-Agent "^CheeseBot" bad_bot
    SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot
    SetEnvIfNoCase User-Agent "^Crescent" bad_bot
    SetEnvIfNoCase User-Agent "^charlotte/" bad_bot
    SetEnvIfNoCase User-Agent "^ChinaClaw" bad_bot
    SetEnvIfNoCase User-Agent "^Convera" bad_bot
    SetEnvIfNoCase User-Agent "^Copernic" bad_bot
    SetEnvIfNoCase User-Agent "^Copier" bad_bot
    SetEnvIfNoCase User-Agent "^CopyRightCheck" bad_bot
    SetEnvIfNoCase User-Agent "^cosmos" bad_bot
    SetEnvIfNoCase User-Agent "^cr4nk" bad_bot
    SetEnvIfNoCase User-Agent "^Crescent" bad_bot
    SetEnvIfNoCase User-Agent "^c-spider" bad_bot
    SetEnvIfNoCase User-Agent "^Winnie Poh" bad_bot
    SetEnvIfNoCase User-Agent "^Akregator" bad_bot
    SetEnvIfNoCase User-Agent "^ac-baidu" bad_bot
    SetEnvIfNoCase User-Agent "^(Ubuntu-feisty)$" bad_bot
    SetEnvIfNoCase User-Agent "^Yandex*" bad_bot
    SetEnvIfNoCase User-Agent "^Baidu*" bad_bot
    SetEnvIfNoCase User-Agent "^Custo" bad_bot
    SetEnvIfNoCase User-Agent "^botpaidtoclick" bad_bot
    SetEnvIfNoCase User-Agent "^Security Kol" bad_bot
    SetEnvIfNoCase User-Agent "^CyberPatrol" bad_bot
    SetEnvIfNoCase User-Agent "^Cyberz" bad_bot
    SetEnvIfNoCase User-Agent "^DataCha0s" bad_bot
    SetEnvIfNoCase User-Agent "^Grazer" bad_bot
    SetEnvIfNoCase User-Agent "^lwp-request" bad_bot
    SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot
    SetEnvIfNoCase User-Agent "^Morpheus" bad_bot
    SetEnvIfNoCase User-Agent "^Site Sniper" bad_bot
    SetEnvIfNoCase User-Agent "^URLy Warning" bad_bot
    SetEnvIfNoCase User-Agent "^Daum" bad_bot
    SetEnvIfNoCase User-Agent "^Deweb" bad_bot
    SetEnvIfNoCase User-Agent "^Digger" bad_bot
    SetEnvIfNoCase User-Agent "^Digimarc" bad_bot
    SetEnvIfNoCase User-Agent "^digout4uagent" bad_bot
    SetEnvIfNoCase User-Agent "^DIIbot" bad_bot
    SetEnvIfNoCase User-Agent "^DISCo" bad_bot
    SetEnvIfNoCase User-Agent "^DittoSpyder" bad_bot
    SetEnvIfNoCase User-Agent "^DnloadMage" bad_bot
    SetEnvIfNoCase User-Agent "^Download" bad_bot
    SetEnvIfNoCase User-Agent "^DotBot" bad_bot
    SetEnvIfNoCase User-Agent "^dragonfly" bad_bot
    SetEnvIfNoCase User-Agent "^DreamPassport" bad_bot
    SetEnvIfNoCase User-Agent "^drip" bad_bot
    SetEnvIfNoCase User-Agent "^DSurf" bad_bot
    SetEnvIfNoCase User-Agent "^DTS\ Agent" bad_bot
    SetEnvIfNoCase User-Agent "^dumbot" bad_bot
    SetEnvIfNoCase User-Agent "^DynaWeb" bad_bot
    SetEnvIfNoCase User-Agent "^e-collector" bad_bot
    SetEnvIfNoCase User-Agent "^EasyDL" bad_bot
    SetEnvIfNoCase User-Agent "^EBrowse" bad_bot
    SetEnvIfNoCase User-Agent "^ebingbong" bad_bot
    SetEnvIfNoCase User-Agent "^eCatch" bad_bot
    SetEnvIfNoCase User-Agent "^ecollector" bad_bot
    SetEnvIfNoCase User-Agent "^edgeio" bad_bot
    SetEnvIfNoCase User-Agent "^efp@gmx.net" bad_bot
    SetEnvIfNoCase User-Agent "^EirGrabber" bad_bot
    SetEnvIfNoCase User-Agent "^Email\ Extractor" bad_bot
    SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot
    SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
    SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
    SetEnvIfNoCase User-Agent "^EmeraldShield" bad_bot
    SetEnvIfNoCase User-Agent "^Enterprise_Search" bad_bot
    SetEnvIfNoCase User-Agent "^EroCrawler" bad_bot
    SetEnvIfNoCase User-Agent "^ESurf" bad_bot
    SetEnvIfNoCase User-Agent "^Eval" bad_bot
    SetEnvIfNoCase User-Agent "^Everest-Vulcan" bad_bot
    SetEnvIfNoCase User-Agent "^Exabot" bad_bot
    SetEnvIfNoCase User-Agent "^Express" bad_bot
    SetEnvIfNoCase User-Agent "^Extractor" bad_bot
    SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot
    SetEnvIfNoCase User-Agent "^EyeNetIE" bad_bot
    SetEnvIfNoCase User-Agent "^FairAd" bad_bot
    SetEnvIfNoCase User-Agent "^fastlwspider" bad_bot
    SetEnvIfNoCase User-Agent "^fetch" bad_bot
    SetEnvIfNoCase User-Agent "^FEZhead" bad_bot
    SetEnvIfNoCase User-Agent "^FileHound" bad_bot
    SetEnvIfNoCase User-Agent "^findlinks" bad_bot
    SetEnvIfNoCase User-Agent "^Flaming\ AttackBot" bad_bot
    SetEnvIfNoCase User-Agent "^FlashGet" bad_bot
    SetEnvIfNoCase User-Agent "^FlickBot" bad_bot
    SetEnvIfNoCase User-Agent "^flunky" bad_bot
    SetEnvIfNoCase User-Agent "^Foobot" bad_bot
    SetEnvIfNoCase User-Agent "^Forex" bad_bot
    SetEnvIfNoCase User-Agent "^Franklin\ Locator" bad_bot
    SetEnvIfNoCase User-Agent "^FreshDownload" bad_bot
    SetEnvIfNoCase User-Agent "^FrontPage" bad_bot
    SetEnvIfNoCase User-Agent "^FSurf" bad_bot
    SetEnvIfNoCase User-Agent "^Gaisbot" bad_bot
    SetEnvIfNoCase User-Agent "^Gamespy_Arcade" bad_bot
    SetEnvIfNoCase User-Agent "^genieBot" bad_bot
    SetEnvIfNoCase User-Agent "^GetBot" bad_bot
    SetEnvIfNoCase User-Agent "^Getleft" bad_bot
    SetEnvIfNoCase User-Agent "^GetRight" bad_bot
    SetEnvIfNoCase User-Agent "^GetWeb!" bad_bot
    SetEnvIfNoCase User-Agent "^Gigabot" bad_bot
    SetEnvIfNoCase User-Agent "^Go!Zilla" bad_bot
    SetEnvIfNoCase User-Agent "^Go-Ahead-Got-It" bad_bot
    SetEnvIfNoCase User-Agent "^GOFORITBOT" bad_bot
    SetEnvIfNoCase User-Agent "^gotit" bat_bot
    SetEnvIfNoCase User-Agent "^GrabNet" bad_bot
    SetEnvIfNoCase User-Agent "^Grafula" bad_bot
    SetEnvIfNoCase User-Agent "^grub" bad_bot
    SetEnvIfNoCase User-Agent "^Harvest" bad_bot
    SetEnvIfNoCase User-Agent "^Hatena\ Antenna" bad_bot
    SetEnvIfNoCase User-Agent "^heritrix" bad_bot
    SetEnvIfNoCase User-Agent "^HLoader" bad_bot
    SetEnvIfNoCase User-Agent "^HMView" bad_bot
    SetEnvIfNoCase User-Agent "^holmes" bad_bot
    SetEnvIfNoCase User-Agent "^HooWWWer" bad_bot
    SetEnvIfNoCase User-Agent "^HouxouCrawler" bad_bot
    SetEnvIfNoCase User-Agent "^HTMLParser" bad_bot
    SetEnvIfNoCase User-Agent "^HTTPGet" bad_bot
    SetEnvIfNoCase User-Agent "^httplib" bad_bot
    SetEnvIfNoCase User-Agent "^HTTPRetriever" bad_bot
    SetEnvIfNoCase User-Agent "^HTTrack" bad_bot
    SetEnvIfNoCase User-Agent "^humanlinks" bad_bot
    SetEnvIfNoCase User-Agent "^IBM_Planetwide" bad_bot
    SetEnvIfNoCase User-Agent "^iCCrawler" bad_bot
    SetEnvIfNoCase User-Agent "^ichiro" bad_bot
    SetEnvIfNoCase User-Agent "^iGetter" bad_bot
    SetEnvIfNoCase User-Agent "^Image\ Stripper" bad_bot
    SetEnvIfNoCase User-Agent "^Indy\ Library" bad_bot
    SetEnvIfNoCase User-Agent "^Image\ Sucker" bad_bot
    SetEnvIfNoCase User-Agent "^imagefetch" bad_bot
    SetEnvIfNoCase User-Agent "^imds_monitor" bad_bot
    SetEnvIfNoCase User-Agent "^IncyWincy" bad_bot
    SetEnvIfNoCase User-Agent "^Industry\ Program" bad_bot
    SetEnvIfNoCase User-Agent "^Indy" bad_bot
    SetEnvIfNoCase User-Agent "^InetURL" bad_bot
    SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot
    SetEnvIfNoCase User-Agent "^InstallShield\ DigitalWizard" bad_bot
    SetEnvIfNoCase User-Agent "^InterGET" bad_bot
    SetEnvIfNoCase User-Agent "^Iria" bad_bot
    SetEnvIfNoCase User-Agent "^IRLbot" bad_bot
    SetEnvIfNoCase User-Agent "^Iron33" bad_bot
    SetEnvIfNoCase User-Agent "^ISSpider" bad_bot
    SetEnvIfNoCase User-Agent "^IUPUI\ Research\ Bot" bad_bot
    SetEnvIfNoCase User-Agent "^Jakarta" bad_bot
    SetEnvIfNoCase User-Agent "^java" bad_bot
    SetEnvIfNoCase User-Agent "^JBH\ Agent" bad_bot
    SetEnvIfNoCase User-Agent "^JennyBot" bad_bot
    SetEnvIfNoCase User-Agent "^JetCar" bad_bot
    SetEnvIfNoCase User-Agent "^libghttp" bad_bot
    SetEnvIfNoCase User-Agent "^jeteye" bad_bot
    SetEnvIfNoCase User-Agent "^jeteyebot" bad_bot
    SetEnvIfNoCase User-Agent "^JoBo" bad_bot
    SetEnvIfNoCase User-Agent "^JOC\ Web\ Spider" bad_bot
    SetEnvIfNoCase User-Agent "^JustView" bad_bot
    SetEnvIfNoCase User-Agent "^Jyxobot" bad_bot
    SetEnvIfNoCase User-Agent "^KaloogaBot" bad_bot
    SetEnvIfNoCase User-Agent "^Kapere" bad_bot
    SetEnvIfNoCase User-Agent "^Kenjin" bad_bot
    SetEnvIfNoCase User-Agent "^Keyword\ Density" bad_bot
    SetEnvIfNoCase User-Agent "^KRetrieve" bad_bot
    SetEnvIfNoCase User-Agent "^ksoap" bad_bot
    SetEnvIfNoCase User-Agent "^KWebGet" bad_bot
    SetEnvIfNoCase User-Agent "^LapozzBot" bad_bot
    SetEnvIfNoCase User-Agent "^larbin" bad_bot
    SetEnvIfNoCase User-Agent "^leech" bad_bot
    SetEnvIfNoCase User-Agent "^LeechFTP" bad_bot
    SetEnvIfNoCase User-Agent "^LeechGet" bad_bot
    SetEnvIfNoCase User-Agent "^leipzig.de" bad_bot
    SetEnvIfNoCase User-Agent "^Mata Hari" bad_bot
    SetEnvIfNoCase User-Agent "^LexiBot" bad_bot
    SetEnvIfNoCase User-Agent "^libWeb" bad_bot
    SetEnvIfNoCase User-Agent "^libwww-FM" bad_bot
    SetEnvIfNoCase User-Agent "^libwww-perl" bad_bot
    SetEnvIfNoCase User-Agent "^LightningDownload" bad_bot
    SetEnvIfNoCase User-Agent "^Linguee\ Bot" bad_bot
    SetEnvIfNoCase User-Agent "^LinkExaminer" bad_bot
    SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot
    SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot
    SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot
    SetEnvIfNoCase User-Agent "^lftp" bad_bot
    SetEnvIfNoCase User-Agent "^Linkie" bad_bot
    SetEnvIfNoCase User-Agent "^LinkScan" bad_bot
    SetEnvIfNoCase User-Agent "^linktiger" bad_bot
    SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot
    SetEnvIfNoCase User-Agent "^likse" bad_bot
    SetEnvIfNoCase User-Agent "^lmcrawler" bad_bot
    SetEnvIfNoCase User-Agent "^LNSpiderguy" bad_bot
    SetEnvIfNoCase User-Agent "^LocalcomBot" bad_bot
    SetEnvIfNoCase User-Agent "^looksmart" bad_bot
    SetEnvIfNoCase User-Agent "^LWP" bad_bot
    SetEnvIfNoCase User-Agent "^Mac\ Finder" bad_bot
    SetEnvIfNoCase User-Agent "^Magnet" bad_bot
    SetEnvIfNoCase User-Agent "^Mag-Net" bad_bot
    SetEnvIfNoCase User-Agent "^MagpieRSS" bad_bot
    SetEnvIfNoCase User-Agent "^Mail.Ru" bad_bot
    SetEnvIfNoCase User-Agent "^Mail\ Sweeper" bad_bot
    SetEnvIfNoCase User-Agent "^mark.blonin" bad_bot
    SetEnvIfNoCase User-Agent "^markwatch" bad_bot
    SetEnvIfNoCase User-Agent "^MaSagool" bad_bot
    SetEnvIfNoCase User-Agent "^Mass" bad_bot
    SetEnvIfNoCase User-Agent "^Mass\ Downloader" bad_bot
    SetEnvIfNoCase User-Agent "^Mata\ Hari" bad_bot
    SetEnvIfNoCase User-Agent "^MCspider" bad_bot
    SetEnvIfNoCase User-Agent "^MetaProducts\ Download\ Express" bad_bot
    SetEnvIfNoCase User-Agent "^Microsoft\ Data\ Access" bad_bot
    SetEnvIfNoCase User-Agent "^Microsoft\ URL\ Control" bad_bot
    SetEnvIfNoCase User-Agent "^MIDown" bad_bot
    SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot
    SetEnvIfNoCase User-Agent "^Mirror" bad_bot
    SetEnvIfNoCase User-Agent "^Missauga" bad_bot
    SetEnvIfNoCase User-Agent "^missigua" bad_bot
    SetEnvIfNoCase User-Agent "^Missouri\ College\ Browse" bad_bot
    SetEnvIfNoCase User-Agent "^Mister" bad_bot
    SetEnvIfNoCase User-Agent "^MJ12bot" bad_bot
    SetEnvIfNoCase User-Agent "^Monster" bad_bot
    SetEnvIfNoCase User-Agent "^mkdb" bad_bot
    SetEnvIfNoCase User-Agent "^moget" bad_bot
    SetEnvIfNoCase User-Agent "^Moreoverbot" bad_bot
    SetEnvIfNoCase User-Agent "^mothra/netscan" bad_bot
    SetEnvIfNoCase User-Agent "^MovableType" bad_bot
    SetEnvIfNoCase User-Agent "^Mozi!" bad_bot
    SetEnvIfNoCase User-Agent "^mozilla.?newt" bad_bot
    SetEnvIfNoCase User-Agent "^Mozilla/22" bad_bot
    SetEnvIfNoCase User-Agent "^Mozilla/3.0 (compatible)" bad_bot
    SetEnvIfNoCase User-Agent "^Mozilla/5.0 (compatible; MSIE 5.0)" bad_bot
    SetEnvIfNoCase User-Agent "^MSIE_6.0" bad_bot
    SetEnvIfNoCase User-Agent "^MSIECrawler" bad_bot
    SetEnvIfNoCase User-Agent "^MSProxy" bad_bot
    SetEnvIfNoCase User-Agent "^MVAClient" bad_bot
    SetEnvIfNoCase User-Agent "^MyFamilyBot" bad_bot
    SetEnvIfNoCase User-Agent "^MyGetRight" bad_bot
    SetEnvIfNoCase User-Agent "^nameprotect" bad_bot
    SetEnvIfNoCase User-Agent "^NASA\ Search" bad_bot
    SetEnvIfNoCase User-Agent "^NaverBot" bad_bot
    SetEnvIfNoCase User-Agent "^Navroad" bad_bot
    SetEnvIfNoCase User-Agent "^NearSite" bad_bot
    SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
    SetEnvIfNoCase User-Agent "^netattache" bad_bot
    SetEnvIfNoCase User-Agent "^NetCarta" bad_bot
    SetEnvIfNoCase User-Agent "^netcraft" bad_bot
    SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot
    SetEnvIfNoCase User-Agent "^NetResearchServer" bad_bot
    SetEnvIfNoCase User-Agent "^NetSpider" bad_bot
    SetEnvIfNoCase User-Agent "^NetZIP" bad_bot
    SetEnvIfNoCase User-Agent "^Net\ Vampire" bad_bot
    SetEnvIfNoCase User-Agent "^NEWT\ ActiveX" bad_bot
    SetEnvIfNoCase User-Agent "^nextgensearchbot" bad_bot
    SetEnvIfNoCase User-Agent "^Nextopia" bad_bot
    SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot
    SetEnvIfNoCase User-Agent "^ninja" bad_bot
    SetEnvIfNoCase User-Agent "^NimbleCrawler" bad_bot
    SetEnvIfNoCase User-Agent "^noxtrumbot" bad_bot
    SetEnvIfNoCase User-Agent "^NPBot" bad_bot
    SetEnvIfNoCase User-Agent "^Nutch" bad_bot
    SetEnvIfNoCase User-Agent "^Octopus" bad_bot
    SetEnvIfNoCase User-Agent "^Offline" bad_bot
    SetEnvIfNoCase User-Agent "^OK\ Mozilla" bad_bot
    SetEnvIfNoCase User-Agent "^OmniExplorer" bad_bot
    SetEnvIfNoCase User-Agent "^OpaL" bad_bot
    SetEnvIfNoCase User-Agent "^Openbot" bad_bot
    SetEnvIfNoCase User-Agent "^Openfind" bad_bot
    SetEnvIfNoCase User-Agent "^OpenTextSiteCrawler" bad_bot
    SetEnvIfNoCase User-Agent "^Oracle\ Ultra\ Search" bad_bot
    SetEnvIfNoCase User-Agent "^OutfoxBot" bad_bot
    SetEnvIfNoCase User-Agent "^P3P" bad_bot
    SetEnvIfNoCase User-Agent "^PackRat" bad_bot
    SetEnvIfNoCase User-Agent "^PageGrabber" bad_bot
    SetEnvIfNoCase User-Agent "^PagmIEDownload" bad_bot
    SetEnvIfNoCase User-Agent "^panscient" bad_bot
    SetEnvIfNoCase User-Agent "^Papa\ Foto" bad_bot
    SetEnvIfNoCase User-Agent "^pavuk" bad_bot
    SetEnvIfNoCase User-Agent "^pcBrowser" bad_bot
    SetEnvIfNoCase User-Agent "^perl" bad_bot
    SetEnvIfNoCase User-Agent "^PerMan" bad_bot
    SetEnvIfNoCase User-Agent "^PersonaPilot" bad_bot
    SetEnvIfNoCase User-Agent "^PHP\ version" bad_bot
    SetEnvIfNoCase User-Agent "^PlantyNet_WebRobot" bad_bot
    SetEnvIfNoCase User-Agent "^playstarmusic" bad_bot
    SetEnvIfNoCase User-Agent "^Plucker" bad_bot
    SetEnvIfNoCase User-Agent "^Pockey" bad_bot
    SetEnvIfNoCase User-Agent "^Port\ Huron" bad_bot
    SetEnvIfNoCase User-Agent "^Program\ Shareware" bad_bot
    SetEnvIfNoCase User-Agent "^Progressive\ Download" bad_bot
    SetEnvIfNoCase User-Agent "^ProPowerBot" bad_bot
    SetEnvIfNoCase User-Agent "^prospector" bad_bot
    SetEnvIfNoCase User-Agent "^ProWebWalker" bad_bot
    SetEnvIfNoCase User-Agent "^Prozilla" bad_bot
    SetEnvIfNoCase User-Agent "^psbot" bad_bot
    SetEnvIfNoCase User-Agent "^psycheclone" bad_bot
    SetEnvIfNoCase User-Agent "^puf" bad_bot
    SetEnvIfNoCase User-Agent "^Pump" bad_bot
    SetEnvIfNoCase User-Agent "^PushSite" bad_bot
    SetEnvIfNoCase User-Agent "^PussyCat" bad_bot
    SetEnvIfNoCase User-Agent "^PuxaRapido" bad_bot
    SetEnvIfNoCase User-Agent "^Python-urllib" bad_bot
    SetEnvIfNoCase User-Agent "^QuepasaCreep" bad_bot
    SetEnvIfNoCase User-Agent "^QueryN" bad_bot
    SetEnvIfNoCase User-Agent "^Radiation" bad_bot
    SetEnvIfNoCase User-Agent "^RealDownload" bad_bot
    SetEnvIfNoCase User-Agent "^recorder" bad_bot
    SetEnvIfNoCase User-Agent "^RedCarpet" bad_bot
    SetEnvIfNoCase User-Agent "^RedKernel" bad_bot
    SetEnvIfNoCase User-Agent "^ReGet" bad_bot
    SetEnvIfNoCase User-Agent "^relevantnoise" bad_bot
    SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot
    SetEnvIfNoCase User-Agent "^RMA" bad_bot
    SetEnvIfNoCase User-Agent "^Rover" bad_bot
    SetEnvIfNoCase User-Agent "^Rsync" bad_bot
    SetEnvIfNoCase User-Agent "^RTG30" bad_bot
    SetEnvIfNoCase User-Agent "^Rufus" bad_bot
    SetEnvIfNoCase User-Agent "^SAPO" bad_bot
    SetEnvIfNoCase User-Agent "^SBIder" bad_bot
    SetEnvIfNoCase User-Agent "^scooter" bad_bot
    SetEnvIfNoCase User-Agent "^ScoutAbout" bad_bot
    SetEnvIfNoCase User-Agent "^script" bad_bot
    SetEnvIfNoCase User-Agent "^searchpreview" bad_bot
    SetEnvIfNoCase User-Agent "^searchterms" bad_bot
    SetEnvIfNoCase User-Agent "^Seekbot" bad_bot
    SetEnvIfNoCase User-Agent "^Seekbot" bad_bot
    SetEnvIfNoCase User-Agent "^Serious" bad_bot
    SetEnvIfNoCase User-Agent "^Shai" bad_bot
    SetEnvIfNoCase User-Agent "^shelob" bad_bot
    SetEnvIfNoCase User-Agent "^Shim-Crawler" bad_bot
    SetEnvIfNoCase User-Agent "^SickleBot" bad_bot
    SetEnvIfNoCase User-Agent "^sitecheck" bad_bot
    SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
    SetEnvIfNoCase User-Agent "^Slurpy\ Verifier" bad_bot
    SetEnvIfNoCase User-Agent "^SlySearch" bad_bot
    SetEnvIfNoCase User-Agent "^SmartDownload" bad_bot
    SetEnvIfNoCase User-Agent "^sna-" bad_bot
    SetEnvIfNoCase User-Agent "^seexie.com" bad_bot
    SetEnvIfNoCase User-Agent "^Snoopy" bad_bot
    SetEnvIfNoCase User-Agent "^sogou" bad_bot
    SetEnvIfNoCase User-Agent "^sootle" bad_bot
    SetEnvIfNoCase User-Agent "^SolomonoBot" bad_bot
    SetEnvIfNoCase User-Agent "^Sosospider" bad_bot
    SetEnvIfNoCase User-Agent "^So-net” bat_bot" bad_bot
    SetEnvIfNoCase User-Agent "^SpankBot” bat_bot" bad_bot
    SetEnvIfNoCase User-Agent "^spanner” bat_bot" bad_bot
    SetEnvIfNoCase User-Agent "^SpeedDownload" bad_bot
    SetEnvIfNoCase User-Agent "^Speedy" bad_bot
    SetEnvIfNoCase User-Agent "^Spegla" bad_bot
    SetEnvIfNoCase User-Agent "^Sphere" bad_bot
    SetEnvIfNoCase User-Agent "^Sphider" bad_bot
    SetEnvIfNoCase User-Agent "^SpiderBot" bad_bot
    SetEnvIfNoCase User-Agent "^sproose" bad_bot
    SetEnvIfNoCase User-Agent "^SQ\ Webscanner" bad_bot
    SetEnvIfNoCase User-Agent "^Sqworm" bad_bot
    SetEnvIfNoCase User-Agent "^Stamina" bad_bot
    SetEnvIfNoCase User-Agent "^Stanford" bad_bot
    SetEnvIfNoCase User-Agent "^studybot" bad_bot
    SetEnvIfNoCase User-Agent "^SuperBot" bad_bot
    SetEnvIfNoCase User-Agent "^SuperHTTP" bad_bot
    SetEnvIfNoCase User-Agent "^Surfbot" bad_bot
    SetEnvIfNoCase User-Agent "^SurfWalker" bad_bot
    SetEnvIfNoCase User-Agent "^suzuran" bad_bot
    SetEnvIfNoCase User-Agent "^Szukacz" bad_bot
    SetEnvIfNoCase User-Agent "^tAkeOut" bad_bot
    SetEnvIfNoCase User-Agent "^tarspider" bad_bot
    SetEnvIfNoCase User-Agent "^Tasapspider" bad_bot
    SetEnvIfNoCase User-Agent "^Teleport" bad_bot
    SetEnvIfNoCase User-Agent "^Telesoft" bad_bot
    SetEnvIfNoCase User-Agent "^Templeton" bad_bot
    SetEnvIfNoCase User-Agent "^TestBED" bad_bot
    SetEnvIfNoCase User-Agent "^The\ Intraformant" bad_bot
    SetEnvIfNoCase User-Agent "^TheNomad" bad_bot
    SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot
    SetEnvIfNoCase User-Agent "^Titan" bad_bot
    SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot
    SetEnvIfNoCase User-Agent "^Toplistbot" bad_bot
    SetEnvIfNoCase User-Agent "^True_Robot" bad_bot
    SetEnvIfNoCase User-Agent "^turingos" bad_bot
    SetEnvIfNoCase User-Agent "^TurnitinBot" bad_bot
    SetEnvIfNoCase User-Agent "^Twiceler" bad_bot
    SetEnvIfNoCase User-Agent "^Twisted PageGetter" bad_bot
    SetEnvIfNoCase User-Agent "^UCmore" bad_bot
    SetEnvIfNoCase User-Agent "^UdmSearch" bad_bot
    SetEnvIfNoCase User-Agent "^UMBC" bad_bot
    SetEnvIfNoCase User-Agent "^UniversalFeedParser" bad_bot
    SetEnvIfNoCase User-Agent "^URL\ Control" bad_bot
    SetEnvIfNoCase User-Agent "^URLGetFile" bad_bot
    SetEnvIfNoCase User-Agent "^URLy\ Warning" bad_bot
    SetEnvIfNoCase User-Agent "^URL_Spider_Pro" bad_bot
    SetEnvIfNoCase User-Agent "^UtilMind" bad_bot
    SetEnvIfNoCase User-Agent "^vacuum" bad_bot
    SetEnvIfNoCase User-Agent "^vayala" bad_bot
    SetEnvIfNoCase User-Agent "^vobsub" bad_bot
    SetEnvIfNoCase User-Agent "^VCI" bad_bot
    SetEnvIfNoCase User-Agent "^VoidEYE" bad_bot
    SetEnvIfNoCase User-Agent "^VoilaBot" bad_bot
    SetEnvIfNoCase User-Agent "^voyager" bad_bot
    SetEnvIfNoCase User-Agent "^W3CRobot" bad_bot
    SetEnvIfNoCase User-Agent "^w3mir" bad_bot
    SetEnvIfNoCase User-Agent "^Web\ Image\ Collector" bad_bot
    SetEnvIfNoCase User-Agent "^Web\ Sucker" bad_bot
    SetEnvIfNoCase User-Agent "^Web2WAP" bad_bot
    SetEnvIfNoCase User-Agent "^WebaltBot" bad_bot
    SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
    SetEnvIfNoCase User-Agent "^WebBandit" bad_bot
    SetEnvIfNoCase User-Agent "^WebCapture" bad_bot
    SetEnvIfNoCase User-Agent "^webcollage" bad_bot
    SetEnvIfNoCase User-Agent "^WebCopier" bad_bot
    SetEnvIfNoCase User-Agent "^WebCopy" bad_bot
    SetEnvIfNoCase User-Agent "^WebEMailExtrac.*" bad_bot
    SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot
    SetEnvIfNoCase User-Agent "^WebFetch" bad_bot
    SetEnvIfNoCase User-Agent "^WebFilter" bad_bot
    SetEnvIfNoCase User-Agent "^WebFountain" bad_bot
    SetEnvIfNoCase User-Agent "^WebGo" bad_bot
    SetEnvIfNoCase User-Agent "^WebLeacher" bad_bot
    SetEnvIfNoCase User-Agent "^WebMiner" bad_bot
    SetEnvIfNoCase User-Agent "^WebMirror" bad_bot
    SetEnvIfNoCase User-Agent "^WebReaper" bad_bot
    SetEnvIfNoCase User-Agent "^WebSauger" bad_bot
    SetEnvIfNoCase User-Agent "^WebSnake" bad_bot
    SetEnvIfNoCase User-Agent "^Website" bad_bot
    SetEnvIfNoCase User-Agent "^WebStripper" bad_bot
    SetEnvIfNoCase User-Agent "^WebVac" bad_bot
    SetEnvIfNoCase User-Agent "^webwalk" bad_bot
    SetEnvIfNoCase User-Agent "^WebWhacker" bad_bot
    SetEnvIfNoCase User-Agent "^WebZIP" bad_bot
    SetEnvIfNoCase User-Agent "^Wells\ Search" bad_bot
    SetEnvIfNoCase User-Agent "^WEP\ Search\ 00" bad_bot
    SetEnvIfNoCase User-Agent "^WeRelateBot" bad_bot
    SetEnvIfNoCase User-Agent "^Wget" bad_bot
    SetEnvIfNoCase User-Agent "^WhosTalking" bad_bot
    SetEnvIfNoCase User-Agent "^Widow" bad_bot
    SetEnvIfNoCase User-Agent "^Wildsoft\ Surfer" bad_bot
    SetEnvIfNoCase User-Agent "^WinHTTP" bad_bot
    SetEnvIfNoCase User-Agent "^WinHTTrack" bad_bot
    SetEnvIfNoCase User-Agent "^wisenutbot" bad_bot
    SetEnvIfNoCase User-Agent "^WUMPUS" bad_bot
    SetEnvIfNoCase User-Agent "^WWWOFFLE" bad_bot
    SetEnvIfNoCase User-Agent "^wwwster" bad_bot
    SetEnvIfNoCase User-Agent "^WWW-Collector" bad_bot
    SetEnvIfNoCase User-Agent "^Xaldon" bad_bot
    SetEnvIfNoCase User-Agent "^Xenu's" bad_bot
    SetEnvIfNoCase User-Agent "^Xenus" bad_bot
    SetEnvIfNoCase User-Agent "^XGET" bad_bot
    SetEnvIfNoCase User-Agent "^xpymep.exe" bad_bot
    SetEnvIfNoCase User-Agent "^Y!TunnelPro" bad_bot
    SetEnvIfNoCase User-Agent "^yacybot" bad_bot
    SetEnvIfNoCase User-Agent "^YahooYSMcm" bad_bot
    SetEnvIfNoCase User-Agent "^YaDirectBot" bad_bot
    SetEnvIfNoCase User-Agent "^Yeti" bad_bot
    SetEnvIfNoCase User-Agent "^Zade" bad_bot
    SetEnvIfNoCase User-Agent "^ZBot" bad_bot
    SetEnvIfNoCase User-Agent "^zerxbot" bad_bot
    SetEnvIfNoCase User-Agent "^Zeus" bad_bot
    SetEnvIfNoCase User-Agent "^ZyBorg" bad_bot
# Apache >= 2.4
<IfModule mod_authz_core.c>
    <RequireAll>
        Require not env bad_bot
    </RequireAll>
</IfModule>

# Apache <= 2.2
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from env=bad_bot
</IfModule>

    # Apache >= 2.4

            Require all granted
            Require not env bad_bot

# Apache <= 2.2
<IfModule !mod_authz_core.c>
    Order allow,deny
    Allow from all
    Deny from env=bad_bot
</IfModule>

ErrorDocument 400 /error/http/index?code=400
ErrorDocument 401 /error/http/index?code=401
ErrorDocument 402 /error/http/index?code=402
ErrorDocument 403 /error/http/index?code=403
ErrorDocument 404 /error
ErrorDocument 405 /error/http/index?code=405
ErrorDocument 500 /error/http/index?code=500
ErrorDocument 501 /error/http/index?code=501
ErrorDocument 502 /error/http/index?code=502
ErrorDocument 504 /error/http/index?code=504
ErrorDocument 505 /error/http/index?code=505
URL Rewrite

        # Tell PHP that the mod_rewrite module is ENABLED.
        SetEnv HTTP_MOD_REWRITE On

# Uncomment the following only if HTTPS is enabled. HSTS header increases security of your website & SEO
# <IfModule mod_headers.c>
# Header set Strict-Transport-Security "max-age=31536000; preload" env=HTTPS
# </IfModule>

# Remove www subdomain in the URL
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Force the URL to be https (only if you have an SSL certificate). May not be necessary if HSTS is enabled
# RewriteCond %{SERVER_PORT} 80
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

### For pH7CMS's URL router (DO NOT REMOVE THESE FOLLOWING CODE) ###
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?$1 [L,QSA]
#RewriteRule ^(.*)$ init.ph7?$1 [L,QSA]

# Start Bad Bot Prvention
RewriteCond %{HTTP_USER_AGENT} ^BackWeb [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bandit [OR]
RewriteCond %{HTTP_USER_AGENT} ^BatchFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Buddy [OR]
RewriteCond %{HTTP_USER_AGENT} ^Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Copier [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\Wonder [OR]
RewriteCond %{HTTP_USER_AGENT} ^Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^LinkWalker [OR]
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Crescent [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPicker [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^gotit [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^libghttp [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} libwww-perl.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Pockey [OR]
RewriteCond %{HTTP_USER_AGENT} ^Pump [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
# End Bad Bot Prevention

Modify Headers

    # Cache files

        Header set Cache-Control "public"
        Header set Expires "Mon, 20 Apr 2060 20:00:00 GMT"
        Header unset Last-Modified

# Cache JavaScript & CSS
<FilesMatch "\.(js|css)$">
    Header set Cache-Control "public"
    Header set Expires "Mon, 20 Apr 2060 20:00:00 GMT"
    Header unset Last-Modified
</FilesMatch>

Compress files

    # Insert filter
    SetOutputFilter DEFLATE

        # Netscape 4.x has some problems...
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        # Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        # MSIE masquerades as Netscape, but it is fine
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        # Don't compress images/archives/music/video/etc
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
        SetEnvIfNoCase Request_URI \.(?:avi|mov|mp3|mp4|rm|flv|swf|mp?g)$ no-gzip dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary

Enable Expirations

    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    # expire images/css/js/swf files after a month in the client's cache
    ExpiresByType text/css "access plus 31 days"
    ExpiresByType text/javascript "access plus 31 days"
    ExpiresByType application/javascript "access plus 31 days"
    ExpiresByType application/x-javascript "access plus 31 days"
    ExpiresByType application/x-gzip "access plus 31 days"
    ExpiresByType image/gif "access plus 31 days"
    ExpiresByType image/jpeg "access plus 31 days"
    ExpiresByType image/png "access plus 31 days"
    ExpiresByType application/x-shockwave-flash "access plus 31 days"
    ExpiresByType image/vnd.microsoft.icon "access plus 31 days"
    ExpiresByType image/x-icon "access plus 1 year"

For the videos extensions
#AddType video/ogg .ogg
AddType video/webm .webm
AddType video/mp4 .mp4
AddType application/rss+xml .xml
Personal pH7CMS extension file
#AddType application/x-httpd-php .ph7
#DirectoryIndex init.ph7

nginx.txt

htaccess.txt

i changed the name and extension of both files so i can upload here.

When I installed the PH7CMS via Softaculous Auto Installer. There was no CSS styling on the website. I removed the installation and tried again, no luck. Then I installed Oxwall CMS on the same folder, it has CSS styling. I removed the Oxwall CMS from the folder and installed the PH7CMS on the same folder and this time the CSS styling works!

Any luck so far?

Please be patient I have other things to do too. I will reply shortly!

@MKDan What you just said about the comparison of installing two different CMS in a folder and that one is showing CSS, the other not showing CSS has just one name : Pointless, useless, meaningless and the same as everything Donald Trumps says, that is : "Totally misleading".
There's no link to get with such test other than that you webserver can serve files coming from the folders.
Now, be assured that we won't be able to help you out with all the littles bobos that you'll be getting on the road ahead.
If you want something that work out of the box and that you don't have much work to do then maybe look somewhere else...
We're all volunteer and as I can see your expectation seems somewhat out of what's possible on a volunteer base...

@JossyMall Same goes for you !
Have you read the license that comes with the software ?
Like all software under GPL, you get if for free.
You have no waranty of some sort and you're alone in the desert.
So what @Undefined-Variables is currently doing represent a gift, not something you are entitled or that appears in some rights somewhere.

No wonder it is broken your nginx config is a mess.
You have  a few files you need to get correct. These are how they should look. Don't move anything about the order is important just change the key parameters for your own set up.
/etc/nginx/nginx.conf
# Generated by nginxconfig.io

user www-data;
pid /run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 65535;

events {
	multi_accept on;
	worker_connections 65535;
}

http {
	charset utf-8;
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	server_tokens off;
	log_not_found off;
	types_hash_max_size 2048;
	client_max_body_size 16M;

	# MIME
	include mime.types;
	default_type application/octet-stream;

	# logging
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log warn;

	# SSL
	ssl_session_timeout 1d;
	ssl_session_cache shared:SSL:10m;
	ssl_session_tickets off;

	# Diffie-Hellman parameter for DHE ciphersuites
	ssl_dhparam /etc/nginx/dhparam.pem;

	# Mozilla Intermediate configuration
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

	# OCSP Stapling
	ssl_stapling on;
	ssl_stapling_verify on;
	resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
	resolver_timeout 2s;

	# load configs
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

/etc/nginx/sites-available/example.com.conf
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;

	server_name example.com;
	set $base /var/www/example.com;
	root $base/public;

	# SSL
	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

	# security
	include nginxconfig.io/security.conf;

	# index.php
	index index.php;

	# index.php fallback
	location / {
		try_files $uri $uri/ /index.php?$query_string;
	}

	# handle .php
	location ~ \.php$ {
		include nginxconfig.io/php_fastcgi.conf;
	}

	# additional config
	include nginxconfig.io/general.conf;
}

# subdomains redirect
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;

	server_name *.example.com;

	# SSL
	ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

	return 301 https://example.com$request_uri;
}

# HTTP redirect
server {
	listen 80;
	listen [::]:80;

	server_name .example.com;

	include nginxconfig.io/letsencrypt.conf;

	location / {
		return 301 https://example.com$request_uri;
	}
}

/etc/nginx/nginxconfig.io/letsencrypt.conf
# ACME-challenge
location ^~ /.well-known/acme-challenge/ {
	root /var/www/_letsencrypt;
}

/etc/nginx/nginxconfig.io/security.conf
# security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# . files
location ~ /\.(?!well-known) {
	deny all;
}

/etc/nginx/nginxconfig.io/php_fastcgi.conf
# 404
try_files $fastcgi_script_name =404;

# default fastcgi_params
include fastcgi_params;

# fastcgi settings
fastcgi_pass			unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index			index.php;
fastcgi_buffers			8 16k;
fastcgi_buffer_size		32k;

# fastcgi params
fastcgi_param DOCUMENT_ROOT		$realpath_root;
fastcgi_param SCRIPT_FILENAME	$realpath_root$fastcgi_script_name;
fastcgi_param PHP_ADMIN_VALUE	"open_basedir=$base/:/usr/lib/php/:/tmp/";

/etc/nginx/nginxconfig.io/general.conf
 favicon.ico
location = /favicon.ico {
	log_not_found off;
	access_log off;
}

# robots.txt
location = /robots.txt {
	log_not_found off;
	access_log off;
}

# assets, media
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
	expires 7d;
	access_log off;
}

# svg, fonts
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
	add_header Access-Control-Allow-Origin "*";
	expires 7d;
	access_log off;
}

# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

This is how nginx is you have to show it everything you want it to serve and in the correct order or it breaks the output! Pay special attention to the above gzip...

@JossyMall Have you looked in the config file and searched on the Nginx website for the different options ?

@polynamaude complete mess right?

@MKDan Have you followed what I asked you yesterday ?

@polynamaude yeah @Undefined-Variables is a blessing!

@Undefined-Variables Haven't look at hist file... He could have made thing easier and just do like everyone else, that is to paste the content.
I'm somewhat busy around the house because we are getting new furniture delivered tommorow so I don't have much time to do in-depth analysis...
But simply looking at the context I can make a pretty good assumption that the files are like a teenager's room (a mess). I can presume he tried to change a bunch of options, not one at a time but all at the same time and after said "Oh ! Don't work. Dohhhh (nut)".
Anyway, I don't have much time to take anyone by the hand because it's quite non-sense because the person won't be able to do much with her CMS afterward... And you risk needing to help for every step to do. At least if they would say "I tried this, and this, and this. Looked up at some support site for those type of problem, etc". But no, they come here like if it's Microsoft Tech Support and expect to be helped.
They forget that it's not because you can install a software that you'll have any use-case for it. You've got problem installing something, how will you customise it ?
I kind of stay away from people who install their software by Softaculous. If you want to learn something, then start to learn installing it ! Softtaculous is a marketing tool for web hoster, not a tool that has real use on production site. At most, it allow quickly to try out different software in one evening...
I got a bit tired of doing this type of help that people on the end will discover that I was right and they didn't have the knowledge to make something useful out of this software (and remove backlinks). So they just go away and don't even take a minute to say thanks.

@polynamaude yes I could have made it very simple, I could have modified it but I was thinking the same thing. If you do something do it the right way or don't bother.
I have my own workload and already pushed for time so if you are unable to make sense of it when you have a perfect example to reference this is not for you!

@polynamaude i am very sorry to say this but you sound rude. Really i am not a newbie...i make lots of droplets on digital ocean every week and this is my >100th ph7cms instance!
coming from a background of game development with cryengine3D i might say my server configurations knowledge is wack but still i put GUIs and lampstacks on VPS every week and that's no joke! also this is the first time i am having this kind of issue with PH7cms which has been a tremendously awesome software. It still is! Too bad my internet here had issues pasting the nginx and htaccess contents and m sorry for that. M truly sorry.
NOW @Undefined-Variables IS AWESOME! I have learned a few things about nginx today...i was going to install an earlier version but for your help.
many people like me will come across this post in the future. Kindly follow @Undefined-Variables explanations...like to the letters! And if it helps you too, (I AM SURE IT WILL)  just drop the line
"Thank you @Undefined-Variables"
I will make a blog about this issue to immortalize your help.

@MKDan What you just said about the comparison of installing two different CMS in a folder and that one is showing CSS, the other not showing CSS has just one name : Pointless, useless, meaningless and the same as everything Donald Trumps says, that is : "Totally misleading".
There's no link to get with such test other than that you webserver can serve files coming from the folders.
Now, be assured that we won't be able to help you out with all the littles bobos that you'll be getting on the road ahead.
If you want something that work out of the box and that you don't have much work to do then maybe look somewhere else...
We're all volunteer and as I can see your expectation seems somewhat out of what's possible on a volunteer base...

That reply is not a solution, just my experience. Don't be rude. Bye.

Something is off here! Why do people keep replying to themselves? Thats NOT the first time!

I kind of stay away from people who install their software by Softaculous. If you want to learn something, then start to learn installing it ! Softtaculous is a marketing tool for web hoster, not a tool that has real use on production site. At most, it allow quickly to try out different software in one evening...

Are you talking about me?
I use to install CMS by downloading on the official website such as Drupal. The Cpanel didn't have any auto-installer because it was a free hosting.
Then I upgraded to a paid hosting with Softaculous auto-installed. So, now I use it. What is the problem with that?
Is there any difference between the one installed with auto-installer and manual?

The version that Softaculous have is normally a few releases behind! They have a lot of scripts and not updated in any sort of efficient way.

The version that Softaculous have is normally a few releases behind! They have a lot of scripts and not updateing them in any sort of efficient way.

The current version of PH7CMS on Softaculous is 15.3.0? Is it outdated or has bugs?

Yes what is this about?

Its a quote haha, my phone doesn't display it very well.

Its a quote haha, my phone doesn't display it very well.

I thought I've replied to my own comment.

I'd love to get my hands on GitHubs CSS files, I'd start by widening the body cos its so thin and compact for no reason!

Doesn't it better for the pagespeed?

No. The server power they have speed is not an excuse for poor design.

I had added more genders by your wiki. But the "browse users" function is not returning any results. I have to check again whether I left any comma.

Make sure you name them the same in the database as you do in the GenderTypeCore like female_couple has to have the _ in both places.
Also when you add to the list in several places you add a comma before the next line. and not on the last line!
Think I might know why let me look at it quickly....

@MKDan What you just said about the comparison of installing two different CMS in a folder and that one is showing CSS, the other not showing CSS has just one name : Pointless, useless, meaningless and the same as everything Donald Trumps says, that is : "Totally misleading".

What you just read is a "hoax", forget about it 😄

Make sure you name them the same in the database as you do in the GenderTypeCore like female_couple has to have the _ in both places.
Also when you add to the list in several places you add a comma before the next line. and not on the last line!
Think I might know why let me look at it quickly....

When I run your query at PhpMyAdmin, it gave me some warnings.
Yes, I haven't added any comma on the last line. But I'll double-check it.

Redo step 5 it was my fault I replaced half a function thinking people would realize.
That will fix it if you have any more problems let me know.

Redo step 5 it was my fault I replaced half a function thinking people would realize.
That will fix it if you have any more problems let me know.

Thank you.
The search function works when logged out but not when logged in by a user.
It may be a mistake from my end. I'm checking everything again now.

No it didn't save properly you need to change this function right at the end of step 5
NOT ALL OF STEP 5 JUST LAST FUNCTION
JUST THIS PART....
protected static function getGenderVals(UserCoreModel $oUserModel, Session $oSession)
{
$sUserSex = GenderTypeUserCore::MALE;
$aMatchSex = [
GenderTypeUserCore::MALE,
GenderTypeUserCore::FEMALE,
GenderTypeUserCore::COUPLE,
GenderTypeUserCore::TRANSSEXUAL,
GenderTypeUserCore::FEMALECOUPLE,
GenderTypeUserCore::MALECOUPLE,
GenderTypeUserCore::TRANSSEXUALCOUPLE
];
    if (UserCore::auth()) {
        $sUserSex = $oUserModel->getSex($oSession->get('member_id'));
        $aMatchSex = Form::getVal($oUserModel->getMatchSex($oSession->get('member_id')));
    }

    return ['user_sex' => $sUserSex, 'match_sex' => $aMatchSex];
}

@JossyMall If you have as much experience as you are telling me than maybe you shall put into practice that by just saying "I have a problem, here it is" then you don't show much about your knowledge. How could you get any type of help if you don't start by sharing your type of installation (OS, web server version, type of network settings, etc). As you know, some strange bug may only appear under certain circonstances...
Also, it's not because we've done something many time that it's a sign we do it properly.
My grand-mother added some baking soda when you she did spaghetti sauce because in her mind it would lower acidity and make it easier on her stomach problem. Indeed it lowered acidity in the sauce but her problem was caused by the hydrochloric acid produced in her stomach when triggered by food ingestion.
So maybe you shall make yourself a little video on "How to ask for help !".
Because presented this way this doesn't look much like someone who's a real techie with background on programming, algorithm development, UML, etc...Just like this, doing the same thing over and over again ain't really a show off about abilities, it's when problem arise that we see what does knowledge means. I can teach my girlfriend how to install VPS, GUI (????? for what the hell would you want that on a VPS !!!!).
Now you act like someone who open a ticket saying "My VPS is screwed up. Please help me !"... Oh yeah ? What are you running ? Windows ? Linux ? Unix (AIX for example) ? What type of hardware ? You running on System/Z ? On x86 based ? What type of network configuration do you have ? Maybe it's only you can't reach the console because of network problem and you don't need on-site intervention ?....
It would look a bit more professional if the dude had said a bit more...
Can I ask what have you done with your hundreds of installation ?

Make sure you name them the same in the database as you do in the GenderTypeCore like female_couple has to have the _ in both places.
Also when you add to the list in several places you add a comma before the next line. and not on the last line!
Think I might know why let me look at it quickly....

When I run your query at PhpMyAdmin, it gave me some warnings.
Yes, I haven't added any comma on the last line. But I'll double-check it.

Give you some warning ? Would be useful to know which one !
For a pro, you can't deal with SQL warning and knowing which one are just caution and which one need to be cared of ?

Oops!

@polynamaude I gave the examples and to be fair the rest was a solo effort, I had a look a few hours later and it was working properly.
I did what we have been discussing, I spent 6 hrs learning phpstorm and 4 hours on Android Studio and my life has been changed! phpstorm is f#*king awesome! I have all my servers set up, localhost, node.js,  cmd line, SQL, and so many amazing tools all at my fingertips its magical :)
It even updates GitHub repositories directly, convenient is an understatement! I Got a half decent app together to using FireBase. Mate I don't even know where to begin with that. And I have started using React :) I feel like im cheating, everything is already coded and neatly organized. I have been writing everything myself. This is like a Lego set!
I'm building a messenger using FireBase, React and node.js and will later add other devices to it! You was right taking time to upgrade myself was exactly the right thing!

I kind of stay away from people who install their software by Softaculous. If you want to learn something, then start to learn installing it ! Softtaculous is a marketing tool for web hoster, not a tool that has real use on production site. At most, it allow quickly to try out different software in one evening...

Are you talking about me?
I use to install CMS by downloading on the official website such as Drupal. The Cpanel didn't have any auto-installer because it was a free hosting.
Then I upgraded to a paid hosting with Softaculous auto-installed. So, now I use it. What is the problem with that?
Is there any difference between the one installed with auto-installer and manual?

@MKDan In french we have a saying that state "If the hat fits then wear it". So if you are using Softaculous, then yes I'm talking about you.
Why ?
You can find out by yourself easily...
Just by doing some easy mind game thinking... For example, how can you control the install process if you leave it into the hands of another software that will do so but without telling you eveyrhing it does ?
Do you really think they update the different software in the library in a instant after updates are produced by author ?
Oh yes ! Maybe you did in the past use a download from developer but now you prefer using Softaculous. Does something from the past protect yourself from something in the present ? Is it because you installed Drupal / Joomla from the official distribution 5 years ago that this means that the current very installed doesn't need to give generic answer to some of the question asked by the installation ?
You really think the so little time saved is worth the risk incured ?
Anyway it's your choices and you seam to have all the information needed, the knowledge and the training. So why loose your time here ?
And yes maybe I wasn't talking to you ! Maybe it was to the other who thinkgs he's just so great ! Whoever that is !

@Undefined-Variables Hi !
Happy to see you've learned nice stuff and some good work habits / structure...
This way you can interac with other team of developer in a real professional way. It's always normal to feel a bit like wasting our time trying to work those tools because it seem somewhat obvious and somewhat challenging to change the way we are used to be working. But now you've got step aheads !

@JossyMall As you know the rules maybe you shall be closing this issue as it's solved. Just like that, because you seem to be in no-need for help with all this good experience you've got !

Yeah I should have done it sooner!
Come on guys this is not rocket science, if you want the most up to date version of something you get it from the person who mades it! Merges done in the last few days won’t see Softaculous for over a year! Why would you want to be a year behind???

@polynamaude Thanks for your help and sweet words. Thank you for teaching me the difference between the File Manager and phpMyAdmin. You're so kind. Take care.

Lmfao! Now that’s was sarcastic!

hello guys...I am having this error in admin panel only.
Oops! You are already logged in as administrator.
whenever I click on a link in the admin panel that error keeps popping up. it's like a loop or something.
it doesn't happen on the user frontend.

Issues are like doors! You shut one when you are done with it then you open a new one when needed!

oh yeah. sorry bro.

This maybe something to do with the older release you are running! Clear server cache, browser cache and make sure you have all your settings correct in the examples from yesterday! I seem to remember something about the way nginx handles sessions. You may have to explain how the software works to nginx some more!

@Undefined-Variables Give Nginx a try for serving static site. It's worth it...

The problem I have is my dedicated server uses apache with cPanel and is running 11 different websites so swapping over would be a headache configuration wise and down time for all websites and my business partner won’t agree it’s worth doing!

Mate I live in UK I could get that here  go all the way to Amsterdam  ! I told you haven’t I ? I have badly injured that equipment and awaiting surgery which was just put back 6 months due to virus! So no use anyway!

@Undefined-Variables Sorry to hear that had badly injured that specific equipment but hey you gotta watchout when you play around with fireworks...
Yeah I remember you live in the Queen's United Kingdom (including Scotland and Northern Ireland)...But the term "Red Light district" is a porte-manteau (common term) for a dodgy neighbourhood that exist in all big cities (including London / Manchester / Cambridge / Portsmouth / *berry / *town).

You’re no as sorry a second I am! I was stretching across a gap and my foot slipped, my legs got ripped apart and ripped a major muscle I didn’t know existed till it was hurting

@polynamaude have you used this npx? It’s JavaScript in html format! Lovely to use!

@Undefined-Variables Go do some reading on ReactJS with JSX... It's made by the guys at Facebook, well more of was started by them. There's a couple of those type of implementation called JS based HTML element. You'll love React but I suggest you start with Vue.JS, it's easier to get used to.
https://github.com/pH7Software/pH7-Social-Dating-CMS/issues/748#issuecomment-616477423
Just a little comment for this dude...

I watched a 5hour tutorial on YouTube by freecodecamp and think I get the basic idea! I learn faster while writing code watching is not as fun

@Undefined-Variables Maybe it ain't as fun but you have to learn how to do stuff before actually doing it.

Yeah I know!

@Undefined-Variables Hope that Mr MkDan got the help he needed because he's gonna wait a while to get anything back from myself. He seems to be too good at all he's ever done to accept any form of critics and unable to read the "How to help !".
https://github.com/pH7Software/pH7-Social-Dating-CMS/issues/744#issuecomment-616537204
If you ever go ideas for Wiki pages, I don't mind to give them a correction if you want me to look at them.

@Undefined-Variables Hope that Mr MkDan got the help he needed because he's gonna wait a while to get anything back from myself. He seems to be too good at all he's ever done to accept any form of critics and unable to read the "How to help !".
#744 (comment)
If you ever go ideas for Wiki pages, I don't mind to give them a correction if you want me to look at them.

Learn how to criticize others - https://www.inc.com/jayson-demers/the-7-golden-rules-of-how-to-give-criticism-without-sounding-like-a-jerk.html

If you think you have it bad with these simple issues you want to try adding an SSL cert to node.js React App server!
Finally done it only toot 3hrs! Got headache now!

You can try Let's Encrypt - Free SSL (or) Cloudflare.

Yeah its not the certificate that’s was so long winded! I have let some encrypt available to me!
It’s just a pain! You have to submit a signing request to a ca body,then prove you own the domain,  the you have to get crt, key, ca-bundle and root-ca-bundle and convert them in to a server.pem file.
You have to upload binary with ftp client then set permissions copy it to a folder in home dir and then copy to a folder in your app. Symlink the morning together and then rebuild node.js
If your lucky it will work and that’s before the settings you have to set in the app! Just long!

Oh and create a bash script!

@Undefined-Variables Don't look very serious to be complaining about installing a SSL certificates... The domain validation ain't specific to Node.JS, it is to all type of SSL certificates that do domain validation part of their procedure (PositiveSSL from Comodo does the same as a example).
There's a script that automate all this available on Debian and Ubuntu.
It's a straight forward process, top-down....

@polynamaude Not complaining just felt there was more effort needed than should be required.

@Undefined-Variables Install certbot

@polynamaude I will do. I install certs all the time and am used to the csr and the configuration but trying to get node.js to serve over a secure connection was a lot more time consuming due to having Reacts configuration to deal with too.

@Undefined-Variables Do one at a time. Start learning NodeJS with a simple framework like ExpressJS and go with more complex or you'll get stuff done without truly understanding.

@Undefined-Variables Do you get a error code 418? That's the British typical error.

What like 404? I've never seen a 418 on anything.

@Undefined-Variables Read what it is and you'll see why I say it's British.

LMFAO... 'I'm a Teapot' :)

@Undefined-Variables I often hear people saying that their country is not the best place. When I talked about PH being in Englang, you said why he'd be here when it's raining all the time and infrastructure are awful.
I've also heard people complaining that their Internet connexion was awful. I was thinking that it must be simply that people complain as they are so good at it. And then I found a nice proof that some place in the UK have really bad Internet access.
Ever heard of RFC 2549 ?
It's the very useful (when in the UK of in Africa) IP over Avian Carrier.
The standard is made so you can use birds (mainly pigeon) to transport IP packets.
And some people made a real implementation in england. The result was very nice as faster than the DSL transmission for a 4 Gb size file.
https://www.theregister.co.uk/2010/09/17/bt_bird/
http://www.ispreview.co.uk/story/2010/09/16/uk-business-isp-timico-challenges-pigeon-to-beat-rural-broadband.html
https://www.bbc.co.uk/news/technology-11325452
https://tools.ietf.org/html/rfc2549

I have not laughed so much in a very long time! @polynamaude Thank you!

authors: JossyMall MKDan Undefined-Variables polynamaude


text:
Update leaflet-heatmap.js

Allows user to reset/clear the heatmap by using .setData() with an object with an empty array as data property.
In current situation, setting empty data returns without clearing the heatmap picture.

Has been added, thank you!

source: gharchive/pull-request

license: mit

license_type: permissive

license_source: bigquery


text:
Provide helper functions that checks for common error types

Right now, the user of the golang client has to look at the error string to determine what type of error it is.  We should provide helper functions such as IsConnectionError, IsCommitClosedError, etc.

These functions exist nowadays - not for every error but for most.

source: gharchive/issue

authors: derekchiang ysimonson

repo: pachyderm/pachyderm

license_source: github-api


text:
pachctl create-pipeline never times out

Even if pachctl can't connect to the cluster for some obviously non-transient reason (e.g. you forgot to run port-forward), pachctl create-pipeline happily retries forever. I wonder if it should eventually time out, and notify users when that happens.

I think many pachctl never time out if port-forward isn't set. create-repo definitely has the same behavior.

This will now exit with context deadline exceeded.

authors: JoeyZwicker jdoliner msteffen


text:
Do analysis on number of samples necessary for the MCMC output

In an effort to reduce the samples from 8,000 to much less to save computation time, space and RAM. We should run the base model at 8,000, 6,000, 4,000, 2,000 and 1,000 samples each with 250 warmup and compare the uncertainty to find the minimum acceptable size.

Also evaluate warmup period to see if that can be reduced.

authors: aaronmberger-nwfsc cgrandin

repo: pacific-hake/hake-assessment

license: MIT


text:
PACKET_API_TOKEN is not injected in manager deployment and it is not base64 encoded

When doing clusterctl init with packet provider the PACKET_API_TOKEN env var is required because the manager uses it to interact with PacketAPI.
There are two issues:

[ ] We create the secret but its content is not base64 encoded, so it means that when kubernetes tries to attach it as env var in the pod it can't decode it
[ ]  We never use the secret in the deployment

DigitalOcean requires a BASE64 environment variable:
https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/blob/master/config/manager/credentials.yaml#L8
i am gonna do the same

repo: packethost/cluster-api-provider-packet


text:
Setup testing farm

Add .fmf and setup testing-farm.

TODO:

[x] add some real tests

/packit test

/packit test

hm, what's wronk with rawhide?
# pwd; cd ~/git-source && pwd && make check[11:42:48] [E] [cruncher] [/ci/test/build/full] Command 'cd ~/git-source; pwd; cd ~/git-source && pwd && make check' failed with return code '255'

doesn't tell me anything really
/summon @thrix :D

looking

/packit test

authors: TomasTomecek lachmanfrantisek thrix

repo: packit-service/ogr


text:
Add guide for setting up cross-project testing

This is based on https://cockpit-project.org/blog/tmt-cross-project-testing.html, focusing on the configuration.

regate


text:
add: flyctl-bin

Add a package for the fly.io command line client

Bruh I forgot to hit send

authors: oklopfer raindev

repo: pacstall/pacstall-programs


text:
[Feature Request] support error handling like when-queued

Thanks for putting together this plugin; it is working well.
I am running into an issue regarding how to retry an upload an errors from my upload endpoint.
Take the following workflow:

a user drags a file to the uploader
the upload handler on my route fires
if that handler's promise rejects, I display an error message to the user

depending on the error, I want to give the option to rename the file and resubmit the uploader

Right now, there doesn't seem to be a way to handle this workflow cleanly.
I have a hacked around the problem using plupload's API to programmatically modify the upload queue, but in doing so I am losing the file's content in the upload form. It would be nice to be able to resubmit the errored requests as an action on {{plupload}} so I can keep the state of the existing file and not have to have the user redrag the file again.

Would having the ability to call upload on a rejected file, having it be requeued work?

yes that would. Whatever way I can cleanly retry a failed upload per file will resolve this use case. I am not attached to the 'on-error' idea, just thought of it as a starting point.
Is upload the ember-plupload's wrapper around plupload's file object?

The file being passed is the wrapper around the object. The upload method is an abstraction of the file's upload process.

@efx I added an onerror hook to 0.8.0. Not sure if that helps at all.

Thanks Tim! I'll try this out when I get a moment.

I added file retries for 1.13.0. Hopefully it will work well for you.

authors: efx tim-evans


text:
Enhancements to admin generator error message

Fix a typo and automatically list supported renderers

Thanks, but please rewrite ext.prepend('-e ') piece without mutating the strings in the array using string interpolation for example.

authors: jfredrickson ujifgc

repo: padrino/padrino-framework


text:
Add method withProps

It would be easier to use props with this function. For example, to choose spec according to property or to pass property as argument to another function. It is mirror implementation of witState function.

Sorry this took so long @tellnobody1 - version v6.0.2 now supports this. I manually had to merge this patch because I think you deleted your fork of the repo - feel free to re-open it so I can give you kudos!


text:
Page对象的dubbo反序列化问题

[ ] 我已在 issues 搜索类似问题，并且不存在相同的问题.
A应用调用dubbo微服务，微服务使用分页插件操作数据库，同时微服务自己封装了一套公共分页返回对象，底层通过page.getResult方法将list结果设置到自定义的分页对象。A应用在dubbo响应反序列化时会出现警告。
Hessian/Burlap: 'com.github.pagehelper.Page' is an unknown class
java.lang.ClassNotFoundException: com.github.pagehelper.Page

通过排查得知，page.getResult返回的不是java.util.ArrayList，而是Page对象，但是A应用中并不操作数据库，所以我并不想在A应用中也引入分页插件（引入分页插件即可解决这个警告），请问还有更好的办法吗？

new ArrayList(page) 即可。

authors: pagehelper xiaoduanayu

repo: pagehelper/Mybatis-PageHelper


text:
Proper docker support

See: #243 -- This superseeds #243 which should now be rejected / closed.
I think I have un-broken everything that I broke, it's compiling, working, and was rebased from v0.3.0 so should remain stable :-)
Change log is also fixed.

I might let the other @pagermon/collaborators look at this one - your branch seem to be wanting to pull lots more then what it should be.
you should be ok to use your other PR - all that would be needed is to resolve the CHANGELOG conflict

I'm not sure what GIT is doing with all those commits, tried to clean it up from the web interface but it's not having a bar of it. You also seem to have had some issues with the merge commit in the changelog, somethings gone very wrong there 😉
I'd like to clean that up first as recommiting the same changes will look messy as.
Project for this afternoon 😄

Yeah -- I am fixing it quickly. I'll kill this one off and revert the changelog in 243, and that should do it ;-)
I did say I was tired last night -- clearly should not be allowed near a computer whilst tired heh

authors: DanrwAU marshyonline nicko170

repo: pagermon/pagermon

license: Unlicense


text:
CSP prep: add a notion of input role, and wire it to CreateInputResource

This is needed to eventually know which policy to check.
(The enum is similar to SemanticRole, but it was made separate to give
the cases other than image/style/script clear semantics).
This change itself should be a no-op functionally.
OutputResource methods will likely need a similar treatment.

lgtm, no comments

authors: morlovich oschaaf


text:
get compressor starts with wpm3

do you see any way possible getting "verdichter starts" or "compressor starts" from modbus?
I can't see it in their documentation for wpm3 but lwz devices.
this would be one hell of an interesting number to keep an eye on.

this can be done via history stats workaround. I created sensors according to this (number of compressor starts can be done via type count) for heating. from this you can also measure time when this sensor was on.
https://community.home-assistant.io/t/calculate-time-of-a-switch-in-a-certain-state/327802

platform: history_stats
name: Stiebel Eltron Heating count - Daily
entity_id: binary_sensor.stiebel_eltron_isg_is_heating
state: "on"
type: count
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"

Hi @kucerazdenek,
thank you for your suggestion, it is very much appreciated.
In my particular case, this will sadly miss the point due to the fact, that water-heating AND heating can be a reason for a compressor starting. This is made "worse" by the fact that after the compressor is for example started for heating, it can just switch to water-heating without stopping.
The number would count much, much more starts than there actually are.
Nonetheless, you just teached me something new about home-assistant, thank you :)
best regards
Christoph

Hi @chrissi5120
I know about it, in my case number of starts is just indicative, to be aware when anything would go wrong.
I don't care if it heats or heating water, I am interested by compressor starts as such.
From that reason I count only heating (not water heating), because in 9 of 10 occurrences, water heating precede heating or vice versa (thus count of compressor starts is still exact). Very rarely (about once/twice a day), I see situation, when it starts to heat, then switch to water heating and then back to heat and my sensor will count 2 starts instead of 1. It is something I can live with.
I never seen situation when it would only heat water, as when heat pump switches to summer mode, I use PV for water heating.

Regards, Zdenek

binary_sensor.stiebel_eltron_isg_compressor should be the solution, since it was implemented:
Somthing like this might work:
configuration.yaml:
counter:   stiebel_eltron_compressor_starts:     name: "Stiebel Eltron ISG Compressor Starts"     step: 1
Automation:
- id: track_stiebel_eltron_starts   alias: "Track Stiebel Eltron Compressor Starts"   trigger:     platform: state     entity_id: binary_sensor.stiebel_eltron_isg_compressor     from: 'off'     to: 'on'   action:     - service: counter.increment       entity_id: counter.stiebel_eltron_compressor_starts


text:
Rotate messages based on single timer

Would like to see a timer system more like fossabot. Potentially a "global" option that disables individual timer timing and uses a global option instead (with a chat line integration).

Please describe what this would look like compared to our current timer system

Main timer page when global timers are not enabled:

Global timer options:

Main timer page when global timers are enabled (note the removal of the interval columns):

So this is like a single timer, except the messages are rotated, and not always the same.

Yes, it rotates through each timer on a single timing system

Due to pajbot being moved into maintenance mode I'm closing this feature request.

authors: RAnders00 alazymeme pajlada

repo: pajbot/pajbot


text:
Implement Dependency Management RFC 0005: New jam update-dependencies

Per Dependency Management RFC Phase 2, part of the new dependency update workflow there is an "assembly" step in which new dependency versions and metadata get added to the buildpack.toml.
This issue is to create a new jam command, which will eventually replace the existent jam update-dependencies command to update the buildpack.toml. The command will be extremely similar in that it will update the buildpack.toml, but it will no longer query the dep-server for metadata, and will instead receive a metadata.json. Check out the RFC for details about what the command should do, and how it should fit into the future dependency update workflows.
Note that the new command cannot immediately replace jam update-dependencies because the old command will be needed for a period of time until migration to the new dependency management strategy is complete. The new command will need to be given a different name for the time being in order to avoid breakages in our current process.

Maybe it's possible for jam update-dependencies to behave two different ways depending on if it receives a --buildpack-file or a --buildpack-file and `--metadata-file.
jam update-dependencies --buildpack-file buildpack.toml works in the legacy way, but
jam update-dependencies --buildpack-file buildpack.toml --metadata-file metadata.json activates another code path that doesn't use the dep-server.

I love that suggestion @fg-j ! I prefer that suggestion over making a new command and eventually retiring the existing one.

Agree!

authors: fg-j robdimsdale sophiewigmore

repo: paketo-buildpacks/jam


text:
Reduce minimum intellij supported version to 2020.3

Many users are sitting on 2020.3 to due bugs introduced in later
versions. We believe most of them have been resolved, however
folks tend to upgrade IDEs relatively slowly.
==COMMIT_MSG==
Reduce minimum intellij supported version to 2020.3
==COMMIT_MSG==

Released 2.1.0

authors: carterkozak svc-autorelease

repo: palantir/witchcraft-java-logging


text:
Facilitate custom formatting of console output

I can see from #590 that you are planning to restructure parts of click for the 9.0 release. Could I make a suggesting regarding clearer separation? Take this as a "wish list" issue.
It would be nice if the formatting of output would be clearly separated from the actual commands / command groups. This could enable users to easily implement custom formatters, for instance for help texts, error messages, prompts, etc. I am envisioning for instance abstract formatter base classes, similar to what already exists with the help formatter, extended to other parts of click. Those could be passed to constructors of commands or command groups to conveniently replace the default formatting.
According to the docs, some of the limited customisability is intentional. But maybe in this case it can be relaxed when enforcing strict requirements for such formatters?

Duplicate of #561
This is generally not as straightforward as you've made it sound. Also, there are quite a few methods on the various core objects that control how things are formatted. Many of the things you describe already exist to one degree or another.

Thanks for the link, I somehow overlooked the existing issue.
As you say, a lot of custom formatting is already possible in some ways. An easier and more central way to implement custom formatting would still be great. I know it’s not straight forward, but it would be really nice!

"More central" sounds nice, but it turns out they're basically in the place they need to be already. In the attempts I've made so far, moving things around never seems to make the formatting system any better.

authors: SamSchott davidism

repo: pallets/click


text:
stdout is not wrapped

With this example:
#!/usr/bin/env python
import click

@click.command()
def main():
    line = ">" + ("*" * 500)
    print(line)
    click.echo(line)

if __name__ == '__main__':
    main()

I get this output where my line is not wrapped (so I cannot see all of it):
$ tput cols
42
$ ./toto.py
>*****************************************
>*****************************************

I am rather expecting this:
./toto.py
>********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

Is it a normal behavior?

I cannot reproduce this, tput cols has no effect. Have you tried another terminal?

So it's a terminal dependent issue :( I am on Cygwin/mintty).
I haven't tried it on another terminal.
What could possibly be the cause of this issue?

You should try another terminal, or check if this issue occurs with other programs as well.
However, I'm going to close this because I don't think this is an issue with Click.

authors: nowox untitaker


text:
Flask-paginate shows all results on same page

I am using Flask-paginate for pagination in my app. The results are fetched from database. The problem is that all results show up on 1st page and when I click on the next page number again all results are displayed on that page. The page number in url changes to 2/3/4 etc. I this as reference. Here is my code snippet
from flask.ext.paginate import Pagination
    @app.route('/users')
    def users_page():

        page_size = 25
        limit = 100

        search = False
        q = request.args.get('q')
        if q:
            search = True
        try:
            page = int(request.args.get('page', 1))
        except ValueError:
            page = 1
        with session_scope() as session:
            users = users_dao.get_users(session, limit=limit)
            pagination = Pagination(page=page, total=len(users), per_page=page_size, search=search, record_name='users')
            return render_template("users.html", users=users, pagination=pagination)

The pagination info on html page says displaying 1-25 results of 100. When clicked on page 2, it says displaying 25-50 results of 100. So somehow the pagination has figured out on the basis of total and per_page how many results should be displayed but somewhere it fails to force that on number of rows to show.
The template looks like
{{ pagination.info }}

              User Name
              Phone
              City
              Country

          {% for user in users %}

              {{ user.user_name }}
              {{ user.phone_number }}
              {{user.city}}
              {{user.country}}

          {% endfor %}

  {{ pagination.links }}

Please use Stack Overflow for questions about your own code.  This tracker is for issues with Flask's code.

What if there is an issue with one of the pluggins with Flask? Like in this case flask-paginate?

Should be filed against the repo of the flask extension

authors: ThiefMaster davidism dsingh-uh

repo: pallets/flask


text:
flask app timeout urgent issue

Dears,
Hope all is well.
I have an application, my app build based on the flask, my issue is as follows,
after sending 1000 to 3000 requests per minute to my flask app the flask going down (no response ) kindly keep in your mind that my issue is not a resource issue because my memory percentage is less than 20% and CPU 30 to40 %
so how can I fix this issue in flask
PS: I did the same testing in fastapi and there is no issue with them

Not sure what you expect here. You didn't even mention how you are running the app. gunicorn? uwsgi? flask run? Also, this is not the right place for issues with your own code that are not necessarily flask problems.

authors: ThiefMaster themeswordpress


text:
Set Content-Length when data passed to Response is a tuple

See pallets/flask#1877. If the data is a Collection, it should be safe to calculate its length. Pass it to set_data and use len(get_data()) to calculate the length.
Note that the header is still sent eventually, it's available on the receiving client, it's just not available on the object in Python.

Right now we only calculate the content length if data is set to a string or if a conditional response is created. If we want to change that we need to make the response attribute a descriptor.

authors: davidism mitsuhiko

repo: pallets/werkzeug


text:
Performance issue for some data handling in MultipartDecoder

When using werkzeug handling file upload, werkzeug use FormDataParser and MultipartDecoder, in here: https://github.com/pallets/werkzeug/blob/edef71c243e1e1396092f7b5f82ddad6c6f766cf/src/werkzeug/sansio/multipart.py#L187 , if for some part of data, the var data_length is always 0, that will always generate a 'werkzeug.sansio.multipart.NeedData', so the source code will run  self.buffer.find(b"--",...) ( https://github.com/pallets/werkzeug/blob/edef71c243e1e1396092f7b5f82ddad6c6f766cf/src/werkzeug/sansio/multipart.py#L182 ) again and again, which will take longer and longer time(I think it is O(n²)), in the end the upload of file will take much longer time than other most of the files.

Generate a file, which will having a b'\r' in a bound of MultipartDecoder.buffer, and all the data after there is no "\r".
Example of this kind of file:
def test52():
    with open("uploadfile.dat","wb") as f:
        def _gen():
            yield b"\r"
            for i in range(30000000):
                yield b"1234567890"
        for i in _gen():
            f.write(i)

if __name__ == '__main__':
    test52()

Then upload this file with werkzeug: werkzeug.formparser.parse_form_data() , it will reproduce the issue

Need to handle file quickly, but actually very slow
Environment:

Python version:3.6.5
Werkzeug version: latest: edef71c243e1e1396092f7b5f82ddad6c6f766cf

There is a workaround, here( https://github.com/pallets/werkzeug/blob/edef71c243e1e1396092f7b5f82ddad6c6f766cf/src/werkzeug/formparser.py#L348 ) ,  buffer_size: int = 64 * 1024, that's too small, to handle several hundrers of MBytes of data, that will run too many times, if this buffer_size can be given by user, for example user give: 16 * 1024 * 1024, that will reduce the time a lot.

@pgjones could you take a look at this?

I think I'll need some more information here. The parser will still consume the buffer whilst looking for the next boundary, so I don't think there is any n^2 growth. I'm also unsure if this applies as the example given is invalid multipart data and hence should result in a failed parse.

Because every time parser search for the next boundary, it need to traverse all the data, the traverse time is decided by the data length, suppose buffer size is n, the traverse time is about to connec with: n+2n+3n+4n+5n... mn = (1+2+3...+m)n = (m * (m + 1) / 2)*n, so it is m^2 growth.

I think #2441 fixes this.

authors: davidism pgjones zhangchunlin


text:
test_exclude_patterns[_find_stat_paths] fails in rpmbuild buildroot

When running tests in a rpmbuild BUILDROOT, sys.prefix == "/usr"
but no modules are actually imported from here so test_exclude_patterns fails the first assert
modules are instead imported from BUILDROOT
___________________ test_exclude_patterns[_find_stat_paths] ____________________
find = <function _find_stat_paths at 0x7f38956a8700>
@pytest.mark.filterwarnings("ignore::pytest.PytestUnraisableExceptionWarning")
@pytest.mark.parametrize("find", [_find_stat_paths])
def test_exclude_patterns(find):
    # Imported paths under sys.prefix will be included by default.
    paths = find(set(), set())

  assert any(p.startswith(sys.prefix) for p in paths)

E       assert False
E        +  where False = any(<generator object test_exclude_patterns.. at 0x7f38957317b0>)

Duplicate of https://github.com/pallets/werkzeug/issues/2516
The only supported way to run the tests is installed in a virtualenv. Use tox -e py to handle creating a virtualenv the same way as our CI, or otherwise set up a virtualenv with the desired Python and use pytest. You can create a virtualenv based on another, or including system site packages, if you need to run in the context of other Red Hat libraries.

Thank you for opening a PR though. With some cleanup, I'd be willing to merge it. However, just emphasizing again that you need to fix the environment you test in, regardless of this specific test.

thanks, I got passed the error I was having in our build environment and understand about whats supported
I'll follow up on your PR comments anyways, it might assist somebody in future.

authors: davidism derekhiggins


text:
feat: update paloma app to SDK v0.50

Background
Upgraded the files to 0.50 other than x
Testing completed

[x] No Import errors
[x] No Usage errors

Looks good to me. Let's update each Paloma module in its own pull request and then integrate them with the Paloma app.

repo: palomachain/paloma


text:
PLantUML regression ?

This commit 97c6362115238051209de4d7f9bff81167c08b9e works like a charm for my use case (generation of PDF) : TikZ, mermaid, plantUML, asymptote.
But with the last commit : 81681438eb3d97d37dc69ecf5e901586a6f9cb7f plantUML does not work anymore :
java.lang.ClassNotFoundException: org.apache.batik.apps.rasterizer.SVGConverter
	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at net.sourceforge.plantuml.pdf.PdfConverter.convert(PdfConverter.java:61)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramInternalPdf(UmlDiagram.java:289)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:138)
	at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:198)
	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:165)
	at net.sourceforge.plantuml.Pipe.generateDiagram(Pipe.java:103)
	at net.sourceforge.plantuml.Pipe.managePipe(Pipe.java:94)
	at net.sourceforge.plantuml.Run.managePipe(Run.java:361)
	at net.sourceforge.plantuml.Run.main(Run.java:187)
Exception in thread "main" java.lang.UnsupportedOperationException
	at net.sourceforge.plantuml.pdf.PdfConverter.convert(PdfConverter.java:80)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramInternalPdf(UmlDiagram.java:289)
	at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:138)
	at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:198)
	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:165)
	at net.sourceforge.plantuml.Pipe.generateDiagram(Pipe.java:103)
	at net.sourceforge.plantuml.Pipe.managePipe(Pipe.java:94)
	at net.sourceforge.plantuml.Run.managePipe(Run.java:361)
	at net.sourceforge.plantuml.Run.main(Run.java:187)
Lua warning: /home/signac/dev/pandoc/diagram.lua: Error running plantuml (error code 1): <no output>

The sample file used contains :
    Example usage:
    ```{.plantuml caption="This is an image, created by **PlantUML**." width=50%}
    @startuml
    Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response
    Alice -> Bob: Another authentication Request Alice <-- Bob: another Response
    @enduml
    ```

Thanks for the report. What's the exact pandoc command that you are using, and how did you install plantuml?
It looks like your installation is missing some plugins, so we'll have to make the filter more configurable in that regard.

(Two shots message... separated by hline... the poblem is not related to diagram.lua but to plantuml as you guessed).
Test file : sample_plantuml.md
Pandoc comment used :
pandoc -t latex --lua-filter diagram_8168143.lua  --pdf-engine=xelatex sample_plantuml.md -o sample_plantuml.pdf

==> Produces the error above
or
pandoc -t latex --lua-filter diagram_97c6362.lua --pdf-engine=xelatex sample_plantuml.md -o sample_plantuml.pdf

==> Perfect result
The two filters correspond to the two commits mentioned above (I just downloaded  the diagram.lua file and renamed it , is it OK ?)
plantuml has been installed by my package manager (Arch Linux) :
community/plantuml 1.2023.4-1 (10.1 MiB 10.9 MiB) (Installed)
    Component that allows to quickly write uml diagrams

The only difference between the two commits seed to be the format....

I tried a simpler test with juste plantuml, and this test file :
@startuml
Alice -> Bob: test
@enduml

This command succeeds : cat plantuml_diagram.txt | plantuml -tsvg  -pipe  -charset UTF8  > out.svg
But this one fails ( same error as above) : cat plantuml_diagram.txt | plantuml -tpdf  -pipe  -charset UTF8  > out.pdf
So I guess this is a plantuml problem, or more precisely a "plantuml on my personal computer problem".
Don't know if it's possible to force formats (final format, intermediary format) to tell diagram.lua that the tool (plantuml) should procude a svg file, and this svg file should be translated to a pdf file before if is included by pandoc. Something loke this :
```{.plantuml caption="This is an image, created by **PlantUML**." width=50% engine_format="svg"  output_format="pdf"}
@startuml
Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request Alice <-- Bob: another Response
@enduml
```

I dont need this feature (I dont need plantuml...) but this kind of thing would (perhaps) solve my plantuml problem, and the mermaid problem we had to face so may be it could be a good design choice to struggle in the jungle of diagramming tools :)

It's now possible to disable/enable certain image types for each engine. Please try this:
---
diagram:
  plantuml:
    mime-types:
      application/pdf: false
      image/png: false
---

Hello! I'm having trouble with this, I'm using this configuration, but I get an error. Here are the details:

I run pandoc -L $PATH_OF_DIAGRAM -o summary.pdf summary.md
I have the following plantuml diagram in the file:

@startuml
class Nombre{
    Atributos
    __
    Operaciones
    --
    Responsabilidades
}
@enduml

The execution of that command returns: Cannot use plantuml with latex

@giuli635 please try with the current development version.

Thanks, that's important information. Definitely looks like a bug then, please raise a new issue.

authors: giuli635 lsignac tarleb

repo: pandoc-ext/diagram