updown/0040775000567100000120000000000010336462136012064 5ustar jcameronwheelupdown/images/0040775000567100000120000000000007643441540013334 5ustar jcameronwheelupdown/images/pack.gif0100644000567100000120000000017307640556012014733 0ustar jcameronwheelGIF89afff!,Lj(S7MuZXV:' ⡵/*~O Ģ/8Dr46=(BRrzi.R;updown/images/left.gif0100644000567100000120000000016607640556024014754 0ustar jcameronwheelGIF89a !, MD`N-\7y Yh꭬(`b٩|okafD-dxBiiW[(;updown/images/icon.gif0100664000567100000120000000052307640556427014760 0ustar jcameronwheelGIF89a00fff!Created with The GIMP,000I8`hHJ& Ժ"Ev瓝ƄX> q&ԇ*dgL.uHhn`917xypq};o{OmZksPycAr++a$tC4\]_ XUQJ_]S7|ƪuET բɻ ?iGf=zMbj|}-s0?{l*ăݻǏ $;updown/images/.xvpics/0040755000567100000120000000000007640556427014734 5ustar jcameronwheelupdown/images/.xvpics/icon.gif0100664000567100000120000000450107640556427016352 0ustar jcameronwheelP7 332 #IMGINFO:48x48 RGB (339 bytes) #END_OF_COMMENTS 48 48 255 Iڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIIHIIII$IIIIHI%$%H$%$$%%mIIImmnmI$%mIIImmnmI$I$$ImIIImmnmI$nmIIImmnmI$mIIImmnmI$I$mHII$nImmmnmnI$nlImm$IIIڷ۶ڷ۶ڷmnIڷ۶ڷ۶ڷm%Iڷ۶ڷ۶ڷmH$Iڷ۶ڷ۶ڷm%IIڷ۶ڷ۶ڷm%Iڷ۶ڷ۶ڷm$Iڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIڷ۶ڷ۶ڷmIIHIIII$IIIIHI%$%H$%$$%mIIImmnmI$mIIImmnmI$mIIImmnmI$mIIImmnmI$mIIImmnmI$I$nlJ$ImmJmm$updown/images/smallicon.gif0100664000567100000120000000035507777121257016014 0ustar jcameronwheelGIF87aBBC333fff,PIX&EV aQH;RKț;0H`(%oHkvv#v&)7\~8(n%-N}w-R01l<893[PoL(lO#VHI7Tk-Q achj"Cstv ;updown/lang/0040775000567100000120000000000010327011541012773 5ustar jcameronwheelupdown/lang/en0100664000567100000120000000647210277346503013343 0ustar jcameronwheelindex_title=Upload and Download index_header1=Download files to server index_urls=URLs to download index_ddir=File or directory to download to index_bg=Download mode index_bg0=Immediately, and show progress index_bg1=In background, at date index_bg1u=Immediately, but in the background index_time=and time index_down=Download URLs index_header2=Upload files to server index_upload=Files to upload index_dir=File or directory to upload to index_mkdir=Create directory if needed? index_user=Owned by user index_group=Owned by group index_ok=Upload index_return=uploads and downloads form index_prog=Progress index_when=Scheduled index_cancel=Cancel selected downloads index_dest=Destination index_noprog=Not started index_upto=$1 of $2 index_done=Download complete index_imm=Immediately index_asuser=As user index_zip=Extract ZIP or TAR files? index_zipyes=Yes, then delete index_header3=Download file from server to PC index_fetch=File to download index_ok2=Download index_show=Show in browser if possible? upload_title=Upload Files upload_err=Failed to upload files upload_edir=Missing directory to upload to upload_euser=Missing or invalid username upload_egroup=Missing or invalid group name upload_enone=No files selected to upload! upload_emkdir=Failed to create directory : $1 upload_eopen=Failed to write to $1 : $2 upload_done=Successfully uploaded the following files : upload_eaccess=You are not allowed to upload files to $1 upload_ecannot=You are not allowed to upload files at all upload_eucannot=You are not allowed to upload files as user $1 upload_egcannot=The selected group does not contain the selected user upload_ecmd=Missing command $1 upload_eextract=, which could not be extracted : $1 upload_extracted=, and extracted files .. upload_deleted=, and extracted files before deleting archive .. upload_notcomp=Not a ZIP or TAR file download_err=Failed to save download download_eurl='$1' is not a valid URL download_edate=Invalid date or time download_edate2=Impossible date or time download_title=Download Files download_done=Successfully downloaded the following files : download_failed=Download failed : $1 download_eaccess=You are not allowed to download files to $1 download_eucannot=You are not allowed to download files as user $1 download_egcannot=The selected group does not contain the selected user cancel_err=Failed to cancel downloads cancel_enone=None selected cancel_ecannot=You are not allowed to cancel downloads for user $1 log_cancel=Cancelled $1 download(s) log_upload_l=Uploaded file(s) $1 log_upload=Uploaded $1 file(s) log_download_l=Downloaded URL(s) $1 log_download=Downloaded $1 URL(s) log_sdownload_l=Scheduled the download of URL(s) $1 log_sdownload=Scheduled the download of $1 URL(s) acl_users=Can upload and download files as users acl_all=All users acl_this=Current Webmin user acl_only=Only users acl_except=All except users acl_dirs=Can upload and download files to directories acl_home=Include current Webmin user's home directory acl_upload=Can upload files? acl_download=Can download files? acl_nosched=Yes, but not in background acl_max=Maximum upload size acl_unlim=Unlimited acl_b=bytes acl_fetch=Can download files to PC? fetch_err=Failed to download file fetch_ecannot=You are not allowed to download files to a PC fetch_efile=No filename entered fetch_eexists=File does not exist fetch_eopen=Failed to open file : $1 updown/lang/ca0100755000567100000120000000717710323043302013307 0ustar jcameronwheelindex_title=Crregues i Descrregues index_header1=Descrrega de fitxers al servidor index_urls=URLs a descarregar index_ddir=Fitxer o directori per a la descrrega index_bg=Mode de descrrega index_bg0=Immediatament, i mostra el progrs index_bg1=En segon pla, el dia index_bg1u=Immediatament, per en segon pla index_time=i hora index_down=Descarrega URLs index_header2=Crrega de fitxers al servidor index_upload=Fitxers per pujar index_dir=Fitxer o directori per a la crrega index_mkdir=Crea el directori si cal index_user=Usuari propietari index_group=Grup propietari index_ok=Carrega index_return=al formulari de crregues i descrregues index_prog=Progrs index_when=Planificada index_cancel=Cancella les descrregues seleccionades index_dest=Destinaci index_noprog=No iniciada index_upto=$1 de $2 index_done=Descrrega completa index_imm=Immediatament index_asuser=Com a usuari index_zip=Extreu fitxers ZIP o TAR index_zipyes=S, llavors esborra'ls index_header3=Descarrega el fitxer del servidor al PC index_fetch=Fitxer a descarregar index_ok2=Descarrega index_show=Mostra'l en el navegador si s possible upload_title=Crrega de Fitxers upload_err=No he pogut carregar els fitxers upload_edir=Hi falta el directori per a la crrega upload_euser=Hi falta el nom d'usuari o b s invlid upload_egroup=Hi falta el nom de grup o b s invlid upload_enone=No has triat cap fitxer per carregar! upload_emkdir=No he pogut crear el directori: $1 upload_eopen=No he pogut escriure a $1: $2 upload_done=He carregat amb xit els segents fitxers: upload_eaccess=No tens perms per pujar fitxers a $1 upload_ecannot=No tens perms per pujar fitxers upload_eucannot=No tens perms per pujar fitxers com a usuari $1 upload_egcannot=El grup seleccionat no cont l'usuari seleccionat. upload_ecmd=Hi falta l'ordre $1 upload_eextract=, que no ha pogut ser extret: $1 upload_extracted=, he extret els fitxers... upload_deleted=, i he extret els fitxers abans de suprimir l'arxiu... upload_notcomp=No s un fitxer ZIP ni TAR download_err=No he pogut desar la descrrega download_eurl='$1' no s un URL vlid download_edate=Hora o dia invlid download_edate2=Hora o dia impossible download_title=Descrrega de Fitxers download_done=He descarregat amb xit els segents fitxers: download_failed=La descrrega ha fallat: $1 download_eaccess=No tens perms per baixar fitxers a $1 download_eucannot=No tens perms per baixar fitxers com a usuari $1 download_egcannot=El grup seleccionat no cont l'usuari seleccionat. cancel_err=No he pogut cancellar les descrregues cancel_enone=No n'hi ha cap de seleccionada cancel_ecannot=No tens perms per cancellar baixades de l'usuari $1 log_cancel=He cancellat $1 descrregues log_upload_l=He carregat el(s) fitxer(s) $1 log_upload=He carregat $1 fitxer(s) log_download_l=He descarregat els URL(s) $1 log_download=He descarregat $1 URL(s) log_sdownload_l=He planificat la descrrega dels URLs $1 log_sdownload=He planificat la descrrega de $1 URL(s) acl_users=Pot pujar i baixar fitxers com a usuari acl_all=Tots els usuaris acl_this=Usuari Webmin actual acl_only=Noms els usuaris acl_except=Tots excepte els usuaris acl_dirs=Pot pujar i baixar fitxers als directoris acl_home=Inclou el directori arrel actual de l'usuari Webmin acl_upload=Pot pujar fitxers acl_download=Pot baixar fitxers acl_nosched=S, per no en segon pla acl_max=Mida mxima de pujada acl_unlim=Illimitada acl_b=bytes acl_fetch=Pot descarregar fitxers al PC fetch_err=No he pogut descarregar el fitxer fetch_ecannot=No tens perms per descarregar fitxers a un PC fetch_efile=No has introdut cap nom de fitxer fetch_eexists=El fitxer no existeix fetch_eopen=No he pogut obrir el fitxer: $1 updown/lang/de0100644000567100000120000000752410067670022013317 0ustar jcameronwheelacl_all=Alle Benutzer acl_b=bytes acl_dirs=Darf Dateien hoch- und herunterladen und in Verzeichnissen speichern acl_download=Darf Dateien herunterladen? acl_except=Alle, außer Benutzer acl_home=Einschliesslich des Home-Verzeichnisses des aktuellen Webmin-Benutzers acl_max=Maximale Dateigröße zum Hochladen acl_nosched=Ja, aber nicht im Hintergrund acl_only=Nur Benutzer acl_this=Aktueller Webmin-Benutzer acl_unlim=Unbegrenzt acl_upload=Darf Dateien hochladen? acl_users=Darf als Benutzer Dateien hoch- und herunterladen cancel_ecannot=Sie dürfen Downloads für den Benutzer $1 nicht abbrechen cancel_enone=Keine(r) ausgewählt cancel_err=Konnte Downloads nicht abbrechen download_done=Folgende Dateien wurden erfolgreich hochgeladen : download_eaccess=Sie dürfen keine Dateien nach $1 herunterladen download_edate=Ungültige Datums- oder Zeitangabe download_edate2=Unmögliche Datums- oder Zeitangabe download_egcannot=Der ausgewählte Benutzer ist nicht Mitglied der ausgewählten Gruppe download_err=Konnte den Download nicht speichern download_eucannot=Sie dürfen als Benutzer $1 keine Dateien herunterladen download_eurl='$1' ist keine gültige URL download_failed=Beim Download sind Fehler aufgetreten : $1 download_title=Dateien herunterladen index_asuser=Als Benutzer index_bg=Download-Modus index_bg0=Sofort, zeige Fortschritt an index_bg1=Im Hintergrund: Datum index_bg1u=Sofort, aber im Hintergrund index_cancel=Breche ausgewählte Downloads ab index_ddir=Datei oder Verzeichnis, auf/in welches heruntergeladen werden soll index_dest=Ziel index_dir=Datei oder Verzeichnis, auf/in welches hochgeladen werden soll index_done=Herunterladen komplett index_down=URLs herunterladen index_group=Soll dieser Gruppe gehören index_header1=Dateien auf Server herunterladen index_header2=Dateien auf Server hochladen index_imm=Sofort index_mkdir=Wenn nötig: Das Verzeichnis erstellen? index_noprog=Nicht gestartet index_ok=Hochladen index_prog=Fortschritt index_return=Upload- und Downloadauswahl index_time=und Zeit index_title=Upload und Download index_upload=Dateien, die hochgeladen werden sollen index_upto=$1 auf $2 index_urls=URL(s), die heruntergeladen werden soll(en) index_user=Soll diesem Benutzer gehören index_when=Festgelegt index_zip=ZIP- oder TAR-Dateien auspacken? index_zipyes=Ja, und dann löschen log_cancel=$1 Download(s) gestoppt log_download=$1 URL(s) heruntergeladen log_download_l=Heruntergeladene URL(s) $1 log_sdownload=$1 URL(s) wurden zum Herunterladen festgelegt log_sdownload_l=Das Herunterladen folgender URL(s) wurde festgelegt : $1 log_upload=$1 Datei(en) hochgeladen log_upload_l=Hochgeladene Datei(en) $1 upload_deleted=, und extrahiere Dateien vor dem Löschen ... upload_done=Folgende Dateien wurden erfolgreich hochgeladen : upload_eaccess=Sie dürfen keine Dateien nach $1 hochladen upload_ecannot=Sie dürfen gar keine Dateien mit diesem Modul hochladen upload_ecmd=Fehlender Befehl $1 upload_edir=Fehlendes Verzeichnis, in welches hochgeladen werden soll upload_eextract=, welche nicht extrahiert werden konnte: $1 upload_egcannot=Der ausgewählte Benutzer ist nicht Mitglied der ausgewählten Gruppe upload_egroup=Fehlender oder ungültiger Gruppenname upload_emkdir=Konnte das Verzeichnis $1 nicht erstellen upload_enone=Es wurden keine Dateien für das Hochladen ausgewählt! upload_eopen=Konnte $1 nicht schreiben: $2 upload_err=Konnte Dateien nicht hochladen upload_eucannot=Sie dürfen als Benutzer $1 keine Dateien hochladen upload_euser=Fehlender oder ungültiger Benutzername upload_extracted=, und extrahierte Dateien ... upload_notcomp=Keine ZIP- oder TAR-Datei upload_title=Dateien hochladen updown/lang/zh_TW.Big50100644000567100000120000000374110067670065014553 0ustar jcameronwheelindex_title=WǩMU index_header1=UɮרA index_urls=U} index_ddir=ɮשΥؿU index_bg=UҦ index_bg0=ߨAMܵ{ index_bg1=bIA index_bg1u=ߨAbI index_time=Mɶ index_down=U} index_header2=WɮרA index_upload=Wɮ index_dir=ɮשΥؿWǨ index_mkdir=ݭnɴNإߥؿ? index_user=֦ϥΪ index_group=֦s index_ok=W index_return=WǩMU index_prog={ index_when=Ƶ{ index_cancel=U index_dest=ؼ index_noprog=Ұ index_upto=$1WǨ$2 index_done=U index_imm=ߨ index_asuser=ϥΪ̬ upload_title=Wɮ upload_err=Wɮץ upload_edir=JWǥؿ upload_euser=LĩΥJϥΪ̦W upload_egroup=LĩΥJ sզW upload_enone=Wɮ! upload_emkdir=إߥؿ: $1 upload_eopen=gJ$1: $2 upload_done=\WǥHUɮ: upload_eaccess=zQ\Wɮר$1 upload_ecannot=zQ\Wɮרa upload_eucannot=zQ\HϥΪ$1Wɮ upload_egcannot=sըS]tϥΪ download_err=xsU download_eurl='$1' OӦĪ} download_edate=~ήɶ download_edate2=i઺ήɶ download_title=Uɮ download_done=\UHUɮ: download_failed=U : $1 download_eaccess=zQ\Uɮר$1 download_eucannot=zQ\HϥΪ$1Uɮ download_egcannot=sըS]tϥΪ cancel_err=U cancel_enone= cancel_ecannot=zQ\ϥΪ$1U log_cancel=$1U log_upload_l= wWɮ$1 log_upload= wWɮ$1 log_download_l= wU}$1 log_download= wU}$1 log_sdownload_l=wƵ{}$1U log_sdownload=wƵ{}$1U acl_users=iHHӧOϥΪ̦WqWǩMUɮ acl_all=ҦϥΪ acl_this=ثeWebminϥΪ acl_only=ҦϥΪ acl_except=ҦϥΪ̰F acl_dirs=iHWǩMUɮרؿ acl_home=]tثeWebminϥΪ̪aؿ acl_upload=iHWɮ? acl_download=iHUɮ? updown/lang/ms0100664000567100000120000000631010105613237013336 0ustar jcameronwheelacl_all=Semua pengguna acl_b=bait acl_dirs=Boleh muat naik dan muat turun fail kepada direktori acl_download=Boleh muat turun fail? acl_except=Semua kecuali pengguna acl_home=Termasuk direktori rumah pengguna Webmin semasa acl_max=Sais muat naik maksima acl_nosched=Ya, tetapi bukan di balik tabir acl_only=Hanya pengguna acl_this=Pengguna Webmin semasa acl_unlim=Tiada had acl_upload=Boleh muat naik fail? acl_users=Boleh muat naik dan muat turun fail sebagai pengguna cancel_ecannot=Anda tidak dibenar membatalkan muat turun untuk pengguna $1 cancel_enone=Tidak dipilih cancel_err=Gagal membatalkan muat turun download_done=Berjaya memuat turun fail berikut : download_eaccess=Anda tidak dibenar untuk muat tutun fail kepada $1 download_edate=Tarikh atau masa tidak sah download_edate2=Tarikh atau masa mustahil download_egcannot=Kumpulan yang dipilih tidak mengandungi pengguna yang dipilih download_err=Gagal menyimpan muat turun download_eucannot=Anda tidak dibenar muat turun fail sebagai pengguna $1 download_eurl='$1' bukanlah URL yang sah download_failed=Muat turun gagal : $1 download_title=Fail Muat turun index_asuser=Sebagai pengguna index_bg=Mod muat turun index_bg0=Secepat mungkin, dan tunjuk perkembangan index_bg1=Di balik tabir, pada tarikh index_bg1u=Secepat mungkin, tetapi di balik tabir index_cancel=batalkan muat turun dipilih index_ddir=Fail atau direktori untuk di muat turun kepada index_dest=Destinasi index_dir=fail dan direktori untuk di muat naik kepada index_done=Muat turun selesai index_down=Muat turun URL index_group=Dipunyai oleh kumpulan index_header1=Muat turun fail kepada pelayan index_header2=Muat naik fail kepada pelayan index_imm=Secepat mungkin index_mkdir=Cipta direktori jika perlu? index_noprog=Belum bermula index_ok=Muat naik index_prog=PErkembangan index_return=Muat naik dan muat turun daripada index_time=dan masa index_title=Muat naik dan muat turun index_upload=Fail untuk dimuat naik index_upto=$1 dari $2 index_urls=UTL untul dimuat naik index_user=Dipunyai oleh pengguna index_when=Terjadual index_zip=Ekstrak fail ZIP atau TAR? index_zipyes=Ya, kemudian padam log_cancel=$1 muat turun dibatal log_download=$1 URL dimuat turun log_download_l=Muatnaik URL $1 log_sdownload=Jadualkan $1 URL untuk dimuat turun log_sdownload_l=Jadualkan muat turun untuk URL $1 log_upload=$1 fail dimuat naik log_upload_l=Muat naik fail $1 upload_deleted=, dan ekstrak fail sebelum memadam arkib .. upload_done=Berjaya muat naik fail berikut: upload_eaccess=Anda tidak dibenarkan muat naik fail kepada $1 upload_ecannot=Anda tidak dibenarkan muat naik fail sama sekali upload_ecmd=Arahan $1 hilang upload_edir=direktori untuk dimuat naik hilang upload_eextract=, yang mana tidak dapat diekstrak : $1 upload_egcannot=Kumpulan yang dipilih tidak mengandungi pengguna yang dipilih upload_egroup=Nama kumpulan hilang atau tidak sah upload_emkdir=Gagal mencipta diorektori : $1 upload_enone=Tidak fail yang dipilih untuk dimuat naik! upload_eopen=Gagal menulis kepada $1 : $2 upload_err=Gagal muat naik fail upload_eucannot=Anda tidak dibenarkan muat naik fail sebagai pengguna $1 upload_euser=Namapengguna hidalng atau tidak sah upload_extracted=, dan ekstrak fail .. upload_notcomp=Bukan fail ZIP atau TAR upload_title=Muat naik Fail updown/lang/ru_SU0100664000567100000120000000615210124250556013762 0ustar jcameronwheelacl_all= acl_b= acl_dirs= acl_download= ? acl_except= acl_home= Webmin acl_max= acl_nosched=, acl_only= acl_this= Webmin acl_unlim= acl_upload= ? acl_users= cancel_ecannot= $1 cancel_enone= cancel_err= download_done= : download_eaccess= $1 download_edate= download_edate2= download_egcannot= download_err= download_eucannot= $1 download_eurl='$1' URL download_failed= : $1 download_title= index_asuser= index_bg= index_bg0=, index_bg1= index_bg1u=, index_cancel= index_ddir= index_dest= index_dir= index_done= index_down= URL index_group= index_header1= index_header2= index_imm= index_mkdir= ? index_noprog= index_ok= index_prog= index_return= index_time= index_title= index_upload= index_upto=$1 $2 index_urls=URL() index_user= index_when= index_zip= ZIP TAR ? index_zipyes=, log_cancel= $1 log_download= $1 URL() log_download_l= URL() $1 log_sdownload= $1 URL() log_sdownload_l= URL() $1 log_upload= $1 () log_upload_l= () $1 upload_deleted=, upload_done= : upload_eaccess= $1 upload_ecannot= upload_ecmd= $1 upload_edir= upload_eextract=, : $1 upload_egcannot= upload_egroup= upload_emkdir= : $1 upload_enone= ! upload_eopen= $1 : $2 upload_err= upload_eucannot= $1 upload_euser= upload_extracted=, .. upload_notcomp= ZIP TAR upload_title= updown/lang/ru_RU0100664000567100000120000000615210124250566013762 0ustar jcameronwheelacl_all= acl_b= acl_dirs= acl_download= ? acl_except= acl_home= Webmin acl_max= acl_nosched=, acl_only= acl_this= Webmin acl_unlim= acl_upload= ? acl_users= cancel_ecannot= $1 cancel_enone= cancel_err= download_done= : download_eaccess= $1 download_edate= download_edate2= download_egcannot= download_err= download_eucannot= $1 download_eurl='$1' URL download_failed= : $1 download_title= index_asuser= index_bg= index_bg0=, index_bg1= index_bg1u=, index_cancel= index_ddir= index_dest= index_dir= index_done= index_down= URL index_group= index_header1= index_header2= index_imm= index_mkdir= ? index_noprog= index_ok= index_prog= index_return= index_time= index_title= index_upload= index_upto=$1 $2 index_urls=URL() index_user= index_when= index_zip= ZIP TAR ? index_zipyes=, log_cancel= $1 log_download= $1 URL() log_download_l= URL() $1 log_sdownload= $1 URL() log_sdownload_l= URL() $1 log_upload= $1 () log_upload_l= () $1 upload_deleted=, upload_done= : upload_eaccess= $1 upload_ecannot= upload_ecmd= $1 upload_edir= upload_eextract=, : $1 upload_egcannot= upload_egroup= upload_emkdir= : $1 upload_enone= ! upload_eopen= $1 : $2 upload_err= upload_eucannot= $1 upload_euser= upload_extracted=, .. upload_notcomp= ZIP TAR upload_title= updown/lang/sk0100644000567100000120000000576610162373477013364 0ustar jcameronwheelacl_all=Vetci uvatelia acl_b=bajtov acl_dirs=Me nahra a stiahnu sbory do adresrov acl_download=Me sahova sbory? acl_except=Vetci okrem uvateov acl_home=Zahrn domovsk adresr sasnho Webmin uvatea acl_max=Maximlna vekos uploadu acl_nosched=no, ale nie na pozad acl_only=Iba uvatelia acl_this=Sasn Webmin uvate acl_unlim=Nelimitovan acl_upload=Me uploadova sbory? acl_users=Me uploadova a sahova sbory ako uvatelia cancel_ecannot=Nemte prvo zrui sahovanie pre uvatea $1 cancel_enone=Nevybran cancel_err=Zlyhalo zruenie sahovan download_done=spene stiahnut nasledujce sbory: download_eaccess=Nemte prva pre stiahnutie sborov do $1 download_edate=Chybn dtum alebo as download_edate2=Nemon dtum a as download_egcannot=Vybran skupina neobsahuje vbranho uvatea download_err=Zlyhalo uloenie sahovania download_eucannot=Nemte prvo sahova sbory ako uvate $1 download_eurl='$1' nie je platn URL download_failed=Sahovanie zlyhalo : $1 download_title=Stiahnu sbory index_asuser=Ako uvate index_bg=Md sahovania index_bg0=Okamite a uk postup index_bg1=Na pozad da index_bg1u=Okamite, ale na pozad index_cancel=Zrui vybran sahovania index_ddir=Sbor alebo adresr pre uloenie sahovanch dt index_dest=Cie index_dir=Sbor alebo adresr pre upload index_done=Sahovanie ukonen index_down=Stiahni URL adresy index_group=Vo vlastnctve skupiny index_header1=Stiahni sbory na server index_header2=Nahraj sbory na server index_imm=Okamite index_mkdir=Vytvori adresr ak je to potrebn? index_noprog=Nenatartoval index_ok=Upload index_prog=Priebeh index_return=formulr uploadov a sahovan index_time=a as index_title=Upload a Download index_upload=Sbory pre upload index_upto=$1 z $2 index_urls=URL adresy pre stiahnutie index_user=Vo vlastnctve uvatea index_when=Naplnovan index_zip=Rozbali ZIP alebo TAR sbory? index_zipyes=no, potom zmaza log_cancel=Preruen $1 sahovanie log_download=Stiahnut $1 URL log_download_l=Stiahnut URL $1 log_sdownload=Naplnovan sahovanie $1 URL log_sdownload_l=Naplnovan sahovanie URL $1 log_upload=Nahran $1 sboru log_upload_l=Nahran sbory $1 upload_deleted=, a rozbalen sbory pred zmazanm archvu .. upload_done=spene nahran nasledujce sbory : upload_eaccess=Nemte prvo nahra sbory do $1 upload_ecannot=Nemte oprvnenie nahra sbory upload_ecmd=Chbajci prkaz $1 upload_edir=Chbajci adresr pre nahranie do upload_eextract=, ktor nemohol by rozbalen : $1 upload_egcannot=Vybran skupina neobsahuje vybranho uvatea upload_egroup=Chybn alebo chbajce meno skupiny upload_emkdir=Zlyhalo vytvorenie adresra : $1 upload_enone=Neboli vybran iadne sbory pre nahranie! upload_eopen=Chyba pri zpise do $1 : $2 upload_err=Chyba pri uploade sborov upload_eucannot=Nemte prvo pre upload sborov ako uvate $1 upload_euser=Chybn alebo chbajce uvatesk meno upload_extracted=, a rozbalen sbory .. upload_notcomp=Nie je ZIP alebo TAR sbor upload_title=Upload sborov updown/lang/fr0100644000567100000120000000650310177255140013334 0ustar jcameronwheelacl_all=Tous les utilisateurs acl_b=bytes acl_dirs=Peut uploader et downloader des fichiers dans les répertoires acl_download=Peut downloader les fichiers? acl_home=Inclure le répertoire utilisateur de Webmin acl_max=Taille limite d'upload acl_nosched=Oui, mais en tâche de fond acl_only=Les utilisateurs seulement acl_this=Utilisateur courant de Webmin acl_unlim=Sans limite acl_upload=Peut uploader des fichiers? cancel_ecannot=Vous n'êtes pas autorisé à annuler les downloads de l'utilisateur $1 cancel_enone=Aucun sélectionné cancel_err=Impossible d'annuler les downloads download_done=Téléchargement terminé pour le(s) fichier(s) : download_eaccess=Vous n'êtes pas autorisé à downloader les fichier vers $1 download_edate=Heure ou date invalide download_edate2=Heure ou date impossible download_egcannot=Le group sélectionné ne contient pas l'utilisateur sélectionné download_err=Impossible de sauvegarder le download download_eucannot=Vous n'êtes pas autorisé à downloader des fichiers avec l'utilisateur $1 download_eurl='$1' n'est pas un URL valide download_failed=Impossible de downloader : $1 download_title=Fichiers downloadés index_asuser=Avec l'utilisateur index_bg=Mode du download index_bg0=Maintenant, et voir la progression index_bg1=En tâche de fond, à la date index_bg1u=Maintenant, mais en tâche de fond index_cancel=Annuler les downloads sélectionnés index_ddir=Destination du download index_dest=Destination index_dir=Destination de l'upload index_done=Download terminé index_down=Download des URLs index_group=Avec le group index_header1=Download de fichiers sur le serveur index_header2=Upload de fichiers sur le serveur index_imm=Maintenant index_mkdir=Création du répertoire si requis? index_noprog=Non démarré index_ok=Upload index_prog=En cours index_return=la page d'upload et de download index_time=et à l'heure index_title=Upload et Download index_upload=Fichiers à uploader index_upto=$1 sur $2 index_urls=URLs à downloader index_user=Avec l'utilisateur index_when=Planifié index_zip=Extraire les fichiers ZIP ou TAR? index_zipyes=Oui et supprimer log_cancel=$1 download(s) annulé(s) log_download=$1 URL(s) downloadé(s) log_download_l=URL(s) $1 downloadé(s) log_sdownload=Planification du download de $1 URL(s) log_sdownload_l=Planification du download de l'URL(s) $1 log_upload=$1 fichier(s) uploadé(s) log_upload_l=fichier(s) $1 uploadé(s) upload_done=Upload terminé avec succès pour le(s) fichier(s) : upload_eaccess=Vous n'êtes pas autorisé à uploader des fichiers vers $1 upload_ecmd=Commande $1 manquante upload_edir=Répertoire de destination de l'upload manquant upload_egcannot=Le group sélectionné ne contient pas l'utilisateur sélectionné upload_egroup=Nom du groupe invalide ou manquant upload_emkdir=Impossible de créer le répertoire : $1 upload_enone=Aucun fichier à uploader sélectionné upload_eopen=Impossible d'écrire de $1 : $2 upload_err=Impossible d'uploader les fichiers upload_eucannot=Vous n'êtes pas autorisé à uploader les fichiers avec l'utilisateur $1 upload_euser=Nom d'utilisateur manquant ou invalide upload_title=Upload des fichiers updown/lang/tr0100644000567100000120000000617710225071066013356 0ustar jcameronwheelacl_all=Btn kullanclar acl_b=byte acl_dirs=Dosyalar bu dizinlere indirip ykleyebilir acl_download=Dosyalar indirebilir mi? acl_except=Bu kullanclar hari acl_home=Mevcut Webmin kullancsnn ev dizini de dahil acl_max=Maksimum ykleme boyutu acl_nosched=Evet, ama arkaplanda acl_only=Sadece bu kullanclar acl_this=Mevcut Webmin kullancs acl_unlim=Limitsiz acl_upload=Dosya ykleyebilir mi? acl_users=Dosyalar hangi kullanc haklaryla indirip ykleyebilsin cancel_ecannot=$1 kullancsnn indirmelerini iptal etmek iin izininiz yoktur cancel_enone=Hibirey seilmedi cancel_err=ndirmenin iptalinde hata olutu download_done=Aadaki dosyalar baar ile indirildi : download_eaccess=Dosyalar $1 'e indirmek iin izininiz yoktur download_edate=Geersiz tarih ya da saat download_edate2=mkansz tarih ya da saat download_egcannot=Seili grup seili kullancy iermiyor download_err=ndirilen dosyann kaydedilmesinde hata olutu download_eucannot=$1 kullancs ile dosya indirmek iin izininiz yoktur download_eurl='$1' geerli bir URL deil download_failed=ndirmede hata olutu : $1 download_title=Dosyalar ndir index_asuser=Bu kullanc ile index_bg=ndirme biimi index_bg0=Hemen, ve durumu gster index_bg1=Arkaplanda, bu tarihte index_bg1u=Hemen, ama arkaplanda index_cancel=Seili indirmeleri iptal et index_ddir=Dosya ya da dizinlerin indirilecei yer index_dest=Hedef index_dir=Dosya ya da dizinlerin yklenecei yer index_done=ndirme tamamland index_down=ndir index_group=Sahibi olan grup index_header1=Dosyalar sunucuya indir index_header2=Dosyalar sunucuya ykle index_imm=Hemen index_mkdir=Gerekliyse dizin oluturulsun mu? index_noprog=Balamad index_ok=Ykle index_prog=lem index_return=indirme ve ykleme formu index_time=ve bu saatte index_title=Ykleme ve ndirme index_upload=Yklenecek dosyalar index_upto=$2 'de $1 index_urls=ndirilecek URL'ler index_user=Sahibi olan kullanc index_when=Zamanlandrlm index_zip=ZIP ya da TAR dosyalar alsn m? index_zipyes=Evet, sonra sil log_cancel=$1 indirme iptal edildi log_download=$1 URL indirildi log_download_l=$1 URL'leri indirildi log_sdownload=$1 URL'nin indirilmesi zamanlandrld log_sdownload_l=$1 URL'lerinin indirilmesi zamanlandrld log_upload=$1 dosya yklendi log_upload_l=$1 dosyalar yklendi upload_deleted=, ve ariv silinmeden nce dosyalar ald .. upload_done=Aadaki dosyalar baar ile yklendi : upload_eaccess=Dosyalar $1 'ye yklemek iin izininiz yoktur upload_ecannot=Dosya yklemek iin izininiz yoktur upload_ecmd=$1 komutu bulunamad upload_edir=Yklenecek dizin girilmemi upload_eextract=, alamad : $1 upload_egcannot=Seili grup seili kullancy iermiyor upload_egroup=Grup ad girilmemi ya da yanl girilmi upload_emkdir=Dizinin oluturulmasnda hata olutu : $1 upload_enone=Yklenecek dosya seilmedi! upload_eopen=$1 'e yazmada hata olutu : $2 upload_err=Dosyalarn yklenmesinde hata olutu upload_eucannot=Dosyalar $1 kullancs olarka yklemeniz iin izininiz yoktur upload_euser=Kullanc ad girilmemi ya da yanl girilmi upload_extracted=, ve dosyalar ald .. upload_notcomp=ZIP ya da TAR dosyas deil upload_title=Dosya Ykle updown/lang/es0100755000567100000120000000746010307032664013341 0ustar jcameronwheelacl_all=Todos los usuarios acl_b=bytes acl_dirs=Puede subir y bajar ficheros en los directorios acl_download=¿Puede bajar ficheros? acl_except=Todos excepto los usuarios acl_fetch=¿Puede descargar archivos al PC? acl_home=Incluye el directorio raíz actual del usuario Webmin acl_max=Tamaño máximo de subida acl_nosched=Sí, pero no en segundo plano acl_only=Sólo los usuarios acl_this=Usuario Webmin actual acl_unlim=Ilimitada acl_upload=¿Puede subir ficheros? acl_users=Puede subir y bajar ficheros como usuarios cancel_ecannot=No tienes permiso para cancelar descargas del usuario $1 cancel_enone=No hay ninguna seleccionada cancel_err=No he podido cancelar las descargas download_done=Se descargaron con éxito los siguientes ficheros: download_eaccess=No tiene permiso para bajar ficheros a $1 download_edate=Hora o fecha no válido download_edate2=Hora o fecha imposible download_egcannot=El grupo seleccionado no contiene al usuario seleccionado. download_err=No se pudo salvar la descarga download_eucannot=No tiene permiso para bajar ficheros como usuario $1 download_eurl='$1' no es una URL válida download_failed=La descarga ha fallado: $1 download_title=Descarga de Ficheros fetch_ecannot=No tiene permiso para descargar archivos a un PC fetch_eexists=El archivo no existe fetch_efile=No se introdujo nombre de archivo fetch_eopen=Fallo al abrir archivo : $1 fetch_err=Fallo al descargar archivo index_asuser=Como el usuario index_bg=Modo de descarga index_bg0=Inmediatamente, y muestra el progreso index_bg1=En segundo plano, en la fecha index_bg1u=Inmediatamente, pero en segundo plano index_cancel=Cancelar las descargas seleccionadas index_ddir=Fichero o directorio para la descarga index_dest=Destino index_dir=Fichero o directorio en el que se carga index_done=Descarga completa index_down=Descarga URLs index_fetch=Archivo a descargar index_group=Grupo propietario index_header1=Descarga de ficheros al servidor index_header2=Carga de ficheros hacia el servidor index_header3=Descargar archivo desde servidor al PC index_imm=Inmediatamente index_mkdir=¿Crear el directorio si hace falta? index_noprog=No iniciada index_ok=Carga index_ok2=Descarga index_prog=Progreso index_return=formulario de cargas y descargas index_show=¿Mostrar en navegador si es posible? index_time=y hora index_title=Cargas y Descargas index_upload=Ficheros para subir index_upto=$1 de $2 index_urls=URLs a descargar index_user=Usuario propietario index_when=Planificada index_zip=¿Extraer ficheros ZIP o TAR? index_zipyes=Sí, después eliminarlos log_cancel=Canceladas $1 descargas log_download=Descargada(s) $1 URL(s) log_download_l=Descargada(s) la(s) URL(s) $1 log_sdownload=Planificada la descarga de $1 URL(s) log_sdownload_l=Planificada la descarga de las URLs $1 log_upload=Cargado $1 fichero(s) log_upload_l=Cargado el(los) fichero(s) $1 upload_deleted=, y extraidos los ficheros antes de eliminar el archivo... upload_done=He cargado con éxito los siguientes ficheros: upload_eaccess=No tiene permiso para subir ficheros a $1 upload_ecannot=No tiene permiso para subir ficheros upload_ecmd=Falta la orden $1 upload_edir=Falta el directorio para la carga upload_eextract=, que no se ha podido extraer: $1 upload_egcannot=El grupo seleccionado no contiene el usuario seleccionado. upload_egroup=Falta el nombre de grupo o bien no es válido upload_emkdir=No he podido crear el directorio: $1 upload_enone=¡No has elegido ningún fichero para cargar! upload_eopen=No he podido escribir en $1: $2 upload_err=No he podido cargar los ficheros upload_eucannot=No tiene permiso para subir ficheros como usuario $1 upload_euser=Falta el nombre de usuario o bien no es válido upload_extracted=, y extraidos los ficheros... upload_notcomp=No es un fichero ZIP ni TAR upload_title=Carga de Ficheros updown/lang/it0100755000567100000120000000641610264601120013335 0ustar jcameronwheelacl_all=Tutti gli utenti acl_b=byte acl_dirs=Permetti l'upload ed il download nelle directory acl_download=Permetti il download di file? acl_except=Tutti eccetto gli utenti acl_home=Includi la home directory corrente degli utenti Webmin acl_max=Dimensione massima per l'upload acl_nosched=Si, ma non in background acl_only=Solo gli utenti acl_this=Utente Webmin corrente acl_unlim=Illimitato acl_upload=Permetti l'upload di file? acl_users=Permetti l'upload ed il download di file come utente cancel_ecannot=Non sei abilitato ad annullare i download per l'utente $1 cancel_enone=Nessuna selezione cancel_err=Impossibile annullare i download download_done=I seguenti file sono stati scaricati con successo : download_eaccess=Non sei abilitato a scaricare file su $1 download_edate=Data o ora invalida download_edate2=Data o ora impossibile download_egcannot=Il gruppo selezionato non contiene l'utente selezionato download_err=Impossibile salvare il download download_eucannot=Non sei abilitato a scaricare file come utente $1 download_eurl='$1' non è un URL valido download_failed=Download fallito : $1 download_title=Download File index_asuser=Come utente index_bg=Modalità download index_bg0=Immediatamente, e visualizza il progresso index_bg1=In background, in data index_bg1u=Immediatamente, ma in background index_cancel=Annulla i download selezionati index_ddir=File o directory di destinazione del download index_dest=Destinazione index_dir=File o directory di destinazione dell'upload index_done=Download completato index_down=Lista di URL da scaricare index_group=Appartenente al gruppo index_header1=Fai il download dei file sul server index_header2=Fai l'upload dei file sul server index_imm=Immediatamente index_mkdir=Crea la directory se necessario? index_noprog=Non iniziato index_ok=Upload index_prog=Progresso index_return=Modulo degli upload e download index_time=e ora index_title=Upload e Download index_upload=File di cui fare l'upload index_upto=$1 di $2 index_urls=Lista di URL da scaricare index_user=Appartenente all'utente index_when=Programmato index_zip=Estrai file ZIP o TAR? index_zipyes=Si, dopo elimina log_cancel=Download di $1 annullato log_download=Scaricato/i $1 URL log_download_l=Scaricato/i URL $1 log_sdownload=Programmato/i il download di $1 URL log_sdownload_l=Programmato/i il download di URL $1 log_upload=Uploadato $1 file log_upload_l=File $1 uploadato upload_deleted=, e file estratti prima di eliminare l'archivio .. upload_done=Uploadati con successo i seguenti file : upload_eaccess=Non sei abilitato ad uploadare file su $1 upload_ecannot=Non sei abilitato ad uploadare file upload_ecmd=Comando $1 mancante upload_edir=Directory di destinazione dell'upload inesistente upload_eextract=, che non può essere estratto : $1 upload_egcannot=Il gruppo selezionato non contiene l'utente selezionato upload_egroup=Il nome del gruppo è mancante o non valido upload_emkdir=Impossibile creare la directory : $1 upload_enone=Nessun file selezionato per l'upload! upload_eopen=Impossibile scrivere su $1 : $2 upload_err=Impossibile fare l'upload dei file upload_eucannot=Non sei abilitato a fare l'upload dei file come utente $1 upload_euser=Nome utente mancante o non valido upload_extracted=, e i file estratti .. upload_notcomp=Non è un file ZIP o TAR upload_title=Upload File updown/lang/hu0100644000567100000120000000756110327011541013336 0ustar jcameronwheelacl_all=Minden felhasznl acl_b=byteok acl_dirs=Feltlthet illetve letlhet file-okat a knyvtrakba acl_download=file -ok letlthetsge engedlyezve? acl_except=Mindenki kivve ezek a felhasznlk acl_fetch=Letlthet file a PC -re? acl_home=Beletartozzon a Webmin felhasznlk home knyvtra acl_max=Maximlis feltltsi mret acl_nosched=Igen, de nem a httrben acl_only=Csak a megadott felhasznlk acl_this=Aktulis Webmin felhasznl acl_unlim=Korltlan acl_upload=Feltlthet file-okat? acl_users=Feltlthet s letlthet file -okat mint a megadott felhasznl cancel_ecannot=nnek nincs lehetsge megszaktani a letltst a $1 felhasznlnak cancel_enone=Nincs semmi kivalsztva cancel_err=Nem sikerlt megszaktani a letltst download_done=Sikeresen letltdtek a kvetkez file -ok: download_eaccess=nnek nincs engedlyezve hogy eltltse a file -okat a $1 -ba download_edate=rvnytelen dtum vagy id download_edate2=Nem lehetsges dtum vagy id download_egcannot=A kivlasztott csoport nem tartalmazza a kivlasztott felhasznlt download_err=Nem lehet elmenteni a letltst download_eucannot=nnek nincs engedlyezve hogy letltsn file -okat mint $1 felhasznl download_eurl='$1' helytelen URL download_failed=Letlts sikertelen: $1 download_title=Letlttt file-ok fetch_ecannot=nnek nincs engedlyezve hogy letltsn file-okat a PC -re fetch_eexists=A file nem ltezik fetch_efile=Nem lett filenv megadva fetch_eopen=Nem lehet megnyitni a file -t: $1 fetch_err=Nem lehet letlteni a file -t index_asuser=Mint a megadott felhasznl index_bg=Letltsi md index_bg0=Azonnal, s a folyamat megjelentse index_bg1=Httrben, a megadott dtummal index_bg1u=Azonnal, de a httrben index_cancel=Kivlasztott letltsek megszaktsa index_ddir=A file vagy knyvtr, amit le kell tlteni index_dest=Cl index_dir=A file vagy knyvtr, amit fel kell tlteni index_done=Letlts sikerlt index_down=Letlttt URL -ek index_fetch=File amit le kell tlteni index_group=Tulajdonos csoport index_header1=File -ok letltse a szerverre index_header2=File-ok feltltse a szerverre index_header3=File -ok letltse a szerverrl a PC -re index_imm=Azonnal index_mkdir=Ltrehozzak knyvtrat, hogyha szksges? index_noprog=Nem lett elindtva index_ok=Feltlts index_ok2=Letlts index_prog=Folyamatban index_return=Feltlts s letltsi lap index_show=Mutassa a bngszben, hogyha lehetsges? index_time=s id index_title=Feltlts s Letlts index_upload=Feltltend file -ok index_upto=$1 a $2 -bl index_urls=letltend URL -ek index_user=Tulajdonos felhasznl index_when=temezett index_zip=Kitmrtsem a ZIP vagy TAR file -okat? index_zipyes=Igen, azutn trld log_cancel=Megszaktva $1 letlts(ek) log_download=Letltve $1 URL(ek) log_download_l=Letlttt URL(ek) $1 log_sdownload=temezve a letltse a $1 URL(ek)nek log_sdownload_l=temezett leltltse a URL(ek)nek $1 log_upload=Feltltve $1 file(ok) log_upload_l=Feltlttt file -ok $1 upload_deleted=, s tmrtsd ki a file -t, mieltt letrld az arhvot.. upload_done=Sikeresen feltltve a kvetkez file -ok: upload_eaccess=nnek nincs joga feltlteni file-okat a $1 -re upload_ecannot=nnek nincs engedlyezve hogy feltltsn file -okat mindenhova upload_ecmd=Hinyz parancs $1 upload_edir=Nem ltez knyvtr a feltltshet upload_eextract=, ami nem lett kitmrtve: $1 upload_egcannot=A kivlasztott csoport nem tartalmazza a kivlasztott felhasznlt upload_egroup=Hinyz vagy rvnytelen csoportnv upload_emkdir=Nem sikerlt ltrehozni a knyvtrat: $1 upload_enone=Nem lett kivlasztva file a feltltsehez! upload_eopen=Nem sikerlt rni a $1 -re : $2 upload_err=Nem sikerlt feltlteni a fileokat upload_eucannot=nnek nincs joga feltlteni file -okat mint a megadott felhasznl $1 upload_euser=Hinyz vagy rvnytelen felhasznli nv upload_extracted=, s kitmrtse a file-okat.. upload_notcomp=Nem ZIP vagy TAR file upload_title=File -ok feltltse updown/module.info0100664000567100000120000000100510336465723014224 0ustar jcameronwheelname=UpDown desc=Upload and Download longdesc=Upload multiple files to the server, and download multiple URLs either immediately or in the background at a scheduled time. desc_ca=Crregues i Descrregues desc_de=Upload und Download desc_zh_TW.Big5=WǩMU desc_ms=Muatnaik dan Muaturun desc_ru_SU= desc_ru_RU= desc_sk=Upload a Download desc_fr=Upload et Download desc_tr=Ykleme ve ndirme desc_es=Cargas y Descargas readonly=1 desc_hu=Felttls s Letlts version=1.248 updown/upload.cgi0100775000567100000120000001040410271564544014037 0ustar jcameronwheel#!/usr/local/bin/perl # upload.cgi # Upload multiple files require './updown-lib.pl'; &error_setup($text{'upload_err'}); &ReadParseMime($upload_max); $can_upload || &error($text{'upload_ecannot'}); # Validate inputs $in{'dir'} || &error($text{'upload_edir'}); if ($can_mode != 3) { # User can be entered defined(@uinfo = getpwnam($in{'user'})) || &error($text{'upload_euser'}); &can_as_user($in{'user'}) || &error(&text('upload_eucannot', $in{'user'})); $in{'group_def'} || defined(@ginfo = getgrnam($in{'group'})) || &error($text{'upload_egroup'}); $can_mode == 0 || $in{'group_def'} || &in_group(\@uinfo, \@ginfo) || &error($text{'upload_egcannot'}); } else { # User is fixed if (&supports_users()) { @uinfo = getpwnam($remote_user); } } for($i=0; defined($d = $in{"upload$i"}); $i++) { $f = $in{"upload${i}_filename"}; $found++ if ($d && $f); } $found || &error($text{'upload_enone'}); &can_write_file($in{'dir'}) || &error(&text('upload_eaccess', "$in{'dir'}", $!)); # Switch to the upload user &switch_uid_to($uinfo[2], defined(@ginfo) ? $ginfo[2] : $uinfo[3]); # Create the directory if needed if (!-d $in{'dir'} && $in{'mkdir'}) { mkdir($in{'dir'}, 0755) || &error(&text('upload_emkdir', $!)); } # Save the actual files for($i=0; defined($d = $in{"upload$i"}); $i++) { $f = $in{"upload${i}_filename"}; next if (!$f); if (-d $in{'dir'}) { $f =~ /([^\\\/]+)$/; $path = "$in{'dir'}/$1"; } else { $path = $in{'dir'}; } if (!&open_tempfile(FILE, ">$path", 1)) { &error(&text('upload_eopen', "$path", $!)); } &print_tempfile(FILE, $d); &close_tempfile(FILE); push(@uploads, $path); if ($in{'zip'}) { local ($err, $out); $path =~ /^(\S*\/)/; local $dir = $1; local $qdir = quotemeta($dir); local $qpath = quotemeta($path); local @files; if ($path =~ /\.zip$/i) { if (!&has_command("unzip")) { $err = &text('upload_ecmd', "unzip"); } else { open(OUT, "(cd $qdir; unzip -o $qpath) 2>&1 ) { $out .= $_; if (/^\s*[a-z]+:\s+(.*)/) { push(@files, $1); } } close(OUT); $err = $out if ($?); } } elsif ($path =~ /\.tar$/i) { if (!&has_command("tar")) { $err = &text('upload_ecmd', "tar"); } else { open(OUT, "(cd $qdir; tar xvf $qpath) 2>&1 ) { $out .= $_; if (/^(.*)/) { push(@files, $1); } } close(OUT); $err = $out if ($?); } } elsif ($path =~ /\.(tar\.gz|tgz)$/i) { if (!&has_command("tar")) { $err = &text('upload_ecmd', "tar"); } elsif (!&has_command("gunzip")) { $err = &text('upload_ecmd', "gunzip"); } else { open(OUT, "(cd $qdir; gunzip -c $qpath | tar xvf -) 2>&1 ) { $out .= $_; if (/^(.*)/) { push(@files, $1); } } close(OUT); $err = $out if ($?); } } else { # Doesn't look possible $err = $text{'upload_notcomp'}; } if (!$err) { local $j = join("
", map { "  $_" } @files); if ($in{'zip'} == 2) { unlink($path); $ext{$path} = $text{'upload_deleted'}."
".$j; } else { $ext{$path} = $text{'upload_extracted'}."
".$j; } } else { $ext{$path} = &text('upload_eextract', $err); } } } # Switch back to root &switch_uid_back(); &ui_print_header(undef, $text{'upload_title'}, ""); print "

$text{'upload_done'}

\n"; foreach $u (@uploads) { @st = stat($u); print "$u ",@st ? "($st[7] bytes)" : "", $ext{$u} ? " $ext{$u}" : "","

\n"; } print "

\n"; # Save the settings if ($module_info{'usermin'}) { &lock_file("$user_module_config_directory/config"); $userconfig{'dir'} = $in{'dir'}; &write_file("$user_module_config_directory/config", \%userconfig); &unlock_file("$user_module_config_directory/config"); } else { &lock_file("$module_config_directory/config"); $config{'dir_'.$remote_user} = $in{'dir'}; $config{'user_'.$remote_user} = $in{'user'}; $config{'group_'.$remote_user} = $in{'group_def'} ? undef : $in{'group'}; &write_file("$module_config_directory/config", \%config); &unlock_file("$module_config_directory/config"); } &webmin_log("upload", undef, undef, { 'uploads' => \@uploads }); &ui_print_footer("", $text{'index_return'}); updown/config0100664000567100000120000000004207640563361013253 0ustar jcameronwheeldir=/ user=root ddir=/ duser=root updown/index.cgi0100775000567100000120000001677610277346112013677 0ustar jcameronwheel#!/usr/local/bin/perl # index.cgi # Display scheduled downloads, plus a form for uploading a file require './updown-lib.pl'; &ui_print_header(undef, $text{'index_title'}, "", undef, 0, 1); $form = 0; if ($can_download) { # Show form for downloading print "

\n"; print "\n"; print "\n"; print "
$text{'index_header1'}
\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ($can_mode != 3) { # Ask for user and group to download as print "\n"; print "\n"; print "\n"; printf "\n"; } if ($can_schedule) { # Download time can be selected, for scheduling with At print "\n", $now[2], $now[1]; } elsif ($can_background) { # Download must be immediate, but can be backgrounded print "
$text{'index_urls'}
$text{'index_ddir'} ", &file_chooser_button("dir", 1, $form); print " $text{'index_mkdir'}\n"; print "
$text{'index_user'}",&unix_user_input("user", $download_user, $form), "$text{'index_group'} %s\n", $download_group ? "" : "checked", $text{'default'}; printf "\n", $download_group ? "checked" : ""; printf &unix_group_input("group", $download_group, $form), "
$text{'index_bg'} \n"; print " $text{'index_bg0'}
\n"; print " $text{'index_bg1'}\n"; @now = localtime(time()); printf "/", $now[3]; print "/"; printf "\n", $now[5] + 1900; print &date_chooser_button("day", "month", "year", $form),"\n"; print "$text{'index_time'}\n"; printf ":
$text{'index_bg'} \n"; print " $text{'index_bg0'}
\n"; print " $text{'index_bg1u'}\n"; } else { # Download is always right now } print "
\n"; print "
\n"; $form++; # Show current list of scheduled or active downloads @downs = grep { &can_as_user($_->{'user'}) } &list_downloads(); if (@downs) { local ($notdone) = grep { !$_->{'complete'} } @downs; print "
\n"; print "\n"; print " ", $notdone ? "" : "", " ", " ", " ", " ", "\n"; foreach $d (@downs) { print "\n"; if (!$d->{'complete'}) { printf "\n", $d->{'id'}; } elsif ($notdone) { print "\n"; } print "\n"; printf "\n", $d->{'dir'}; print "\n"; printf "\n", $d->{'user'}; print "\n"; print "\n"; } print "

$text{'index_urls'}$text{'index_dest'}$text{'index_when'}$text{'index_user'}$text{'index_prog'}

\n"; local $count = 0; while($url = $d->{"url_$count"}) { print "
\n" if ($count); if (length($url) > 70 && $url =~ /^([^:]+:\/\/[^\/]+\/)(.*)(\/[^\/]+)$/) { print "$1 .. $3"; } else { print $url; } $count++; } print "
%s", $d->{'time'} ? &make_date($d->{'time'}) : $text{'index_imm'},"%s"; if ($d->{'error'}) { print "\n"; if ($count > 1) { print &text('index_upto', $d->{'upto'}+1, $count),"\n"; } print "$d->{'error'}\n"; &delete_download($d); } elsif (!defined($d->{'upto'})) { print $text{'index_noprog'}; } elsif ($d->{'complete'}) { print "$text{'index_done'} (", &nice_size($d->{'total'}),")\n"; &delete_download($d); } else { if ($count > 1) { print &text('index_upto', $d->{'upto'}+1, $count),"\n"; } local $sz = &nice_size($d->{'got'}); print "$sz\n"; if ($d->{'size'}) { print "(".int($d->{'got'}*100/$d->{'size'}). "%)\n"; } } print "
\n"; print "\n" if ($notdone); print "
\n"; $form++; } } if ($can_upload) { # Show form for uploading print "
\n" if ($can_download); print "
\n"; print "\n"; print "\n"; print "
$text{'index_header2'}
\n"; print "\n"; print "\n"; print "\n"; print "\n"; if ($can_mode != 3) { # Allow selection of user to save as print "\n"; print "\n"; print "\n"; printf "\n"; } print "\n"; print "\n"; print "
$text{'index_upload'}\n"; for($i=0; $i<4; $i++) { print "\n"; print "
\n" if ($i%2 == 1); } print "
$text{'index_dir'} ", &file_chooser_button("dir", 1, $form); print " $text{'index_mkdir'}\n"; print "
$text{'index_user'}",&unix_user_input("user", $upload_user, $form),"$text{'index_group'} %s\n", $upload_group ? "" : "checked", $text{'default'}; printf "\n", $upload_group ? "checked" : ""; printf &unix_group_input("group", $upload_group, $form), "
$text{'index_zip'} $text{'index_zipyes'}\n"; print " $text{'yes'}\n"; print " $text{'no'}\n"; print "
\n"; print "
\n"; $form++; } if ($can_fetch) { # Show form to download fetch from server to PC print "
\n" if ($can_download || $can_upload); print "
\n"; print "\n"; print "\n"; print "
$text{'index_header3'}
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'index_fetch'}\n"; print &ui_textbox("fetch", $fetch_file, 50),"\n", &file_chooser_button("fetch", 0, $form); print "
$text{'index_show'}",&ui_yesno_radio("show", $fetch_show),"
\n"; print "
\n"; $form++; } &ui_print_footer("/", $text{'index'}); updown/updown-lib.pl0100664000567100000120000001270310277345661014510 0ustar jcameronwheel# updown-lib.pl do '../web-lib.pl'; &init_config(); require '../ui-lib.pl'; if ($module_info{'usermin'}) { # Running under Usermin &switch_to_remote_user(); &create_user_config_dirs(); $downloads_dir = "$user_module_config_directory/downloads"; $atjob_cmd = "$user_module_config_directory/download.pl"; $can_upload = $config{'upload'}; $can_download = $config{'download'}; $can_fetch = $config{'fetch'}; $can_schedule = 0; $can_background = $config{'background'}; if ($config{'home_only'}) { @can_dirs = ( &resolve_links($remote_user_info[7]), split(/\s+/, $config{'root'}) ); } else { @can_dirs = ( "/" ); } $can_mode = 3; $download_dir = $userconfig{'ddir'}; $download_dir = $remote_user_info[7] if ($download_dir eq "~"); $upload_dir = $userconfig{'dir'}; $upload_dir = $remote_user_info[7] if ($upload_dir eq "~"); $upload_max = $config{'max'}; $fetch_file = $userconfig{'fetch'}; $fetch_show = $userconfig{'show'} || 0; } else { # Running under Webmin $downloads_dir = "$module_config_directory/downloads"; $atjob_cmd = "$module_config_directory/download.pl"; %access = &get_module_acl(); $can_upload = $access{'upload'}; $can_download = $access{'download'}; $can_fetch = $access{'fetch'} && !&is_readonly_mode(); if ($access{'download'} != 2) { $can_schedule = &foreign_check("at"); $can_background = 1; } if (&supports_users()) { $can_mode = $access{'mode'}; } else { $can_mode = 3; } @can_users = split(/\s+/, $access{'users'}); @can_dirs = split(/\s+/, $access{'dirs'}); if ($access{'home'}) { local @uinfo = getpwnam($remote_user); push(@can_dirs, $uinfo[7]) if ($uinfo[7]); } $download_dir = $config{'ddir_'.$remote_user} || $config{'ddir'}; $upload_dir = $config{'dir_'.$remote_user} || $config{'dir'}; $upload_user = $config{'user_'.$remote_user} || $config{'user'}; $upload_group = $config{'group_'.$remote_group} || $config{'group'}; $upload_max = $access{'max'}; $download_user = $config{'duser_'.$remote_user} || $config{'duser'}; $download_group = $config{'dgroup_'.$remote_group} || $config{'dgroup'}; $fetch_file = $config{'fetch_'.$remote_user}; $fetch_show = $config{'show_'.$remote_user} || 0; } # list_downloads() # Returns a list of downloads currently in progress sub list_downloads { local (@rv, $f); opendir(DIR, $downloads_dir); foreach $f (readdir(DIR)) { next if ($f !~ /^(\S+)\.down$/); local $down = &get_download("$1"); push(@rv, $down) if ($down); } closedir(DIR); return @rv; } # get_download(id) sub get_download { local %down; &read_file("$downloads_dir/$_[0].down", \%down) || return undef; $down{'user'} = getpwuid($down{'uid'}); return \%down; } # save_download(&download) sub save_download { $_[0]->{'id'} = time().$$ if (!$_[0]->{'id'}); &lock_file($downloads_dir); mkdir($downloads_dir, 0755); &unlock_file($downloads_dir); &lock_file("$downloads_dir/$_[0]->{'id'}.down"); &write_file("$downloads_dir/$_[0]->{'id'}.down", $_[0]); &unlock_file("$downloads_dir/$_[0]->{'id'}.down"); } # delete_download(&download) sub delete_download { &lock_file("$downloads_dir/$_[0]->{'id'}.down"); unlink("$downloads_dir/$_[0]->{'id'}.down"); &unlock_file("$downloads_dir/$_[0]->{'id'}.down"); } # do_download(&download, &callback, &dests) # Actually download one or more files, and return undef or any error message sub do_download { local $i; for($i=0; $_[0]->{"url_$i"}; $i++) { $progress_callback_url = $_[0]->{"url_$i"}; $progress_callback_count = $i; local $error; local $path; if (-d $_[0]->{'dir'}) { if ($_[0]->{"page_$i"} =~ /([^\/]+)$/) { $path = "$_[0]->{'dir'}/$1"; } else { $path = "$_[0]->{'dir'}/index.html"; } } else { $path = $_[0]->{'dir'}; } &switch_uid_to($_[0]->{'uid'}, $_[0]->{'gid'}); $down->{'upto'} = $progress_callback_count; if ($_[0]->{"proto_$i"} eq "http") { &http_download($_[0]->{"host_$i"}, $_[0]->{"port_$i"}, $_[0]->{"page_$i"}, $path, \$error, $_[1], $_[0]->{"ssl_$i"}, $_[0]->{"user_$i"}, $_[0]->{"pass_$i"}); } else { &ftp_download($_[0]->{"host_$i"}, $_[0]->{"page_$i"}, $path, \$error, $_[1], $_[0]->{"user_$i"}, $_[0]->{"pass_$i"}); } unlink($path) if ($error); &switch_uid_back(); return $error if ($error); push(@{$_[2]}, $path); } return undef; } # can_write_file(file) # Returns 1 if some path can be written to, 0 if not sub can_write_file { local $d; foreach $d (@can_dirs) { return 1 if (&is_under_directory($d, $_[0])); } return 0; } # can_as_user(username) # Returns 1 if uploading or downloading can be done as some user sub can_as_user { if ($can_mode == 0) { return 1; } elsif ($can_mode == 1) { return &indexof($_[0], @can_users) != -1; } elsif ($can_mode == 2) { return &indexof($_[0], @can_users) == -1; } elsif ($can_mode == 3) { return $_[0] eq $remote_user; } else { return 0; # shouldn't happen } } # in_group(&uinfo, &ginfo) sub in_group { return 1 if ($_[0]->[3] == $_[1]->[2]); foreach $s (&other_groups($_[0]->[0])) { return 1 if ($s eq $_[1]->[2]); } return 0; } # switch_uid_to(uid, gid) # Temporarily sets the effective UID and GID, if appropriate sub switch_uid_to { if ($< == 0 && ($_[0] || $_[1]) && &supports_users()) { $old_uid = $>; $old_gid = $); $) = "$_[1] $_[1]"; $> = $_[0]; } } # switch_uid_back() # Undo the switch made by switch_uid_to sub switch_uid_back { if (defined($old_uid)) { $> = $old_uid; $) = $old_gid; $old_uid = $old_gid = undef; } } 1; updown/log_parser.pl0100644000567100000120000000173207641717314014562 0ustar jcameronwheel# log_parser.pl # Functions for parsing this module's logs do 'updown-lib.pl'; # parse_webmin_log(user, script, action, type, object, ¶ms) # Converts logged information from this module into human-readable form sub parse_webmin_log { local ($user, $script, $action, $type, $object, $p, $long) = @_; if ($action eq "upload") { local @uploads = split(/\0/, $p->{'uploads'}); if ($long) { return &text('log_upload_l', join(" ", map { "".&html_escape($_)."" } @uploads)); } else { return &text('log_upload', scalar(@uploads)); } } elsif ($action eq "download") { local $pfx = $p->{'time'} ? "log_sdownload" : "log_download"; local @downloads = split(/\0/, $p->{'urls'}); if ($long) { return &text($pfx.'_l', join(" ", map { "".&html_escape($_)."" } @downloads)); } else { return &text($pfx, scalar(@downloads)); } } elsif ($action eq "cancel") { local @ids = split(/\0/, $p->{'ids'}); return &text('log_cancel', scalar(@ids)); } } updown/download.cgi0100775000567100000120000001061210271564426014362 0ustar jcameronwheel#!/usr/local/bin/perl # download.cgi # Save a download or start it right now require './updown-lib.pl'; require 'timelocal.pl'; &ReadParse(); &error_setup($text{'download_err'}); # Validate and store inputs $i = 0; @urls = split(/[\r\n]+/, $in{'urls'}); foreach $u (@urls) { local ($proto, $host, $port, $page, $ssl); if ($u =~ /^(http|https):\/\/([^\/]+)(\/.*)$/) { $proto = "http"; $ssl = $1 eq 'https'; $host = $2; $page = $3; $port = $ssl ? 443 : 80; if ($host =~ /^(.*):(\d+)$/) { $host = $1; $port = $2; } } elsif ($u =~ /^ftp:\/\/([^\/]+)(:21)?(\/.*)$/) { $proto = "ftp"; $host = $1; $page = $3; } else { &error(&text('download_eurl', $u)); } if ($host =~ /^([^:\@]+):([^:\@]+)\@(\S+)/) { $user = $1; $pass = $2; $host = $3; } $download{"url_$i"} = $u; $download{"proto_$i"} = $proto; $download{"host_$i"} = $host; $download{"user_$i"} = $user; $download{"pass_$i"} = $pass; $download{"port_$i"} = $port; $download{"page_$i"} = $page; $download{"ssl_$i"} = $ssl; $i++; } $in{'dir'} || &error($text{'upload_edir'}); &can_write_file($in{'dir'}) || &error(&text('download_eaccess', "$in{'dir'}", $!)); $download{'dir'} = $in{'dir'}; if ($can_mode != 3) { # User can be entered defined(@uinfo = getpwnam($in{'user'})) || &error($text{'upload_euser'}); &can_as_user($in{'user'}) || &error(&text('download_eucannot', $in{'user'})); $download{'uid'} = $uinfo[2]; $in{'group_def'} || defined(@ginfo = getgrnam($in{'group'})) || &error($text{'upload_egroup'}); $can_mode == 0 || $in{'group_def'} || &in_group(\@uinfo, \@ginfo) || &error($text{'download_egcannot'}); $download{'gid'} = defined(@ginfo) ? $ginfo[2] : $uinfo[3]; } else { # User is fixed if (&supports_users()) { @uinfo = getpwnam($remote_user); $download{'uid'} = $uinfo[2]; $download{'gid'} = $uinfo[3]; } } if ($in{'bg'} && $can_schedule) { # Validate time $in{'hour'} =~ /^\d+$/ && $in{'min'} =~ /^\d+$/ && $in{'day'} =~ /^\d+$/ && $in{'year'} =~ /^\d+$/ || &error($text{'download_edate'}); eval { $download{'time'} = timelocal(0, $in{'min'}, $in{'hour'}, $in{'day'}, $in{'month'}, $in{'year'}-1900) }; $@ && &error($text{'download_edate2'}); } # Create the directory if needed if (!-d $download{'dir'} && $in{'mkdir'}) { &switch_uid_to($download{'uid'}, $download{'gid'}); mkdir($download{'dir'}, 0755) || &error(&text('upload_emkdir', $!)); &switch_uid_back(); } # Save the settings if ($module_info{'usermin'}) { &lock_file("$user_module_config_directory/config"); $userconfig{'ddir'} = $in{'dir'}; &write_file("$user_module_config_directory/config", \%userconfig); &unlock_file("$user_module_config_directory/config"); } else { &lock_file("$module_config_directory/config"); $config{'ddir_'.$remote_user} = $in{'dir'}; $config{'duser_'.$remote_user} = $in{'user'}; $config{'dgroup_'.$remote_user} = $in{'group_def'} ? undef : $in{'group'}; &write_file("$module_config_directory/config", \%config); &unlock_file("$module_config_directory/config"); } if ($in{'bg'} && $can_background) { # Create a script to be called by At &foreign_require("cron", "cron-lib.pl"); &lock_file($atjob_cmd); &cron::create_wrapper($atjob_cmd, $module_name, "download.pl"); &unlock_file($atjob_cmd); &save_download(\%download); if (!$can_schedule) { # Just run this script right now system("$atjob_cmd $download{'id'} >/dev/null 2>&1 $text{'download_done'}

\n"; foreach $p (@paths) { @st = stat($p); print "$p ($st[7] bytes)
\n"; } } if ($error) { print "

",&text('download_failed', $error),"

\n"; } &ui_print_footer("", $text{'index_return'}); } &webmin_log("download", undef, undef, { 'urls' => \@urls, 'time' => $download{'time'} }); updown/download.pl0100775000567100000120000000263007714365234014240 0ustar jcameronwheel#!/usr/local/bin/perl # download.pl # Start downloading some file, and update the .down file with its progress $no_acl_check++; require './updown-lib.pl'; $down = &get_download($ARGV[0]); $down || die "Download ID $ARGV[0] does not exist!"; &can_write_file($down->{'dir'}) || die "Cannot download files to $down->{'dir'}"; # Do the download, updating the config file with progress $down->{'pid'} = $$; &save_download($down); $error = &do_download($down, \&download_callback, \@paths); $down->{'complete'} = 1; $down->{'error'} = $error if ($error); &save_download($down); sub download_callback { if ($_[0] == 1) { # Started ok delete($down->{'size'}); delete($down->{'got'}); delete($down->{'finished'}); $lastupdate = 0; $lastpercent = 0; } elsif ($_[0] == 2) { # Got size $down->{'size'} = $_[1]; } elsif ($_[0] == 3) { # Got some data. Only update the status file every 10 seconds or when # a percent of data is received $down->{'got'} = $_[1]; if ($down->{'size'}) { $percent = int($down->{'got'}*100/$down->{'size'}); $now = time(); return if ($percent <= $lastpercent && $now < $lastupdate + 10); $lastupdate = $now; $lastpercent = $percent; } } elsif ($_[0] == 4) { # All done $down->{'finished'} = 1; $down->{'total'} += $down->{'got'}; } elsif ($_[0] == 5) { # Redirecting to new URL } &switch_uid_back(); &save_download($down); &switch_uid_to($down->{'uid'}, $down->{'gid'}); } updown/cancel.cgi0100775000567100000120000000150110113561424013763 0ustar jcameronwheel#!/usr/local/bin/perl # cancel.cgi # Cancel one or more downloads require './updown-lib.pl'; &ReadParse(); &error_setup($text{'cancel_err'}); @ids = split(/\0/, $in{'cancel'}); @ids || &error($text{'cancel_enone'}); # Delete each one, and its At jobs, and kill its PID if ($can_schedule) { &foreign_require("at", "at-lib.pl"); @ats = &at::list_atjobs(); } foreach $i (@ids) { $down = &get_download($i); &can_as_user($down->{'user'}) || &error(&text('cancel_ecannot', $down->{'user'})); next if (!$down); &delete_download($down); foreach $a (@ats) { if ($a->{'realcmd'} =~ /\Q$atjob_cmd\E\s+\Q$i\E/) { # Found the job to cancel &at::delete_atjob($a->{'id'}); } } if ($down->{'pid'}) { &kill_logged('TERM', $down->{'pid'}); } } &webmin_log("cancel", undef, undef, { 'ids' => \@ids }); &redirect(""); updown/uninstall.pl0100664000567100000120000000052407673727614014447 0ustar jcameronwheel# uninstall.pl # Called when webmin is uninstalled to delete and at jobs require 'updown-lib.pl'; sub module_uninstall { if (&foreign_check("at")) { &foreign_require("at", "at-lib.pl"); @ats = &at::list_atjobs(); foreach $a (@ats) { if ($a->{'realcmd'} =~ /\Q$atjob_cmd\E\s+(\d+)/) { &at::delete_atjob($a->{'id'}); } } } } updown/acl_security.pl0100644000567100000120000000631710277346463015121 0ustar jcameronwheel require 'updown-lib.pl'; # acl_security_form(&options) # Output HTML for editing security options for the updown module sub acl_security_form { print " $text{'acl_upload'}\n"; printf " %s\n", $_[0]->{'upload'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'upload'} ? "" : "checked", $text{'no'}; print " $text{'acl_max'}\n"; printf " %s\n", $_[0]->{'max'} ? "" : "checked", $text{'acl_unlim'}; printf "\n", $_[0]->{'max'} ? "checked" : ""; printf " %s \n", $_[0]->{'max'}, $text{'acl_b'}; print " $text{'acl_download'}\n"; printf " %s\n", $_[0]->{'download'} == 1 ? "checked" : "", $text{'yes'}; printf " %s\n", $_[0]->{'download'} == 2 ? "checked" : "", $text{'acl_nosched'}; printf " %s \n", $_[0]->{'download'} == 0 ? "checked" : "", $text{'no'}; print " $text{'acl_users'} \n"; printf " $text{'acl_all'}
\n", $_[0]->{'mode'} == 0 ? "checked" : ""; printf " $text{'acl_this'}
\n", $_[0]->{'mode'} == 3 ? "checked" : ""; printf " $text{'acl_only'}\n", $_[0]->{'mode'} == 1 ? "checked" : ""; printf " %s
\n", $_[0]->{'mode'} == 1 ? $_[0]->{'users'} : "", &user_chooser_button("userscan", 1); printf " $text{'acl_except'}\n", $_[0]->{'mode'} == 2 ? "checked" : ""; printf " %s \n", $_[0]->{'mode'} == 2 ? $_[0]->{'users'} : "", &user_chooser_button("userscannot", 1); print " $text{'acl_dirs'} \n"; print "
\n"; printf " %s \n", $_[0]->{'home'} ? 'checked' : '', $text{'acl_home'}; print " $text{'acl_fetch'}\n"; printf " %s\n", $_[0]->{'fetch'} ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'fetch'} ? "" : "checked", $text{'no'}; } # acl_security_save(&options) # Parse the form for security options for the cron module sub acl_security_save { $_[0]->{'upload'} = $in{'upload'}; $_[0]->{'max'} = $in{'max_def'} ? undef : $in{'max'}; $_[0]->{'download'} = $in{'download'}; $_[0]->{'mode'} = $in{'mode'}; $_[0]->{'users'} = $in{'mode'} == 0 || $in{'mode'} == 3 ? "" : $in{'mode'} == 1 ? $in{'userscan'} : $in{'userscannot'}; local @dirs = split(/\s+/, $in{'dirs'}); map { s/\/+/\//g } @dirs; map { s/([^\/])\/+$/$1/ } @dirs; $_[0]->{'dirs'} = join(" ", @dirs); $_[0]->{'home'} = $in{'home'}; $_[0]->{'fetch'} = $in{'fetch'}; } updown/CHANGELOG0100664000567100000120000000015010277346732013276 0ustar jcameronwheel---- Changes since 1.220 ---- Added a new form for downloading a file from the server to the user's PC. updown/fetch.cgi0100775000567100000120000000343310336462134013642 0ustar jcameronwheel#!/usr/local/bin/perl # Output one file for download require './updown-lib.pl'; &ReadParse(); &error_setup($text{'fetch_err'}); $can_fetch || &error($text{'fetch_ecannot'}); # Validate filename $file = $ENV{'PATH_INFO'} || $in{'fetch'}; if ($file !~ /^\// && $can_dirs[0] ne "/") { $file = "$can_dirs[0]/$file"; } $file || &error($text{'fetch_efile'}); -r $file && !-d $file || &error($text{'fetch_eexists'}); if ($ENV{'PATH_INFO'}) { # Switch to the correct user if ($can_mode == 3) { @uinfo = getpwnam($remote_user); &switch_uid_to($uinfo[2], $uinfo[3]); } elsif ($can_mode == 1 && @can_users == 1) { @uinfo = getpwnam($can_users[0]); &switch_uid_to($uinfo[2], $uinfo[3]); } # Send it &open_readfile(FILE, $file) || &error(&text('fetch_eopen', $!)); if ($fetch_show) { $type = &guess_mime_type($file, undef); if (!$type) { # See if it is really text $out = &backquote_command("file ".quotemeta(&resolve_links($file))); $type = "text/plain" if ($out =~ /text|script/); } } $type ||= "application/octet-stream"; print "Content-type: $type\n\n"; while() { print $_; } close(FILE); # Switch back to root &switch_uid_back(); } else { # Save file in config if ($module_info{'usermin'}) { &lock_file("$user_module_config_directory/config"); $userconfig{'fetch'} = $file; $userconfig{'show'} = $in{'show'}; &write_file("$user_module_config_directory/config", \%userconfig); &unlock_file("$user_module_config_directory/config"); } else { &lock_file("$module_config_directory/config"); $config{'fetch_'.$remote_user} = $file; $config{'show_'.$remote_user} = $in{'show'}; &write_file("$module_config_directory/config", \%config); &unlock_file("$module_config_directory/config"); } # Redirect to nice URL &redirect("fetch.cgi".$file); } updown/defaultacl0100664000567100000120000000005210277342164014107 0ustar jcameronwheelupload=1 download=1 fetch=1 mode=0 dirs=/