A collaboration with platform workers.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Ruben van de Ven 34b7a1c280 Fix country conversion for unknown 3 months ago
scanimation Insitu changes 2 years ago
sorteerhoed Fix country conversion for unknown 3 months ago
www small cp changes 3 months ago
.gitattributes Add scanimation 2 years ago
.gitignore HIT now on https://guest.rubenvandeven.com:8888 and integrates in Mturk interface, TODO: sync timer 2 years ago
Pipfile Distance traveled in worker specs 2 years ago
Pipfile.lock Distance traveled in worker specs 2 years ago
README.md Restore script.js 2 years ago
config.yml Clean up scanimation, add pen test script, update pipfile, level the scanned images 2 years ago
disable_motors.py HIT now on https://guest.rubenvandeven.com:8888 and integrates in Mturk interface, TODO: sync timer 2 years ago
mt_task.xml Explain task more 2 years ago
requirements.txt Send drawing to server - WIP 2 years ago
scanimation.service Scanimation service 3 months ago
server_test.py server 2 years ago
sorteerhoed.py Prep as service, with buttons to start 3 months ago
sorteerhoed.service Sorteerhoed service 3 months ago
test_drawing.svg Clean up scanimation, add pen test script, update pipfile, level the scanned images 2 years ago
test_pen.py Clean up scanimation, add pen test script, update pipfile, level the scanned images 2 years ago

README.md

Webserver

Webserver is published to the web trough ssh remote forward. In /etc/ssh/sshd_config set GatewayPorts yes.

Then start autossh to maintain the connection:

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 8127:localhost:8888 sorteerhoed@here.rubenvandeven.com

To resolve the country the (imprecise) GeoLite2 Free Country dataset is used. Download it from MaxMind and store it in the project root folder.

Start server

cd mechanical_turk
screen
pipenv shell
python disable_motors.py
python sorteerhoed.py --config config.local.yml --for-real

Scanning

For scanning run visudo and add to the sudoers file:

mt	ALL=(ALL) NOPASSWD: /usr/bin/scanimage

Installation

Software dependencies:

  • python3
  • pipenv
  • usbrelay
  • autossh

Python deps:

pipenv install

Usbrelay

When installing usbrelay

apt install usbrelay

And set udev rules to access the device by anyone, according to usbrelay docs:

SUBSYSTEM=="usb", ATTR{idVendor}=="16c0",ATTR{idProduct}=="05df", MODE="0666"
KERNEL=="hidraw*", ATTRS{busnum}=="1", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", MODE="0666"

into /etc/udev/rules.d/50-dct-tech-usb-relay-2.rules and then reload rules:

sudo udevadm control --reload-rules && sudo udevadm trigger

Apache on here.rubenvandeven.com

Unfortunately an SSH remote port-forward does change the ip of the requester into ::1/127.0.0.1. One solution would be to run a proxy on the server itself, which forwards a port to our server port, while adding a X-Forwarded-For header.

Example of apache host setup to forward remote port 8888 to local port 8127, to which we connect our (auto)ssh remote tunnel (see above).

Listen 8888

<VirtualHost *:8888>
        Servername here.rubenvandeven.com

		RewriteEngins On
		RewriteCond %{HTTP:Upgrade} =websocket [NC]
		RewriteRule /(.*)           ws://localhost:8127/$1 [P,L]
		RewriteCond %{HTTP:Upgrade} !=websocket [NC]
		RewriteRule /(.*)         http://localhost:8127/$1 [P,L]

        ProxyPass / http://localhost:8127/
        ProxyPassReverse / http://localhost:8127/
        ProxyPreserveHost On
</VirtualHost>

requires a2enmod rewrite proxy proxy_http proxy_wstunnel