Version française

# NwQuota : A simple Novell Home Directory quota watcher.

For the english version, click here. Warning : the english text you'll find following this link might sound a bit frenchy :-) .

## Résumé

NwQuota est un petit utilitaire Win32 tournant dans la taskbar, permettant de mesurer régulièrement la quantité d'espace disque disponible sur un lecteur réseau mappé sur un serveur Novell. En cas de dépassement de certains seuils, l'icône devient animé et prévient ainsi l'utilisateur de prendre les mesures adéquates. Il permet également d'afficher une fenêtre qui présente les informations de quota de manière compréhensible par le commun des mortels (par opposition à ndir /spa). Il peut gérer aussi bien les limitations imposées au répertoire que les limitations de volume.

## Licence

Ce logiciel est ditribué selon la licence Freeware GPL,.

## Support

Aucun support ne sera effectué par l'auteur.

## Version actuelle

1.52

## Historique des version

- 1.0 , février 2000 : Version de base

- 1.1, mars 2000 : Fonctionalités ajoutées :

  - Une option permet de faire afficher la fenêtre d'information détaillée dès que le seuil haut est franchi.
    C'est fonctionalité est activée en mettant la 5ème option de la ligne de commande à 'y'.
    P.ex nwquota H:\ 300 75 95 N Y 0 0
    L'utilisateur peut désactiver l'affichage automatique de la fenêtre à l'aide d'une case à cocher.

  - La fenêtre d'information détaillée contient maintenant une ligne signalant à l'utilisateur l'état (ok, seuil1, seuil2) de son quota.

  - NwQuota peut centraliser les alarms auprès d'un PC tournant un petit programme Java.

  - Le "tooltip" affiche maintenant en plus la quantité de Mo libre.

- 1.2, juillet 2000 :

  - Lorsqu'un espace terminait les paramêtre de la ligne de commande, NwQuota en concluait à une erreur et démarrait avec les paramêtres par défaut. Corrigé.

  - Lorsque NwQuota est démarré depuis un login script Novell, la fenêtre système "SYSTRAY" n'existe pas encore et cela provoque une erreur. Corrigé : NwQuota vérifie l'existence de cette fenêtre avant de poursuivre. Si elle n'existe toujours pas après 1 mn, il quitte.

  - Si le drive mappé ou le chemin UNC surveillé contenait des répertoires de plus de 8 caractères, NwQuota affichait un '?' sous Win9x : Corrigé.

  - Suppression de l'optimisation du code pour maximiser la vitesse : cela pouvait générer des "Access violation" dans certains cas.

  - Traduction en néerlandais.

- 1.21, juillet 2000:

  - Comportement différent sous WinNT et Win9x lorsque le répertoire contenait des noms longs : Corrigé.

- 1.3, oct 2000

  - Ajout de l'affichage des valeurs NDS "Account balance" pour le support de PCounter.

  - Ajout d'hyperlink lançant directement Netscape.

- 1.4, 19.10.2001

  - Si on utilise des valeurs différentes pour le paramètre indiquant quel chemin scanner, NwQuota peut-être lancé à plusieurs exemplaires, ce qui permet de surveiller plusieurs lecteurs réseaux.

  - Le quota de répertoire (sous la mention "Home Directory") tient compte maintenant des restrictions faites sur les répertoires parents.

- 1.41 : 22.10.2001

  - Le calcul du pourcentage libre était faux dans certains cas de restrictions complexes.

  - NwQuota ne prenait pas le focus correctement dans certains cas.

  - Présentation changée (correction orthographe, ...)

- 1.42 : 29.10.2001

  - Le calcul du pourcentage libre était faux dans certains cas de restrictions complexes.

- 1.43 : 15.11.2001

  - Les seuils peuvent être spécifiés en utilisant des valeures absolues OU relatives.

- 1.5 : 5.6.2002

  - Mise à jour vers la version 1.45 de la classe CTrayNotifyIcon

  - Ajout dans la doc d'une recommandation de ne pas lancer nwquota.exe depuis un lecteur réseau.

  - nwquota.exe est maintenant lié dynamiquement, d'où un exécutable plus petit (~80k) mais une dépendance sur les dll MFC (mfc42.dll). Cela ne devrait pas poser de problème, cette dll étant présente normalement sur toutes les version de Windows récentes.

  - options de compilation mise sur "defaut" et non plus "minimize size", ce qui semblait provoquer des plantées de nwquota sur certaines versions de windows (???).

- 1.51 : 9.9.2002 :

  - Traduction en tchèque.

  - Changement de licence : passage à une licence de type "GPL anti-mines".

- 1.52 : 16.10.2003 :

  - Changement de licence : retour à GPL simple, car personne n'a deigné verser de l'argent à Handicap International.

## A faire :

- Nettoyer un peu le code.

- Migrer les paramêtres de la ligne de commande vers un fichier .ini

## Configuration testées

- Serveur : NW4.11 / SP6a / SP8a, IPX + NW5.1 / SP3 / IP et/ou IPX

- Client :

  - Windows 95 / 98 : clients 2.2 à 3.2

  - Windows NT4.0 : clients 4.6 et 4.7

  - Windows 2000 : client 4.7

  - Windows XP

## Capture d'écran

(english users : don't worry, nwquota.exe will show english dialogs if you are running an non french/german/dutch version of Windows)

- La barre des tâches

- Les divers icônes de la barre des tâches

- Le tooltip

- La fenêtre d'information détaillée

- La centralisation des alames
  <TO_FILL!!!>

## Paramêtres de démarrage

### Exemples

- nwquota.exe

- `nwquota H:\ 300 75 95 % N Y 129.194.34.5 48000`
  `^ ^ ^ ^ ^ ^ ^ ^ ^`
  `Param # 1 2 3 4 5 6 7 8 9`

### Descriptions des paramêtres

Paramêtre | Description
1 | Lecteur réseau que NwQuota doit surveiller. Il doit évidemment pointer sur un mapping Novell, faute de quoi, NwQuota affichera un point d'interrogation.
2 | Délai en seconde entre deux interrogation du serveur par NwQuota. La valeur par défaut de 5 mn (300s) donne de bons résultats.
3 | Seuil bas : Une fois que la place occupée par les donnée sur le lecteur à surveiller atteint ce seuil, NwQuota affiche un signal d'avertissement à l'utilisateur. A partir de la version 1.43, ce seuil peut désigner selon la valeur du paramêtre 5 un pourcentage ou une valeur absolue en Mb.
4 | Seuil haut en pourcent : idem seuil bas, mais il s'agit cette fois du seuil à partir duquel NwQuota affiche un message de danger.
5 | Ce paramêtre spécifie si les seuils définit dans les paramêtres 3 et 4 sont relatifs ou absolus : A : absolu % : relatif
6 | <Y|N> : 'Y' : NwQuota n'affiche que la fenêtre d'information détaillée puis quitte. 'N' : NwQuota s'exécute normalement.
7 | <Y|N> : 'Y' : NwQuota affiche spontanément la fenêtre d''information détaillée lorsque le seuil haut est franchi. 'N' : NwQuota reste discrètement dans le 'systray' (option par défaut)
8 | Adresse IP où reporter les alarmes : 0 : Pas de report <ADR_IP> : Les alarmes seront reportées vers cette adresse IP. Exemple : 207.46.131.130. On peut également mettre un nom résolvable par DNS.
9 | Port IP où reporter les alarmes : 0 : pas de port <no_de_port> : Les alarmes seront reportées vers ce port de l'adresse IP du paramêtre 8. La valeur 48000 convient.

Lancé sans paramêtres, NwQuota s'initialise comme si il était lancé avec les paramêtres suivant : nwquota H:\ 300 75 95 N N 0 0

### Exemples d'utilisation correcte:

- nwquota.exe
  NwQuota démarre avec les valeur par défaut : il restera dans le systray, scanant le H:\ toutes les 5 mn, en utilisant 75% et 95% comme seuil. Il ne s'exprimera quand changeant l'aspect de l'icône dans le systray, sans afficher spontanément la fenêtre détaillée lors le second seuil est franchi.

- nwquota.exe L:\ 300 80 95 % N Y 207.46.131.130 48000
  NwQuota scannera le lecteur L:\ toutes les 5mn. Lorsque le seuil haut sera franchi, il affichera une fenêtre indiquant à l'utilisateur l'état de son quota et enverra un alerte vers la machine d'adresse IP 207.46.131.130 sur le port 48000

- nwquota H:\ 300 75 95 % Y N 0 0
  NwQuota démarre, scan le H:\ affiche la fenêtre d'information détaillée et quitte lorsque l'utilisateur cliquer sur 'ok'.

- nwquota \\serveur\volume\dir 300 75 95 % Y N 0 0

- nwquota H:\ 300 15 5 A N N 0 0
  NwQuota scan H:\ toutes les 5 mn. Le premier seuil sera franchi lorsqu'il reste moins de 15Mb d'espace libre, puis le second ("danger - rouge") sera franchi lorsqu'il ne reste plus que 5 Mb.

### Exemple d'utilisation incorrecte :

- nwquota L:\
  Nombre de paramêtre est insuffisant, nwquota utilisera les même paramêtres par défaut que si il était lancé avec NwQuota.exe sans paramêtre.

- nwquota.exe L:\ 300 80 95 % N Y 207.46 48000
  Adresse IP incorrect, NwQuota démarrera quand même mais ne reportera rien au PC distant.

### Dépannage

Si vous avez des problèmes pour que NwQuota prenne en compte les paramêtres de démarrage, essayer de tapper la ligne de commande qu'avec des majuscules.

## Centralisation des alertes

Lorsque NwQuota est lancé avec les options de report d'alarmes, il envoit un packet de type UDP vers l'adresse IP de cible. Il suffit de faire tourner un petit logiciel serveur implémenté en Java, ce qui permet de garder un trace des utilisateurs arrivant dangereusement proche de leur quota.

Note de dernière minute : Une version exécutable (Win95/98/NT) sans machine virtuelle Java est maintenant disponible dans le répertoire daemon\bin de l'archive. Attention, le fichier dll inclu (snjrt11.dll) doit être inclus dans le même répertoire que l'exécutable.

### Prérequis

Avoir un PC/Station Unix/Mac tournant une machine virtuelle Java et possédant une adresse IP.
Lui Copier NwQuotaD.class qui se trouve dans le répertoire 'daemon' de l'archive de NwQuota, ou recompiler NwQuotaD.java

### Exécution

`java NwQuotaD NoPort <Y|N> <optionel : filtre>`
`^ ^ ^`
`param # 1 2 3`

Paramêtre | Description
1 | Numéro de port : celui-ci doit correspondre avec l'option numéro 9 de NwQuota.exe
2 | Reporter les alertes Danger seulement ? Y : Reporte que les alertes de dépassement du second seuil. N : Report les alertes de dépassement du premier et du second seuil.
3 | Option : Filtre. Le filtre ne fait pas de différence entre les majuscules et minuscules. Example : '-etudiants' : NwQuotaD n'affiche que les alertes ne contenant PAS le mot 'etudiants' '+etudiants' : NwQuotaD n'affiche que les alertes contenant le mot 'etudiants'.

Les alarmes apparaîtront à la console et seront inscrite dans un fichier nwquotalog.txt du répertoire en cours.
Le fichier nwquotalog.txt pourra ensuite facilement être importer dans Excel afin de faciliter la consultation des données.

### Exemple d'utilisation

- java NwQuotaD 48000 Y +di.administ.bastions.unige

- java NwQuotaD 48000 Y -etudiants

- java NwQuotaD 48000 N

## Traffic réseau généré

Plusieurs utilisateurs se sont inquiétés de savoir si NwQuota n'allait pas générer trop de traffic si il est installé sur de nombreux PC. L'utilisation d'un analyseur de protocol nous donne les résultats suivants :

A chaque double-click sur l'icône ou à chaque période de mesure (par défaut : 5mn), le traffic suivant est généré

- Connection en "pure-IP" :

  - Paquets unicast émis : 18. Taille totale : 1522 octets.

  - Paquets unicast reçus: 14. Taille totale : 1183 octets.

Le tout prenant (dans ma configuration) 240ms. On constate donc que l'impact est négligeable.
Il es recommandé de lancer nwquota.exe depuis un lecteur local ! En effet, lorsque l'icône de nwquota clignote, ceci génèrera pas mal de traffic réseau si nwquota.exe est sur un lecteur réseau. En effet, à chaque clignotement, les ressources graphiques de l'icône sont chargées depuis l'exécutable.

## Notes pour les développeurs

Ce programme est distribué sous licence GPL, veuillez donc lire attentivement : http://www.linux-france.org/article/these/gpl.html.

Ne pas utiliser l'optimisation de vitesse du code, cela peut provoquer des plantées du programme.

Il y a deux versions des ressources, anglaises et françaises, que vous pourrez adapter pour répondre à vos besoins. Attention, il semble que les deux versions sont inclues dans l'exécutable : pour les sélectionner "Paramêtres > Paramêtre régionaux > Français" ou "Paramêtres > Paramêtre régionaux > Français", c'est pourquoi un seul exécutable est inclus dans la distribution.

- Environnement : Visual C++ 6.0 english Service Pack 3

- Librairies :

  - Novell NDK for C (dépendances à inclure : calwin32.lib clxwin32.lib)

  - CTrayNotifyIcon v1.4 class. (http://indigo.ie/~pjn/)

  - CToken class (case@dcs.kcl.ac.uk)

- Classes principales :

  - CMainFrame

  - CTrayApp

## Archive

- Le fichier zip contenant la présente documentation, les sources et les exécutables, se trouvent sur http://www.unige.ch/~burdetj/nwquota/nwquota.zip

- Si vous voulez accéder directement à l'exécutable : http://www.unige.ch/~burdetj/nwquota/bin/nwquota.exe

- Si vous voulez accéder directement à l'exécutable ne contenant que les ressources en langue anglaise : http://www.unige.ch/~burdetj/nwquota/bin/nwquota.eng.exe

## Support des langues étrangères

L'exécutable contient les langues suivantes :

- français

- anglais

- allemand

- néerlandais

- tchèque

Si les programme s'affiche dans la mauvaise langue, assurez-vous que vous avez bien sélectionné la langue désirée dans les paramêtres internationaux du paneau de configuration de Windows.

## Remerciements

- pjn@indigo.ie pour sa classe CTrayNotifyIcon.

- case@dcs.kcl.ac.uk pour sa classe CToken.

- Bert Schinkel pour sa traduction allemande.

- Ard Blenke pour sa traduction néerlandaise.

- Terry Broad, pour son debugage d'un problème de traffic réseau.

- David Krotil pour sa traduction tchèque.

Pour me contacter : jean-francois.burdet@adm.unige.ch.

English version

# NwQuota : A simple Novell Home Directory quota watcher

## Abstract

NwQuota is a small Win32 systray utility (distributed under GPL), wich provides a simple way to monitor space restrictions on any Novell Netware mapped drive. When the network drive steps some pre-defined thresholds, the systray icons changes from "OK-Green" to "Warning-Yellow", then after passing a second threshold it becomes "Danger-Red". It can also display the directory and/or volume restrictions in a nice windows using progress bar, wich makes the result undertandable by anyone (wich is not the case with ndir /spa ).

## License

This software is distributed under the Freeware GPL terms.

## Current Version

1.52

## Version History

- 1.0 , february 2000 : First release.

- 1.1, march 2000 : Added functions :

  - One command line option can be set to force NwQuota to show detailed quota information windows as soon as the high threshold is steped.
    This function is switched on by command ligne arg #5
    P.ex nwquota H:\ 300 75 95 N Y 0 0
    The user can disable the auto detailed window show feature using a check box. This setting will be remembered as long as NwQuota is running.

  - The detailed information windows has now a text line telling the user in wich state (ok, threshold1, threshold2) his quota is.

  - NwQuota can now report alarms to a server running a small Java daemon (provided in the zip archive)

  - The tooltip now also display the amount of Mo free

- 1.2, juillet 2000 :

  - When a space was added at the end of the command line parameters, NwQuota switched to the defaults. Solved.

  - When NwQuota was launched before the SysTray windows is created (i.e during login script) NwQuota did crashed. Solved.

  - Win9x users reported that NwQuota switch to "error mode" (icon with an '?') when home directory path contains directories with more than 8 chars. Solved.

  - Speed optimization caused "Access violation" sometimes. Now code is optimized for size only.

  - Dutch translation added.

- 1.21, juillet 2000:

  - NwQuota behavior was different under WinNT and Win9x when watched directory contenait long name : Solved.

- 1.3, oct 2000

  - Added : Display of NDS user attribute "Account balance", this is very usefull when using printing auditing software like PCounter wich stores user print account in this attribute.

  - Added : Hyperlink to web page that user can click to find help. (U. Of Geneva NwQuota custom version only : if you want to adapt this for you, please use VisualC++ editor and recompile !)

- 1.4, 19.10.2001

  - More than one drive can now be monitored :

    - Example :

      - nwquota I:\ 300 75 95 N N 0 0

      - nwquota H:\ 300 75 95 N N 0 0

  - Directory restriction now is calculated including restriction on parents directory.

- 1.41 : 22.10.2001

  - Disk percentage showed incorrect value in some cases : solved.

  - Minor cosmetic changes (typos ...)

  - NwQuota detailed window was losing focus some time : solved.

- 1.42 : 29.10.2001 :

  - Disk percentage showed incorrect value in some cases : solved.

- 1.43 : 15.11.2001

  - Threshold can now be also specified using absolute values

- 1.5 : 5.6.2002

  - Upgrading third party class CTrayNotifyIcon to version 1.45

  - Documentation add : "do not run nwquota.exe from a network drive"

  - nwquota.exe is now linked using option "Use MFC in shared DLL". Resulting exe is now smaller (~80k) but mfc42.dll needs to be on the running PC.

  - Compilation optimization is now "default" instead of "minimize size". The later seemed to make some crashes when nwquota was running on some versions of windows (???).

- 1.51 : 22.8.2002

  - Czech translation added.

  - License changed from GPL to "GPL against mines"

- 1.52 : 16.10.2003 :

  - Licence changed back to GPL since no donation at all to Handicap International was recorded.

## Support

No support at all will be provided by the author.

## To do :

- Code cleaning

- Migrate command line parameters to an .ini file.

## Tested configuration

- Server : NW4.11 / SP6a / SP8a, IPX / NW5.1 SP3 IP/IPX

- Client :

  - Windows 95 / 98 : clients 2.2 to 3.2

  - Windows NT4.0 : clients 4.6 and 4.7

  - Windows 2000 : client 4.7

  - Windows XP

## Screen snapshots

See the french part of this document. English users, don't worry, NwQuota will show english dialogs if you are running a non french/dutch/german version of windows.

## Startup command line args

### Examples

- nwquota.exe

- `nwquota H:\ 300 75 95 % N Y 129.194.34.5 48000`
  `^ ^ ^ ^ ^ ^ ^ ^ ^`
  `Param # 1 2 3 4 5 6 7 8 9`

### Command line parameters description

Parameter | Description
1 | Network drive to watch. Have to be mapped on a Netware server. Can be an UNC path.
2 | Delay between two quota scans in seconds. 300s (5 mn) is a nice value.
3 | Low threshold: When the user fill out its home directory with more than this threshold, NwQuota switch to "warning mode"
4 | High threshold: When the user fill out its home directory with more than this threshold, NwQuota switch to "Danger mode"
5 | Specifies wheter thresholds defined in params #3 and #4 are percentage or absolute values in Mb. % : thresholds are percentage A : thresholds are absolute values in Mb
6 | <Y|N> : 'Y' : NwQuota shows detailed information windows, then quit 'N' : NwQuota runs quietly in the systray
7 | <Y|N> : 'Y' : NwQuota shows detailed information window when the second threshold is steped. 'N' : NwQuota run quietly in the systray
8 | IP where to report alarms : 0 : No report. <ADR_IP> : Example : 207.46.131.130. You can also use an DNS resolvable name.
9 | IP UDP port where to report alarms : 0 : No report. <no_de_port> : 48000 is a nice value.

Launched without parameters, NwQuota runs like it were launched with : nwquota H:\ 300 75 95 N N 0 0

### Correct usage samples :

- nwquota.exe

- nwquota.exe L:\ 300 80 95 % N Y 207.46.131.130 48000

- nwquota H:\ 300 75 95 % Y N 0 0

- nwquota H:\ 300 15 5 A N N 0 0
  "Warning - yellow" threshold is stepped when less than 15Mb of free space is left, then "Danger - red" threshold is stepped when less than 5Mb is left.

### Incorrect usage samples :

- nwquota L:\

- nwquota.exe L:\ 300 80 95 N Y 207.46 48000

### Troubleshooting

If you have problem to make NwQuota reading the command line parameters, try to make sure you typed the command in FULL UPERCASE.

## Alert reporting

When NwQuota.exe is launched using correct value for its parameters #8 and #9, small UDP messages are sent to the target computer.
The target computer should run a small Java daemon (look into the daemon directory of the nwquota zip archive) : NwQuotaD

Last minute : A Win32 exe is now available in the daemon\bin directory wich can be run without a Java virtual machine. Please note that the snjrt11.dll (included) needs to be in the same directory or in the search path.

### Running the daemon

You must have a Java 2 (or Java 1.1) virtual machine (or Java Runtime environment) set up on the computer on wich you want to run the daemon.
`java NwQuotaD NoPort <Y|N> <optionel : filtre>`
`^ ^ ^`
`param # 1 2 3`

Parameter | Description
1 | Port number : Must match with the option #9 of NwQuota.exe
2 | Report only "danger" type alert ? Y : will report only "danger" alert N : will report "danger" and "warning" alerts
3 | Option : Filter The filter in NOT case sensitive. Example : '-students' : NwQuotaD will ignore all alert strings wich contains the 'students' word. '+students' : NwQuotaD will show only alert strings wich contains the 'students' word.

Alarms will be reported on Java console screen and appended into the nwquotalog.txt file in the current directory.
The nwquotalog.txt then can be imported in Excel to make data reading easier.

### Usage examples

- java NwQuotaD 48000 Y +di.administ.bastions.unige

- java NwQuotaD 48000 Y -ETUDIANTS

- java NwQuotaD 48000 N

## Network traffic generated

Some of you fellow Internet users were cautious about bandwith needed by NwQuota, especially in the case were NwQuota is running on a lot of PCs. Running LanAnalyzer gave me the following data :

Every time a measure is made by NwQuota (every 5 mn or the value set in param #2 / every time a double-click is made on the icon), following traffic appened :

- Pure IP client connection :

  - Unicast packets sent from client : 18. Total size : 1522 bytes.

  - Unicast packets received from server : 14. Total size : 1183 bytes.

The whole measure took (at least in my config) 240ms.

We see that NwQuota needs a very few network ressources ...

I do recommend to run nwquota.exe from a local drive : when running from a network drive, nwquota causes a lot of traffic when indicator is not green, that is because each time the icon is blinking (every 0.5 s), the icon ressource is reloaded from nwquota.exe ...

## Notes for developpers

This software is ditributed under the GPL licence, please read carefully : http://www.gnu.org/copyleft/gpl.html

Do not turn "Speed optimization" on : this could cause the code to crash.

There is some different language ressource included in the project. You can change them to meet you needs. They are all included in nwquota.exe, to select the english one, be sure to have to regional settings set on "english" , that's why there is only one .exe included into the distribution.

- IDE : Visual C++ 6.0 english Service Pack 3

- Libs :

  - Novell NDK for C (dépendances à inclure : calwin32.lib clxwin32.lib)

  - CTrayNotifyIcon v1.4 class. (http://indigo.ie/~pjn/)

  - CToken class (case@dcs.kcl.ac.uk for its)

- Main Classes :

  - CMainFrame
    CTrayApp

## Archive

- The zip file containing this html document, the sources and binaries, can be downloaded following this link : http://www.unige.ch/~burdetj/nwquota/nwquota.zip

- If you want to get the exe without all the stuff : http://www.unige.ch/~burdetj/nwquota/bin/nwquota.exe

- If you want to get the exe with english only dialogs : http://www.unige.ch/~burdetj/nwquota/bin/nwquota.eng.exe

## Foreign language support

NwQuota.exe supports display into the following languages :

- french

- english

- german

- dutch

- czech

If you want NwQuota displaying dialogs in another language, be sur to check the locale you have selected in "Regional Setting" in the Windows Control Panel.

## Credits

- pjn@indigo.ie pour sa classe CTrayNotifyIcon.

- case@dcs.kcl.ac.uk pour sa classe CToken.

- Bert Schinkel for its german translation.

- Ard Blenke for its dutch translation.

- Terry Broad, for his high network traffic debuging.

- David Krotil for its czech translation.

To contact the author : jean-francois.burdet@adm.unige.ch.