diff --git a/config/droid_config.json b/config/droid_config.json new file mode 100644 index 0000000..ab8e255 --- /dev/null +++ b/config/droid_config.json @@ -0,0 +1,22 @@ +{ + "thrift_host": "0.0.0.0", + "thrift_port": "9090", + "droids": [ + { + "port": "5554", + "avd": "nexus4-android7", + "display": "1", + "ws_port": "6080", + "clip": "580x1000+100+90", + "dim": "768x1280x24" + }, + { + "port": "5556", + "avd": "nexus4-android7-2", + "display": "2", + "ws_port": "6081", + "clip": "580x1000+100+90", + "dim": "768x1280x24" + } + ] +} diff --git a/config/hackerearth.ca-bundle b/config/hackerearth.ca-bundle new file mode 100755 index 0000000..4bdfcc7 --- /dev/null +++ b/config/hackerearth.ca-bundle @@ -0,0 +1,67 @@ +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy +MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh +bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh +bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0 +Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6 +ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51 +UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n +c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY +MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz +30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV +HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG +BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv +bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB +AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E +T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v +ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p +mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/ +e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps +P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY +dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc +2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG +V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4 +HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX +j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII +0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap +lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf ++AZxAeKCINT+b72x +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow +gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD +VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw +AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6 +2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr +ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt +4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq +m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/ +vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT +8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE +IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO +KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO +GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/ +s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g +JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD +AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9 +MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy +bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6 +Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ +zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj +Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY +Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5 +B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx +PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR +pu/xO28QOG8= +-----END CERTIFICATE----- diff --git a/config/hackerearth.crt b/config/hackerearth.crt new file mode 100755 index 0000000..a78bbaf --- /dev/null +++ b/config/hackerearth.crt @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFWTCCBEGgAwIBAgIQJUkJ7q4LGWXQEJS8JBxn1DANBgkqhkiG9w0BAQsFADCB +kDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxNjA0BgNV +BAMTLUNPTU9ETyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD +QTAeFw0xNTA4MjUwMDAwMDBaFw0xNzEwMDQyMzU5NTlaMF0xITAfBgNVBAsTGERv +bWFpbiBDb250cm9sIFZhbGlkYXRlZDEcMBoGA1UECxMTQ09NT0RPIFNTTCBXaWxk +Y2FyZDEaMBgGA1UEAwwRKi5oYWNrZXJlYXJ0aC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDNB+Ygzl7T9jPtg59J+Lq59dGSsQ1LKmwliklovOYI +5hLXcOolXJOi94FxIqimrJ8FQLgY+qfgGABYpfGlkJhR9njd23ybvf355bRZLr3d +ykuUoaFVv0iZdMVIsCoKfv0fizThtYPsLwpquwQLnNAAhkRF9Rx3ZEHI4mHJpz+3 +ONKXiUS9LpkIgxoigKm0EywIu5ct8Q6W2mpCkPqannnM9tgXvpmQ6OIBGzzQ2AZ3 +ROjv8VuheJfWdbWzP4ZafQCZ0n+m39QW0samglmVsg9TVlsWPSgZHxmHtf1alCqI +pImgRq4hXl+CpZmBiT40PEa2CRrw8jCtOvoH6cCW+e7fAgMBAAGjggHfMIIB2zAf +BgNVHSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUwvQU5fuF +O9nhTaZKLetqH8LCxW0wDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYD +VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGy +MQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9D +UFMwCAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5j +cmwwgYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21v +ZG9jYS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNB +LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMC0GA1Ud +EQQmMCSCESouaGFja2VyZWFydGguY29tgg9oYWNrZXJlYXJ0aC5jb20wDQYJKoZI +hvcNAQELBQADggEBACTy4kDSoHu9lKUdqNFsw4c397Z3R1o7LsEddbPp9H74f5rH +TRNWzEh3sO6I6teqkJQcnlsk1YoELPHvPX9RkBmhdgPbKYoKg1yT99UvMFZ0ua0n +Mtj0/N565srh2gpIj8GbnoNVExO57/o1wepS1bbmyjuoI0I8t1dV8tLzepG/GepD +JKVZzC85pGN/daqn+eEXcDauq1pIWItduigj54DF364HqUzzpEieLBlN2zZYxr3U +FwTPYUFWZpEs/vs2t9qCRqYNbe7YCDMr2FVGmcXMbUjBJD+C5b2bRQ4UrI2LgZ0R +rHjcFI9WeeNqcOIanpXs+NhxG67CgGCLKWzv1aE= +-----END CERTIFICATE----- diff --git a/config/hackerearth.key b/config/hackerearth.key new file mode 100755 index 0000000..7f2ebf8 --- /dev/null +++ b/config/hackerearth.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDNB+Ygzl7T9jPt +g59J+Lq59dGSsQ1LKmwliklovOYI5hLXcOolXJOi94FxIqimrJ8FQLgY+qfgGABY +pfGlkJhR9njd23ybvf355bRZLr3dykuUoaFVv0iZdMVIsCoKfv0fizThtYPsLwpq +uwQLnNAAhkRF9Rx3ZEHI4mHJpz+3ONKXiUS9LpkIgxoigKm0EywIu5ct8Q6W2mpC +kPqannnM9tgXvpmQ6OIBGzzQ2AZ3ROjv8VuheJfWdbWzP4ZafQCZ0n+m39QW0sam +glmVsg9TVlsWPSgZHxmHtf1alCqIpImgRq4hXl+CpZmBiT40PEa2CRrw8jCtOvoH +6cCW+e7fAgMBAAECggEBAIlPCu1Zh+RH9ArSpTCy5Mp5N/sXm6GFLZwOeo8sQpof +CutBcW3IDA+N1iBgZ7YH0Q+BgkkoRJktOb4klCqfJYNunw9lWJQsrxRWo2s+hGUu +f2Nww01bp1EuBJljcSRKW1ZuseGe4FSiREWqLVFhmWNgiASZ3JCQkgXopjiYS3F1 +5w5jxwVROwovuJby3uNCzPmgmH8edyPuvWfEnOBhzBj7g7bjghdnrXnXYZ8rYXDU +Qfwy8T5lOyMDmz5bYruWpV0SRInerhjJeqC5j1MgrU4aoEaejQNYa6H5bJS1/rm/ +j8sFXMtuISzNYzZN7wCk2MORHJ6xe7mC49keAM185jECgYEA88l+8lJBumbMDhoc +jZVwkdPbM+klc6dOcah6sMBdXaOzACsbaNFuYn3289tc5pu4EwkgowUVDF79B+jP +XMF5/iBJdjNZlEJ+11tXRpjnHqNELb9nFhhBhiIQ4g1NOjZuOAGiMqox4YxWE1EC +6IzT6zmNrnRPnj6TNwWdnokXYQsCgYEA101dXFC5GJDshGrIALF4kfHiRuBicGCo +Cs8PY/FKMdTJGD7oRJjs35qhkHEqKYD4FWryAZIqxXpZNCqL930TkbSrhcIhnGv7 +cYbBMpLepwPyUPtWslLFwr7AcokwGdcarJiC6PQbMEOpVkT0wLp7Tj5UNAPiczKk +7kbAZ1+vdf0CgYEAiU2QGQypBkIFZV/hewCSwR8wE0GZnVS6gpsgVtJRA39CPrMI +ofVqlUBaySdgYGWNu/LlFcuz+h65pi3CNHynp7Apj9AGANGevM4uDo3phcDwkk99 +0NzicphXJ+nT+BhV5WdOIfjnVSAEDqcO20kNxirJGFtbyEV4BoI8LuEJcNcCgYEA +qi4Sr5d21v4mlXw53qJo5SNGcjOGW8Fq0jBcv+jHdp/0299NhHtEMHJvZlastuWk +Mnm4FJnOiQ1uWReQTu1kfHVMZovOOW/47gFP0IPazjUGYhBotMdMXeSdBWt+w84M +3YQnZa8dlobE4NXciEJemLgXoo23fsr3JwhxqMQvUpkCgYAL3CnHVwUvmgGqDyf+ +dmQqOqCaGrEDDhZLed2cu4Z67Kqhe8iLX8qaPuGpLg5Rd7FcH1+O2Q6RQjdpzP3+ +svomcF2zL4iLx/UbvBeAgj5f0F/yVWScH2DROo/WS6CUKW68MQ9j8R6jZom6ctTa +WXospi8IkOGCeBZC9tOm8qOVAQ== +-----END PRIVATE KEY----- diff --git a/droid_config.json b/droid_config.json deleted file mode 100644 index e1564f7..0000000 --- a/droid_config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "thrift_host": "0.0.0.0", - "thrift_port": "9090", - "droids": [ - { - "port": "5554", - "avd": "nexus6-android7", - "display": "1", - "ws_port": "6080" - }, - { - "port": "5556", - "avd": "nexus6-android7-2", - "display": "2", - "ws_port": "6081" - } - ] -} diff --git a/hedroid/common_settings.py b/hedroid/common_settings.py index d074ce7..fbae9a5 100644 --- a/hedroid/common_settings.py +++ b/hedroid/common_settings.py @@ -2,7 +2,10 @@ ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) VAR_DIR = os.path.join(ROOT_DIR, 'var') -CONFIG_PATH = os.path.join(ROOT_DIR, 'droid_config.json') +CONFIG_DIR = os.path.join(ROOT_DIR, 'config') +CONFIG_PATH = os.path.join(CONFIG_DIR, 'droid_config.json') ZK_HOST = "localhost" ZK_PORT = "2181" + +DEBUG = True diff --git a/hedroid/worker/vnc.py b/hedroid/worker/vnc.py index 0e5de47..45ba1f9 100644 --- a/hedroid/worker/vnc.py +++ b/hedroid/worker/vnc.py @@ -33,6 +33,7 @@ def portfile_wait(self): def _start(self): cmd = ["x11vnc", "-forever", "-rfbport", str(self.rfb_port), "-display", ":{}".format(self.display), + "-noxfixes", "-nowf", "-ncache", "10", "-clip", self.clip, "-flag", self._portfile_p] # Remove portfile if it previously exists try: diff --git a/hedroid/worker/websockify.py b/hedroid/worker/websockify.py index 8bf687a..0d31aa3 100644 --- a/hedroid/worker/websockify.py +++ b/hedroid/worker/websockify.py @@ -4,6 +4,7 @@ import subprocess32 as subprocess from hedroid.logger import logger +from hedroid.common_settings import CONFIG_DIR, DEBUG from hedroid.worker.executor import Executor @@ -25,8 +26,15 @@ def netcat_wait(self, proc): break def _start(self): - cmd = ["websockify", ":{}".format(self.source_port), - ":{}".format(self.target_port)] + cmd = ["websockify"] + if not DEBUG: + cmd = ["websockify", + "--cert", os.path.join(CONFIG_DIR, "hackerearth.crt"), + "--key", os.path.join(CONFIG_DIR, "hackerearth.key"), + "--ssl-only"] + + cmd.extend([":{}".format(self.source_port), + ":{}".format(self.target_port)]) proc = subprocess.Popen( cmd, stdout=self.stdout_fd, diff --git a/scripts/start_master_thrift.py b/scripts/start_master_thrift.py new file mode 100755 index 0000000..4a2c331 --- /dev/null +++ b/scripts/start_master_thrift.py @@ -0,0 +1,5 @@ +#! /usr/bin/env python +from hedroid.master.thrift_server import start_server + +if __name__ == '__main__': + start_server() diff --git a/scripts/start_worker_thrift.py b/scripts/start_worker_thrift.py new file mode 100755 index 0000000..bcd46db --- /dev/null +++ b/scripts/start_worker_thrift.py @@ -0,0 +1,6 @@ +#! /usr/bin/env python +from hedroid.worker.thrift_server import start_server + + +if __name__ == '__main__': + start_server() diff --git a/start_master_thrift.py b/start_master_thrift.py index 4ac5e98..4a2c331 100755 --- a/start_master_thrift.py +++ b/start_master_thrift.py @@ -1,5 +1,5 @@ #! /usr/bin/env python -from master.thrift_server import start_server +from hedroid.master.thrift_server import start_server if __name__ == '__main__': start_server()