Fix to de-hardcode default temp directory path
Some checks failed
webmin.dev: webmin/webmin / build (push) Has been cancelled

This commit is contained in:
Ilia Ross
2026-02-20 15:16:01 +02:00
parent bfc1f10b38
commit c89dc4996f
39 changed files with 60 additions and 45 deletions

File diff suppressed because one or more lines are too long

View File

@@ -332,7 +332,8 @@ foreach $h (@hosts) {
\$ENV{'config_dir'} = \$config{'usermin_dir'};
\$ENV{'webmin_upgrade'} = 1;
\$ENV{'autothird'} = 1;
\$out = `(cd $extract/usermin-$version && $setup) </dev/null 2>&1 | tee /tmp/.webmin/usermin-setup.out`;
\$tmp = &tempname_dir();
\$out = `(cd $extract/usermin-$version && $setup) </dev/null 2>&1 | tee \$tmp/usermin-setup.out`;
(\$out, \$?)");
if ($out !~ /success/i) {
print $wh &serialise_variable(

View File

@@ -423,7 +423,8 @@ foreach $h (@hosts) {
\$ENV{'config_dir'} = \$config_directory;
\$ENV{'webmin_upgrade'} = 1;
\$ENV{'autothird'} = 1;
\$out = `(cd $extract/webmin-$version && $setup) </dev/null 2>&1 | tee /tmp/.webmin/webmin-setup.out`;
\$tmp = &tempname_dir();
\$out = `(cd $extract/webmin-$version && $setup) </dev/null 2>&1 | tee \$tmp/webmin-setup.out`;
(\$out, \$?)");
if ($ex || $out !~ /success|^0$/i) {
print $wh &serialise_variable(

View File

@@ -4,7 +4,7 @@
require './cpan-lib.pl';
&ReadParse();
$tmp_base = $gconfig{'tempdir'} || "/tmp/.webmin";
$tmp_base = $gconfig{'tempdir'} || &default_webmin_temp_dir();
foreach $f (split(/\0/, $in{'file'})) {
$f =~ /^\Q$tmp_base\E\// || &error($text{'delete_efile'});
unlink($f);

View File

@@ -1558,7 +1558,7 @@ if ($err) {
=head2 cleanup_temp_files
Called from cron to delete old files in the Webmin /tmp directory, and also
Called from cron to delete old files in the Webmin temp directory, and also
old lock links directories.
=cut
@@ -1570,7 +1570,7 @@ if (!$gconfig{'tempdelete_days'}) {
return;
}
# Cleanup files in /tmp/.webmin
# Cleanup files in the default Webmin temp directory
if ($gconfig{'tempdir'} && !$gconfig{'tempdirdelete'}) {
print STDERR "Temp file clearing is not done for the custom directory $gconfig{'tempdir'}\n";
}
@@ -1578,7 +1578,7 @@ else {
my $tempdir = &transname();
$tempdir =~ s/\/([^\/]+)$//;
if (!$tempdir || $tempdir eq "/") {
$tempdir = "/tmp/.webmin";
$tempdir = &default_webmin_temp_dir();
}
my $cutoff = time() - $gconfig{'tempdelete_days'}*24*60*60;

View File

@@ -4,7 +4,8 @@
require './software-lib.pl';
&ReadParse();
$in{'file'} =~ /^\/tmp\/.webmin\// || &error($text{'delete_efile'});
my $tmp_base = $gconfig{'tempdir'} || &default_webmin_temp_dir();
$in{'file'} =~ /^\Q$tmp_base\E\// || &error($text{'delete_efile'});
unlink($in{'file'});
&redirect("");

View File

@@ -440,6 +440,17 @@ my $keys = ($modk && $gconfig{$modk}) ? "$modk or tempdir_sys" : "tempdir_sys";
"directory in $config_directory/config and try again.");
}
=head2 default_webmin_temp_dir()
Returns the built-in Webmin temporary directory path used when no tempdir
configuration or environment override is set.
=cut
sub default_webmin_temp_dir
{
return -d "c:/temp" ? "c:/temp" : "/tmp/.webmin";
}
=head2 tempname_dir()
Returns the base directory under which temp files can be created.
@@ -452,7 +463,7 @@ my $tmp_base = $gconfig{'tempdir_'.&get_module_name()} ?
$gconfig{'tempdir'} ? $gconfig{'tempdir'} :
$ENV{'TEMP'} && $ENV{'TEMP'} ne "/tmp" ? $ENV{'TEMP'} :
$ENV{'TMP'} && $ENV{'TMP'} ne "/tmp" ? $ENV{'TMP'} :
-d "c:/temp" ? "c:/temp" : "/tmp/.webmin";
&default_webmin_temp_dir();
my $tmp_dir;
if (@remote_user_info && -d $remote_user_info[7] &&
-w $remote_user_info[7] && !$gconfig{'nohometemp'}) {
@@ -478,9 +489,9 @@ return $tmp_dir;
=head2 tempname([filename])
Returns a mostly random temporary file name, typically under the /tmp/.webmin
directory. If filename is given, this will be the base name used. Otherwise
a unique name is selected randomly.
Returns a mostly random temporary file name, typically under Webmin's default
temp directory. If filename is given, this will be the base name used.
Otherwise a unique name is selected randomly.
=cut
sub tempname

View File

@@ -10,8 +10,9 @@ print &ui_table_start($text{'advanced_header'}, undef, 2);
# Global temp directory
print &ui_table_row($text{'advanced_temp'},
&ui_opt_textbox("tempdir", $gconfig{'tempdir'},
30, $text{'advanced_tempdef'})."<br>".
&ui_opt_textbox("tempdir", $gconfig{'tempdir'}, 30,
&text('advanced_tempdef', &default_webmin_temp_dir())).
"<br>".
&ui_checkbox("tempdirdelete", 1, $text{'advanced_tdd'},
$gconfig{'tempdirdelete'}));

View File

@@ -817,7 +817,7 @@ export_done=Successfully exported the selected modules to $1.
export_title=وحدات التصدير
advanced_temp=دليل الملفات المؤقتة
advanced_tempdef=Default (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Default (<tt>$1</tt>)
advanced_tdd=مسح الملفات المؤقتة في الدليل غير القياسي؟
advanced_tempdelete=الحد الأقصى لسن الملفات المؤقتة
advanced_preload=قبل تحميل مكتبة وظائف Webmin؟

View File

@@ -914,7 +914,7 @@ export_title=Експортиране на модули
advanced_title=Разширени опции
advanced_header=Разширени и експериментални опции
advanced_temp=Временна директория с файлове
advanced_tempdef=По подразбиране (<tt>/tmp/.webmin</tt>)
advanced_tempdef=По подразбиране (<tt>$1</tt>)
advanced_tdd=Изчистване на темп файловете в нестандартна директория?
advanced_tempdelete=Максимална възраст на временните файлове
advanced_nodelete=неограничен

View File

@@ -812,7 +812,7 @@ export_title=Exportació de Mòduls
advanced_title=Opcions Avançades
advanced_header=Opcions avançades i experimentals
advanced_temp=Directori de fitxers temporals
advanced_tempdef=Per defecte (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Per defecte (<tt>$1</tt>)
advanced_tdd=Neteja els fitxers temporals del directori no estàndard
advanced_tempdelete=Edat màxima dels fitxers temporal
advanced_nodelete=Il·limitada

View File

@@ -683,7 +683,7 @@ export_title=Exportovat moduly
advanced_title=Rozšířené možnosti
advanced_header=Rozšířené a experimentální volby
advanced_temp=Adresář pro dočasné soubory
advanced_tempdef=Výchozí (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Výchozí (<tt>$1</tt>)
advanced_tdd=Vyčistit dočasné soubory z nestandardních adresářů?
advanced_tempdelete=Maximální stáří dočasných souborů
advanced_nodelete=Neomezeno

View File

@@ -914,7 +914,7 @@ export_title=Eksport moduler
advanced_title=Avancerede indstillinger
advanced_header=Avancerede og eksperimentelle indstillinger
advanced_temp=Midlertidig filmappe
advanced_tempdef=Standard (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Standard (<tt>$1</tt>)
advanced_tdd=Rydde temp-filer i ikke-standard katalog?
advanced_tempdelete=Maksimal alder for midlertidige filer
advanced_nodelete=Ubegrænset

View File

@@ -914,7 +914,7 @@ export_title=Module exportieren
advanced_title=Erweiterte Optionen
advanced_header=Erweiterte und experimentelle Optionen
advanced_temp=Verzeichnis für temporäre Dateien
advanced_tempdef=Standard (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Standard (<tt>$1</tt>)
advanced_tdd=Temporäre Dateien im benutzerdefinierten Verzeichnis löschen?
advanced_tempdelete=Maximales Alter temporärer Dateien
advanced_nodelete=Unbegrenzt

View File

@@ -914,7 +914,7 @@ export_title=Εξαγωγικές μονάδες
advanced_title=Προχωρημένες επιλογές
advanced_header=Προηγμένες και πειραματικές επιλογές
advanced_temp=Κατάλογος προσωρινών αρχείων
advanced_tempdef=Προεπιλογή (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Προεπιλογή (<tt>$1</tt>)
advanced_tdd=Εκκαθάριση αρχείων temp σε μη τυπικό κατάλογο;
advanced_tempdelete=Μέγιστη ηλικία προσωρινών αρχείων
advanced_nodelete=Απεριόριστος

View File

@@ -917,7 +917,7 @@ export_title=Export Modules
advanced_title=Advanced Options
advanced_header=Advanced and experimental options
advanced_temp=Temporary files directory
advanced_tempdef=Default (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Default (<tt>$1</tt>)
advanced_tdd=Clear temp files in non-standard directory?
advanced_tempdelete=Maximum age of temporary files
advanced_nodelete=Unlimited

View File

@@ -568,7 +568,7 @@ export_ecmd=Falta comando necesario $1
advanced_title=Opciones Avanzadas
advanced_header=Opciones avanzadas y experimentales
advanced_temp=Directorio de archivos temporales
advanced_tempdef=Por defecto (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Por defecto (<tt>$1</tt>)
advanced_preload=¿Precargar librería de funciones Webmin?
advanced_err=Fallo al salvar opciones avanzadas
advanced_etemp=El directorio de archivos temporales falta o no existe

View File

@@ -914,7 +914,7 @@ export_title=Esportazio moduluak
advanced_title=Aukera aurreratuak
advanced_header=Aukera aurreratuak eta esperimentalak
advanced_temp=Aldi baterako fitxategien direktorio
advanced_tempdef=Lehenespenez (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Lehenespenez (<tt>$1</tt>)
advanced_tdd=Direktorio ez estandarraren fitxategiak garbitu?
advanced_tempdelete=Aldi baterako fitxategien gehieneko adina
advanced_nodelete=Mugarik gabe

View File

@@ -407,7 +407,7 @@ export_title=ماژول های صادراتی
advanced_title=گزینه های پیشرفته
advanced_header=گزینه های پیشرفته و آزمایشی
advanced_temp=فهرست پرونده های موقتی
advanced_tempdef=Default (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Default (<tt>$1</tt>)
advanced_tdd=پاک کردن پرونده های دما در فهرست غیر استاندارد؟
advanced_tempdelete=حداکثر سن پرونده های موقتی
advanced_nodelete=نامحدود

View File

@@ -914,7 +914,7 @@ export_title=Vie moduulit
advanced_title=Edistyneet asetukset
advanced_header=Lisäasetukset ja kokeelliset vaihtoehdot
advanced_temp=Väliaikaisten tiedostojen hakemisto
advanced_tempdef=Oletus (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Oletus (<tt>$1</tt>)
advanced_tdd=Poistetaanko temp-tiedostot epästandardissa hakemistossa?
advanced_tempdelete=Väliaikaisten tiedostojen enimmäisikä
advanced_nodelete=Rajoittamaton

View File

@@ -818,7 +818,7 @@ export_title=Modules d'exportation
advanced_title=Options avancées
advanced_header=Options avancées et expérimentales
advanced_temp=Répertoire des fichiers temporaires
advanced_tempdef=Défaut (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Défaut (<tt>$1</tt>)
advanced_tdd=Effacer les fichiers temporaires dans un répertoire non standard?
advanced_tempdelete=Âge maximum des fichiers temporaires
advanced_nodelete=Illimité

View File

@@ -914,7 +914,7 @@ export_title=Izvoz modula
advanced_title=Napredne opcije
advanced_header=Napredne i eksperimentalne mogućnosti
advanced_temp=Imenik privremenih datoteka
advanced_tempdef=Zadano (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Zadano (<tt>$1</tt>)
advanced_tdd=Želite li obrisati temp datoteke u nestandardnom direktoriju?
advanced_tempdelete=Maksimalna dob privremenih datoteka
advanced_nodelete=Neograničen

View File

@@ -821,7 +821,7 @@ export_title=Export modulok
advanced_title=Haladó beállítások
advanced_header=Speciális és kísérleti lehetőségek
advanced_temp=Ideiglenes fájlok könyvtára
advanced_tempdef=Alapértelmezett (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Alapértelmezett (<tt>$1</tt>)
advanced_tdd=Törli a ideiglenes fájlokat a nem szabványos könyvtárban?
advanced_tempdelete=Az ideiglenes fájlok maximális életkora
advanced_nodelete=Korlátlan

View File

@@ -683,7 +683,7 @@ export_title=Esporta Moduli
advanced_title=Opzioni avanzate
advanced_header=Opzioni avanzate e sperimentali
advanced_temp=Directory dei file temporanei
advanced_tempdef=Predefinito (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Predefinito (<tt>$1</tt>)
advanced_tdd=Eliminare i file temporanei nelle directory non standard?
advanced_tempdelete=Durata massima dei file temporanei
advanced_nodelete=Illimitata

View File

@@ -829,7 +829,7 @@ export_title=モジュールのエクスポート
advanced_title=高度なオプション
advanced_header=高度で実験的なオプション
advanced_temp=一時ファイルを置くディレクトリ
advanced_tempdef=既定 ( <tt>/tmp/.webmin</tt> )
advanced_tempdef=既定 ( <tt>$1</tt> )
advanced_tdd=変更した 一時ファイルを置くディレクトリ 内のファイルを定期的に削除する
advanced_tempdelete=一時ファイルを残す期間
advanced_nodelete=無制限

View File

@@ -685,7 +685,7 @@ export_title=모듈 내보내기
advanced_title=고급 옵션
advanced_header=고급과 실험적인 옵션
advanced_temp=임시 파일 디렉토리
advanced_tempdef=기본 (<tt>/tmp/.webmin</tt>)
advanced_tempdef=기본 (<tt>$1</tt>)
advanced_tdd=non-standard 디렉토리의 임시 파일을 제거 하겠습니까?
advanced_tempdelete=임시 파일 보존 기간
advanced_nodelete=제한 없음

View File

@@ -769,7 +769,7 @@ export_title=Eksport modul
advanced_title=Pilihan Lanjutan
advanced_header=Pilihan lanjutan dan eksperimen
advanced_temp=Direktori fail sementara
advanced_tempdef=Lalai (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Lalai (<tt>$1</tt>)
advanced_tdd=Bersihkan fail sementara di dalam direktori tidak standard?
advanced_tempdelete=Tempoh maksimum fail sementara
advanced_nodelete=Tiada had

View File

@@ -752,7 +752,7 @@ export_title=Export Modules
advanced_title=Geavanceerde Opties
advanced_header=Geavanceerde en experimentele opties
advanced_temp=Directory voor tijdelijke bestanden
advanced_tempdef=Standaard (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Standaard (<tt>$1</tt>)
advanced_tdd=Wis tijdelijke files in niet standaard directory?
advanced_tempdelete=Maximum leeftijd voor tijdelijke files
advanced_nodelete=Ongelimiteerd

View File

@@ -818,7 +818,7 @@ export_title=Eksporter moduler
advanced_title=Avanserte innstillinger
advanced_header=Avanserte og eksperimentelle innstillinger
advanced_temp=Katalog for midlertidige filer
advanced_tempdef=Standard (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Standard (<tt>$1</tt>)
advanced_tdd=Fjern temp filer i ikke-standard katalog?
advanced_tempdelete=Maks. alder på midlertidige filer
advanced_nodelete=Ubegrenset

View File

@@ -784,7 +784,7 @@ export_title=Eksportuj moduły
advanced_title=Opcje zaawansowane
advanced_header=Opcje zaawansowane i eksperymentalne
advanced_temp=Katalog plików tymczasowych
advanced_tempdef=Domyślnie (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Domyślnie (<tt>$1</tt>)
advanced_tdd=Czyścić pliki tymczasowe w katalogu niestandardowym?
advanced_tempdelete=Maksymalny wiem plików tymczasowych
advanced_nodelete=Bez limitu

View File

@@ -426,7 +426,7 @@ export_title=Módulos de Exportação
advanced_title=Opções avançadas
advanced_header=Opções avançadas e experimentais
advanced_temp=Diretório de arquivos temporários
advanced_tempdef=Padrão (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Padrão (<tt>$1</tt>)
advanced_tdd=Limpar arquivos temporários no diretório não padrão?
advanced_tempdelete=Idade máxima dos arquivos temporários
advanced_nodelete=Ilimitado

View File

@@ -710,7 +710,7 @@ export_title=Exportar Módulos
advanced_title=Opções Avançadas
advanced_header=Opções avançadas e experimentais
advanced_temp=Diretório de arquivos temporários
advanced_tempdef=Padrão (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Padrão (<tt>$1</tt>)
advanced_tdd=Limpar arquivos temporários em diretórios não-padrão?
advanced_tempdelete=Idade máxima de arquivos temporários
advanced_nodelete=Ilimitado

View File

@@ -697,7 +697,7 @@ export_title=Экспорт модулей
advanced_title=Дополнительные опции
advanced_header=Продвинутые и экспериментальные опции
advanced_temp=Директория для временных файлов
advanced_tempdef=По-умолчанию (<tt>/tmp/.webmin</tt>)
advanced_tempdef=По-умолчанию (<tt>$1</tt>)
advanced_tdd=Очищать временные файлы в нестандартной директории?
advanced_tempdelete=Максимальный возраст временных файлов
advanced_nodelete=Неограниченный

View File

@@ -632,7 +632,7 @@ export_title=Exportovanie modulov
advanced_title=Rozšírené Nastavenia
advanced_header=Rozšírené a experimentálne voľby
advanced_temp=Dočasný súborový adresár
advanced_tempdef=Štandardný (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Štandardný (<tt>$1</tt>)
advanced_tdd=Zmazať dočasné súbory v adresári nie-štandartnom?
advanced_tempdelete=Maximálny vek dočasných súborov
advanced_nodelete=Neobmedzené

View File

@@ -261,7 +261,7 @@ referers_referer=Ska webbsidekontrollen vara påslagen?
advanced_header=Avancerade och experimentella alternativ
advanced_temp=Tillfälliga filer-mapp
advanced_tempdef=Standard (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Standard (<tt>$1</tt>)
advanced_tempdelete=Högsta ålder av temporära filer
advanced_nodelete=Obegränsad
advanced_days=dagar

View File

@@ -437,7 +437,7 @@ export_title=İhracat Modülleri
advanced_title=Gelişmiş seçenekler
advanced_header=Gelişmiş ve deneysel seçenekler
advanced_temp=Geçici dosyalar dizini
advanced_tempdef=Varsayılan (<tt>/tmp/.webmin</tt>)
advanced_tempdef=Varsayılan (<tt>$1</tt>)
advanced_tdd=Standart olmayan dizindeki geçici dosyalar temizlensin mi?
advanced_tempdelete=Maksimum geçici dosya yaşı
advanced_nodelete=Sınırsız

View File

@@ -528,7 +528,7 @@ export_title=Експорт модулів
advanced_title=Розширені опції
advanced_header=Розширені та експериментальні варіанти
advanced_temp=Каталог тимчасових файлів
advanced_tempdef=За замовчуванням (<tt>/tmp/.webmin</tt>)
advanced_tempdef=За замовчуванням (<tt>$1</tt>)
advanced_tdd=Очистити тимчасові файли в нестандартному каталозі?
advanced_tempdelete=Максимальний вік тимчасових файлів
advanced_nodelete=Необмежений

View File

@@ -895,7 +895,7 @@ export_title=导出模块
advanced_title=高级选项
advanced_header=高级和实验选项
advanced_temp=临时文件目录
advanced_tempdef=默认值 (<tt>/tmp/.webmin</tt>)
advanced_tempdef=默认值 (<tt>$1</tt>)
advanced_tdd=是否清除非标准目录中的临时文件?
advanced_tempdelete=时文件的最长期限
advanced_nodelete=不限制

View File

@@ -471,7 +471,7 @@ export_title=導出模塊
advanced_title=高級選項
advanced_header=進階和實驗選項
advanced_temp=臨時文件目錄
advanced_tempdef=默認值(<tt>/tmp/.webmin</tt>
advanced_tempdef=默認值(<tt>$1</tt>
advanced_tdd=清除非標準目錄中的臨時文件?
advanced_tempdelete=臨時文件的最長期限
advanced_nodelete=無限