@sassoftware/viya-serverjs 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/.env +4 -4
  2. package/.env.proxy +4 -3
  3. package/.env.server +5 -4
  4. package/Dockerfile +3 -3
  5. package/cli.js +2 -2
  6. package/lib/handlers/proxyMapUri.js +4 -30
  7. package/lib/handlers/setCookies.js +7 -6
  8. package/lib/plugins/appCookie.js +3 -3
  9. package/lib/plugins/setDefaultRoutes.js +78 -53
  10. package/lib/plugins/setupAuth.js +2 -1
  11. package/package.json +1 -1
  12. package/public/index.html +8 -2
  13. package/public/indexProxy.html +1 -0
  14. package/server.js +5 -116
  15. package/src/handlers/proxyMapUri.js +2 -30
  16. package/src/handlers/setCookies.js +3 -1
  17. package/src/iService.js +1 -0
  18. package/src/plugins/appCookie.js +3 -3
  19. package/src/plugins/setDefaultRoutes.js +7 -14
  20. package/src/plugins/setupAuth.js +3 -1
  21. package/{packages/examples/app/certs/tls.sh → tls/viyatls.sh} +0 -2
  22. package/packages/core/config.js +0 -86
  23. package/packages/core/handlers/appCallback.js +0 -40
  24. package/packages/core/handlers/codeAuth.js +0 -31
  25. package/packages/core/handlers/decodeJwt.js +0 -11
  26. package/packages/core/handlers/favicon.js +0 -24
  27. package/packages/core/handlers/getApp.js +0 -41
  28. package/packages/core/handlers/getApp2.js +0 -26
  29. package/packages/core/handlers/getUser.js +0 -20
  30. package/packages/core/handlers/index.js +0 -36
  31. package/packages/core/handlers/keepAlive.js +0 -54
  32. package/packages/core/handlers/keepAlive2.js +0 -13
  33. package/packages/core/handlers/logon.js +0 -24
  34. package/packages/core/handlers/logout.js +0 -43
  35. package/packages/core/handlers/proxyMapUri.js +0 -53
  36. package/packages/core/handlers/proxyOnResponse.js +0 -12
  37. package/packages/core/handlers/reactDev.js +0 -30
  38. package/packages/core/handlers/setCookies.js +0 -78
  39. package/packages/core/iService.js +0 -369
  40. package/packages/core/index.js +0 -249
  41. package/packages/core/parseDocker.js +0 -33
  42. package/packages/core/plugins/SASauth.js +0 -79
  43. package/packages/core/plugins/appCookie.js +0 -49
  44. package/packages/core/plugins/setContext.js +0 -34
  45. package/packages/core/plugins/setDefaultRoutes.js +0 -262
  46. package/packages/core/plugins/setupAuth.js +0 -48
  47. package/packages/core/plugins/setupUserRoutes.js +0 -48
  48. package/packages/core/plugins/token.js +0 -10
  49. package/packages/core/schemes/SASTokenScheme.js +0 -43
  50. package/packages/core/visionIndex.html +0 -24
  51. package/packages/examples/apitest/.env +0 -11
  52. package/packages/examples/apitest/.eslintrc.json +0 -42
  53. package/packages/examples/apitest/Dockerfile +0 -41
  54. package/packages/examples/apitest/api.js +0 -88
  55. package/packages/examples/apitest/appenv.js +0 -6
  56. package/packages/examples/apitest/docker-compose.yml +0 -10
  57. package/packages/examples/apitest/package.json +0 -19
  58. package/packages/examples/apitest/public/data/Cluster_SDOH1.sas +0 -182
  59. package/packages/examples/apitest/public/data/Cluster_SDOH6.sas +0 -180
  60. package/packages/examples/apitest/public/data/LeNet_snzrle.astore +0 -0
  61. package/packages/examples/apitest/public/data/NeuralNetwork_High_med.sas +0 -2409
  62. package/packages/examples/apitest/public/data/NeuralNetwork_high_med1.sas +0 -2409
  63. package/packages/examples/apitest/public/data/ast/GBlocalcopy.sasast +0 -0
  64. package/packages/examples/apitest/public/data/ast/LeNet_snzrle.astore +0 -0
  65. package/packages/examples/apitest/public/data/ast/gb_IrisGB.sasast +0 -0
  66. package/packages/examples/apitest/public/data/ast/paysimsvdd.sasast +0 -0
  67. package/packages/examples/apitest/public/data/ast/svmlocalcopy.sasast +0 -0
  68. package/packages/examples/apitest/public/data/cars.csv +0 -429
  69. package/packages/examples/apitest/public/data/cluster_test2.sas7bdat +0 -0
  70. package/packages/examples/apitest/public/data/cmdList.txt +0 -15
  71. package/packages/examples/apitest/public/data/gradBoost.sashdat +0 -0
  72. package/packages/examples/apitest/public/data/iris.csv +0 -151
  73. package/packages/examples/apitest/public/data/model1.sas7bdat +0 -0
  74. package/packages/examples/apitest/public/favicon.ico +0 -0
  75. package/packages/examples/apitest/public/index.html +0 -316
  76. package/packages/examples/apitest/public/index2.html +0 -102
  77. package/packages/examples/apitest/public/logon.html +0 -42
  78. package/packages/examples/apitest/public/myapp/secondary.html +0 -1
  79. package/packages/examples/apitest/public/myapp/test.js +0 -2
  80. package/packages/examples/apitest/public/onlogoff.html +0 -53
  81. package/packages/examples/apitest/start.sh +0 -15
  82. package/packages/examples/app/.env +0 -32
  83. package/packages/examples/app/.envProxy +0 -19
  84. package/packages/examples/app/.envimpl +0 -12
  85. package/packages/examples/app/.eslintrc.json +0 -42
  86. package/packages/examples/app/Dockerfile +0 -42
  87. package/packages/examples/app/appenv.js +0 -6
  88. package/packages/examples/app/certs/ca.crt +0 -19
  89. package/packages/examples/app/certs/tls.crt +0 -25
  90. package/packages/examples/app/certs/tls.key +0 -28
  91. package/packages/examples/app/docker-compose.yml +0 -12
  92. package/packages/examples/app/index.js +0 -15
  93. package/packages/examples/app/package.json +0 -20
  94. package/packages/examples/app/public/casread.html +0 -324
  95. package/packages/examples/app/public/data/Cluster_SDOH1.sas +0 -182
  96. package/packages/examples/app/public/data/Cluster_SDOH6.sas +0 -180
  97. package/packages/examples/app/public/data/LeNet_snzrle.astore +0 -0
  98. package/packages/examples/app/public/data/NeuralNetwork_High_med.sas +0 -2409
  99. package/packages/examples/app/public/data/NeuralNetwork_high_med1.sas +0 -2409
  100. package/packages/examples/app/public/data/ast/GBlocalcopy.sasast +0 -0
  101. package/packages/examples/app/public/data/ast/LeNet_snzrle.astore +0 -0
  102. package/packages/examples/app/public/data/ast/gb_IrisGB.sasast +0 -0
  103. package/packages/examples/app/public/data/ast/paysimsvdd.sasast +0 -0
  104. package/packages/examples/app/public/data/ast/svmlocalcopy.sasast +0 -0
  105. package/packages/examples/app/public/data/cars.csv +0 -429
  106. package/packages/examples/app/public/data/cluster_test2.sas7bdat +0 -0
  107. package/packages/examples/app/public/data/cmdList.txt +0 -15
  108. package/packages/examples/app/public/data/gradBoost.sashdat +0 -0
  109. package/packages/examples/app/public/data/iris.csv +0 -151
  110. package/packages/examples/app/public/data/model1.sas7bdat +0 -0
  111. package/packages/examples/app/public/favicon.ico +0 -0
  112. package/packages/examples/app/public/index.html +0 -332
  113. package/packages/examples/app/public/indexProxy.html +0 -346
  114. package/packages/examples/app/public/indextest.html +0 -316
  115. package/packages/examples/app/public/logon.html +0 -44
  116. package/packages/examples/app/public/micburger.html +0 -345
  117. package/packages/examples/app/public/micburger.txt.html +0 -311
  118. package/packages/examples/app/public/myapp/secondary.html +0 -1
  119. package/packages/examples/app/public/myapp/test.js +0 -2
  120. package/packages/examples/app/public/sara.txt +0 -345
  121. package/packages/examples/app/public/testva2.html +0 -311
  122. package/packages/examples/app/startup.sh +0 -15
  123. package/packages/examples/appdocker/.env +0 -21
  124. package/packages/examples/appdocker/.envProxy +0 -22
  125. package/packages/examples/appdocker/.envimpl +0 -12
  126. package/packages/examples/appdocker/.eslintrc.json +0 -42
  127. package/packages/examples/appdocker/Dockerfile +0 -43
  128. package/packages/examples/appdocker/appenv.js +0 -6
  129. package/packages/examples/appdocker/certs/ca.crt +0 -19
  130. package/packages/examples/appdocker/certs/tls.crt +0 -25
  131. package/packages/examples/appdocker/certs/tls.key +0 -28
  132. package/packages/examples/appdocker/certs/tls.sh +0 -5
  133. package/packages/examples/appdocker/docker-compose.yml +0 -12
  134. package/packages/examples/appdocker/index.js +0 -15
  135. package/packages/examples/appdocker/package.json +0 -20
  136. package/packages/examples/appdocker/public/data/Cluster_SDOH1.sas +0 -182
  137. package/packages/examples/appdocker/public/data/Cluster_SDOH6.sas +0 -180
  138. package/packages/examples/appdocker/public/data/LeNet_snzrle.astore +0 -0
  139. package/packages/examples/appdocker/public/data/NeuralNetwork_High_med.sas +0 -2409
  140. package/packages/examples/appdocker/public/data/NeuralNetwork_high_med1.sas +0 -2409
  141. package/packages/examples/appdocker/public/data/ast/GBlocalcopy.sasast +0 -0
  142. package/packages/examples/appdocker/public/data/ast/LeNet_snzrle.astore +0 -0
  143. package/packages/examples/appdocker/public/data/ast/gb_IrisGB.sasast +0 -0
  144. package/packages/examples/appdocker/public/data/ast/paysimsvdd.sasast +0 -0
  145. package/packages/examples/appdocker/public/data/ast/svmlocalcopy.sasast +0 -0
  146. package/packages/examples/appdocker/public/data/cars.csv +0 -429
  147. package/packages/examples/appdocker/public/data/cluster_test2.sas7bdat +0 -0
  148. package/packages/examples/appdocker/public/data/cmdList.txt +0 -15
  149. package/packages/examples/appdocker/public/data/gradBoost.sashdat +0 -0
  150. package/packages/examples/appdocker/public/data/iris.csv +0 -151
  151. package/packages/examples/appdocker/public/data/model1.sas7bdat +0 -0
  152. package/packages/examples/appdocker/public/favicon.ico +0 -0
  153. package/packages/examples/appdocker/public/index.html +0 -346
  154. package/packages/examples/appdocker/public/indexProxy.html +0 -346
  155. package/packages/examples/appdocker/public/indextest.html +0 -316
  156. package/packages/examples/appdocker/public/logon.html +0 -44
  157. package/packages/examples/appdocker/public/myapp/secondary.html +0 -1
  158. package/packages/examples/appdocker/public/myapp/test.js +0 -2
  159. package/packages/examples/appdocker/startup.sh +0 -15
  160. package/packages/examples/apptest/.env +0 -28
  161. package/packages/examples/apptest/.envProxy +0 -22
  162. package/packages/examples/apptest/.envimpl +0 -12
  163. package/packages/examples/apptest/.eslintrc.json +0 -42
  164. package/packages/examples/apptest/Dockerfile +0 -44
  165. package/packages/examples/apptest/appDir/app1/design.html +0 -350
  166. package/packages/examples/apptest/appDir/app1/index.html +0 -353
  167. package/packages/examples/apptest/appDir/index.html +0 -350
  168. package/packages/examples/apptest/appenv.js +0 -6
  169. package/packages/examples/apptest/docker-compose.yml +0 -12
  170. package/packages/examples/apptest/index.js +0 -444
  171. package/packages/examples/apptest/package.json +0 -24
  172. package/packages/examples/apptest/public/casread2.html +0 -321
  173. package/packages/examples/apptest/public/data/Cluster_SDOH1.sas +0 -182
  174. package/packages/examples/apptest/public/data/Cluster_SDOH6.sas +0 -180
  175. package/packages/examples/apptest/public/data/LeNet_snzrle.astore +0 -0
  176. package/packages/examples/apptest/public/data/NeuralNetwork_High_med.sas +0 -2409
  177. package/packages/examples/apptest/public/data/NeuralNetwork_high_med1.sas +0 -2409
  178. package/packages/examples/apptest/public/data/ast/GBlocalcopy.sasast +0 -0
  179. package/packages/examples/apptest/public/data/ast/LeNet_snzrle.astore +0 -0
  180. package/packages/examples/apptest/public/data/ast/gb_IrisGB.sasast +0 -0
  181. package/packages/examples/apptest/public/data/ast/paysimsvdd.sasast +0 -0
  182. package/packages/examples/apptest/public/data/ast/svmlocalcopy.sasast +0 -0
  183. package/packages/examples/apptest/public/data/cars.csv +0 -429
  184. package/packages/examples/apptest/public/data/cluster_test2.sas7bdat +0 -0
  185. package/packages/examples/apptest/public/data/cmdList.txt +0 -15
  186. package/packages/examples/apptest/public/data/gradBoost.sashdat +0 -0
  187. package/packages/examples/apptest/public/data/iris.csv +0 -151
  188. package/packages/examples/apptest/public/data/model1.sas7bdat +0 -0
  189. package/packages/examples/apptest/public/design.html +0 -349
  190. package/packages/examples/apptest/public/favicon.ico +0 -0
  191. package/packages/examples/apptest/public/help.html +0 -1
  192. package/packages/examples/apptest/public/index.html +0 -353
  193. package/packages/examples/apptest/public/index2.html +0 -353
  194. package/packages/examples/apptest/public/indexProxy.html +0 -346
  195. package/packages/examples/apptest/public/indextest.html +0 -316
  196. package/packages/examples/apptest/public/logon.html +0 -44
  197. package/packages/examples/apptest/public/myapp/q.html +0 -349
  198. package/packages/examples/apptest/public/myapp/secondary.html +0 -1
  199. package/packages/examples/apptest/public/myapp/test.js +0 -2
  200. package/packages/examples/apptest/public/push1.html +0 -187
  201. package/packages/examples/apptest/startup.sh +0 -15
  202. package/packages/examples/apptesti/.env +0 -13
  203. package/packages/examples/apptesti/.eslintrc.json +0 -42
  204. package/packages/examples/apptesti/Dockerfile +0 -42
  205. package/packages/examples/apptesti/appenv.js +0 -6
  206. package/packages/examples/apptesti/certs/ca.crt +0 -19
  207. package/packages/examples/apptesti/certs/tls.crt +0 -25
  208. package/packages/examples/apptesti/certs/tls.key +0 -28
  209. package/packages/examples/apptesti/certs/tls.sh +0 -5
  210. package/packages/examples/apptesti/docker-compose.yml +0 -12
  211. package/packages/examples/apptesti/index.js +0 -7
  212. package/packages/examples/apptesti/package.json +0 -20
  213. package/packages/examples/apptesti/public/data/Cluster_SDOH1.sas +0 -182
  214. package/packages/examples/apptesti/public/data/Cluster_SDOH6.sas +0 -180
  215. package/packages/examples/apptesti/public/data/LeNet_snzrle.astore +0 -0
  216. package/packages/examples/apptesti/public/data/NeuralNetwork_High_med.sas +0 -2409
  217. package/packages/examples/apptesti/public/data/NeuralNetwork_high_med1.sas +0 -2409
  218. package/packages/examples/apptesti/public/data/ast/GBlocalcopy.sasast +0 -0
  219. package/packages/examples/apptesti/public/data/ast/LeNet_snzrle.astore +0 -0
  220. package/packages/examples/apptesti/public/data/ast/gb_IrisGB.sasast +0 -0
  221. package/packages/examples/apptesti/public/data/ast/paysimsvdd.sasast +0 -0
  222. package/packages/examples/apptesti/public/data/ast/svmlocalcopy.sasast +0 -0
  223. package/packages/examples/apptesti/public/data/cars.csv +0 -429
  224. package/packages/examples/apptesti/public/data/cluster_test2.sas7bdat +0 -0
  225. package/packages/examples/apptesti/public/data/cmdList.txt +0 -15
  226. package/packages/examples/apptesti/public/data/gradBoost.sashdat +0 -0
  227. package/packages/examples/apptesti/public/data/iris.csv +0 -151
  228. package/packages/examples/apptesti/public/data/model1.sas7bdat +0 -0
  229. package/packages/examples/apptesti/public/favicon.ico +0 -0
  230. package/packages/examples/apptesti/public/index.html +0 -346
  231. package/packages/examples/apptesti/public/indexProxy.html +0 -346
  232. package/packages/examples/apptesti/public/indextest.html +0 -316
  233. package/packages/examples/apptesti/public/logon.html +0 -44
  234. package/packages/examples/apptesti/public/main.html +0 -346
  235. package/packages/examples/apptesti/public/myapp/secondary.html +0 -1
  236. package/packages/examples/apptesti/public/myapp/test.js +0 -2
  237. package/packages/examples/apptesti/startup.sh +0 -15
  238. package/packages/examples/basic/.env +0 -10
  239. package/packages/examples/basic/.eslintrc.json +0 -42
  240. package/packages/examples/basic/Dockerfile +0 -41
  241. package/packages/examples/basic/api.js +0 -88
  242. package/packages/examples/basic/appenv.js +0 -6
  243. package/packages/examples/basic/docker-compose.yml +0 -10
  244. package/packages/examples/basic/package.json +0 -19
  245. package/packages/examples/basic/public/data/Cluster_SDOH1.sas +0 -182
  246. package/packages/examples/basic/public/data/Cluster_SDOH6.sas +0 -180
  247. package/packages/examples/basic/public/data/LeNet_snzrle.astore +0 -0
  248. package/packages/examples/basic/public/data/NeuralNetwork_High_med.sas +0 -2409
  249. package/packages/examples/basic/public/data/NeuralNetwork_high_med1.sas +0 -2409
  250. package/packages/examples/basic/public/data/ast/GBlocalcopy.sasast +0 -0
  251. package/packages/examples/basic/public/data/ast/LeNet_snzrle.astore +0 -0
  252. package/packages/examples/basic/public/data/ast/gb_IrisGB.sasast +0 -0
  253. package/packages/examples/basic/public/data/ast/paysimsvdd.sasast +0 -0
  254. package/packages/examples/basic/public/data/ast/svmlocalcopy.sasast +0 -0
  255. package/packages/examples/basic/public/data/cars.csv +0 -429
  256. package/packages/examples/basic/public/data/cluster_test2.sas7bdat +0 -0
  257. package/packages/examples/basic/public/data/cmdList.txt +0 -15
  258. package/packages/examples/basic/public/data/gradBoost.sashdat +0 -0
  259. package/packages/examples/basic/public/data/iris.csv +0 -151
  260. package/packages/examples/basic/public/data/model1.sas7bdat +0 -0
  261. package/packages/examples/basic/public/favicon.ico +0 -0
  262. package/packages/examples/basic/public/index.html +0 -29
  263. package/packages/examples/basic/public/index2.html +0 -102
  264. package/packages/examples/basic/public/logon.html +0 -42
  265. package/packages/examples/basic/public/myapp/secondary.html +0 -1
  266. package/packages/examples/basic/public/myapp/test.js +0 -2
  267. package/packages/examples/basic/public/onlogoff.html +0 -53
  268. package/packages/examples/basic/start.sh +0 -15
  269. package/packages/examples/proxytest/.env +0 -23
  270. package/packages/examples/proxytest/.envimpl +0 -11
  271. package/packages/examples/proxytest/.eslintrc.json +0 -42
  272. package/packages/examples/proxytest/Dockerfile +0 -42
  273. package/packages/examples/proxytest/appenv.js +0 -6
  274. package/packages/examples/proxytest/docker-compose.yml +0 -12
  275. package/packages/examples/proxytest/index.js +0 -57
  276. package/packages/examples/proxytest/package.json +0 -18
  277. package/packages/examples/proxytest/public/data/Cluster_SDOH1.sas +0 -182
  278. package/packages/examples/proxytest/public/data/Cluster_SDOH6.sas +0 -180
  279. package/packages/examples/proxytest/public/data/LeNet_snzrle.astore +0 -0
  280. package/packages/examples/proxytest/public/data/NeuralNetwork_High_med.sas +0 -2409
  281. package/packages/examples/proxytest/public/data/NeuralNetwork_high_med1.sas +0 -2409
  282. package/packages/examples/proxytest/public/data/ast/GBlocalcopy.sasast +0 -0
  283. package/packages/examples/proxytest/public/data/ast/LeNet_snzrle.astore +0 -0
  284. package/packages/examples/proxytest/public/data/ast/gb_IrisGB.sasast +0 -0
  285. package/packages/examples/proxytest/public/data/ast/paysimsvdd.sasast +0 -0
  286. package/packages/examples/proxytest/public/data/ast/svmlocalcopy.sasast +0 -0
  287. package/packages/examples/proxytest/public/data/cars.csv +0 -429
  288. package/packages/examples/proxytest/public/data/cluster_test2.sas7bdat +0 -0
  289. package/packages/examples/proxytest/public/data/cmdList.txt +0 -15
  290. package/packages/examples/proxytest/public/data/gradBoost.sashdat +0 -0
  291. package/packages/examples/proxytest/public/data/iris.csv +0 -151
  292. package/packages/examples/proxytest/public/data/model1.sas7bdat +0 -0
  293. package/packages/examples/proxytest/public/favicon.ico +0 -0
  294. package/packages/examples/proxytest/public/index.html +0 -357
  295. package/packages/examples/proxytest/public/index.js +0 -57
  296. package/packages/examples/proxytest/public/indextest.html +0 -316
  297. package/packages/examples/proxytest/public/logon.html +0 -44
  298. package/packages/examples/proxytest/public/main.html +0 -357
  299. package/packages/examples/proxytest/public/myapp/secondary.html +0 -1
  300. package/packages/examples/proxytest/public/myapp/test.js +0 -2
  301. package/packages/examples/proxytest/public/restaf.js +0 -2461
  302. package/packages/examples/proxytest/public/restaf.min.js +0 -11
  303. package/packages/examples/proxytest/public/sas/iris.txt +0 -10
  304. package/packages/examples/proxytest/startup.sh +0 -15
  305. package/public/casread2.html +0 -321
  306. package/public/design.html +0 -350
  307. package/public/display.html +0 -354
  308. package/public/index2.html +0 -353
  309. package/public/indextest.html +0 -316
  310. package/public/logon.html +0 -44
  311. package/public/myapp/q.html +0 -349
  312. package/public/myapp/secondary.html +0 -1
  313. package/public/myapp/test.js +0 -2
  314. package/public/push1.html +0 -187
@@ -1,33 +0,0 @@
1
- /*
2
- * Copyright © 2019, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
3
- * SPDX-License-Identifier: Apache-2.0
4
- */
5
- 'use strict';
6
- let parser = require('docker-file-parser');
7
- let fs = require('fs');
8
-
9
- function parseDocker (dockerFile) {
10
- console.log('Parsing Dockerfile', dockerFile);
11
- console.log(__dirname);
12
- let d = fs.readFileSync(dockerFile, 'utf8');
13
- let data = parser.parse(d);
14
- data.forEach(d => {
15
- if (d.name === 'EXPOSE') {
16
- process.env.EXPOSEDPORT = d.args[0];
17
- console.log(`Exposed port: ${process.env.EXPOSEDPORT}`);
18
- } else if (d.name === 'ENV') {
19
- for (let key in d.args) {
20
- let v = d.args[key];
21
- if (v.length === 0) {
22
- console.log(
23
- `Value for ${key} inherited as ${process.env[key]}`
24
- );
25
- } else {
26
- process.env[key] = v;
27
- }
28
- }
29
- }
30
- });
31
- }
32
-
33
- export default parseDocker;
@@ -1,79 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * * Copyright (c) SAS Institute Inc.
4
- * * Licensed under the Apache License, Version 2.0 (the "License");
5
- * * you may not use this file except in compliance with the License.
6
- * * You may obtain a copy of the License at
7
- * *
8
- * * http://www.apache.org/licenses/LICENSE-2.0
9
- * *
10
- * * Unless required by applicable law or agreed to in writing, software
11
- * * distributed under the License is distributed on an "AS IS" BASIS,
12
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ----------------------------------------------------------------------------------------
16
- *
17
- */
18
-
19
-
20
- let bell = require('@hapi/bell');
21
- let uuid = require('uuid');
22
- let debug = require('debug')('sasauth');
23
-
24
- exports.plugin = {
25
- name : 'SASauth',
26
- version : '1.0.0',
27
- register: iSASauth
28
- };
29
-
30
- async function iSASauth (server, options) {
31
- debug('in iSASauth');
32
- debug('options', options);
33
- let bellAuthOptions;
34
- let provider;
35
- // test for k8s deployment
36
- let host = options.host + '/SASLogon';
37
-
38
-
39
- if (options.ns != null) {
40
- host = `https://sas-logon-app.${options.ns}.svc.cluster.local`;
41
- } else if (options.nsHost != null) {
42
- host = options.nsHost;
43
- }
44
- // ...
45
- debug(host);
46
- provider = {
47
- name : 'sas',
48
- protocol : 'oauth2',
49
- useParamsAuth: false,
50
- auth : host + '/oauth/authorize',
51
- token : host + '/oauth/token',
52
-
53
- profileMethod: 'get',
54
-
55
- profile: async function (credentials, params, get) {
56
-
57
- server.log('SASAuth profile', credentials);
58
- debug('credentials', credentials);
59
- }
60
-
61
-
62
- };
63
-
64
- bellAuthOptions = {
65
- provider : provider,
66
- password : uuid.v4(),
67
- clientId : options.clientId,
68
- clientSecret: options.clientSecret,
69
- // isSameSite : options.isSameSite,
70
- isSecure : options.isSecure
71
- };
72
- // console.log('SASAuth options', bellAuthOptions);
73
- debug('belloptions', bellAuthOptions);
74
- server.log('SASAuth',bellAuthOptions);
75
- await server.register(bell);
76
- server.auth.strategy('sas', 'bell', bellAuthOptions);
77
-
78
- }
79
-
@@ -1,49 +0,0 @@
1
-
2
- let uuid = require('uuid');
3
- let debug = require('debug')('cookie');
4
-
5
- module.exports = async function appCookie (server, options){
6
-
7
- await server.register(require('@hapi/cookie'));
8
-
9
- debug('in appCookie');
10
- debug(options.redirectTo);
11
- let cookieOptions = {
12
- cookie: {
13
- name : 'cookie',
14
- password : uuid.v4(),
15
- isSecure : options.isSecure,
16
- isSameSite: options.isSameSite
17
- },
18
- redirectTo : options.redirectTo,
19
- appendNext : {name: 'next'},
20
- validateFunc: async (req, session) => {
21
- server.log('Cookie validateFunc', `path - ${req.path}`);
22
-
23
- if (session == null) {
24
- console.log('session is null');
25
- return {valid: false};
26
- }
27
- let credentials = null;
28
- let sid;
29
- if (Array.isArray(session) === true && session.length > 0) {
30
- sid = session[0].sid;
31
- } else {
32
- sid = session.sid;
33
- }
34
- if (sid != null) {
35
- credentials = await req.server.app.cache.get(sid);
36
- }
37
-
38
- if (credentials == null) {
39
- return {valid: false};
40
- }
41
- server.log('Cookie validateFunc', sid);
42
- return {valid: true, credentials: credentials};
43
- }
44
- };
45
- // console.log('cookie options', cookieOptions);
46
- server.log('Cookie Options',cookieOptions);
47
- server.auth.strategy('session', 'cookie', cookieOptions);
48
-
49
- };
@@ -1,34 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * Copyright (c) SAS Institute Inc.
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ---------------------------------------------------------------------------------------
16
- *
17
- */
18
-
19
-
20
- async function setContext (req,h){
21
- let credentials = req.auth.credentials;
22
-
23
- let context = {
24
- path : req.path,
25
- params : req.params,
26
- query : req.query,
27
- payload: req.payload,
28
- queryOrig: (credentials != null) ? credentials.query : {},
29
- token : (credentials != null) ? `bearer ${credentials.token}` : null,
30
- host : process.env.VIYA_SERVER
31
- };
32
- return context;
33
- }
34
- export default setContext;
@@ -1,262 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * * Copyright (c) SAS Institute Inc.
4
- * * Licensed under the Apache License, Version 2.0 (the "License");
5
- * * you may not use this file except in compliance with the License.
6
- * * You may obtain a copy of the License at
7
- * *
8
- * * http://www.apache.org/licenses/LICENSE-2.0
9
- * *
10
- * * Unless required by applicable law or agreed to in writing, software
11
- * * distributed under the License is distributed on an "AS IS" BASIS,
12
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ----------------------------------------------------------------------------------------
16
- *
17
- */
18
-
19
- import {
20
- getApp,
21
- getApp2,
22
- appCallback,
23
- favicon,
24
- keepAlive,
25
- keepAlive2,
26
- logout,
27
- logon,
28
- setupUserRoutes,
29
- reactDev,
30
- proxyMapUri,
31
- } from "../handlers";
32
- let debug = require("debug")("routes");
33
- module.exports = function setDefaultRoutes(server, options) {
34
- debug("setDefaultRoutes");
35
- let appName = "/" + options.appName;
36
- let authDefault = false;
37
- let authLogon = false;
38
- if (options.authFlow === "server") {
39
- authDefault =
40
- options.serverMode === "app"
41
- ? false
42
- : {
43
- strategies: ["token", "session"],
44
- mode: "required",
45
- };
46
-
47
- authLogon = {
48
- mode: "required",
49
- strategy: "sas",
50
- };
51
- }
52
- let getAppb = getApp.bind(
53
- null,
54
- process.env.USETOKEN === "YES" ? options : null
55
- );
56
-
57
- console.log("Default strategy", authDefault);
58
- console.log("Logon strategy", authLogon);
59
- options.authDefault = authDefault;
60
- options.authLogon = authLogon;
61
-
62
- debug(options.userRouteTable);
63
- let uTable =
64
- options.userRouteTable !== null
65
- ? setupUserRoutes(options.userRouteTable, options)
66
- : null;
67
-
68
- let defaultTable = [
69
- {
70
- method: ["GET"],
71
- path: `/health`,
72
- options: {
73
- auth: false,
74
- handler: async (req, h) => {
75
- return h.response({ x: 1 }).code(200);
76
- },
77
- },
78
- },
79
-
80
- {
81
- method: ["GET"],
82
- path: `${appName}/logon`,
83
- options: {
84
- auth: (options.authFlow === "server") ?
85
- { mode: "try", strategy: "sas" } : null,
86
- //https://futurestud.io/tutorials/hapi-redirect-to-previous-page-after-login
87
- // set auth to null on all protected routes
88
- plugins: {
89
- "hapi-auth-cookie": { redirectTo: false },
90
- },
91
- handler: logon,
92
- },
93
- },
94
- {
95
- method: ["GET"],
96
- path: `${appName}`,
97
-
98
- options: {
99
- auth: (process.env.USELOGON === 'YES') ? null : options.serverMode === "app" ? authLogon : authDefault,
100
- handler: getAppb,
101
- },
102
- },
103
-
104
- {
105
- method: ["GET"],
106
- path: `${appName}/api`,
107
- options: {
108
- auth: authDefault,
109
- handler: async (req, h) => {
110
- return h.redirect(`${appName}/documentation`);
111
- },
112
- },
113
- },
114
- {
115
- method: ["GET"],
116
- path: `/develop`,
117
- options: {
118
- auth: false,
119
- cors: true,
120
- handler: reactDev,
121
- },
122
- },
123
-
124
- {
125
- method: ["GET"],
126
- path: `${appName}/callback`,
127
- options: {
128
- auth: authDefault,
129
- handler: appCallback,
130
- },
131
- },
132
- {
133
- method: ["GET"],
134
- path: `${appName}/logout`,
135
- options: {
136
- auth: authDefault,
137
- handler: logout,
138
- },
139
- },
140
- {
141
- method: ["GET", "POST"],
142
- path: `${appName}/keepAlive`,
143
-
144
- options: {
145
- auth: authDefault,
146
- handler: keepAlive,
147
- },
148
- },
149
- {
150
- method: ["GET"],
151
- path: `${appName}/appenv`,
152
- options: {
153
- auth: /*authDefault*/ false,
154
- handler: (req, h) => {
155
- let allAppEnv = options.allAppEnv;
156
- if (options.userInfo != null) {
157
- let uappenv = options.userInfo("APPENV", options);
158
- if (uappenv != null) {
159
- allAppEnv.APPENV = { ...allAppEnv.APPENV, ...uappenv };
160
- }
161
- }
162
- allAppEnv.credentials = options.credentials;
163
-
164
- let s =
165
- `let LOGONPAYLOAD = ${JSON.stringify(allAppEnv.LOGONPAYLOAD)};` +
166
- `let APPENV = ${JSON.stringify(allAppEnv.APPENV)};`;
167
- if (process.env.SHOWENV != null) {
168
- console.log(options.allAppEnv);
169
- console.log(s);
170
- }
171
- debug(s);
172
- return s;
173
- },
174
- },
175
- },
176
- {
177
- method: ["GET"],
178
- path: `/appenv`,
179
- options: {
180
- auth: /*authDefault*/ false,
181
- handler: (req, h) => {
182
- let allAppEnv = options.allAppEnv;
183
- if (options.userInfo != null) {
184
- let uappenv = options.userInfo("APPENV", options);
185
- if (uappenv != null) {
186
- allAppEnv.APPENV = { ...allAppEnv.APPENV, ...uappenv };
187
- }
188
- }
189
- allAppEnv.credentials = options.credentials;
190
-
191
- let s =
192
- `let LOGONPAYLOAD = ${JSON.stringify(allAppEnv.LOGONPAYLOAD)};` +
193
- `let APPENV = ${JSON.stringify(allAppEnv.APPENV)};`;
194
- if (process.env.SHOWENV != null) {
195
- console.log(options.allAppEnv);
196
- console.log(s);
197
- }
198
- debug(s)
199
- return s;
200
- },
201
- },
202
- },
203
-
204
- {
205
- method: ["GET"],
206
- path: `${appName}/{param*}`,
207
-
208
- options: {
209
- auth: authDefault,
210
- handler: getApp2,
211
- },
212
- },
213
-
214
- {
215
- method: ["GET"],
216
- path: `/{param*}`,
217
-
218
- options: {
219
- auth: authDefault,
220
- handler: getApp2,
221
- },
222
- },
223
- {
224
- method: ["GET"],
225
- path: `/favicon.ico`,
226
- options: {
227
- auth: false,
228
- handler: favicon,
229
- },
230
- },
231
- {
232
- method: ["GET", "POST"],
233
- path: `${appName}/keepAlive2`,
234
- options: {
235
- auth: authDefault,
236
- handler: keepAlive2,
237
- },
238
- },
239
- ];
240
-
241
- if (process.env.PROXYSERVER != null) {
242
- let pr = {
243
- method: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
244
- path: `${appName}/proxy/{param*}`,
245
- options: {
246
- handler: {
247
- proxy: {
248
- mapUri: proxyMapUri,
249
- xforward: true,
250
- passThrough: true,
251
- },
252
- },
253
- },
254
- };
255
- console.log(pr);
256
- defaultTable.push(pr);
257
- }
258
- console.log(uTable);
259
- let routeTables =
260
- uTable !== null ? defaultTable.concat(uTable) : defaultTable;
261
- server.route(routeTables);
262
- };
@@ -1,48 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * * Copyright (c) SAS Institute Inc.
4
- * * Licensed under the Apache License, Version 2.0 (the "License");
5
- * * you may not use this file except in compliance with the License.
6
- * * You may obtain a copy of the License at
7
- * *
8
- * * http://www.apache.org/licenses/LICENSE-2.0
9
- * *
10
- * * Unless required by applicable law or agreed to in writing, software
11
- * * distributed under the License is distributed on an "AS IS" BASIS,
12
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ----------------------------------------------------------------------------------------
16
- *
17
- */
18
-
19
- let SASauth = require('./SASauth');
20
- let appCookie = require('./appCookie');
21
- let token = require('./token');
22
- let setDefaultRoutes = require('./setDefaultRoutes');
23
-
24
- /** Notes:
25
- * If api then register sasAuth and token - no cookies
26
- * If app, then register sasAuth and cookie(session) but no token
27
- */
28
- async function setupAuth (server, options){
29
-
30
- if (options.authFlow === 'server') {
31
- await server.register({plugin: SASauth, options: options});
32
- // await server.register({plugin: appCookie, options: options});
33
- await appCookie(server,options);
34
-
35
- let def = 'session';
36
- if (options.serverMode === 'api') {
37
- await server.register({ plugin: token });
38
- def = 'token';
39
- }
40
- server.log('***********************Default auth', def);
41
- server.auth.default(def);
42
- // console.log(server.registerations);
43
- }
44
- setDefaultRoutes(server, options);
45
- return true;
46
- };
47
-
48
- export default setupAuth;
@@ -1,48 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * Copyright (c) SAS Institute Inc.
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ---------------------------------------------------------------------------------------
16
- *
17
- */
18
- import setContext from './setContext';
19
-
20
- function setupUserRoutes (u, options) {
21
- if (u == null) {
22
- return [];
23
- }
24
-
25
- let ux = (typeof u === 'function') ? u() : u;
26
- let routes = ux.map(rx => {
27
- //let rx = {...r};
28
- /* change it to options */
29
- if (rx.config != null) {
30
- rx.options = {...rx.config};
31
- delete rx.config;
32
- }
33
- if (rx.options.pre == null) {
34
- rx.options.pre = [{method: setContext, assign: 'context'}];
35
- } else{
36
- rx.options.pre.push([{method: setContext, assign: 'context'}]);
37
- }
38
- if (rx.options.auth === true) {
39
- rx.options.auth = options.authDefault;
40
- } else if (rx.options.auth === 'logon') {
41
- rx.options.auth = options.authLogon;
42
- }
43
-
44
- return rx;
45
- });
46
- return routes;
47
- }
48
- export default setupUserRoutes;
@@ -1,10 +0,0 @@
1
- exports.plugin = {
2
- name : 'token',
3
- version : '1.0.0',
4
- register: itoken
5
- };
6
-
7
- async function itoken (server){
8
- await server.auth.scheme('SAStoken',require('../schemes/SASTokenScheme'));
9
- server.auth.strategy('token', 'SAStoken');
10
- }
@@ -1,43 +0,0 @@
1
- /*
2
- * ------------------------------------------------------------------------------------
3
- * Copyright (c) SAS Institute Inc.
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- * ---------------------------------------------------------------------------------------
16
- *
17
- */
18
- // lean code to handle of incoming tokens if present
19
- // designed to used with appCookie and SASauth
20
-
21
- const Boom = require('@hapi/boom');
22
-
23
- module.exports = function SASTokenScheme (server, options) {
24
-
25
- const scheme = {
26
- authenticate: async function (request, h) {
27
- const authorization = request.headers.authorization;
28
- server.log('SASToken', authorization);
29
-
30
- if (!authorization) {
31
- throw Boom.unauthorized(null, 'session');
32
- }
33
- const [tokenType, token] = authorization.split(' ');
34
- let credentials = {
35
- token : token,
36
- tokenType: tokenType
37
- };
38
- return h.authenticated({credentials: credentials});
39
- }
40
- };
41
-
42
- return scheme;
43
- };
@@ -1,24 +0,0 @@
1
- <html>
2
- <body>
3
- <div>
4
- <h1 style="background-color:blue;">{{title}}</h1>
5
- <div style="border-style:solid; border-width: 2px;"><pre>{{message}}<pre></pre></div>
6
- </div>
7
-
8
- <h2>Hints for Logon Error - Contact your administrator</h2>
9
-
10
- <ul>
11
- <li>SAMESITE setting is not correct for your environment (contact your administrator)</li>
12
- <li>Presence of self-signed certificates - might have to set NODE_TLS_REJECT_UNAUTHORIZED=0 in the env file</li>
13
- <li>You might have to clear the cookies for your Viya Server</li>
14
- <li>You might have to clear the cookies set by this app server</li>
15
- </ul>
16
-
17
- <h2>404</h2>
18
- <ul>
19
- <li> Make sure the proper appname is used in script tags for /appenv and /user</li>
20
- <li> Make sure you are starting the application at the proper url</li>
21
- </ul>
22
-
23
- </body>
24
- </html>
@@ -1,11 +0,0 @@
1
- # moved rest to Dockerfile
2
- APPPORT=8080
3
- VIYA_SERVER=
4
- # TLS_KEY=../../secrets/tls.key
5
- # TLS_CERT=../../secrets/tls.crt
6
- # TLS_CADUNDLE=../../secrets/ca.crt
7
- CLIENTID=frameapp
8
- CLIENTSECRET=secret
9
-
10
- APPNAME=viyaapp
11
- USETOKEN=YES
@@ -1,42 +0,0 @@
1
- {
2
- "root": true,
3
- "env": {
4
- "browser": true,
5
- "node": true,
6
- "es6": true
7
- },
8
- "parser": "@babel/eslint-parser",
9
- "extends": ["eslint:recommended", "prettier"],
10
- "parserOptions": {
11
- "requireConfigFile": false,
12
- "babelOptions": {"configFile": "./.babelrc"},
13
- "ecmaVersion": 6,
14
- "sourceType": "module",
15
- "ecmaFeatures": {
16
- "jsx": true
17
- }
18
- },
19
- "rules": {
20
- "key-spacing": [
21
- 2,
22
- {
23
- "align": "colon"
24
- }
25
- ],
26
- "jsx-quotes": [2, "prefer-double"],
27
- "no-console": 0,
28
- "no-unused-vars": [
29
- 1,
30
- {
31
- "args": "none"
32
- }
33
- ],
34
- "no-debugger": 0,
35
- "react/prop-types": 0,
36
- "array-bracket-spacing": [2, "never"],
37
- "space-in-parens": [2, "never"],
38
- "space-before-function-paren": [2, "always"],
39
- "semi": [2, "always"],
40
- "no-prototype-builtins": 0
41
- }
42
- }