Browse Source

* switch to composer for qrcode and otp dependencies

* move most OTP-related stuff into userhelper
* remove old phpqrcode and otphp libraries
master
Andrew Dolgov 1 year ago
parent
commit
3fd7856543
  1. 103
      classes/pref/prefs.php
  2. 2
      classes/rpc.php
  3. 79
      classes/userhelper.php
  4. 6
      composer.json
  5. 495
      composer.lock
  6. 21
      include/autoload.php
  7. 38
      lib/phpqrcode/CHANGELOG
  8. 67
      lib/phpqrcode/INSTALL
  9. 165
      lib/phpqrcode/LICENSE
  10. 45
      lib/phpqrcode/README
  11. 2
      lib/phpqrcode/VERSION
  12. 2875
      lib/phpqrcode/bindings/tcpdf/qrcode.php
  13. 2
      lib/phpqrcode/cache/frame_1.dat
  14. BIN
      lib/phpqrcode/cache/frame_1.png
  15. BIN
      lib/phpqrcode/cache/frame_10.dat
  16. BIN
      lib/phpqrcode/cache/frame_10.png
  17. BIN
      lib/phpqrcode/cache/frame_11.dat
  18. BIN
      lib/phpqrcode/cache/frame_11.png
  19. BIN
      lib/phpqrcode/cache/frame_12.dat
  20. BIN
      lib/phpqrcode/cache/frame_12.png
  21. BIN
      lib/phpqrcode/cache/frame_13.dat
  22. BIN
      lib/phpqrcode/cache/frame_13.png
  23. BIN
      lib/phpqrcode/cache/frame_14.dat
  24. BIN
      lib/phpqrcode/cache/frame_14.png
  25. BIN
      lib/phpqrcode/cache/frame_15.dat
  26. BIN
      lib/phpqrcode/cache/frame_15.png
  27. 1
      lib/phpqrcode/cache/frame_16.dat
  28. BIN
      lib/phpqrcode/cache/frame_16.png
  29. BIN
      lib/phpqrcode/cache/frame_17.dat
  30. BIN
      lib/phpqrcode/cache/frame_17.png
  31. 2
      lib/phpqrcode/cache/frame_18.dat
  32. BIN
      lib/phpqrcode/cache/frame_18.png
  33. 3
      lib/phpqrcode/cache/frame_19.dat
  34. BIN
      lib/phpqrcode/cache/frame_19.png
  35. 1
      lib/phpqrcode/cache/frame_2.dat
  36. BIN
      lib/phpqrcode/cache/frame_2.png
  37. BIN
      lib/phpqrcode/cache/frame_20.dat
  38. BIN
      lib/phpqrcode/cache/frame_20.png
  39. 1
      lib/phpqrcode/cache/frame_21.dat
  40. BIN
      lib/phpqrcode/cache/frame_21.png
  41. 3
      lib/phpqrcode/cache/frame_22.dat
  42. BIN
      lib/phpqrcode/cache/frame_22.png
  43. 3
      lib/phpqrcode/cache/frame_23.dat
  44. BIN
      lib/phpqrcode/cache/frame_23.png
  45. 1
      lib/phpqrcode/cache/frame_24.dat
  46. BIN
      lib/phpqrcode/cache/frame_24.png
  47. 3
      lib/phpqrcode/cache/frame_25.dat
  48. BIN
      lib/phpqrcode/cache/frame_25.png
  49. 2
      lib/phpqrcode/cache/frame_26.dat
  50. BIN
      lib/phpqrcode/cache/frame_26.png
  51. BIN
      lib/phpqrcode/cache/frame_27.dat
  52. BIN
      lib/phpqrcode/cache/frame_27.png
  53. BIN
      lib/phpqrcode/cache/frame_28.dat
  54. BIN
      lib/phpqrcode/cache/frame_28.png
  55. 2
      lib/phpqrcode/cache/frame_29.dat
  56. BIN
      lib/phpqrcode/cache/frame_29.png
  57. 1
      lib/phpqrcode/cache/frame_3.dat
  58. BIN
      lib/phpqrcode/cache/frame_3.png
  59. BIN
      lib/phpqrcode/cache/frame_30.dat
  60. BIN
      lib/phpqrcode/cache/frame_30.png
  61. 1
      lib/phpqrcode/cache/frame_31.dat
  62. BIN
      lib/phpqrcode/cache/frame_31.png
  63. 2
      lib/phpqrcode/cache/frame_32.dat
  64. BIN
      lib/phpqrcode/cache/frame_32.png
  65. 14
      lib/phpqrcode/cache/frame_33.dat
  66. BIN
      lib/phpqrcode/cache/frame_33.png
  67. BIN
      lib/phpqrcode/cache/frame_34.dat
  68. BIN
      lib/phpqrcode/cache/frame_34.png
  69. BIN
      lib/phpqrcode/cache/frame_35.dat
  70. BIN
      lib/phpqrcode/cache/frame_35.png
  71. BIN
      lib/phpqrcode/cache/frame_36.dat
  72. BIN
      lib/phpqrcode/cache/frame_36.png
  73. BIN
      lib/phpqrcode/cache/frame_37.dat
  74. BIN
      lib/phpqrcode/cache/frame_37.png
  75. 1
      lib/phpqrcode/cache/frame_38.dat
  76. BIN
      lib/phpqrcode/cache/frame_38.png
  77. BIN
      lib/phpqrcode/cache/frame_39.dat
  78. BIN
      lib/phpqrcode/cache/frame_39.png
  79. 1
      lib/phpqrcode/cache/frame_4.dat
  80. BIN
      lib/phpqrcode/cache/frame_4.png
  81. 2
      lib/phpqrcode/cache/frame_40.dat
  82. BIN
      lib/phpqrcode/cache/frame_40.png
  83. 1
      lib/phpqrcode/cache/frame_5.dat
  84. BIN
      lib/phpqrcode/cache/frame_5.png
  85. BIN
      lib/phpqrcode/cache/frame_6.dat
  86. BIN
      lib/phpqrcode/cache/frame_6.png
  87. BIN
      lib/phpqrcode/cache/frame_7.dat
  88. BIN
      lib/phpqrcode/cache/frame_7.png
  89. BIN
      lib/phpqrcode/cache/frame_8.dat
  90. BIN
      lib/phpqrcode/cache/frame_8.png
  91. BIN
      lib/phpqrcode/cache/frame_9.dat
  92. BIN
      lib/phpqrcode/cache/frame_9.png
  93. BIN
      lib/phpqrcode/cache/mask_0/mask_101_0.dat
  94. BIN
      lib/phpqrcode/cache/mask_0/mask_105_0.dat
  95. 2
      lib/phpqrcode/cache/mask_0/mask_109_0.dat
  96. 2
      lib/phpqrcode/cache/mask_0/mask_113_0.dat
  97. 2
      lib/phpqrcode/cache/mask_0/mask_117_0.dat
  98. 1
      lib/phpqrcode/cache/mask_0/mask_121_0.dat
  99. 2
      lib/phpqrcode/cache/mask_0/mask_125_0.dat
  100. 2
      lib/phpqrcode/cache/mask_0/mask_129_0.dat
  101. 2
      lib/phpqrcode/cache/mask_0/mask_133_0.dat
  102. 1
      lib/phpqrcode/cache/mask_0/mask_137_0.dat
  103. 2
      lib/phpqrcode/cache/mask_0/mask_141_0.dat
  104. 2
      lib/phpqrcode/cache/mask_0/mask_145_0.dat
  105. 3
      lib/phpqrcode/cache/mask_0/mask_149_0.dat
  106. 1
      lib/phpqrcode/cache/mask_0/mask_153_0.dat
  107. 2
      lib/phpqrcode/cache/mask_0/mask_157_0.dat
  108. BIN
      lib/phpqrcode/cache/mask_0/mask_161_0.dat
  109. 2
      lib/phpqrcode/cache/mask_0/mask_165_0.dat
  110. 2
      lib/phpqrcode/cache/mask_0/mask_169_0.dat
  111. 1
      lib/phpqrcode/cache/mask_0/mask_173_0.dat
  112. 2
      lib/phpqrcode/cache/mask_0/mask_177_0.dat
  113. BIN
      lib/phpqrcode/cache/mask_0/mask_21_0.dat
  114. BIN
      lib/phpqrcode/cache/mask_0/mask_25_0.dat
  115. BIN
      lib/phpqrcode/cache/mask_0/mask_29_0.dat
  116. BIN
      lib/phpqrcode/cache/mask_0/mask_33_0.dat
  117. BIN
      lib/phpqrcode/cache/mask_0/mask_37_0.dat
  118. BIN
      lib/phpqrcode/cache/mask_0/mask_41_0.dat
  119. BIN
      lib/phpqrcode/cache/mask_0/mask_45_0.dat
  120. 2
      lib/phpqrcode/cache/mask_0/mask_49_0.dat
  121. 2
      lib/phpqrcode/cache/mask_0/mask_53_0.dat
  122. 4
      lib/phpqrcode/cache/mask_0/mask_57_0.dat
  123. BIN
      lib/phpqrcode/cache/mask_0/mask_61_0.dat
  124. BIN
      lib/phpqrcode/cache/mask_0/mask_65_0.dat
  125. 1
      lib/phpqrcode/cache/mask_0/mask_69_0.dat
  126. 1
      lib/phpqrcode/cache/mask_0/mask_73_0.dat
  127. 2
      lib/phpqrcode/cache/mask_0/mask_77_0.dat
  128. 2
      lib/phpqrcode/cache/mask_0/mask_81_0.dat
  129. 2
      lib/phpqrcode/cache/mask_0/mask_85_0.dat
  130. 1
      lib/phpqrcode/cache/mask_0/mask_89_0.dat
  131. 3
      lib/phpqrcode/cache/mask_0/mask_93_0.dat
  132. BIN
      lib/phpqrcode/cache/mask_0/mask_97_0.dat
  133. 2
      lib/phpqrcode/cache/mask_1/mask_101_1.dat
  134. 1
      lib/phpqrcode/cache/mask_1/mask_105_1.dat
  135. 1
      lib/phpqrcode/cache/mask_1/mask_109_1.dat
  136. 1
      lib/phpqrcode/cache/mask_1/mask_113_1.dat
  137. 2
      lib/phpqrcode/cache/mask_1/mask_117_1.dat
  138. 2
      lib/phpqrcode/cache/mask_1/mask_121_1.dat
  139. 2
      lib/phpqrcode/cache/mask_1/mask_125_1.dat
  140. BIN
      lib/phpqrcode/cache/mask_1/mask_129_1.dat
  141. 1
      lib/phpqrcode/cache/mask_1/mask_133_1.dat
  142. 3
      lib/phpqrcode/cache/mask_1/mask_137_1.dat
  143. 2
      lib/phpqrcode/cache/mask_1/mask_141_1.dat
  144. 1
      lib/phpqrcode/cache/mask_1/mask_145_1.dat
  145. 1
      lib/phpqrcode/cache/mask_1/mask_149_1.dat
  146. 2
      lib/phpqrcode/cache/mask_1/mask_153_1.dat
  147. 2
      lib/phpqrcode/cache/mask_1/mask_157_1.dat
  148. 1
      lib/phpqrcode/cache/mask_1/mask_161_1.dat
  149. 1
      lib/phpqrcode/cache/mask_1/mask_165_1.dat
  150. 1
      lib/phpqrcode/cache/mask_1/mask_169_1.dat
  151. 1
      lib/phpqrcode/cache/mask_1/mask_173_1.dat
  152. 1
      lib/phpqrcode/cache/mask_1/mask_177_1.dat
  153. BIN
      lib/phpqrcode/cache/mask_1/mask_21_1.dat
  154. BIN
      lib/phpqrcode/cache/mask_1/mask_25_1.dat
  155. BIN
      lib/phpqrcode/cache/mask_1/mask_29_1.dat
  156. BIN
      lib/phpqrcode/cache/mask_1/mask_33_1.dat
  157. BIN
      lib/phpqrcode/cache/mask_1/mask_37_1.dat
  158. BIN
      lib/phpqrcode/cache/mask_1/mask_41_1.dat
  159. BIN
      lib/phpqrcode/cache/mask_1/mask_45_1.dat
  160. BIN
      lib/phpqrcode/cache/mask_1/mask_49_1.dat
  161. BIN
      lib/phpqrcode/cache/mask_1/mask_53_1.dat
  162. BIN
      lib/phpqrcode/cache/mask_1/mask_57_1.dat
  163. 1
      lib/phpqrcode/cache/mask_1/mask_61_1.dat
  164. BIN
      lib/phpqrcode/cache/mask_1/mask_65_1.dat
  165. BIN
      lib/phpqrcode/cache/mask_1/mask_69_1.dat
  166. BIN
      lib/phpqrcode/cache/mask_1/mask_73_1.dat
  167. BIN
      lib/phpqrcode/cache/mask_1/mask_77_1.dat
  168. BIN
      lib/phpqrcode/cache/mask_1/mask_81_1.dat
  169. 2
      lib/phpqrcode/cache/mask_1/mask_85_1.dat
  170. 1
      lib/phpqrcode/cache/mask_1/mask_89_1.dat
  171. 2
      lib/phpqrcode/cache/mask_1/mask_93_1.dat
  172. 2
      lib/phpqrcode/cache/mask_1/mask_97_1.dat
  173. 3
      lib/phpqrcode/cache/mask_2/mask_101_2.dat
  174. 1
      lib/phpqrcode/cache/mask_2/mask_105_2.dat
  175. 2
      lib/phpqrcode/cache/mask_2/mask_109_2.dat
  176. 1
      lib/phpqrcode/cache/mask_2/mask_113_2.dat
  177. 2
      lib/phpqrcode/cache/mask_2/mask_117_2.dat
  178. BIN
      lib/phpqrcode/cache/mask_2/mask_121_2.dat
  179. 1
      lib/phpqrcode/cache/mask_2/mask_125_2.dat
  180. 2
      lib/phpqrcode/cache/mask_2/mask_129_2.dat
  181. 10
      lib/phpqrcode/cache/mask_2/mask_133_2.dat
  182. 2
      lib/phpqrcode/cache/mask_2/mask_137_2.dat
  183. 2
      lib/phpqrcode/cache/mask_2/mask_141_2.dat
  184. 4
      lib/phpqrcode/cache/mask_2/mask_145_2.dat
  185. 1
      lib/phpqrcode/cache/mask_2/mask_149_2.dat
  186. 2
      lib/phpqrcode/cache/mask_2/mask_153_2.dat
  187. 3
      lib/phpqrcode/cache/mask_2/mask_157_2.dat
  188. BIN
      lib/phpqrcode/cache/mask_2/mask_161_2.dat
  189. 2
      lib/phpqrcode/cache/mask_2/mask_165_2.dat
  190. BIN
      lib/phpqrcode/cache/mask_2/mask_169_2.dat
  191. 1
      lib/phpqrcode/cache/mask_2/mask_173_2.dat
  192. 2
      lib/phpqrcode/cache/mask_2/mask_177_2.dat
  193. BIN
      lib/phpqrcode/cache/mask_2/mask_21_2.dat
  194. BIN
      lib/phpqrcode/cache/mask_2/mask_25_2.dat
  195. BIN
      lib/phpqrcode/cache/mask_2/mask_29_2.dat
  196. BIN
      lib/phpqrcode/cache/mask_2/mask_33_2.dat
  197. BIN
      lib/phpqrcode/cache/mask_2/mask_37_2.dat
  198. 1
      lib/phpqrcode/cache/mask_2/mask_41_2.dat
  199. BIN
      lib/phpqrcode/cache/mask_2/mask_45_2.dat
  200. BIN
      lib/phpqrcode/cache/mask_2/mask_49_2.dat
  201. BIN
      lib/phpqrcode/cache/mask_2/mask_53_2.dat
  202. BIN
      lib/phpqrcode/cache/mask_2/mask_57_2.dat
  203. BIN
      lib/phpqrcode/cache/mask_2/mask_61_2.dat
  204. BIN
      lib/phpqrcode/cache/mask_2/mask_65_2.dat
  205. BIN
      lib/phpqrcode/cache/mask_2/mask_69_2.dat
  206. BIN
      lib/phpqrcode/cache/mask_2/mask_73_2.dat
  207. 1
      lib/phpqrcode/cache/mask_2/mask_77_2.dat
  208. 2
      lib/phpqrcode/cache/mask_2/mask_81_2.dat
  209. 2
      lib/phpqrcode/cache/mask_2/mask_85_2.dat
  210. 1
      lib/phpqrcode/cache/mask_2/mask_89_2.dat
  211. BIN
      lib/phpqrcode/cache/mask_2/mask_93_2.dat
  212. 2
      lib/phpqrcode/cache/mask_2/mask_97_2.dat
  213. 1
      lib/phpqrcode/cache/mask_3/mask_101_3.dat
  214. 1
      lib/phpqrcode/cache/mask_3/mask_105_3.dat
  215. 1
      lib/phpqrcode/cache/mask_3/mask_109_3.dat
  216. 2
      lib/phpqrcode/cache/mask_3/mask_113_3.dat
  217. 4
      lib/phpqrcode/cache/mask_3/mask_117_3.dat
  218. BIN
      lib/phpqrcode/cache/mask_3/mask_121_3.dat
  219. 2
      lib/phpqrcode/cache/mask_3/mask_125_3.dat
  220. 8
      lib/phpqrcode/cache/mask_3/mask_129_3.dat
  221. BIN
      lib/phpqrcode/cache/mask_3/mask_133_3.dat
  222. 2
      lib/phpqrcode/cache/mask_3/mask_137_3.dat
  223. 2
      lib/phpqrcode/cache/mask_3/mask_141_3.dat
  224. 3
      lib/phpqrcode/cache/mask_3/mask_145_3.dat
  225. 1
      lib/phpqrcode/cache/mask_3/mask_149_3.dat
  226. 2
      lib/phpqrcode/cache/mask_3/mask_153_3.dat
  227. BIN
      lib/phpqrcode/cache/mask_3/mask_157_3.dat
  228. 3
      lib/phpqrcode/cache/mask_3/mask_161_3.dat
  229. 2
      lib/phpqrcode/cache/mask_3/mask_165_3.dat
  230. 1
      lib/phpqrcode/cache/mask_3/mask_169_3.dat
  231. 1
      lib/phpqrcode/cache/mask_3/mask_173_3.dat
  232. BIN
      lib/phpqrcode/cache/mask_3/mask_177_3.dat
  233. BIN
      lib/phpqrcode/cache/mask_3/mask_21_3.dat
  234. BIN
      lib/phpqrcode/cache/mask_3/mask_25_3.dat
  235. BIN
      lib/phpqrcode/cache/mask_3/mask_29_3.dat
  236. BIN
      lib/phpqrcode/cache/mask_3/mask_33_3.dat
  237. BIN
      lib/phpqrcode/cache/mask_3/mask_37_3.dat
  238. BIN
      lib/phpqrcode/cache/mask_3/mask_41_3.dat
  239. 2
      lib/phpqrcode/cache/mask_3/mask_45_3.dat
  240. BIN
      lib/phpqrcode/cache/mask_3/mask_49_3.dat
  241. 2
      lib/phpqrcode/cache/mask_3/mask_53_3.dat
  242. BIN
      lib/phpqrcode/cache/mask_3/mask_57_3.dat
  243. 2
      lib/phpqrcode/cache/mask_3/mask_61_3.dat
  244. 2
      lib/phpqrcode/cache/mask_3/mask_65_3.dat
  245. 2
      lib/phpqrcode/cache/mask_3/mask_69_3.dat
  246. 2
      lib/phpqrcode/cache/mask_3/mask_73_3.dat
  247. 2
      lib/phpqrcode/cache/mask_3/mask_77_3.dat
  248. 2
      lib/phpqrcode/cache/mask_3/mask_81_3.dat
  249. BIN
      lib/phpqrcode/cache/mask_3/mask_85_3.dat
  250. 2
      lib/phpqrcode/cache/mask_3/mask_89_3.dat
  251. 2
      lib/phpqrcode/cache/mask_3/mask_93_3.dat
  252. BIN
      lib/phpqrcode/cache/mask_3/mask_97_3.dat
  253. 2
      lib/phpqrcode/cache/mask_4/mask_101_4.dat
  254. 2
      lib/phpqrcode/cache/mask_4/mask_105_4.dat
  255. BIN
      lib/phpqrcode/cache/mask_4/mask_109_4.dat
  256. 2
      lib/phpqrcode/cache/mask_4/mask_113_4.dat
  257. 2
      lib/phpqrcode/cache/mask_4/mask_117_4.dat
  258. BIN
      lib/phpqrcode/cache/mask_4/mask_121_4.dat
  259. BIN
      lib/phpqrcode/cache/mask_4/mask_125_4.dat
  260. BIN
      lib/phpqrcode/cache/mask_4/mask_129_4.dat
  261. 3
      lib/phpqrcode/cache/mask_4/mask_133_4.dat
  262. BIN
      lib/phpqrcode/cache/mask_4/mask_137_4.dat
  263. BIN
      lib/phpqrcode/cache/mask_4/mask_141_4.dat
  264. BIN
      lib/phpqrcode/cache/mask_4/mask_145_4.dat
  265. 2
      lib/phpqrcode/cache/mask_4/mask_149_4.dat
  266. 2
      lib/phpqrcode/cache/mask_4/mask_153_4.dat
  267. 1
      lib/phpqrcode/cache/mask_4/mask_157_4.dat
  268. 1
      lib/phpqrcode/cache/mask_4/mask_161_4.dat
  269. 3
      lib/phpqrcode/cache/mask_4/mask_165_4.dat
  270. BIN
      lib/phpqrcode/cache/mask_4/mask_169_4.dat
  271. 2
      lib/phpqrcode/cache/mask_4/mask_173_4.dat
  272. 2
      lib/phpqrcode/cache/mask_4/mask_177_4.dat
  273. BIN
      lib/phpqrcode/cache/mask_4/mask_21_4.dat
  274. BIN
      lib/phpqrcode/cache/mask_4/mask_25_4.dat
  275. BIN
      lib/phpqrcode/cache/mask_4/mask_29_4.dat
  276. BIN
      lib/phpqrcode/cache/mask_4/mask_33_4.dat
  277. BIN
      lib/phpqrcode/cache/mask_4/mask_37_4.dat
  278. BIN
      lib/phpqrcode/cache/mask_4/mask_41_4.dat
  279. BIN
      lib/phpqrcode/cache/mask_4/mask_45_4.dat
  280. BIN
      lib/phpqrcode/cache/mask_4/mask_49_4.dat
  281. BIN
      lib/phpqrcode/cache/mask_4/mask_53_4.dat
  282. BIN
      lib/phpqrcode/cache/mask_4/mask_57_4.dat
  283. BIN
      lib/phpqrcode/cache/mask_4/mask_61_4.dat
  284. 2
      lib/phpqrcode/cache/mask_4/mask_65_4.dat
  285. 1
      lib/phpqrcode/cache/mask_4/mask_69_4.dat
  286. 3
      lib/phpqrcode/cache/mask_4/mask_73_4.dat
  287. 2
      lib/phpqrcode/cache/mask_4/mask_77_4.dat
  288. 3
      lib/phpqrcode/cache/mask_4/mask_81_4.dat
  289. BIN
      lib/phpqrcode/cache/mask_4/mask_85_4.dat
  290. 2
      lib/phpqrcode/cache/mask_4/mask_89_4.dat
  291. 2
      lib/phpqrcode/cache/mask_4/mask_93_4.dat
  292. BIN
      lib/phpqrcode/cache/mask_4/mask_97_4.dat
  293. 2
      lib/phpqrcode/cache/mask_5/mask_101_5.dat
  294. BIN
      lib/phpqrcode/cache/mask_5/mask_105_5.dat
  295. BIN
      lib/phpqrcode/cache/mask_5/mask_109_5.dat
  296. 9
      lib/phpqrcode/cache/mask_5/mask_113_5.dat
  297. 1
      lib/phpqrcode/cache/mask_5/mask_117_5.dat
  298. BIN
      lib/phpqrcode/cache/mask_5/mask_121_5.dat
  299. 2
      lib/phpqrcode/cache/mask_5/mask_125_5.dat
  300. BIN
      lib/phpqrcode/cache/mask_5/mask_129_5.dat
  301. 2
      lib/phpqrcode/cache/mask_5/mask_133_5.dat
  302. 3
      lib/phpqrcode/cache/mask_5/mask_137_5.dat
  303. BIN
      lib/phpqrcode/cache/mask_5/mask_141_5.dat
  304. BIN
      lib/phpqrcode/cache/mask_5/mask_145_5.dat
  305. 3
      lib/phpqrcode/cache/mask_5/mask_149_5.dat
  306. 2
      lib/phpqrcode/cache/mask_5/mask_153_5.dat
  307. 1
      lib/phpqrcode/cache/mask_5/mask_157_5.dat
  308. 2
      lib/phpqrcode/cache/mask_5/mask_161_5.dat
  309. BIN
      lib/phpqrcode/cache/mask_5/mask_165_5.dat
  310. 1
      lib/phpqrcode/cache/mask_5/mask_169_5.dat
  311. 4
      lib/phpqrcode/cache/mask_5/mask_173_5.dat
  312. 11
      lib/phpqrcode/cache/mask_5/mask_177_5.dat
  313. BIN
      lib/phpqrcode/cache/mask_5/mask_21_5.dat
  314. 2
      lib/phpqrcode/cache/mask_5/mask_25_5.dat
  315. 2
      lib/phpqrcode/cache/mask_5/mask_29_5.dat
  316. BIN
      lib/phpqrcode/cache/mask_5/mask_33_5.dat
  317. BIN
      lib/phpqrcode/cache/mask_5/mask_37_5.dat
  318. 2
      lib/phpqrcode/cache/mask_5/mask_41_5.dat
  319. 1
      lib/phpqrcode/cache/mask_5/mask_45_5.dat
  320. BIN
      lib/phpqrcode/cache/mask_5/mask_49_5.dat
  321. 1
      lib/phpqrcode/cache/mask_5/mask_53_5.dat
  322. 2
      lib/phpqrcode/cache/mask_5/mask_57_5.dat
  323. 1
      lib/phpqrcode/cache/mask_5/mask_61_5.dat
  324. BIN
      lib/phpqrcode/cache/mask_5/mask_65_5.dat
  325. BIN
      lib/phpqrcode/cache/mask_5/mask_69_5.dat
  326. BIN
      lib/phpqrcode/cache/mask_5/mask_73_5.dat
  327. 1
      lib/phpqrcode/cache/mask_5/mask_77_5.dat
  328. 3
      lib/phpqrcode/cache/mask_5/mask_81_5.dat
  329. BIN
      lib/phpqrcode/cache/mask_5/mask_85_5.dat
  330. 2
      lib/phpqrcode/cache/mask_5/mask_89_5.dat
  331. 2
      lib/phpqrcode/cache/mask_5/mask_93_5.dat
  332. 1
      lib/phpqrcode/cache/mask_5/mask_97_5.dat
  333. 2
      lib/phpqrcode/cache/mask_6/mask_101_6.dat
  334. 3
      lib/phpqrcode/cache/mask_6/mask_105_6.dat
  335. 1
      lib/phpqrcode/cache/mask_6/mask_109_6.dat
  336. 3
      lib/phpqrcode/cache/mask_6/mask_113_6.dat
  337. 1
      lib/phpqrcode/cache/mask_6/mask_117_6.dat
  338. BIN
      lib/phpqrcode/cache/mask_6/mask_121_6.dat
  339. 1
      lib/phpqrcode/cache/mask_6/mask_125_6.dat
  340. BIN
      lib/phpqrcode/cache/mask_6/mask_129_6.dat
  341. BIN
      lib/phpqrcode/cache/mask_6/mask_133_6.dat
  342. 2
      lib/phpqrcode/cache/mask_6/mask_137_6.dat
  343. 10
      lib/phpqrcode/cache/mask_6/mask_141_6.dat
  344. BIN
      lib/phpqrcode/cache/mask_6/mask_145_6.dat
  345. 2
      lib/phpqrcode/cache/mask_6/mask_149_6.dat
  346. BIN
      lib/phpqrcode/cache/mask_6/mask_153_6.dat
  347. 1
      lib/phpqrcode/cache/mask_6/mask_157_6.dat
  348. BIN
      lib/phpqrcode/cache/mask_6/mask_161_6.dat
  349. BIN
      lib/phpqrcode/cache/mask_6/mask_165_6.dat
  350. 1
      lib/phpqrcode/cache/mask_6/mask_169_6.dat
  351. 1
      lib/phpqrcode/cache/mask_6/mask_173_6.dat
  352. 14
      lib/phpqrcode/cache/mask_6/mask_177_6.dat
  353. 1
      lib/phpqrcode/cache/mask_6/mask_21_6.dat
  354. 1
      lib/phpqrcode/cache/mask_6/mask_25_6.dat
  355. 3
      lib/phpqrcode/cache/mask_6/mask_29_6.dat
  356. BIN
      lib/phpqrcode/cache/mask_6/mask_33_6.dat
  357. 1
      lib/phpqrcode/cache/mask_6/mask_37_6.dat
  358. BIN
      lib/phpqrcode/cache/mask_6/mask_41_6.dat
  359. BIN
      lib/phpqrcode/cache/mask_6/mask_45_6.dat
  360. 2
      lib/phpqrcode/cache/mask_6/mask_49_6.dat
  361. BIN
      lib/phpqrcode/cache/mask_6/mask_53_6.dat
  362. 2
      lib/phpqrcode/cache/mask_6/mask_57_6.dat
  363. 2
      lib/phpqrcode/cache/mask_6/mask_61_6.dat
  364. 1
      lib/phpqrcode/cache/mask_6/mask_65_6.dat
  365. 1
      lib/phpqrcode/cache/mask_6/mask_69_6.dat
  366. BIN
      lib/phpqrcode/cache/mask_6/mask_73_6.dat
  367. 1
      lib/phpqrcode/cache/mask_6/mask_77_6.dat
  368. 3
      lib/phpqrcode/cache/mask_6/mask_81_6.dat
  369. BIN
      lib/phpqrcode/cache/mask_6/mask_85_6.dat
  370. BIN
      lib/phpqrcode/cache/mask_6/mask_89_6.dat
  371. BIN
      lib/phpqrcode/cache/mask_6/mask_93_6.dat
  372. 2
      lib/phpqrcode/cache/mask_6/mask_97_6.dat
  373. 1
      lib/phpqrcode/cache/mask_7/mask_101_7.dat
  374. 2
      lib/phpqrcode/cache/mask_7/mask_105_7.dat
  375. 2
      lib/phpqrcode/cache/mask_7/mask_109_7.dat
  376. 11
      lib/phpqrcode/cache/mask_7/mask_113_7.dat
  377. 2
      lib/phpqrcode/cache/mask_7/mask_117_7.dat
  378. 2
      lib/phpqrcode/cache/mask_7/mask_121_7.dat
  379. BIN
      lib/phpqrcode/cache/mask_7/mask_125_7.dat
  380. BIN
      lib/phpqrcode/cache/mask_7/mask_129_7.dat
  381. BIN
      lib/phpqrcode/cache/mask_7/mask_133_7.dat
  382. 5
      lib/phpqrcode/cache/mask_7/mask_137_7.dat
  383. 1
      lib/phpqrcode/cache/mask_7/mask_141_7.dat
  384. 2
      lib/phpqrcode/cache/mask_7/mask_145_7.dat
  385. 1
      lib/phpqrcode/cache/mask_7/mask_149_7.dat
  386. 2
      lib/phpqrcode/cache/mask_7/mask_153_7.dat
  387. 2
      lib/phpqrcode/cache/mask_7/mask_157_7.dat
  388. 1
      lib/phpqrcode/cache/mask_7/mask_161_7.dat
  389. 1
      lib/phpqrcode/cache/mask_7/mask_165_7.dat
  390. BIN
      lib/phpqrcode/cache/mask_7/mask_169_7.dat
  391. 1
      lib/phpqrcode/cache/mask_7/mask_173_7.dat
  392. BIN
      lib/phpqrcode/cache/mask_7/mask_177_7.dat
  393. 4
      lib/phpqrcode/cache/mask_7/mask_21_7.dat
  394. 1
      lib/phpqrcode/cache/mask_7/mask_25_7.dat
  395. 2
      lib/phpqrcode/cache/mask_7/mask_29_7.dat
  396. 1
      lib/phpqrcode/cache/mask_7/mask_33_7.dat
  397. BIN
      lib/phpqrcode/cache/mask_7/mask_37_7.dat
  398. 1
      lib/phpqrcode/cache/mask_7/mask_41_7.dat
  399. BIN
      lib/phpqrcode/cache/mask_7/mask_45_7.dat
  400. 1
      lib/phpqrcode/cache/mask_7/mask_49_7.dat
  401. 1
      lib/phpqrcode/cache/mask_7/mask_53_7.dat
  402. 1
      lib/phpqrcode/cache/mask_7/mask_57_7.dat
  403. 2
      lib/phpqrcode/cache/mask_7/mask_61_7.dat
  404. 1
      lib/phpqrcode/cache/mask_7/mask_65_7.dat
  405. BIN
      lib/phpqrcode/cache/mask_7/mask_69_7.dat
  406. BIN
      lib/phpqrcode/cache/mask_7/mask_73_7.dat
  407. BIN
      lib/phpqrcode/cache/mask_7/mask_77_7.dat
  408. 1
      lib/phpqrcode/cache/mask_7/mask_81_7.dat
  409. BIN
      lib/phpqrcode/cache/mask_7/mask_85_7.dat
  410. BIN
      lib/phpqrcode/cache/mask_7/mask_89_7.dat
  411. BIN
      lib/phpqrcode/cache/mask_7/mask_93_7.dat
  412. 2
      lib/phpqrcode/cache/mask_7/mask_97_7.dat
  413. 94
      lib/phpqrcode/index.php
  414. 3312
      lib/phpqrcode/phpqrcode.php
  415. 180
      lib/phpqrcode/qrbitstream.php
  416. 17
      lib/phpqrcode/qrconfig.php
  417. 54
      lib/phpqrcode/qrconst.php
  418. 502
      lib/phpqrcode/qrencode.php
  419. 95
      lib/phpqrcode/qrimage.php
  420. 729
      lib/phpqrcode/qrinput.php
  421. 43
      lib/phpqrcode/qrlib.php
  422. 328
      lib/phpqrcode/qrmask.php
  423. 210
      lib/phpqrcode/qrrscode.php
  424. 592
      lib/phpqrcode/qrspec.php
  425. 311
      lib/phpqrcode/qrsplit.php
  426. 172
      lib/phpqrcode/qrtools.php
  427. 2
      lib/phpqrcode/tools/merge.bat
  428. 70
      lib/phpqrcode/tools/merge.php
  429. 2
      lib/phpqrcode/tools/merge.sh
  430. 17
      lib/phpqrcode/tools/merged_config.php
  431. 36
      lib/phpqrcode/tools/merged_header.php
  432. 86
      lib/xsl_mop-up.js
  433. 121
      plugins/auth_internal/init.php
  434. 85
      vendor/OTPHP/Base32.php
  435. 74
      vendor/OTPHP/HOTP.php
  436. 120
      vendor/OTPHP/OTP.php
  437. 27
      vendor/OTPHP/OTPHP.php
  438. 106
      vendor/OTPHP/TOTP.php
  439. 128
      vendor/Psr/Log/AbstractLogger.php
  440. 7
      vendor/Psr/Log/InvalidArgumentException.php
  441. 18
      vendor/Psr/Log/LogLevel.php
  442. 18
      vendor/Psr/Log/LoggerAwareInterface.php
  443. 26
      vendor/Psr/Log/LoggerAwareTrait.php
  444. 123
      vendor/Psr/Log/LoggerInterface.php
  445. 140
      vendor/Psr/Log/LoggerTrait.php
  446. 28
      vendor/Psr/Log/NullLogger.php
  447. 140
      vendor/Psr/Log/Test/LoggerInterfaceTest.php
  448. 7
      vendor/autoload.php
  449. 11
      vendor/beberlei/assert/LICENSE
  450. 63
      vendor/beberlei/assert/composer.json
  451. 96
      vendor/beberlei/assert/lib/Assert/Assert.php
  452. 2825
      vendor/beberlei/assert/lib/Assert/Assertion.php
  453. 254
      vendor/beberlei/assert/lib/Assert/AssertionChain.php
  454. 35
      vendor/beberlei/assert/lib/Assert/AssertionFailedException.php
  455. 76
      vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php
  456. 230
      vendor/beberlei/assert/lib/Assert/LazyAssertion.php
  457. 55
      vendor/beberlei/assert/lib/Assert/LazyAssertionException.php
  458. 80
      vendor/beberlei/assert/lib/Assert/functions.php
  459. 10
      vendor/beberlei/assert/phpstan-code.neon
  460. 10
      vendor/beberlei/assert/phpstan-tests.neon
  461. 1
      vendor/chillerlan/php-qrcode/.github/FUNDING.yml
  462. 55
      vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
  463. 5
      vendor/chillerlan/php-qrcode/.gitignore
  464. 5
      vendor/chillerlan/php-qrcode/.scrutinizer.yml
  465. 19
      vendor/chillerlan/php-qrcode/.travis.yml
  466. 5
      vendor/chillerlan/php-qrcode/LICENSE
  467. 392
      vendor/chillerlan/php-qrcode/README.md
  468. 51
      vendor/chillerlan/php-qrcode/composer.json
  469. 36
      vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
  470. 81
      vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
  471. 104
      vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
  472. 38
      vendor/chillerlan/php-qrcode/examples/custom_output.php
  473. BIN
      vendor/chillerlan/php-qrcode/examples/example_image.png
  474. BIN
      vendor/chillerlan/php-qrcode/examples/example_svg.png
  475. 47
      vendor/chillerlan/php-qrcode/examples/fpdf.php
  476. 102
      vendor/chillerlan/php-qrcode/examples/html.php
  477. 60
      vendor/chillerlan/php-qrcode/examples/image.php
  478. 44
      vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
  479. 33
      vendor/chillerlan/php-qrcode/examples/imageWithText.php
  480. 59
      vendor/chillerlan/php-qrcode/examples/imagick.php
  481. BIN
      vendor/chillerlan/php-qrcode/examples/octocat.png
  482. 77
      vendor/chillerlan/php-qrcode/examples/svg.php
  483. 68
      vendor/chillerlan/php-qrcode/examples/text.php
  484. 15
      vendor/chillerlan/php-qrcode/phpdoc.xml
  485. 34
      vendor/chillerlan/php-qrcode/phpmd.xml
  486. 23
      vendor/chillerlan/php-qrcode/phpunit.xml
  487. 163
      vendor/chillerlan/php-qrcode/public/index.html
  488. 97
      vendor/chillerlan/php-qrcode/public/qrcode.php
  489. 65
      vendor/chillerlan/php-qrcode/src/Data/AlphaNum.php
  490. 47
      vendor/chillerlan/php-qrcode/src/Data/Byte.php
  491. 70
      vendor/chillerlan/php-qrcode/src/Data/Kanji.php
  492. 203
      vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
  493. 82
      vendor/chillerlan/php-qrcode/src/Data/Number.php
  494. 17
      vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php
  495. 351
      vendor/chillerlan/php-qrcode/src/Data/QRDataAbstract.php
  496. 187
      vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
  497. 733
      vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
  498. 75
      vendor/chillerlan/php-qrcode/src/Helpers/BitBuffer.php
  499. 184
      vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
  500. 17
      vendor/chillerlan/php-qrcode/src/Output/QRCodeOutputException.php
  501. Some files were not shown because too many files have changed in this diff Show More

103
classes/pref/prefs.php

@ -1,4 +1,5 @@
<?php
use chillerlan\QRCode;
class Pref_Prefs extends Handler_Protected {
@ -313,7 +314,7 @@ class Pref_Prefs extends Handler_Protected {
$authenticator = false;
}
$otp_enabled = $this->is_otp_enabled();
$otp_enabled = UserHelper::is_otp_enabled($_SESSION["uid"]);
if ($authenticator && method_exists($authenticator, "change_password")) {
?>
@ -406,20 +407,8 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
private function is_otp_enabled() {
$sth = $this->pdo->prepare("SELECT otp_enabled FROM ttrss_users
WHERE id = ?");
$sth->execute([$_SESSION["uid"]]);
if ($row = $sth->fetch()) {
return sql_bool_to_bool($row["otp_enabled"]);
}
return false;
}
private function index_auth_2fa() {
$otp_enabled = $this->is_otp_enabled();
$otp_enabled = UserHelper::is_otp_enabled($_SESSION["uid"]);
if ($_SESSION["auth_module"] == "auth_internal") {
if ($otp_enabled) {
@ -469,14 +458,13 @@ class Pref_Prefs extends Handler_Protected {
if (function_exists("imagecreatefromstring")) {
print "<h3>" . __("Scan the following code by the Authenticator application or copy the key manually") . "</h3>";
$csrf_token_hash = sha1($_SESSION["csrf_token"]);
print "<img alt='otp qr-code' src='backend.php?op=pref-prefs&method=otpqrcode&csrf_token_hash=$csrf_token_hash'>";
print "<img src=".($this->_get_otp_qrcode_img()).">";
} else {
print_error("PHP GD functions are required to generate QR codes.");
print "<h3>" . __("Use the following OTP key with a compatible Authenticator application") . "</h3>";
}
$otp_secret = $this->otpsecret();
$otp_secret = UserHelper::get_otp_secret($_SESSION["uid"]);
?>
<form dojoType='dijit.form.Form'>
@ -990,90 +978,39 @@ class Pref_Prefs extends Handler_Protected {
$_SESSION["prefs_show_advanced"] = !$_SESSION["prefs_show_advanced"];
}
function otpsecret() {
$sth = $this->pdo->prepare("SELECT salt, otp_enabled
FROM ttrss_users
WHERE id = ?");
$sth->execute([$_SESSION['uid']]);
function _get_otp_qrcode_img() {
$secret = UserHelper::get_otp_secret($_SESSION["uid"]);
$login = UserHelper::get_login_by_id($_SESSION["uid"]);
if ($row = $sth->fetch()) {
$otp_enabled = sql_bool_to_bool($row["otp_enabled"]);
if ($secret && $login) {
$qrcode = new \chillerlan\QRCode\QRCode();
if (!$otp_enabled) {
$base32 = new \OTPHP\Base32();
$secret = $base32->encode(mb_substr(sha1($row["salt"]), 0, 12), false);
$otpurl = "otpauth://totp/".urlencode($login)."?secret=$secret&issuer=".urlencode("Tiny Tiny RSS");
return $secret;
}
return $qrcode->render($otpurl);
}
return false;
}
function otpqrcode() {
$csrf_token_hash = clean($_REQUEST["csrf_token_hash"]);
if (sha1($_SESSION["csrf_token"]) === $csrf_token_hash) {
require_once "lib/phpqrcode/phpqrcode.php";
$sth = $this->pdo->prepare("SELECT login
FROM ttrss_users
WHERE id = ?");
$sth->execute([$_SESSION['uid']]);
if ($row = $sth->fetch()) {
$secret = $this->otpsecret();
$login = $row['login'];
if ($secret) {
QRcode::png("otpauth://totp/".urlencode($login).
"?secret=$secret&issuer=".urlencode("Tiny Tiny RSS"));
}
}
} else {
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
}
}
function otpenable() {
$password = clean($_REQUEST["password"]);
$otp = clean($_REQUEST["otp"]);
$otp_check = clean($_REQUEST["otp"]);
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
if ($authenticator->check_password($_SESSION["uid"], $password)) {
$secret = $this->otpsecret();
if ($secret) {
$base32 = new \OTPHP\Base32();
$topt = new \OTPHP\TOTP($secret);
$otp_check = $topt->now();
if ($otp == $otp_check) {
$sth = $this->pdo->prepare("UPDATE ttrss_users
SET otp_enabled = true WHERE id = ?");
$sth->execute([$_SESSION['uid']]);
print "OK";
} else {
print "ERROR:".__("Incorrect one time password");
}
if (UserHelper::enable_otp($_SESSION["uid"], $otp_check)) {
print "OK";
} else {
print "ERROR:".__("Incorrect one time password");
}
} else {
print "ERROR:".__("Incorrect password");
}
}
static function isdefaultpassword() {
static function _is_default_password() {
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
if ($authenticator &&
@ -1116,9 +1053,7 @@ class Pref_Prefs extends Handler_Protected {
"message" => $message]);
}
$sth = $this->pdo->prepare("UPDATE ttrss_users SET otp_enabled = false WHERE
id = ?");
$sth->execute([$_SESSION['uid']]);
UserHelper::disable_otp($_SESSION["uid"]);
print "OK";
} else {

2
classes/rpc.php

@ -439,7 +439,7 @@ class RPC extends Handler_Protected {
$params["default_view_limit"] = (int) get_pref(Prefs::_DEFAULT_VIEW_LIMIT);
$params["default_view_order_by"] = get_pref(Prefs::_DEFAULT_VIEW_ORDER_BY);
$params["bw_limit"] = (int) $_SESSION["bw_limit"];
$params["is_default_pw"] = Pref_Prefs::isdefaultpassword();
$params["is_default_pw"] = Pref_Prefs::_is_default_password();
$params["label_base_index"] = LABEL_BASE_INDEX;
$theme = get_pref(Prefs::USER_CSS_THEME);

79
classes/userhelper.php

@ -1,4 +1,6 @@
<?php
use OTPHP\TOTP;
class UserHelper {
static function authenticate(string $login = null, string $password = null, bool $check_only = false, string $service = null) {
@ -141,14 +143,29 @@ class UserHelper {
}
static function get_user_ip() {
static function get_user_ip() : string {
foreach (["HTTP_X_REAL_IP", "REMOTE_ADDR"] as $hdr) {
if (isset($_SERVER[$hdr]))
return $_SERVER[$hdr];
}
return null;
}
static function get_login_by_id(int $id) : string {
$pdo = Db::pdo();
$sth = $pdo->prepare("SELECT login FROM ttrss_users WHERE id = ?");
$sth->execute([$id]);
if ($row = $sth->fetch()) {
return $row["login"];
}
return null;
}
static function find_user_by_login(string $login) {
static function find_user_by_login(string $login) : int {
$pdo = Db::pdo();
$sth = $pdo->prepare("SELECT id FROM ttrss_users WHERE
@ -159,7 +176,7 @@ class UserHelper {
return $row["id"];
}
return false;
return null;
}
static function logout() {
@ -203,4 +220,60 @@ class UserHelper {
}
}
static function check_otp(int $owner_uid, int $otp_check) : bool {
$otp = TOTP::create(self::get_otp_secret($owner_uid, true));
return $otp->now() == $otp_check;
}
static function disable_otp(int $owner_uid) : bool {
$sth = Db::pdo()->prepare("UPDATE ttrss_users SET otp_enabled = false WHERE id = ?");
$sth->execute([$owner_uid]);
return true;
}
static function enable_otp(int $owner_uid, int $otp_check) : bool {
$secret = self::get_otp_secret($owner_uid);
if ($secret) {
$otp = TOTP::create($secret);
if ($otp->now() == $otp_check) {
$sth = Db::pdo()->prepare("UPDATE ttrss_users
SET otp_enabled = true WHERE id = ?");
$sth->execute([$owner_uid]);
return true;
}
}
return false;
}
static function is_otp_enabled(int $owner_uid) : bool {
$sth = Db::pdo()->prepare("SELECT otp_enabled FROM ttrss_users WHERE id = ?");
$sth->execute([$owner_uid]);
if ($row = $sth->fetch()) {
return sql_bool_to_bool($row["otp_enabled"]);
}
return false;
}
static function get_otp_secret(int $owner_uid, bool $show_if_enabled = false) : string {
$sth = Db::pdo()->prepare("SELECT salt, otp_enabled FROM ttrss_users WHERE id = ?");
$sth->execute([$owner_uid]);
if ($row = $sth->fetch()) {
if (!sql_bool_to_bool($row["otp_enabled"]) || $show_if_enabled) {
return \ParagonIE\ConstantTime\Base32::encodeUpperUnpadded(mb_substr(sha1($row["salt"]), 0, 12));
}
}
return null;
}
}

6
composer.json

@ -0,0 +1,6 @@
{
"require": {
"spomky-labs/otphp": "^10.0",
"chillerlan/php-qrcode": "^3.3"
}
}

495
composer.lock generated

@ -0,0 +1,495 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "51b3544b18f6b9f21242d9f647e29fcb",
"packages": [
{
"name": "beberlei/assert",
"version": "v3.2.7",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
"reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/beberlei/assert/zipball/d63a6943fc4fd1a2aedb65994e3548715105abcf",
"reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"php": "^7"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "*",
"phpstan/phpstan-shim": "*",
"phpunit/phpunit": ">=6.0.0 <8"
},
"suggest": {
"ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
},
"type": "library",
"autoload": {
"psr-4": {
"Assert\\": "lib/Assert"
},
"files": [
"lib/Assert/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-2-Clause"
],
"authors": [
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de",
"role": "Lead Developer"
},
{
"name": "Richard Quadling",
"email": "rquadling@gmail.com",
"role": "Collaborator"
}
],
"description": "Thin assertion library for input validation in business models.",
"keywords": [
"assert",
"assertion",
"validation"
],
"support": {
"issues": "https://github.com/beberlei/assert/issues",
"source": "https://github.com/beberlei/assert/tree/v3"
},
"time": "2019-12-19T17:51:41+00:00"
},
{
"name": "chillerlan/php-qrcode",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
"reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
"reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
"shasum": ""
},
"require": {
"chillerlan/php-settings-container": "^1.2",
"ext-mbstring": "*",
"php": "^7.2"
},
"require-dev": {
"phpunit/phpunit": "^8.5",
"setasign/fpdf": "^1.8.2"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
"setasign/fpdf": "Required to use the QR FPDF output."
},
"type": "library",
"autoload": {
"psr-4": {
"chillerlan\\QRCode\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kazuhiko Arase",
"homepage": "https://github.com/kazuhikoarase"
},
{
"name": "Smiley",
"email": "smiley@chillerlan.net",
"homepage": "https://github.com/codemasher"
},
{
"name": "Contributors",
"homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors"
}
],
"description": "A QR code generator. PHP 7.2+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"keywords": [
"phpqrcode",
"qr",
"qr code",
"qrcode",
"qrcode-generator"
],
"support": {
"issues": "https://github.com/chillerlan/php-qrcode/issues",
"source": "https://github.com/chillerlan/php-qrcode/tree/3.4.0"
},
"funding": [
{
"url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
"type": "custom"
},
{
"url": "https://ko-fi.com/codemasher",
"type": "ko_fi"
}
],
"time": "2020-11-18T20:51:41+00:00"
},
{
"name": "chillerlan/php-settings-container",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-settings-container.git",
"reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/b9b0431dffd74102ee92348a63b4c33fc8ba639b",
"reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^7.2"
},
"require-dev": {
"phpunit/phpunit": "^8.3"
},
"type": "library",
"autoload": {
"psr-4": {
"chillerlan\\Settings\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Smiley",
"email": "smiley@chillerlan.net",
"homepage": "https://github.com/codemasher"
}
],
"description": "A container class for immutable settings objects. Not a DI container. PHP 7.2+",
"homepage": "https://github.com/chillerlan/php-settings-container",
"keywords": [
"PHP7",
"Settings",
"container",
"helper"
],
"support": {
"issues": "https://github.com/chillerlan/php-settings-container/issues",
"source": "https://github.com/chillerlan/php-settings-container"
},
"time": "2019-09-10T00:09:44+00:00"
},
{
"name": "paragonie/constant_time_encoding",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/constant_time_encoding.git",
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
"shasum": ""
},
"require": {
"php": "^7|^8"
},
"require-dev": {
"phpunit/phpunit": "^6|^7|^8|^9",
"vimeo/psalm": "^1|^2|^3|^4"
},
"type": "library",
"autoload": {
"psr-4": {
"ParagonIE\\ConstantTime\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com",
"role": "Maintainer"
},
{
"name": "Steve 'Sc00bz' Thomas",
"email": "steve@tobtu.com",
"homepage": "https://www.tobtu.com",
"role": "Original Developer"
}
],
"description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
"keywords": [
"base16",
"base32",
"base32_decode",
"base32_encode",
"base64",
"base64_decode",
"base64_encode",
"bin2hex",
"encoding",
"hex",
"hex2bin",
"rfc4648"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/constant_time_encoding/issues",
"source": "https://github.com/paragonie/constant_time_encoding"
},
"time": "2020-12-06T15:14:20+00:00"
},
{
"name": "spomky-labs/otphp",
"version": "v10.0.1",
"source": {
"type": "git",
"url": "https://github.com/Spomky-Labs/otphp.git",
"reference": "f44cce5a9db4b8da410215d992110482c931232f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/f44cce5a9db4b8da410215d992110482c931232f",
"reference": "f44cce5a9db4b8da410215d992110482c931232f",
"shasum": ""
},
"require": {
"beberlei/assert": "^3.0",
"ext-mbstring": "*",
"paragonie/constant_time_encoding": "^2.0",
"php": "^7.2|^8.0",
"thecodingmachine/safe": "^0.1.14|^1.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-beberlei-assert": "^0.12",
"phpstan/phpstan-deprecation-rules": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
"phpstan/phpstan-strict-rules": "^0.12",
"phpunit/phpunit": "^8.0",
"thecodingmachine/phpstan-safe-rule": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"v10.0": "10.0.x-dev",
"v9.0": "9.0.x-dev",
"v8.3": "8.3.x-dev"
}
},
"autoload": {
"psr-4": {
"OTPHP\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Florent Morselli",
"homepage": "https://github.com/Spomky"
},
{
"name": "All contributors",
"homepage": "https://github.com/Spomky-Labs/otphp/contributors"
}
],
"description": "A PHP library for generating one time passwords according to RFC 4226 (HOTP Algorithm) and the RFC 6238 (TOTP Algorithm) and compatible with Google Authenticator",
"homepage": "https://github.com/Spomky-Labs/otphp",
"keywords": [
"FreeOTP",
"RFC 4226",
"RFC 6238",
"google authenticator",
"hotp",
"otp",
"totp"
],
"support": {
"issues": "https://github.com/Spomky-Labs/otphp/issues",
"source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.1"
},
"time": "2020-01-28T09:24:19+00:00"
},
{
"name": "thecodingmachine/safe",
"version": "v1.3.3",
"source": {
"type": "git",
"url": "https://github.com/thecodingmachine/safe.git",
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"require-dev": {
"phpstan/phpstan": "^0.12",
"squizlabs/php_codesniffer": "^3.2",
"thecodingmachine/phpstan-strict-rules": "^0.12"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1-dev"
}
},
"autoload": {
"psr-4": {
"Safe\\": [
"lib/",
"deprecated/",
"generated/"
]
},
"files": [
"deprecated/apc.php",
"deprecated/libevent.php",
"deprecated/mssql.php",
"deprecated/stats.php",
"lib/special_cases.php",
"generated/apache.php",
"generated/apcu.php",
"generated/array.php",
"generated/bzip2.php",
"generated/calendar.php",
"generated/classobj.php",
"generated/com.php",
"generated/cubrid.php",
"generated/curl.php",
"generated/datetime.php",
"generated/dir.php",
"generated/eio.php",
"generated/errorfunc.php",
"generated/exec.php",
"generated/fileinfo.php",
"generated/filesystem.php",
"generated/filter.php",
"generated/fpm.php",
"generated/ftp.php",
"generated/funchand.php",
"generated/gmp.php",
"generated/gnupg.php",
"generated/hash.php",
"generated/ibase.php",
"generated/ibmDb2.php",
"generated/iconv.php",
"generated/image.php",
"generated/imap.php",
"generated/info.php",
"generated/ingres-ii.php",
"generated/inotify.php",
"generated/json.php",
"generated/ldap.php",
"generated/libxml.php",
"generated/lzf.php",
"generated/mailparse.php",
"generated/mbstring.php",
"generated/misc.php",
"generated/msql.php",
"generated/mysql.php",
"generated/mysqli.php",
"generated/mysqlndMs.php",
"generated/mysqlndQc.php",
"generated/network.php",
"generated/oci8.php",
"generated/opcache.php",
"generated/openssl.php",
"generated/outcontrol.php",
"generated/password.php",
"generated/pcntl.php",
"generated/pcre.php",
"generated/pdf.php",
"generated/pgsql.php",
"generated/posix.php",
"generated/ps.php",
"generated/pspell.php",
"generated/readline.php",
"generated/rpminfo.php",
"generated/rrd.php",
"generated/sem.php",
"generated/session.php",
"generated/shmop.php",
"generated/simplexml.php",
"generated/sockets.php",
"generated/sodium.php",
"generated/solr.php",
"generated/spl.php",
"generated/sqlsrv.php",
"generated/ssdeep.php",
"generated/ssh2.php",
"generated/stream.php",
"generated/strings.php",
"generated/swoole.php",
"generated/uodbc.php",
"generated/uopz.php",
"generated/url.php",
"generated/var.php",
"generated/xdiff.php",
"generated/xml.php",
"generated/xmlrpc.php",
"generated/yaml.php",
"generated/yaz.php",
"generated/zip.php",
"generated/zlib.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
"support": {
"issues": "https://github.com/thecodingmachine/safe/issues",
"source": "https://github.com/thecodingmachine/safe/tree/v1.3.3"
},
"time": "2020-10-28T17:51:34+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.0.0"
}

21
include/autoload.php

@ -1,24 +1,17 @@
<?php
spl_autoload_register(function($class) {
$namespace = '';
$class_name = $class;
if (strpos($class, '\\') !== false)
list ($namespace, $class_name) = explode('\\', $class, 2);
$root_dir = dirname(__DIR__); // we were in tt-rss/include
$root_dir = dirname(__DIR__); // we're in tt-rss/include
// - internal tt-rss classes are loaded from classes/ and use special naming logic instead of namespaces
// - plugin classes are loaded by PluginHandler from plugins.local/ and plugins/
// 1. third party libraries with namespaces are loaded from vendor/
// 2. internal tt-rss classes are loaded from classes/ and use special naming logic instead of namespaces
// 3. plugin classes are loaded by PluginHandler from plugins.local/ and plugins/ (TODO: use generic autoloader?)
if ($namespace && $class_name) {
$class_file = "$root_dir/vendor/$namespace/" . str_replace('\\', '/', $class_name) . ".php";
} else {
$class_file = "$root_dir/classes/" . str_replace("_", "/", strtolower($class)) . ".php";
}
$class_file = "$root_dir/classes/" . str_replace("_", "/", strtolower($class)) . ".php";
if (file_exists($class_file))
include $class_file;
});
// also pull composer autoloader
require_once "vendor/autoload.php";

38
lib/phpqrcode/CHANGELOG

@ -1,38 +0,0 @@
* 1.0.0 build 2010031920
- first public release
- help in readme, install
- cleanup ans separation of QRtools and QRspec
- now TCPDF binding requires minimal changes in TCPDF, having most of job
done in QRtools tcpdfBarcodeArray
- nicer QRtools::timeBenchmark output
- license and copyright notices in files
- indent cleanup - from tab to 4spc, keep it that way please :)
- sf project, repository, wiki
- simple code generator in index.php
* 1.1.0 build 2010032113
- added merge tool wich generate merged version of code
located in phpqrcode.php
- splited qrconst.php from qrlib.php
* 1.1.1 build 2010032405
- patch by Rick Seymour allowing saving PNG and displaying it at the same time
- added version info in VERSION file
- modified merge tool to include version info into generated file
- fixed e-mail in almost all head comments
* 1.1.2 build 2010032722
- full integration with TCPDF thanks to Nicola Asuni, it's author
- fixed bug with alphanumeric encoding detection
* 1.1.3 build 2010081807
- short opening tags replaced with standard ones
* 1.1.4 build 2010100721
- added missing static keyword QRinput::check (found by Luke Brookhart, Onjax LLC)

67
lib/phpqrcode/INSTALL

@ -1,67 +0,0 @@
== REQUIREMENTS ==
* PHP5
* PHP GD2 extension with JPEG and PNG support
== INSTALLATION ==
If you want to recreate cache by yourself make sure cache directory is
writable and you have permisions to write into it. Also make sure you are
able to read files in it if you have cache option enabled
== CONFIGURATION ==
Feel free to modify config constants in qrconfig.php file. Read about it in
provided comments and project wiki page (links in README file)
== QUICK START ==
Notice: probably you should'nt use all of this in same script :)
<?phpb
//include only that one, rest required files will be included from it
include "qrlib.php"
//write code into file, Error corection lecer is lowest, L (one form: L,M,Q,H)
//each code square will be 4x4 pixels (4x zoom)
//code will have 2 code squares white boundary around
QRcode::png('PHP QR Code :)', 'test.png', 'L', 4, 2);
//same as above but outputs file directly into browser (with appr. header etc.)
//all other settings are default
//WARNING! it should be FIRST and ONLY output generated by script, otherwise
//rest of output will land inside PNG binary, breaking it for sure
QRcode::png('PHP QR Code :)');
//show benchmark
QRtools::timeBenchmark();
//rebuild cache
QRtools::buildCache();
//code generated in text mode - as a binary table
//then displayed out as HTML using Unicode block building chars :)
$tab = $qr->encode('PHP QR Code :)');
QRspec::debug($tab, true);
== TCPDF INTEGRATION ==
Inside bindings/tcpdf you will find slightly modified 2dbarcodes.php.
Instal phpqrcode liblaty inside tcpdf folder, then overwrite (or merge)
2dbarcodes.php
Then use similar as example #50 from TCPDF examples:
<?php
$style = array(
'border' => true,
'padding' => 4,
'fgcolor' => array(0,0,0),
'bgcolor' => false, //array(255,255,255)
);
//code name: QR, specify error correction level after semicolon (L,M,Q,H)
$pdf->write2DBarcode('PHP QR Code :)', 'QR,L', '', '', 30, 30, $style, 'N');

165
lib/phpqrcode/LICENSE

@ -1,165 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

45
lib/phpqrcode/README

@ -1,45 +0,0 @@
This is PHP implementation of QR Code 2-D barcode generator. It is pure-php
LGPL-licensed implementation based on C libqrencode by Kentaro Fukuchi.
== LICENSING ==
Copyright (C) 2010 by Dominik Dzienia
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License (LICENSE file)
for more details.
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc., 51
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
== INSTALATION AND USAGE ==
* INSTALL file
* http://sourceforge.net/apps/mediawiki/phpqrcode/index.php?title=Main_Page
== CONTACT ==
Fell free to contact me via e-mail (deltalab at poczta dot fm) or using
folowing project pages:
* http://sourceforge.net/projects/phpqrcode/
* http://phpqrcode.sourceforge.net/
== ACKNOWLEDGMENTS ==
Based on C libqrencode library (ver. 3.1.1)
Copyright (C) 2006-2010 by Kentaro Fukuchi
http://megaui.net/fukuchi/works/qrencode/index.en.html
QR Code is registered trademarks of DENSO WAVE INCORPORATED in JAPAN and other
countries.
Reed-Solomon code encoder is written by Phil Karn, KA9Q.
Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q

2
lib/phpqrcode/VERSION

@ -1,2 +0,0 @@
1.1.4
2010100721

2875
lib/phpqrcode/bindings/tcpdf/qrcode.php

@ -1,2875 +0,0 @@
<?php
//============================================================+
// File name : qrcode.php
// Begin : 2010-03-22
// Last Update : 2010-03-29
// Version : 1.0.002
// License : GNU LGPL v.3 (http://www.gnu.org/copyleft/lesser.html)
// ----------------------------------------------------------------------------
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 3 of the License, or any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
// or browse http://www.gnu.org/copyleft/lesser.html
//
// ----------------------------------------------------------------------------
//
// DESCRIPTION :
//
// Class to create QR-code arrays for TCPDF class.
// QR Code symbol is a 2D barcode that can be scanned by
// handy terminals such as a mobile phone with CCD.
// The capacity of QR Code is up to 7000 digits or 4000
// characters, and has high robustness.
// This class supports QR Code model 2, described in
// JIS (Japanese Industrial Standards) X0510:2004
// or ISO/IEC 18004.
// Currently the following features are not supported:
// ECI and FNC1 mode, Micro QR Code, QR Code model 1,
// Structured mode.
//
// This class is derived from the following projects:
// ---------------------------------------------------------
// "PHP QR Code encoder"
// License: GNU-LGPLv3
// Copyright (C) 2010 by Dominik Dzienia <deltalab at poczta dot fm>
// http://phpqrcode.sourceforge.net/
// https://sourceforge.net/projects/phpqrcode/
//
// The "PHP QR Code encoder" is based on
// "C libqrencode library" (ver. 3.1.1)
// License: GNU-LGPL 2.1
// Copyright (C) 2006-2010 by Kentaro Fukuchi
// http://megaui.net/fukuchi/works/qrencode/index.en.html
//
// Reed-Solomon code encoder is written by Phil Karn, KA9Q.
// Copyright (C) 2002-2006 Phil Karn, KA9Q
//
// QR Code is registered trademark of DENSO WAVE INCORPORATED
// http://www.denso-wave.com/qrcode/index-e.html
// ---------------------------------------------------------
//
// Author: Nicola Asuni
//
// (c) Copyright 2010:
// Nicola Asuni
// Tecnick.com S.r.l.
// Via della Pace, 11
// 09044 Quartucciu (CA)
// ITALY
// www.tecnick.com
// info@tecnick.com
//============================================================+
/**
* Class to create QR-code arrays for TCPDF class.
* QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
* The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
* This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
* Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
*
* This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
* Please read comments on this class source file for full copyright and license information.
*
* @package com.tecnick.tcpdf
* @abstract Class for generating QR-code array for TCPDF.
* @author Nicola Asuni
* @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
* @link http://www.tcpdf.org
* @license http://www.gnu.org/copyleft/lesser.html LGPL
* @version 1.0.002
*/
// definitions
if (!defined('QRCODEDEFS')) {
/**
* Indicate that definitions for this class are set
*/
define('QRCODEDEFS', true);
// -----------------------------------------------------
// Encoding modes (characters which can be encoded in QRcode)
/**
* Encoding mode
*/
define('QR_MODE_NL', -1);
/**
* Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode.
*/
define('QR_MODE_NM', 0);
/**
* Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode.
*/
define('QR_MODE_AN', 1);
/**
* Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode.
*/