pd1_tools 0.43.0

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 (222) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +12 -0
  3. data/exe/pd1 +8 -0
  4. data/lib/avmtrf1/active_directory/user.rb +28 -0
  5. data/lib/avmtrf1/active_directory.rb +8 -0
  6. data/lib/avmtrf1/ad_user.rb +11 -0
  7. data/lib/avmtrf1/check_point/session/login.rb +57 -0
  8. data/lib/avmtrf1/check_point/session.rb +60 -0
  9. data/lib/avmtrf1/check_point.rb +3 -0
  10. data/lib/avmtrf1/default_esosti.rb +20 -0
  11. data/lib/avmtrf1/default_jira.rb +18 -0
  12. data/lib/avmtrf1/default_redmine.rb +16 -0
  13. data/lib/avmtrf1/docker/image.rb +49 -0
  14. data/lib/avmtrf1/docker/image_runner.rb +83 -0
  15. data/lib/avmtrf1/docker.rb +9 -0
  16. data/lib/avmtrf1/esosti/entities/issue.rb +24 -0
  17. data/lib/avmtrf1/esosti/entities.rb +9 -0
  18. data/lib/avmtrf1/esosti/instance/changed.rb +33 -0
  19. data/lib/avmtrf1/esosti/instance.rb +22 -0
  20. data/lib/avmtrf1/esosti/raw_data_sanitizer.rb +47 -0
  21. data/lib/avmtrf1/esosti/session/action_base.rb +34 -0
  22. data/lib/avmtrf1/esosti/session/atividades.rb +35 -0
  23. data/lib/avmtrf1/esosti/session/login.rb +47 -0
  24. data/lib/avmtrf1/esosti/session/solicitacao/main.rb +49 -0
  25. data/lib/avmtrf1/esosti/session/solicitacao.rb +81 -0
  26. data/lib/avmtrf1/esosti/session.rb +36 -0
  27. data/lib/avmtrf1/esosti.rb +8 -0
  28. data/lib/avmtrf1/executables.rb +23 -0
  29. data/lib/avmtrf1/forponto/parsers/day_registers.rb +19 -0
  30. data/lib/avmtrf1/forponto/parsers/espelho/day_node.rb +50 -0
  31. data/lib/avmtrf1/forponto/parsers/espelho/methods_as_fields.rb +21 -0
  32. data/lib/avmtrf1/forponto/parsers/espelho/row_node.rb +34 -0
  33. data/lib/avmtrf1/forponto/parsers/espelho/rows_consumer.rb +71 -0
  34. data/lib/avmtrf1/forponto/parsers/espelho/sub_node.rb +20 -0
  35. data/lib/avmtrf1/forponto/parsers/espelho/summary_node.rb +55 -0
  36. data/lib/avmtrf1/forponto/parsers/espelho/utils.rb +32 -0
  37. data/lib/avmtrf1/forponto/parsers/espelho.rb +26 -0
  38. data/lib/avmtrf1/forponto/session/day_registers.rb +39 -0
  39. data/lib/avmtrf1/forponto/session/interval.rb +27 -0
  40. data/lib/avmtrf1/forponto/session/login.rb +45 -0
  41. data/lib/avmtrf1/forponto/session.rb +32 -0
  42. data/lib/avmtrf1/forponto/user/balance.rb +155 -0
  43. data/lib/avmtrf1/forponto/user/day_registers.rb +32 -0
  44. data/lib/avmtrf1/forponto/user/month.rb +141 -0
  45. data/lib/avmtrf1/forponto/user.rb +22 -0
  46. data/lib/avmtrf1/git/cached_repository.rb +27 -0
  47. data/lib/avmtrf1/git/gitlab.rb +11 -0
  48. data/lib/avmtrf1/git/issue_on_repository.rb +100 -0
  49. data/lib/avmtrf1/git/push_large/_utils.rb +16 -0
  50. data/lib/avmtrf1/git/push_large/lfs_commit/cache.rb +21 -0
  51. data/lib/avmtrf1/git/push_large/lfs_commit/checkout_previous_revision.rb +35 -0
  52. data/lib/avmtrf1/git/push_large/lfs_commit/commit_changes.rb +48 -0
  53. data/lib/avmtrf1/git/push_large/lfs_commit/helpers.rb +29 -0
  54. data/lib/avmtrf1/git/push_large/lfs_commit/pick_source_revision.rb +103 -0
  55. data/lib/avmtrf1/git/push_large/lfs_commit/push.rb +90 -0
  56. data/lib/avmtrf1/git/push_large/lfs_commit/track_large_files.rb +53 -0
  57. data/lib/avmtrf1/git/push_large/lfs_commit.rb +47 -0
  58. data/lib/avmtrf1/git/push_large/source_commit/push.rb +42 -0
  59. data/lib/avmtrf1/git/push_large/source_commit.rb +58 -0
  60. data/lib/avmtrf1/git/push_large.rb +69 -0
  61. data/lib/avmtrf1/git/reference.rb +34 -0
  62. data/lib/avmtrf1/git.rb +10 -0
  63. data/lib/avmtrf1/gitlab/commit.rb +37 -0
  64. data/lib/avmtrf1/gitlab/repository.rb +41 -0
  65. data/lib/avmtrf1/ini/profile.rb +42 -0
  66. data/lib/avmtrf1/ini.rb +55 -0
  67. data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
  68. data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
  69. data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
  70. data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
  71. data/lib/avmtrf1/inventario_sistemas/parser.rb +40 -0
  72. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
  73. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
  74. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
  75. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
  76. data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
  77. data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
  78. data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
  79. data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
  80. data/lib/avmtrf1/inventario_sistemas.rb +38 -0
  81. data/lib/avmtrf1/issues/factory.rb +22 -0
  82. data/lib/avmtrf1/issues.rb +7 -0
  83. data/lib/avmtrf1/jira/entities/issue.rb +30 -0
  84. data/lib/avmtrf1/jira/entities.rb +9 -0
  85. data/lib/avmtrf1/jira/instance.rb +28 -0
  86. data/lib/avmtrf1/jira.rb +8 -0
  87. data/lib/avmtrf1/node_js/docker_image.rb +14 -0
  88. data/lib/avmtrf1/node_js.rb +9 -0
  89. data/lib/avmtrf1/openvpn/config/builder.rb +59 -0
  90. data/lib/avmtrf1/openvpn/config/parser/builder.rb +62 -0
  91. data/lib/avmtrf1/openvpn/config/parser/line.rb +47 -0
  92. data/lib/avmtrf1/openvpn/config/parser/simple.rb +27 -0
  93. data/lib/avmtrf1/openvpn/config/parser/tag.rb +39 -0
  94. data/lib/avmtrf1/openvpn/config/parser.rb +20 -0
  95. data/lib/avmtrf1/oracle/connection/base.rb +66 -0
  96. data/lib/avmtrf1/oracle/connection/string_builder.rb +44 -0
  97. data/lib/avmtrf1/oracle/connection.rb +12 -0
  98. data/lib/avmtrf1/oracle/object/base.rb +39 -0
  99. data/lib/avmtrf1/oracle/object/table.rb +15 -0
  100. data/lib/avmtrf1/oracle/object/user.rb +15 -0
  101. data/lib/avmtrf1/oracle/object/view.rb +15 -0
  102. data/lib/avmtrf1/oracle/object.rb +25 -0
  103. data/lib/avmtrf1/oracle/objects/relation.rb +23 -0
  104. data/lib/avmtrf1/oracle/objects/sql_builder.rb +64 -0
  105. data/lib/avmtrf1/oracle/objects.rb +53 -0
  106. data/lib/avmtrf1/oracle/oci8.rb +29 -0
  107. data/lib/avmtrf1/oracle.rb +10 -0
  108. data/lib/avmtrf1/patches/avm/git/issue/complete.rb +50 -0
  109. data/lib/avmtrf1/patches/avm/git/issue.rb +4 -0
  110. data/lib/avmtrf1/patches/avm/git/launcher/base.rb +46 -0
  111. data/lib/avmtrf1/patches/avm/git/launcher.rb +4 -0
  112. data/lib/avmtrf1/patches/avm/git.rb +4 -0
  113. data/lib/avmtrf1/patches/avm.rb +4 -0
  114. data/lib/avmtrf1/patches/inifile.rb +13 -0
  115. data/lib/avmtrf1/patches.rb +4 -0
  116. data/lib/avmtrf1/php/docker_images/base.rb +49 -0
  117. data/lib/avmtrf1/php/docker_images/factory.rb +37 -0
  118. data/lib/avmtrf1/php/docker_images/v5.rb +47 -0
  119. data/lib/avmtrf1/php/docker_images/v7.rb +27 -0
  120. data/lib/avmtrf1/php/docker_images/v7_v4.rb +30 -0
  121. data/lib/avmtrf1/php/docker_images/v8.rb +19 -0
  122. data/lib/avmtrf1/php/docker_images.rb +11 -0
  123. data/lib/avmtrf1/php.rb +9 -0
  124. data/lib/avmtrf1/red/client/authorization.xml.erb +4 -0
  125. data/lib/avmtrf1/red/client.rb +38 -0
  126. data/lib/avmtrf1/red/helper.rb +35 -0
  127. data/lib/avmtrf1/red/profile/put_file.xml.erb +19 -0
  128. data/lib/avmtrf1/red/profile.rb +58 -0
  129. data/lib/avmtrf1/red/server.rb +33 -0
  130. data/lib/avmtrf1/red.rb +5 -0
  131. data/lib/avmtrf1/redmine/entities/issue.rb +29 -0
  132. data/lib/avmtrf1/redmine/entities/issue_status.rb +23 -0
  133. data/lib/avmtrf1/redmine/entities.rb +10 -0
  134. data/lib/avmtrf1/redmine/instance.rb +41 -0
  135. data/lib/avmtrf1/redmine.rb +7 -0
  136. data/lib/avmtrf1/rest_provider/entity.rb +18 -0
  137. data/lib/avmtrf1/rest_provider/instance/issues.rb +30 -0
  138. data/lib/avmtrf1/rest_provider/instance.rb +30 -0
  139. data/lib/avmtrf1/rest_provider/request.rb +44 -0
  140. data/lib/avmtrf1/rest_provider/response.rb +73 -0
  141. data/lib/avmtrf1/rest_provider.rb +7 -0
  142. data/lib/avmtrf1/result.rb +44 -0
  143. data/lib/avmtrf1/ruby.rb +9 -0
  144. data/lib/avmtrf1/tools/application.rb +13 -0
  145. data/lib/avmtrf1/tools/core_ext.rb +4 -0
  146. data/lib/avmtrf1/tools/msgraph/api/entity.rb +35 -0
  147. data/lib/avmtrf1/tools/msgraph/api/member.rb +31 -0
  148. data/lib/avmtrf1/tools/msgraph/api/root.rb +27 -0
  149. data/lib/avmtrf1/tools/msgraph/api/team/member_add.rb +36 -0
  150. data/lib/avmtrf1/tools/msgraph/api/team.rb +40 -0
  151. data/lib/avmtrf1/tools/msgraph/api.rb +55 -0
  152. data/lib/avmtrf1/tools/msgraph/error.rb +31 -0
  153. data/lib/avmtrf1/tools/msgraph/request_mixin.rb +18 -0
  154. data/lib/avmtrf1/tools/msgraph/response_mixin.rb +23 -0
  155. data/lib/avmtrf1/tools/msgraph/token_retrieve.rb +42 -0
  156. data/lib/avmtrf1/tools/msgraph.rb +11 -0
  157. data/lib/avmtrf1/tools/rubygems/dependency.rb +20 -0
  158. data/lib/avmtrf1/tools/rubygems/not_found_error.rb +17 -0
  159. data/lib/avmtrf1/tools/rubygems.rb +11 -0
  160. data/lib/avmtrf1/tools/runner/check_point/login.rb +33 -0
  161. data/lib/avmtrf1/tools/runner/check_point.rb +17 -0
  162. data/lib/avmtrf1/tools/runner/esosti/changed.rb +39 -0
  163. data/lib/avmtrf1/tools/runner/esosti/fetch.rb +39 -0
  164. data/lib/avmtrf1/tools/runner/esosti/request.rb +76 -0
  165. data/lib/avmtrf1/tools/runner/esosti.rb +27 -0
  166. data/lib/avmtrf1/tools/runner/forponto/espelho.rb +47 -0
  167. data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +32 -0
  168. data/lib/avmtrf1/tools/runner/forponto/resumos.rb +87 -0
  169. data/lib/avmtrf1/tools/runner/forponto/saldo.rb +91 -0
  170. data/lib/avmtrf1/tools/runner/forponto.rb +70 -0
  171. data/lib/avmtrf1/tools/runner/git/gitlab/commit_link.rb +81 -0
  172. data/lib/avmtrf1/tools/runner/git/gitlab.rb +20 -0
  173. data/lib/avmtrf1/tools/runner/git/issues_check.rb +59 -0
  174. data/lib/avmtrf1/tools/runner/git/push_large.rb +46 -0
  175. data/lib/avmtrf1/tools/runner/git.rb +14 -0
  176. data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +71 -0
  177. data/lib/avmtrf1/tools/runner/msgraph/joined_teams.rb +39 -0
  178. data/lib/avmtrf1/tools/runner/msgraph/request.rb +45 -0
  179. data/lib/avmtrf1/tools/runner/msgraph/team/member/add.rb +48 -0
  180. data/lib/avmtrf1/tools/runner/msgraph/team/member.rb +25 -0
  181. data/lib/avmtrf1/tools/runner/msgraph/team/members.rb +38 -0
  182. data/lib/avmtrf1/tools/runner/msgraph/team.rb +27 -0
  183. data/lib/avmtrf1/tools/runner/msgraph/token.rb +31 -0
  184. data/lib/avmtrf1/tools/runner/msgraph.rb +43 -0
  185. data/lib/avmtrf1/tools/runner/node_js/docker.rb +15 -0
  186. data/lib/avmtrf1/tools/runner/node_js.rb +18 -0
  187. data/lib/avmtrf1/tools/runner/openvpn.rb +91 -0
  188. data/lib/avmtrf1/tools/runner/oracle/query.rb +71 -0
  189. data/lib/avmtrf1/tools/runner/oracle/source_get.rb +51 -0
  190. data/lib/avmtrf1/tools/runner/oracle/user_clear.rb +59 -0
  191. data/lib/avmtrf1/tools/runner/oracle.rb +37 -0
  192. data/lib/avmtrf1/tools/runner/php/docker.rb +20 -0
  193. data/lib/avmtrf1/tools/runner/php.rb +18 -0
  194. data/lib/avmtrf1/tools/runner/red.rb +83 -0
  195. data/lib/avmtrf1/tools/runner/source.rb +14 -0
  196. data/lib/avmtrf1/tools/runner.rb +43 -0
  197. data/lib/avmtrf1/tools.rb +4 -0
  198. data/lib/pd1_tools/version.rb +5 -0
  199. data/lib/pd1_tools.rb +7 -0
  200. data/template/avmtrf1/node_js/docker_image/Dockerfile.template +25 -0
  201. data/template/avmtrf1/node_js/docker_image/auxiliary/config_banner.sh +15 -0
  202. data/template/avmtrf1/node_js/docker_image/auxiliary/init.sh +18 -0
  203. data/template/avmtrf1/node_js/docker_image/auxiliary/lib.sh +30 -0
  204. data/template/avmtrf1/node_js/docker_image/auxiliary/ng_serve.sh +16 -0
  205. data/template/avmtrf1/node_js/docker_image/auxiliary/npm_install.sh +21 -0
  206. data/template/avmtrf1/node_js/docker_image/auxiliary/start.sh +17 -0
  207. data/template/avmtrf1/php/docker_images/base/Dockerfile.template +104 -0
  208. data/template/avmtrf1/php/docker_images/base/aux/apache_foreground.sh +16 -0
  209. data/template/avmtrf1/php/docker_images/base/aux/apache_user.sh +54 -0
  210. data/template/avmtrf1/php/docker_images/base/aux/app_user_run.sh +17 -0
  211. data/template/avmtrf1/php/docker_images/base/aux/config_banner.sh +20 -0
  212. data/template/avmtrf1/php/docker_images/base/aux/init.sh +39 -0
  213. data/template/avmtrf1/php/docker_images/base/aux/laravel.sh +58 -0
  214. data/template/avmtrf1/php/docker_images/base/aux/lib.sh +70 -0
  215. data/template/avmtrf1/php/docker_images/base/aux/pear.sh +35 -0
  216. data/template/avmtrf1/php/docker_images/base/aux/php_composer.sh +31 -0
  217. data/template/avmtrf1/php/docker_images/base/aux/php_values.sh +41 -0
  218. data/template/avmtrf1/php/docker_images/base/aux/setup_apache_site.sh +16 -0
  219. data/template/avmtrf1/php/docker_images/base/aux/start.sh +26 -0
  220. data/template/avmtrf1/php/docker_images/base/aux/templates/apache_site.conf +12 -0
  221. data/template/avmtrf1/tools/msgraph/token_retrieve/python_retriever.py +85 -0
  222. metadata +460 -0
@@ -0,0 +1,104 @@
1
+ FROM php:%%PLATFORM_VERSION%%-apache
2
+
3
+ %%APT_SETUP%%
4
+
5
+ # Apache HTTP
6
+ RUN a2enmod rewrite
7
+
8
+ # Extensão PHP "bcmath"
9
+ RUN docker-php-ext-install bcmath
10
+
11
+ # Extensão PHP "bz2"
12
+ RUN apt-get install -y libbz2-dev
13
+ RUN docker-php-ext-install bz2
14
+
15
+ # Extensão PHP "gd"
16
+ # Referência: https://stackoverflow.com/a/51041727
17
+ RUN apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev
18
+ RUN docker-php-ext-configure gd %%GD_OPTIONS%%
19
+ RUN docker-php-ext-install gd
20
+
21
+ # Extensão PHP "intl"
22
+ RUN apt-get install -y libc-client-dev libkrb5-dev
23
+ RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl
24
+ RUN docker-php-ext-install imap
25
+
26
+ # Extensão PHP "intl"
27
+ RUN apt-get install -y libicu-dev
28
+ RUN docker-php-ext-install intl
29
+
30
+ # Extensão PHP "ldap"
31
+ RUN apt-get install -y libldap2-dev
32
+ RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/
33
+ RUN docker-php-ext-install ldap
34
+
35
+ # Extensão PHP "mcrypt"
36
+ RUN apt-get install -y libmcrypt-dev
37
+ %%MCRYPT_INSTALL%%
38
+
39
+ # Extensão PHP "pcntl"
40
+ RUN docker-php-ext-install pcntl
41
+
42
+ # Extensão PHP "snmp"
43
+ RUN apt-get install -y libsnmp-dev snmp
44
+ RUN docker-php-ext-install snmp
45
+
46
+ # Extensão PHP "soap"
47
+ RUN apt-get install -y libxml2-dev
48
+ RUN docker-php-ext-install soap
49
+
50
+ # Extensão PHP "xdebug"
51
+ %%XDEBUG_INSTALL%%
52
+ RUN docker-php-ext-enable xdebug
53
+
54
+ # Extensão PHP "xsl"
55
+ RUN apt-get install -y libxslt1-dev
56
+ RUN docker-php-ext-install xsl
57
+
58
+ # Extensão PHP "zip"
59
+ RUN apt-get install -y libzip-dev
60
+ RUN docker-php-ext-install zip
61
+
62
+ # Extensões MySql
63
+ RUN docker-php-ext-install mysqli pdo_mysql
64
+
65
+ # Extensões PHP PostgreSQL
66
+ RUN apt-get install -y libpq-dev
67
+ RUN docker-php-ext-install pdo_pgsql pgsql
68
+
69
+ # Extensão PHP oci
70
+ RUN apt-get install -y libarchive-tools libaio1
71
+ RUN curl -sS https://raw.githubusercontent.com/caffeinalab/php-fpm-oci8/master/oracle/instantclient-basic-linux.x64-12.2.0.1.0.zip | bsdtar -xvf- -C /usr/local
72
+ RUN curl -sS https://raw.githubusercontent.com/caffeinalab/php-fpm-oci8/master/oracle/instantclient-sdk-linux.x64-12.2.0.1.0.zip | bsdtar -xvf- -C /usr/local
73
+ RUN curl -sS https://raw.githubusercontent.com/caffeinalab/php-fpm-oci8/master/oracle/instantclient-sqlplus-linux.x64-12.2.0.1.0.zip | bsdtar -xvf- -C /usr/local
74
+ RUN ln -s /usr/local/instantclient_12_2 /usr/local/instantclient
75
+ RUN ln -s /usr/local/instantclient/libclntsh.so.* /usr/local/instantclient/libclntsh.so
76
+ RUN ln -s /usr/local/instantclient/lib* /usr/lib
77
+ RUN ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus
78
+ RUN docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/local/instantclient
79
+ RUN docker-php-ext-install oci8
80
+
81
+ # Extensão PHP pdo_oci
82
+ RUN mkdir /tmp/php_source
83
+ RUN curl %%PHP_DIST_CURL_ARGS%% | \
84
+ tar -zxf - -C /tmp/php_source --strip 1
85
+ WORKDIR /tmp/php_source/ext/pdo_oci
86
+ RUN phpize
87
+ RUN ./configure --with-pdo-oci=instantclient,/usr/local/instantclient,12.1
88
+ RUN make
89
+ RUN make install
90
+ RUN echo extension=pdo_oci.so > "$PHP_INI_DIR/conf.d/pdo_oci.ini"
91
+ RUN echo 'date.timezone = "America/Sao_Paulo"' >> "$PHP_INI_DIR/php.ini"
92
+
93
+ # Composer
94
+ RUN apt-get install -y git unzip
95
+ RUN curl -sS https://getcomposer.org/installer | \
96
+ php -- --install-dir=/usr/local/bin --filename=composer
97
+
98
+ # Inicializador
99
+ RUN mkdir '/aux'
100
+ RUN mkdir '/aux/eac-bash-lib'
101
+ RUN curl -sS https://codeload.github.com/esquilo-azul/eac-bash-lib/tar.gz/refs/tags/v0.17.1 \
102
+ | tar -xzf - --strip-components 1 -C '/aux/eac-bash-lib'
103
+ ADD aux '/aux'
104
+ CMD '/aux/start.sh'
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ infom "Executando \"apache2-foreground\"..."
16
+ apache2-foreground
@@ -0,0 +1,54 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ function apache_user_home() {
16
+ getent passwd "$APP_USER_ID" | cut '-d:' '-f6'
17
+ }
18
+
19
+ function assert_apache_user() {
20
+ if user_exist_by_id "$APP_USER_ID"; then
21
+ infom "ID de usuário \"$APP_USER_ID\" já existe"
22
+ elif user_exist_by_name "$APACHE_USER_NAME"; then
23
+ infom "Alterando ID do usuário \"$APACHE_USER_NAME\"..."
24
+ usermod --uid "$APP_USER_ID" "$APACHE_USER_NAME"
25
+ else
26
+ infom "Criando usuário \"$APACHE_USER_NAME\"..."
27
+ useradd --uid "$APP_USER_ID" "$APACHE_USER_NAME"
28
+ fi
29
+ }
30
+
31
+
32
+ function assert_apache_user_home() {
33
+ infom 'Assegurando diretório de usuário...'
34
+ mkdir -p "$(apache_user_home)"
35
+ chown --recursive "${APP_USER_ID}:$(id -g "$APP_USER_ID")" "$(apache_user_home)"
36
+ }
37
+
38
+ function setup_apache_user_envvars() {
39
+ infom "Configurando usuário/grupo de execução do Apache..."
40
+ export APACHE_RUN_USER="$(id -nu "$APP_USER_ID")"
41
+ export APACHE_RUN_GROUP="$(id -ng "$APACHE_RUN_USER")"
42
+ infov "Execução do Apache"
43
+ infov ' * $APACHE_RUN_USER' "$APACHE_RUN_USER (ID: $APP_USER_ID)"
44
+ infov ' * $APACHE_RUN_GROUP' "$APACHE_RUN_GROUP (ID: $(id -g "$APACHE_RUN_USER"))"
45
+ }
46
+
47
+ assert_apache_user
48
+
49
+ if [[ "$APP_USER_ID" == '0' ]]; then
50
+ infom "\$APP_USER_ID é 0 (root). Apache executará com usuário padrão (Nenhuma alteração)"
51
+ else
52
+ assert_apache_user_home
53
+ setup_apache_user_envvars
54
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ source "$AUX_ROOT/apache_user.sh"
16
+ infom "Executando \"app_user_run $@\"..."
17
+ app_user_run "$@"
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ infov 'Application root path ($APP_ROOT)' "$APP_ROOT"
16
+ infov "Apache\'s document root (\$DOCUMENT_ROOT)" "$DOCUMENT_ROOT"
17
+ infov 'PHP Composer directories ($COMPOSER_PATH)' "$COMPOSER_PATH"
18
+ infov 'Laravel directories ($LARAVEL_PATH)' "$LARAVEL_PATH"
19
+ infov 'Apache user ID' "$APP_USER_ID"
20
+ infov 'Run Apache? ($RUN_APACHE)' "$RUN_APACHE"
@@ -0,0 +1,39 @@
1
+ set -u
2
+ set -e
3
+
4
+ SOURCE="${BASH_SOURCE[0]}"
5
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
6
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
7
+ SOURCE="$(readlink "$SOURCE")"
8
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
9
+ done
10
+ export AUX_ROOT="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
11
+
12
+ source "$AUX_ROOT/lib.sh"
13
+
14
+ # Nome do usuário Apache
15
+ export APACHE_USER_NAME='apache_app_user'
16
+
17
+ # Diretório de templates
18
+ export TEMPLATES_ROOT="$AUX_ROOT/templates"
19
+
20
+ # Caminho raiz da aplicação
21
+ path_set 'APP_ROOT' '/' '/app'
22
+
23
+ # Document root do Apache
24
+ path_set 'DOCUMENT_ROOT' "$APP_ROOT" "$APP_ROOT"
25
+
26
+ # Composer
27
+ text_set 'COMPOSER_PATH' ''
28
+
29
+ # Laravel
30
+ text_set 'LARAVEL_PATH' ''
31
+
32
+ # Pear
33
+ text_set 'PEAR_PACKAGES' ''
34
+
35
+ # Execução do Apache
36
+ bool_set 'RUN_APACHE' true
37
+
38
+ # ID do usuário da aplicação
39
+ text_set 'APP_USER_ID' "$(stat -c '%g' "$APP_ROOT")"
@@ -0,0 +1,58 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ export ARTISAN_MIGRATE_LOG="$(mktemp)_artisan.log"
16
+
17
+ function run_laravel() {
18
+ LARAVEL_DIR="$1"
19
+ infom "Executando migrações para \"$LARAVEL_DIR\"..."
20
+ until artisan_migrate "$LARAVEL_DIR"; do
21
+ if artisan_migrate_connection_error; then
22
+ infom "Banco de dados ainda não conectado. Tentando novamente em 1 segundo..."
23
+ sleep 1
24
+ else
25
+ infom "\"php artisan migrate\" falhou com código de retorno $LAST_ARTISAN_MIGRATE_RESULT"
26
+ cat "$ARTISAN_MIGRATE_LOG"
27
+ return 1
28
+ fi
29
+ done
30
+ echo "Banco de dados conectado"
31
+ echo "Log das migrações:"
32
+ cat "$ARTISAN_MIGRATE_LOG"
33
+ }
34
+
35
+ function artisan_migrate() {
36
+ artisan_migrate_with_result "$1" > "$ARTISAN_MIGRATE_LOG"
37
+ return $LAST_ARTISAN_MIGRATE_RESULT
38
+ }
39
+
40
+ function artisan_migrate_with_result() {
41
+ set +e
42
+ infom "Executando \"php artisan migrate\" em \"$1\"..."
43
+ APP_USER_RUN_DIR="$1" app_user_run php artisan migrate --no-interaction --force 2>&1
44
+ LAST_ARTISAN_MIGRATE_RESULT=$?
45
+ set -e
46
+ }
47
+
48
+ function artisan_migrate_connection_error() {
49
+ grep -i 'Connection refused' "$ARTISAN_MIGRATE_LOG" > /dev/null 2> /dev/null
50
+ }
51
+
52
+ infom "Executando \"artisan migrate\" nos diretórios de \"$LARAVEL_PATH\"..."
53
+ IFSBAK="$IFS"
54
+ IFS=:
55
+ for LARAVEL_DIR in $LARAVEL_PATH; do
56
+ run_laravel "$(path_expand "$LARAVEL_DIR" "$APP_ROOT")"
57
+ done
58
+ IFS="$IFSBAK"
@@ -0,0 +1,70 @@
1
+ set -u
2
+ set -e
3
+
4
+ source "$AUX_ROOT/eac-bash-lib/init.sh"
5
+
6
+ function app_user_run() {
7
+ if var_blank_r 'APP_USER_RUN_DIR'; then
8
+ APP_USER_RUN_DIR="$APP_ROOT"
9
+ fi
10
+ (cd "$APP_USER_RUN_DIR" ; su "$(id -nu "$APP_USER_ID")" --command "$(shell_join "$@")" )
11
+ }
12
+
13
+ function bool_set() {
14
+ VARIABLE_NAME="$1"
15
+ DEFAULT_VALUE="$2"
16
+
17
+ RESULT="$DEFAULT_VALUE"
18
+ if var_present_r "$VARIABLE_NAME"; then
19
+ RESULT="${!VARIABLE_NAME}"
20
+ fi
21
+ export $VARIABLE_NAME="$(bool_s "$RESULT")"
22
+ }
23
+
24
+ function path_set() {
25
+ VARIABLE_NAME="$1"
26
+ BASE_PATH="$2"
27
+ DEFAULT_VALUE="$3"
28
+
29
+ RESULT="$DEFAULT_VALUE"
30
+ if var_present_r "$VARIABLE_NAME"; then
31
+ RESULT="$(path_expand "${!VARIABLE_NAME}" "$BASE_PATH")"
32
+ fi
33
+ if [ ! -d "$RESULT" ]; then
34
+ fatal_error "Caminho \"$RESULT\" (\$$VARIABLE_NAME) não existe ou não é um diretório"
35
+ fi
36
+ export $VARIABLE_NAME="$RESULT"
37
+ }
38
+
39
+ function shell_join() {
40
+ RESULT=''
41
+ FIRST=true
42
+ for ARG in "$@"; do
43
+ if bool_r "$FIRST"; then
44
+ FIRST=false
45
+ else
46
+ outout ' '
47
+ fi
48
+ printf '%q' "$ARG"
49
+ done
50
+ outout "\n"
51
+ }
52
+
53
+ function text_set() {
54
+ VARIABLE_NAME="$1"
55
+ DEFAULT_VALUE="$2"
56
+
57
+ RESULT="$DEFAULT_VALUE"
58
+ if var_present_r "$VARIABLE_NAME"; then
59
+ RESULT="${!VARIABLE_NAME}"
60
+ fi
61
+ export $VARIABLE_NAME="$RESULT"
62
+ }
63
+
64
+ function user_exist_by_id() {
65
+ getent passwd "$1" > /dev/null
66
+ }
67
+
68
+ function user_exist_by_name() {
69
+ id -u "$1" > /dev/null
70
+ }
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ function pear_install() {
16
+ PEAR_PACKAGE="$1"
17
+ if pear_installed "$PEAR_PACKAGE"; then
18
+ infom "Pacote Pear \"$PEAR_PACKAGE\" já está instalado"
19
+ return
20
+ fi
21
+ infom "Instalando pacote pear \"$PEAR_PACKAGE\"..."
22
+ pear install "$PEAR_PACKAGE"
23
+ }
24
+
25
+ function pear_installed() {
26
+ pear info "$1" 2>&1 > /dev/null
27
+ }
28
+
29
+ infom "Instalando pacotes Pear de \"\$PEAR_PACKAGES=$PEAR_PACKAGES\"..."
30
+ IFSBAK="$IFS"
31
+ IFS=:
32
+ for PEAR_PACKAGE in $PEAR_PACKAGES; do
33
+ pear_install "$PEAR_PACKAGE"
34
+ done
35
+ IFS="$IFSBAK"
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ function run_composer() {
16
+ COMPOSER_DIR="$1"
17
+ infom "Executando \"composer install\" para \"$COMPOSER_DIR\"..."
18
+ COMPOSER_FILE="$(path_expand 'composer.json' "$COMPOSER_DIR")"
19
+ if [[ ! -f "$COMPOSER_FILE" ]]; then
20
+ fatal_error "Arquivo \"$COMPOSER_FILE\" (\$COMPOSER_PATH) não encontrado"
21
+ fi
22
+ app_user_run composer install "--working-dir=$COMPOSER_DIR"
23
+ }
24
+
25
+ infom "Executando \"composer install\" nos diretórios de \"$COMPOSER_PATH\"..."
26
+ IFSBAK="$IFS"
27
+ IFS=:
28
+ for COMPOSER_DIR in $COMPOSER_PATH; do
29
+ run_composer "$(path_expand "$COMPOSER_DIR" "$APP_ROOT")"
30
+ done
31
+ IFS="$IFSBAK"
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ function php_values_envvars() {
16
+ set +e
17
+ printenv | grep '^PHP_VALUE_'
18
+ set -e
19
+ }
20
+
21
+ function php_value_directive_name() {
22
+ printf '%s' "$1" | sed 's/=.*$//g' | sed 's/^PHP_VALUE_//g' | tr '[:upper:]' '[:lower:]' | \
23
+ sed 's/__/\./g'
24
+ }
25
+
26
+ function php_value_directive_value() {
27
+ printf '%s' "$1" | sed 's/^.*=//g'
28
+ }
29
+
30
+ infom 'Procurando por valores para diretivas PHP...'
31
+ INI_FILE="$PHP_INI_DIR/conf.d/avmtrf1-tools.ini"
32
+ cp /dev/null "$INI_FILE"
33
+ php_values_envvars | while read ENVVAR; do
34
+ NAME="$(php_value_directive_name "$ENVVAR")"
35
+ VALUE="$(php_value_directive_value "$ENVVAR")"
36
+ infov "$NAME" "$VALUE"
37
+ echo "${NAME}=${VALUE}" >> "$INI_FILE"
38
+ done
39
+
40
+ infom "Conteúdo de \"$INI_FILE\":"
41
+ cat "$INI_FILE"
@@ -0,0 +1,16 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ infom "Configuração site Apache..."
16
+ template_apply "$TEMPLATES_ROOT/apache_site.conf" > '/etc/apache2/sites-available/000-default.conf'
@@ -0,0 +1,26 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ SOURCE="${BASH_SOURCE[0]}"
7
+ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
8
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
9
+ SOURCE="$(readlink "$SOURCE")"
10
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
11
+ done
12
+ DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
13
+ source "$DIR/init.sh"
14
+
15
+ "$AUX_ROOT/config_banner.sh"
16
+ source "$AUX_ROOT/apache_user.sh"
17
+ "$AUX_ROOT/setup_apache_site.sh"
18
+ "$AUX_ROOT/php_values.sh"
19
+ "$AUX_ROOT/pear.sh"
20
+ "$AUX_ROOT/php_composer.sh"
21
+ "$AUX_ROOT/laravel.sh"
22
+ if bool_r "$RUN_APACHE"; then
23
+ "$AUX_ROOT/apache_foreground.sh"
24
+ else
25
+ infom 'Apache execution disabled'
26
+ fi
@@ -0,0 +1,12 @@
1
+ <VirtualHost *:80>
2
+ DocumentRoot %%DOCUMENT_ROOT%%
3
+
4
+ ErrorLog ${APACHE_LOG_DIR}/error.log
5
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
6
+
7
+ <Directory %%DOCUMENT_ROOT%%>
8
+ Options Indexes FollowSymLinks
9
+ AllowOverride All
10
+ Require all granted
11
+ </Directory>
12
+ </VirtualHost>
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env python3
2
+
3
+ # Requirements
4
+ # pyperclip>=1.6.0
5
+ # requests>=2.18.4
6
+ # adal>=1.0.0
7
+ # pyyaml
8
+
9
+ from adal import AuthenticationContext
10
+ import argparse
11
+ import pyperclip
12
+ import sys
13
+ import webbrowser
14
+ import yaml
15
+
16
+
17
+ class Config:
18
+ AUTHORITY_URL = 'https://login.microsoftonline.com/common'
19
+ RESOURCE = 'https://graph.microsoft.com'
20
+ API_VERSION = 'beta'
21
+
22
+
23
+ class TokenInfo:
24
+ def __init__(self, args):
25
+ self.__device = None
26
+ self.__token = None
27
+ self.__context = None
28
+ self.__args = args
29
+
30
+ def context(self):
31
+ if not self.__context:
32
+ self.__context = AuthenticationContext(Config.AUTHORITY_URL,
33
+ api_version=None)
34
+ return self.__context
35
+
36
+ def device(self):
37
+ if not self.__device:
38
+ self.__device = self.context().acquire_user_code(
39
+ Config.RESOURCE, self.__args.client_id)
40
+ return self.__device
41
+
42
+ def token(self, auto=True):
43
+ if not self.__token:
44
+ device_code = self.device()
45
+ if auto:
46
+ pyperclip.copy(
47
+ device_code['user_code']) # copy user code to clipboard
48
+ webbrowser.open(
49
+ device_code['verification_url']) # open browser
50
+ self.info(
51
+ f'The code {device_code["user_code"]} has been copied to your clipboard, '
52
+ f'and your web browser is opening {device_code["verification_url"]}. '
53
+ 'Paste the code to sign in.\n')
54
+ else:
55
+ self.info(device_code['message'])
56
+
57
+ self.__token = self.context().acquire_token_with_device_code(
58
+ Config.RESOURCE, device_code, self.__args.client_id)
59
+ return self.__token
60
+
61
+ def info(self, message):
62
+ sys.stderr.write(message + "\n")
63
+
64
+ def result(self):
65
+ if self.token():
66
+ return {'device': self.device(), 'token': self.token()}
67
+ else:
68
+ return None
69
+
70
+ def run(self):
71
+ if self.result():
72
+ with open(self.__args.output_path, 'w') as outfile:
73
+ yaml.dump(self.result(), outfile, default_flow_style=False)
74
+ self.info('Result writed in "%s"' % (self.__args.output_path))
75
+ else:
76
+ sys.exit("Result empty!")
77
+
78
+
79
+ if __name__ == '__main__':
80
+ parser = argparse.ArgumentParser(
81
+ description='Recupera token de acesso ao MSGraph')
82
+ parser.add_argument('client_id')
83
+ parser.add_argument('output_path')
84
+ args = parser.parse_args()
85
+ TokenInfo(args).run()