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.
- checksums.yaml +7 -0
- data/Gemfile +12 -0
- data/exe/pd1 +8 -0
- data/lib/avmtrf1/active_directory/user.rb +28 -0
- data/lib/avmtrf1/active_directory.rb +8 -0
- data/lib/avmtrf1/ad_user.rb +11 -0
- data/lib/avmtrf1/check_point/session/login.rb +57 -0
- data/lib/avmtrf1/check_point/session.rb +60 -0
- data/lib/avmtrf1/check_point.rb +3 -0
- data/lib/avmtrf1/default_esosti.rb +20 -0
- data/lib/avmtrf1/default_jira.rb +18 -0
- data/lib/avmtrf1/default_redmine.rb +16 -0
- data/lib/avmtrf1/docker/image.rb +49 -0
- data/lib/avmtrf1/docker/image_runner.rb +83 -0
- data/lib/avmtrf1/docker.rb +9 -0
- data/lib/avmtrf1/esosti/entities/issue.rb +24 -0
- data/lib/avmtrf1/esosti/entities.rb +9 -0
- data/lib/avmtrf1/esosti/instance/changed.rb +33 -0
- data/lib/avmtrf1/esosti/instance.rb +22 -0
- data/lib/avmtrf1/esosti/raw_data_sanitizer.rb +47 -0
- data/lib/avmtrf1/esosti/session/action_base.rb +34 -0
- data/lib/avmtrf1/esosti/session/atividades.rb +35 -0
- data/lib/avmtrf1/esosti/session/login.rb +47 -0
- data/lib/avmtrf1/esosti/session/solicitacao/main.rb +49 -0
- data/lib/avmtrf1/esosti/session/solicitacao.rb +81 -0
- data/lib/avmtrf1/esosti/session.rb +36 -0
- data/lib/avmtrf1/esosti.rb +8 -0
- data/lib/avmtrf1/executables.rb +23 -0
- data/lib/avmtrf1/forponto/parsers/day_registers.rb +19 -0
- data/lib/avmtrf1/forponto/parsers/espelho/day_node.rb +50 -0
- data/lib/avmtrf1/forponto/parsers/espelho/methods_as_fields.rb +21 -0
- data/lib/avmtrf1/forponto/parsers/espelho/row_node.rb +34 -0
- data/lib/avmtrf1/forponto/parsers/espelho/rows_consumer.rb +71 -0
- data/lib/avmtrf1/forponto/parsers/espelho/sub_node.rb +20 -0
- data/lib/avmtrf1/forponto/parsers/espelho/summary_node.rb +55 -0
- data/lib/avmtrf1/forponto/parsers/espelho/utils.rb +32 -0
- data/lib/avmtrf1/forponto/parsers/espelho.rb +26 -0
- data/lib/avmtrf1/forponto/session/day_registers.rb +39 -0
- data/lib/avmtrf1/forponto/session/interval.rb +27 -0
- data/lib/avmtrf1/forponto/session/login.rb +45 -0
- data/lib/avmtrf1/forponto/session.rb +32 -0
- data/lib/avmtrf1/forponto/user/balance.rb +155 -0
- data/lib/avmtrf1/forponto/user/day_registers.rb +32 -0
- data/lib/avmtrf1/forponto/user/month.rb +141 -0
- data/lib/avmtrf1/forponto/user.rb +22 -0
- data/lib/avmtrf1/git/cached_repository.rb +27 -0
- data/lib/avmtrf1/git/gitlab.rb +11 -0
- data/lib/avmtrf1/git/issue_on_repository.rb +100 -0
- data/lib/avmtrf1/git/push_large/_utils.rb +16 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/cache.rb +21 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/checkout_previous_revision.rb +35 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/commit_changes.rb +48 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/helpers.rb +29 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/pick_source_revision.rb +103 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/push.rb +90 -0
- data/lib/avmtrf1/git/push_large/lfs_commit/track_large_files.rb +53 -0
- data/lib/avmtrf1/git/push_large/lfs_commit.rb +47 -0
- data/lib/avmtrf1/git/push_large/source_commit/push.rb +42 -0
- data/lib/avmtrf1/git/push_large/source_commit.rb +58 -0
- data/lib/avmtrf1/git/push_large.rb +69 -0
- data/lib/avmtrf1/git/reference.rb +34 -0
- data/lib/avmtrf1/git.rb +10 -0
- data/lib/avmtrf1/gitlab/commit.rb +37 -0
- data/lib/avmtrf1/gitlab/repository.rb +41 -0
- data/lib/avmtrf1/ini/profile.rb +42 -0
- data/lib/avmtrf1/ini.rb +55 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/parser.rb +40 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
- data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
- data/lib/avmtrf1/inventario_sistemas.rb +38 -0
- data/lib/avmtrf1/issues/factory.rb +22 -0
- data/lib/avmtrf1/issues.rb +7 -0
- data/lib/avmtrf1/jira/entities/issue.rb +30 -0
- data/lib/avmtrf1/jira/entities.rb +9 -0
- data/lib/avmtrf1/jira/instance.rb +28 -0
- data/lib/avmtrf1/jira.rb +8 -0
- data/lib/avmtrf1/node_js/docker_image.rb +14 -0
- data/lib/avmtrf1/node_js.rb +9 -0
- data/lib/avmtrf1/openvpn/config/builder.rb +59 -0
- data/lib/avmtrf1/openvpn/config/parser/builder.rb +62 -0
- data/lib/avmtrf1/openvpn/config/parser/line.rb +47 -0
- data/lib/avmtrf1/openvpn/config/parser/simple.rb +27 -0
- data/lib/avmtrf1/openvpn/config/parser/tag.rb +39 -0
- data/lib/avmtrf1/openvpn/config/parser.rb +20 -0
- data/lib/avmtrf1/oracle/connection/base.rb +66 -0
- data/lib/avmtrf1/oracle/connection/string_builder.rb +44 -0
- data/lib/avmtrf1/oracle/connection.rb +12 -0
- data/lib/avmtrf1/oracle/object/base.rb +39 -0
- data/lib/avmtrf1/oracle/object/table.rb +15 -0
- data/lib/avmtrf1/oracle/object/user.rb +15 -0
- data/lib/avmtrf1/oracle/object/view.rb +15 -0
- data/lib/avmtrf1/oracle/object.rb +25 -0
- data/lib/avmtrf1/oracle/objects/relation.rb +23 -0
- data/lib/avmtrf1/oracle/objects/sql_builder.rb +64 -0
- data/lib/avmtrf1/oracle/objects.rb +53 -0
- data/lib/avmtrf1/oracle/oci8.rb +29 -0
- data/lib/avmtrf1/oracle.rb +10 -0
- data/lib/avmtrf1/patches/avm/git/issue/complete.rb +50 -0
- data/lib/avmtrf1/patches/avm/git/issue.rb +4 -0
- data/lib/avmtrf1/patches/avm/git/launcher/base.rb +46 -0
- data/lib/avmtrf1/patches/avm/git/launcher.rb +4 -0
- data/lib/avmtrf1/patches/avm/git.rb +4 -0
- data/lib/avmtrf1/patches/avm.rb +4 -0
- data/lib/avmtrf1/patches/inifile.rb +13 -0
- data/lib/avmtrf1/patches.rb +4 -0
- data/lib/avmtrf1/php/docker_images/base.rb +49 -0
- data/lib/avmtrf1/php/docker_images/factory.rb +37 -0
- data/lib/avmtrf1/php/docker_images/v5.rb +47 -0
- data/lib/avmtrf1/php/docker_images/v7.rb +27 -0
- data/lib/avmtrf1/php/docker_images/v7_v4.rb +30 -0
- data/lib/avmtrf1/php/docker_images/v8.rb +19 -0
- data/lib/avmtrf1/php/docker_images.rb +11 -0
- data/lib/avmtrf1/php.rb +9 -0
- data/lib/avmtrf1/red/client/authorization.xml.erb +4 -0
- data/lib/avmtrf1/red/client.rb +38 -0
- data/lib/avmtrf1/red/helper.rb +35 -0
- data/lib/avmtrf1/red/profile/put_file.xml.erb +19 -0
- data/lib/avmtrf1/red/profile.rb +58 -0
- data/lib/avmtrf1/red/server.rb +33 -0
- data/lib/avmtrf1/red.rb +5 -0
- data/lib/avmtrf1/redmine/entities/issue.rb +29 -0
- data/lib/avmtrf1/redmine/entities/issue_status.rb +23 -0
- data/lib/avmtrf1/redmine/entities.rb +10 -0
- data/lib/avmtrf1/redmine/instance.rb +41 -0
- data/lib/avmtrf1/redmine.rb +7 -0
- data/lib/avmtrf1/rest_provider/entity.rb +18 -0
- data/lib/avmtrf1/rest_provider/instance/issues.rb +30 -0
- data/lib/avmtrf1/rest_provider/instance.rb +30 -0
- data/lib/avmtrf1/rest_provider/request.rb +44 -0
- data/lib/avmtrf1/rest_provider/response.rb +73 -0
- data/lib/avmtrf1/rest_provider.rb +7 -0
- data/lib/avmtrf1/result.rb +44 -0
- data/lib/avmtrf1/ruby.rb +9 -0
- data/lib/avmtrf1/tools/application.rb +13 -0
- data/lib/avmtrf1/tools/core_ext.rb +4 -0
- data/lib/avmtrf1/tools/msgraph/api/entity.rb +35 -0
- data/lib/avmtrf1/tools/msgraph/api/member.rb +31 -0
- data/lib/avmtrf1/tools/msgraph/api/root.rb +27 -0
- data/lib/avmtrf1/tools/msgraph/api/team/member_add.rb +36 -0
- data/lib/avmtrf1/tools/msgraph/api/team.rb +40 -0
- data/lib/avmtrf1/tools/msgraph/api.rb +55 -0
- data/lib/avmtrf1/tools/msgraph/error.rb +31 -0
- data/lib/avmtrf1/tools/msgraph/request_mixin.rb +18 -0
- data/lib/avmtrf1/tools/msgraph/response_mixin.rb +23 -0
- data/lib/avmtrf1/tools/msgraph/token_retrieve.rb +42 -0
- data/lib/avmtrf1/tools/msgraph.rb +11 -0
- data/lib/avmtrf1/tools/rubygems/dependency.rb +20 -0
- data/lib/avmtrf1/tools/rubygems/not_found_error.rb +17 -0
- data/lib/avmtrf1/tools/rubygems.rb +11 -0
- data/lib/avmtrf1/tools/runner/check_point/login.rb +33 -0
- data/lib/avmtrf1/tools/runner/check_point.rb +17 -0
- data/lib/avmtrf1/tools/runner/esosti/changed.rb +39 -0
- data/lib/avmtrf1/tools/runner/esosti/fetch.rb +39 -0
- data/lib/avmtrf1/tools/runner/esosti/request.rb +76 -0
- data/lib/avmtrf1/tools/runner/esosti.rb +27 -0
- data/lib/avmtrf1/tools/runner/forponto/espelho.rb +47 -0
- data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +32 -0
- data/lib/avmtrf1/tools/runner/forponto/resumos.rb +87 -0
- data/lib/avmtrf1/tools/runner/forponto/saldo.rb +91 -0
- data/lib/avmtrf1/tools/runner/forponto.rb +70 -0
- data/lib/avmtrf1/tools/runner/git/gitlab/commit_link.rb +81 -0
- data/lib/avmtrf1/tools/runner/git/gitlab.rb +20 -0
- data/lib/avmtrf1/tools/runner/git/issues_check.rb +59 -0
- data/lib/avmtrf1/tools/runner/git/push_large.rb +46 -0
- data/lib/avmtrf1/tools/runner/git.rb +14 -0
- data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +71 -0
- data/lib/avmtrf1/tools/runner/msgraph/joined_teams.rb +39 -0
- data/lib/avmtrf1/tools/runner/msgraph/request.rb +45 -0
- data/lib/avmtrf1/tools/runner/msgraph/team/member/add.rb +48 -0
- data/lib/avmtrf1/tools/runner/msgraph/team/member.rb +25 -0
- data/lib/avmtrf1/tools/runner/msgraph/team/members.rb +38 -0
- data/lib/avmtrf1/tools/runner/msgraph/team.rb +27 -0
- data/lib/avmtrf1/tools/runner/msgraph/token.rb +31 -0
- data/lib/avmtrf1/tools/runner/msgraph.rb +43 -0
- data/lib/avmtrf1/tools/runner/node_js/docker.rb +15 -0
- data/lib/avmtrf1/tools/runner/node_js.rb +18 -0
- data/lib/avmtrf1/tools/runner/openvpn.rb +91 -0
- data/lib/avmtrf1/tools/runner/oracle/query.rb +71 -0
- data/lib/avmtrf1/tools/runner/oracle/source_get.rb +51 -0
- data/lib/avmtrf1/tools/runner/oracle/user_clear.rb +59 -0
- data/lib/avmtrf1/tools/runner/oracle.rb +37 -0
- data/lib/avmtrf1/tools/runner/php/docker.rb +20 -0
- data/lib/avmtrf1/tools/runner/php.rb +18 -0
- data/lib/avmtrf1/tools/runner/red.rb +83 -0
- data/lib/avmtrf1/tools/runner/source.rb +14 -0
- data/lib/avmtrf1/tools/runner.rb +43 -0
- data/lib/avmtrf1/tools.rb +4 -0
- data/lib/pd1_tools/version.rb +5 -0
- data/lib/pd1_tools.rb +7 -0
- data/template/avmtrf1/node_js/docker_image/Dockerfile.template +25 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/config_banner.sh +15 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/init.sh +18 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/lib.sh +30 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/ng_serve.sh +16 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/npm_install.sh +21 -0
- data/template/avmtrf1/node_js/docker_image/auxiliary/start.sh +17 -0
- data/template/avmtrf1/php/docker_images/base/Dockerfile.template +104 -0
- data/template/avmtrf1/php/docker_images/base/aux/apache_foreground.sh +16 -0
- data/template/avmtrf1/php/docker_images/base/aux/apache_user.sh +54 -0
- data/template/avmtrf1/php/docker_images/base/aux/app_user_run.sh +17 -0
- data/template/avmtrf1/php/docker_images/base/aux/config_banner.sh +20 -0
- data/template/avmtrf1/php/docker_images/base/aux/init.sh +39 -0
- data/template/avmtrf1/php/docker_images/base/aux/laravel.sh +58 -0
- data/template/avmtrf1/php/docker_images/base/aux/lib.sh +70 -0
- data/template/avmtrf1/php/docker_images/base/aux/pear.sh +35 -0
- data/template/avmtrf1/php/docker_images/base/aux/php_composer.sh +31 -0
- data/template/avmtrf1/php/docker_images/base/aux/php_values.sh +41 -0
- data/template/avmtrf1/php/docker_images/base/aux/setup_apache_site.sh +16 -0
- data/template/avmtrf1/php/docker_images/base/aux/start.sh +26 -0
- data/template/avmtrf1/php/docker_images/base/aux/templates/apache_site.conf +12 -0
- data/template/avmtrf1/tools/msgraph/token_retrieve/python_retriever.py +85 -0
- 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()
|