fix: use POST /upload endpoint for updating NPM certificates
NPM returns 404 on PUT /api/nginx/certificates/{id} with multipart data.
The correct endpoint for uploading certificate files is:
POST /api/nginx/certificates/{id}/upload
Also removed unnecessary 'provider' data field from the upload request.
This commit is contained in:
@@ -798,6 +798,12 @@ class NginxProxyManagerAPI:
|
||||
"""
|
||||
Обновление существующего сертификата
|
||||
|
||||
NPM использует отдельный endpoint для загрузки файлов сертификата:
|
||||
POST /api/nginx/certificates/{id}/upload (multipart/form-data)
|
||||
|
||||
PUT /api/nginx/certificates/{id} принимает только JSON-метаданные,
|
||||
а не файлы, поэтому для обновления файлов используется /upload.
|
||||
|
||||
Args:
|
||||
cert_id: ID сертификата в NPM
|
||||
cert_path: Путь к файлу сертификата (fullchain.pem или cert.pem)
|
||||
@@ -806,18 +812,13 @@ class NginxProxyManagerAPI:
|
||||
Returns:
|
||||
True если успешно
|
||||
"""
|
||||
url = f"{self.host}/api/nginx/certificates/{cert_id}"
|
||||
url = f"{self.host}/api/nginx/certificates/{cert_id}/upload"
|
||||
|
||||
try:
|
||||
files, _cert_key = self._prepare_cert_files(cert_path, key_path)
|
||||
|
||||
# Дополнительные поля формы
|
||||
data = {
|
||||
'provider': 'other', # other для custom сертификатов
|
||||
}
|
||||
|
||||
self.logger.info(f"Обновление сертификата ID {cert_id} в NPM...")
|
||||
response = self.session.put(url, files=files, data=data, timeout=30)
|
||||
response = self.session.post(url, files=files, timeout=30)
|
||||
response.raise_for_status()
|
||||
|
||||
self.logger.info("Сертификат успешно обновлен в NPM")
|
||||
|
||||
Reference in New Issue
Block a user