UNPKG

8.01 kBMarkdownView Raw
1# Code Reality Readme
2
3This is work in progress...
4
5Code Reality framework enables building networked extended reality (XR) experiences with A-Frame.
6
7aframe-dataspace servers provide a shared space to store and transmit scene data between browsers.
8
9## Browser support
10
11Tested browsers (latest versions):
12
13* Windows / Firefox
14* Windows / Chrome
15* macOS / Safari
16* iOS / Safari
17
18Tested devices:
19
20* HTC Vive
21* Oculus Go (Oculus Browser)
22
23## Build
24
25npm run build:node
26npm run build:browser
27
28## Add to heroku
29---
30 heroku create --region eu code-reality
31 git push heroku master
32 heroku logs -t
33 heroku logs -t --dyno=web
34---
35
36## Run
37
38### Development mode
39
40To run the node http server in development mode you need to run locally the
41following commands in separate terminals:
42
431) npm run dev:node
442) npm run dev:browser
45
46Browse to: http://localhost:3001/
47
48## Access control
49
50### Authentication
51
52Currently implemented authentication method is facebook authentication with express passport.
53
54### Authorization
55
56Authorization to rest and web socket services are transmitted with JWT token.
57The trusted issuer public keys are listed in cluster configuration.
58
59#### Generating key pair
60
61RSA key pair can be generated as follows:
62
63 openssl genrsa -aes128 -out private.pem 2048
64 openssl rsa -in private.pem -outform PEM -pubout -out public.pem
65
66Windows base64 encode:
67
68 certutil -encode public.pem tmp.b64; findstr /v /c:- tmp.b64 > public.b64; rm tmp.b64
69 certutil -encode private.pem tmp.b64; findstr /v /c:- tmp.b64 > private.b64; rm tmp.b64
70
71### Public test environment JWT signer RSA key pair:
72
73-----BEGIN PUBLIC KEY-----
74MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApl9jOIkv7+MQpc3Y1UTz
759DNSXQeQJRI8IgkHoyKT2FXlaty+DBh42qLdcsRUWhT6BcTdV++3MI9mUluUA8zc
766s/oYR/Q3D8FJUi2Oe8VXhv1/edDQU2TguYaBvxiVZYXlXuDkjU05iKMYdiBcFp8
778t4FDFPUMRGgMNWpIDxGOeCxN0v8ott3OBkFHyokGdxMvu1q5KVS4Y60D8UgC/4i
78IGE3QCLqIzZ+jm0o8vAqgJG/rAL5UmufR+KnWdIIVfHyhZwxFjWuurfPZwKX23aj
79gcIDFjPf1XdeWdEViCGADeaiYfyrCk5E+I7x38Zj1eHqljJYh6o2jaKJxHsH0ZJK
80uwIDAQAB
81-----END PUBLIC KEY-----
82
83Base64 encoded pem:
84LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwbDlqT0lrdjcrTVFwYzNZMVVUego5RE5TWFFlUUpSSThJZ2tIb3lLVDJGWGxhdHkrREJoNDJxTGRjc1JVV2hUNkJjVGRWKyszTUk5bVVsdVVBOHpjCjZzL29ZUi9RM0Q4RkpVaTJPZThWWGh2MS9lZERRVTJUZ3VZYUJ2eGlWWllYbFh1RGtqVTA1aUtNWWRpQmNGcDgKOHQ0RkRGUFVNUkdnTU5XcElEeEdPZUN4TjB2OG90dDNPQmtGSHlva0dkeE12dTFxNUtWUzRZNjBEOFVnQy80aQpJR0UzUUNMcUl6WitqbTBvOHZBcWdKRy9yQUw1VW11ZlIrS25XZElJVmZIeWhad3hGald1dXJmUFp3S1gyM2FqCmdjSURGalBmMVhkZVdkRVZpQ0dBRGVhaVlmeXJDazVFK0k3eDM4WmoxZUhxbGpKWWg2bzJqYUtKeEhzSDBaSksKdXdJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
85
86-----BEGIN ENCRYPTED PRIVATE KEY-----
87MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIcWh6z9EMYM0CAggA
88MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBqOpXbx71NJZBKMR/68q72BIIE
890HVBN0ufwa3UrYO/J+KDVtvYAV4HkZ3RBP9D6DKutPK92wT6CiOB8wcfSj1dEEgl
90FHZNDh7fMhKnm68SZyYuCV69dmZBMDLg5PqEtjvwQ1J5ppMCnDgLKriYI4mPfhrC
91g8Ogfogus9fcS5/tynV+VdDAtVXnU5WV6GnQ711CHQttzgNZMF8fel5ymXix8kEA
92WnSt2pAWXrGNCtBw8/8XfQ1gz4LhzqcWGxMsZ1GoQQETT4LpsTY7misJU8hSEPij
93UyQL1Yp0jDIpnIBNrL0cQuqiyLN2FDKF/DAjxWTeJsma1ykq528qXwJ543h9AsQJ
94UVh9aemfPE2R29EO6s/jqZTgoIX2KS6Jg8Bag8PrrkYQBzwECNjiBEiJccH+bDzH
95VvKwCw2gnMX2jnJ57YTrCqpz1QdL1ennvtJUMHjNwa3PAA8PYMGjvR72d8tF2neS
96kR64PKbBQjKdcuGpK4yPHsA3xQ2hnB/Ubi26JW2QB1FrBMsVynksfP0YKZWp4ssQ
97f8k2riid9puvOuDyu8u0Vn6lvEOf91v9Cl85GeSbg3L6PJ/HLSRYrSfrOmm/oSA1
98HXHJbh7h8C6XnYxc6ktJymx44WO6qdHo8rATzXsAJhbXz/vWhJd77D2tTN+R3M3n
999LBeQzOqf2AWeLVYFtRvQ5UOG39ln5ZbYVI838Zi7FcjLQSaH4JnjRlnKez1uD8K
100ppukUVaYf/RxIGvBpPd+DB+yzrg4UAVzmy59n7L91IlfnqAhY5wfSFBxCfRcWExA
101YbVe6v93+ucgDOjxwrQzTkim2BSFHe0B+iuUhJCkfV4vmbMUGaiCwi6rqsSlvpe1
102BBXEHmN05CphH0KITC4rhKAxsbDi5wvsXYRxitjtNkaAFBz98uxIznmJJesoUBlw
103kensqow3hiKmSyj6QbwgycRTEvBohx6/vBW4KpFZRiZ5OfCD5vBTgyaAjHx+DfYv
1046rCfiGtuHLBt19fKMAzFHit4Y1lFO5tzcMIBzhHtctTNp7mHU/lfEkTbGaRX1KwA
105z1iPSiC1Bo2UPs4nuYxWYxJiXDXZWl+9aVKghJZZrbJR1r/G92FTHpsIua0fg03U
1069bYHDYcN3vuKnXpInROLFmhcH+9gx9wYFLIOB/KkdRow+cLrY46YL5TvAAXXnfhB
107sy/sLQp8jhV4M84TJKKX6bcweElK5CjBiVa803nHZtIGzscyQofx05z1VXuH+VDs
108/kXfMmEzvuEGB+kw1ool2Os0vCqlWhhC9RMpx+4kliTnHklMaqjEshWBYhUUwhm+
109Ajz33YU1NwmezChCDbLnBy1xAYGW9MkFS4bbfVJszq4Xb7EbX5+SASczsdSpfosu
110/Bqkf5+LssOoAQjXDyqBlouapjm42Y6Nix9wdd857N10us+/jGurKxlRu9QlXN+C
111wCeRS6iziOmwxIYFWngIfgplZ03UulD5+CjMMBEuyvwZtgeFLRLINyfpaotdAGq1
112WlUtQTobiadOwVCoSWC8JI0lE0HELbR34rPgC+rMAy0vrZdwAr+7uijsZNLwgdAV
113OinFzij2tlyj7A7pmP+KPNsfbVgo2l34vIJyR8NGGhpY5FKxbuXdzAgK3oLENTHY
1147XkOmhjGgctN3IrlVfizEyl2dYXB6wTUVNkIFW9OyA7E
115-----END ENCRYPTED PRIVATE KEY-----
116
117Base64 encoded pem:
118LS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQpNSUlGTFRCWEJna3Foa2lHOXcwQkJRMHdTakFwQmdrcWhraUc5dzBCQlF3d0hBUUljV2g2ejlFTVlNMENBZ2dBCk1Bd0dDQ3FHU0liM0RRSUpCUUF3SFFZSllJWklBV1VEQkFFcUJCQnFPcFhieDcxTkpaQktNUi82OHE3MkJJSUUKMEhWQk4wdWZ3YTNVcllPL0orS0RWdHZZQVY0SGtaM1JCUDlENkRLdXRQSzkyd1Q2Q2lPQjh3Y2ZTajFkRUVnbApGSFpORGg3Zk1oS25tNjhTWnlZdUNWNjlkbVpCTURMZzVQcUV0anZ3UTFKNXBwTUNuRGdMS3JpWUk0bVBmaHJDCmc4T2dmb2d1czlmY1M1L3R5blYrVmREQXRWWG5VNVdWNkduUTcxMUNIUXR0emdOWk1GOGZlbDV5bVhpeDhrRUEKV25TdDJwQVdYckdOQ3RCdzgvOFhmUTFnejRMaHpxY1dHeE1zWjFHb1FRRVRUNExwc1RZN21pc0pVOGhTRVBpagpVeVFMMVlwMGpESXBuSUJOckwwY1F1cWl5TE4yRkRLRi9EQWp4V1RlSnNtYTF5a3E1MjhxWHdKNTQzaDlBc1FKClVWaDlhZW1mUEUyUjI5RU82cy9qcVpUZ29JWDJLUzZKZzhCYWc4UHJya1lRQnp3RUNOamlCRWlKY2NIK2JEekgKVnZLd0N3MmduTVgyam5KNTdZVHJDcXB6MVFkTDFlbm52dEpVTUhqTndhM1BBQThQWU1HanZSNzJkOHRGMm5lUwprUjY0UEtiQlFqS2RjdUdwSzR5UEhzQTN4UTJobkIvVWJpMjZKVzJRQjFGckJNc1Z5bmtzZlAwWUtaV3A0c3NRCmY4azJyaWlkOXB1dk91RHl1OHUwVm42bHZFT2Y5MXY5Q2w4NUdlU2JnM0w2UEovSExTUllyU2ZyT21tL29TQTEKSFhISmJoN2g4QzZYbll4YzZrdEp5bXg0NFdPNnFkSG84ckFUelhzQUpoYlh6L3ZXaEpkNzdEMnRUTitSM00zbgo5TEJlUXpPcWYyQVdlTFZZRnRSdlE1VU9HMzlsbjVaYllWSTgzOFppN0ZjakxRU2FINEpualJsbktlejF1RDhLCnBwdWtVVmFZZi9SeElHdkJwUGQrREIreXpyZzRVQVZ6bXk1OW43TDkxSWxmbnFBaFk1d2ZTRkJ4Q2ZSY1dFeEEKWWJWZTZ2OTMrdWNnRE9qeHdyUXpUa2ltMkJTRkhlMEIraXVVaEpDa2ZWNHZtYk1VR2FpQ3dpNnJxc1NsdnBlMQpCQlhFSG1OMDVDcGhIMEtJVEM0cmhLQXhzYkRpNXd2c1hZUnhpdGp0TmthQUZCejk4dXhJem5tSkplc29VQmx3CmtlbnNxb3czaGlLbVN5ajZRYndneWNSVEV2Qm9oeDYvdkJXNEtwRlpSaVo1T2ZDRDV2QlRneWFBakh4K0RmWXYKNnJDZmlHdHVITEJ0MTlmS01BekZIaXQ0WTFsRk81dHpjTUlCemhIdGN0VE5wN21IVS9sZkVrVGJHYVJYMUt3QQp6MWlQU2lDMUJvMlVQczRudVl4V1l4SmlYRFhaV2wrOWFWS2doSlpacmJKUjFyL0c5MkZUSHBzSXVhMGZnMDNVCjliWUhEWWNOM3Z1S25YcEluUk9MRm1oY0grOWd4OXdZRkxJT0IvS2tkUm93K2NMclk0NllMNVR2QUFYWG5maEIKc3kvc0xRcDhqaFY0TTg0VEpLS1g2YmN3ZUVsSzVDakJpVmE4MDNuSFp0SUd6c2N5UW9meDA1ejFWWHVIK1ZEcwova1hmTW1FenZ1RUdCK2t3MW9vbDJPczB2Q3FsV2hoQzlSTXB4KzRrbGlUbkhrbE1hcWpFc2hXQlloVVV3aG0rCkFqejMzWVUxTndtZXpDaENEYkxuQnkxeEFZR1c5TWtGUzRiYmZWSnN6cTRYYjdFYlg1K1NBU2N6c2RTcGZvc3UKL0Jxa2Y1K0xzc09vQVFqWER5cUJsb3VhcGptNDJZNk5peDl3ZGQ4NTdOMTB1cysvakd1ckt4bFJ1OVFsWE4rQwp3Q2VSUzZpemlPbXd4SVlGV25nSWZncGxaMDNVdWxENStDak1NQkV1eXZ3WnRnZUZMUkxJTnlmcGFvdGRBR3ExCldsVXRRVG9iaWFkT3dWQ29TV0M4SkkwbEUwSEVMYlIzNHJQZ0Mrck1BeTB2clpkd0FyKzd1aWpzWk5Md2dkQVYKT2luRnppajJ0bHlqN0E3cG1QK0tQTnNmYlZnbzJsMzR2SUp5UjhOR0docFk1Rkt4YnVYZHpBZ0szb0xFTlRIWQo3WGtPbWhqR2djdE4zSXJsVmZpekV5bDJkWVhCNndUVVZOa0lGVzlPeUE3RQotLS0tLUVORCBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQo=
119
120## Controllers
121
122Controllers inputs are mapped to semantically meaningful buttons and sticks:
123
124### Buttons
125
126* Trigger
127* Grip
128* Menu
129* Left
130* Right
131* Up
132* Down
133
134### Sticks
135
136* Translate
137* Rotate
138
139## Tools
140
141Terms:
142
143* Point - Entity is pointed by laser pointer.
144* Hover - Entity is intersected or pointed by controller.
145
146### Movement Tool
147
148### Entity Tool
149
150* Grip Down - If entity hovered then hold else spawn and hold.
151* Grip Up - Release hold entity.
152* Trigger Down - Start laser pointer.
153* Trigger Up - Stop laser pointer.
154
155* Point - Increasing haptic feedback when entity is pointed until deleted after 3 seconds.
156
157## Publish package
158
159### First publish
160
161---
162 npm publish --access public
163---
164
165### Update
166
167---
168 npm version patch
169 npm publish
170---