FIX: #0 Make Nginx config modifier robust using brace matching
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 55s
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 55s
This commit is contained in:
parent
846240a5e7
commit
faf205b004
1 changed files with 30 additions and 39 deletions
|
|
@ -13,46 +13,39 @@ try:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Symlink creation message: {e}")
|
print(f"Symlink creation message: {e}")
|
||||||
|
|
||||||
|
def remove_location_block(content, path):
|
||||||
|
search_str = f"location {path}"
|
||||||
|
start_idx = content.find(search_str)
|
||||||
|
if start_idx == -1:
|
||||||
|
return content
|
||||||
|
|
||||||
|
brace_start = content.find("{", start_idx)
|
||||||
|
if brace_start == -1:
|
||||||
|
return content
|
||||||
|
|
||||||
|
count = 1
|
||||||
|
i = brace_start + 1
|
||||||
|
while i < len(content) and count > 0:
|
||||||
|
if content[i] == '{':
|
||||||
|
count += 1
|
||||||
|
elif content[i] == '}':
|
||||||
|
count -= 1
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
return content[:start_idx] + content[i:]
|
||||||
|
|
||||||
filepath = '/etc/nginx/sites-available/default'
|
filepath = '/etc/nginx/sites-available/default'
|
||||||
|
|
||||||
if os.path.exists(filepath):
|
if os.path.exists(filepath):
|
||||||
content = open(filepath).read()
|
content = open(filepath).read()
|
||||||
|
|
||||||
# Remove old alias block if it exists
|
# Strip any existing /dolibarrbeta block
|
||||||
old_alias_block = r''' location ^~ /dolibarrbeta {
|
content = remove_location_block(content, '/dolibarrbeta')
|
||||||
alias /home/ubuntu/dolibarrbeta/htdocs;
|
|
||||||
index index.php;
|
|
||||||
try_files $uri $uri/ /dolibarrbeta/index.php?$args;
|
|
||||||
|
|
||||||
location ~ \.php$ {
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
|
||||||
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
|
|
||||||
}
|
|
||||||
}'''
|
|
||||||
content = content.replace(old_alias_block, '')
|
|
||||||
|
|
||||||
# Remove old root-based block without timeout if it exists
|
|
||||||
old_root_block = r"""location /dolibarrbeta {
|
|
||||||
root /var/www/html;
|
|
||||||
index index.php;
|
|
||||||
try_files $uri $uri/ /dolibarrbeta/index.php?$args;
|
|
||||||
|
|
||||||
location ~ \.php$ {
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"""
|
|
||||||
content = content.replace(old_root_block, '')
|
|
||||||
|
|
||||||
# Insert the new correct root-based location block with increased timeout
|
# Insert the new correct root-based location block with increased timeout
|
||||||
if 'location /dolibarrbeta' not in content:
|
idx = content.find('location / {')
|
||||||
idx = content.find('location / {')
|
if idx != -1:
|
||||||
if idx != -1:
|
block = r"""location /dolibarrbeta {
|
||||||
block = r"""location /dolibarrbeta {
|
|
||||||
root /var/www/html;
|
root /var/www/html;
|
||||||
index index.php;
|
index index.php;
|
||||||
try_files $uri $uri/ /dolibarrbeta/index.php?$args;
|
try_files $uri $uri/ /dolibarrbeta/index.php?$args;
|
||||||
|
|
@ -66,12 +59,10 @@ if os.path.exists(filepath):
|
||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
content = content[:idx] + block + content[idx:]
|
content = content[:idx] + block + content[idx:]
|
||||||
open('/tmp/default', 'w').write(content)
|
open('/tmp/default', 'w').write(content)
|
||||||
print("Nginx config generated at /tmp/default")
|
print("Nginx config generated at /tmp/default")
|
||||||
else:
|
|
||||||
print("Error: Could not find 'location / {' in Nginx config")
|
|
||||||
else:
|
else:
|
||||||
print("Dolibarrbeta location block already configured in Nginx")
|
print("Error: Could not find 'location / {' in Nginx config")
|
||||||
else:
|
else:
|
||||||
print(f"Error: {filepath} not found")
|
print(f"Error: {filepath} not found")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue