@@ -48,6 +48,8 @@ const (
4848 defaultVHRecaptchaReqLimit = 500
4949 defaultOWASPModSecRulesFile = "/usr/local/lsws/conf/owasp/modsec_includes.conf"
5050 defaultModSecurityModuleFile = "/usr/local/lsws/modules/mod_security.so"
51+ defaultLiteSpeedRepoScript = "https://repo.litespeed.sh"
52+ defaultRepoScriptTempPath = "/tmp/ols-cli-litespeed-repo.sh"
5153 wpArchiveURL = "https://wordpress.org/latest.tar.gz"
5254 wpArchiveSHA1URL = "https://wordpress.org/latest.tar.gz.sha1"
5355 wpCLIPharURL = "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar"
@@ -967,10 +969,36 @@ func upsertINIValue(content, key, value string) (string, bool) {
967969}
968970
969971func (s SiteService ) configureLiteSpeedRepo (ctx context.Context , info platform.Info ) error {
970- s .console .Bullet ("Using hardened mode: repository bootstrap scripts are disabled" )
971- if err := verifyLiteSpeedPackageAvailability (ctx , s .runner , info ); err != nil {
972+ if err := verifyLiteSpeedPackageAvailability (ctx , s .runner , info ); err == nil {
973+ s .console .Bullet ("LiteSpeed package repository is already configured" )
974+ return nil
975+ }
976+ s .console .Bullet ("Configuring LiteSpeed package repository" )
977+ if err := s .bootstrapLiteSpeedRepo (ctx ); err != nil {
972978 return err
973979 }
980+ if err := verifyLiteSpeedPackageAvailability (ctx , s .runner , info ); err != nil {
981+ return apperr .Wrap (
982+ apperr .CodeCommand ,
983+ "LiteSpeed repository bootstrap completed but openlitespeed is still unavailable" ,
984+ err ,
985+ )
986+ }
987+ s .console .Bullet ("LiteSpeed package repository configured" )
988+ return nil
989+ }
990+
991+ func (s SiteService ) bootstrapLiteSpeedRepo (ctx context.Context ) error {
992+ if err := downloadToFile (defaultLiteSpeedRepoScript , defaultRepoScriptTempPath , 0o700 ); err != nil {
993+ return apperr .Wrap (apperr .CodeCommand , "failed to download LiteSpeed repository bootstrap script" , err )
994+ }
995+ defer func () {
996+ _ = os .Remove (defaultRepoScriptTempPath )
997+ }()
998+
999+ if _ , err := s .runner .Run (ctx , "bash" , defaultRepoScriptTempPath ); err != nil {
1000+ return apperr .Wrap (apperr .CodeCommand , "failed to execute LiteSpeed repository bootstrap script" , err )
1001+ }
9741002 return nil
9751003}
9761004
@@ -980,23 +1008,23 @@ func verifyLiteSpeedPackageAvailability(ctx context.Context, run runner.Runner,
9801008 if _ , err := run .Run (ctx , "apt-cache" , "show" , "openlitespeed" ); err != nil {
9811009 return apperr .Wrap (
9821010 apperr .CodeCommand ,
983- "openlitespeed package is not available via apt repositories; configure the LiteSpeed repository manually " ,
1011+ "openlitespeed package is not available via apt repositories" ,
9841012 err ,
9851013 )
9861014 }
9871015 case platform .PackageManagerYUM :
9881016 if _ , err := run .Run (ctx , "yum" , "-q" , "info" , "openlitespeed" ); err != nil {
9891017 return apperr .Wrap (
9901018 apperr .CodeCommand ,
991- "openlitespeed package is not available via yum repositories; configure the LiteSpeed repository manually " ,
1019+ "openlitespeed package is not available via yum repositories" ,
9921020 err ,
9931021 )
9941022 }
9951023 case platform .PackageManagerDNF :
9961024 if _ , err := run .Run (ctx , "dnf" , "-q" , "info" , "openlitespeed" ); err != nil {
9971025 return apperr .Wrap (
9981026 apperr .CodeCommand ,
999- "openlitespeed package is not available via dnf repositories; configure the LiteSpeed repository manually " ,
1027+ "openlitespeed package is not available via dnf repositories" ,
10001028 err ,
10011029 )
10021030 }
0 commit comments