Tuesday 26 December 2017

Mongoose web server binary options


Mongoose Binary - Guia do Usuário Mongoose é um pequeno e fácil de usar servidor web construído em cima da biblioteca de rede multi-protocolo. Mongoose é projetado com máxima simplicidade em mente. Por exemplo, para compartilhar qualquer diretório, basta soltar o executável do Mongoose nesse diretório, clicar duas vezes nele (no UNIX, executá-lo a partir do shell) e apontar o seu navegador em localhost: 8080 NOTA: localhost deve ser alterado para o nome da máquina se acessado de Outro computador. No Windows e Mac, Mongoose adiciona um ícone à bandeja do sistema quando iniciado. Clique com o botão direito do mouse no ícone para abrir um menu, onde é possível parar o Mongoose ou configurá-lo. Quando iniciado, o Mongoose primeiro procura um arquivo de configuração chamado mongoose. conf no mesmo diretório onde o binário está localizado. O arquivo de configuração pode estar ausente, neste caso as opções de configuração padrão são usadas. O arquivo de configuração é uma seqüência de linhas, cada linha contendo o nome da opção de configuração eo valor de it39s. As linhas vazias e linhas que começam com são ignoradas. Aqui está o exemplo do arquivo mongoose. conf: NOTA: O Mongoose pode ser iniciado a partir do prompt de comando, e os parâmetros de configuração podem ser especificados como argumentos de linha de comando com - prepended. Por exemplo: Mongoose suporta a autenticação digest. E pode ser usado para adicionar usuários ao arquivo. htpasswd: Ao contrário de outros servidores da Web, o Mongoose não exige que os scripts CGI estejam localizados em um diretório especial. Os scripts CGI podem estar em qualquer lugar. Arquivos CGI e SSI são reconhecidos pelo padrão de nome de arquivo. Mongoose usa shell-como glob padrões. Padrão partida começa no início da seqüência de caracteres, portanto, essencialmente padrões são prefixo padrões. A sintaxe é a seguinte:. Combina tudo. Corresponde a tudo mas / caráter. Corresponde a qualquer personagem. Corresponde ao final da seqüência. Corresponde se o padrão no lado esquerdo ou no lado direito corresponder. Todos os outros caracteres no padrão correspondem a si próprios. Exemplos:.cgi. Qualquer seqüência de caracteres que termina com. cgi / foo. Qualquer string que comece com / foo ab. Qualquer string que termina com a ou começa com b Para restringir arquivos CGI somente ao diretório / cgi-bin /, use esta configuração: Uma Lista de Controle de Acesso (ACL) permite que restrições sejam colocadas na lista de endereços IP que têm acesso ao diretório servidor web. No caso do servidor web Mongoose, a ACL é uma lista separada por vírgulas de especificações de prefixo IP, em que cada prefixo é precedido por um sinal - ou por um sinal. Um sinal de mais significa permitir, e um sinal de menos significa negar. Se uma máscara de sub-rede for omitida, como -1.2.3.4. Uma máscara / 32 é assumida e isso significa negar apenas esse único endereço IP. As máscaras de sub-rede podem variar de 0 a 32, inclusive. A configuração padrão é permitir que todos os acessos. Em cada solicitação a lista completa é percorrida, e a última partida ganha. Exemplo: mongoose - accesscontrollist -0.0.0.0 / 0,192.168 / 16 para negar todos os acccesses exceto aqueles da sub-rede 192.168 / 16. Note que se a opção estiver definida, então todos os acessos são proibidos por padrão. Assim, em um exemplo anterior, -0.0.0.0 parte não é necessário. Por exemplo, accesscontrollist 10.0.0.0/8 significa não permitir tudo, permitir sub-rede 10/8 somente. Exemplo: accesscontrollist -0.0.0.0 / 0,192.168 / 16 Padrão: não definido, todos os acessos são permitidos. Caminho para um arquivo de logs de acesso. Ou caminho completo, ou relativo ao executável Mongoose. Exemplo: accesslogfile c: logswebaccesslog. txt Padrão: não definido, nenhum log é feito. Domínio de autorização utilizado na autorização. htpasswd. Exemplo: authdomain mysite Caminho para um executável a ser usado use como um interpretador para todos os scripts CGI, independentemente da extensão do script. Se esta opção não estiver definida (que é o padrão), Mongoose honra a linha shebang - ver en. wikipedia. org/wiki/Shebang(Unix). Por exemplo, se os CGIs de PHP e perl forem usados, então /path/to/php-cgi. exe e /path/to/perl. exe devem ser as primeiras linhas dos respectivos scripts CGI. Observe que os caminhos devem ser caminhos de arquivo completo ou caminhos de arquivo relativos ao diretório onde o executável Mongoose está localizado. Se todos os CGIs usam o mesmo intérprete, por exemplo, são todos PHP, então a opção cgiinterpreter pode ser definida para o caminho para o executável php-cgi. exe e a linha shebang nos scripts CGI pode ser omitida. NOTA: Os scripts PHP devem usar php-cgi. exe. Não php. exe. Exemplo: cgiinterpreter C: rubyruby. exe Padrão: not set. Todos os arquivos que correspondem cgipattern são tratados como scripts CGI. O padrão padrão permite que os arquivos CGI estejam em qualquer lugar. Para restringir CGIs a um determinado diretório, use /path/to/cgi-bin/.cgi como um padrão. Observe que o caminho do arquivo completo é comparado com o padrão, não o URI. Quando o Mongoose inicia o programa CGI, cria um novo ambiente para ele (em contraste, geralmente o programa filho herda o ambiente do pai). Várias variáveis ​​de ambiente no entanto são herdadas do ambiente do Mongoose, elas são: PATH. TMP. TEMP. TMPDIR. PERLLIB. MONGOOSECGI. No UNIX também é LDLIBRARYPATH. No Windows também é COMSPEC. SYSTEMROOT. SystemDrive. Arquivos de Programas. ProgramFiles (x86). CommonProgramFiles (x86). Exemplo: cgipattern. cgi Arquivo de autenticação para solicitações de mutação WebDAV: PUT. EXCLUIR. MKCOL. O formato desse arquivo é o mesmo que para o arquivo. htpasswd usado para autenticação digest. Ele pode ser criado e gerenciado pelo comando mongoose-A. Se davauthfile estiver definido para -. A autenticação DAV é desabilitada. Exemplo: davauthfile c: davauth. txt Padrão: não definido, as mutações do WebDAV não são permitidas. Um diretório raiz para solicitações DAV. Exemplo: davroot C: davroot Padrão: não definido, o que significa que DAV diretório raiz é o mesmo que documentrootMongoose Web Server Versão binária: mestre Mongoose Binary é um pequeno e fácil de usar servidor web construído em cima da biblioteca de rede multi-protocolo Mongoose Embedded Servidor web. Mongoose binário é projetado com máxima simplicidade em mente. Por exemplo, para compartilhar qualquer diretório, basta soltar o executável Mongoose Binary nesse diretório, clicar duas vezes nele (no UNIX, executá-lo a partir do shell) e apontar o seu navegador para localhost: 8080 NOTA: localhost deve ser alterado para o nome da máquina Se acessado a partir de outro computador. No Windows e Mac, Mongoose Binary adiciona um ícone à bandeja do sistema quando iniciado. Clique com o botão direito do mouse no ícone para abrir um menu pop-up, onde é possível parar o Mongoose Binary ou configurá-lo. Quando iniciado, Mongoose Binary primeiro procura por um arquivo de configuração chamado mongoose. conf no mesmo diretório onde o binário está localizado. O arquivo de configuração pode estar ausente, neste caso as opções de configuração padrão são usadas. O arquivo de configuração é uma seqüência de linhas. Cada linha contém um nome de opção de configuração e seu valor. As linhas vazias e linhas que começam com são ignoradas. Aqui está um exemplo do arquivo mongoose. conf: NOTA: O Mongoose Binary pode ser iniciado a partir do prompt de comando, e os parâmetros de configuração podem ser especificados como argumentos de linha de comando com - prepended. Por exemplo: Mongoose Binary suporta a autenticação digest. E pode ser usado para adicionar usuários ao arquivo. htpasswd: Ao contrário de outros servidores da Web, o Mongoose Binary não exige que os scripts CGI estejam localizados em um diretório especial. Os scripts CGI podem estar em qualquer lugar. Arquivos CGI e SSI são reconhecidos pelo padrão de nome de arquivo. Mangusto Binário usa shell-como glob padrões. A correspondência de padrão começa no início da seqüência de caracteres, portanto, essencialmente, os padrões são padrões de prefixo. A sintaxe é a seguinte:. Combina tudo. Corresponde a tudo mas / caráter. Corresponde a qualquer personagem. Corresponde ao final da seqüência. Corresponde se o padrão no lado esquerdo ou no lado direito corresponder. Todos os outros caracteres no padrão correspondem a si próprios. Exemplos:.cgi. Qualquer seqüência de caracteres que termina com. cgi / foo. Qualquer string que comece com / foo ab. Qualquer string que termina com a ou começa com b Para restringir arquivos CGI somente ao diretório / cgi-bin /, use esta configuração: Uma Lista de Controle de Acesso (ACL) permite que restrições sejam colocadas na lista de endereços IP que têm acesso a O servidor web. No caso do servidor web Mongoose Binary, a ACL é uma lista separada por vírgulas de especificações de prefixo IP, onde cada prefixo é precedido por um sinal - ou um. Um sinal positivo significa permitir, um sinal negativo significa negar. Se uma máscara de sub-rede for omitida, como -1.2.3.4. Uma máscara / 32 é assumida. Isso significa negar apenas esse único endereço IP. As máscaras de sub-rede podem variar de 0 a 32, inclusive. A configuração padrão é permitir todo o acesso. Em cada solicitação a lista completa é percorrida, e a última partida ganha. Exemplo: mongoose - accesscontrollist -0.0.0.0 / 0,192.168 / 16 negará todos os acccesses exceto aqueles da sub-rede 192.168 / 16. Observe que, se a opção estiver definida, todo o acesso é proibido por padrão. Assim, como descrito no exemplo anterior, a parte -0.0.0.0 não é necessária. Por exemplo, accesscontrollist 10.0.0.0/8 significa não permitir tudo, permitir sub-rede 10/8 somente. Exemplo: accesscontrollist -0.0.0.0 / 0,192.168 / 16 Padrão: não definido, todo o acesso é permitido. O caminho para um arquivo de logs de acesso. Ou o caminho completo ou relativo ao executável Mongoose Binary. Exemplo: accesslogfile c: logswebaccesslog. txt Padrão: não definido, nenhum log é feito. O domínio de autorização usado na autorização. htpasswd. Exemplo: authdomain mysite O caminho para um executável para ser usado como um interpretador para todos os scripts CGI, independentemente da extensão do script. Se esta opção não estiver definida (que é o padrão), Mongoose Binary honra a linha shebang - ver en. wikipedia. org/wiki/Shebang(Unix). Por exemplo, se os CGIs do PHP e do Perl forem usados, então /path/to/php-cgi. exe e /path/to/perl. exe devem ser as primeiras linhas dos respectivos scripts CGI. Observação, os caminhos devem ser caminhos de arquivos completos ou caminhos de arquivo relativos ao diretório onde o executável do Mongoose Binary está localizado. Se todos os CGIs usarem o mesmo intérprete, por exemplo, são todos PHP, então a opção cgiinterpreter pode ser definida para o caminho para o executável php-cgi. exe ea linha shebang nos scripts CGI pode ser omitida. NOTA: Os scripts PHP devem usar php-cgi. exe. Não php. exe. Exemplo: cgiinterpreter C: rubyruby. exe Padrão: not set. Todos os arquivos que correspondem cgipattern são tratados como scripts CGI. O padrão padrão permite que os arquivos CGI estejam em qualquer lugar. Para restringir CGIs a um determinado diretório, use /path/to/cgi-bin/.cgi como um padrão. Observe, caminho de arquivo completo é comparado contra o padrão, não o URI. Quando o Mongoose Binary inicia o programa CGI, ele cria um novo ambiente para ele (em contraste, geralmente o programa filho herda o ambiente do pai). Várias variáveis ​​de ambiente no entanto são herdadas do ambiente do Mangusto Binary. Eles são: PATH. TMP. TEMP. TMPDIR. PERLLIB. MONGOOSECGI. No UNIX também é LDLIBRARYPATH. No Windows também é COMSPEC. SYSTEMROOT. SystemDrive. Arquivos de Programas. ProgramFiles (x86). CommonProgramFiles (x86). Exemplo: cgipattern. cgi O arquivo de autenticação para solicitações de mutação WebDAV: PUT. EXCLUIR. MKCOL. O formato desse arquivo é o mesmo que para o arquivo. htpasswd usado para autenticação digest. Ele pode ser criado e gerenciado pelo comando mongoose-A. Se davauthfile estiver definido para -. A autenticação DAV é desabilitada. Exemplo: davauthfile c: davauth. txt Padrão: não definido, as mutações do WebDAV não são permitidas. Um diretório raiz para solicitações DAV. Exemplo: davroot C: davroot Padrão: não definido, significando que o diretório raiz DAV é o mesmo que documentroot Um diretório raiz para solicitações na web. Um utilitário de software eficiente e confiável projetado para funcionar como um servidor web, proporcionando aos usuários com várias opções de configuração Mongoose é um software intuitivo e poderoso projetado desde o início para tornar possível Para os usuários incorporá-lo em aplicações já existentes, a fim de fornecer interfaces web para eles. Fácil de instalar e de se instalar O aplicativo é submetido a um processo de instalação simplificado graças a um binário pré-compilado do Windows subsequente ao qual se integra automaticamente com a bandeja do sistema. Aprender a usar o Mongoose é um processo simples com os usuários apenas ter que definir o diretório compartilhado de seu sistema e digitando o seguinte endereço na barra de endereço de qualquer navegador da web instalado: localhost: 8080. Observe que ambas as tarefas podem ser facilmente alcançadas a partir do menu do app039s bandeja do sistema. Se alguma configuração adicional for necessária - por exemplo, uma porta de escuta diferente ou um controle de acesso baseado em IP, então um arquivo 039mongoose. conf039 com as respectivas opções pode ser criado no mesmo diretório onde o executável vidas. Ainda mais, os usuários podem acessar as configurações avançadas do app039 através de uma interface baseada na web. Ao clicar na entrada apropriada do menu da bandeja do sistema do app039s, os usuários são direcionados automaticamente para uma seção abrangente de configurações do servidor da Web. Vem com suporte para uma ampla gama de protocolos Vale a pena notar que Mongoose vem com suporte nativo para PicoTCP incorporado TCP / IP pilha, LWIP integrado TCP / IP pilha. Além disso, também agrupa uma grande variedade de protocolos, por exemplo: TCP simples, UDP simples, cliente HTTP, servidor HTTP, cliente JSON-RPC, servidor JSON-RPC, cliente MQTT, corretor MQTT, cliente CoAP, servidor CoAP, DNS Cliente, servidor DNS, DNS assíncrono resolver. A lista de recursos do utility039s é completada pela segurança SSL / TLS com autenticação do usuário através de Autenticação de Digest, suporte para HTML estático / CSS e gráfico de tempo real ou dados de evento via conexão WebSocket. Integrá-lo com seus projetos em meros segundos. Em suma, o Mongoose é um webser embutido útil, com uma biblioteca multiprotocolo e recursos diretos que o julgam apropriado para vários projetos como demos, testes rápidos, compartilhamento de arquivos e programação na Web. O melhor de tudo é que você pode facilmente integrá-lo em seu projeto simplesmente copiando os arquivos mongoose. c e mongoose. h diretamente para a árvore de compilação. mongoose (1) - Página man do Linux mongoose - servidor web leve Sinopse mongoose configfile OPÇÕES mongoose - A Htpasswdfile nome do domínio nome de usuário senha Descrição mongoose é pequeno, rápido e fácil de usar o servidor web com CGI, SSL, MD5 autorização e suporte básico SSI. O mangusto não se separa do terminal e usa o diretório de trabalho atual como a raiz da web, a menos que a opção - r seja especificada. É possível especificar várias portas para escutar. Por exemplo, para fazer mongoose ouvir na porta HTTP 80 e HTTPS porta 443, deve-se iniciá-lo como: mongoose - s cert. pem - p 80.443s Ao contrário de outros servidores web, mongoose não exige CGI scripts ser colocados em um diretório especial. Os scripts CGI podem estar em qualquer lugar. Arquivos CGI (e SSI) são reconhecidos pelo padrão de nome de arquivo. Mangusto usa shell-como glob padrões com a seguinte sintaxe: Corresponde a tudo, mas barra de caracteres, / Corresponde a qualquer caractere Corresponde ao final da seqüência Corresponde se padrão no lado esquerdo ou o lado direito corresponde. Padrão no lado esquerdo é correspondido primeiro Todos os outros caracteres no padrão correspondem a si mesmos. Se nenhum argumento for dado, o mangusto procura um arquivo de configuração chamado mongoose. conf no mesmo diretório onde o binóculo mongoose está localizado. Como alternativa, um nome de arquivo pode ser especificado na linha de comando. O formato do arquivo de configuração é o mesmo que para as opções da linha de comando, exceto que cada opção deve ser especificada em uma linha separada, os traços principais para os nomes das opções devem ser omitidos. Linhas começando com linhas vazias são ignoradas. Opções Adicionar / editar senha de usuários no arquivo de senhas. A exclusão de usuários pode ser feita com qualquer editor de texto. Funcionalidade é semelhante ao utilitário Apaches htdigest. - C cgipattern Todos os arquivos que correspondem totalmente cgipattern são tratados como CGI. O padrão padrão permite que os arquivos CGI estejam em qualquer lugar. Para restringir CGIs a determinado diretório, use, p. - C /cgi-bin/.cgi. Padrão:.cgi. pl - Ecgienvironment Variáveis ​​de ambiente extras a serem passadas para o script CGI além das padrão. A lista deve ser separada por vírgulas de pares XY, como este: VARIABLE1VALUE1, VARIABLE2VALUE2. Padrão: - G putdeletepasswordsfile PUT e DELETE arquivo de senhas. Isso deve ser especificado se os métodos PUT ou DELETE forem usados. Padrão: - I cgiinterpreter Use cgiinterpreter como um interpretador CGI para todos os scripts CGI independentemente da extensão do script. Mongoose decide qual interpretador usar ao olhar para a primeira linha de um script CGI. Padrão: . - M maxrequestsize Tamanho máximo do pedido HTTP em bytes. Padrão: 16384 - P protecteduri Separação separada por vírgulas de pares URIPATH, especificando que os URIs fornecidos devem ser protegidos com arquivos de senha respeitados. Padrão: - R authenticationdomain Domínio de autorização. Padrão: mydomain - S ssipattern Todos os arquivos que combinam totalmente ssipattern são tratados como SSI. As diretivas SSI desconhecidas são silenciosamente ignoradas. Atualmente, duas diretivas SSI são suportadas, include e exec. Padrão:.shtml. shtm - a accesslogfile Arquivo de log de acesso. Padrão:, nenhum log é feito. - d enabledirectorylisting Ativar / desativar listagem de diretórios. Padrão: yes - e errorlogfile Arquivo de log de erros. Padrão:, nenhum erro é registrado. - g globalpasswordsfile Localização de um arquivo global de senhas. Se definido, os arquivos. htpasswd por diretório serão ignorados e todas as solicitações devem ser autorizadas nesse arquivo. Padrão: - i indexfiles Lista de arquivos separados por vírgulas a serem tratados como arquivos de índice de diretório. Padrão: index, index. htm, index. cgi - l accesscontrollist Especifica a lista de controle de acesso (ACL). ACL é uma lista de sub-redes IP separadas por vírgula, cada sub-rede é precedida por - ou sinal. Plus significa permitir, menos significa negar. Se a máscara de sub-rede for omitida, como -1.2.3.4, significa endereço IP único. A máscara pode variar de 0 a 32 inclusive. Em cada solicitação, a lista completa é percorrida e a última partida ganha. A configuração padrão é permitir que todos. Por exemplo, para permitir que somente a sub-rede 192.168 / 16 se conecte, execute mongoose -0.0.0.0 / 0,192.168 / 16. Padrão: - m extramimetypes Tipos de mímica extra para reconhecer, no formulário extension1type1, extension2type2. . A extensão deve incluir ponto. Exemplo: mongoose - m. cppplain / text,.javaplain / text. Padrão: - p listenports Lista de portas separadas por vírgulas para ouvir. Se a porta for SSL, uma letra s deve ser acrescentada, por exemplo, - p 80.443s abrirá a porta 80 ea porta 443, e as conexões na porta 443 serão SSL-ed. É possível especificar um endereço IP para vincular a. Nesse caso, um endereço IP e dois pontos devem ser pré-anexados ao número da porta. Por exemplo, para ligar a uma interface de loopback na porta 80 e a todas as interfaces na porta HTTPS 443, use mongoose - p 127.0.0.1:80,443s. Padrão: 8080 - r documentroot Localização do diretório raiz Padrão: . - s sslcertificate Localização do arquivo de certificado SSL. Padrão: - t numthreads Número de threads de trabalho a serem iniciadas. Padrão: 10 - u runasuser Alternar para as credenciais de usuários fornecidos após a inicialização. Padrão: - w urlrewritepatterns Lista separada por vírgulas de reescrituras de URL sob a forma de substituição de padrões. Se o padrão corresponder a algum prefixo do URL solicitado, o prefixo correspondente será substituído pela substituição. Por exemplo, - w /config/etc,.doc. rtf/cgi-bin/handledoc. cgi servirá todas as URLs que começam com / config do diretório / etc e chame o script handledoc. cgi para arquivos. doc e. rtf pedidos. Se algum padrão coincide, nenhuma correspondência / substituição adicional é executada (o primeiro padrão de correspondência gana). Padrão: incorporação mongoose foi projetado para ser incorporado em aplicações C / C. Como o código-fonte está contido no arquivo C único, é bastante fácil incorporá-lo e seguir as atualizações. Consulte code. google/p/mongoose para obter detalhes. Exemplos Iniciar arquivos de serviço de / var / Ouça na porta 8080 para HTTP e 8043 para conexões HTTPS. Use /etc/cert. pem como arquivo de certificado SSL. Mongoose - l -0.0.0.0 / 0,10.0.0.0 / 8,1.2.3.4 Negar conexões de qualquer lugar, permitir apenas o endereço IP 1.2.3.4 e todos os endereços IP da sub-rede 10.0.0.0/8 para se conectar. Mongoose - w /my/script. cgi Invoque /my/script. cgi para cada solicitação de entrada, independentemente do URL. Copyright mongoose é licenciado sob os termos da licença do MIT. BSDMongoose - Embedded Web Server / Embedded Networking Library O Mongoose é ideal para ambientes embutidos. Ele foi projetado para conectar dispositivos e trazê-los on-line. No mercado desde 2004, usado por um grande número de produtos de código aberto e comerciais - ele ainda é executado em estações espaciais Mongoose torna a programação de rede integrada rápida, robusta e fácil. Se você estiver procurando por um pré-compilado Windows ou Mac binário, Se você estiver procurando por uma solução completa com firmware e componentes de nuvem, confira Mongoose IoT Platform. Multi-plataforma: trabalha em Linux / UNIX, MacOS, QNX, eCos, Windows, Android, iPhone, FreeRTOS (TI CC3200, ESP8266), etc Núcleo single-threaded, assíncrono, sem bloqueio com API baseada em evento simples Suporte nativo para PicoTCP incorporado pilha TCP / IP. TCP / IP LWIP protocolos Builtin: TCP simples, UDP simples, SSL / TLS (sobre TCP, unidireccional ou bidirecional) Cliente HTTP, servidor HTTP Cliente WebSocket, servidor WebSocket Cliente MQTT, cliente MQTT Broker CoAP, servidor CoAP Cliente DNS, servidor DNS, resolução de DNS assíncrono Pequena estática e tempo de execução O código-fonte é compatível com ISO C e ISO C Muito fácil de integrar: basta copiar os arquivos mongoose. c e mongoose. h para a sua árvore de compilação O Mongoose é lançado sob comercial E GNU GPL v.2 licenças de código aberto. Projetos comerciais: Uma vez que seu projeto se torna comercializado GPLv2 licenciamento dita que você precisa para abrir sua fonte totalmente ou comprar uma licença comercial. A Cesanta oferece licenças comerciais completas isentas de royalties sem quaisquer restrições GPL. Se suas necessidades exigem uma licença personalizada, wed feliz em trabalhar em uma solução com você. Entre em contato para preços. Prototipagem: Enquanto o seu projeto ainda está em estágio de prototipagem e não para venda, você pode usar código-fonte aberto Mongooses sem restrições de licença. Mongoose é freqüentemente usado para implementar painéis de dispositivos e troca de dados em tempo real através do Websocket. Aqui está um exemplo de painel que ilustra a funcionalidade: Para enviar contribuições, assinar Cesanta CLA e enviar solicitação GitHub pull. Você mantém os direitos autorais sobre suas contribuições.

No comments:

Post a Comment