"],"id":2}],[{"start":{"row":7,"column":0},"end":{"row":10,"column":18},"action":"remove","lines":[" "," "," xlock -mode blank"," "],"id":3},{"start":{"row":6,"column":69},"end":{"row":7,"column":0},"action":"remove","lines":["",""]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":6,"column":69},"end":{"row":6,"column":69},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579083964417,"hash":"23ce037566ca480a34363228810a0d77fc5d8644"}
--------------------------------------------------------------------------------
/proxyServer/build-run.sh:
--------------------------------------------------------------------------------
1 | #sudo docker kill $(sudo docker ps -q)
2 | #./hooks/post_checkout
3 |
4 |
5 | sudo docker ps -q --filter ancestor="mmiscool/fc-docker" | xargs -r sudo docker stop
6 | sudo docker ps -q --filter ancestor="mmiscool/freecad-proxy" | xargs -r sudo docker stop
7 |
8 | sudo docker build . -t mmiscool/freecad-proxy
9 | #sudo docker network create -d bridge fcnet
10 | echo Done building. Seems exicuting is the problem
11 | sudo docker run -d -v /fcUsers/:/fcUsers -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 80:80 mmiscool/freecad-proxy
12 |
13 |
14 | echo IP address of docker containers are
15 | sudo docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(sudo docker ps -q)
16 | #sleep 10
17 | #firefox $(sudo docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(sudo docker ps -q)) &
18 |
--------------------------------------------------------------------------------
/resolution.py:
--------------------------------------------------------------------------------
1 | #(C) Michael Molinari 2019
2 |
3 |
4 | #--------------------------------------------------Server stuff
5 | import time
6 | import _thread
7 | import os
8 | from http.server import HTTPServer, BaseHTTPRequestHandler
9 | from urllib.parse import unquote
10 |
11 |
12 | class Serv(BaseHTTPRequestHandler):
13 | print("Hello world")
14 |
15 | def do_GET(self):
16 | print(self.path)
17 |
18 | try:
19 | commandToRun = str(unquote(self.path))
20 | commandToRun = commandToRun[1:]
21 | if (commandToRun.startswith("~") == True):
22 | ShellCommandToRun = commandToRun[1:]
23 | os.system(ShellCommandToRun)
24 | except:
25 | print("failed command exicution")
26 | self.send_response(200)
27 | self.end_headers()
28 | myReturnMSG = "Welp we did that action"
29 | self.wfile.write(bytes(myReturnMSG, 'utf-8'))
30 |
31 | def runTheServer():
32 | httpd = HTTPServer(('0.0.0.0', 8001), Serv)
33 | httpd.serve_forever()
34 |
35 |
36 |
37 |
38 | runTheServer()
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "external_dependencies/external/websockify"]
2 | path = external_dependencies/external/websockify
3 | url = https://github.com/novnc/websockify.git
4 |
5 |
6 | [submodule "external_dependencies/external/noVNC"]
7 | path = external_dependencies/external/noVNC
8 | url = https://github.com/novnc/noVNC.git
9 |
10 |
11 | [submodule "external_dependencies/external/FreeCAD"]
12 | path = external_dependencies/external/FreeCAD
13 | url = https://github.com/FreeCAD/FreeCAD.git
14 |
15 | [submodule "external_dependencies/external/Droopy"]
16 | path = external_dependencies/external/Droopy
17 | url = https://github.com/mmiscool/Droopy.git
18 |
19 | [submodule "external_dependencies/external/Mod/a2plus"]
20 | path = external_dependencies/external/Mod/a2plus
21 | url = https://github.com/kbwbe/A2plus.git
22 | [submodule "external_dependencies/external/Mod/FreeCAD_SheetMetal"]
23 | path = external_dependencies/external/Mod/FreeCAD_SheetMetal
24 | url = https://github.com/shaise/FreeCAD_SheetMetal.git
25 |
--------------------------------------------------------------------------------
/proxyServer/localhost.1.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 | server {
4 | listen 80 default_server;
5 | listen [::]:80 default_server;
6 | server_name _;
7 |
8 | root /html/;
9 |
10 |
11 |
12 |
13 | proxy_set_header Upgrade $http_upgrade;
14 | proxy_set_header Connection "upgrade";
15 |
16 | # VNC connection timeout
17 | proxy_read_timeout 61s;
18 |
19 | # Disable cache
20 | proxy_buffering off;
21 |
22 |
23 | location /cmd/ {
24 | proxy_http_version 1.1;
25 | proxy_pass http://localhost:8888/;
26 | proxy_set_header Upgrade $http_upgrade;
27 | proxy_set_header Connection "upgrade";
28 |
29 | # VNC connection timeout
30 | proxy_read_timeout 61s;
31 |
32 | # Disable cache
33 | proxy_buffering off;
34 | }
35 |
36 |
37 | location ~ ^/ip/(.*)$ {
38 |
39 | proxy_pass http://$1;
40 |
41 |
42 | # VNC connection timeout
43 | proxy_read_timeout 61s;
44 |
45 | # Disable cache
46 | proxy_buffering off;
47 | }
48 |
49 |
50 |
51 | }
52 |
53 |
54 |
55 |
56 |
57 |
58 | client_max_body_size 50M;
--------------------------------------------------------------------------------
/proxyServer/localhost.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 | server {
4 | listen 80 default_server;
5 | listen [::]:80 default_server;
6 | server_name _;
7 |
8 | root /html/;
9 |
10 |
11 |
12 |
13 | proxy_set_header Upgrade $http_upgrade;
14 | proxy_set_header Connection "upgrade";
15 |
16 | # VNC connection timeout
17 | proxy_read_timeout 61s;
18 |
19 | # Disable cache
20 | proxy_buffering off;
21 |
22 |
23 | location /cmd/ {
24 | proxy_http_version 1.1;
25 | proxy_pass http://localhost:8888/;
26 | proxy_set_header Upgrade $http_upgrade;
27 | proxy_set_header Connection "upgrade";
28 |
29 | # VNC connection timeout
30 | proxy_read_timeout 61s;
31 |
32 | # Disable cache
33 | proxy_buffering off;
34 | }
35 |
36 |
37 | location ~ ^/ip/(.*)$ {
38 |
39 | proxy_pass http://$1;
40 |
41 |
42 | # VNC connection timeout
43 | proxy_read_timeout 61s;
44 |
45 | # Disable cache
46 | proxy_buffering off;
47 | }
48 |
49 |
50 |
51 | }
52 |
53 |
54 |
55 |
56 |
57 |
58 | client_max_body_size 50M;
--------------------------------------------------------------------------------
/.c9/metadata/workspace/proxyServer/manager/commandTemplates/listSessions.sh:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"listSessions.sh","tooltip":"/proxyServer/manager/commandTemplates/listSessions.sh","undoManager":{"mark":1,"position":1,"stack":[[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"insert","lines":["docker inspect --format='{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q -f ancestor=kewl)'''",""],"id":1}],[{"start":{"row":0,"column":128},"end":{"row":1,"column":0},"action":"remove","lines":["",""],"id":2},{"start":{"row":0,"column":127},"end":{"row":0,"column":128},"action":"remove","lines":["'"]},{"start":{"row":0,"column":126},"end":{"row":0,"column":127},"action":"remove","lines":["'"]},{"start":{"row":0,"column":125},"end":{"row":0,"column":126},"action":"remove","lines":["'"]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":125},"end":{"row":0,"column":125},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":65,"mode":"ace/mode/sh"}},"timestamp":1579540231808,"hash":"8e098de098f1dd39367c5c6eb3ced1484f8e78f9"}
--------------------------------------------------------------------------------
/.c9/metadata/workspace/fileServer/droopy:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"droopy","tooltip":"/fileServer/droopy","undoManager":{"mark":2,"position":2,"stack":[[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["f"],"id":2},{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["u"]},{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":["p"]},{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":["l"]}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"remove","lines":["l"],"id":3},{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"remove","lines":["p"]},{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"remove","lines":["u"]},{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"remove","lines":["f"]}],[{"start":{"row":350,"column":58},"end":{"row":350,"column":59},"action":"insert","lines":["."],"id":4}]]},"ace":{"folds":[],"scrolltop":4287.828125,"scrollleft":0,"selection":{"start":{"row":348,"column":12},"end":{"row":348,"column":34},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1578888278575,"hash":"b42e812b135ab7c41843004494394fdf641e79f7"}
--------------------------------------------------------------------------------
/.c9/metadata/workspace/external_dependencies/fileServer/droopy:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"droopy","tooltip":"/external_dependencies/fileServer/droopy","undoManager":{"mark":2,"position":2,"stack":[[{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"insert","lines":["f"],"id":2},{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"insert","lines":["u"]},{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"insert","lines":["p"]},{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"insert","lines":["l"]}],[{"start":{"row":0,"column":3},"end":{"row":0,"column":4},"action":"remove","lines":["l"],"id":3},{"start":{"row":0,"column":2},"end":{"row":0,"column":3},"action":"remove","lines":["p"]},{"start":{"row":0,"column":1},"end":{"row":0,"column":2},"action":"remove","lines":["u"]},{"start":{"row":0,"column":0},"end":{"row":0,"column":1},"action":"remove","lines":["f"]}],[{"start":{"row":350,"column":58},"end":{"row":350,"column":59},"action":"insert","lines":["."],"id":4}]]},"ace":{"folds":[],"scrolltop":4287.828125,"scrollleft":0,"selection":{"start":{"row":348,"column":12},"end":{"row":348,"column":34},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":320,"state":"start","mode":"ace/mode/python"}},"timestamp":1578888278907,"hash":"b42e812b135ab7c41843004494394fdf641e79f7"}
--------------------------------------------------------------------------------
/proxyServer/localhost.backup.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 | server {
4 | listen 80 default_server;
5 | listen [::]:80 default_server;
6 | server_name _;
7 |
8 | root /html/;
9 |
10 | location ~ ^/(*)/v2/(.+)$
11 | proxy_pass http://$1;
12 | auth_request /auth;
13 | }
14 |
15 | proxy_set_header Upgrade $http_upgrade;
16 | proxy_set_header Connection "upgrade";
17 |
18 | # VNC connection timeout
19 | proxy_read_timeout 61s;
20 |
21 | # Disable cache
22 | proxy_buffering off;
23 |
24 |
25 | location /cmd/ {
26 | proxy_http_version 1.1;
27 | proxy_pass http://localhost:8888/;
28 | proxy_set_header Upgrade $http_upgrade;
29 | proxy_set_header Connection "upgrade";
30 |
31 | # VNC connection timeout
32 | proxy_read_timeout 61s;
33 |
34 | # Disable cache
35 | proxy_buffering off;
36 | }
37 |
38 | location = /auth {
39 | internal;
40 |
41 | proxy_pass http://localhost:8888/auth/$request_uri;
42 |
43 | proxy_pass_request_body off;
44 |
45 | proxy_set_header Content-Length "";
46 | proxy_set_header X-Original-URI $request_uri;
47 | proxy_set_header Host $http_host;
48 | proxy_set_header X-Real-IP $remote_addr;
49 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
50 | proxy_set_header X-Forwarded-Proto $scheme;
51 |
52 | }
53 | }
54 |
55 |
56 |
57 |
58 |
59 |
60 | client_max_body_size 50M;
--------------------------------------------------------------------------------
/supervisord.conf:
--------------------------------------------------------------------------------
1 | [supervisord]
2 | nodaemon=true
3 |
4 | [program:X11]
5 | command=/usr/bin/Xvfb :0 -screen 0 4000x4000x24
6 | autorestart=true
7 | stdout_logfile=/dev/fd/1
8 | stdout_logfile_maxbytes=0
9 | redirect_stderr=true
10 |
11 | [program:x11vnc]
12 | command=/usr/bin/x11vnc
13 | autorestart=true
14 | stdout_logfile=/dev/fd/1
15 | stdout_logfile_maxbytes=0
16 | redirect_stderr=true
17 |
18 | [program:novnc]
19 | command=/novnc/utils/launch.sh --vnc localhost:5900 --listen 8080
20 | autorestart=true
21 | stdout_logfile=/dev/fd/1
22 | stdout_logfile_maxbytes=0
23 | redirect_stderr=true
24 |
25 | [program:res]
26 | command=python3 /resolution.py
27 | autorestart=true
28 | stdout_logfile=/dev/fd/1
29 | stdout_logfile_maxbytes=0
30 | redirect_stderr=true
31 |
32 | [program:fileServer]
33 | command=python3 /fileServer/droopy -d /root/files -m "File Manager" --dl 8085
34 | autorestart=true
35 | stdout_logfile=/dev/fd/1
36 | stdout_logfile_maxbytes=0
37 | redirect_stderr=true
38 |
39 | [program:freecad]
40 | command=xterm /start.sh
41 | autorestart=true
42 | stdout_logfile=/dev/fd/1
43 | stdout_logfile_maxbytes=0
44 | redirect_stderr=true
45 |
46 | [program:JWMwindowManager]
47 | command=jwm
48 | autorestart=true
49 | stdout_logfile=/dev/fd/1
50 | stdout_logfile_maxbytes=0
51 | redirect_stderr=true
52 |
53 | [program:nginx]
54 | command=nginx
55 | autorestart=true
56 | stdout_logfile=/dev/fd/1
57 | stdout_logfile_maxbytes=0
58 | redirect_stderr=true
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:bionic
2 |
3 | ENV HOME /root
4 |
5 | RUN apt update \
6 | && apt install software-properties-common --no-install-recommends -y \
7 | && add-apt-repository ppa:freecad-maintainers/freecad-stable -y \
8 | && apt update \
9 | && apt install \
10 | xvfb \
11 | x11vnc \
12 | xdotool \
13 | software-properties-common \
14 | supervisor \
15 | nginx x11-xserver-utils \
16 | xterm \
17 | freecad \
18 | jwm \
19 | --no-install-recommends -y \
20 | && apt-get clean autoclean \
21 | && apt-get autoremove --yes \
22 | && rm -rf /var/lib/{apt,dpkg,cache,log}/
23 |
24 |
25 | RUN apt install \
26 | firefox \
27 | mousepad \
28 | thunar \
29 | nano \
30 | --no-install-recommends -y
31 | RUN apt install git python-numpy python-pyside -y
32 |
33 | ADD external_dependencies/external/Mod /root/.FreeCAD/Mod
34 |
35 | ADD system.jwmrc /etc/jwm/system.jwmrc
36 |
37 | EXPOSE 80
38 |
39 | WORKDIR /root/
40 |
41 | ENV DISPLAY :0
42 |
43 | ADD external_dependencies/external/Droopy /fileServer
44 | ADD external_dependencies/external/noVNC /novnc
45 | ADD external_dependencies/external/icons /novnc/icons
46 |
47 | ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
48 | ADD start.sh /start.sh
49 |
50 | ADD localhost.conf /etc/nginx/sites-available/default
51 |
52 | ADD resolution.py /resolution.py
53 | CMD ["/usr/bin/supervisord"]
54 |
55 |
56 | ADD server.py /server.py
57 |
58 | ADD user.cfg /root/.FreeCAD/user.cfg
59 |
60 | ADD settings.json /novnc/settings.json
61 |
62 | RUN ln /root/.FreeCAD/user.cfg /root/user.cfg
63 | ADD index.html /novnc/index.html
64 | ADD FC-APP.js /novnc/FC-APP.js
65 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/none.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
55 |
--------------------------------------------------------------------------------
/.c9/metadata/workspace/hooks/post_checkout:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"post_checkout","tooltip":"/hooks/post_checkout","ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":4,"column":41},"end":{"row":4,"column":41},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"hash":"a70094efdb3667901c192dcd3281c630272ac556","undoManager":{"mark":7,"position":7,"stack":[[{"start":{"row":2,"column":0},"end":{"row":11,"column":2},"action":"insert","lines":["git submodule update --init","","","","cd external_dependencies","mkdir external","for each in ./*.sh ; do bash $each ; done","","cd ..","ls"],"id":3}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":27},"action":"remove","lines":["git submodule update --init"],"id":4}],[{"start":{"row":6,"column":3},"end":{"row":6,"column":4},"action":"insert","lines":["."],"id":5},{"start":{"row":6,"column":4},"end":{"row":6,"column":5},"action":"insert","lines":["."]},{"start":{"row":6,"column":5},"end":{"row":6,"column":6},"action":"insert","lines":["/"]}],[{"start":{"row":4,"column":0},"end":{"row":5,"column":0},"action":"remove","lines":["",""],"id":6},{"start":{"row":3,"column":0},"end":{"row":4,"column":0},"action":"remove","lines":["",""]},{"start":{"row":2,"column":0},"end":{"row":3,"column":0},"action":"remove","lines":["",""]}],[{"start":{"row":3,"column":4},"end":{"row":3,"column":5},"action":"remove","lines":["."],"id":7},{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"remove","lines":["."]}],[{"start":{"row":3,"column":3},"end":{"row":3,"column":4},"action":"remove","lines":["/"],"id":8}],[{"start":{"row":4,"column":0},"end":{"row":4,"column":14},"action":"remove","lines":["mkdir external"],"id":9},{"start":{"row":3,"column":24},"end":{"row":4,"column":0},"action":"remove","lines":["",""]}],[{"start":{"row":4,"column":41},"end":{"row":5,"column":0},"action":"remove","lines":["",""],"id":10}]]},"timestamp":1579083964416}
--------------------------------------------------------------------------------
/.c9/metadata/workspace/proxyServer/manager/commandTemplates/startSession.sh:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"startSession.sh","tooltip":"/proxyServer/manager/commandTemplates/startSession.sh","undoManager":{"mark":6,"position":6,"stack":[[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"insert","lines":["docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}:{{.ID}}' $(docker run -d kewl ) '''",""],"id":1}],[{"start":{"row":0,"column":115},"end":{"row":1,"column":0},"action":"remove","lines":["'''",""],"id":2},{"start":{"row":0,"column":114},"end":{"row":0,"column":115},"action":"remove","lines":[" "]}],[{"start":{"row":0,"column":114},"end":{"row":1,"column":0},"action":"insert","lines":["",""],"id":3},{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"insert","lines":["",""]},{"start":{"row":2,"column":0},"end":{"row":3,"column":0},"action":"insert","lines":["",""]}],[{"start":{"row":3,"column":0},"end":{"row":4,"column":0},"action":"insert","lines":["docker inspect --format='{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q -f ancestor=kewl)'''",""],"id":4}],[{"start":{"row":3,"column":127},"end":{"row":3,"column":128},"action":"remove","lines":["'"],"id":5},{"start":{"row":3,"column":126},"end":{"row":3,"column":127},"action":"remove","lines":["'"]},{"start":{"row":3,"column":125},"end":{"row":3,"column":126},"action":"remove","lines":["'"]}],[{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"remove","lines":["docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}:{{.ID}}' $(docker run -d kewl )",""],"id":6}],[{"start":{"row":1,"column":0},"end":{"row":2,"column":0},"action":"remove","lines":["",""],"id":7},{"start":{"row":0,"column":0},"end":{"row":1,"column":0},"action":"remove","lines":["",""]}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579540279410,"hash":"063fd788e65afb2a9d22e96b070e1c65f894bc4e"}
--------------------------------------------------------------------------------
/external_dependencies/external/icons/rectangle.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
62 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/arrowdot.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
50 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/triangle.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # This project is being discontinued in favor of focusing development effort on https://github.com/xibyte/jsketcher
2 | #JSketcher is a fully browser based parametric 3d modeler that uses opencascade and a constraint based 2d sketcher.
3 | Feel free to fork and contine using this if you like. I highly recomend taking a look at the JSketcer project as there are some major changes comming for it that will increase stability and address referenced geometry.
4 |
5 | 
6 | [](https://gitter.im/FC-Docker/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
7 | # FC-Docker Run FreeCAD in a docker and make it accessible via the web browser
8 |
9 | Included in this package is a docker file that builds a FreeCAD environment that is accessible from the web browser. Rendering is done on the server side for everything.
10 |
11 | # Building and running
12 | To build and run this project clone this repository.
13 | You must have docker installed. On Ubuntu use the following command
14 | ```sudo apt install docker-ce```
15 | In the repository directory run the following script.
16 | ```./build-run.sh```
17 |
18 | After that script is run you should be able to visit http://localhost/ too see the application.
19 | Running this script will also start up a Cloud9 IDE environment accessible at http://localhost:8181/ use "username" and "password" to log in to it.
20 | I use Cloud9 for my IDE as all development done on this project so far was done on a Chromebook!
21 | Feel free to use it if you wish. If not don't worry about it.
22 |
23 |
24 | # external_dependencies
25 | Right now there is an external_dependencies folder. Items in this folder are from other projects.
26 | A build system that fetches these files from there source projects will be implemented.
27 | Respect the licences included with the packages in the external_dependencies folder.
28 |
29 | # Contributing to this project.
30 | This project is release under AGPL-3.0 licence. If you wish to use the code any thing you do with it including server side management systems must be made open source under the same licence. This applies to any any one who is hosting cloud services to the general public. Any modifications made must be shared.
31 | https://www.gnu.org/licenses/agpl-3.0.en.html
32 |
33 |
34 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/circular.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
67 |
--------------------------------------------------------------------------------
/localhost.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80 default_server;
3 | index index.html index.htm;
4 |
5 | server_name _;
6 | location /cmd/ {
7 | proxy_http_version 1.1;
8 | proxy_pass http://localhost:8000/;
9 | proxy_set_header Upgrade $http_upgrade;
10 | proxy_set_header Connection "upgrade";
11 |
12 | # VNC connection timeout
13 | proxy_read_timeout 61s;
14 |
15 | # Disable cache
16 | proxy_buffering off;
17 | }
18 |
19 |
20 |
21 | location /res/ {
22 | proxy_http_version 1.1;
23 | proxy_pass http://localhost:8001/;
24 | proxy_set_header Upgrade $http_upgrade;
25 | proxy_set_header Connection "upgrade";
26 |
27 | # VNC connection timeout
28 | proxy_read_timeout 61s;
29 |
30 | # Disable cache
31 | proxy_buffering off;
32 | }
33 |
34 |
35 |
36 |
37 | location /files/ {
38 | proxy_http_version 1.1;
39 | proxy_pass http://localhost:8085/;
40 | proxy_set_header Upgrade $http_upgrade;
41 | proxy_set_header Connection "upgrade";
42 |
43 | # VNC connection timeout
44 | proxy_read_timeout 61s;
45 |
46 | # Disable cache
47 | proxy_buffering off;
48 | }
49 |
50 | location /apiHelp/ {
51 | proxy_http_version 1.1;
52 | proxy_pass http://localhost:7465/;
53 | proxy_set_header Upgrade $http_upgrade;
54 | proxy_set_header Connection "upgrade";
55 |
56 | # VNC connection timeout
57 | proxy_read_timeout 61s;
58 |
59 | # Disable cache
60 | proxy_buffering off;
61 | }
62 |
63 |
64 | location / {
65 |
66 | proxy_http_version 1.1;
67 | proxy_pass http://localhost:8080;
68 | proxy_set_header Upgrade $http_upgrade;
69 | proxy_set_header Connection "upgrade";
70 |
71 | # VNC connection timeout
72 | proxy_read_timeout 61s;
73 |
74 | # Disable cache
75 | proxy_buffering off;
76 |
77 |
78 | }
79 |
80 |
81 |
82 | location /websockify {
83 | proxy_http_version 1.1;
84 | proxy_pass http://localhost:8080/websockify;
85 | proxy_set_header Upgrade $http_upgrade;
86 | proxy_set_header Connection "upgrade";
87 |
88 | # VNC connection timeout
89 | proxy_read_timeout 61s;
90 |
91 | # Disable cache
92 | proxy_buffering off;
93 | }
94 |
95 | }
96 |
97 | client_max_body_size 50M;
--------------------------------------------------------------------------------
/external_dependencies/external/icons/general_steel.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/arrowopendot.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
59 |
--------------------------------------------------------------------------------
/.c9/metadata/workspace/proxyServer/supervisord.conf:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":"supervisord.conf","tooltip":"/proxyServer/supervisord.conf","undoManager":{"mark":3,"position":3,"stack":[[{"start":{"row":3,"column":0},"end":{"row":23,"column":0},"action":"remove","lines":["[program:X11]","command=/usr/bin/Xvfb :0 -screen 0 2000x2000x24","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true","","[program:x11vnc]","command=/usr/bin/x11vnc","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true","","[program:novnc]","command=/novnc/utils/launch.sh --vnc localhost:5900 --listen 8080","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true",""],"id":2}],[{"start":{"row":11,"column":0},"end":{"row":30,"column":20},"action":"remove","lines":["[program:fileServer]","command=python3 /fileServer/droopy --dl 8085","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true","","[program:freecad]","command=xterm /start.sh","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true","","[program:JWMwindowManager]","command=jwm","autorestart=true","stdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0","redirect_stderr=true"],"id":3},{"start":{"row":10,"column":0},"end":{"row":11,"column":0},"action":"remove","lines":["",""]}],[{"start":{"row":5,"column":17},"end":{"row":5,"column":27},"action":"remove","lines":["resolution"],"id":4},{"start":{"row":5,"column":17},"end":{"row":5,"column":18},"action":"insert","lines":["s"]},{"start":{"row":5,"column":18},"end":{"row":5,"column":19},"action":"insert","lines":["e"]},{"start":{"row":5,"column":19},"end":{"row":5,"column":20},"action":"insert","lines":["s"]},{"start":{"row":5,"column":20},"end":{"row":5,"column":21},"action":"insert","lines":["s"]},{"start":{"row":5,"column":21},"end":{"row":5,"column":22},"action":"insert","lines":["i"]},{"start":{"row":5,"column":22},"end":{"row":5,"column":23},"action":"insert","lines":["o"]},{"start":{"row":5,"column":23},"end":{"row":5,"column":24},"action":"insert","lines":["n"]},{"start":{"row":5,"column":24},"end":{"row":5,"column":25},"action":"insert","lines":["s"]}],[{"start":{"row":9,"column":20},"end":{"row":10,"column":0},"action":"insert","lines":["",""],"id":5}],[{"start":{"row":10,"column":0},"end":{"row":11,"column":25},"action":"insert","lines":["tdout_logfile=/dev/fd/1","stdout_logfile_maxbytes=0"],"id":6}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":10,"column":0},"end":{"row":10,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579495267899,"hash":"ac516e62f35bf35d3186e320a2d07c3626d57837"}
--------------------------------------------------------------------------------
/external_dependencies/external/icons/arrowfilled.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
62 |
--------------------------------------------------------------------------------
/proxyServer/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
20 | Well this worked
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
108 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/arrowpyramid.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
86 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/transparent.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
94 |
--------------------------------------------------------------------------------
/.c9/metadata/workspace/.gitignore:
--------------------------------------------------------------------------------
1 | {"filter":false,"title":".gitignore","tooltip":"/.gitignore","undoManager":{"mark":12,"position":12,"stack":[[{"start":{"row":1,"column":0},"end":{"row":1,"column":8},"action":"remove","lines":["FreeCAD/"],"id":2},{"start":{"row":1,"column":0},"end":{"row":1,"column":21},"action":"insert","lines":["external_dependencies"]}],[{"start":{"row":1,"column":21},"end":{"row":1,"column":22},"action":"insert","lines":["/"],"id":3}],[{"start":{"row":1,"column":22},"end":{"row":1,"column":43},"action":"insert","lines":["external_dependencies"],"id":4}],[{"start":{"row":1,"column":43},"end":{"row":1,"column":44},"action":"insert","lines":["]"],"id":5}],[{"start":{"row":1,"column":43},"end":{"row":1,"column":44},"action":"remove","lines":["]"],"id":6},{"start":{"row":1,"column":42},"end":{"row":1,"column":43},"action":"remove","lines":["s"]},{"start":{"row":1,"column":41},"end":{"row":1,"column":42},"action":"remove","lines":["e"]},{"start":{"row":1,"column":40},"end":{"row":1,"column":41},"action":"remove","lines":["i"]},{"start":{"row":1,"column":39},"end":{"row":1,"column":40},"action":"remove","lines":["c"]},{"start":{"row":1,"column":38},"end":{"row":1,"column":39},"action":"remove","lines":["n"]},{"start":{"row":1,"column":37},"end":{"row":1,"column":38},"action":"remove","lines":["e"]},{"start":{"row":1,"column":36},"end":{"row":1,"column":37},"action":"remove","lines":["d"]},{"start":{"row":1,"column":35},"end":{"row":1,"column":36},"action":"remove","lines":["n"]},{"start":{"row":1,"column":34},"end":{"row":1,"column":35},"action":"remove","lines":["e"]},{"start":{"row":1,"column":33},"end":{"row":1,"column":34},"action":"remove","lines":["p"]},{"start":{"row":1,"column":32},"end":{"row":1,"column":33},"action":"remove","lines":["e"]},{"start":{"row":1,"column":31},"end":{"row":1,"column":32},"action":"remove","lines":["d"]},{"start":{"row":1,"column":30},"end":{"row":1,"column":31},"action":"remove","lines":["_"]}],[{"start":{"row":1,"column":30},"end":{"row":1,"column":31},"action":"insert","lines":["/"],"id":7}],[{"start":{"row":1,"column":0},"end":{"row":1,"column":31},"action":"remove","lines":["external_dependencies/external/"],"id":8}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":37},"action":"insert","lines":["/external_dependencies/external/icons"],"id":9}],[{"start":{"row":2,"column":0},"end":{"row":2,"column":1},"action":"remove","lines":["/"],"id":10}],[{"start":{"row":2,"column":36},"end":{"row":2,"column":37},"action":"insert","lines":["/"],"id":11}],[{"start":{"row":2,"column":37},"end":{"row":3,"column":0},"action":"insert","lines":["",""],"id":12}],[{"start":{"row":3,"column":0},"end":{"row":3,"column":37},"action":"insert","lines":["/external_dependencies/external/icons"],"id":13}],[{"start":{"row":3,"column":0},"end":{"row":3,"column":1},"action":"remove","lines":["/"],"id":14}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":3,"column":0},"end":{"row":3,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579117006709,"hash":"a8b678aa4554c37f02dcd47bc4e987987a5c78d1"}
--------------------------------------------------------------------------------
/proxyServer/html/gdrive.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Google Picker Example
6 |
7 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/line.svg:
--------------------------------------------------------------------------------
1 |
2 |
96 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/arrowtick.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
75 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/hexagon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_vline_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_darker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_lighter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_darker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_lighter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_darker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_lighter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_darker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_disabled_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_lighter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_disabled_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/up_arrow_disabled_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_vline_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_disabled_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/down_arrow_disabled_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/left_arrow_disabled_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_disabled_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/right_arrow_disabled_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_end_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/inspection.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
90 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_end_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
101 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/solid.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
104 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/aluminium.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/plastic.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/more_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/more_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/checkbox_indeterminate_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_more_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/checkbox_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
107 |
--------------------------------------------------------------------------------
/external_dependencies/external/icons/branch_more_light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
107 |
--------------------------------------------------------------------------------