|
|
||
|---|---|---|
| LICENSE | ||
| README.md | ||
| description.txt | ||
| ook.sh | ||
README.md
ook
Situació
El programari BBBS implementa de manera nativa la gestió automàtica i desassistida de fitxers d'usuari quan aquests arriben per canals de distribució TIC(propis de FidoNet). Així, de manera transparent, el sistema:
- Importa els nous fitxers.
- Actualitza les noves versions dels fitxers existents.
- Distribueix als diferents links els respectius fitxers d'acord amb les seves respectives configuracions.
EL programari BBBS també contempla la gestió anterior de manera manual i assistida, a través dels menús propis del sistema en connexió local o telnet.
Problema
El programari BBBS no contempla l'addició, ni manual ni automàtica, de nous fitxers si aquests no s'incorporen al sistema mitjançant els dos mètodes anteriors.
Imaginem alguns casos d'ús d'incorporacions:
- Col·leccions de fitxers (p. ex. una sèrie de capítols d'un còmic, a fitxer per capítol)
- Fitxers serialitzats (p. ex. un fitxer de gran mida comprimit en volums, a fitxer per volum)
- Conjunt de fitxers independents en una carpeta comuna (p. ex. les fotografies diàries que fa la NASA, a fitxer per foto)
En aquests casos, per a posar a disposició dels meus usuaris aquests fitxers, hauria d'optar entre aquestes dues opcions:
- Crear manualment un fitxer
.TICper a cada nou fitxer i importar-lo al sistema (això semi-automatitzaria bellugar el fitxer de la carpetainbounda la destinació predefinida per l'àreaTIC, i actualitzaria l'índex en el seu respectiu fitxerdescript.ion1). - Bellugar el fitxer a l'ubicació apropiada i actualitzar el fitxer
descript.ionque fa d'índex de fitxers en cada una de les carpetes de la base de fitxers delBBS.
En tots dos casos, l'esforç és molt superior al benefici i, en el meu cas, justifica que tingui terabytes d'informació pendents d'incorporar a EOTB.
Solució
He desenvolupat ook.sh, un script en bash que ha de donar resposta a aquesta necessitat, com a eina de suport a un SysOp de BBBS.
ook.sh genera i/o manté els fitxers descript.ion a partir de la descripció FILE_ID.DIZ dels fitxers ZIP que se l'hi indiquen, en una ubicació estàtica o recursiva.
Requisits
ook.sh necessita que les utilitats unzip, grep, file i stat estiguin disponibles en el sistema per tal de poder efectuar les operacions necessàries.
Tanmateix, aquest script s'ha provat en un shell bash compatible, de manera que si fas servir un altre shell pot ser necessari ajustar-lo en corcondànça. Això podria aplicar-se a Windows WSL fent possible executar aquest script en una instal·lació de BBBS sobre MS Windows.
Funcionalitat:
-
Magic Number: Utilitzo la comanda
fileper a assegurar que un arxiu processable sigui realment un ZIP2, verificant si la sortida de la comanda conté'Zip archive data'. -
Processament de ZIP: Per a cada arxiu
ZIP, l'script verifica si ja està registrat en el seudescript.ion. Si ho està, omet el seu processat. En cas de no estar-ho, extreu3 el contingut del fitxerfile_id.diz(case-insensitive) i l'incorpora en eldescript.ion, en la mateixa línia que el nom de l'arxiuZIP, substituint els salts de línia amb@n(codificació queBBBSinterpreta com a salt de línia). -
Recursivitat: Si s'especifica el paràmetre
-r, l'script processa de manera recursiva tots els subdirectoris. Si no, només processa el directori actual. -
Processar un ZIP específic: Si s'especifica el paràmetre
-sseguit del nom d'un arxiuZIP, només es processa aquest arxiu. -
Resum: En finalitzar la seva execució, el script mostra un resum amb el nombre total de nous arxius
ZIPprocessats i la mida total en bytes d'aquests arxius.
Execució:
En el path on s'executa:
- Mode directori recursiu:
./ook.sh -r - Mode ZIP específic:
./ook.sh -s arxiu.zip - Mode directori actual (sense recursivitat):
./ook.sh
<EOF>
-
A títol informatiu en el repositori incloc l'especificació original del format
DESCRIPT.IONdeJP Software Inc.. ↩︎ -
No contemplo el fet d'incorporar altres dels compressors suportats per
BBBSperquèZIPés el meu estàndard. ↩︎ -
No contemplo el processat de fitxers
ZIPprotegits amb paraula de pas perquèBBBSja gestiona la seguretat d'accés granular als continguts. ↩︎