-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b05734b
Showing
768 changed files
with
590,817 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
name: PlantUML Diagram Generator | ||
|
||
|
||
on: | ||
push: | ||
paths: | ||
- '**/*.puml' | ||
pull_request: | ||
paths: | ||
- '**/*.puml' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
generate-diagrams: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout the repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: Set up Java | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'temurin' | ||
java-version: '11' | ||
|
||
- name: Install PlantUML and Dependencies | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y plantuml graphviz | ||
- name: Debug - Find .puml files | ||
run: | | ||
echo "Finding .puml files:" | ||
find . -name "*.puml" -print | ||
echo " " | ||
- name: Generate diagrams from .puml files (verbose) | ||
run: | | ||
echo "Generating diagrams:" | ||
find . -name "*.puml" -exec echo "Processing {}" \; -exec sh -c 'plantuml -tpng -pipe < "$1" > "${1%.puml}.png"' _ {} \; | ||
echo "PlantUML generation complete." | ||
echo " " | ||
- name: Debug - List generated .png files | ||
run: | | ||
echo "Listing all generated .png files:" | ||
find . -name "*.png" -print | ||
echo " " | ||
- name: Commit and push generated images | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
git config --local user.email "[email protected]" | ||
git config --local user.name "GitHub Action" | ||
git add *.png || true | ||
git add **/*.png || true | ||
git commit -m "Auto-generated PlantUML diagrams" | ||
git push | ||
continue-on-error: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Prerequisites | ||
*.d | ||
|
||
# Compiled Object files | ||
*.slo | ||
*.lo | ||
*.o | ||
*.obj | ||
|
||
# Precompiled Headers | ||
*.gch | ||
*.pch | ||
|
||
# Compiled Dynamic libraries | ||
*.so | ||
*.dylib | ||
*.dll | ||
|
||
# Fortran module files | ||
*.mod | ||
*.smod | ||
|
||
# Compiled Static libraries | ||
*.lai | ||
*.la | ||
*.a | ||
*.lib | ||
|
||
# Executables | ||
*.exe | ||
*.out | ||
*.app | ||
|
||
# node files | ||
node_modules | ||
|
||
# environment files | ||
browser-client/.env | ||
node-client/.env | ||
|
||
# intermediate files and folder for bundling and linting | ||
*.eslintcache | ||
.vite | ||
dist | ||
openAPI/example/esbuild/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "interface/esnacc-compiler"] | ||
path = interface/esnacc-compiler | ||
url = https://github.com/ESTOS/esnacc.git |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
@startuml Client connection setup (as of 20.09.2024) | ||
participant "Client" as CL | ||
participant "UCController" as UCC | ||
participant "UCWeb" as UCW | ||
participant "UCServer" as UCS | ||
autonumber | ||
|
||
Note over UCW, UCS: The UCServer needs to be connected to UCConnect.\n\ | ||
If the server is connected it established connections to two\n\ | ||
different UCWeb proxies for redundancy reasons. | ||
Note over CL, UCC: Retrieve one of the UCWeb proxys the UCServer is connected to | ||
CL->UCC++: https://uccontroller.ucconnect.de/controller/client/ucws?ucsid=<color:blue><b>{UCSID or ALIAS}</b></color> | ||
CL<--UCC--: 200 OK\n\n\ | ||
{"redirect" : "https://someucweb1.ucconnect.de" } | ||
... | ||
Note over CL, UCW: Create and authenticate a session over the UCWeb to the target UCServer | ||
CL->UCW++: https://someucweb1.ucconnect.de/ws/client/createsession?ucsid=<color:blue><b>{UCSID or ALIAS}</b></color> | ||
UCW->UCS++: asnNegotiatexx | ||
UCW<--UCS--: asnNegotiatexxResult: { suportedauthMethods } | ||
CL<-UCW--: 401 Unauthorized\n\ | ||
WWW-Authenticate: authdata | ||
... | ||
loop If authentication requires renegotiation (NTLM, Kerberos) | ||
CL->UCW++: GET https://someucweb1.ucconnect.de/ws/client/createsession?ucsid=<color:blue><b>{UCSID or ALIAS}</b></color>\n\ | ||
Authorization: authdata\n\ | ||
x-epid: authsessionid <color:green>// for multi handshake auth protocols</color> | ||
UCW->UCS++: asnCreateUserSession | ||
UCW<--UCS--: asnCreateUserSessionResult: { u8sSessionID: 'usersessionID' } | ||
Note left of UCW: Client calls are now happening in the context of //usersessionID// | ||
UCW->UCS++: asnLogon(AsnLogonArgument) | ||
UCW<--UCS--: AsnLogonResult | ||
CL<--UCW--: 200 OK\n\n\n\ | ||
{ sessionID: usersessionID } | ||
end | ||
CL->UCW++: wss://someucweb1.ucconnect.de/ws/client/websocket?x-ucsessionid=<color:blue><b>{usersessionID}</b></color> | ||
CL<--UCW--: 101 SWITCHING PROTOCOLS | ||
@enduml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2024 estos GmbH | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
# UCServerWebSDK2.0 *preview* | ||
|
||
## Basics | ||
This is a preview version of the estos UCServer Web SDK2.0. | ||
The SDK is currently still in beta status, i.e. we can and will probably make structural changes to simplify and improve the application. | ||
|
||
The SDK provides the client and administration communication interface of the UCServer. It is therefore not a separate interface provided for the SDK, but the interface that our products also use. | ||
|
||
### Functionality | ||
Communication between a client and the UCServer requires a standing connection. A WebSocket is used for this in the SDK; technically, this can also be a TCP connection. | ||
|
||
The interface (structures, methods, events) is described in full in [ASN.1](https://de.wikipedia.org/wiki/Abstract_Syntax_Notation_One). [ROSE](https://en.wikipedia.org/wiki/Remote_Operations_Service_Element_protocol) is used for framing the messages on the standing connection. | ||
|
||
The encoding of the messages is either [JSON](https://de.wikipedia.org/wiki/JavaScript_Object_Notation) or [BER](https://en.wikipedia.org/wiki/X.690#BER_encoding), whereby BER allows a much more compact transmission. | ||
|
||
### ASN.1 files | ||
The asn.1 files describing the interface are located in the [interface/asn1](interface/asn1) folder. There is a separate asn.1 file for each scope / context. | ||
|
||
Module | Function / Content | ||
-------|------------------- | ||
[ENetROSEInterface.asn1](interface/asn1/ENetROSEInterface.asn1)|Unsorted functions which did not fit into other modules | ||
[ENetUC_Admin.asn1](interface/asn1/ENetUC_Admin.asn1)|Administrative functions which are available on the client interface | ||
[ENetUC_Agent.asn1](interface/asn1/ENetUC_Agent.asn1)|Agent Login Logout state interface | ||
[ENetUC_Appointments.asn1](interface/asn1/ENetUC_Appointments.asn1)|Appointment sync interface | ||
[ENetUC_Auth.asn1](interface/asn1/ENetUC_Auth.asn1)|Authentication interface | ||
[ENetUC_AV.asn1](interface/asn1/ENetUC_AV.asn1)|Audio Video interface | ||
[ENetUC_BinaryTransfer.asn1](interface/asn1/ENetUC_BinaryTransfer.asn1)|Binary transfer (primarily for chat) | ||
[ENetUC_ChatV2.asn1](interface/asn1/ENetUC_ChatV2.asn1)|Chat interface | ||
[ENetUC_ClientCapabilities.asn1](interface/asn1/ENetUC_ClientCapabilities.asn1)|To exchange client capabilites | ||
[ENetUC_ClientContent.asn1](interface/asn1/ENetUC_ClientContent.asn1)|Favourites layout and structure | ||
[ENetUC_ClientPersistence.asn1](interface/asn1/ENetUC_ClientPersistence.asn1)|Allows a client to store and retrieve data on the server | ||
[ENetUC_Common.asn1](interface/asn1/ENetUC_Common.asn1)|Shared commonly used structures | ||
[ENetUC_Common_Appointments.asn1](interface/asn1/ENetUC_Common_Appointments.asn1)|Shared appointment structures | ||
[ENetUC_Common_AsnContact.asn1](interface/asn1/ENetUC_Common_AsnContact.asn1)|Shared contact structures | ||
[ENetUC_Common_Auth.asn1](interface/asn1/ENetUC_Common_Auth.asn1)|Shared auth structures | ||
[ENetUC_Common_SIPCTI.asn1](interface/asn1/ENetUC_Common_SIPCTI.asn1)|Shared sip and cti structures | ||
[ENetUC_CTI.asn1](interface/asn1/ENetUC_CTI.asn1)|Remot call control interface | ||
[ENetUC_Journal.asn1](interface/asn1/ENetUC_Journal.asn1)|Journal / call history interface | ||
[ENetUC_Mgmt.asn1](interface/asn1/ENetUC_Mgmt.asn1)|The server management interface (uses it´s own interface on the server side and thus is not available within the client interface) | ||
[ENetUC_PresenceV2.asn1](interface/asn1/ENetUC_PresenceV2.asn1)|Retrieve and subscribe presence of users (including your own) | ||
[ENetUC_Ranking.asn1](interface/asn1/ENetUC_Ranking.asn1)|Control the ranking of acd agents | ||
[ENetUC_ServicesAgents.asn1](interface/asn1/ENetUC_ServicesAgents.asn1)|Server to server agent interface | ||
[ENetUC_Tasks.asn1](interface/asn1/ENetUC_Tasks.asn1)|Tasks interface | ||
[ENetUC_Transport.asn1](interface/asn1/ENetUC_Transport.asn1)|Some transport related functions | ||
|
||
### From ASN.1 to structures or a complete communication stub | ||
To compile the ASN.1 files, the estos enhanced snacc compiler is located in the [interface/esnacc-compiler](https://github.com/ESTOS/esnacc) folder. | ||
It is built with cmake. For simplification, the | ||
|
||
This can be built using a batch file in the interface folder | ||
|
||
The compiler can provide structures for the following programming languages from the ASN.1 files | ||
- C++ | ||
- C# | ||
- C | ||
- Swift | ||
- Java | ||
- TypeScript | ||
- Javascript | ||
- Delphi | ||
|
||
The compiler provides complete stubs for the following languages. | ||
- C++ | ||
- TypeScript | ||
|
||
These stubs allow the simple call of the respective other page and offer a virtual interface on the called page for overwriting by means of class derivation. | ||
Corresponding classes are generated for each ASN.1 module, which also enable structured splitting in your own code. | ||
The stub performs the following tasks: | ||
- Complete ROSE handling | ||
- Validation and encoding of a function argument | ||
- Encoding of the ROSE envelope | ||
- Request response association (predefined, optional variable timeout) | ||
- Decoding and validation of incoming requests | ||
- Assignment to registered handler objects | ||
- Complete transport logging (BER and or JSON) | ||
- Encoding decoding in BER and JSON | ||
- Error handling | ||
|
||
### Structure of the SDK | ||
Folder | Contents | ||
-------|------------------- | ||
[interface](interface) | Interface, scripts and tooling | ||
[interface/asn1](interface/asn1) | The ASN.1 files which describe the server interface | ||
[interface/esnacc-compiler](interface/esnacc-compiler) | the esnacc compiler to transpile the ASN.1 files | ||
[openAPI](openAPI) | A swagger ui like client to test functions | ||
[node-client](node-client) | A node sample client | ||
[browser-client](browser-client) | A vanilla html sample client | ||
|
||
### Connection setup | ||
There are several ways to establish a connection to UCServe as a client. | ||
The simplest and most universal is probably a connection via UCConnect. | ||
It would also be possible to connect directly to an on Premise UCServer or the side by side installed UCWeb but this mechanism is currently not documented here. | ||
If you take a closer look at the following plantUML diagram it should also answer how the direct connection to UCServer or UCWeb are possible. | ||
|
||
![Client connection setup](Client_connection_setup.png) | ||
|
||
We plan to provide this connection setup functionality in a dedicated npm module before finally releasing this SDK. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# The client is provided by the webpack dev-server using these settings: | ||
UCSERVERWEBSDK20_CLIENT_LISTEN_PORT=80 | ||
UCSERVERWEBSDK20_CLIENT_LISTEN_TLS=0 | ||
UCSERVERWEBSDK20_CLIENT_CERTFILE=cert.pem | ||
UCSERVERWEBSDK20_CLIENT_KEYFILE=key.pem | ||
# UCSERVERWEBSDK20_CLIENT_DNS_NAME |
Oops, something went wrong.