Project layout

Project layout#

  1$ tree . -a --gitignore -I ".git*"
  2.
  3├── .gitignore  # files and directories to exclude from Git versionning
  4  5├── .gitlab-ci.yml  # configuration file for the GitLab CI
  6  7├── .vale      # vale is a syntax-aware linter for documentation prose
  8     9   └── ...    # all the style guides used by vale
 10 11├── .vale.ini  # vale's configuration file
 12 13├── Makefile  # EPICS generated Makefile to build and manage this project
 14 15├── README.md  # project home page
 16 17├── configure              # EPICS configuration directory
 18    19   ├── CONFIG             # EPICS configuration file for builds
 20   ├── CONFIG_SITE        # EPICS configuration file for application-specific builds
 21   ├── CONFIG_SITE.local  # EPICS configuration file allowing to override CONFIG_SITE without having to modify it
 22   ├── Makefile           # EPICS generated Makefile to build and manage configuration files
 23   ├── RELEASE            # EPICS configuration file for base and external support modules location
 24   ├── RELEASE.local      # EPICS configuration file allowing to override RELEASE without having to modify it
 25   ├── RULES              # EPICS configuration file including the appropriate rules configuration file
 26   ├── RULES.ioc          # EPICS build configuration file of the iocBoot/ sub-directorie(s)
 27   ├── RULES_DIRS         # EPICS build configuration file of each subdirectory
 28   └── RULES_TOP          # EPICS configuration specific to a Top
 29                          # see web-archive:20240909130952/https://docs.epics-controls.org/en/latest/build-system/specifications.html#configuration-files
 30 31├── documentation  # SSH Monitor documentation directory
 32    33   ├── .checks        # scripts used to check the documentation when building it
 34       35      └── checks.py  # Python code used to check the documentation (syntax, formating, etc)
 36    37   ├── .doxygen                                   # doxgen configuration directory, also used to store doxygen builds results
 38       39      ├── doxyfile.conf                          # doxygen configuration file
 40      ├── doxygen_layout.xml                     # doxygen custom page layout
 41      └── filter-patterns-scripts                # doxygen Python scripts used to modify .substitutions and .template files 
 42                                                # just before doxygen interprets them, in order to trick doxygen into thinking 
 43                                                # those files have a valid Python syntax (which is obviously not the cas) 
 44                                                # allowing to generate documentation for those files with doxygen 
 45           46          ├── epics_substitutions_to_doxygen.py  # Python script tricking doxygen into thinking .substitutions have a valid Python syntax
 47          └── epics_template_to_doxygen.py       # Python script tricking doxygen into thinking .template have a valid Python syntax
 48    49   ├── .site  # this folder is where Sphinx will generate the web site content (e.g. .html pages) of the documentation
 50    51   ├── .static  # this folder is used to store some static content that will by Sphinx to generate the web site hosting the documentation
 52      └── ...
 53    54   ├── CHANGELOG.md  # record of all notable changes made to this project
 55    56   ├── conf.py  # Sphinx configuration file
 57    58   ├── contribution_guide.md  # doc about how to contribute to the SSH Monitor project
 59    60   ├── explanations                                  # doc about SSH Monitor explanations (https://diataxis.fr/explanation/)
 61       62      ├── cmd_and_sub_explanations.md               # doc explaning SSH Monitor `.cmd` and `.substitutions` files
 63      ├── custom_shell_instructions_explanations.md # doc explaning SSH Monitor custom command-lines
 64      ├── index.md                                  # index page listing the other documentations of this directory
 65      ├── security_explanations.md                  # doc explaning SSH Monitor security
 66      └── tcp_ports_limitation_explanations.md      # doc explaning SSH Monitor TCP ports limitation
 67    68   ├── glossary.md  # doc describing some EPICS and SSH Monitor terminology
 69    70   ├── how-to-guides  # doc about SSH Monitor how-to guides (https://diataxis.fr/how-to-guides/)
 71       72      ├── basics                                  # documentation about SSH Monitor basics
 73          74         ├── alarm_server_how_to.md              # doc about EPICS alarm servers
 75         ├── cmd_and_sub_how_to.md               # doc showing how to configure and use `.cmd` and `.substitutions` files with SSH Monitor
 76         ├── custom_shell_instructions_how_to.md # doc showing how to specify SSH Monitor custom commands
 77         ├── epics_records_fields_how_to.md      # doc showing how to configure and use some EPICS records fields with SSH Monitor
 78         ├── firewall_how_to.md                  # doc showing how to configure firewalls for SSH Monitor use
 79         ├── index.md                            # index page listing the other documentations of this directory
 80         ├── install_update_remove_how_to.md     # doc showing how to install, update and remove SSH Monitor
 81         ├── run_ssh_monitor_how_to.md           # doc showing how to run SSH Monitor
 82         ├── security_how_to.md                  # doc showing how to configure SSH Monitor targets for better security
 83         ├── ssh_how_to.md                       # doc showing how to configure SSH for SSH Monitor
 84         ├── ssh_monitor_daemon_how_to.md        # doc showing how to set up a daemon for SSH Monitor
 85         └── ssh_monitor_service_how_to.md       # doc showing how to set up a service for SSH Monitor
 86       87      ├── index.md  # index page listing the other documentations of this directory
 88       89      ├── recommended                                          # doc about SSH Monitor recommended features
 90          91         ├── archiver_appliance_monitoring_how_to.md          # doc about archiver appliance monitoring through SSH Monitor
 92         ├── hardware_raid_monitoring_with_megacli_how_to.md  # doc about megacli monitoring through SSH Monitor
 93         ├── hardware_raid_monitoring_with_perccli_how_to.md  # doc about perccli monitoring through SSH Monitor
 94         ├── hardware_raid_monitoring_with_storcli_how_to.md  # doc about storcli monitoring through SSH Monitor
 95         ├── index.md                                         # index page listing the other documentations of this directory
 96         ├── memory_monitoring_how_to.md                      # doc about memory monitoring through SSH Monitor
 97         ├── network_connection_monitoring_how_to.md          # doc about network connection monitoring through SSH Monitor
 98         ├── partitions_monitoring_how_to.md                  # doc about partitions monitoring through SSH Monitor
 99         ├── processors_monitoring_how_to.md                  # doc about processors monitoring through SSH Monitor
100         ├── smart_data_monitoring_how_to.md                  # doc about S.M.A.R.T. monitoring through SSH Monitor
101         ├── software_raid_monitoring_with_btrfs_how_to.md    # doc about btrf monitoring through SSH Monitor
102         ├── software_raid_monitoring_with_lvm_how_to.md      # doc about lvm monitoring through SSH Monitor
103         ├── software_raid_monitoring_with_mdadm_how_to.md    # doc about mdadm monitoring through SSH Monitor
104         ├── software_raid_monitoring_with_zfs_how_to.md      # doc about zfs monitoring through SSH Monitor
105         ├── system_monitoring_with_idrac_how_to.md           # doc about idrac monitoring through SSH Monitor
106         ├── system_monitoring_with_ilo_how_to.md             # doc about ilow monitoring through SSH Monitor
107         ├── system_monitoring_with_ipmi_how_to.md            # doc about ipmi monitoring through SSH Monitor
108         └── system_monitoring_with_xclarity_how_to.md        # doc about xclarity monitoring through SSH Monitor
109      110      └── tips                            # doc about SSH Monitor tips
111          112          ├── index.md                    # index page listing the other documentations of this directory
113          ├── local_monitoring_how_to.md  # doc about monitoring the monitoring machine (i.e. the target machine is also the host)
114          ├── mixed_commands_how_to.md    # doc about processing -- on the host -- the result of a command send to a target
115          └── ssh_jump_how_to.md          # doc about monitoring targets through intermediate machines (thanks to SSH jumps)
116   117   ├── index.md  # index page listing the other documentations of this directory
118   119   ├── presentations                        # presentations about SSH Monitor in general
120      121      ├── ssh_monitor.drawio               # drawio image source summarizing SSH Monitor
122      ├── ssh_monitor.png                  # image summarizing SSH Monitor
123      ├── ssh_monitor_presentation_en.odp  # english presentation about SSH Monitor (.odp format)
124      ├── ssh_monitor_presentation_en.pdf  # english presentation about SSH Monitor (.pdf format)
125      ├── ssh_monitor_presentation_fr.odp  # french presentation about SSH Monitor (.odp format)
126      └── ssh_monitor_presentation_fr.pdf  # french presentation about SSH Monitor (.pdf format)
127   128   ├── project_layout.md  # current file
129   130   ├── references                                              # doc about SSH Monitor references (https://diataxis.fr/reference/)
131      132      ├── index.md                                            # index page listing the other documentations of this directory
133      134      ├── source-code                                         # doc about SSH Monitor source code
135         136         ├── index.md                                        # index page listing the other documentations of this directory
137         ├── menuScan_dbd.md                                 # doc about the EPICS DataBase Definition enhancing the EPICS 'SCAN' field
138         ├── sshmonitorASubCore_c.md                         # doc about the EPICS aSub record code (the core of the SSH Monitor logic)
139         ├── sshmonitorASubCore_dbd.md                       # doc about the EPICS DataBase Definition declaring previous aSub records
140         ├── sshmonitorASubUtils_c.md                        # doc about the source code of some utility fonctions
141         └── sshmonitorMain_cpp.md                           # doc about the source code main file (starting point)
142      143      ├── substitutions                                       # doc about SSH Monitor .substitutions files
144         145         ├── archiver_appliance_monitoring_substitutions.md  # doc about the archiver appliance monitoring .substitutions file
146         ├── connection_monitoring_substitutions.md          # doc about the connection monitoring .substitutions file
147         ├── example_monitoring_substitutions.md             # doc about the example monitoring .substitutions file
148         ├── index.md                                        # index page listing the other documentations of this directory
149         ├── memory_monitoring_substitutions.md              # doc about the memory monitoring .substitutions file
150         ├── partitions_monitoring_substitutions.md          # doc about the partitions monitoring .substitutions file
151         └── processors_monitoring_substitutions.md          # doc about the processors monitoring .substitutions file
152      153      └── template                                            # doc about SSH Monitor .template file
154          155          ├── index.md                                        # index page listing the other documentations of this directory
156          └── ssh_monitor_core_template.md                    # doc about the EPICS DataBase file defining monitoring records
157   158   ├── similar_work_and_alternatives.md  # doc about SSH Monitor similar programs and alternatives
159   160   ├── troubleshooting_guide.md  # doc about common SSH Monitor pitfalls and associated troubleshoot
161   162   └── tutorials                                               # doc about SSH Monitor tutorials (https://diataxis.fr/tutorials/)
163       164       ├── index.md
165       ├── quick_step_by_step_tutorial_on_a_nixos_linux_vm.md  # step-by-step SSH Monitor tutorial using a NixOS virtual machine
166       └── step_by_step_tutorial_on_a_rocky_linux_vm.md        # step-by-step SSH Monitor tutorial using a Rocky virtual machine
167168├── flake.lock  # Nix lock file
169├── flake.nix   # Nix configuration file
170               # see https://github.com/epics-extensions/EPNix
171172├── gui                                        # HMIs examples
173   174   ├── css                                    # HMIs examples for CSS
175      176      ├── archiver_appliance_monitoring.opi  # archiver appliance monitoring HMI example for CSS
177      ├── connection_monitoring.opi          # connection monitoring HMI example for CSS
178      ├── main_display.opi                   # main HMI example for CSS
179      ├── memory_monitoring.opi              # memory monitoring HMI example for CSS
180      ├── partitions_monitoring.opi          # parittions monitoring HMI example for CSS
181      └── processors_monitoring.opi          # processors monitoring HMI example for CSS
182   183   └── phoebus                                # HMIs examples for Phoebus
184       185       ├── archiver_appliance_monitoring.bob  # archiver appliance monitoring HMI example for Phoebus
186       ├── connection_monitoring.bob          # connection monitoring HMI example for Phoebus
187       ├── main_display.bob                   # main HMI example for Phoebus
188       ├── memory_monitoring.bob              # memory monitoring HMI example for Phoebus
189       ├── partitions_monitoring.bob          # parittions monitoring HMI example for Phoebus
190       └── processors_monitoring.bob          # processors monitoring HMI example for Phoebus
191192├── iocBoot                      # EPICS generated directory used to IOC programs with the intended configuration
193   194   ├── Makefile                 # EPICS generated Makefile to build and manage iocBoot/ sub-directorie(s)
195   └── iocsshmonitor
196       ├── Makefile             # EPICS generated Makefile to build and manage files associated to the .cmd
197       └── st_tests.cmd         # EPICS executable file instructing the program loader to run the associated IOC program
198199├── poetry.lock  # Python Poetry lock file
200├── pyproject.toml  # Python Poetry configuration file, used for Sphinx and other documentation build/checking dependencies
201202├── sshmonitorApp                                        # EPICS generated directory where the source code and database related files 
203                                                       # are located
204   205   ├── Makefile                                         # EPICS generated Makefile to build and manage an App
206   207   ├── db                                               # EPICS generated directory where database related files are located
208      209      ├── Makefile                                     # EPICS generated Makefile to build and manage database related files
210      ├── archiver_appliance_monitoring.substitutions  # SSH Monitor .substitutions file for default archiver appliance monitoring
211      ├── connection_monitoring.substitutions          # SSH Monitor .substitutions file for default connection monitoring
212      ├── example_monitoring.substitutions             # SSH Monitor .substitutions file used as a monitoring example
213      ├── memory_monitoring.substitutions              # SSH Monitor .substitutions file for default memory monitoring
214      ├── partitions_monitoring.substitutions          # SSH Monitor .substitutions file for default partitions monitoring
215      ├── processors_monitoring.substitutions          # SSH Monitor .substitutions file for default processors monitoring
216      └── ssh_monitor_core.template                    # EPICS DataBase file defining monitoring records
217   218   └── src                                              # EPICS generated directory where source code files are located
219       220       ├── Makefile                                     # EPICS generated Makefile to build and manage source files
221       ├── menuScan.dbd                                 # EPICS DataBase Definition enhancing the EPICS 'SCAN' field
222       ├── sshmonitorASubCore.c                         # EPICS aSub record source code (the core of the SSH Monitor logic)
223       ├── sshmonitorASubCore.dbd                       # EPICS DataBase Definition declaring previous aSub records
224       ├── sshmonitorASubUtils.c                        # source code of some utility fonctions
225       ├── sshmonitorASubUtils.h                        # header file of the previous utility fonctions
226       └── sshmonitorMain.cpp                           # source code main file (starting point)
227228├── tests                      # SSH Monitor tests
229   230   ├── full_tests.nix         # Nix file preparing the tests environment and running full_test_script.py
231   ├── full_tests_script.py   # Python script containning all the tests
232   ├── pyproject.toml         # Python configuration file (e.g. for ruff configuration)
233   ├── quick_tests.nix        # Nix file preparing the tests environment and running quick_test_script.py
234   └── quick_tests_script.py  # TODO Python script containning less tests (for faster iterations when working locally)
235236└── training-vm            # Nix files allowing to generate the NixOS training virtual machine
237    238    ├── configuration.nix  # Nix configuration file for the NixOS training virtual machine
239    └── default.nix        # default Nix configuration file