Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
auto-tx
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
vamp
auto-tx
Commits
bdbe31c7
Commit
bdbe31c7
authored
7 years ago
by
Niko Ehrenfeuchter
Browse files
Options
Downloads
Patches
Plain Diff
Update README.md with new features and more details.
* tray app * logging * windows versions * components + paths * development
parent
62911bd2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+77
-30
77 additions, 30 deletions
README.md
with
77 additions
and
30 deletions
README.md
+
77
−
30
View file @
bdbe31c7
...
@@ -5,8 +5,9 @@ a network share, licensed under the [GPLv3](LICENSE), developed and provided by
...
@@ -5,8 +5,9 @@ a network share, licensed under the [GPLv3](LICENSE), developed and provided by
the
[
Imaging Core Facility (IMCF)
][
web_imcf
]
at the
[
Biozentrum
][
web_bioz
]
,
the
[
Imaging Core Facility (IMCF)
][
web_imcf
]
at the
[
Biozentrum
][
web_bioz
]
,
[
University of Basel
][
web_unibas
]
, Switzerland.
[
University of Basel
][
web_unibas
]
, Switzerland.
It was primarily designed and developed for getting user-data off microscope
It is primarily designed and developed for getting user-data off microscope
acquisition computers
**after acquisition**
with these goals:
acquisition computers
**after acquisition**
(i.e. not in parallel!) with these
goals:
-
The user owning the data should be able to log off from the computer after
-
The user owning the data should be able to log off from the computer after
initiating the data transfer, enabling other users to log on while data is
initiating the data transfer, enabling other users to log on while data is
...
@@ -19,8 +20,8 @@ acquisition computers **after acquisition** with these goals:
...
@@ -19,8 +20,8 @@ acquisition computers **after acquisition** with these goals:
## Features
## Features
-
**User-initiated:**
data is actively "handed over" to the service by
dropping
-
**User-initiated:**
data is actively "handed over" to the service by
the user
it into a specific folder, commonly referred to as the "incoming loca
tion
"
.
to prevent interfering with running acquisi
tion
s
.
-
**Monitoring of system-critical parameters:**
the service has a number of
-
**Monitoring of system-critical parameters:**
the service has a number of
configurable system parameters that are constantly being monitored. If one of
configurable system parameters that are constantly being monitored. If one of
them is outside their defined valid range, any running transfer will be
them is outside their defined valid range, any running transfer will be
...
@@ -33,6 +34,12 @@ acquisition computers **after acquisition** with these goals:
...
@@ -33,6 +34,12 @@ acquisition computers **after acquisition** with these goals:
similar).
similar).
-
**Error reporting:**
in addition to user notifications, the service will send
-
**Error reporting:**
in addition to user notifications, the service will send
error notifications via email to a separate admin address.
error notifications via email to a separate admin address.
-
**Tray Application:**
complementary to the service an application running in
the system tray is provided, showing details on what's going on to the user.
-
**Headless and GUI:**
submitting a folder for transfer can either be done by
dropping it into a specific "
*incoming*
" folder (using the File Explorer or
some post-acquisition script or whatever fits your scenario) or by using the
guided folder selection dialog provided through the tray app context menu.
## Concept
## Concept
...
@@ -46,29 +53,43 @@ For any user that should be allowed to use the transfer service, a dedicated
...
@@ -46,29 +53,43 @@ For any user that should be allowed to use the transfer service, a dedicated
folder has to exist on this network share, the name of the folder being the
folder has to exist on this network share, the name of the folder being the
(short) AD account name (i.e. the login name or
*sAMAccountName*
) of the user.
(short) AD account name (i.e. the login name or
*sAMAccountName*
) of the user.
-
AD-function-account
-
spooling
-
remote share with username folders
-
temp location
-
finalize
## Under the hood
## Under the hood
For the actual transfer task, the service is using a C# wrapper for the
For the actual transfer task, the service is using a C# wrapper for the
Microsoft RoboCopy tool called
[
RoboSharp
][
web_robosharp
]
.
Microsoft RoboCopy tool called
[
RoboSharp
][
web_robosharp
]
.
Logging is done using the amazing
[
NLog
][
web_nlog
]
framework, allowing a great
deal of flexibility in terms of log levels, targets (file, email, eventlog) and
rules.
## Requirements
## Requirements
-
**ActiveDirectory integration:**
service account, local r/w, remote w
-
**ActiveDirectory integration:**
no authentication mechanisms for the target
-
**.NET Framework:**
version 4.5 required
storage are currently supported, meaning the function account running the
-
**Windows 7, 64 bit:**
currently only this has been tested, 32 bit support is
service on the client has to have local read-write permissions as well as full
planned as well as support for newer Windows versions (Server 2012 is confimed
write permissions on the target location. The reason behind this is to avoid
as
*not-working*
at the moment).
having to administer local accounts on all clients as well as having easy
access to user information (email addresses, ...).
-
**.NET Framework:**
version 4.5 required.
-
**Windows 7 / Server 2012 R2:**
the service has been tested on those versions
of Windows, other versions sharing the same kernels (
*Server 2008 R2*
,
*Windows 8.1*
) should be compatible as well but have yet been tested.
-
**64 bit:**
currently only 64-bit versions are available (mostly due to lack
of options for testing), 32-bit support is planned though.
## Installation
## Installation
Currently the service doesn't have a
*conventional*
installer but rather has to
**TODO: rework section!**
~~Currently the service doesn't have a
*conventional*
installer but rather has to
be registered using the
`InstallUtil.exe`
tool coming with the .NET framework. A
be registered using the
`InstallUtil.exe`
tool coming with the .NET framework. A
PowerShell script to help with the installation is provided with each AutoTx
PowerShell script to help with the installation is provided with each AutoTx
package. To use the script, follow these steps:
package. To use the script, follow these steps:
~~
-
Log on to the computer using an account with adminstrative privileges.
-
Log on to the computer using an account with adminstrative privileges.
-
Edit the
`ScriptsConfig.ps1`
settings file, adjust the values according to
-
Edit the
`ScriptsConfig.ps1`
settings file, adjust the values according to
...
@@ -76,8 +97,8 @@ package. To use the script, follow these steps:
...
@@ -76,8 +97,8 @@ package. To use the script, follow these steps:
-
Open a PowerShell console using the
`Run as Administrator`
option. This is
-
Open a PowerShell console using the
`Run as Administrator`
option. This is
absolutely crucial, as otherwise
`InstallUtil`
will fail to do its job. Simply
absolutely crucial, as otherwise
`InstallUtil`
will fail to do its job. Simply
being logged on to the computer as an admin is
**NOT SUFFICIENT!**
The script
being logged on to the computer as an admin is
**NOT SUFFICIENT!**
The script
[
Run-ElevatedPowerShell.ps1
](
AutoTx/Resource
s/Run-ElevatedPowerShell.ps1
)
can
[
Run-ElevatedPowerShell.ps1
](
Script
s/Run-ElevatedPowerShell.ps1
)
can
be used
be used
to start a shell with elevated permissions.
to start a shell with elevated permissions.
-
Navigate to the installation package directory, run the
`Install-Service.ps1`
-
Navigate to the installation package directory, run the
`Install-Service.ps1`
script.
script.
...
@@ -88,6 +109,10 @@ the [manual installation](INSTALLATION-MANUAL.md) instructions.
...
@@ -88,6 +109,10 @@ the [manual installation](INSTALLATION-MANUAL.md) instructions.
## Operation
## Operation
### Configuration
**TODO**
### Logging
### Logging
The Windows Event Log seems to be a good place for logging if you have a proper
The Windows Event Log seems to be a good place for logging if you have a proper
...
@@ -97,9 +122,11 @@ either, the service places its log messages in a plain text file in good old
...
@@ -97,9 +122,11 @@ either, the service places its log messages in a plain text file in good old
Unix habits.
Unix habits.
Everything that needs attention is written into the service's base directory in
Everything that needs attention is written into the service's base directory in
a file called
`service.log`
. There is another PS1 script in the Resources
a file called
`AutoTx.log`
. The contents of the log file can be monitored in
directory that is showing the content of the log file on the console in real-
real-time using the PowerShell command
`Get-Content -Wait -Tail 100 AutoTx.log`
time (like
`tail -f`
on Unix).
or by running the
[
Watch-Logfile.ps1
](
Scripts/Watch-Logfile.ps1
)
script.
The log level can be set through the configuration file.
### Status
### Status
...
@@ -116,31 +143,50 @@ subfolders are named with a timestamp `YYYY-MM-DD__hh-mm-ss`. The grace location
...
@@ -116,31 +143,50 @@ subfolders are named with a timestamp `YYYY-MM-DD__hh-mm-ss`. The grace location
checks are done
checks are done
-
at service startup
-
at service startup
-
after a transfer has finished
-
after a transfer has finished
-
once every
*configurable*
hours
-
once every
*N*
hours, configurable for every host
### Updates
The service comes with a dedicated updater to facilitate managing updates and
configurations on many machines. See the
[
Updater Readme
](
Updater/README.md
)
for
all the details.
## Development
## Development
### Code Structure
### Code Structure
The code has evolved from a very basic project,
and is currently mostly
a
The code has evolved from a very basic project,
initially all being
a
monolithic structure where the major part of the functionality is contained in
monolithic structure where the major part of the functionality is contained in
one central class. This is certainly not the most elegant design, but it is
one central class. This is certainly not the most elegant design, but it was
getting the job done. Refactoring suggestions and / or pull requests are
getting the job done. A lot of refactoring has been done with the project
welcome!
currently being split into a few separate parts:
-
[
ATxCommon
](
ATxCommon
)
: all the common components like configuration and
status serialization wrappers, unit converters, file system tasks and so on
bundled as a runtime library.
-
[
ATxService
](
ATxService
)
: the core service functionality.
-
[
ATxConfigTest
](
ATxConfigTest
)
: a small command line tool allowing to validate
a given configuration file and show a summary. Used in the updater to ensure
new configurations are valid before overwriting existing ones.
-
[
ATxTray
](
ATxTray
)
: the tray application.
-
[
Updater
](
Updater
)
: the updater script for binaries and configuration files.
Refactoring suggestions and / or pull requests are welcome!
### Prerequisites
### Prerequisites
-
**VisualStudio 2013**
- the
*Community Edition*
is sufficient. Newer versions
-
**VisualStudio 2017**
- the
*Community Edition*
is sufficient.
of VisualStudio should work but have not been tested.
-
**ReSharper**
- JetBrains ReSharper Ultimate 2017.1 has been used for
-
**ReSharper**
- JetBrains ReSharper Ultimate 2017.1 has been used for
development. Respecting the
*Coding Style*
will be very difficult without it,
development. Respecting the
*Coding Style*
will be very difficult without it,
not speaking of the other features you might miss. So basically this is a
not speaking of the other features you might miss. So basically this is a
must...
must...
-
To build the C# bindings for RoboCopy, please don't use the code from the
-
For having the assembly details automatically filled with version details at
original repository on github at the moment (it contains all kinds of build-
build-time, a working installation of
**Git**
and
**PowerShell**
is required.
artifacts and has a few other glitches) but rather the fork provided here:
-
To build the C# bindings for RoboCopy, it is now fine to use the sources from
[
RoboSharp fork
][
web_robosharp_fork
]
.
the
[
original repository on github
][
web_robosharp
]
. To benefit from
automatically filling assembly details during the build you can use our fork
provided here:
[
RoboSharp fork
][
web_robosharp_fork
]
.
### Building + Installing
### Building + Installing
...
@@ -160,4 +206,5 @@ welcome!
...
@@ -160,4 +206,5 @@ welcome!
[
web_bioz
]:
https://www.biozentrum.unibas.ch/
[
web_bioz
]:
https://www.biozentrum.unibas.ch/
[
web_unibas
]:
https://www.unibas.ch/
[
web_unibas
]:
https://www.unibas.ch/
[
web_robosharp
]:
https://github.com/tjscience/RoboSharp
[
web_robosharp
]:
https://github.com/tjscience/RoboSharp
[
web_robosharp_fork
]:
https://git.scicore.unibas.ch/vamp/robosharp
[
web_robosharp_fork
]:
https://git.scicore.unibas.ch/vamp/robosharp
\ No newline at end of file
[
web_nlog
]:
http://nlog-project.org/
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment