├── docs ├── CNAME ├── _config.yml └── README.md ├── start.sh ├── proxyServer ├── html │ ├── loading.gif │ ├── index.html │ └── gdrive.html ├── manager │ └── commandTemplates │ │ ├── listSessions.sh │ │ ├── startUserSession.sh │ │ └── startSession.sh ├── supervisord.conf ├── localhost.nonworking.conf ├── Dockerfile ├── build-run.sh ├── localhost.1.conf ├── localhost.conf └── localhost.backup.conf ├── .gitignore ├── hooks └── post_checkout ├── .c9 ├── .nakignore ├── metadata │ ├── tab26 │ ├── tab27 │ └── workspace │ │ ├── zzzzz.svg │ │ ├── _config.yml │ │ ├── fileServer │ │ ├── hide.py │ │ └── droopy │ │ ├── websocket │ │ ├── static │ │ │ └── chat.js │ │ └── templates │ │ │ ├── index.html │ │ │ └── message.html │ │ ├── settings (1).json │ │ ├── .gitmodules │ │ ├── docs │ │ └── README.md │ │ ├── proxyServer │ │ ├── localhost.backup.conf │ │ ├── localhost.1.conf │ │ ├── manager │ │ │ └── commandTemplates │ │ │ │ ├── startUserSession.sh │ │ │ │ ├── listSessions.sh │ │ │ │ └── startSession.sh │ │ └── supervisord.conf │ │ ├── external_dependencies │ │ ├── novnc │ │ │ ├── utils │ │ │ │ └── README.md │ │ │ └── README.md │ │ ├── external │ │ │ └── noVNC │ │ │ │ └── utils │ │ │ │ ├── README.md │ │ │ │ └── launch.sh │ │ └── fileServer │ │ │ ├── Readme.md │ │ │ └── droopy │ │ ├── ~ │ │ └── .c9 │ │ │ └── init.js │ │ ├── system.jwmrc │ │ ├── hooks │ │ └── post_checkout │ │ └── .gitignore └── project.settings ├── external_dependencies ├── FreeCAD.sh └── external │ └── icons │ ├── menu.svg │ ├── none.svg │ ├── rectangle.svg │ ├── arrowdot.svg │ ├── triangle.svg │ ├── circular.svg │ ├── general_steel.svg │ ├── arrowopendot.svg │ ├── arrowfilled.svg │ ├── arrowpyramid.svg │ ├── transparent.svg │ ├── line.svg │ ├── arrowtick.svg │ ├── hexagon.svg │ ├── branch_vline_dark.svg │ ├── left_arrow_dark.svg │ ├── left_arrow_darker.svg │ ├── left_arrow_light.svg │ ├── up_arrow_dark.svg │ ├── down_arrow_dark.svg │ ├── down_arrow_light.svg │ ├── left_arrow_lighter.svg │ ├── right_arrow_dark.svg │ ├── up_arrow_darker.svg │ ├── up_arrow_light.svg │ ├── up_arrow_lighter.svg │ ├── down_arrow_darker.svg │ ├── down_arrow_lighter.svg │ ├── right_arrow_darker.svg │ ├── right_arrow_light.svg │ ├── left_arrow_disabled_dark.svg │ ├── right_arrow_lighter.svg │ ├── up_arrow_disabled_dark.svg │ ├── up_arrow_disabled_light.svg │ ├── branch_vline_light.svg │ ├── down_arrow_disabled_dark.svg │ ├── down_arrow_disabled_light.svg │ ├── left_arrow_disabled_light.svg │ ├── right_arrow_disabled_dark.svg │ ├── right_arrow_disabled_light.svg │ ├── branch_end_light.svg │ ├── inspection.svg │ ├── branch_end_dark.svg │ ├── solid.svg │ ├── aluminium.svg │ ├── plastic.svg │ ├── more_dark.svg │ ├── more_light.svg │ ├── checkbox_indeterminate_light.svg │ ├── branch_more_dark.svg │ ├── checkbox_light.svg │ └── branch_more_light.svg ├── .dockerignore ├── .github └── FUNDING.yml ├── resolution.py ├── .gitmodules ├── supervisord.conf ├── Dockerfile ├── README.md └── localhost.conf /docs/CNAME: -------------------------------------------------------------------------------- 1 | freecadcloud.com -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Setting up github sites stuff. 2 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | cd /root/files 2 | freecad /server.py --log-file /root/FC-log1.log -------------------------------------------------------------------------------- /proxyServer/html/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmiscool/FC-Docker/HEAD/proxyServer/html/loading.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # file types to ignore 2 | 3 | external_dependencies/external/icons/ 4 | external_dependencies/external/icons -------------------------------------------------------------------------------- /hooks/post_checkout: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | git submodule update --init 3 | 4 | cd external_dependencies 5 | for each in ./*.sh ; do bash $each ; done 6 | cd .. 7 | ls -------------------------------------------------------------------------------- /proxyServer/manager/commandTemplates/listSessions.sh: -------------------------------------------------------------------------------- 1 | docker inspect --format='{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q -f ancestor=kewl) -------------------------------------------------------------------------------- /proxyServer/manager/commandTemplates/startUserSession.sh: -------------------------------------------------------------------------------- 1 | docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}:{{.ID}}' $(docker run -d kewl ) 2 | -------------------------------------------------------------------------------- /proxyServer/manager/commandTemplates/startSession.sh: -------------------------------------------------------------------------------- 1 | docker inspect --format='{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q -f ancestor=kewl) 2 | -------------------------------------------------------------------------------- /.c9/.nakignore: -------------------------------------------------------------------------------- 1 | *~backup-* 2 | .c9revisions 3 | .c9 4 | .git 5 | .svn 6 | .DS_Store 7 | .bzr 8 | .cdv 9 | ~.dep 10 | ~.dot 11 | ~.nib 12 | ~.plst 13 | .hg 14 | .pc 15 | *.min.js 16 | .nakignore 17 | /dev 18 | -------------------------------------------------------------------------------- /.c9/metadata/tab26: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"bash - \"e23e7e89c813\" ","tooltip":"bash - \"e23e7e89c813\" ","undoManager":{"mark":-1,"position":-1,"stack":[]},"terminal":{"id":"devel_899","cwd":"","width":0,"height":0,"scrollTop":-1},"hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709"} -------------------------------------------------------------------------------- /.c9/metadata/tab27: -------------------------------------------------------------------------------- 1 | {"changed":false,"filter":false,"title":"FC-APP.js - Stopped","tooltip":"FC-APP.js - Stopped","value":"","undoManager":{"mark":-1,"position":-1,"stack":[]},"output":{"id":"output424360","width":0,"height":0,"scrollTop":613.0625,"config":{"runner":"Node.js","command":"FC-APP.js","toolbar":true,"debug":true}},"timestamp":1579596323856} -------------------------------------------------------------------------------- /proxyServer/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | 5 | [program:res] 6 | command=python3 /sessions.py 7 | autorestart=true 8 | stdout_logfile=/dev/fd/1 9 | stdout_logfile_maxbytes=0 10 | redirect_stderr=true 11 | 12 | 13 | 14 | [program:nginx] 15 | command=nginx 16 | autorestart=true 17 | stdout_logfile=/dev/fd/1 18 | stdout_logfile_maxbytes=0 19 | redirect_stderr=true 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.c9/metadata/workspace/zzzzz.svg: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"zzzzz.svg","tooltip":"/zzzzz.svg","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579522098129,"hash":"4a96731fd01afb3ee4c77e2dcb89d7a59daecc59"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/_config.yml: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"_config.yml","tooltip":"/_config.yml","undoManager":{"mark":-1,"position":-1,"stack":[]},"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":1579083964209,"hash":"17df15d79c7a6eb779f4a69b95ec346d4306ad85"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/fileServer/hide.py: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"hide.py","tooltip":"/fileServer/hide.py","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1578733693655,"hash":"171ae7f8ea2876173c8d6e909ddae6a33f13cbff"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/websocket/static/chat.js: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"chat.js","tooltip":"/websocket/static/chat.js","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":328.5,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579632012000,"hash":"9727731fe4dd14ed30e392b830f4fa898b657cc8"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/settings (1).json: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"settings (1).json","tooltip":"/settings (1).json","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":9723.28125,"scrollleft":0,"selection":{"start":{"row":0,"column":177},"end":{"row":0,"column":177},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":true,"wrapToView":true},"firstLineState":0},"timestamp":1579403452000,"hash":"e301fa9e2e0890d97d01899d351493d144e4b6e7"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/.gitmodules: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":".gitmodules","tooltip":"/.gitmodules","ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":24,"column":0},"end":{"row":24,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":122,"mode":"ace/mode/text"}},"hash":"5aaf36b0d49e94339f3ea6a0800e207db9a47f4e","undoManager":{"mark":-1,"position":-1,"stack":[]},"timestamp":1579575275393} -------------------------------------------------------------------------------- /.c9/metadata/workspace/websocket/templates/index.html: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"index.html","tooltip":"/websocket/templates/index.html","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579632012000,"hash":"bdf816d10273fd06b15c5a5f2bb1fee1898802f7"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/docs/README.md: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"README.md","tooltip":"/docs/README.md","ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":1,"column":0},"end":{"row":1,"column":0},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":243,"mode":"ace/mode/markdown"}},"hash":"c4d1aaed70f452c3055faf26d8998b8e8c87fada","undoManager":{"mark":-1,"position":-1,"stack":[]},"timestamp":1579083964210} -------------------------------------------------------------------------------- /.c9/metadata/workspace/websocket/templates/message.html: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"message.html","tooltip":"/websocket/templates/message.html","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579632012000,"hash":"1cd51776dda708a16e3c2909c9dcb7342b358fec"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/proxyServer/localhost.backup.conf: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"localhost.backup.conf","tooltip":"/proxyServer/localhost.backup.conf","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":59,"column":25},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579504776013,"hash":"7849f5e64512b2a8d062a988d2306dabc28bae38"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/external_dependencies/novnc/utils/README.md: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"README.md","tooltip":"/external_dependencies/novnc/utils/README.md","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":7,"column":24},"end":{"row":7,"column":81},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1578502381815,"hash":"c3b0c80cdd6eedcd51a64e6494dba2695a632957"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/external_dependencies/external/noVNC/utils/README.md: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"README.md","tooltip":"/external_dependencies/external/noVNC/utils/README.md","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579083982175,"hash":"c3b0c80cdd6eedcd51a64e6494dba2695a632957"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/external_dependencies/external/noVNC/utils/launch.sh: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"launch.sh","tooltip":"/external_dependencies/external/noVNC/utils/launch.sh","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":21,"column":18},"end":{"row":21,"column":18},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":0},"timestamp":1579083982175,"hash":"bb261decf413d0e276aa8ae5f1abc4b7ec2f415b"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/proxyServer/localhost.1.conf: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"localhost.1.conf","tooltip":"/proxyServer/localhost.1.conf","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":32.5,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":57,"column":25},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":1,"state":"start","mode":"ace/mode/ini"}},"timestamp":1579605522833,"hash":"9653e67b21efc5c3f6fe24f23f32459482f3a3fc"} -------------------------------------------------------------------------------- /external_dependencies/FreeCAD.sh: -------------------------------------------------------------------------------- 1 | cd external 2 | cd FreeCAD 3 | mkdir ../icons 4 | find . -name "*.svg" -type f -exec cp {} ../icons \; 5 | cd .. 6 | cd Mod 7 | find . -name "*.svg" -type f -exec cp {} ../icons \; 8 | cd .. 9 | 10 | cd icons 11 | for i in $( ls | grep [A-Z] ); do mv $i `echo $i | tr 'A-Z' 'a-z'`; done 12 | 13 | 14 | for file in *'-'* 15 | do 16 | mv "$file" "${file//-/_}" 17 | done 18 | 19 | 20 | cd .. 21 | echo $PWD 22 | rm ./icons/list.txt 23 | ls ./icons/ -1a -I ".." -I "." > ./icons/list.txt 24 | 25 | cd .. 26 | -------------------------------------------------------------------------------- /.c9/metadata/workspace/external_dependencies/novnc/README.md: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"README.md","tooltip":"/external_dependencies/novnc/README.md","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":693.796875,"scrollleft":0,"selection":{"start":{"row":70,"column":38},"end":{"row":70,"column":69},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":51,"state":"start","mode":"ace/mode/markdown"}},"timestamp":1578502381797,"hash":"bf3626882653f053895cbe720fc5a8ce86cf12d3"} -------------------------------------------------------------------------------- /proxyServer/localhost.nonworking.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | listen [::]:80 default_server; 4 | server_name _; 5 | 6 | root /html/; 7 | 8 | location ~ /ip/(/./)(/./) { 9 | proxy_pass http://$1; 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 | 24 | 25 | } 26 | 27 | 28 | 29 | 30 | 31 | 32 | client_max_body_size 50M; -------------------------------------------------------------------------------- /.c9/metadata/workspace/external_dependencies/fileServer/Readme.md: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"Readme.md","tooltip":"/external_dependencies/fileServer/Readme.md","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"scrolltop":313.9453125,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":0},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":22,"state":"allowBlock","mode":"ace/mode/markdown"}},"timestamp":1472498454000,"hash":"0dc748a802a643ebcfb48e24f0c18e04bdc18e87"} -------------------------------------------------------------------------------- /proxyServer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | 3 | ENV HOME /root 4 | 5 | RUN apt update \ 6 | && apt install nginx python3 python3-pip -y \ 7 | && echo "daemon off;" >> /etc/nginx/nginx.conf 8 | RUN pip3 install docker 9 | RUN apt install -y supervisor 10 | ADD html /html 11 | 12 | #ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf 13 | #CMD ["/usr/bin/supervisord"] 14 | 15 | 16 | ADD localhost.conf /etc/nginx/sites-available/default 17 | ADD manager /manager 18 | CMD ls /fcUsers/ 19 | CMD nginx & python3 /manager/sessions.py 20 | EXPOSE 80 21 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | external_dependencies/external/FreeCAD/ 2 | external_dependencies/external/FreeCAD 3 | external_dependencies/external/FreeCAD/* 4 | external_dependencies/external/FreeCAD/* 5 | external_dependencies/external/FreeCAD/*/* 6 | external_dependencies/external/FreeCAD/*/*/* 7 | external_dependencies/external/FreeCAD/*/*/*/* 8 | external_dependencies/external/FreeCAD/*/*/*/*/* 9 | external_dependencies/external/FreeCAD/*/*/*/*/*/* 10 | external_dependencies/external/FreeCAD/*/*/*/*/*/*/* 11 | external_dependencies/external/FreeCAD/*/*/*/*/*/*/*/* 12 | 13 | ./external_dependencies/external/FreeCAD 14 | ./external_dependencies/external/FreeCAD/ -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: mmiscool 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ["https://paypal.me/mmiscool"] 13 | -------------------------------------------------------------------------------- /.c9/metadata/workspace/~/.c9/init.js: -------------------------------------------------------------------------------- 1 | {"changed":false,"filter":false,"title":"init.js","tooltip":"~/.c9/init.js","value":"// You can access plugins via the 'services' global variable\n/*global services, plugin*/\n\n// to load plugins use\n// services.pluginManager.loadPackage([\n// \"https://.github.io//build/package..js\",\n// \"~/.c9/plugins//package.json\",\n// ]);\n","undoManager":{"mark":-1,"position":-1,"stack":[]},"ace":{"folds":[],"customSyntax":"javascript","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":1578873743372} -------------------------------------------------------------------------------- /.c9/project.settings: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "@saveall": true 4 | }, 5 | "language": { 6 | "tern_defs": { 7 | "json()": { 8 | "JSONStream": { 9 | "enabled": false 10 | }, 11 | "browser": { 12 | "enabled": true 13 | }, 14 | "ecma5": { 15 | "enabled": true 16 | }, 17 | "jQuery": { 18 | "enabled": true 19 | } 20 | } 21 | } 22 | }, 23 | "run": { 24 | "configs": { 25 | "@inited": "true", 26 | "json()": {} 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /.c9/metadata/workspace/proxyServer/manager/commandTemplates/startUserSession.sh: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"startUserSession.sh","tooltip":"/proxyServer/manager/commandTemplates/startUserSession.sh","undoManager":{"mark":0,"position":0,"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}]]},"ace":{"folds":[],"scrolltop":0,"scrollleft":0,"selection":{"start":{"row":0,"column":0},"end":{"row":0,"column":114},"isBackwards":true},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":65,"mode":"ace/mode/sh"}},"timestamp":1579540163711,"hash":"941de5b6044311a9a45a98cc9126c7bb90023d0c"} -------------------------------------------------------------------------------- /.c9/metadata/workspace/system.jwmrc: -------------------------------------------------------------------------------- 1 | {"filter":false,"title":"system.jwmrc","tooltip":"/system.jwmrc","undoManager":{"mark":1,"position":1,"stack":[[{"start":{"row":12,"column":0},"end":{"row":12,"column":53},"action":"remove","lines":[" "],"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 | 18 | 40 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 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 | 18 | 40 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 61 | 62 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/arrowdot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 38 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/triangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 40 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 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 | ![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/mmiscool/fc-docker) 6 | [![Gitter](https://badges.gitter.im/FC-Docker/community.svg)](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 | 18 | 40 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 66 | 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 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/arrowopendot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 42 | 51 | 52 | 57 | 58 | 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 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 42 | 44 | 49 | 58 | 59 | 60 | 61 | 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 | 
18 |   
38 |   
40 |   
42 |     
43 |       
45 |         image/svg+xml
46 |         
48 |         
49 |       
50 |     
51 |   
52 |   
56 |     
59 |       
75 |       
83 |     
84 |   
85 | 
86 | 


--------------------------------------------------------------------------------
/external_dependencies/external/icons/transparent.svg:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 
19 |   
21 |   
53 |     
64 |   
65 |   
67 |     
68 |       
70 |         image/svg+xml
71 |         
73 |         
74 |         
75 |           
76 |             Pablo Gil
77 |           
78 |         
79 |         
80 |           
81 |             SVG
82 |             template
83 |           
84 |         
85 |       
86 |     
87 |   
88 |   
93 | 
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 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 47 | 56 | 57 | 59 | 66 | 69 | 72 | 73 | 74 | 75 | 80 | 85 | 90 | 95 | 96 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/arrowtick.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 34 | 43 | 52 | 53 | 63 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/hexagon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 41 | 46 | 51 | 54 | 59 | 64 | 69 | 74 | 79 | 80 | 82 | 84 | 85 | 87 | image/svg+xml 88 | 90 | 91 | 92 | 93 | 94 | 99 | 100 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_vline_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_darker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_lighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_darker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_lighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_darker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_lighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_darker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_disabled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_lighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_disabled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/up_arrow_disabled_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_vline_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_disabled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/down_arrow_disabled_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/left_arrow_disabled_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_disabled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/right_arrow_disabled_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_end_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/inspection.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 40 | 42 | 44 | 45 | 47 | image/svg+xml 48 | 50 | 51 | 52 | 53 | 54 | 59 | 71 | 84 | 89 | 90 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_end_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 69 | 71 | 72 | 74 | image/svg+xml 75 | 77 | 78 | 79 | 80 | Pablo Gil 81 | 82 | 83 | 84 | 85 | SVG 86 | template 87 | 88 | 89 | 90 | 91 | 92 | 96 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/aluminium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/plastic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 29 | 30 | 32 | 33 | 35 | 36 | 38 | 39 | 41 | 42 | 44 | 45 | 47 | 48 | 50 | 51 | 53 | 54 | 56 | 57 | 59 | 60 | 62 | 63 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/more_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/more_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/checkbox_indeterminate_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 98 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_more_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 98 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/checkbox_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /external_dependencies/external/icons/branch_more_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 53 | 64 | 65 | 67 | 68 | 70 | image/svg+xml 71 | 73 | 74 | 75 | 76 | Pablo Gil 77 | 78 | 79 | 80 | 81 | SVG 82 | template 83 | 84 | 85 | 86 | 87 | 88 | 93 | 99 | 105 | 106 | 107 | --------------------------------------------------------------------------------