Proxmox: загрузка ISO, Backups, Templates через веб-интерфейс

Автор: | 10.11.2017
Периодически требуется загрузить Disk (ISO) Image, Template, Backups и другое «по быстрому» через веб-интерфейс, но сталкиваешься с проблемой в виде:
Error 400: Parameter verification failed. content: upload content type ‘backup’ not allowed
Если окольными путями, то вариант через WinSCP или консоль, но хотелось всё таки разобраться. В итоге стало ясно, что это политика Proxmox, на её багтреках есть эта проблема и все в курсе. Поэтому пойдём другим путём (в ущерб безопасности как считает Proxmox).
Proxmox версии 3.4 
Открываем для редактирования следующий скрипт: /usr/share/perl5/PVE/API2/Storage/Status.pm
Находим там следующий фрагмент:
if ($content eq 'iso') {
if ($filename !~ m![^/]+\.[Ii][Ss][Oo]$!) {
raise_param_exc({ filename => "missing '.iso' extension" });
}
$path = PVE::Storage::get_iso_dir($cfg, $param->{storage});
} elsif ($content eq 'vztmpl') {
if ($filename !~ m![^/]+\.tar\.gz$!) {
raise_param_exc({ filename => "missing '.tar.gz' extension" });
}
$path = PVE::Storage::get_vztmpl_dir($cfg, $param->{storage});
} else {
raise_param_exc({ content => "upload content type '$content' not allowed" });
}

По умолчанию доступны для загрузки только ISO образы и шаблоны, при загрузке отличного от этих типов контента получаем сообщение об ошибке. Исправляем на: 

if ($content eq 'iso') {
if ($filename !~ m![^/]+\.[Ii][Ss][Oo]$!) {
raise_param_exc({ filename => "missing '.iso' extension" });
}
$path = PVE::Storage::get_iso_dir($cfg, $param->{storage});
} elsif ($content eq 'vztmpl') {
if ($filename !~ m![^/]+\.tar\.gz$!) {
raise_param_exc({ filename => "missing '.tar
.gz' extension" });
}
$path = PVE::Storage::get_vztmpl_dir($cfg, $param->{storage});
} elsif ($content eq 'backup') {
if ($filename !~ m![^/]+\.vma\.lzo$!) {
raise_param_exc({ filename => "missing '.vma.lzo' extension" });
}
$path = PVE::Storage::get_backup_dir($cfg, $param->{storage});
} else {
raise_param_exc({ content => "upload content type '$content' not allowed" });
}

Добавил проверку на расширение vma.lzo, по аналогии можно добавить любое расширение. Перезагружаем Proxmox, загрузка бэкапов через веб-интерфейс работает. На просторах интернета нашёл вариант, отключающий вообще всю проверку, но сам не проверял: 

if ($content eq 'iso') {
if ($filename !~ m![^/]+\.[Ii][Ss][Oo]$!) {
raise_param_exc({ filename => "missing '.iso' extension" });
}
$path = PVE::Storage::get_iso_dir($cfg, $param->{storage});
} elsif ($content eq 'vztmpl') {
if ($filename !~ m![^/]+\.tar\.gz$!) {
raise_param_exc({ filename => "missing '.tar
.gz' extension" });
}
$path = PVE::Storage::get_vztmpl_dir($cfg, $param->{storage});
} elsif ($content eq 'backup') {
$path = PVE::Storage::get_backup_dir($cfg, $param->{storage});
} else {
raise_param_exc({ content => "upload content type '$content' not allowed" });
}

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.