Put the connection details in the file:
Edit /etc/mysql/my.cnf, add the following line below the 'query-cache-size' property (under the [mysqld] heading):
(This will enable strict mode in order to enforce data integrity constraints.)
Create the application sql-account (with limited access)
Be sure to modify the command below to use the password set within conf/server.conf
If the above command fails the tidy_duck user already exist and needs re-created, the following command will delete it:
The default password provided is "quack quack".
Tidy Duck uses Java with Gradle to compile the application.
Be sure a java-jdk is installed for your system.
It may be a wise choice to compile the project on your local machine instead of the server.
A convenience script is located at:
This script will output all of the necessary application files to the local out directory.
After building the application with the make.sh script, upload the contents of the out directory to a desired location on your server.
You may start the application using the generated run.sh. Alternatively, you may setup a systemctl service or daemon of your choice to run the run.sh script or emulate the script's behavior.
Tidy Duck uses a lightweight Java servlet that is configured to listen on port 8080 by default.
Depending on your network configuration, it may be best to setup a reverse proxy.
Alternatively, you may configure Tidy Duck to listen on the port of your choice by adding the server.httpPort property to the conf/server.conf file. You may also specify the TLS port with the server.tlsPort property.
Depending on the server setup prior to installation you may need to take some additional steps to get started.
Can't access application on configured port
It's possible that a firewall setting is preventing traffic to the configured port. Try temporarily disabling iptables or working with a system administrator to check any other firewall or network settings that might be preventing access.
Permission denied error when accessing the database
This can be caused by SELinux not allowing name-based resolution of the database server or some other restriction.
- Have a system administrator check the SELinux logs to determine if it is getting in the way. Exceptions may need to added in order to get the application working.
- Alternatively, temporarily disable SELinux to ensure that it is not causing the problem.
Application fails to connect to embedded database
This can occur when running the application as root server user. It is recommended to start the application as another user.
Tidy Duck's MOST Function Catalog is largely a collection of collections where:
Since the MOST Function Catalog is released in XML, all strings must comply with XML 1.0 requirements. The XML schema must comply with those required by MOST 3.0E2. Naming of objects is expected to comply with the API Style Guide.
In order for a Function Catalog to be considered valid, it must contain the following identifying information:
In order for a Function Block to be considered valid, it must contain the following identifying information:
In order for an Interface to be considered valid, it must contain the following identifying information:
In order for a Function to be considered valid, it must contain the following identifying information:
In order for an Operation to be considered valid, it must contain the following identifying information:
Operation, in this object model, is considered abstract as operations must comply with one of the operations specified by the MOST 3.0E2 specification.
These are: Get, Set, Status, Error, StartResultAck, ResultAck, ProcessingAck, AbortAck, and ErrorAck.
The Input Operations (IsInput is True) are as follows:
The Output Operations (IsInput is False) are as follows:
Function Stereotypes relate directly to various attributes of objects in other languages (ex. Java, C#, etc) within the MOST Object Model, these stereotypes can be subdivided into Properties and Methods.
The property stereotypes (Event, ReadOnlyProperty, ReadOnlyPropertyWithEvent, PropertyWithEvent) contain public, identifying state information. All properties have the Status and Error Operation, and may also support the Get and/or Set Operation.
Properties are differentiated by three factors:
Event, similar to events in Java/C#, contains no permanent state and is used to indicate to a client that something of interest happened. Event does not support the Get or Set Operations, but must support notification.
ReadOnlyProperty contains a semi-permanent state, meaning this state is not expected change frequently (or at all). ReadOnlyProperty supports the Get Operation, but does not support notification or the Set Operation.
ReadOnlyPropertyWithEvent contains a transient state, meaning this state is expected to change frequently. ReadOnlyPropertyWithEvent supports the Get Operation and notification, but does not support the Set Operation.
PropertyWithEvent contains a transient state, which is modifiable by the client. PropertyWithEvent supports the Get and Set Operations and supports notification.
The method stereotypes (CommandWithAck and Request/Response) correspond to client-facing operations provided by the server or Function Block. All methods have the StartResultAck, ResultAck, ProcessingAck and ErrorAck Operation, and may also support the AbortAck Operation.
Methods are differentiated by one factor:
CommandWithAck methods are not stateless, meaning they are allowed to trigger changes on the server, and their response may be dependent on time/state information. CommandWithAck methods are blocking, and do not support the AbortAck Operation.
Request/Response methods are stateless, meaning they are not allowed to trigger changes on the server, but they do not block and can support parallel requests. Request/Response methods support the AbortAck Operation.