This projects brings the MontiSecArc language to the popular IntelliJ IDE. The plugin provides a deep integration of secure architecture files into the IDE. Allowing the fast creation of secure architectures and an plain learning curve.
-
Check-Out project:
git clone https://git.rwth-aachen.de/ma_buning/msa.git --remote --recursive
-
Import project into IntelliJ. Instructions can be found here.
-
Run an IDEA instance with the MSA language plugins pre-installed:
The plugin requires IntelliJ Version 2016.X.X to be installed.
Download the newest version of the plugin from here. Do not unzip the file, just open the IntelliJ preferences and locate "Plugins" from the left menu. Click the "Install plugin from disk" button and select the downloaded zip file.
package de.monticore.lang.montisecarc.simple.secarc;
import de.monticore.lang.montisecarc.simple.secarc.ServiceA;
import de.monticore.lang.montisecarc.simple.secarc.ServiceB;
// Enclosing Component Environment
component ServiceEnvironment {
// The environment is untrusted
trustlevel -1 "Untrusted public network";
// Create instance of service A
ServiceA serviceA;
// Create instance of service B
ServiceB serviceB;
// Service B is strongly authenticated at service A
identity strong serviceB -> serviceA;
// Connect the defined ports
// Uses default connection protocol but requires it to be encrypted
connect encrypted serviceB.outDataPackage -> serviceA.inDataPackage;
// Connect two ports
// Define the used protocol for the connection as HTTPS
connect serviceB.outDataPackage -[HTTPS]-> serviceA.inDataPackage;
}
package de.monticore.lang.montisecarc.simple.secarc;
import de.monticore.lang.montisecarc.simple.msg.*;
component ServiceA {
// Access to the service needs to be checked by identities
accesscontrol on;
// Define that inDataPackage port can only be access by privilegedUser
access inDataPackage(privilegedUser);
// Define ingoing port
port in DataPackage inDataPackage;
}
- Syntax Highlighting
- Keyword-Autocompletion
- Brace Matching
- New File Integration
- MontiSecArc templates for components and ports
- Component and port folding support
- Contex Condition checks
- Reference Resolution
- Find-Usage
- Graph Generation (with these two plugins installed: 1, 2)
New versions are automatically created by creating a new Git Tag.
Gradle Building finds Bytecode Errors
It is necessary to update the Java Version. Working (tested) is version 1.8.0_102
Programming Language
The program is mostly written in Kotlin, a short primer into the usage can be found here
We welcome contributions in the form of issues or pull requests. If you need help with this process, we've created a brief overview here.