diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/md/building-client.md | 77 | ||||
| -rw-r--r-- | docs/md/fsm.mmd | 67 | ||||
| -rw-r--r-- | docs/md/fsm.mmd.svg | 1 | ||||
| -rw-r--r-- | docs/md/overview.mmd | 4 | ||||
| -rw-r--r-- | docs/md/overview.mmd.svg | 1 | ||||
| -rw-r--r-- | docs/mkdocs.yml | 2 |
6 files changed, 75 insertions, 77 deletions
diff --git a/docs/md/building-client.md b/docs/md/building-client.md index 5c01872..77c4eaf 100644 --- a/docs/md/building-client.md +++ b/docs/md/building-client.md @@ -20,12 +20,7 @@ And finally the most important goal: ## Architecture In the previous section, we have already hinted a bit on the exact architecture. This section will expand upon it by giving a figure of the basic structure -```mermaid -graph TD; -A[Go]-- Compiles to -->B[C shared library .so/.dll]; -C[Language wrapper]-- Loads -->B -Client -- Uses --> C; -``` + As can be seen by this architecture, there is an intermediate layer between the client and the *shared* library. This wrapper eases the way of loading this library and then defining a more language specific API for it. In the eduvpn-common repo, we currently only support a Python wrapper. Clients themselves can define their own wrapper @@ -55,75 +50,7 @@ The eduvpn-common library uses a finite state machine internally to keep track o ### FSM example The following is an example of the FSM when the client has obtained a Wireguard/OpenVPN configuration from an eduVPN server -```mermaid -graph TD - -style Deregistered fill:cyan -Deregistered(Deregistered) -->|Register| Main - -style Main fill:white -Main(Main) -->|Deregister| Deregistered - -style Main fill:white -Main(Main) -->|Add a server| AddingServer - -style Main fill:white -Main(Main) -->|Get a VPN config| GettingConfig - -style Main fill:white -Main(Main) -->|Already connected| Connected - -style AddingServer fill:white -AddingServer(AddingServer) -->|Authorize| OAuthStarted - -style OAuthStarted fill:white -OAuthStarted(OAuthStarted) -->|Authorized| Main - -style GettingConfig fill:white -GettingConfig(GettingConfig) -->|Invalid location| AskLocation - -style GettingConfig fill:white -GettingConfig(GettingConfig) -->|Invalid or no profile| AskProfile - -style GettingConfig fill:white -GettingConfig(GettingConfig) -->|Successfully got a configuration| GotConfig - -style GettingConfig fill:white -GettingConfig(GettingConfig) -->|Authorize| OAuthStarted - -style AskLocation fill:white -AskLocation(AskLocation) -->|Location chosen| GettingConfig - -style AskProfile fill:white -AskProfile(AskProfile) -->|Profile chosen| GettingConfig - -style GotConfig fill:white -GotConfig(GotConfig) -->|Get a VPN config again| GettingConfig - -style GotConfig fill:white -GotConfig(GotConfig) -->|VPN is connecting| Connecting - -style Connecting fill:white -Connecting(Connecting) -->|VPN is connected| Connected - -style Connecting fill:white -Connecting(Connecting) -->|Cancel connecting| Disconnecting - -style Connected fill:white -Connected(Connected) -->|VPN is disconnecting| Disconnecting - -style Disconnecting fill:white -Disconnecting(Disconnecting) -->|VPN is disconnected| Disconnected - -style Disconnecting fill:white -Disconnecting(Disconnecting) -->|Cancel disconnecting| Connected - -style Disconnected fill:white -Disconnected(Disconnected) -->|Connect again| GettingConfig - -style Disconnected fill:white -Disconnected(Disconnected) -->|Renew| OAuthStarted -``` + The current state is highlighted in the <span style="color:cyan">cyan</span> color. diff --git a/docs/md/fsm.mmd b/docs/md/fsm.mmd new file mode 100644 index 0000000..6f4ea24 --- /dev/null +++ b/docs/md/fsm.mmd @@ -0,0 +1,67 @@ +graph TD + +style Deregistered fill:cyan +Deregistered(Deregistered) -->|Register| Main + +style Main fill:white +Main(Main) -->|Deregister| Deregistered + +style Main fill:white +Main(Main) -->|Add a server| AddingServer + +style Main fill:white +Main(Main) -->|Get a VPN config| GettingConfig + +style Main fill:white +Main(Main) -->|Already connected| Connected + +style AddingServer fill:white +AddingServer(AddingServer) -->|Authorize| OAuthStarted + +style OAuthStarted fill:white +OAuthStarted(OAuthStarted) -->|Authorized| Main + +style GettingConfig fill:white +GettingConfig(GettingConfig) -->|Invalid location| AskLocation + +style GettingConfig fill:white +GettingConfig(GettingConfig) -->|Invalid or no profile| AskProfile + +style GettingConfig fill:white +GettingConfig(GettingConfig) -->|Successfully got a configuration| GotConfig + +style GettingConfig fill:white +GettingConfig(GettingConfig) -->|Authorize| OAuthStarted + +style AskLocation fill:white +AskLocation(AskLocation) -->|Location chosen| GettingConfig + +style AskProfile fill:white +AskProfile(AskProfile) -->|Profile chosen| GettingConfig + +style GotConfig fill:white +GotConfig(GotConfig) -->|Get a VPN config again| GettingConfig + +style GotConfig fill:white +GotConfig(GotConfig) -->|VPN is connecting| Connecting + +style Connecting fill:white +Connecting(Connecting) -->|VPN is connected| Connected + +style Connecting fill:white +Connecting(Connecting) -->|Cancel connecting| Disconnecting + +style Connected fill:white +Connected(Connected) -->|VPN is disconnecting| Disconnecting + +style Disconnecting fill:white +Disconnecting(Disconnecting) -->|VPN is disconnected| Disconnected + +style Disconnecting fill:white +Disconnecting(Disconnecting) -->|Cancel disconnecting| Connected + +style Disconnected fill:white +Disconnected(Disconnected) -->|Connect again| GettingConfig + +style Disconnected fill:white +Disconnected(Disconnected) -->|Renew| OAuthStarted diff --git a/docs/md/fsm.mmd.svg b/docs/md/fsm.mmd.svg new file mode 100644 index 0000000..7276cc7 --- /dev/null +++ b/docs/md/fsm.mmd.svg @@ -0,0 +1 @@ +<svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 1533.640625 857" style="max-width: 1533.64px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Deregistered LE-Main" id="L-Deregistered-Main-0" d="M886.032,33L881.168,38.667C876.304,44.333,866.576,55.667,866.001,66.33C865.425,76.993,874.003,86.986,878.291,91.982L882.58,96.978"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Main LE-Deregistered" id="L-Main-Deregistered-0" d="M914.358,101L919.223,95.333C924.087,89.667,933.815,78.333,934.39,67.67C934.965,57.007,926.388,47.014,922.099,42.018L917.81,37.022"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Main LE-AddingServer" id="L-Main-AddingServer-0" d="M875.352,121.011L819.937,128.843C764.522,136.674,653.693,152.337,598.278,168.585C542.863,184.833,542.863,201.667,542.863,218.5C542.863,235.333,542.863,252.167,542.863,269C542.863,285.833,542.863,302.667,542.863,319.5C542.863,336.333,542.863,353.167,542.863,370C542.863,386.833,542.863,403.667,542.863,420.5C542.863,437.333,542.863,454.167,542.863,471C542.863,487.833,542.863,504.667,542.863,521.5C542.863,538.333,542.863,555.167,542.863,572C542.863,588.833,542.863,605.667,542.863,622.5C542.863,639.333,542.863,656.167,542.863,669.367C542.863,682.567,542.863,692.133,542.863,696.917L542.863,701.7"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Main LE-GettingConfig" id="L-Main-GettingConfig-0" d="M875.352,122.507L837.73,130.089C800.109,137.671,724.867,152.836,687.246,165.201C649.625,177.567,649.625,187.133,649.625,191.917L649.625,196.7"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Main LE-Connected" id="L-Main-Connected-0" d="M925.039,123.57L955.347,130.975C985.655,138.38,1046.271,153.19,1076.579,169.012C1106.887,184.833,1106.887,201.667,1106.887,218.5C1106.887,235.333,1106.887,252.167,1106.887,269C1106.887,285.833,1106.887,302.667,1106.887,319.5C1106.887,336.333,1106.887,353.167,1106.887,370C1106.887,386.833,1106.887,403.667,1106.887,420.5C1106.887,437.333,1106.887,454.167,1113.075,467.688C1119.264,481.209,1131.64,491.418,1137.829,496.523L1144.017,501.628"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AddingServer LE-OAuthStarted" id="L-AddingServer-OAuthStarted-0" d="M542.863,740L542.863,745.667C542.863,751.333,542.863,762.667,610.443,775.646C678.022,788.624,813.181,803.249,880.761,810.561L948.34,817.873"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-OAuthStarted LE-Main" id="L-OAuthStarted-Main-0" d="M1065.563,818.483L1134.534,811.069C1203.505,803.655,1341.448,788.828,1410.419,772.997C1479.391,757.167,1479.391,740.333,1479.391,723.5C1479.391,706.667,1479.391,689.833,1479.391,673C1479.391,656.167,1479.391,639.333,1479.391,622.5C1479.391,605.667,1479.391,588.833,1479.391,572C1479.391,555.167,1479.391,538.333,1479.391,521.5C1479.391,504.667,1479.391,487.833,1479.391,471C1479.391,454.167,1479.391,437.333,1479.391,420.5C1479.391,403.667,1479.391,386.833,1479.391,370C1479.391,353.167,1479.391,336.333,1479.391,319.5C1479.391,302.667,1479.391,285.833,1479.391,269C1479.391,252.167,1479.391,235.333,1479.391,218.5C1479.391,201.667,1479.391,184.833,1387.879,168.438C1296.367,152.042,1113.343,136.084,1021.831,128.105L930.319,120.126"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GettingConfig LE-AskLocation" id="L-GettingConfig-AskLocation-0" d="M593.203,223.275L503.156,230.896C413.109,238.517,233.016,253.758,149.605,266.506C66.195,279.253,79.467,289.507,86.104,294.633L92.74,299.76"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GettingConfig LE-AskProfile" id="L-GettingConfig-AskProfile-0" d="M593.203,227.414L549.331,234.345C505.458,241.276,417.714,255.138,380.862,267.214C344.011,279.289,358.054,289.578,365.075,294.723L372.096,299.867"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GettingConfig LE-GotConfig" id="L-GettingConfig-GotConfig-0" d="M687.835,235L700.957,240.667C714.08,246.333,740.325,257.667,764.773,268.626C789.221,279.585,811.871,290.171,823.196,295.463L834.521,300.756"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GettingConfig LE-OAuthStarted" id="L-GettingConfig-OAuthStarted-0" d="M644.54,235L642.794,240.667C641.048,246.333,637.555,257.667,635.809,271.75C634.063,285.833,634.063,302.667,634.063,319.5C634.063,336.333,634.063,353.167,634.063,370C634.063,386.833,634.063,403.667,634.063,420.5C634.063,437.333,634.063,454.167,634.063,471C634.063,487.833,634.063,504.667,634.063,521.5C634.063,538.333,634.063,555.167,634.063,572C634.063,588.833,634.063,605.667,634.063,622.5C634.063,639.333,634.063,656.167,634.063,673C634.063,689.833,634.063,706.667,634.063,723.5C634.063,740.333,634.063,757.167,686.445,772.628C738.827,788.089,843.592,802.177,895.974,809.222L948.357,816.266"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AskLocation LE-GettingConfig" id="L-AskLocation-GettingConfig-0" d="M139.797,303L147.183,297.333C154.568,291.667,169.339,280.333,244.028,267.365C318.718,254.397,453.326,239.795,520.63,232.494L587.934,225.192"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AskProfile LE-GettingConfig" id="L-AskProfile-GettingConfig-0" d="M421.555,303L429.339,297.333C437.123,291.667,452.69,280.333,480.447,269.105C508.204,257.877,548.151,246.755,568.124,241.193L588.097,235.632"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GotConfig LE-GettingConfig" id="L-GotConfig-GettingConfig-0" d="M909.935,303L922.061,297.333C934.186,291.667,958.437,280.333,925.329,267.808C892.221,255.283,801.754,241.566,756.52,234.708L711.287,227.849"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-GotConfig LE-Connecting" id="L-GotConfig-Connecting-0" d="M874.629,336L874.629,341.667C874.629,347.333,874.629,358.667,874.629,369.117C874.629,379.567,874.629,389.133,874.629,393.917L874.629,398.7"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Connecting LE-Connected" id="L-Connecting-Connected-0" d="M922.605,427.235L974.564,434.529C1026.523,441.823,1130.441,456.412,1175.669,468.837C1220.896,481.262,1207.433,491.525,1200.702,496.656L1193.97,501.787"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Connecting LE-Disconnecting" id="L-Connecting-Disconnecting-0" d="M874.629,437L874.629,442.667C874.629,448.333,874.629,459.667,874.629,473.75C874.629,487.833,874.629,504.667,874.629,521.5C874.629,538.333,874.629,555.167,898.756,569.451C922.882,583.735,971.136,595.469,995.262,601.336L1019.389,607.204"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Connected LE-Disconnecting" id="L-Connected-Disconnecting-0" d="M1140.069,538L1130.439,543.667C1120.809,549.333,1101.549,560.667,1091.919,571.117C1082.289,581.567,1082.289,591.133,1082.289,595.917L1082.289,600.7"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Disconnecting LE-Disconnected" id="L-Disconnecting-Disconnected-0" d="M1082.289,639L1082.289,644.667C1082.289,650.333,1082.289,661.667,1098.665,672.724C1115.041,683.781,1147.792,694.562,1164.168,699.952L1180.543,705.343"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Disconnecting LE-Connected" id="L-Disconnecting-Connected-0" d="M1138.37,606L1157.63,600.333C1176.89,594.667,1215.41,583.333,1225.801,572.448C1236.192,561.563,1218.455,551.125,1209.586,545.907L1200.718,540.688"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Disconnected LE-GettingConfig" id="L-Disconnected-GettingConfig-0" d="M1279.434,707L1294.453,701.333C1309.472,695.667,1339.509,684.333,1354.528,670.25C1369.547,656.167,1369.547,639.333,1369.547,622.5C1369.547,605.667,1369.547,588.833,1369.547,572C1369.547,555.167,1369.547,538.333,1369.547,521.5C1369.547,504.667,1369.547,487.833,1369.547,471C1369.547,454.167,1369.547,437.333,1369.547,420.5C1369.547,403.667,1369.547,386.833,1369.547,370C1369.547,353.167,1369.547,336.333,1369.547,319.5C1369.547,302.667,1369.547,285.833,1259.845,269.721C1150.143,253.61,930.738,238.219,821.036,230.524L711.334,222.829"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Disconnected LE-OAuthStarted" id="L-Disconnected-OAuthStarted-0" d="M1235.703,740L1235.703,745.667C1235.703,751.333,1235.703,762.667,1208.208,774.474C1180.714,786.281,1125.724,798.562,1098.23,804.703L1070.735,810.843"/></g><g class="edgeLabels"><g transform="translate(856.84765625, 67)" class="edgeLabel"><g transform="translate(-29.7890625, -9)" class="label"><foreignObject height="18" width="59.578125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Register</span></div></foreignObject></g></g><g transform="translate(943.54296875, 67)" class="edgeLabel"><g transform="translate(-36.90625, -9)" class="label"><foreignObject height="18" width="73.8125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Deregister</span></div></foreignObject></g></g><g transform="translate(542.86328125, 420.5)" class="edgeLabel"><g transform="translate(-45.359375, -9)" class="label"><foreignObject height="18" width="90.71875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Add a server</span></div></foreignObject></g></g><g transform="translate(649.625, 168)" class="edgeLabel"><g transform="translate(-61.8125, -9)" class="label"><foreignObject height="18" width="123.625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Get a VPN config</span></div></foreignObject></g></g><g transform="translate(1106.88671875, 319.5)" class="edgeLabel"><g transform="translate(-66.265625, -9)" class="label"><foreignObject height="18" width="132.53125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Already connected</span></div></foreignObject></g></g><g transform="translate(542.86328125, 774)" class="edgeLabel"><g transform="translate(-33.796875, -9)" class="label"><foreignObject height="18" width="67.59375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Authorize</span></div></foreignObject></g></g><g transform="translate(1479.390625, 471)" class="edgeLabel"><g transform="translate(-38.25, -9)" class="label"><foreignObject height="18" width="76.5"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Authorized</span></div></foreignObject></g></g><g transform="translate(52.921875, 269)" class="edgeLabel"><g transform="translate(-52.921875, -9)" class="label"><foreignObject height="18" width="105.84375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Invalid location</span></div></foreignObject></g></g><g transform="translate(329.96875, 269)" class="edgeLabel"><g transform="translate(-67.59375, -9)" class="label"><foreignObject height="18" width="135.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Invalid or no profile</span></div></foreignObject></g></g><g transform="translate(766.5703125, 269)" class="edgeLabel"><g transform="translate(-112.5078125, -9)" class="label"><foreignObject height="18" width="225.015625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Successfully got a configuration</span></div></foreignObject></g></g><g transform="translate(634.0625, 521.5)" class="edgeLabel"><g transform="translate(-33.796875, -9)" class="label"><foreignObject height="18" width="67.59375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Authorize</span></div></foreignObject></g></g><g transform="translate(184.109375, 269)" class="edgeLabel"><g transform="translate(-58.265625, -9)" class="label"><foreignObject height="18" width="116.53125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Location chosen</span></div></foreignObject></g></g><g transform="translate(468.2578125, 269)" class="edgeLabel"><g transform="translate(-50.6953125, -9)" class="label"><foreignObject height="18" width="101.390625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Profile chosen</span></div></foreignObject></g></g><g transform="translate(982.6875, 269)" class="edgeLabel"><g transform="translate(-83.609375, -9)" class="label"><foreignObject height="18" width="167.21875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Get a VPN config again</span></div></foreignObject></g></g><g transform="translate(874.62890625, 370)" class="edgeLabel"><g transform="translate(-65.3671875, -9)" class="label"><foreignObject height="18" width="130.734375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">VPN is connecting</span></div></foreignObject></g></g><g transform="translate(1234.359375, 471)" class="edgeLabel"><g transform="translate(-63.59375, -9)" class="label"><foreignObject height="18" width="127.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">VPN is connected</span></div></foreignObject></g></g><g transform="translate(874.62890625, 521.5)" class="edgeLabel"><g transform="translate(-65.8203125, -9)" class="label"><foreignObject height="18" width="131.640625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Cancel connecting</span></div></foreignObject></g></g><g transform="translate(1082.2890625, 572)" class="edgeLabel"><g transform="translate(-75.59375, -9)" class="label"><foreignObject height="18" width="151.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">VPN is disconnecting</span></div></foreignObject></g></g><g transform="translate(1082.2890625, 673)" class="edgeLabel"><g transform="translate(-73.8203125, -9)" class="label"><foreignObject height="18" width="147.640625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">VPN is disconnected</span></div></foreignObject></g></g><g transform="translate(1253.9296875, 572)" class="edgeLabel"><g transform="translate(-76.046875, -9)" class="label"><foreignObject height="18" width="152.09375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Cancel disconnecting</span></div></foreignObject></g></g><g transform="translate(1369.546875, 471)" class="edgeLabel"><g transform="translate(-51.59375, -9)" class="label"><foreignObject height="18" width="103.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Connect again</span></div></foreignObject></g></g><g transform="translate(1235.703125, 774)" class="edgeLabel"><g transform="translate(-24.90625, -9)" class="label"><foreignObject height="18" width="49.8125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Renew</span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(900.1953125, 16.5)" data-id="Deregistered" data-node="true" id="flowchart-Deregistered-0" class="node default default flowchart-label"><rect height="33" width="106.609375" y="-16.5" x="-53.3046875" ry="5" rx="5" style="fill:cyan;" class="basic label-container"/><g transform="translate(-45.8046875, -9)" style="" class="label"><rect/><foreignObject height="18" width="91.609375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Deregistered</span></div></foreignObject></g></g><g transform="translate(900.1953125, 117.5)" data-id="Main" data-node="true" id="flowchart-Main-2" class="node default default flowchart-label"><rect height="33" width="49.6875" y="-16.5" x="-24.84375" ry="5" rx="5" style="fill:white;fill:white;fill:white;fill:white;" class="basic label-container"/><g transform="translate(-17.34375, -9)" style="" class="label"><rect/><foreignObject height="18" width="34.6875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Main</span></div></foreignObject></g></g><g transform="translate(542.86328125, 723.5)" data-id="AddingServer" data-node="true" id="flowchart-AddingServer-8" class="node default default flowchart-label"><rect height="33" width="111.953125" y="-16.5" x="-55.9765625" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-48.4765625, -9)" style="" class="label"><rect/><foreignObject height="18" width="96.953125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">AddingServer</span></div></foreignObject></g></g><g transform="translate(649.625, 218.5)" data-id="GettingConfig" data-node="true" id="flowchart-GettingConfig-11" class="node default default flowchart-label"><rect height="33" width="112.84375" y="-16.5" x="-56.421875" ry="5" rx="5" style="fill:white;fill:white;fill:white;fill:white;" class="basic label-container"/><g transform="translate(-48.921875, -9)" style="" class="label"><rect/><foreignObject height="18" width="97.84375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">GettingConfig</span></div></foreignObject></g></g><g transform="translate(1168.109375, 521.5)" data-id="Connected" data-node="true" id="flowchart-Connected-14" class="node default default flowchart-label"><rect height="33" width="92.390625" y="-16.5" x="-46.1953125" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-38.6953125, -9)" style="" class="label"><rect/><foreignObject height="18" width="77.390625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Connected</span></div></foreignObject></g></g><g transform="translate(1009.5859375, 824.5)" data-id="OAuthStarted" data-node="true" id="flowchart-OAuthStarted-17" class="node default default flowchart-label"><rect height="33" width="111.953125" y="-16.5" x="-55.9765625" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-48.4765625, -9)" style="" class="label"><rect/><foreignObject height="18" width="96.953125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">OAuthStarted</span></div></foreignObject></g></g><g transform="translate(118.29296875, 319.5)" data-id="AskLocation" data-node="true" id="flowchart-AskLocation-23" class="node default default flowchart-label"><rect height="33" width="102.171875" y="-16.5" x="-51.0859375" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-43.5859375, -9)" style="" class="label"><rect/><foreignObject height="18" width="87.171875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">AskLocation</span></div></foreignObject></g></g><g transform="translate(398.890625, 319.5)" data-id="AskProfile" data-node="true" id="flowchart-AskProfile-26" class="node default default flowchart-label"><rect height="33" width="87.03125" y="-16.5" x="-43.515625" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-36.015625, -9)" style="" class="label"><rect/><foreignObject height="18" width="72.03125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">AskProfile</span></div></foreignObject></g></g><g transform="translate(874.62890625, 319.5)" data-id="GotConfig" data-node="true" id="flowchart-GotConfig-29" class="node default default flowchart-label"><rect height="33" width="87.046875" y="-16.5" x="-43.5234375" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-36.0234375, -9)" style="" class="label"><rect/><foreignObject height="18" width="72.046875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">GotConfig</span></div></foreignObject></g></g><g transform="translate(874.62890625, 420.5)" data-id="Connecting" data-node="true" id="flowchart-Connecting-44" class="node default default flowchart-label"><rect height="33" width="95.953125" y="-16.5" x="-47.9765625" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-40.4765625, -9)" style="" class="label"><rect/><foreignObject height="18" width="80.953125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Connecting</span></div></foreignObject></g></g><g transform="translate(1082.2890625, 622.5)" data-id="Disconnecting" data-node="true" id="flowchart-Disconnecting-50" class="node default default flowchart-label"><rect height="33" width="115.5" y="-16.5" x="-57.75" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-50.25, -9)" style="" class="label"><rect/><foreignObject height="18" width="100.5"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Disconnecting</span></div></foreignObject></g></g><g transform="translate(1235.703125, 723.5)" data-id="Disconnected" data-node="true" id="flowchart-Disconnected-56" class="node default default flowchart-label"><rect height="33" width="111.953125" y="-16.5" x="-55.9765625" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-48.4765625, -9)" style="" class="label"><rect/><foreignObject height="18" width="96.953125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Disconnected</span></div></foreignObject></g></g></g></g></g></svg>
\ No newline at end of file diff --git a/docs/md/overview.mmd b/docs/md/overview.mmd new file mode 100644 index 0000000..c19e4cb --- /dev/null +++ b/docs/md/overview.mmd @@ -0,0 +1,4 @@ +graph TD; +A[Go]-- Compiles to -->B[C shared library .so/.dll]; +C[Language wrapper]-- Loads -->B +Client -- Uses --> C; diff --git a/docs/md/overview.mmd.svg b/docs/md/overview.mmd.svg new file mode 100644 index 0000000..c3ee832 --- /dev/null +++ b/docs/md/overview.mmd.svg @@ -0,0 +1 @@ +<svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 274.8515625 251" style="max-width: 274.852px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-A LE-B" id="L-A-B-0" d="M42.242,134L42.242,139.667C42.242,145.333,42.242,156.667,49.511,167.489C56.779,178.311,71.316,188.622,78.584,193.778L85.853,198.934"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C LE-B" id="L-C-B-0" d="M184.633,134L184.633,139.667C184.633,145.333,184.633,156.667,177.364,167.489C170.096,178.311,155.559,188.622,148.291,193.778L141.022,198.934"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Client LE-C" id="L-Client-C-0" d="M184.633,33L184.633,38.667C184.633,44.333,184.633,55.667,184.633,66.117C184.633,76.567,184.633,86.133,184.633,90.917L184.633,95.7"/></g><g class="edgeLabels"><g transform="translate(42.2421875, 168)" class="edgeLabel"><g transform="translate(-42.2421875, -9)" class="label"><foreignObject height="18" width="84.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Compiles to</span></div></foreignObject></g></g><g transform="translate(184.6328125, 168)" class="edgeLabel"><g transform="translate(-21.796875, -9)" class="label"><foreignObject height="18" width="43.59375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Loads</span></div></foreignObject></g></g><g transform="translate(184.6328125, 67)" class="edgeLabel"><g transform="translate(-18.2265625, -9)" class="label"><foreignObject height="18" width="36.453125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Uses</span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(42.2421875, 117.5)" data-id="A" data-node="true" id="flowchart-A-0" class="node default default flowchart-label"><rect height="33" width="36.34375" y="-16.5" x="-18.171875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-10.671875, -9)" style="" class="label"><rect/><foreignObject height="18" width="21.34375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Go</span></div></foreignObject></g></g><g transform="translate(113.4375, 218.5)" data-id="B" data-node="true" id="flowchart-B-1" class="node default default flowchart-label"><rect height="33" width="178.625" y="-16.5" x="-89.3125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-81.8125, -9)" style="" class="label"><rect/><foreignObject height="18" width="163.625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">C shared library .so/.dll</span></div></foreignObject></g></g><g transform="translate(184.6328125, 117.5)" data-id="C" data-node="true" id="flowchart-C-2" class="node default default flowchart-label"><rect height="33" width="148.4375" y="-16.5" x="-74.21875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-66.71875, -9)" style="" class="label"><rect/><foreignObject height="18" width="133.4375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Language wrapper</span></div></foreignObject></g></g><g transform="translate(184.6328125, 16.5)" data-id="Client" data-node="true" id="flowchart-Client-4" class="node default default flowchart-label"><rect height="33" width="55.90625" y="-16.5" x="-27.953125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-20.453125, -9)" style="" class="label"><rect/><foreignObject height="18" width="40.90625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Client</span></div></foreignObject></g></g></g></g></g></svg>
\ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index b48518d..15fbcfb 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -13,8 +13,6 @@ nav: - 'Building a client': building-client.md - 'API Docs': apidocs.md use_directory_urls: False -plugins: - - mermaid2 markdown_extensions: - markdown_include.include: - smarty |
