├── coder-base ├── apps │ └── .gitignore ├── tmp │ └── .placeholder ├── views │ ├── index.html │ ├── 404.html │ └── apps │ │ └── .gitignore ├── certs │ └── .placeholder ├── static │ ├── apps │ │ └── .gitignore │ └── common │ │ ├── ace-min │ │ ├── mode-text.js │ │ ├── theme-textmate.js │ │ ├── ext-static_highlight.js │ │ ├── LICENSE │ │ ├── mode-sql.js │ │ ├── mode-textile.js │ │ ├── theme-eclipse.js │ │ ├── theme-xcode.js │ │ ├── theme-clouds.js │ │ ├── mode-diff.js │ │ ├── theme-vibrant_ink.js │ │ ├── theme-dawn.js │ │ ├── theme-github.js │ │ ├── theme-merbivore.js │ │ ├── theme-monokai.js │ │ ├── theme-idle_fingers.js │ │ ├── theme-kr.js │ │ ├── theme-cobalt.js │ │ ├── theme-solarized_dark.js │ │ ├── mode-c9search.js │ │ ├── theme-solarized_light.js │ │ ├── theme-twilight.js │ │ ├── theme-clouds_midnight.js │ │ ├── theme-merbivore_soft.js │ │ ├── theme-tomorrow.js │ │ ├── theme-chrome.js │ │ ├── theme-coder.js │ │ ├── theme-pastel_on_dark.js │ │ ├── theme-crimson_editor.js │ │ ├── mode-sh.js │ │ ├── theme-tomorrow_night.js │ │ ├── theme-mono_industrial.js │ │ ├── theme-dreamweaver.js │ │ ├── theme-tomorrow_night_blue.js │ │ ├── mode-latex.js │ │ ├── theme-tomorrow_night_bright.js │ │ └── theme-tomorrow_night_eighties.js │ │ └── media │ │ └── coder_icons.png ├── device.json ├── device.json.reset ├── package.json ├── config.js ├── config.js.default └── config.js.localhost ├── findcoder-appengine ├── api │ └── __init__.py ├── app.yaml ├── views │ └── index.html ├── index.py └── static │ └── assets │ ├── js │ └── index.js │ └── css │ └── index.css ├── raspbian-addons ├── etc │ ├── hostname │ ├── modprobe.d │ │ ├── 8192cu.conf │ │ └── raspi-blacklist.conf │ ├── network │ │ ├── if-pre-up.d │ │ │ └── iptables │ │ ├── interfaces │ │ └── interfaces.reset │ ├── default │ │ ├── coder-daemon │ │ └── isc-dhcp-server │ ├── hosts │ ├── avahi │ │ ├── services │ │ │ └── coder.service │ │ └── avahi-daemon.conf │ ├── modules │ ├── udev │ │ └── rules.d │ │ │ └── 10-gpio.rules │ ├── wpa_supplicant │ │ ├── wpa_supplicant.conf │ │ └── wpa_supplicant.conf.reset │ ├── iptables.up.rules │ ├── init.d │ │ ├── pull-net-interfaces │ │ ├── pull-wpa-supplicant │ │ ├── pull-hostname │ │ ├── generate-ssh-hostkeys │ │ ├── pull-coder-reset │ │ └── isc-dhcp-server │ └── sudoers ├── boot │ ├── coder_settings │ │ ├── hostname.txt │ │ ├── hosts.txt │ │ └── reset_files │ │ │ ├── reset.txt │ │ │ ├── net_interfaces.txt │ │ │ └── wpa_supplicant.txt │ └── config.txt └── home │ └── coder │ └── coder-dist │ └── coder-base │ ├── sudo_scripts │ ├── reboot │ ├── setpipass │ ├── wpa_cli_scan │ ├── wpa_cli_apscan │ └── wpa_cli_scanresults │ └── package.json ├── coder-apps ├── common │ ├── coderlib │ │ ├── views │ │ │ └── index.html │ │ ├── static │ │ │ └── media │ │ │ │ └── .gitignore │ │ └── app │ │ │ └── meta.json │ ├── auth │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ └── css │ │ │ │ └── index.css │ │ └── app │ │ │ └── meta.json │ ├── coder │ │ ├── static │ │ │ └── media │ │ │ │ ├── .gitignore │ │ │ │ ├── myapps_tip.png │ │ │ │ ├── newapp_tip.png │ │ │ │ └── settings_tip.png │ │ └── app │ │ │ └── meta.json │ ├── editor │ │ ├── static │ │ │ └── media │ │ │ │ └── .gitignore │ │ └── app │ │ │ └── meta.json │ ├── game2d │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ └── css │ │ │ │ └── index.css │ │ ├── app │ │ │ ├── meta.json │ │ │ └── app.js │ │ └── views │ │ │ └── index.html │ ├── boilerplate │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ ├── css │ │ │ │ └── index.css │ │ │ └── js │ │ │ │ └── index.js │ │ ├── app │ │ │ ├── meta.json │ │ │ └── app.js │ │ └── views │ │ │ └── index.html │ ├── eyeball │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ ├── css │ │ │ │ └── index.css │ │ │ └── js │ │ │ │ └── index.js │ │ ├── app │ │ │ ├── meta.json │ │ │ └── app.js │ │ └── views │ │ │ └── index.html │ ├── hello_coder │ │ ├── static │ │ │ └── media │ │ │ │ └── .gitignore │ │ ├── app │ │ │ ├── meta.json │ │ │ └── app.js │ │ └── views │ │ │ └── index.html │ └── space_rocks_ │ │ ├── static │ │ └── media │ │ │ ├── .gitignore │ │ │ ├── thrust.mp3 │ │ │ ├── thrust.ogg │ │ │ ├── thrust.wav │ │ │ ├── die_ship.mp3 │ │ │ ├── die_ship.ogg │ │ │ ├── die_ship.wav │ │ │ ├── die_spacerock.mp3 │ │ │ ├── die_spacerock.ogg │ │ │ ├── die_spacerock.wav │ │ │ ├── spacerocks_shoot.mp3 │ │ │ ├── spacerocks_shoot.ogg │ │ │ └── spacerocks_shoot.wav │ │ ├── app │ │ ├── meta.json │ │ └── app.js │ │ └── views │ │ └── index.html ├── pi │ ├── auth │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ └── css │ │ │ │ └── index.css │ │ └── app │ │ │ └── meta.json │ ├── coder │ │ ├── static │ │ │ └── media │ │ │ │ ├── .gitignore │ │ │ │ ├── myapps_tip.png │ │ │ │ ├── newapp_tip.png │ │ │ │ └── settings_tip.png │ │ └── app │ │ │ └── meta.json │ └── wifi │ │ ├── static │ │ └── media │ │ │ └── .gitignore │ │ ├── app │ │ └── meta.json │ │ └── views │ │ └── index.html ├── tests │ ├── gpio_test │ │ ├── static │ │ │ ├── media │ │ │ │ ├── .gitignore │ │ │ │ └── wiring_diagram.jpg │ │ │ └── css │ │ │ │ └── index.css │ │ ├── app │ │ │ └── meta.json │ │ └── views │ │ │ └── index.html │ ├── relay_test │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ └── css │ │ │ │ └── index.css │ │ ├── app │ │ │ └── meta.json │ │ └── views │ │ │ └── index.html │ ├── socket_test │ │ ├── static │ │ │ ├── media │ │ │ │ └── .gitignore │ │ │ ├── css │ │ │ │ └── index.css │ │ │ └── js │ │ │ │ └── index.js │ │ ├── app │ │ │ ├── meta.json │ │ │ └── app.js │ │ └── views │ │ │ └── index.html │ └── spi_test │ │ ├── static │ │ ├── media │ │ │ └── .gitignore │ │ ├── css │ │ │ └── index.css │ │ └── js │ │ │ └── index.js │ │ ├── app │ │ └── meta.json │ │ └── views │ │ └── index.html ├── install_pi.sh ├── install_common.sh ├── install_app.sh └── archive_app.sh ├── installer ├── macosx │ ├── codersd.icns │ ├── installerlogo.gif │ ├── clonesdcard.txt │ ├── buildcmd.txt │ └── setup.py └── stock_raspbian │ ├── scripts │ ├── 00_latest_updates.sh │ ├── coder_system_setup.sh │ ├── grant_coder_sudo.sh │ ├── README │ ├── install_all_coder.sh │ ├── 02_coder_dependencies.sh │ ├── clean_device.sh │ └── 01_headless_basics.sh │ └── coder_bootstrap_install.sh ├── .gitignore ├── README.md └── INSTALL /coder-base/apps/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/tmp/.placeholder: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/views/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/certs/.placeholder: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/static/apps/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/views/404.html: -------------------------------------------------------------------------------- 1 | 404 2 | -------------------------------------------------------------------------------- /coder-base/views/apps/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /findcoder-appengine/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /raspbian-addons/etc/hostname: -------------------------------------------------------------------------------- 1 | coder 2 | -------------------------------------------------------------------------------- /coder-apps/common/coderlib/views/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/pi/auth/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/pi/coder/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/pi/wifi/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/auth/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/coder/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/editor/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/game2d/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-text.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/boilerplate/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/coderlib/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/eyeball/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/hello_coder/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/tests/gpio_test/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/tests/relay_test/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/tests/spi_test/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-textmate.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /raspbian-addons/boot/coder_settings/hostname.txt: -------------------------------------------------------------------------------- 1 | coder 2 | -------------------------------------------------------------------------------- /coder-apps/common/game2d/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | .pagecontent { 3 | padding: 24px; 4 | } -------------------------------------------------------------------------------- /coder-apps/common/boilerplate/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | .pagecontent { 3 | padding: 24px; 4 | } -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | .pagecontent { 3 | padding: 24px; 4 | } -------------------------------------------------------------------------------- /raspbian-addons/etc/modprobe.d/8192cu.conf: -------------------------------------------------------------------------------- 1 | options 8192cu rtw_power_mgnt=0 rtw_enusbss=0 rtw_ips_mode=1 2 | -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts/reboot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /sbin/shutdown -r now 3 | -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts/setpipass: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /usr/bin/passwd pi 3 | -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts/wpa_cli_scan: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /sbin/wpa_cli scan 3 | -------------------------------------------------------------------------------- /installer/macosx/codersd.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/installer/macosx/codersd.icns -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts/wpa_cli_apscan: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /sbin/wpa_cli ap_scan 2 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.img 3 | *.pyc 4 | coder-base/certs 5 | coder-base/device.json 6 | 7 | .DS_Store 8 | Thumbs.db 9 | -------------------------------------------------------------------------------- /installer/macosx/installerlogo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/installer/macosx/installerlogo.gif -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts/wpa_cli_scanresults: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /sbin/wpa_cli scan_results 3 | -------------------------------------------------------------------------------- /raspbian-addons/etc/network/if-pre-up.d/iptables: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #restore iptables on boot 3 | 4 | iptables-restore < /etc/iptables.up.rules 5 | -------------------------------------------------------------------------------- /coder-apps/common/boilerplate/static/js/index.js: -------------------------------------------------------------------------------- 1 | 2 | $(document).ready( function() { 3 | 4 | //This code will run after your page loads 5 | 6 | }); -------------------------------------------------------------------------------- /coder-apps/pi/coder/static/media/myapps_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/pi/coder/static/media/myapps_tip.png -------------------------------------------------------------------------------- /coder-apps/pi/coder/static/media/newapp_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/pi/coder/static/media/newapp_tip.png -------------------------------------------------------------------------------- /coder-base/static/common/media/coder_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-base/static/common/media/coder_icons.png -------------------------------------------------------------------------------- /coder-apps/pi/coder/static/media/settings_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/pi/coder/static/media/settings_tip.png -------------------------------------------------------------------------------- /coder-apps/common/coder/static/media/myapps_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/coder/static/media/myapps_tip.png -------------------------------------------------------------------------------- /coder-apps/common/coder/static/media/newapp_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/coder/static/media/newapp_tip.png -------------------------------------------------------------------------------- /coder-apps/common/coder/static/media/settings_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/coder/static/media/settings_tip.png -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/thrust.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/thrust.mp3 -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/thrust.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/thrust.ogg -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/thrust.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/thrust.wav -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_ship.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_ship.mp3 -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_ship.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_ship.ogg -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_ship.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_ship.wav -------------------------------------------------------------------------------- /coder-apps/tests/gpio_test/static/media/wiring_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/tests/gpio_test/static/media/wiring_diagram.jpg -------------------------------------------------------------------------------- /coder-base/device.json: -------------------------------------------------------------------------------- 1 | { 2 | "password_hash": "", 3 | "device_name": "Coder", 4 | "hostname": "coder", 5 | "coder_owner": "", 6 | "coder_color": "" 7 | } 8 | -------------------------------------------------------------------------------- /raspbian-addons/etc/modprobe.d/raspi-blacklist.conf: -------------------------------------------------------------------------------- 1 | # blacklist spi and i2c by default (many users don't need them) 2 | 3 | #blacklist spi-bcm2708 4 | #blacklist i2c-bcm2708 5 | -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_spacerock.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_spacerock.mp3 -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_spacerock.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_spacerock.ogg -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/die_spacerock.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/die_spacerock.wav -------------------------------------------------------------------------------- /coder-base/device.json.reset: -------------------------------------------------------------------------------- 1 | { 2 | "password_hash": "", 3 | "device_name": "Coder", 4 | "hostname": "coder", 5 | "coder_owner": "", 6 | "coder_color": "" 7 | } 8 | -------------------------------------------------------------------------------- /installer/macosx/clonesdcard.txt: -------------------------------------------------------------------------------- 1 | 512byte blocks 4766000 2 | * 512 / 1024 / 1024 = ~2328M 3 | Round up to 2400 1M blocks 4 | 5 | dd bs=1m if=/dev/rdisk2 of=raspi.img count=2400 6 | -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/spacerocks_shoot.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/spacerocks_shoot.mp3 -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/spacerocks_shoot.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/spacerocks_shoot.ogg -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/static/media/spacerocks_shoot.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/googlecreativelab/coder/HEAD/coder-apps/common/space_rocks_/static/media/spacerocks_shoot.wav -------------------------------------------------------------------------------- /coder-apps/pi/auth/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2013-08-18", 4 | "color": "#1abc9c", 5 | "author": "Jason Striegel", 6 | "name": "Auth", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/pi/wifi/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2013-06-11", 4 | "color": "#1abc9c", 5 | "author": "Jason Striegel", 6 | "name": "Wifi", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/tests/gpio_test/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-11-30", 3 | "modified": "2014-01-14", 4 | "color": "#2ecc71", 5 | "author": "", 6 | "name": "GPIO Test", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /coder-apps/tests/spi_test/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-11-30", 3 | "modified": "2014-04-02", 4 | "color": "#2ecc71", 5 | "author": "", 6 | "name": "SPI Test", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /coder-apps/common/auth/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2013-08-18", 4 | "color": "#1abc9c", 5 | "author": "Jason Striegel", 6 | "name": "Auth", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/common/coder/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2013-07-23", 4 | "color": "#bdc3c7", 5 | "author": "Jason Striegel", 6 | "name": "Coder", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/pi/coder/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2014-01-07", 4 | "color": "#bdc3c7", 5 | "author": "Jason Striegel", 6 | "name": "Coder", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/tests/relay_test/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-11-30", 3 | "modified": "2014-01-14", 4 | "color": "#2ecc71", 5 | "author": "", 6 | "name": "Relay Test", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-11-30", 3 | "modified": "2013-12-03", 4 | "color": "#2ecc71", 5 | "author": "", 6 | "name": "Socket Test", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /coder-apps/common/editor/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2014-01-07", 4 | "color": "#80d4ea", 5 | "author": "Jason Striegel", 6 | "name": "Editor", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/common/eyeball/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-15", 3 | "modified": "2014-01-14", 4 | "color": "#f39c12", 5 | "author": "Justin Windle", 6 | "name": "Eyeball", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /installer/macosx/buildcmd.txt: -------------------------------------------------------------------------------- 1 | #requires py2app and python. 2 | #note that this doesn't work properly with the osx system build of python 3 | 4 | /Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py py2app 5 | -------------------------------------------------------------------------------- /coder-apps/common/coderlib/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-05", 3 | "modified": "2014-01-14", 4 | "color": "#3e3e3e", 5 | "author": "Jason Striegel", 6 | "name": "CoderLib", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/common/game2d/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-12", 3 | "modified": "2013-03-12", 4 | "color": "#3e3e3e", 5 | "author": "Justin Windle", 6 | "name": "Game2D", 7 | "hidden": true 8 | } 9 | -------------------------------------------------------------------------------- /raspbian-addons/etc/default/coder-daemon: -------------------------------------------------------------------------------- 1 | # The init.d script will only run if this variable non-empty. 2 | CODER_USER="coder" # !!!should not be root!!!! 3 | 4 | # Should we run at startup? 5 | RUN_AT_STARTUP="YES" 6 | -------------------------------------------------------------------------------- /coder-apps/common/boilerplate/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-12", 3 | "modified": "2013-03-14", 4 | "color": "#3e3e3e", 5 | "author": "Jason Striegel", 6 | "name": "Boilerplate", 7 | "hidden": true 8 | } -------------------------------------------------------------------------------- /coder-apps/common/hello_coder/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-05-08", 3 | "modified": "2014-01-14", 4 | "color": "#d977d4", 5 | "author": "Jason Striegel", 6 | "name": "Hello Coder", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/app/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "created": "2013-03-12", 3 | "modified": "2013-06-26", 4 | "color": "#3498d8", 5 | "author": "Justin Windle", 6 | "name": "Space Rocks!", 7 | "hidden": false 8 | } -------------------------------------------------------------------------------- /raspbian-addons/etc/hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 localhost 2 | ::1 localhost ip6-localhost ip6-loopback 3 | fe00::0 ip6-localnet 4 | ff00::0 ip6-mcastprefix 5 | ff02::1 ip6-allnodes 6 | ff02::2 ip6-allrouters 7 | 8 | 127.0.1.1 coder 9 | -------------------------------------------------------------------------------- /raspbian-addons/boot/coder_settings/hosts.txt: -------------------------------------------------------------------------------- 1 | 127.0.0.1 localhost 2 | ::1 localhost ip6-localhost ip6-loopback 3 | fe00::0 ip6-localnet 4 | ff00::0 ip6-mcastprefix 5 | ff02::1 ip6-allnodes 6 | ff02::2 ip6-allrouters 7 | 8 | 127.0.1.1 coder 9 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/00_latest_updates.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "### Fetch all the latest Pi updates." 4 | apt-get -y update 5 | apt-get -y dist-upgrade 6 | echo "" 7 | 8 | 9 | echo "### Update the kernel and firmware to latest versions." 10 | rpi-update 11 | echo "" 12 | 13 | -------------------------------------------------------------------------------- /findcoder-appengine/app.yaml: -------------------------------------------------------------------------------- 1 | application: gweb-findcoder-dev 2 | version: 1 3 | runtime: python27 4 | api_version: 1 5 | threadsafe: true 6 | 7 | handlers: 8 | - url: / 9 | script: index.app 10 | - url: /api/coder/.* 11 | script: api.coder.app 12 | 13 | - url: /assets/ 14 | static_dir: static/assets 15 | 16 | -------------------------------------------------------------------------------- /raspbian-addons/boot/coder_settings/reset_files/reset.txt: -------------------------------------------------------------------------------- 1 | # To reset your coder password, make a copy of 2 | # this file and place it in /coder_settings/reset.txt 3 | 4 | # On the next boot, your coder will reset its password 5 | # and start up with the configuration screen. None of your 6 | # programs will be removed. 7 | 8 | 9 | -------------------------------------------------------------------------------- /raspbian-addons/etc/avahi/services/coder.service: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Coder Server at %h.local 7 | 8 | 9 | _http._tcp 10 | 80 11 | 12 | 13 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/coder_system_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "### Setting up the coder account." 4 | adduser --system --group coder 5 | echo "" 6 | 7 | 8 | echo "### Downloading the Coder git repo to /home/coder/coder-dist." 9 | su -s/bin/bash coder <<'EOF' 10 | cd /home/coder 11 | git clone https://github.com/googlecreativelab/coder.git coder-dist 12 | EOF 13 | echo "" 14 | 15 | 16 | -------------------------------------------------------------------------------- /raspbian-addons/etc/modules: -------------------------------------------------------------------------------- 1 | # /etc/modules: kernel modules to load at boot time. 2 | # 3 | # This file contains the names of kernel modules that should be loaded 4 | # at boot time, one per line. Lines beginning with "#" are ignored. 5 | # Parameters can be specified after the module name. 6 | 7 | # Sound 8 | snd-bcm2835 9 | 10 | # SPI 11 | spi-bcm2708 12 | spi-dev 13 | 14 | # I2C 15 | i2c-bcm2708 16 | i2c-dev 17 | 18 | 19 | -------------------------------------------------------------------------------- /raspbian-addons/etc/udev/rules.d/10-gpio.rules: -------------------------------------------------------------------------------- 1 | # Give the GPIO group access to /sys/class/gpio* 2 | 3 | SUBSYSTEM=="gpio", KERNEL!="gpio[0-9]*", ACTION=="add", PROGRAM="/bin/bash -c 'chown -R root:gpio $sys/class/gpio ; chmod 220 $sys/class/gpio/{export,unexport}'" 4 | 5 | SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="/bin/bash -c 'chmod -f 755 $sys$devpath ; chmod -f 660 $sys$devpath/{active_low,direction,edge,uevent,value} ; chown -Rf root:gpio $sys/$devpath'" 6 | -------------------------------------------------------------------------------- /raspbian-addons/etc/wpa_supplicant/wpa_supplicant.conf: -------------------------------------------------------------------------------- 1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 2 | update_config=1 3 | 4 | 5 | 6 | network={ 7 | ssid="" 8 | scan_ssid=1 9 | key_mgmt=NONE 10 | auth_alg=OPEN 11 | priority=2 12 | disabled=1 13 | id_str="anyopen" 14 | } 15 | 16 | network={ 17 | ssid="CoderConfig" 18 | mode=1 19 | key_mgmt=NONE 20 | id_str="staticadhoc" 21 | } 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /coder-base/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coder-base", 3 | "description": "A simple way to make cool web things", 4 | "version": "0.0.7", 5 | "private": true, 6 | "dependencies": { 7 | "express": "3.1.0", 8 | "redis": "0.8.2", 9 | "mustache": "0.7.2", 10 | "consolidate": "0.8.0", 11 | "socket.io": "0.9.13", 12 | "express-params": "0.0.3", 13 | "bcrypt-nodejs": "*", 14 | "connect": "2.14.3", 15 | "cookie": "0.1.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /installer/macosx/setup.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a setup.py script generated by py2applet 3 | 4 | Usage: 5 | python setup.py py2app 6 | """ 7 | 8 | from setuptools import setup 9 | 10 | APP = ['CoderSetup.py'] 11 | DATA_FILES = ['formatsdcard.py', 'installerlogo.gif'] 12 | OPTIONS = { 13 | 'argv_emulation': False, 14 | 'iconfile':'codersd.icns' 15 | } 16 | 17 | setup( 18 | app=APP, 19 | data_files=DATA_FILES, 20 | options={'py2app': OPTIONS}, 21 | setup_requires=['py2app'], 22 | ) 23 | -------------------------------------------------------------------------------- /coder-apps/install_pi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## 4 | ## Copies the common platform and additional pi version apps to 5 | ## the coder-base working directory. 6 | ## 7 | ## sh install_common base_path 8 | ## 9 | ## Eg. 10 | ## sh install_common ../coder-base/ 11 | 12 | if [ $# != 1 ] 13 | then 14 | echo -e "\nUse:\ninstall_common coderbase\n" 15 | exit 16 | fi 17 | 18 | base=$1 19 | 20 | ./install_common.sh $base 21 | 22 | ./install_app.sh auth $base ./pi/ 23 | ./install_app.sh coder $base ./pi/ 24 | ./install_app.sh wifi $base ./pi/ 25 | 26 | -------------------------------------------------------------------------------- /raspbian-addons/home/coder/coder-dist/coder-base/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coder-base", 3 | "description": "A simple way to make cool web things with Raspberry Pi", 4 | "version": "0.0.7", 5 | "private": true, 6 | "dependencies": { 7 | "express": "3.1.0", 8 | "redis": "0.8.2", 9 | "mustache": "0.7.2", 10 | "consolidate": "0.8.0", 11 | "socket.io": "0.9.13", 12 | "express-params": "0.0.3", 13 | "bcrypt": "0.7.4", 14 | "connect": "2.14.3", 15 | "cookie": "0.1.1", 16 | "gpio": "git://github.com/jmstriegel/GpiO.git", 17 | "i2c": "*", 18 | "pi-spi": "*" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/grant_coder_sudo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Allows the coder user to run a limited number of scripts as the root user. 4 | # This is used for changing the pi password and wireless settings, and for 5 | # rebooting the device from the Coder UI. 6 | 7 | echo "### Granting sudo access to coder for scripts in /home/coder/coder-dist/coder-base/sudo_scripts/" 8 | bash -c "echo 'coder ALL= NOPASSWD: /home/coder/coder-dist/coder-base/sudo_scripts/*' >>/etc/sudoers" 9 | echo "### A line has been added to /etc/sudoers:" 10 | echo "coder ALL= NOPASSWD: /home/coder/coder-dist/coder-base/sudo_scripts/*" 11 | echo "" 12 | -------------------------------------------------------------------------------- /raspbian-addons/etc/iptables.up.rules: -------------------------------------------------------------------------------- 1 | # Generated by iptables-save v1.4.14 on Mon Jul 8 15:57:20 2013 2 | *nat 3 | :PREROUTING ACCEPT [99:5850] 4 | :INPUT ACCEPT [113:6746] 5 | :OUTPUT ACCEPT [0:0] 6 | :POSTROUTING ACCEPT [0:0] 7 | -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8081 8 | -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 9 | COMMIT 10 | # Completed on Mon Jul 8 15:57:20 2013 11 | # Generated by iptables-save v1.4.14 on Mon Jul 8 15:57:20 2013 12 | *filter 13 | :INPUT ACCEPT [1237:98511] 14 | :FORWARD ACCEPT [0:0] 15 | :OUTPUT ACCEPT [672:465045] 16 | COMMIT 17 | # Completed on Mon Jul 8 15:57:20 2013 18 | -------------------------------------------------------------------------------- /raspbian-addons/etc/default/isc-dhcp-server: -------------------------------------------------------------------------------- 1 | # Defaults for isc-dhcp-server initscript 2 | # sourced by /etc/init.d/isc-dhcp-server 3 | # installed at /etc/default/isc-dhcp-server by the maintainer scripts 4 | 5 | # 6 | # This is a POSIX shell fragment 7 | # 8 | 9 | # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). 10 | #DHCPD_CONF=/etc/dhcp/dhcpd.conf 11 | 12 | # Path to dhcpd's PID file (default: /var/run/dhcpd.pid). 13 | #DHCPD_PID=/var/run/dhcpd.pid 14 | 15 | # Additional options to start dhcpd with. 16 | # Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead 17 | #OPTIONS="" 18 | 19 | # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? 20 | # Separate multiple interfaces with spaces, e.g. "eth0 eth1". 21 | INTERFACES="wlan0" 22 | -------------------------------------------------------------------------------- /coder-apps/install_common.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## 4 | ## Copies the common platform apps to 5 | ## the coder-base working directory. 6 | ## 7 | ## sh install_common base_path 8 | ## 9 | ## Eg. 10 | ## sh install_common ../coder-base/ 11 | 12 | if [ $# != 1 ] 13 | then 14 | echo -e "\nUse:\ninstall_common coderbase\n" 15 | exit 16 | fi 17 | 18 | base=$1 19 | 20 | ./install_app.sh auth $base ./common/ 21 | ./install_app.sh boilerplate $base ./common/ 22 | ./install_app.sh coder $base ./common/ 23 | ./install_app.sh coderlib $base ./common/ 24 | ./install_app.sh editor $base ./common/ 25 | ./install_app.sh eyeball $base ./common/ 26 | ./install_app.sh game2d $base ./common/ 27 | ./install_app.sh hello_coder $base ./common/ 28 | ./install_app.sh space_rocks_ $base ./common/ 29 | 30 | -------------------------------------------------------------------------------- /raspbian-addons/etc/init.d/pull-net-interfaces: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ### BEGIN INIT INFO 4 | # Provides: pull-net-interfaces 5 | # Required-Start: 6 | # Required-Stop: 7 | # Should-Start: 8 | # Should-Stop: 9 | # Default-Start: S 10 | # Default-Stop: 11 | # Description: import /etc/network/interfaces from boot partition if it exists 12 | ### END INIT INFO 13 | 14 | prog=$(basename $0) 15 | logger="logger -t $prog" 16 | 17 | source_conf="/boot/coder_settings/net_interfaces.txt" 18 | dest_conf="/etc/network/interfaces" 19 | 20 | # copy from source to dest if source exists 21 | if [ -f $source_conf ]; then 22 | echo "-----IMPORTING NET INTERFACES FROM SD-----" | $logger 23 | cp $source_conf $dest_conf 24 | chown root:root $dest_conf 25 | chmod 664 $dest_conf 26 | rm -f $source_conf 27 | fi 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /raspbian-addons/etc/network/interfaces: -------------------------------------------------------------------------------- 1 | auto lo 2 | 3 | iface lo inet loopback 4 | 5 | ### 6 | # Set up ethernet to use dhcp 7 | ### 8 | iface eth0 inet dhcp 9 | 10 | ### 11 | # Or comment the above and uncomment these 12 | # lines for a static IP address 13 | ### 14 | #auto eth0 15 | #iface eth0 inet static 16 | # address 192.168.1.10 17 | # netmask 255.255.255.0 18 | # network 192.168.1.0 19 | # broadcast 192.168.1.255 20 | # gateway 192.168.1.1 21 | # 22 | 23 | 24 | allow-hotplug wlan0 25 | iface wlan0 inet manual 26 | wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf 27 | iface default inet dhcp 28 | 29 | iface staticadhoc inet static 30 | address 192.168.0.1 31 | netmask 255.255.255.0 32 | network 192.168.0.0 33 | broadcast 192.168.0.255 34 | post-up /etc/init.d/isc-dhcp-server start 35 | pre-down /etc/init.d/isc-dhcp-server stop 36 | 37 | -------------------------------------------------------------------------------- /raspbian-addons/etc/init.d/pull-wpa-supplicant: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ### BEGIN INIT INFO 4 | # Provides: pull-wpa-supplicant 5 | # Required-Start: 6 | # Required-Stop: 7 | # Should-Start: 8 | # Should-Stop: 9 | # Default-Start: S 10 | # Default-Stop: 11 | # Description: import wpa-supplicant.conf from boot partition if it exists 12 | ### END INIT INFO 13 | 14 | prog=$(basename $0) 15 | logger="logger -t $prog" 16 | 17 | source_conf="/boot/coder_settings/wpa_supplicant.txt" 18 | dest_conf="/etc/wpa_supplicant/wpa_supplicant.conf" 19 | 20 | # copy from source to dest if source exists 21 | if [ -f $source_conf ]; then 22 | echo "-----IMPORTING WPA_SUPPLICANT.CONF FROM SD-----" | $logger 23 | cp $source_conf $dest_conf 24 | chown root:wpaconfig $dest_conf 25 | chmod 660 $dest_conf 26 | rm -f $source_conf 27 | fi 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /raspbian-addons/etc/network/interfaces.reset: -------------------------------------------------------------------------------- 1 | auto lo 2 | 3 | iface lo inet loopback 4 | 5 | ### 6 | # Set up ethernet to use dhcp 7 | ### 8 | iface eth0 inet dhcp 9 | 10 | ### 11 | # Or comment the above and uncomment these 12 | # lines for a static IP address 13 | ### 14 | #auto eth0 15 | #iface eth0 inet static 16 | # address 192.168.1.10 17 | # netmask 255.255.255.0 18 | # network 192.168.1.0 19 | # broadcast 192.168.1.255 20 | # gateway 192.168.1.1 21 | # 22 | 23 | 24 | allow-hotplug wlan0 25 | iface wlan0 inet manual 26 | wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf 27 | iface default inet dhcp 28 | 29 | iface staticadhoc inet static 30 | address 192.168.0.1 31 | netmask 255.255.255.0 32 | network 192.168.0.0 33 | broadcast 192.168.0.255 34 | post-up /etc/init.d/isc-dhcp-server start 35 | pre-down /etc/init.d/isc-dhcp-server stop 36 | 37 | -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/static/js/index.js: -------------------------------------------------------------------------------- 1 | 2 | $(document).ready( function() { 3 | 4 | //This code will run after your page loads 5 | Coder.socketConnection.init(function(){ 6 | 7 | addOutputMessage( "Connected with ID: " + Coder.socketConnection.socketID ); 8 | 9 | 10 | Coder.socketConnection.sendData( 'connect', {'name':'testing'} ); 11 | 12 | Coder.socketConnection.addListener( 'message', function( d ){ 13 | console.log("message from: " + d.name + " : " + d.message); 14 | }); 15 | }); 16 | 17 | addOutputMessage( "Connecting... see the debug console for log messages." ); 18 | 19 | }); 20 | 21 | var addOutputMessage = function( text ) { 22 | var $output = $("#output"); 23 | $output.prepend( $("

").text( text ) ); 24 | console.log( text ); 25 | } 26 | 27 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/README: -------------------------------------------------------------------------------- 1 | These scripts are intended to assist with deploying the latest 2 | version of Coder on a clean, stock Raspbian system. 3 | 4 | BEFORE PROCEEDING: 5 | You should have a coder user, group, and the coder environment 6 | installed in /home/coder/coder-dist 7 | 8 | If you have not done this already, run the following commands 9 | first. Otherwise, proceed to the next step. 10 | 11 | sudo ./coder_system_setup.sh 12 | 13 | 14 | 15 | INSTALLING CODER: 16 | To update Raspbian with all the necessary changes for Coder 17 | to run, execute the following: 18 | 19 | cd /home/coder/coder-dist/installer/stock_raspbian/scripts 20 | sudo ./install_all_coder.sh 21 | 22 | This will update to the latest version of Raspbain, install 23 | the necessary dependencies, and make updates to the system 24 | to support headless booting and mDNS discovery. 25 | 26 | -------------------------------------------------------------------------------- /raspbian-addons/boot/coder_settings/reset_files/net_interfaces.txt: -------------------------------------------------------------------------------- 1 | auto lo 2 | 3 | iface lo inet loopback 4 | 5 | ### 6 | # Set up ethernet to use dhcp 7 | ### 8 | iface eth0 inet dhcp 9 | 10 | ### 11 | # Or comment the above and uncomment these 12 | # lines for a static IP address 13 | ### 14 | #auto eth0 15 | #iface eth0 inet static 16 | # address 192.168.1.10 17 | # netmask 255.255.255.0 18 | # network 192.168.1.0 19 | # broadcast 192.168.1.255 20 | # gateway 192.168.1.1 21 | # 22 | 23 | 24 | allow-hotplug wlan0 25 | iface wlan0 inet manual 26 | wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf 27 | iface default inet dhcp 28 | 29 | iface staticadhoc inet static 30 | address 192.168.0.1 31 | netmask 255.255.255.0 32 | network 192.168.0.0 33 | broadcast 192.168.0.255 34 | post-up /etc/init.d/isc-dhcp-server start 35 | pre-down /etc/init.d/isc-dhcp-server stop 36 | 37 | -------------------------------------------------------------------------------- /raspbian-addons/etc/sudoers: -------------------------------------------------------------------------------- 1 | # 2 | # This file MUST be edited with the 'visudo' command as root. 3 | # 4 | # Please consider adding local content in /etc/sudoers.d/ instead of 5 | # directly modifying this file. 6 | # 7 | # See the man page for details on how to write a sudoers file. 8 | # 9 | Defaults env_reset 10 | Defaults mail_badpass 11 | Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 12 | 13 | # Host alias specification 14 | 15 | # User alias specification 16 | 17 | # Cmnd alias specification 18 | 19 | # User privilege specification 20 | root ALL=(ALL:ALL) ALL 21 | 22 | # Allow members of group sudo to execute any command 23 | %sudo ALL=(ALL:ALL) ALL 24 | 25 | # See sudoers(5) for more information on "#include" directives: 26 | 27 | #includedir /etc/sudoers.d 28 | pi ALL=(ALL) NOPASSWD: ALL 29 | 30 | coder ALL= NOPASSWD: /home/coder/coder-dist/coder-base/sudo_scripts/* 31 | -------------------------------------------------------------------------------- /coder-apps/install_app.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## 4 | ## Copies an application from the coder-apps/[variant] directory to 5 | ## the coder-base working directory. 6 | ## 7 | ## sh install_app appname base_path apps_path 8 | ## 9 | ## Eg. 10 | ## sh install_app hello_coder ../coder-base/ ./common/ 11 | 12 | if [ $# != 3 ] 13 | then 14 | echo -e "\nUse:\ninstall_app appname coderbase apppath\n" 15 | exit 16 | fi 17 | 18 | app=$1 19 | base=$2 20 | from=$3 21 | 22 | mkdir "$base/apps/$app" 23 | mkdir "$base/static/apps/$app" 24 | mkdir "$base/static/apps/$app/js" 25 | mkdir "$base/static/apps/$app/css" 26 | mkdir "$base/static/apps/$app/media" 27 | mkdir "$base/views/apps/$app" 28 | 29 | cp $from/$app/app/* $base/apps/$app/ 30 | cp $from/$app/views/* $base/views/apps/$app/ 31 | cp $from/$app/static/js/* $base/static/apps/$app/js/ 32 | cp $from/$app/static/css/* $base/static/apps/$app/css/ 33 | cp $from/$app/static/media/* $base/static/apps/$app/media/ 34 | 35 | -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/app/app.js: -------------------------------------------------------------------------------- 1 | exports.settings={}; 2 | //These are dynamically updated by the runtime 3 | //settings.appname - the app id (folder) where your app is installed 4 | //settings.viewpath - prefix to where your view html files are located 5 | //settings.staticurl - base url path to static assets /static/apps/appname 6 | //settings.appurl - base url path to this app /app/appname 7 | 8 | exports.get_routes = [ 9 | { path:'/', handler:'index_handler' }, 10 | ]; 11 | 12 | exports.post_routes = [ 13 | ]; 14 | 15 | 16 | exports.index_handler = function( req, res ) { 17 | var tmplvars = {}; 18 | tmplvars['static_url'] = exports.settings.staticurl; 19 | tmplvars['app_name'] = exports.settings.appname; 20 | tmplvars['app_url'] = exports.settings.appurl; 21 | tmplvars['device_name'] = exports.settings.device_name; 22 | 23 | res.render( exports.settings.viewpath + '/index', tmplvars ); 24 | }; 25 | 26 | exports.on_destroy = function() { 27 | }; -------------------------------------------------------------------------------- /coder-apps/archive_app.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## 4 | ## Copies an application from the coder-base working directory to 5 | ## the coder-apps directory. 6 | ## 7 | ## sh archive_app appname base_path apps_path 8 | ## 9 | ## Eg. 10 | ## sh archive_app hello_coder ../coder-base/ ./common/ 11 | 12 | if [ $# != 3 ] 13 | then 14 | echo -e "\nUse:\narchive_app appname base_path apps_path\n" 15 | exit 16 | fi 17 | 18 | app=$1 19 | base=$2 20 | dest=$3 21 | 22 | mkdir "$dest/$app" 23 | mkdir "$dest/$app/app" 24 | mkdir "$dest/$app/static" 25 | mkdir "$dest/$app/static/js" 26 | mkdir "$dest/$app/static/css" 27 | mkdir "$dest/$app/static/media" 28 | mkdir "$dest/$app/views" 29 | touch "$dest/$app/static/media/.gitignore" 30 | 31 | cp $base/apps/$app/* $dest/$app/app/ 32 | cp $base/views/apps/$app/* $dest/$app/views/ 33 | cp $base/static/apps/$app/js/* $dest/$app/static/js/ 34 | cp $base/static/apps/$app/css/* $dest/$app/static/css/ 35 | cp $base/static/apps/$app/media/* $dest/$app/static/media/ 36 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/install_all_coder.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cat <"),u||l.push(""+(h+o)+""),f.$renderLine(l,h,!0,!1),l.push("");var p="

:code
".replace(/:cssClass/,n.cssClass).replace(/:code/,l.join(""));return f.destroy(),{css:s+n.cssText,html:p}}}) -------------------------------------------------------------------------------- /coder-apps/common/boilerplate/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

Hello World

29 |

Your html goes here.

30 |
31 | 32 | -------------------------------------------------------------------------------- /findcoder-appengine/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
15 |

Coders On Your Network

16 |
Refresh
17 |
18 |
19 |

Don't See Your Coder?

20 |
Automatic device detection may not work with your network configuration. If that's the case, try this instead.
21 |
coder.local
22 |
Help! I can't connect to my Coder.
23 |
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

Socket Test

29 |
30 | 31 |
32 |
33 | 34 | -------------------------------------------------------------------------------- /raspbian-addons/etc/init.d/generate-ssh-hostkeys: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ### BEGIN INIT INFO 4 | # Provides: generate-ssh-hostkeys 5 | # Required-Start: $network 6 | # Required-Stop: 7 | # Should-Start: 8 | # Should-Stop: 9 | # Default-Start: S 10 | # Default-Stop: 11 | # Description: Generate ssh host keys if they do not exist 12 | ### END INIT INFO 13 | 14 | prog=$(basename $0) 15 | logger="logger -t $prog" 16 | 17 | rsa_key="/etc/ssh/ssh_host_rsa_key" 18 | dsa_key="/etc/ssh/ssh_host_dsa_key" 19 | ecdsa_key="/etc/ssh/ssh_host_ecdsa_key" 20 | 21 | # Exit if the hostkeys already exist 22 | if [ -f $rsa_key -a -f $dsa_key -a -f $ecdsa_key ]; then 23 | exit 24 | fi 25 | 26 | # Generate the ssh host keys 27 | [ -f $rsa_key ] || ssh-keygen -f $rsa_key -t rsa -C 'host' -N '' 28 | [ -f $dsa_key ] || ssh-keygen -f $dsa_key -t dsa -C 'host' -N '' 29 | [ -f $ecdsa_key ] || ssh-keygen -f $ecdsa_key -t ecdsa -C 'host' -N '' 30 | 31 | # Output the public keys to the console 32 | # This allows user to get host keys securely through console log 33 | echo "-----BEGIN SSH HOST KEY FINGERPRINTS-----" | $logger 34 | ssh-keygen -l -f $rsa_key.pub | $logger 35 | ssh-keygen -l -f $dsa_key.pub | $logger 36 | ssh-keygen -l -f $ecdsa_key.pub | $logger 37 | echo "------END SSH HOST KEY FINGERPRINTS------" | $logger 38 | 39 | 40 | -------------------------------------------------------------------------------- /coder-apps/common/game2d/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Game2D 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

Game2D Javascript Library

29 |

Documentation for Game2D to come...

30 |

For now, see the Vectoroids app for a working example.

31 |
32 | 33 | -------------------------------------------------------------------------------- /findcoder-appengine/index.py: -------------------------------------------------------------------------------- 1 | /** 2 | * Coder for Raspberry Pi 3 | * A simple platform for experimenting with web stuff. 4 | * http://goo.gl/coder 5 | * 6 | * Copyright 2013 Google Inc. All Rights Reserved. 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | 22 | import os 23 | import pickle 24 | import webapp2 25 | from google.appengine.ext.webapp import template 26 | 27 | class IndexHandler( webapp2.RequestHandler ): 28 | 29 | def get( self ): 30 | self.response.headers['Content-Type'] = 'text/html' 31 | tmpl = os.path.join( os.path.dirname(__file__), 'views/index.html' ) 32 | tmplvars = { 33 | } 34 | self.response.out.write( template.render( tmpl, tmplvars ) ) 35 | 36 | app = webapp2.WSGIApplication( 37 | [ 38 | ('/', IndexHandler) 39 | ], 40 | debug=True 41 | ) 42 | -------------------------------------------------------------------------------- /coder-apps/common/eyeball/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | .pagecontent { 3 | padding: 24px; 4 | } 5 | 6 | html, body { 7 | background: #f9de2a; 8 | text-align: center; 9 | } 10 | 11 | @-webkit-keyframes blink { 12 | 0% { 13 | height: 80%; 14 | } 15 | 16 | 50% { 17 | height: 0%; 18 | top: 50%; 19 | } 20 | 21 | 100% { 22 | height: 80%; 23 | } 24 | } 25 | 26 | .circle { 27 | border-radius: 100%; 28 | position: relative; 29 | overflow: hidden; 30 | } 31 | 32 | .center { 33 | position: absolute; 34 | left: 50%; 35 | top: 50%; 36 | } 37 | 38 | .eye { 39 | box-shadow: 0 20px 0 rgba(0,0,0,0.05); 40 | text-align: center; 41 | background: #cccccc; 42 | display: inline-block; 43 | position: absolute; 44 | margin-left: -100px; 45 | margin-top: -120px; 46 | height: 200px; 47 | width: 200px; 48 | left: 50%; 49 | top: 50%; 50 | } 51 | .eye .highlight { 52 | box-shadow: inset 15px 60px rgba(255, 255, 255, 0.1); 53 | position: absolute; 54 | height: 100%; 55 | width: 100%; 56 | left: 0; 57 | top: 0; 58 | } 59 | .eye .container { 60 | position: absolute; 61 | height: 80%; 62 | width: 99%; 63 | top: 10%; 64 | } 65 | .eye .sclera { 66 | background: white; 67 | height: 100%; 68 | width: 100%; 69 | } 70 | .eye .sclera .iris { 71 | background: #5dd0cb; 72 | height: 100px; 73 | width: 100px; 74 | } 75 | .eye .sclera .iris .pupil { 76 | background: #111111; 77 | height: 50%; 78 | width: 50%; 79 | } 80 | 81 | -------------------------------------------------------------------------------- /raspbian-addons/etc/init.d/pull-coder-reset: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ### BEGIN INIT INFO 4 | # Provides: pull-coder-reset 5 | # Required-Start: 6 | # Required-Stop: 7 | # Should-Start: 8 | # Should-Stop: 9 | # Default-Start: S 10 | # Default-Stop: 11 | # Description: detect reset.txt on boot partition and clear coder pass if it exists 12 | ### END INIT INFO 13 | 14 | prog=$(basename $0) 15 | logger="logger -t $prog" 16 | 17 | reset_file="/boot/coder_settings/reset.txt" 18 | source_wpa_conf="/etc/wpa_supplicant/wpa_supplicant.conf.reset" 19 | dest_wpa_conf="/etc/wpa_supplicant/wpa_supplicant.conf" 20 | source_device_json="/home/coder/coder-dist/coder-base/device.json.reset" 21 | dest_device_json="/home/coder/coder-dist/coder-base/device.json" 22 | source_net_interfaces="/etc/network/interfaces.reset" 23 | dest_net_interfaces="/etc/network/interfaces" 24 | 25 | # copy from source to dest if source exists 26 | if [ -f $reset_file ]; then 27 | echo "-----RESET WPA_SUPPLICANT.CONF-----" | $logger 28 | cp $source_wpa_conf $dest_wpa_conf 29 | chown root:wpaconfig $dest_wpa_conf 30 | chmod 660 $dest_wpa_conf 31 | echo "-----RESET NETWORK INTERFACES-----" | $logger 32 | cp $source_net_interfaces $dest_net_interfaces 33 | chown root:root $dest_net_interfaces 34 | chmod 664 $dest_net_interfaces 35 | echo "-----RESET DEVICE.JSON-----" | $logger 36 | cp $source_device_json $dest_device_json 37 | chown coder $dest_device_json 38 | chmod 600 $dest_device_json 39 | rm -f $reset_file 40 | fi 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /coder-apps/tests/spi_test/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

SPI Test

29 |
Analog value:
30 |
31 |
32 |
33 |
34 |
35 |
36 | 37 |
38 |
39 | 40 | -------------------------------------------------------------------------------- /raspbian-addons/boot/config.txt: -------------------------------------------------------------------------------- 1 | # For more options and information see 2 | # http://www.raspberrypi.org/documentation/configuration/config-txt.md 3 | # Some settings may impact device functionality. See link above for details 4 | 5 | # uncomment if you get no picture on HDMI for a default "safe" mode 6 | #hdmi_safe=1 7 | 8 | # uncomment this if your display has a black border of unused pixels visible 9 | # and your display can output without overscan 10 | #disable_overscan=1 11 | 12 | # uncomment the following to adjust overscan. Use positive numbers if console 13 | # goes off screen, and negative if there is too much border 14 | #overscan_left=16 15 | #overscan_right=16 16 | #overscan_top=16 17 | #overscan_bottom=16 18 | 19 | # uncomment to force a console size. By default it will be display's size minus 20 | # overscan. 21 | #framebuffer_width=1280 22 | #framebuffer_height=720 23 | 24 | # uncomment if hdmi display is not detected and composite is being output 25 | #hdmi_force_hotplug=1 26 | 27 | # uncomment to force a specific HDMI mode (this will force VGA) 28 | #hdmi_group=1 29 | #hdmi_mode=1 30 | 31 | # uncomment to force a HDMI mode rather than DVI. This can make audio work in 32 | # DMT (computer monitor) modes 33 | #hdmi_drive=2 34 | 35 | # uncomment to increase signal to HDMI, if you have interference, blanking, or 36 | # no display 37 | #config_hdmi_boost=4 38 | 39 | # uncomment for composite PAL 40 | #sdtv_mode=2 41 | 42 | #uncomment to overclock the arm. 700 MHz is the default. 43 | #arm_freq=800 44 | 45 | dtparam=spi=on 46 | dtparam=i2c_arm=on 47 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, Ajax.org B.V. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of Ajax.org B.V. nor the 12 | names of its contributors may be used to endorse or promote products 13 | derived from this software without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /coder-apps/common/eyeball/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 40 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-sql.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./sql_highlight_rules").SqlHighlightRules,u=e("../range").Range,a=function(){this.$tokenizer=new s((new o).getRules())};r.inherits(a,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=[],o=/^(\s*)--/;for(var a=n;a<=r;a++)if(!o.test(t.getLine(a))){i=!1;break}if(i){var f=new u(0,0,0,0);for(var a=n;a<=r;a++){var l=t.getLine(a),c=l.match(o);f.start.row=a,f.end.row=a,f.end.column=c[0].length,t.replace(f,c[1])}}else t.indentRows(n,r,"--")}}.call(a.prototype),t.Mode=a}),define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.SqlHighlightRules=s}) -------------------------------------------------------------------------------- /coder-apps/common/game2d/app/app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Coder for Raspberry Pi 3 | * A simple platform for experimenting with web stuff. 4 | * http://goo.gl/coder 5 | * 6 | * Copyright 2013 Google Inc. All Rights Reserved. 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | exports.settings={}; 22 | //These are dynamically updated by the runtime 23 | //settings.appname - the app id (folder) where your app is installed 24 | //settings.viewpath - prefix to where your view html files are located 25 | //settings.staticurl - base url path to static assets /static/apps/appname 26 | //settings.appurl - base url path to this app /app/appname 27 | 28 | exports.get_routes = [ 29 | { path:'/', handler:'index_handler' }, 30 | ]; 31 | 32 | exports.post_routes = [ 33 | ]; 34 | 35 | 36 | exports.index_handler = function( req, res ) { 37 | var tmplvars = {}; 38 | tmplvars['static_url'] = exports.settings.staticurl; 39 | tmplvars['app_name'] = exports.settings.appname; 40 | tmplvars['app_url'] = exports.settings.appurl; 41 | tmplvars['device_name'] = exports.settings.device_name; 42 | 43 | res.render( exports.settings.viewpath + '/index', tmplvars ); 44 | }; 45 | 46 | exports.on_destroy = function() { 47 | }; 48 | -------------------------------------------------------------------------------- /coder-apps/tests/gpio_test/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

GPIO Test

29 |
30 |
BLINK
31 | 32 |
TOGGLE
33 |
PUSH
34 |
HARDWARE PRESS
35 |
36 |
37 | 38 |
39 |
40 |
41 | 42 |
43 |
44 | 45 | -------------------------------------------------------------------------------- /coder-apps/tests/relay_test/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

GPIO Test

29 |
30 |
BLINK
31 | 32 |
TOGGLE
33 |
PUSH
34 |
PUSH 2
35 |
HARDWARE PRESS
36 |
37 |
38 | 39 |
40 |
41 |
42 | 43 |
44 |
45 | 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 |
4 | This project is no longer actively maintained by the Google Creative Lab but remains here in a read-only Archive mode so that it can continue to assist developers that may find the examples helpful. We aren’t able to address all pull requests or bug reports but outstanding issues will remain in read-only mode for reference purposes. Also, please note that some of the dependencies may not be up to date and there hasn’t been any QA done in a while so your mileage may vary. 5 |

6 | For more details on how Archiving affects Github repositories see this documentation . 7 |

8 | We welcome users to fork this repository should there be more useful, community-driven efforts that can help continue what this project began. 9 |
12 | 13 | # Coder 14 | ## A simple way to make web stuff on Raspberry Pi 15 | 16 | Coder is a free piece of software that turns a Raspberry Pi into a super simple platform that educators and parents can use to teach the basics of building for the web. New coders can craft small projects in HTML, CSS, and Javascript, right from the web browser. 17 | 18 | http://goo.gl/coder 19 | 20 | ### What You'll Find Here 21 | 22 | #### coder-base 23 | The Coder node.js server and application files 24 | 25 | #### coder-apps 26 | The Coder applications that come pre-installed in the Coder distribution 27 | 28 | #### raspbian-addons 29 | Modifications and additions to the stock raspian configuration and init structure 30 | 31 | #### installer 32 | Utility for transfering the coder image to an SD Card 33 | 34 | #### findcoder-appengine 35 | EXPERIMENTAL: A status server that can be run to help locate multiple Coder devices in a classroom scenario 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /findcoder-appengine/static/assets/js/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Coder for Raspberry Pi 3 | * A simple platform for experimenting with web stuff. 4 | * http://goo.gl/coder 5 | * 6 | * Copyright 2013 Google Inc. All Rights Reserved. 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | */ 20 | 21 | $(document).ready( function() { 22 | refreshList(); 23 | $("#fallback .device").click( function() { 24 | window.location.href = $(this).attr('data-url'); 25 | }); 26 | $('.refresh').click( function() { 27 | refreshList(); 28 | }); 29 | }); 30 | 31 | var refreshList = function() { 32 | $.get('/api/coder/list', function(data) { 33 | clearList(); 34 | for ( i in data.devices ) { 35 | var d = data.devices[i]; 36 | addToList( d.name, d.ip, d.net ); 37 | } 38 | }); 39 | }; 40 | 41 | var addToList = function( name, ip, net ) { 42 | $item = $('#coderitem_template').clone(); 43 | $item.attr('id',''); 44 | $item.find('.name').text( name ); 45 | $item.attr('data-url', 'http://' + ip + '/' ); 46 | $item.attr('data-net', net ); 47 | $("#coder_list").append($item); 48 | $item.show(); 49 | $item.click( function() { 50 | $this = $(this); 51 | window.location.href = $this.attr('data-url'); 52 | }); 53 | }; 54 | 55 | var clearList = function() { 56 | $("#coder_list .device").remove(); 57 | }; 58 | 59 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/02_coder_dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "### Install I2C Tools." 4 | apt-get -y install i2c-tools 5 | echo "### Let gpio group access gpio." 6 | cp -v ../../../raspbian-addons/etc/udev/rules.d/10-gpio.rules /etc/udev/rules.d/10-gpio.rules 7 | 8 | echo "### Install Zip." 9 | apt-get -y install zip 10 | 11 | echo "### Add coder user to [spi, gpio, audio, video, i2c] groups (device access that coder needs)." 12 | adduser coder spi 13 | adduser coder gpio 14 | adduser coder audio 15 | adduser coder video 16 | adduser coder i2c 17 | echo "" 18 | 19 | echo "### Install redis." 20 | apt-get -y install redis-server 21 | cp -v ../../../raspbian-addons/etc/redis/redis.conf /etc/redis/redis.conf 22 | echo "" 23 | 24 | echo "### Install nodejs and npm." 25 | # The node packages are really old... 26 | # Ideally, we'd do: apt-get -y install nodejs npm 27 | # For now, we'll install manually from nodejs.org to /opt/node/ 28 | mkdir tmp 29 | wget http://nodejs.org/dist/v0.10.7/node-v0.10.7-linux-arm-pi.tar.gz -P tmp/ 30 | tar -zxv -C tmp/ -f tmp/node-v0.10.7-linux-arm-pi.tar.gz 31 | cp -rv tmp/node-v0.10.7-linux-arm-pi /opt/node 32 | ln -s /opt/node/bin/node /usr/bin/node 33 | ln -s /opt/node/bin/npm /usr/bin/npm 34 | rm -rf tmp 35 | echo "" 36 | 37 | echo "### Installing Coder base apps (you can ignore any stat warnings)." 38 | su -s/bin/bash coder <<'EOF' 39 | cd /home/coder/coder-dist/coder-apps 40 | ./install_pi.sh ../coder-base 41 | EOF 42 | echo "" 43 | 44 | echo "### Adding Raspberry Pi Coder features." 45 | cp -rv ../../../raspbian-addons/home/coder/coder-dist/coder-base/sudo_scripts ../../../coder-base/ 46 | chown root:root -Rv ../../../coder-base/sudo_scripts 47 | chmod -v 744 ../../../coder-base/sudo_scripts/* 48 | echo "" 49 | 50 | echo "### Installing node.js modules." 51 | su -s/bin/bash coder <<'EOF' 52 | cd /home/coder/coder-dist/coder-base 53 | cp ../raspbian-addons/home/coder/coder-dist/coder-base/package.json . 54 | npm install 55 | EOF 56 | echo "" 57 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-textile.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./textile_highlight_rules").TextileHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){this.$tokenizer=new s((new o).getRules()),this.$outdent=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)}}.call(a.prototype),t.Mode=a}),define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingBraceOutdent=i}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-eclipse.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse .ace_scroller {background-color: #FFFFFF;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_text-layer {}.ace-eclipse .ace_cursor {border-left: 2px solid black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(63, 127, 95);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {}.ace-eclipse .ace_tag {color: rgb(63, 127, 127);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(63, 127, 127);}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /raspbian-addons/etc/avahi/avahi-daemon.conf: -------------------------------------------------------------------------------- 1 | # This file is part of avahi. 2 | # 3 | # avahi is free software; you can redistribute it and/or modify it 4 | # under the terms of the GNU Lesser General Public License as 5 | # published by the Free Software Foundation; either version 2 of the 6 | # License, or (at your option) any later version. 7 | # 8 | # avahi is distributed in the hope that it will be useful, but WITHOUT 9 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 10 | # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 11 | # License for more details. 12 | # 13 | # You should have received a copy of the GNU Lesser General Public 14 | # License along with avahi; if not, write to the Free Software 15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 16 | # USA. 17 | 18 | # See avahi-daemon.conf(5) for more information on this configuration 19 | # file! 20 | 21 | [server] 22 | #host-name=foo 23 | #domain-name=local 24 | #browse-domains=0pointer.de, zeroconf.org 25 | use-ipv4=yes 26 | use-ipv6=no 27 | allow-interfaces=eth0,eth1,wlan0 28 | #deny-interfaces=eth1 29 | #check-response-ttl=no 30 | #use-iff-running=no 31 | #enable-dbus=yes 32 | #disallow-other-stacks=no 33 | #allow-point-to-point=no 34 | #cache-entries-max=4096 35 | #clients-max=4096 36 | #objects-per-client-max=1024 37 | #entries-per-entry-group-max=32 38 | ratelimit-interval-usec=1000000 39 | ratelimit-burst=1000 40 | 41 | [wide-area] 42 | enable-wide-area=yes 43 | 44 | [publish] 45 | #disable-publishing=no 46 | #disable-user-service-publishing=no 47 | #add-service-cookie=no 48 | #publish-addresses=yes 49 | #publish-hinfo=yes 50 | #publish-workstation=yes 51 | #publish-domain=yes 52 | #publish-dns-servers=192.168.50.1, 192.168.50.2 53 | #publish-resolv-conf-dns-servers=yes 54 | #publish-aaaa-on-ipv4=yes 55 | #publish-a-on-ipv6=no 56 | 57 | [reflector] 58 | #enable-reflector=no 59 | #reflect-ipv=no 60 | 61 | [rlimits] 62 | #rlimit-as= 63 | rlimit-core=0 64 | rlimit-data=4194304 65 | rlimit-fsize=0 66 | rlimit-nofile=768 67 | rlimit-stack=4194304 68 | rlimit-nproc=3 69 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-xcode.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/xcode",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText="/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */.ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode .ace_scroller {background-color: #FFFFFF}.ace-xcode .ace_text-layer {color: #000000}.ace-xcode .ace_cursor {border-left: 2px solid #000000}.ace-xcode .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-clouds.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds .ace_scroller {background-color: #FFFFFF}.ace-clouds .ace_text-layer {color: #000000}.ace-clouds .ace_cursor {border-left: 2px solid #000000}.ace-clouds .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_markup.ace_underline {text-decoration: underline}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-diff.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/diff_highlight_rules","ace/mode/folding/diff"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./diff_highlight_rules").DiffHighlightRules,u=e("./folding/diff").FoldMode,a=function(){this.$tokenizer=new s((new o).getRules(),"i"),this.foldingRules=new u(["diff","index","\\+{3}","@@|\\*{5}"],"i")};r.inherits(a,i),function(){}.call(a.prototype),t.Mode=a}),define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(?:(\\-{3}|\\+{3}|\\*{3})( .+))$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^(.*?)(\\s*)$",token:["invisible","invalid"]}]}};r.inherits(s,i),t.DiffHighlightRules=s}),define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(e,t){this.regExpList=e,this.flag=t,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i={row:n,column:r.length},o=this.regExpList;for(var u=1;u<=o.length;u++){var a=RegExp("^("+o.slice(0,u).join("|")+")",this.flag);if(a.test(r))break}for(var f=e.getLength();++n").text( text ) ); 59 | console.log( text ); 60 | }; 61 | 62 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-vibrant_ink.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-vibrant-ink",t.cssText=".ace-vibrant-ink .ace_gutter {background: #1a1a1a;color: #BEBEBE}.ace-vibrant-ink .ace_print-margin {width: 1px;background: #1a1a1a}.ace-vibrant-ink .ace_scroller {background-color: #0F0F0F}.ace-vibrant-ink .ace_text-layer {color: #FFFFFF}.ace-vibrant-ink .ace_cursor {border-left: 2px solid #FFFFFF}.ace-vibrant-ink .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-vibrant-ink .ace_marker-layer .ace_selection {background: #6699CC}.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0F0F0F;border-radius: 2px}.ace-vibrant-ink .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-vibrant-ink .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-vibrant-ink .ace_marker-layer .ace_active-line {background: #333333}.ace-vibrant-ink .ace_gutter-active-line {background-color: #333333}.ace-vibrant-ink .ace_marker-layer .ace_selected-word {border: 1px solid #6699CC}.ace-vibrant-ink .ace_invisible {color: #404040}.ace-vibrant-ink .ace_keyword,.ace-vibrant-ink .ace_meta {color: #FF6600}.ace-vibrant-ink .ace_constant,.ace-vibrant-ink .ace_constant.ace_character,.ace-vibrant-ink .ace_constant.ace_character.ace_escape,.ace-vibrant-ink .ace_constant.ace_other {color: #339999}.ace-vibrant-ink .ace_constant.ace_numeric {color: #99CC99}.ace-vibrant-ink .ace_invalid,.ace-vibrant-ink .ace_invalid.ace_deprecated {color: #CCFF33;background-color: #000000}.ace-vibrant-ink .ace_fold {background-color: #FFCC00;border-color: #FFFFFF}.ace-vibrant-ink .ace_entity.ace_name.ace_function,.ace-vibrant-ink .ace_support.ace_function,.ace-vibrant-ink .ace_variable {color: #FFCC00}.ace-vibrant-ink .ace_variable.ace_parameter {font-style: italic}.ace-vibrant-ink .ace_string {color: #66FF00}.ace-vibrant-ink .ace_string.ace_regexp {color: #44B4CC}.ace-vibrant-ink .ace_comment {color: #9933CC}.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {font-style: italic;color: #99CC99}.ace-vibrant-ink .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5+f/z7Bq1ar/AA5lBCqoLxsgAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-dawn.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/dawn",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dawn",t.cssText=".ace-dawn .ace_gutter {background: #ebebeb;color: #333}.ace-dawn .ace_print-margin {width: 1px;background: #e8e8e8}.ace-dawn .ace_scroller {background-color: #F9F9F9}.ace-dawn .ace_text-layer {color: #080808}.ace-dawn .ace_cursor {border-left: 2px solid #000000}.ace-dawn .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-dawn .ace_marker-layer .ace_selection {background: rgba(39, 95, 255, 0.30)}.ace-dawn.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #F9F9F9;border-radius: 2px}.ace-dawn .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-dawn .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(75, 75, 126, 0.50)}.ace-dawn .ace_marker-layer .ace_active-line {background: rgba(36, 99, 180, 0.12)}.ace-dawn .ace_gutter-active-line {background-color : #dcdcdc}.ace-dawn .ace_marker-layer .ace_selected-word {border: 1px solid rgba(39, 95, 255, 0.30)}.ace-dawn .ace_invisible {color: rgba(75, 75, 126, 0.50)}.ace-dawn .ace_keyword,.ace-dawn .ace_meta {color: #794938}.ace-dawn .ace_constant,.ace-dawn .ace_constant.ace_character,.ace-dawn .ace_constant.ace_character.ace_escape,.ace-dawn .ace_constant.ace_other {color: #811F24}.ace-dawn .ace_invalid.ace_illegal {text-decoration: underline;font-style: italic;color: #F8F8F8;background-color: #B52A1D}.ace-dawn .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #B52A1D}.ace-dawn .ace_support {color: #691C97}.ace-dawn .ace_support.ace_constant {color: #B4371F}.ace-dawn .ace_fold {background-color: #794938;border-color: #080808}.ace-dawn .ace_markup.ace_list,.ace-dawn .ace_support.ace_function {color: #693A17}.ace-dawn .ace_storage {font-style: italic;color: #A71D5D}.ace-dawn .ace_string {color: #0B6125}.ace-dawn .ace_string.ace_regexp {color: #CF5628}.ace-dawn .ace_comment {font-style: italic;color: #5A525F}.ace-dawn .ace_variable {color: #234A97}.ace-dawn .ace_markup.ace_underline {text-decoration: underline}.ace-dawn .ace_markup.ace_heading {color: #19356D}.ace-dawn .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4+fPnf4ZVq1b9BwAkVQboFQv98gAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-github.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/github",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText='/* CSS style content from github\'s default pygments highlighter template.Cursor and selection styles from textmate.css. */.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github .ace_scroller {background: #fff;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_text-layer {}.ace-github .ace_cursor {border-left: 2px solid black;}.ace-github .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-github .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}/* bold keywords cause cursor issues for some fonts *//* this disables bold style for editor and keeps for static highlighter */.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-merbivore.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore",t.cssText=".ace-merbivore .ace_gutter {background: #202020;color: #E6E1DC}.ace-merbivore .ace_print-margin {width: 1px;background: #555651}.ace-merbivore .ace_scroller {background-color: #161616}.ace-merbivore .ace_text-layer {color: #E6E1DC}.ace-merbivore .ace_cursor {border-left: 2px solid #FFFFFF}.ace-merbivore .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-merbivore .ace_marker-layer .ace_selection {background: #454545}.ace-merbivore.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #161616;border-radius: 2px}.ace-merbivore .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore .ace_gutter-active-line {background-color: #333435}.ace-merbivore .ace_marker-layer .ace_selected-word {border: 1px solid #454545}.ace-merbivore .ace_invisible {color: #404040}.ace-merbivore .ace_entity.ace_name.ace_tag,.ace-merbivore .ace_keyword,.ace-merbivore .ace_meta,.ace-merbivore .ace_meta.ace_tag,.ace-merbivore .ace_storage,.ace-merbivore .ace_support.ace_function {color: #FC6F09}.ace-merbivore .ace_constant,.ace-merbivore .ace_constant.ace_character,.ace-merbivore .ace_constant.ace_character.ace_escape,.ace-merbivore .ace_constant.ace_other,.ace-merbivore .ace_support.ace_type {color: #1EDAFB}.ace-merbivore .ace_constant.ace_character.ace_escape {color: #519F50}.ace-merbivore .ace_constant.ace_language {color: #FDC251}.ace-merbivore .ace_constant.ace_library,.ace-merbivore .ace_string,.ace-merbivore .ace_support.ace_constant {color: #8DFF0A}.ace-merbivore .ace_constant.ace_numeric {color: #58C554}.ace-merbivore .ace_invalid {color: #FFFFFF;background-color: #990000}.ace-merbivore .ace_fold {background-color: #FC6F09;border-color: #E6E1DC}.ace-merbivore .ace_comment {font-style: italic;color: #AD2EA4}.ace-merbivore .ace_entity.ace_other.ace_attribute-name {color: #FFFF89}.ace-merbivore .ace_markup.ace_underline {text-decoration: underline}.ace-merbivore .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQExP7zzBz5sz/AA50BAyDznYhAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-monokai.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2f3129;color: #f1f1f1}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai .ace_scroller {background-color: #272822}.ace-monokai .ace_text-layer {color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #49483E}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ11D6z7Bq1ar/ABCKBG6g04U2AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-idle_fingers.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-idle-fingers",t.cssText=".ace-idle-fingers .ace_gutter {background: #3b3b3b;color: #fff}.ace-idle-fingers .ace_print-margin {width: 1px;background: #3b3b3b}.ace-idle-fingers .ace_scroller {background-color: #323232}.ace-idle-fingers .ace_text-layer {color: #FFFFFF}.ace-idle-fingers .ace_cursor {border-left: 2px solid #91FF00}.ace-idle-fingers .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #91FF00}.ace-idle-fingers .ace_marker-layer .ace_selection {background: rgba(90, 100, 126, 0.88)}.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #323232;border-radius: 2px}.ace-idle-fingers .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-idle-fingers .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-idle-fingers .ace_marker-layer .ace_active-line {background: #353637}.ace-idle-fingers .ace_gutter-active-line {background-color: #353637}.ace-idle-fingers .ace_marker-layer .ace_selected-word {border: 1px solid rgba(90, 100, 126, 0.88)}.ace-idle-fingers .ace_invisible {color: #404040}.ace-idle-fingers .ace_keyword,.ace-idle-fingers .ace_meta {color: #CC7833}.ace-idle-fingers .ace_constant,.ace-idle-fingers .ace_constant.ace_character,.ace-idle-fingers .ace_constant.ace_character.ace_escape,.ace-idle-fingers .ace_constant.ace_other,.ace-idle-fingers .ace_support.ace_constant {color: #6C99BB}.ace-idle-fingers .ace_invalid {color: #FFFFFF;background-color: #FF0000}.ace-idle-fingers .ace_fold {background-color: #CC7833;border-color: #FFFFFF}.ace-idle-fingers .ace_support.ace_function {color: #B83426}.ace-idle-fingers .ace_variable.ace_parameter {font-style: italic}.ace-idle-fingers .ace_string {color: #A5C261}.ace-idle-fingers .ace_string.ace_regexp {color: #CCCC33}.ace-idle-fingers .ace_comment {font-style: italic;color: #BC9458}.ace-idle-fingers .ace_meta.ace_tag {color: #FFE5BB}.ace-idle-fingers .ace_entity.ace_name {color: #FFC66D}.ace-idle-fingers .ace_markup.ace_underline {text-decoration: underline}.ace-idle-fingers .ace_collab.ace_user1 {color: #323232;background-color: #FFF980}.ace-idle-fingers .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjL6zzBz5sz/ABEUBGCqhK6UAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-kr.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-kr-theme",t.cssText=".ace-kr-theme .ace_gutter {background: #1c1917;color: #FCFFE0}.ace-kr-theme .ace_print-margin {width: 1px;background: #1c1917}.ace-kr-theme .ace_scroller {background-color: #0B0A09}.ace-kr-theme .ace_text-layer {color: #FCFFE0}.ace-kr-theme .ace_cursor {border-left: 2px solid #FF9900}.ace-kr-theme .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FF9900}.ace-kr-theme .ace_marker-layer .ace_selection {background: rgba(170, 0, 255, 0.45)}.ace-kr-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0B0A09;border-radius: 2px}.ace-kr-theme .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-kr-theme .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_marker-layer .ace_active-line {background: #38403D}.ace-kr-theme .ace_gutter-active-line {background-color : #38403D}.ace-kr-theme .ace_marker-layer .ace_selected-word {border: 1px solid rgba(170, 0, 255, 0.45)}.ace-kr-theme .ace_invisible {color: rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_keyword,.ace-kr-theme .ace_meta {color: #949C8B}.ace-kr-theme .ace_constant,.ace-kr-theme .ace_constant.ace_character,.ace-kr-theme .ace_constant.ace_character.ace_escape,.ace-kr-theme .ace_constant.ace_other {color: rgba(210, 117, 24, 0.76)}.ace-kr-theme .ace_invalid {color: #F8F8F8;background-color: #A41300}.ace-kr-theme .ace_support {color: #9FC28A}.ace-kr-theme .ace_support.ace_constant {color: #C27E66}.ace-kr-theme .ace_fold {background-color: #949C8B;border-color: #FCFFE0}.ace-kr-theme .ace_support.ace_function {color: #85873A}.ace-kr-theme .ace_storage {color: #FFEE80}.ace-kr-theme .ace_string {color: rgba(164, 161, 181, 0.8)}.ace-kr-theme .ace_string.ace_regexp {color: rgba(125, 255, 192, 0.65)}.ace-kr-theme .ace_comment {font-style: italic;color: #706D5B}.ace-kr-theme .ace_variable {color: #D1A796}.ace-kr-theme .ace_variable.ace_language {color: #FF80E1}.ace-kr-theme .ace_meta.ace_tag {color: #BABD9C}.ace-kr-theme .ace_markup.ace_underline {text-decoration: underline}.ace-kr-theme .ace_markup.ace_list {background-color: #0F0040}.ace-kr-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPg5uL8zzBz5sz/AA1WA+hUYIqjAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-cobalt.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cobalt",t.cssText=".ace-cobalt .ace_gutter {background: #011e3a;color: #fff}.ace-cobalt .ace_print-margin {width: 1px;background: #011e3a}.ace-cobalt .ace_scroller {background-color: #002240}.ace-cobalt .ace_text-layer {color: #FFFFFF}.ace-cobalt .ace_cursor {border-left: 2px solid #FFFFFF}.ace-cobalt .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-cobalt .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-cobalt.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;border-radius: 2px}.ace-cobalt .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-cobalt .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_marker-layer .ace_selected-word {border: 1px solid rgba(179, 101, 57, 0.75)}.ace-cobalt .ace_invisible {color: rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_keyword,.ace-cobalt .ace_meta {color: #FF9D00}.ace-cobalt .ace_constant,.ace-cobalt .ace_constant.ace_character,.ace-cobalt .ace_constant.ace_character.ace_escape,.ace-cobalt .ace_constant.ace_other {color: #FF628C}.ace-cobalt .ace_invalid {color: #F8F8F8;background-color: #800F00}.ace-cobalt .ace_support {color: #80FFBB}.ace-cobalt .ace_support.ace_constant {color: #EB939A}.ace-cobalt .ace_fold {background-color: #FF9D00;border-color: #FFFFFF}.ace-cobalt .ace_support.ace_function {color: #FFB054}.ace-cobalt .ace_storage {color: #FFEE80}.ace-cobalt .ace_entity {color: #FFDD00}.ace-cobalt .ace_string {color: #3AD900}.ace-cobalt .ace_string.ace_regexp {color: #80FFC2}.ace-cobalt .ace_comment {font-style: italic;color: #0088FF}.ace-cobalt .ace_variable {color: #CCCCCC}.ace-cobalt .ace_variable.ace_language {color: #FF80E1}.ace-cobalt .ace_meta.ace_tag {color: #9EFFFF}.ace-cobalt .ace_markup.ace_underline {text-decoration: underline}.ace-cobalt .ace_markup.ace_heading {color: #C8E4FD;background-color: #001221}.ace-cobalt .ace_markup.ace_list {background-color: #130D26}.ace-cobalt .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUHL4zzBz5sz/AA80BCzv+WXhAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/common/hello_coder/app/app.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Hello Coder! 4 | 5 | This is the Node.JS piece of your program. Unlike HTML, CSS, and JS, 6 | this part of your program doesn't run in your web browser. Instead 7 | it runs on your Raspberry Pi, and can do more advanced things like 8 | save and retrieve data. Coders call this "back end" or "server side" 9 | software, and HTML, JS, and CSS code is "front end" or "client side" 10 | software. 11 | 12 | There are a ton of different languages for writing server side software, 13 | but Coder's built to use one system, called Node.JS. Node.JS uses 14 | the Javascript language for making server-side code. Because it's 15 | Javascript, when you get to writing back end code, you'll find that 16 | it's very similar to what you've learned in front end JS. 17 | 18 | 19 | WHAT'S GOING ON HERE 20 | This program contains just the default back end code. The index_handler 21 | function in this program is used to send your HTML code from the 22 | server to your web browser. That's it! 23 | 24 | Many demos in Coder look just like this in the Node.js file. To do 25 | front end coding, you won't need to do a thing in Node. It's always 26 | here, though, for when you get to making more advanced things. 27 | 28 | If you're new to Coder, don't bother changing anything in here. Yet... 29 | 30 | */ 31 | 32 | 33 | exports.settings={}; 34 | //These are dynamically updated by the runtime 35 | //settings.appname - the app id (folder) where your app is installed 36 | //settings.viewpath - prefix to where your view html files are located 37 | //settings.staticurl - base url path to static assets /static/apps/appname 38 | //settings.appurl - base url path to this app /app/appname 39 | //settings.device_name - name given to this coder by the user, Ie."Billy's Coder" 40 | //settings.coder_owner - name of the user, Ie. "Suzie Q." 41 | //settings.coder_color - hex css color given to this coder. 42 | 43 | exports.get_routes = [ 44 | { path:'/', handler:'index_handler' }, 45 | ]; 46 | 47 | exports.post_routes = [ 48 | ]; 49 | 50 | 51 | exports.index_handler = function( req, res ) { 52 | var tmplvars = {}; 53 | tmplvars['static_url'] = exports.settings.staticurl; 54 | tmplvars['app_name'] = exports.settings.appname; 55 | tmplvars['app_url'] = exports.settings.appurl; 56 | tmplvars['device_name'] = exports.settings.device_name; 57 | 58 | res.render( exports.settings.viewpath + '/index', tmplvars ); 59 | }; 60 | 61 | exports.on_destroy = function() { 62 | }; 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-solarized_dark.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-solarized-dark",t.cssText=".ace-solarized-dark .ace_gutter {background: #01313f;color: #d0edf7}.ace-solarized-dark .ace_print-margin {width: 1px;background: #33555E}.ace-solarized-dark .ace_scroller {background-color: #002B36}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,.ace-solarized-dark .ace_storage,.ace-solarized-dark .ace_text-layer {color: #93A1A1}.ace-solarized-dark .ace_cursor {border-left: 2px solid #D30102}.ace-solarized-dark .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #D30102}.ace-solarized-dark .ace_marker-layer .ace_active-line,.ace-solarized-dark .ace_marker-layer .ace_selection {background: rgba(255, 255, 255, 0.1)}.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002B36;border-radius: 2px}.ace-solarized-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-solarized-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_gutter-active-line {background-color: #0d3440}.ace-solarized-dark .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-dark .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_keyword,.ace-solarized-dark .ace_meta,.ace-solarized-dark .ace_support.ace_class,.ace-solarized-dark .ace_support.ace_type {color: #859900}.ace-solarized-dark .ace_constant.ace_character,.ace-solarized-dark .ace_constant.ace_other {color: #CB4B16}.ace-solarized-dark .ace_constant.ace_language {color: #B58900}.ace-solarized-dark .ace_constant.ace_numeric {color: #D33682}.ace-solarized-dark .ace_fold {background-color: #268BD2;border-color: #93A1A1}.ace-solarized-dark .ace_entity.ace_name.ace_function,.ace-solarized-dark .ace_entity.ace_name.ace_tag,.ace-solarized-dark .ace_support.ace_function,.ace-solarized-dark .ace_variable,.ace-solarized-dark .ace_variable.ace_language {color: #268BD2}.ace-solarized-dark .ace_string {color: #2AA198}.ace-solarized-dark .ace_string.ace_regexp {color: #D30102}.ace-solarized-dark .ace_comment {font-style: italic;color: #657B83}.ace-solarized-dark .ace_markup.ace_underline {text-decoration: underline}.ace-solarized-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db7zzBz5sz/AA82BCv7wOIDAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-c9search.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./c9search_highlight_rules").C9SearchHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/c9search").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules(),"i"),this.$outdent=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)}}.call(f.prototype),t.Mode=f}),define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text"],regex:"(^\\s+[0-9]+)(:\\s*)(.+)"},{token:["string","text"],regex:"(.+)(:$)"}]}};r.inherits(s,i),t.C9SearchHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^(\S.*\:|Searching for.*)$/,this.foldingStopMarker=/^(\s+|Found.*)$/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getAllLines(n),s=r[n],o=/^(Found.*|Searching for.*)$/,u=/^(\S.*\:|\s*)$/,a=o.test(s)?o:u;if(this.foldingStartMarker.test(s)){for(var f=n+1,l=e.getLength();f=0;f--){s=r[f];if(a.test(s))break}return new i(f,s.length,n,0)}}}.call(o.prototype)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-solarized_light.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-solarized-light",t.cssText=".ace-solarized-light .ace_gutter {background: #fbf1d3;color: #333}.ace-solarized-light .ace_print-margin {width: 1px;background: #e8e8e8}.ace-solarized-light .ace_scroller {background-color: #FDF6E3}.ace-solarized-light .ace_text-layer {color: #586E75}.ace-solarized-light .ace_cursor {border-left: 2px solid #000000}.ace-solarized-light .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #000000}.ace-solarized-light .ace_marker-layer .ace_selection {background: #073642}.ace-solarized-light.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FDF6E3;border-radius: 2px}.ace-solarized-light .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-solarized-light .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_marker-layer .ace_active-line {background: #EEE8D5}.ace-solarized-light .ace_gutter-active-line {background-color : #dcdcdc}.ace-solarized-light .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-light .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_keyword,.ace-solarized-light .ace_meta,.ace-solarized-light .ace_support.ace_class,.ace-solarized-light .ace_support.ace_type {color: #859900}.ace-solarized-light .ace_constant.ace_character,.ace-solarized-light .ace_constant.ace_other {color: #CB4B16}.ace-solarized-light .ace_constant.ace_language {color: #B58900}.ace-solarized-light .ace_constant.ace_numeric {color: #D33682}.ace-solarized-light .ace_fold {background-color: #268BD2;border-color: #586E75}.ace-solarized-light .ace_entity.ace_name.ace_function,.ace-solarized-light .ace_entity.ace_name.ace_tag,.ace-solarized-light .ace_support.ace_function,.ace-solarized-light .ace_variable,.ace-solarized-light .ace_variable.ace_language {color: #268BD2}.ace-solarized-light .ace_storage {color: #073642}.ace-solarized-light .ace_string {color: #2AA198}.ace-solarized-light .ace_string.ace_regexp {color: #D30102}.ace-solarized-light .ace_comment,.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {color: #93A1A1}.ace-solarized-light .ace_markup.ace_underline {text-decoration: underline}.ace-solarized-light .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4++3xf4ZVq1b9BwAjxwbT1g3hiwAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-twilight.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/twilight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-twilight",t.cssText=".ace-twilight .ace_gutter {background: #232323;color: #E2E2E2}.ace-twilight .ace_print-margin {width: 1px;background: #232323}.ace-twilight .ace_scroller {background-color: #141414}.ace-twilight .ace_text-layer {color: #F8F8F8}.ace-twilight .ace_cursor {border-left: 2px solid #A7A7A7}.ace-twilight .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-twilight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;border-radius: 2px}.ace-twilight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-twilight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-twilight .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-twilight .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-twilight .ace_keyword,.ace-twilight .ace_meta {color: #CDA869}.ace-twilight .ace_constant,.ace-twilight .ace_constant.ace_character,.ace-twilight .ace_constant.ace_character.ace_escape,.ace-twilight .ace_constant.ace_other,.ace-twilight .ace_markup.ace_heading,.ace-twilight .ace_support.ace_constant {color: #CF6A4C}.ace-twilight .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-twilight .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-twilight .ace_support {color: #9B859D}.ace-twilight .ace_fold {background-color: #AC885B;border-color: #F8F8F8}.ace-twilight .ace_support.ace_function {color: #DAD085}.ace-twilight .ace_markup.ace_list,.ace-twilight .ace_storage {color: #F9EE98}.ace-twilight .ace_entity.ace_name.ace_function,.ace-twilight .ace_meta.ace_tag,.ace-twilight .ace_variable {color: #AC885B}.ace-twilight .ace_string {color: #8F9D6A}.ace-twilight .ace_string.ace_regexp {color: #E9C062}.ace-twilight .ace_comment {font-style: italic;color: #5F5A60}.ace-twilight .ace_variable {color: #7587A6}.ace-twilight .ace_xml-pe {color: #494949}.ace-twilight .ace_markup.ace_underline {text-decoration: underline}.ace-twilight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERH5zzBz5sz/AA5EBAYqeZXWAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-clouds_midnight.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-clouds-midnight",t.cssText=".ace-clouds-midnight .ace_gutter {background: #232323;color: #929292}.ace-clouds-midnight .ace_print-margin {width: 1px;background: #232323}.ace-clouds-midnight .ace_scroller {background-color: #191919}.ace-clouds-midnight .ace_text-layer {color: #929292}.ace-clouds-midnight .ace_cursor {border-left: 2px solid #7DA5DC}.ace-clouds-midnight .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #7DA5DC}.ace-clouds-midnight .ace_marker-layer .ace_selection {background: #000000}.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #191919;border-radius: 2px}.ace-clouds-midnight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-clouds-midnight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds-midnight .ace_marker-layer .ace_active-line {background: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_gutter-active-line {background-color: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_marker-layer .ace_selected-word {border: 1px solid #000000}.ace-clouds-midnight .ace_invisible {color: #BFBFBF}.ace-clouds-midnight .ace_keyword,.ace-clouds-midnight .ace_meta,.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {color: #927C5D}.ace-clouds-midnight .ace_keyword.ace_operator {color: #4B4B4B}.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {color: #366F1A}.ace-clouds-midnight .ace_constant.ace_language {color: #39946A}.ace-clouds-midnight .ace_constant.ace_numeric {color: #46A609}.ace-clouds-midnight .ace_constant.ace_character.ace_entity {color: #A165AC}.ace-clouds-midnight .ace_invalid {color: #FFFFFF;background-color: #E92E2E}.ace-clouds-midnight .ace_fold {background-color: #927C5D;border-color: #929292}.ace-clouds-midnight .ace_storage,.ace-clouds-midnight .ace_support.ace_class,.ace-clouds-midnight .ace_support.ace_function,.ace-clouds-midnight .ace_support.ace_other,.ace-clouds-midnight .ace_support.ace_type {color: #E92E2E}.ace-clouds-midnight .ace_string {color: #5D90CD}.ace-clouds-midnight .ace_comment {color: #3C403B}.ace-clouds-midnight .ace_entity.ace_name.ace_tag,.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds-midnight .ace_markup.ace_underline {text-decoration: underline}.ace-clouds-midnight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlJT8z1BeXv4fAA2KA6+h9Z+2AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-merbivore_soft.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore-soft",t.cssText=".ace-merbivore-soft .ace_gutter {background: #262424;color: #E6E1DC}.ace-merbivore-soft .ace_print-margin {width: 1px;background: #262424}.ace-merbivore-soft .ace_scroller {background-color: #1C1C1C}.ace-merbivore-soft .ace_text-layer {color: #E6E1DC}.ace-merbivore-soft .ace_cursor {border-left: 2px solid #FFFFFF}.ace-merbivore-soft .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-merbivore-soft .ace_marker-layer .ace_selection {background: #494949}.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1C1C1C;border-radius: 2px}.ace-merbivore-soft .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore-soft .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore-soft .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore-soft .ace_gutter-active-line {background-color: #333435}.ace-merbivore-soft .ace_marker-layer .ace_selected-word {border: 1px solid #494949}.ace-merbivore-soft .ace_invisible {color: #404040}.ace-merbivore-soft .ace_entity.ace_name.ace_tag,.ace-merbivore-soft .ace_keyword,.ace-merbivore-soft .ace_meta,.ace-merbivore-soft .ace_meta.ace_tag,.ace-merbivore-soft .ace_storage {color: #FC803A}.ace-merbivore-soft .ace_constant,.ace-merbivore-soft .ace_constant.ace_character,.ace-merbivore-soft .ace_constant.ace_character.ace_escape,.ace-merbivore-soft .ace_constant.ace_other,.ace-merbivore-soft .ace_support.ace_type {color: #68C1D8}.ace-merbivore-soft .ace_constant.ace_character.ace_escape {color: #B3E5B4}.ace-merbivore-soft .ace_constant.ace_language {color: #E1C582}.ace-merbivore-soft .ace_constant.ace_library,.ace-merbivore-soft .ace_string,.ace-merbivore-soft .ace_support.ace_constant {color: #8EC65F}.ace-merbivore-soft .ace_constant.ace_numeric {color: #7FC578}.ace-merbivore-soft .ace_invalid,.ace-merbivore-soft .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #FE3838}.ace-merbivore-soft .ace_fold {background-color: #FC803A;border-color: #E6E1DC}.ace-merbivore-soft .ace_comment,.ace-merbivore-soft .ace_meta {font-style: italic;color: #AC4BB8}.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {color: #EAF1A3}.ace-merbivore-soft .ace_markup.ace_underline {text-decoration: underline}.ace-merbivore-soft .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkZH5zzBz5sz/AA8EBB6crd1rAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /raspbian-addons/boot/coder_settings/reset_files/wpa_supplicant.txt: -------------------------------------------------------------------------------- 1 | ####################################################### 2 | # Use this file to manually configure your Coder's WiFi 3 | # settings. You can also use this to set the config 4 | # network that Coder uses if it can't find a network. 5 | # 6 | # Instructions: 7 | # 1. Make a copy of this file into 8 | # /coder_settings/wpa_supplicant.txt 9 | # 2. Boot Coder with this SD Card. It will copy the 10 | # settings and then delete the file. 11 | # 12 | # NOTE: If you are experimenting, make a backup of 13 | # your changes, as the file will be deleted on boot. 14 | ####################################################### 15 | 16 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 17 | update_config=1 18 | 19 | 20 | ################################# 21 | # Default settings 22 | ################################# 23 | 24 | ##### 25 | # This creates a device adhoc network if no connection is found. 26 | # Change ssid to something else to make Coder boot on another 27 | # Ad-hoc network if it can't find a WiFi connection. 28 | ##### 29 | network={ 30 | ssid="CoderConfig" 31 | mode=1 32 | key_mgmt=NONE 33 | id_str="staticadhoc" 34 | } 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | ####################################################### 43 | # Sample settings for typical networks below 44 | ####################################################### 45 | 46 | 47 | 48 | 49 | # 50 | # A typical encypted network using WPA 51 | # 52 | network={ 53 | ssid="Network Name" 54 | psk="yourpassword" 55 | 56 | # Change to 0 to enable 57 | disabled=1 58 | scan_ssid=1 59 | priority=4 60 | } 61 | 62 | 63 | # 64 | # An unencrypted network 65 | # 66 | network={ 67 | ssid="Network Name" 68 | key_mgmt=NONE 69 | 70 | # Change to 0 to enable 71 | disabled=1 72 | scan_ssid=1 73 | priority=3 74 | } 75 | 76 | # 77 | # Older WEP network 78 | # 79 | network={ 80 | ssid="Network Name" 81 | wep_key0="password" 82 | 83 | # To use WEP hex code, comment out above and use without quotes 84 | # Example: 85 | # wep_key0=ABCDEF0102 86 | 87 | # Change to 0 to enable 88 | disabled=1 89 | scan_ssid=1 90 | key_mgmt=NONE 91 | priority=3 92 | } 93 | 94 | 95 | 96 | # 97 | # Enable to connect to any available open network 98 | # 99 | network={ 100 | ssid="" 101 | scan_ssid=1 102 | key_mgmt=NONE 103 | auth_alg=OPEN 104 | priority=2 105 | id_str="anyopen" 106 | 107 | # Change to 0 to enable 108 | disabled=1 109 | } 110 | 111 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /raspbian-addons/etc/wpa_supplicant/wpa_supplicant.conf.reset: -------------------------------------------------------------------------------- 1 | ####################################################### 2 | # Use this file to manually configure your Coder's WiFi 3 | # settings. You can also use this to set the config 4 | # network that Coder uses if it can't find a network. 5 | # 6 | # Instructions: 7 | # 1. Make a copy of this file into 8 | # /coder_settings/wpa_supplicant.txt 9 | # 2. Boot Coder with this SD Card. It will copy the 10 | # settings and then delete the file. 11 | # 12 | # NOTE: If you are experimenting, make a backup of 13 | # your changes, as the file will be deleted on boot. 14 | ####################################################### 15 | 16 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 17 | update_config=1 18 | 19 | 20 | ################################# 21 | # Default settings 22 | ################################# 23 | 24 | ##### 25 | # This creates a device adhoc network if no connection is found. 26 | # Change ssid to something else to make Coder boot on another 27 | # Ad-hoc network if it can't find a WiFi connection. 28 | ##### 29 | network={ 30 | ssid="CoderConfig" 31 | mode=1 32 | key_mgmt=NONE 33 | id_str="staticadhoc" 34 | } 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | ####################################################### 43 | # Sample settings for typical networks below 44 | ####################################################### 45 | 46 | 47 | 48 | 49 | # 50 | # A typical encypted network using WPA 51 | # 52 | network={ 53 | ssid="Network Name" 54 | psk="yourpassword" 55 | 56 | # Change to 0 to enable 57 | disabled=1 58 | scan_ssid=1 59 | priority=4 60 | } 61 | 62 | 63 | # 64 | # An unencrypted network 65 | # 66 | network={ 67 | ssid="Network Name" 68 | key_mgmt=NONE 69 | 70 | # Change to 0 to enable 71 | disabled=1 72 | scan_ssid=1 73 | priority=3 74 | } 75 | 76 | # 77 | # Older WEP network 78 | # 79 | network={ 80 | ssid="Network Name" 81 | wep_key0="password" 82 | 83 | # To use WEP hex code, comment out above and use without quotes 84 | # Example: 85 | # wep_key0=ABCDEF0102 86 | 87 | # Change to 0 to enable 88 | disabled=1 89 | scan_ssid=1 90 | key_mgmt=NONE 91 | priority=3 92 | } 93 | 94 | 95 | 96 | # 97 | # Enable to connect to any available open network 98 | # 99 | network={ 100 | ssid="" 101 | scan_ssid=1 102 | key_mgmt=NONE 103 | auth_alg=OPEN 104 | priority=2 105 | id_str="anyopen" 106 | 107 | # Change to 0 to enable 108 | disabled=1 109 | } 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-tomorrow.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tomorrow",t.cssText=".ace-tomorrow .ace_gutter {background: #f6f6f6;color: #4D4D4C}.ace-tomorrow .ace_print-margin {width: 1px;background: #f6f6f6}.ace-tomorrow .ace_scroller {background-color: #FFFFFF}.ace-tomorrow .ace_text-layer {color: #4D4D4C}.ace-tomorrow .ace_cursor {border-left: 2px solid #AEAFAD}.ace-tomorrow .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #AEAFAD}.ace-tomorrow .ace_marker-layer .ace_selection {background: #D6D6D6}.ace-tomorrow.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-tomorrow .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-tomorrow .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #D1D1D1}.ace-tomorrow .ace_marker-layer .ace_active-line {background: #EFEFEF}.ace-tomorrow .ace_gutter-active-line {background-color : #dcdcdc}.ace-tomorrow .ace_marker-layer .ace_selected-word {border: 1px solid #D6D6D6}.ace-tomorrow .ace_invisible {color: #D1D1D1}.ace-tomorrow .ace_keyword,.ace-tomorrow .ace_meta,.ace-tomorrow .ace_storage,.ace-tomorrow .ace_storage.ace_type,.ace-tomorrow .ace_support.ace_type {color: #8959A8}.ace-tomorrow .ace_keyword.ace_operator {color: #3E999F}.ace-tomorrow .ace_constant.ace_character,.ace-tomorrow .ace_constant.ace_language,.ace-tomorrow .ace_constant.ace_numeric,.ace-tomorrow .ace_keyword.ace_other.ace_unit,.ace-tomorrow .ace_support.ace_constant,.ace-tomorrow .ace_variable.ace_parameter {color: #F5871F}.ace-tomorrow .ace_constant.ace_other {color: #666969}.ace-tomorrow .ace_invalid {color: #FFFFFF;background-color: #C82829}.ace-tomorrow .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #8959A8}.ace-tomorrow .ace_fold {background-color: #4271AE;border-color: #4D4D4C}.ace-tomorrow .ace_entity.ace_name.ace_function,.ace-tomorrow .ace_support.ace_function,.ace-tomorrow .ace_variable {color: #4271AE}.ace-tomorrow .ace_support.ace_class,.ace-tomorrow .ace_support.ace_type {color: #C99E00}.ace-tomorrow .ace_markup.ace_heading,.ace-tomorrow .ace_string {color: #718C00}.ace-tomorrow .ace_entity.ace_name.ace_tag,.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow .ace_meta.ace_tag,.ace-tomorrow .ace_string.ace_regexp,.ace-tomorrow .ace_variable {color: #C82829}.ace-tomorrow .ace_comment {color: #8E908C}.ace-tomorrow .ace_markup.ace_underline {text-decoration: underline}.ace-tomorrow .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/clean_device.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | echo "Removing any generated SSL keys and certs." 5 | rm /etc/ssh/ssh_host_dsa_key 6 | rm /etc/ssh/ssh_host_dsa_key.pub 7 | rm /etc/ssh/ssh_host_ecdsa_key 8 | rm /etc/ssh/ssh_host_ecdsa_key.pub 9 | rm /etc/ssh/ssh_host_rsa_key 10 | rm /etc/ssh/ssh_host_rsa_key.pub 11 | rm /home/coder/coder-dist/coder-base/certs/server.* 12 | echo "" 13 | 14 | echo "Resetting Coder http configuration defaults." 15 | cp /home/coder/coder-dist/coder-base/config.js.default /home/coder/coder-dist/coder-base/config.js 16 | cp /home/coder/coder-dist/coder-base/device.json.reset /home/coder/coder-dist/coder-base/device.json 17 | rm -rf /home/coder/coder-dist/coder-base/tmp/* 18 | echo "" 19 | 20 | echo "Clearing out user history files." 21 | rm /home/pi/coder_bootstrap_install.sh 22 | rm /root/.bash_history 23 | rm /root/.viminfo 24 | rm /home/pi/.bash_history 25 | rm /home/pi/.viminfo 26 | rm /home/coder/.bash_history 27 | rm /home/coder/.viminfo 28 | rm /home/coder/.gitconfig 29 | echo "" 30 | 31 | echo "Resetting hostname and hosts files in /boot/coder_settings." 32 | touch /boot/coder_settings/reset.txt 33 | cp ../../../raspbian-addons/boot/coder_settings/hosts.txt /boot/coder_settings/hosts.txt 34 | cp ../../../raspbian-addons/boot/coder_settings/hostname.txt /boot/coder_settings/hostname.txt 35 | echo "nameserver 8.8.8.8" >/etc/resolv.conf 36 | echo "" 37 | 38 | echo "Resetting wifi and network defaults." 39 | cp ../../../raspbian-addons/etc/network/interfaces /etc/network/interfaces 40 | cp ../../../raspbian-addons/etc/network/interfaces.reset /etc/network/interfaces.reset 41 | chown root:root /etc/network/interfaces 42 | chown root:root /etc/network/interfaces.reset 43 | chmod 664 /etc/network/interfaces 44 | chmod 664 /etc/network/interfaces.reset 45 | cp ../../../raspbian-addons/etc/wpa_supplicant/wpa_supplicant.conf.reset /etc/wpa_supplicant/wpa_supplicant.conf 46 | chown root:wpaconfig /etc/wpa_supplicant/wpa_supplicant.conf 47 | chmod 660 /etc/wpa_supplicant/wpa_supplicant.conf 48 | echo "" 49 | 50 | echo "Clearing system log files." 51 | rm /var/log/messages 52 | rm /var/log/syslog 53 | rm /var/log/wtmp 54 | touch /var/log/wtmp 55 | chmod 644 /var/log/wtmp 56 | rm /var/log/dmesg* 57 | rm /var/log/debug 58 | touch /var/log/debug 59 | rm /var/log/btmp 60 | touch /var/log/btmp 61 | chmod 644 /var/log/btmp 62 | rm /var/log/auth.log 63 | touch /var/log/auth.log 64 | chown root:adm /var/log/auth.log 65 | chmod 640 /var/log/auth.log 66 | touch /var/log/user.log 67 | chown root:adm /var/log/user.log 68 | chmod 640 /var/log/user.log 69 | echo "" 70 | 71 | # Reset pi password to raspberry 72 | echo "Choose the default pi passwd (normally this should be raspberry)" 73 | passwd pi 74 | 75 | echo "" 76 | echo "Done!" 77 | echo "" 78 | 79 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-chrome.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome .ace_scroller {background-color: #FFFFFF;}.ace-chrome .ace_cursor {border-left: 2px solid black;}.ace-chrome .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/common/space_rocks_/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Space Game! 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 |
31 |
32 | 33 | 37 |
38 |
39 |
40 | 41 | 42 |
43 |
0
44 |
3
45 |
46 | 47 | 48 |
49 |

Space Rocks!

50 | Start Game 51 |
52 |

High Scores

53 |
    54 |
    55 |
    56 | 57 |
    58 | 59 | 60 |
    Hack
    61 | 62 | 68 | 69 |
    70 | 71 | 72 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-coder.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/coder",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-coder",t.cssText='.ace-coder .ace_gutter { background: #f0f0f0;color: #afafaf;overflow : hidden;}.ace-coder .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-coder .ace_scroller {background-color: #f0f0f0;}.ace-coder .ace_cursor {border-left: 2px solid black;}.ace-coder .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-coder .ace_invisible {color: rgb(191, 191, 191);}.ace-coder .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-coder .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-coder .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-coder .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-coder .ace_fold {}.ace-coder .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-coder .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-coder .ace_support.ace_type,.ace-coder .ace_support.ace_class.ace-coder .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-coder .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-coder .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-coder .ace_comment {color: #80A2B3;}.ace-coder .ace_identifier{ color: #434343; }.ace-coder .ace_comment.ace_doc {color: #236e24;}.ace-coder .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-coder .ace_constant.ace_numeric {color: #56A9F5;}.ace-coder .ace_constant.ace_boolean {color: #56A9F5;}.ace-coder .ace_variable {color: rgb(49, 132, 149);}.ace-coder .ace_xml-pe {color: rgb(104, 104, 91);}.ace-coder .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-coder .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-coder .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-coder .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-coder .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-coder .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-coder .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-coder .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-coder .ace_gutter-active-line {background-color : #dcdcdc;}.ace-coder .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-coder .ace_storage,.ace-coder .ace_keyword,.ace-coder .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-coder .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-coder .ace_string {color: #56A9F5;}.ace-coder .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-coder .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) 2 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-pastel_on_dark.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-pastel-on-dark",t.cssText=".ace-pastel-on-dark .ace_gutter {background: #353030;color: #8F938F}.ace-pastel-on-dark .ace_print-margin {width: 1px;background: #353030}.ace-pastel-on-dark .ace_scroller {background-color: #2C2828}.ace-pastel-on-dark .ace_text-layer {color: #8F938F}.ace-pastel-on-dark .ace_cursor {border-left: 2px solid #A7A7A7}.ace-pastel-on-dark .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #A7A7A7}.ace-pastel-on-dark .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2C2828;border-radius: 2px}.ace-pastel-on-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-pastel-on-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_keyword,.ace-pastel-on-dark .ace_meta {color: #757aD8}.ace-pastel-on-dark .ace_constant,.ace-pastel-on-dark .ace_constant.ace_character,.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,.ace-pastel-on-dark .ace_constant.ace_other {color: #4FB7C5}.ace-pastel-on-dark .ace_keyword.ace_operator {color: #797878}.ace-pastel-on-dark .ace_constant.ace_character {color: #AFA472}.ace-pastel-on-dark .ace_constant.ace_language {color: #DE8E30}.ace-pastel-on-dark .ace_constant.ace_numeric {color: #CCCCCC}.ace-pastel-on-dark .ace_invalid,.ace-pastel-on-dark .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-pastel-on-dark .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-pastel-on-dark .ace_fold {background-color: #757aD8;border-color: #8F938F}.ace-pastel-on-dark .ace_support.ace_function {color: #AEB2F8}.ace-pastel-on-dark .ace_string {color: #66A968}.ace-pastel-on-dark .ace_string.ace_regexp {color: #E9C062}.ace-pastel-on-dark .ace_comment {color: #A6C6FF}.ace-pastel-on-dark .ace_variable {color: #BEBF55}.ace-pastel-on-dark .ace_variable.ace_language {color: #C1C144}.ace-pastel-on-dark .ace_xml-pe {color: #494949}.ace-pastel-on-dark .ace_markup.ace_underline {text-decoration: underline}.ace-pastel-on-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0dD4z9DR0fEfAA+vBBPqhbn1AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/tests/socket_test/app/app.js: -------------------------------------------------------------------------------- 1 | exports.settings={}; 2 | //These are dynamically updated by the runtime 3 | //settings.appname - the app id (folder) where your app is installed 4 | //settings.viewpath - prefix to where your view html files are located 5 | //settings.staticurl - base url path to static assets /static/apps/appname 6 | //settings.appurl - base url path to this app /app/appname 7 | //settings.device_name - name given to this coder by the user, Ie."Billy's Coder" 8 | //settings.coder_owner - name of the user, Ie. "Suzie Q." 9 | //settings.coder_color - hex css color given to this coder. 10 | 11 | exports.get_routes = [ 12 | { path:'/', handler:'index_handler' }, 13 | ]; 14 | 15 | exports.post_routes = [ 16 | ]; 17 | 18 | exports.socketio_routes = [ 19 | { key:'connect', handler:'on_socket_connect' }, 20 | { key:'message', handler:'on_socket_message' } 21 | ]; 22 | 23 | 24 | var connections = {}; 25 | 26 | exports.index_handler = function( req, res ) { 27 | var tmplvars = {}; 28 | tmplvars['static_url'] = exports.settings.staticurl; 29 | tmplvars['app_name'] = exports.settings.appname; 30 | tmplvars['app_url'] = exports.settings.appurl; 31 | tmplvars['device_name'] = exports.settings.device_name; 32 | 33 | res.render( exports.settings.viewpath + '/index', tmplvars ); 34 | }; 35 | 36 | exports.on_socket_connect = function( socket, data ) { 37 | console.log( 'socket connect from ID: ' + socket.socketID ); 38 | console.log( data ); 39 | 40 | connections[socket.socketID] = { 41 | socket: socket, 42 | name: data.name, 43 | id: socket.socketID 44 | }; 45 | socket.on('disconnect', function() { 46 | console.log( 'socket disconnect from ID: ' + socket.socketID ); 47 | delete connections[socket.socketID]; 48 | }); 49 | 50 | }; 51 | 52 | exports.on_socket_message = function( socket, data ) { 53 | console.log( 'socket message from: ' ); 54 | 55 | console.log( socket.handshake.sessionID ); 56 | var me = connections[data.id]; 57 | if ( me ) { 58 | var updated = {}; 59 | for ( var k in connections ) { 60 | console.log( connections[k].name ); 61 | 62 | if ( !connections[k].socket.disconnected ) { 63 | updated[k] = connections[k]; 64 | if ( connections[k] !== me ) { 65 | var s = connections[k].socket; 66 | s.emit('appdata', { 67 | key: 'message', 68 | data: { 69 | name: me.name, 70 | message: data.message 71 | } 72 | }); 73 | } 74 | } 75 | } 76 | connections = updated; 77 | } 78 | 79 | }; 80 | 81 | 82 | exports.on_destroy = function() { 83 | }; -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-crimson_editor.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssText='.ace-crimson-editor .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-crimson-editor .ace_gutter-layer {width: 100%;text-align: right;}.ace-crimson-editor .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-crimson-editor .ace_scroller {background-color: #FFFFFF;}.ace-crimson-editor .ace_text-layer {color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor {border-left: 2px solid black;}.ace-crimson-editor .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-crimson-editor .ace_invisible {color: rgb(191, 191, 191);}.ace-crimson-editor .ace_identifier {color: black;}.ace-crimson-editor .ace_keyword {color: blue;}.ace-crimson-editor .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-crimson-editor .ace_constant.ace_language {color: rgb(255, 156, 0);}.ace-crimson-editor .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_invalid {text-decoration: line-through;color: rgb(224, 0, 0);}.ace-crimson-editor .ace_fold {}.ace-crimson-editor .ace_support.ace_function {color: rgb(192, 0, 0);}.ace-crimson-editor .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_support.ace_type,.ace-crimson-editor .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-crimson-editor .ace_keyword.ace_operator {color: rgb(49, 132, 149);}.ace-crimson-editor .ace_string {color: rgb(128, 0, 128);}.ace-crimson-editor .ace_comment {color: rgb(76, 136, 107);}.ace-crimson-editor .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-crimson-editor .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-crimson-editor .ace_constant.ace_numeric {color: rgb(0, 0, 64);}.ace-crimson-editor .ace_variable {color: rgb(0, 64, 128);}.ace-crimson-editor .ace_xml-pe {color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-crimson-editor .ace_gutter-active-line {background-color : #dcdcdc;}.ace-crimson-editor .ace_meta.ace_tag {color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex {color: rgb(192, 0, 192);}.ace-crimson-editor .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-crimson-editor";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/pi/wifi/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder::Wifi Setup 5 | 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
    27 | 28 |
    29 |
    30 |
    31 | 32 | 50 | 51 | 52 | 57 | 58 | 59 |
    60 |
    61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-sh.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/sh_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./sh_highlight_rules").ShHighlightRules,u=e("../range").Range,a=function(){this.$tokenizer=new s((new o).getRules())};r.inherits(a,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\s*)#/;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var a=new u(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);a.start.row=o,a.end.row=o,a.end.column=l[0].length,t.replace(a,l[1])}}else t.indentRows(n,r,"#")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.$tokenizer.getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.$tokenizer.getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))}}.call(a.prototype),t.Mode=a}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set",t="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",n=this.createKeywordMapper({keyword:e,"constant.language":t,"invalid.deprecated":"debugger"},"identifier"),r="(?:(?:[1-9]\\d*)|(?:0))",i="(?:\\.\\d+)",s="(?:\\d+)",o="(?:(?:"+s+"?"+i+")|(?:"+s+"\\.))",u="(?:(?:"+o+"|"+s+")"+")",a="(?:"+u+"|"+o+")",f="(?:&"+s+")",l="[a-zA-Z][a-zA-Z0-9_]*",c="(?:(?:\\$"+l+")|(?:"+l+"=))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"variable.language",regex:h},{token:"variable",regex:c},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:r+"\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.ShHighlightRules=s}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-tomorrow_night.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night",t.cssText=".ace-tomorrow-night .ace_gutter {background: #25282c;color: #C5C8C6}.ace-tomorrow-night .ace_print-margin {width: 1px;background: #25282c}.ace-tomorrow-night .ace_scroller {background-color: #1D1F21}.ace-tomorrow-night .ace_text-layer {color: #C5C8C6}.ace-tomorrow-night .ace_cursor {border-left: 2px solid #AEAFAD}.ace-tomorrow-night .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #AEAFAD}.ace-tomorrow-night .ace_marker-layer .ace_selection {background: #373B41}.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1D1F21;border-radius: 2px}.ace-tomorrow-night .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #4B4E55}.ace-tomorrow-night .ace_marker-layer .ace_active-line {background: #282A2E}.ace-tomorrow-night .ace_gutter-active-line {background-color: #282A2E}.ace-tomorrow-night .ace_marker-layer .ace_selected-word {border: 1px solid #373B41}.ace-tomorrow-night .ace_invisible {color: #4B4E55}.ace-tomorrow-night .ace_keyword,.ace-tomorrow-night .ace_meta,.ace-tomorrow-night .ace_storage,.ace-tomorrow-night .ace_storage.ace_type,.ace-tomorrow-night .ace_support.ace_type {color: #B294BB}.ace-tomorrow-night .ace_keyword.ace_operator {color: #8ABEB7}.ace-tomorrow-night .ace_constant.ace_character,.ace-tomorrow-night .ace_constant.ace_language,.ace-tomorrow-night .ace_constant.ace_numeric,.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night .ace_support.ace_constant,.ace-tomorrow-night .ace_variable.ace_parameter {color: #DE935F}.ace-tomorrow-night .ace_constant.ace_other {color: #CED1CF}.ace-tomorrow-night .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night .ace_fold {background-color: #81A2BE;border-color: #C5C8C6}.ace-tomorrow-night .ace_entity.ace_name.ace_function,.ace-tomorrow-night .ace_support.ace_function,.ace-tomorrow-night .ace_variable {color: #81A2BE}.ace-tomorrow-night .ace_support.ace_class,.ace-tomorrow-night .ace_support.ace_type {color: #F0C674}.ace-tomorrow-night .ace_markup.ace_heading,.ace-tomorrow-night .ace_string {color: #B5BD68}.ace-tomorrow-night .ace_entity.ace_name.ace_tag,.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night .ace_meta.ace_tag,.ace-tomorrow-night .ace_string.ace_regexp,.ace-tomorrow-night .ace_variable {color: #CC6666}.ace-tomorrow-night .ace_comment {color: #969896}.ace-tomorrow-night .ace_markup.ace_underline {text-decoration: underline}.ace-tomorrow-night .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQlVf8z7Bq1ar/AA/hBFp7egmpAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-mono_industrial.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-mono-industrial",t.cssText=".ace-mono-industrial .ace_gutter {background: #1d2521;color: #C5C9C9}.ace-mono-industrial .ace_print-margin {width: 1px;background: #555651}.ace-mono-industrial .ace_scroller {background-color: #222C28}.ace-mono-industrial .ace_text-layer {color: #FFFFFF}.ace-mono-industrial .ace_cursor {border-left: 2px solid #FFFFFF}.ace-mono-industrial .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-mono-industrial .ace_marker-layer .ace_selection {background: rgba(145, 153, 148, 0.40)}.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #222C28;border-radius: 2px}.ace-mono-industrial .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-mono-industrial .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_marker-layer .ace_active-line {background: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_gutter-active-line {background-color: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_marker-layer .ace_selected-word {border: 1px solid rgba(145, 153, 148, 0.40)}.ace-mono-industrial .ace_invisible {color: rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_string {background-color: #151C19;color: #FFFFFF}.ace-mono-industrial .ace_keyword,.ace-mono-industrial .ace_meta {color: #A39E64}.ace-mono-industrial .ace_constant,.ace-mono-industrial .ace_constant.ace_character,.ace-mono-industrial .ace_constant.ace_character.ace_escape,.ace-mono-industrial .ace_constant.ace_numeric,.ace-mono-industrial .ace_constant.ace_other {color: #E98800}.ace-mono-industrial .ace_entity.ace_name.ace_function,.ace-mono-industrial .ace_keyword.ace_operator,.ace-mono-industrial .ace_variable {color: #A8B3AB}.ace-mono-industrial .ace_invalid {color: #FFFFFF;background-color: rgba(153, 0, 0, 0.68)}.ace-mono-industrial .ace_support.ace_constant {color: #C87500}.ace-mono-industrial .ace_fold {background-color: #A8B3AB;border-color: #FFFFFF}.ace-mono-industrial .ace_support.ace_function {color: #588E60}.ace-mono-industrial .ace_entity.ace_name,.ace-mono-industrial .ace_support.ace_class,.ace-mono-industrial .ace_support.ace_type {color: #5778B6}.ace-mono-industrial .ace_storage {color: #C23B00}.ace-mono-industrial .ace_variable.ace_language,.ace-mono-industrial .ace_variable.ace_parameter {color: #648BD2}.ace-mono-industrial .ace_comment {color: #666C68;background-color: #151C19}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {color: #909993}.ace-mono-industrial .ace_markup.ace_underline {text-decoration: underline}.ace-mono-industrial .ace_entity.ace_name.ace_tag {color: #A65EFF}.ace-mono-industrial .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ0tH4zzBz5sz/ABAOBECKH+evAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/pi/auth/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | background-color: #f1c40f; 4 | color: #fff; 5 | } 6 | 7 | .form { 8 | text-align: center; 9 | width: 400px; 10 | left: 50%; 11 | margin-top: 60px; 12 | margin-left: -200px; 13 | position: relative; 14 | } 15 | 16 | #animation { 17 | position: absolute; 18 | height: 100%; 19 | width: 100%; 20 | } 21 | 22 | .centercontainer { 23 | display: table; 24 | height: 100%; 25 | width: 100%; 26 | position: absolute; 27 | top:0px; 28 | left:0px; 29 | } 30 | .center { 31 | display: table-cell; 32 | vertical-align: middle; 33 | } 34 | 35 | h1 { 36 | font-size: 28px; 37 | line-height: 28px; 38 | font-weight: bold; 39 | margin:0; 40 | padding: 0 0 20px 0; 41 | } 42 | 43 | .instructions { 44 | font-size: 21px; 45 | line-height: 1.2em; 46 | padding: 0 0 20px 0; 47 | } 48 | 49 | .formfield { 50 | position: relative; 51 | width: 400px; 52 | } 53 | .formfield.textinput .label { 54 | position: absolute; 55 | color: #999; 56 | top:13px; 57 | left:10px; 58 | font-size: 16px; 59 | line-height: 20px; 60 | -webkit-font-smoothing: antialiased; 61 | } 62 | 63 | .formfield input[type=text], .formfield input[type=password] { 64 | border: 2px solid transparent; 65 | width: 376px; 66 | padding: 10px 10px; 67 | background-color: #fff; 68 | color: #666; 69 | height: 20px; 70 | line-height: 16px; 71 | font-size: 16px; 72 | font-family: Arial, sans-serif; 73 | border-radius: 3px; 74 | -webkit-font-smoothing: antialiased; 75 | margin-bottom: 24px; 76 | } 77 | 78 | .formfield input.error { 79 | border-color: rgba(255,0,0,0.5); 80 | } 81 | 82 | .errormessage { 83 | border: 2px solid transparent; 84 | width: 376px; 85 | padding: 10px 10px; 86 | background-color: #e74c3c; 87 | color: #ffffff; 88 | min-height: 20px; 89 | line-height: 20px; 90 | font-size: 12px; 91 | font-family: Arial, sans-serif; 92 | border-radius: 3px; 93 | -webkit-font-smoothing: antialiased; 94 | margin-bottom: 24px; 95 | text-transform: uppercase; 96 | } 97 | 98 | .submit { 99 | font-size: 21px; 100 | font-weight: bold; 101 | line-height: 60px; 102 | border-radius: 4px; 103 | width:400px; 104 | margin-bottom: 24px; 105 | background-color: rgba(0,0,0,0.6); 106 | } 107 | .submit.disabled, .submit.disabled:hover { 108 | background-color: rgba(0,0,0,0.2); 109 | } 110 | .submit:hover { 111 | background-color: rgba(0,0,0,1); 112 | cursor: pointer; 113 | } 114 | 115 | .cancel { 116 | font-size: 21px; 117 | font-weight: bold; 118 | line-height: 60px; 119 | border-radius: 4px; 120 | width:400px; 121 | margin-bottom: 24px; 122 | background-color: rgba(0,0,0,0.6); 123 | } 124 | .cancel:hover { 125 | background-color: rgba(0,0,0,1); 126 | cursor: pointer; 127 | } 128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /coder-apps/common/auth/static/css/index.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | background-color: #f1c40f; 4 | color: #fff; 5 | } 6 | 7 | .form { 8 | text-align: center; 9 | width: 400px; 10 | left: 50%; 11 | margin-top: 60px; 12 | margin-left: -200px; 13 | position: relative; 14 | } 15 | 16 | #animation { 17 | position: absolute; 18 | height: 100%; 19 | width: 100%; 20 | } 21 | 22 | .centercontainer { 23 | display: table; 24 | height: 100%; 25 | width: 100%; 26 | position: absolute; 27 | top:0px; 28 | left:0px; 29 | } 30 | .center { 31 | display: table-cell; 32 | vertical-align: middle; 33 | } 34 | 35 | h1 { 36 | font-size: 28px; 37 | line-height: 28px; 38 | font-weight: bold; 39 | margin:0; 40 | padding: 0 0 20px 0; 41 | } 42 | 43 | .instructions { 44 | font-size: 21px; 45 | line-height: 1.2em; 46 | padding: 0 0 20px 0; 47 | } 48 | 49 | .formfield { 50 | position: relative; 51 | width: 400px; 52 | } 53 | .formfield.textinput .label { 54 | position: absolute; 55 | color: #999; 56 | top:13px; 57 | left:10px; 58 | font-size: 16px; 59 | line-height: 20px; 60 | -webkit-font-smoothing: antialiased; 61 | } 62 | 63 | .formfield input[type=text], .formfield input[type=password] { 64 | border: 2px solid transparent; 65 | width: 376px; 66 | padding: 10px 10px; 67 | background-color: #fff; 68 | color: #666; 69 | height: 20px; 70 | line-height: 16px; 71 | font-size: 16px; 72 | font-family: Arial, sans-serif; 73 | border-radius: 3px; 74 | -webkit-font-smoothing: antialiased; 75 | margin-bottom: 24px; 76 | } 77 | 78 | .formfield input.error { 79 | border-color: rgba(255,0,0,0.5); 80 | } 81 | 82 | .errormessage { 83 | border: 2px solid transparent; 84 | width: 376px; 85 | padding: 10px 10px; 86 | background-color: #e74c3c; 87 | color: #ffffff; 88 | min-height: 20px; 89 | line-height: 20px; 90 | font-size: 12px; 91 | font-family: Arial, sans-serif; 92 | border-radius: 3px; 93 | -webkit-font-smoothing: antialiased; 94 | margin-bottom: 24px; 95 | text-transform: uppercase; 96 | } 97 | 98 | .submit { 99 | font-size: 21px; 100 | font-weight: bold; 101 | line-height: 60px; 102 | border-radius: 4px; 103 | width:400px; 104 | margin-bottom: 24px; 105 | background-color: rgba(0,0,0,0.6); 106 | } 107 | .submit.disabled, .submit.disabled:hover { 108 | background-color: rgba(0,0,0,0.2); 109 | } 110 | .submit:hover { 111 | background-color: rgba(0,0,0,1); 112 | cursor: pointer; 113 | } 114 | 115 | .cancel { 116 | font-size: 21px; 117 | font-weight: bold; 118 | line-height: 60px; 119 | border-radius: 4px; 120 | width:400px; 121 | margin-bottom: 24px; 122 | background-color: rgba(0,0,0,0.6); 123 | } 124 | .cancel:hover { 125 | background-color: rgba(0,0,0,1); 126 | cursor: pointer; 127 | } 128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /coder-apps/common/eyeball/static/js/index.js: -------------------------------------------------------------------------------- 1 | 2 | $(document).ready( function() { 3 | 4 | var centered = document.getElementsByClassName( 'center' ); 5 | var eyes = document.getElementsByClassName( 'eye' ); 6 | var eyeRadius = 100; 7 | var mouseX = 0.0; 8 | var mouseY = 0.0; 9 | 10 | // Returns the pixel value of a number, e.g '42px' 11 | function toPixels( number ) { 12 | return Math.round( number ) + 'px'; 13 | } 14 | 15 | // Applies the CSS3 blink animation to the eyes 16 | function blink() { 17 | 18 | for ( var i = 0; i < eyes.length; i++ ) { 19 | 20 | var eye = eyes[i]; 21 | var container = eye.getElementsByClassName( 'container' )[0]; 22 | container.style.webkitAnimation = ''; 23 | 24 | // Since the animation property was already present on the element, 25 | // we need to wait until the next frame to add it back so that it 26 | // registers as a change 27 | setTimeout( function() { 28 | container.style.webkitAnimation = 'blink 500ms ease-in-out'; 29 | }, 0); 30 | } 31 | 32 | setTimeout( blink, 4000 + Math.random() * 5000 ); 33 | } 34 | 35 | function updateEyes() { 36 | 37 | for ( var i = 0; i < eyes.length; i++ ) { 38 | 39 | var eye = eyes[i]; 40 | var eyeBounds = eye.getBoundingClientRect(); 41 | 42 | // Find the angle from the mouse to the center of the eye... 43 | 44 | // Then subract the eye center from them 45 | var deltaX = mouseX - eyeBounds.left - eyeRadius; 46 | var deltaY = mouseY - eyeBounds.top - eyeRadius; 47 | 48 | // Now find the angle 49 | var angle = Math.atan2( deltaY, deltaX ); 50 | 51 | // Compute the distance using Pythagorean theorem: a^2 + b^2 = c^2 52 | var distance = Math.sqrt( deltaX * deltaX + deltaY * deltaY ); 53 | 54 | // Limit the distance to the radius of the eye 55 | var offset = Math.min( distance, eyeRadius * 0.6 ); 56 | 57 | // Now position the iris 58 | var xPos = Math.cos( angle ) * offset; 59 | var yPos = Math.sin( angle ) * offset; 60 | 61 | // Move the iris 62 | var iris = eye.getElementsByClassName( 'iris' )[0]; 63 | iris.style.left = toPixels( eyeRadius + xPos ); 64 | iris.style.top = toPixels( eyeRadius + yPos ); 65 | } 66 | } 67 | 68 | // Center all elements with the `centered` class 69 | for ( var i = 0; i < centered.length; i++ ) { 70 | 71 | var obj = centered[i]; 72 | obj.style.marginTop = toPixels( obj.clientHeight * -0.5 ); 73 | obj.style.marginLeft = toPixels( obj.clientWidth * -0.5 ); 74 | } 75 | 76 | // Handle mousemove events 77 | document.addEventListener( 'mousemove', function( event ) { 78 | 79 | // Update the mouse position 80 | mouseX = event.clientX; 81 | mouseY = event.clientY; 82 | 83 | updateEyes(); 84 | }); 85 | 86 | updateEyes(); 87 | blink(); 88 | 89 | }); -------------------------------------------------------------------------------- /findcoder-appengine/static/assets/css/index.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0; 5 | border: 0; 6 | padding: 0; 7 | } 8 | 9 | body { 10 | background-color: #e67e22; 11 | font-family: Arial, Helvetica, sans-serif; 12 | color: #4c4c4c; 13 | font-size: 16px; 14 | line-height: 1.2em; 15 | -webkit-font-smoothing: antialiased; 16 | } 17 | 18 | #coder_nav { 19 | width: 100%; 20 | background-color: #3e3e3e; 21 | position: fixed; 22 | height: 60px; 23 | min-width: 300px; 24 | z-index: 3; 25 | top: 0px; 26 | } 27 | 28 | #coder_logo { 29 | display:block; 30 | color: #fff; 31 | font-size: 24px; 32 | line-height: 60px; 33 | padding-left: 24px; 34 | text-transform: uppercase; 35 | } 36 | 37 | #coder_list { 38 | display: block; 39 | margin-top: 120px; 40 | width: 278px; 41 | position: relative; 42 | margin: 0 auto; 43 | padding-top: 120px; 44 | } 45 | #fallback { 46 | display: block; 47 | width: 278px; 48 | position: relative; 49 | margin: 0 auto; 50 | padding-top: 60px; 51 | } 52 | 53 | .device { 54 | text-align: center; 55 | width: 270px; 56 | height: 90px; 57 | margin-bottom: 24px; 58 | position: relative; 59 | } 60 | .device:hover { 61 | cursor: pointer; 62 | } 63 | .device .bg, .device .shadow { 64 | width: 270px; 65 | height: 90px; 66 | position: absolute; 67 | left: 0; 68 | top: 0; 69 | background-color: #fff; 70 | } 71 | .device .shadow { 72 | background-color: rgba(0,0,0,.1); 73 | top: 4px; 74 | left: 4px; 75 | } 76 | .device:hover .bg { 77 | border: 2px solid #ffffff; 78 | left: -1px; 79 | top: -1px; 80 | } 81 | .device:hover .shadow { 82 | top: 4px; 83 | left: 4px; 84 | width: 274px; 85 | height: 94px; 86 | } 87 | 88 | .device .name { 89 | position: relative; 90 | font-size: 20px; 91 | line-height: 50px; 92 | height: 50px; 93 | width: 230px; 94 | padding: 20px; 95 | text-overflow: ellipsis; 96 | } 97 | 98 | h2 { 99 | line-height: 20px; 100 | font-size: 20px; 101 | color: #fff; 102 | font-weight: normal; 103 | margin: 0 0 10px 0; 104 | } 105 | .info { 106 | font-size: 16px; 107 | line-height: 18px; 108 | color: #fff; 109 | margin: 0 0 24px 0; 110 | } 111 | .help { 112 | font-size: 16px; 113 | line-height: 18px; 114 | color: #fff; 115 | padding: 24px 0 60px 0; 116 | } 117 | .help a, .help a:hover, .help a:link, .help a:visited { 118 | text-decoration: underline; 119 | color: #fff; 120 | } 121 | .refresh { 122 | padding: 0; 123 | height: 24px; 124 | width: 270px; 125 | margin-bottom: 24px; 126 | text-align: center; 127 | z-index: 3; 128 | line-height: 24px; 129 | font-size: 16px; 130 | border-radius: 4px; 131 | background-color: rgba( 0,0,0,0.1 ); 132 | color: #fff; 133 | top: 0; 134 | right: -90px; 135 | } 136 | .refresh:hover { 137 | background-color: rgba( 0,0,0,1 ); 138 | cursor: pointer; 139 | } 140 | -------------------------------------------------------------------------------- /installer/stock_raspbian/scripts/01_headless_basics.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "### Add ssh to start up." 4 | insserv ssh 5 | update-rc.d ssh enable 6 | echo "" 7 | 8 | echo "### Install vim." 9 | apt-get -y install vim 10 | echo "" 11 | 12 | echo "### Install avahi daemon (enables mDNS/DNS-SD so you can connect to coder.local)." 13 | apt-get -y install avahi-daemon avahi-utils 14 | cp ../../../raspbian-addons/etc/avahi/avahi-daemon.conf /etc/avahi/avahi-daemon.conf 15 | cp ../../../raspbian-addons/etc/avahi/services/coder.service /etc/avahi/services/ 16 | echo "" 17 | 18 | echo "### Install dhcpd daemon (will be used to give addresses when in ad-hoc hotspot mode)." 19 | apt-get -y install isc-dhcp-server 20 | echo "" 21 | 22 | echo "### Update dhcpd init.d script so it doesn't run by default." 23 | cp ../../../raspbian-addons/etc/init.d/isc-dhcp-server /etc/init.d/isc-dhcp-server 24 | insserv -r isc-dhcp-server 25 | echo "" 26 | 27 | echo "### Set up wpaconfig group." 28 | addgroup --system wpaconfig 29 | adduser coder wpaconfig 30 | echo "" 31 | 32 | echo "### Updating headless boot scripts." 33 | cp -rv ../../../raspbian-addons/boot/coder_settings/ /boot/ 34 | cp -v /boot/config.txt /boot/config.bak 35 | cp -v ../../../raspbian-addons/boot/config.txt /boot/config.txt 36 | 37 | cp -v ../../../raspbian-addons/etc/iptables.up.rules /etc/ 38 | cp -v ../../../raspbian-addons/etc/network/if-pre-up.d/* /etc/network/if-pre-up.d/ 39 | cp -v ../../../raspbian-addons/etc/network/interfaces* /etc/network/ 40 | 41 | cp -v ../../../raspbian-addons/etc/default/* /etc/default/ 42 | cp -v ../../../raspbian-addons/etc/dhcp/dhcpd.conf /etc/dhcp/ 43 | cp -v ../../../raspbian-addons/etc/modprobe.d/* /etc/modprobe.d/ 44 | cp -v ../../../raspbian-addons/etc/modules /etc/modules 45 | 46 | cp -v ../../../raspbian-addons/etc/wpa_supplicant/wpa_supplicant* /etc/wpa_supplicant/ 47 | chown -v root:wpaconfig /etc/wpa_supplicant/wpa_supplicant* 48 | chmod -v 660 /etc/wpa_supplicant/wpa_supplicant* 49 | 50 | cp -v ../../../raspbian-addons/etc/init.d/coder-daemon /etc/init.d/ 51 | cp -v ../../../raspbian-addons/etc/init.d/generate-ssh-hostkeys /etc/init.d/ 52 | cp -v ../../../raspbian-addons/etc/init.d/pull-coder-reset /etc/init.d/ 53 | cp -v ../../../raspbian-addons/etc/init.d/pull-hostname /etc/init.d/ 54 | cp -v ../../../raspbian-addons/etc/init.d/pull-net-interfaces /etc/init.d/ 55 | cp -v ../../../raspbian-addons/etc/init.d/pull-wpa-supplicant /etc/init.d/ 56 | 57 | echo "### Add init scripts to start up routine." 58 | echo "Coder" 59 | insserv coder-daemon 60 | update-rc.d coder-daemon enable 61 | 62 | echo "Auto ssh key regen" 63 | insserv generate-ssh-hostkeys 64 | update-rc.d generate-ssh-hostkeys enable 65 | 66 | echo "Coder quick reset capability" 67 | insserv pull-coder-reset 68 | update-rc.d pull-coder-reset enable 69 | 70 | echo "SD host configuration capability" 71 | insserv pull-hostname 72 | update-rc.d pull-hostname enable 73 | 74 | echo "SD network interface configuration capability" 75 | insserv pull-net-interfaces 76 | update-rc.d pull-net-interfaces enable 77 | 78 | echo "SD wireless configuration capability" 79 | insserv pull-wpa-supplicant 80 | update-rc.d pull-wpa-supplicant enable 81 | echo "" 82 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-dreamweaver.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dreamweaver",t.cssText='.ace-dreamweaver .ace_gutter {background: #e8e8e8;color: #333;}.ace-dreamweaver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-dreamweaver .ace_scroller {background-color: #FFFFFF;}.ace-dreamweaver .ace_fold {background-color: #757AD8;}.ace-dreamweaver .ace_text-layer {}.ace-dreamweaver .ace_cursor {border-left: 2px solid black;}.ace-dreamweaver .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-dreamweaver .ace_invisible {color: rgb(191, 191, 191);}.ace-dreamweaver .ace_storage,.ace-dreamweaver .ace_keyword {color: blue;}.ace-dreamweaver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-dreamweaver .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-dreamweaver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-dreamweaver .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-dreamweaver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_support.ace_type,.ace-dreamweaver .ace_support.ace_class {color: #009;}.ace-dreamweaver .ace_support.ace_php_tag {color: #f00;}.ace-dreamweaver .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-dreamweaver .ace_string {color: #00F;}.ace-dreamweaver .ace_comment {color: rgb(76, 136, 107);}.ace-dreamweaver .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-dreamweaver .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-dreamweaver .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-dreamweaver .ace_variable {color: #06F}.ace-dreamweaver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-dreamweaver .ace_entity.ace_name.ace_function {color: #00F;}.ace-dreamweaver .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-dreamweaver .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-dreamweaver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-dreamweaver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-dreamweaver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-dreamweaver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-dreamweaver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-dreamweaver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-dreamweaver .ace_meta.ace_tag {color:#009;}.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {color:#060;}.ace-dreamweaver .ace_meta.ace_tag.ace_form {color:#F90;}.ace-dreamweaver .ace_meta.ace_tag.ace_image {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_script {color:#900;}.ace-dreamweaver .ace_meta.ace_tag.ace_style {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_table {color:#099;}.ace-dreamweaver .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-dreamweaver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-apps/common/hello_coder/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Coder 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
    29 |

    Hello Coder

    30 |

    Get started with Coder by exploring this app.

    31 |

    Click the edit button "</>" to dive in.

    32 |

    It's at the top right.

    33 |
    34 | 35 | 36 | 37 | 38 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-tomorrow_night_blue.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-blue",t.cssText=".ace-tomorrow-night-blue .ace_gutter {background: #00204b;color: #7388b5}.ace-tomorrow-night-blue .ace_print-margin {width: 1px;background: #00204b}.ace-tomorrow-night-blue .ace_scroller {background-color: #002451}.ace-tomorrow-night-blue .ace_constant.ace_other,.ace-tomorrow-night-blue .ace_text-layer {color: #FFFFFF}.ace-tomorrow-night-blue .ace_cursor {border-left: 2px solid #FFFFFF}.ace-tomorrow-night-blue .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #FFFFFF}.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {background: #003F8E}.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002451;border-radius: 2px}.ace-tomorrow-night-blue .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404F7D}.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {background: #00346E}.ace-tomorrow-night-blue .ace_gutter-active-line {background-color: #022040}.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {border: 1px solid #003F8E}.ace-tomorrow-night-blue .ace_invisible {color: #404F7D}.ace-tomorrow-night-blue .ace_keyword,.ace-tomorrow-night-blue .ace_meta,.ace-tomorrow-night-blue .ace_storage,.ace-tomorrow-night-blue .ace_storage.ace_type,.ace-tomorrow-night-blue .ace_support.ace_type {color: #EBBBFF}.ace-tomorrow-night-blue .ace_keyword.ace_operator {color: #99FFFF}.ace-tomorrow-night-blue .ace_constant.ace_character,.ace-tomorrow-night-blue .ace_constant.ace_language,.ace-tomorrow-night-blue .ace_constant.ace_numeric,.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-blue .ace_support.ace_constant,.ace-tomorrow-night-blue .ace_variable.ace_parameter {color: #FFC58F}.ace-tomorrow-night-blue .ace_invalid {color: #FFFFFF;background-color: #F99DA5}.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #EBBBFF}.ace-tomorrow-night-blue .ace_fold {background-color: #BBDAFF;border-color: #FFFFFF}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,.ace-tomorrow-night-blue .ace_support.ace_function,.ace-tomorrow-night-blue .ace_variable {color: #BBDAFF}.ace-tomorrow-night-blue .ace_support.ace_class,.ace-tomorrow-night-blue .ace_support.ace_type {color: #FFEEAD}.ace-tomorrow-night-blue .ace_markup.ace_heading,.ace-tomorrow-night-blue .ace_string {color: #D1F1A9}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-blue .ace_meta.ace_tag,.ace-tomorrow-night-blue .ace_string.ace_regexp,.ace-tomorrow-night-blue .ace_variable {color: #FF9DA4}.ace-tomorrow-night-blue .ace_comment {color: #7285B7}.ace-tomorrow-night-blue .ace_markup.ace_underline {text-decoration: underline}.ace-tomorrow-night-blue .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgUAn8z7Bq1ar/ABBUBHJ4/r3JAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/mode-latex.js: -------------------------------------------------------------------------------- 1 | define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./latex_highlight_rules").LatexHighlightRules,u=e("./folding/latex").FoldMode,a=e("../range").Range,f=function(){this.$tokenizer=new s((new o).getRules()),this.foldingRules=new u};r.inherits(f,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\s*)\%/;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new a(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,"%")},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)}}.call(f.prototype),t.Mode=f}),define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"string",regex:"\\$(?:(?:\\\\.)|(?:[^\\$\\\\]))*?\\$"},{token:"comment",regex:"%.*$"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("ace/token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/^\s*\\(begin)|(section|subsection)\b|{\s*$/,this.foldingStopMarker=/^\s*\\(end)\b|^\s*}/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):i[2]?this.latexSection(e,n,i[0].length-1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.latexBlock=function(e,t,n){var r={"\\begin":1,"\\end":-1},i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!=="keyword")return;var a=u.value,f=r[a],l=function(){var e=i.stepForward(),t=e.type=="lparen"?i.stepForward().value:"";return f===-1&&(i.stepBackward(),t&&i.stepBackward()),t},c=[l()],h=f===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=f===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(u.type!=="keyword")continue;var d=r[u.value];if(!d)continue;var v=l();if(d===f)c.unshift(v);else if(c.shift()!==v||!c.length)break}if(c.length)return;var t=i.getCurrentTokenRow();return f===-1?new s(t,e.getLine(t).length,p,h):new s(p,h,t,i.getCurrentTokenColumn())},this.latexSection=function(e,t,n){var r=["\\subsection","\\section","\\begin","\\end"],i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword")return;var a=r.indexOf(u.value),f=0,l=t;while(u=i.stepForward()){if(u.type!=="keyword")continue;var c=r.indexOf(u.value);if(c>=2){f||(l=i.getCurrentTokenRow()-1),f+=c==2?1:-1;if(f<0)break}else if(c>=a)break}f||(l=i.getCurrentTokenRow()-1);while(l>t&&!/\S/.test(e.getLine(l)))l--;return new s(t,e.getLine(t).length,l,e.getLine(l).length)}}.call(u.prototype)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-tomorrow_night_bright.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-bright",t.cssText=".ace-tomorrow-night-bright .ace_gutter {background: #1a1a1a;color: #DEDEDE}.ace-tomorrow-night-bright .ace_print-margin {width: 1px;background: #1a1a1a}.ace-tomorrow-night-bright .ace_scroller {background-color: #000000}.ace-tomorrow-night-bright .ace_text-layer {color: #DEDEDE}.ace-tomorrow-night-bright .ace_cursor {border-left: 2px solid #9F9F9F}.ace-tomorrow-night-bright .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #9F9F9F}.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {background: #424242}.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #000000;border-radius: 2px}.ace-tomorrow-night-bright .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #343434}.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-tomorrow-night-bright .ace_gutter-active-line {background-color: #2A2A2A}.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {border: 1px solid #424242}.ace-tomorrow-night-bright .ace_invisible {color: #343434}.ace-tomorrow-night-bright .ace_keyword,.ace-tomorrow-night-bright .ace_meta,.ace-tomorrow-night-bright .ace_storage,.ace-tomorrow-night-bright .ace_storage.ace_type,.ace-tomorrow-night-bright .ace_support.ace_type {color: #C397D8}.ace-tomorrow-night-bright .ace_keyword.ace_operator {color: #70C0B1}.ace-tomorrow-night-bright .ace_constant.ace_character,.ace-tomorrow-night-bright .ace_constant.ace_language,.ace-tomorrow-night-bright .ace_constant.ace_numeric,.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-bright .ace_support.ace_constant,.ace-tomorrow-night-bright .ace_variable.ace_parameter {color: #E78C45}.ace-tomorrow-night-bright .ace_constant.ace_other {color: #EEEEEE}.ace-tomorrow-night-bright .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night-bright .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,.ace-tomorrow-night-bright .ace_support.ace_function,.ace-tomorrow-night-bright .ace_variable {color: #7AA6DA}.ace-tomorrow-night-bright .ace_support.ace_class,.ace-tomorrow-night-bright .ace_support.ace_type {color: #E7C547}.ace-tomorrow-night-bright .ace_markup.ace_heading,.ace-tomorrow-night-bright .ace_string {color: #B9CA4A}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-bright .ace_meta.ace_tag,.ace-tomorrow-night-bright .ace_string.ace_regexp,.ace-tomorrow-night-bright .ace_variable {color: #D54E53}.ace-tomorrow-night-bright .ace_comment {color: #969896}.ace-tomorrow-night-bright .ace_markup.ace_underline {text-decoration: underline}.ace-tomorrow-night-bright .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGD4z7Bq1ar/AAz9A/2naJQKAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /coder-base/static/common/ace-min/theme-tomorrow_night_eighties.js: -------------------------------------------------------------------------------- 1 | define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-eighties",t.cssText=".ace-tomorrow-night-eighties .ace_gutter {background: #272727;color: #CCC}.ace-tomorrow-night-eighties .ace_print-margin {width: 1px;background: #272727}.ace-tomorrow-night-eighties .ace_scroller {background-color: #2D2D2D}.ace-tomorrow-night-eighties .ace_constant.ace_other,.ace-tomorrow-night-eighties .ace_text-layer {color: #CCCCCC}.ace-tomorrow-night-eighties .ace_cursor {border-left: 2px solid #CCCCCC}.ace-tomorrow-night-eighties .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #CCCCCC}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {background: #515151}.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2D2D2D;border-radius: 2px}.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #6A6A6A}.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {background: #393939}.ace-tomorrow-night-eighties .ace_gutter-active-line {background-color: #393939}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {border: 1px solid #515151}.ace-tomorrow-night-eighties .ace_invisible {color: #6A6A6A}.ace-tomorrow-night-eighties .ace_keyword,.ace-tomorrow-night-eighties .ace_meta,.ace-tomorrow-night-eighties .ace_storage,.ace-tomorrow-night-eighties .ace_storage.ace_type,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #CC99CC}.ace-tomorrow-night-eighties .ace_keyword.ace_operator {color: #66CCCC}.ace-tomorrow-night-eighties .ace_constant.ace_character,.ace-tomorrow-night-eighties .ace_constant.ace_language,.ace-tomorrow-night-eighties .ace_constant.ace_numeric,.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-eighties .ace_support.ace_constant,.ace-tomorrow-night-eighties .ace_variable.ace_parameter {color: #F99157}.ace-tomorrow-night-eighties .ace_invalid {color: #CDCDCD;background-color: #F2777A}.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {color: #CDCDCD;background-color: #CC99CC}.ace-tomorrow-night-eighties .ace_fold {background-color: #6699CC;border-color: #CCCCCC}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,.ace-tomorrow-night-eighties .ace_support.ace_function,.ace-tomorrow-night-eighties .ace_variable {color: #6699CC}.ace-tomorrow-night-eighties .ace_support.ace_class,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #FFCC66}.ace-tomorrow-night-eighties .ace_markup.ace_heading,.ace-tomorrow-night-eighties .ace_string {color: #99CC99}.ace-tomorrow-night-eighties .ace_comment {color: #999999}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-eighties .ace_meta.ace_tag,.ace-tomorrow-night-eighties .ace_variable {color: #F2777A}.ace-tomorrow-night-eighties .ace_markup.ace_underline {text-decoration: underline}.ace-tomorrow-night-eighties .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ1dX9z7Bq1ar/ABE1BITwhhuFAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) -------------------------------------------------------------------------------- /raspbian-addons/etc/init.d/isc-dhcp-server: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # 4 | 5 | ### BEGIN INIT INFO 6 | # Provides: isc-dhcp-server 7 | # Required-Start: $remote_fs $network $syslog 8 | # Required-Stop: $remote_fs $network $syslog 9 | # Should-Start: $local_fs slapd $named 10 | # Should-Stop: $local_fs slapd 11 | # Default-Start: 12 | # Default-Stop: 13 | # Short-Description: DHCP server 14 | # Description: Dynamic Host Configuration Protocol Server 15 | ### END INIT INFO 16 | 17 | ##commented out only launching from wpa-supplicant 18 | # ORIG-Start: 2 3 4 5 19 | # ORIG-Stop: 0 1 6 20 | 21 | PATH=/sbin:/bin:/usr/sbin:/usr/bin 22 | 23 | test -f /usr/sbin/dhcpd || exit 0 24 | 25 | DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp-server}" 26 | 27 | # It is not safe to start if we don't have a default configuration... 28 | if [ ! -f "$DHCPD_DEFAULT" ]; then 29 | echo "$DHCPD_DEFAULT does not exist! - Aborting..." 30 | if [ "$DHCPD_DEFAULT" = "/etc/default/isc-dhcp-server" ]; then 31 | echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem." 32 | fi 33 | exit 0 34 | fi 35 | 36 | . /lib/lsb/init-functions 37 | 38 | # Read init script configuration 39 | [ -f "$DHCPD_DEFAULT" ] && . "$DHCPD_DEFAULT" 40 | 41 | NAME=dhcpd 42 | DESC="ISC DHCP server" 43 | # fallback to default config file 44 | DHCPD_CONF=${DHCPD_CONF:-/etc/dhcp/dhcpd.conf} 45 | # try to read pid file name from config file, with fallback to /var/run/dhcpd.pid 46 | if [ -z "$DHCPD_PID" ]; then 47 | DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1) 48 | fi 49 | DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd.pid}" 50 | 51 | test_config() 52 | { 53 | if ! /usr/sbin/dhcpd -t $OPTIONS -q -cf "$DHCPD_CONF" > /dev/null 2>&1; then 54 | echo "dhcpd self-test failed. Please fix $DHCPD_CONF." 55 | echo "The error was: " 56 | /usr/sbin/dhcpd -t $OPTIONS -cf "$DHCPD_CONF" 57 | exit 1 58 | fi 59 | } 60 | 61 | # single arg is -v for messages, -q for none 62 | check_status() 63 | { 64 | if [ ! -r "$DHCPD_PID" ]; then 65 | test "$1" != -v || echo "$NAME is not running." 66 | return 3 67 | fi 68 | if read pid < "$DHCPD_PID" && ps -p "$pid" > /dev/null 2>&1; then 69 | test "$1" != -v || echo "$NAME is running." 70 | return 0 71 | else 72 | test "$1" != -v || echo "$NAME is not running but $DHCPD_PID exists." 73 | return 1 74 | fi 75 | } 76 | 77 | case "$1" in 78 | start) 79 | test_config 80 | log_daemon_msg "Starting $DESC" "$NAME" 81 | start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \ 82 | --exec /usr/sbin/dhcpd -- \ 83 | -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES 84 | sleep 2 85 | 86 | if check_status -q; then 87 | log_end_msg 0 88 | else 89 | log_failure_msg "check syslog for diagnostics." 90 | log_end_msg 1 91 | exit 1 92 | fi 93 | ;; 94 | stop) 95 | log_daemon_msg "Stopping $DESC" "$NAME" 96 | start-stop-daemon --stop --quiet --pidfile "$DHCPD_PID" 97 | log_end_msg $? 98 | rm -f "$DHCPD_PID" 99 | ;; 100 | restart | force-reload) 101 | test_config 102 | $0 stop 103 | sleep 2 104 | $0 start 105 | if [ "$?" != "0" ]; then 106 | exit 1 107 | fi 108 | ;; 109 | status) 110 | echo -n "Status of $DESC: " 111 | check_status -v 112 | exit "$?" 113 | ;; 114 | *) 115 | echo "Usage: $0 {start|stop|restart|force-reload|status}" 116 | exit 1 117 | esac 118 | 119 | exit 0 120 | --------------------------------------------------------------------------------