[Include] SAMPMailJS [NodeJS]
#21

Cara, a ideia й muito boa, mas a execuзгo й muito mais ou menos (com o mais para menos).
Vocк nгo seguiu os padrхes de desenvolvimento de um app nodejs, o mais simples nгo forneceu: package.json. As pessoas nгo tкm que ficar escrevendo npm install isso e aquilo, elas sу tкm que escrever npm install e pronto.
Editar a source para configurar a conta do gmail tambйm й outra falha da estrutura, coloca as configuraзхes num arquivo json e carrega de lб.
Vocк faz tudo manualmente usando http e url, fez seu prуprio modo de extrair os dados. Isso й terrнvel!
Vocк nгo verifica se o email й vбlido ou nгo antes de enviб-lo, talvez o nodemailer faзa, mas й algo tгo simples que dб para vocк fazer antes e retornar um erro especificando.
Vocк cria um transporter do nodemailer a cada requisiзгo http, isso й loucura cara!
Por fim, pode haver outros problemas na aplicaзгo, mas temos que ir por partes porque vocк deve estar aprendendo ainda e deve receber as crнticas com calma.
Sу gostaria que dividisse sua release em dois repositуrios, um contendo o conteъdo javascript e outro com o conteъdo pawn, separando a API da interface de utilizaзгo, saca?
Recomendo que faзa assim (coloquei mailer porque й o nome mais gerйnico para coisas desse tipo, mas fica a teu critйrio):
samp-mailer-api -> Repositуrio da API em nodejs
samp-mailer -> Repositуrio da include

O projeto fica melhor assim, mais organizado. Dб para gente colocar atй suporte a sampctl na tua include de boa (posso fazer isso por vocк, jб que muita gente nessa board nгo o conhece).
Bom, qualquer coisa eu dou um fork no teu repo e ajudo na refatoraзгo do cуdigo. Boa sorte!
Reply
#22

Quote:
Originally Posted by renatog
Посмотреть сообщение
Cara, a ideia й muito boa, mas a execuзгo й muito mais ou menos (com o mais para menos).
Vocк nгo seguiu os padrхes de desenvolvimento de um app nodejs, o mais simples nгo forneceu: package.json. As pessoas nгo tкm que ficar escrevendo npm install isso e aquilo, elas sу tкm que escrever npm install e pronto.
Editar a source para configurar a conta do gmail tambйm й outra falha da estrutura, coloca as configuraзхes num arquivo json e carrega de lб.
Vocк faz tudo manualmente usando http e url, fez seu prуprio modo de extrair os dados. Isso й terrнvel!
Vocк nгo verifica se o email й vбlido ou nгo antes de enviб-lo, talvez o nodemailer faзa, mas й algo tгo simples que dб para vocк fazer antes e retornar um erro especificando.
Vocк cria um transporter do nodemailer a cada requisiзгo http, isso й loucura cara!
Por fim, pode haver outros problemas na aplicaзгo, mas temos que ir por partes porque vocк deve estar aprendendo ainda e deve receber as crнticas com calma.
Sу gostaria que dividisse sua release em dois repositуrios, um contendo o conteъdo javascript e outro com o conteъdo pawn, separando a API da interface de utilizaзгo, saca?
Recomendo que faзa assim (coloquei mailer porque й o nome mais gerйnico para coisas desse tipo, mas fica a teu critйrio):
samp-mailer-api -> Repositуrio da API em nodejs
samp-mailer -> Repositуrio da include

O projeto fica melhor assim, mais organizado. Dб para gente colocar atй suporte a sampctl na tua include de boa (posso fazer isso por vocк, jб que muita gente nessa board nгo o conhece).
Bom, qualquer coisa eu dou um fork no teu repo e ajudo na refatoraзгo do cуdigo. Boa sorte!
Obrigado! Eu nгo sou nenhum expert em NodeJS, sу ensinei a instalar da ъnica forma que eu conheзo, mas jб tinha ouvido falar do package.json mas nгo sabia para que й que funcionava, agora tenho uma ideia.

Em relaзгo аs configuraзхes do gmail, nгo acho que seja um problema assim tгo grande ter que editar diretamente no cуdigo para alterar, jб que nгo й preciso compilar nada, mas sim, com um ficheiro externo ficaria melhor.

O que й que quer dizer com fazer tudo manualmente por http e url? Foi a maneira mais simples que eu arranjei, acho que sу havia outra soluзгo que eu ponderei que seria usar sockets, mas fui pelo HTTP mesmo pela simplicidade na parte da include pelo menos.

Com o meu prуprio mйtodo de extraзгo de dados quer dizer o "tag1:value1#tag2:value2"? Eu gostava de ter usado JSON, mas pelo que vi no SAMP nгo hб grande suporte a JSON, e pelo que li os plugins que hб para esse fim sгo muito lentos.

Por acaso a verificaзгo da validade do email й uma boa coisa para adicionar, quando tiver tempo vou fazк-lo.

Em relaзгo ao transporter, bem visto, nгo me tinha apercebido que nгo precisava de criar um sempre que envio um email.

Eu escolhi ter sу um repositуrio para facilitar a vida aos utilizadores e a mim prуprio que nгo manjo muito do github ainda.

Em relaзгo ao sampctl desconhecia totalmente, andei desaparecido do SAMP durante uns anos e nгo conheзo as novas atualizaзхes, mas lб estб, quero manter a simplicidade, atй porque nгo tenho muito tempo para gastar com isto.

Quando eu tiver tempo vou fazer algumas alteraзхes no cуdigo e adicionar novas features. E muito obrigado por ter perdido tempo a analisar o cуdigo e a dar sugestхes, esta comunidade precisva de mais pessoas como vocк
Reply
#23

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
O que й que quer dizer com fazer tudo manualmente por http e url? Foi a maneira mais simples que eu arranjei, acho que sу havia outra soluзгo que eu ponderei que seria usar sockets, mas fui pelo HTTP mesmo pela simplicidade na parte da include pelo menos.

Com o meu prуprio mйtodo de extraзгo de dados quer dizer o "tag1:value1#tag2:value2"? Eu gostava de ter usado JSON, mas pelo que vi no SAMP nгo hб grande suporte a JSON, e pelo que li os plugins que hб para esse fim sгo muito lentos.
Fica de olho nesse plugin (https://sampforum.blast.hk/showthread.php?tid=653362), quando ele estiver estбvel vai dar pra fazer requisiзхes http/s com JSON. Atй lб mantйm seu modo, se eu pensar em algo te dou um toque.
Reply
#24

Quote:
Originally Posted by renatog
Посмотреть сообщение
Fica de olho nesse plugin (https://sampforum.blast.hk/showthread.php?tid=653362), quando ele estiver estбvel vai dar pra fazer requisiзхes http/s com JSON. Atй lб mantйm seu modo, se eu pensar em algo te dou um toque.
Nгo conhecia esse plugin, parece muito bom! Quando sair eu dou uma olhadela.
Reply
#25

Aqui nгo funciona com o ret_utf8encode:

PHP код:
[09:32:49Run time error 6"Invalid instruction"
[09:32:49]  Unknown opcode 0x20000 at address 0x0000006A
[09:32:49AMX backtrace:
[
09:32:49#0 0000006a in public zcmd_OnGameModeInit () at <unknown file>:0
[09:32:49#1 native CallLocalFunction () from samp-server.exe
[09:32:49#2 00042c14 in public ScriptInit_OnGameModeInit ()  at C:\Pawn Sublime Text\include\zcmd.inc:68
[09:32:49#3 00007128 in public SSCANF_OnGameModeInit () at C:\Pawn Sublime Text\include\YSI\..\YSI_Data\..\YSI_Internal\..\YSI_Core\..\YSI_Internal\..\YSI_Server\y_scriptinit.inc:237
[09:32:49#4 000007b0 in public ScriptInit_OnGameModeExit () <_ALS:> at C:\Pawn Sublime Text\include\sscanf2.inc:205 
Substituн por

PHP код:
utf8encode(postDatapostData);
return 
HTTP(uniqueIDHTTP_POSTstringpostData"HandleHTTPResponse"); 
e funcionou normalmente.

E cuidado com o tamanho da string que formata o endereзo do servidor na stock SendEmail, podem ter endereзos mais extensos como o meu..

new string[64]; -> new string[100];
Reply
#26

Quote:
Originally Posted by GSFBart
Посмотреть сообщение
Aqui nгo funciona com o ret_utf8encode:

PHP код:
[09:32:49Run time error 6"Invalid instruction"
[09:32:49]  Unknown opcode 0x20000 at address 0x0000006A
[09:32:49AMX backtrace:
[
09:32:49#0 0000006a in public zcmd_OnGameModeInit () at <unknown file>:0
[09:32:49#1 native CallLocalFunction () from samp-server.exe
[09:32:49#2 00042c14 in public ScriptInit_OnGameModeInit ()  at C:\Pawn Sublime Text\include\zcmd.inc:68
[09:32:49#3 00007128 in public SSCANF_OnGameModeInit () at C:\Pawn Sublime Text\include\YSI\..\YSI_Data\..\YSI_Internal\..\YSI_Core\..\YSI_Internal\..\YSI_Server\y_scriptinit.inc:237
[09:32:49#4 000007b0 in public ScriptInit_OnGameModeExit () <_ALS:> at C:\Pawn Sublime Text\include\sscanf2.inc:205 
Substituн por

PHP код:
utf8encode(postDatapostData);
return 
HTTP(uniqueIDHTTP_POSTstringpostData"HandleHTTPResponse"); 
e funcionou normalmente.

E cuidado com o tamanho da string que formata o endereзo do servidor na stock SendEmail, podem ter endereзos mais extensos como o meu..

new string[64]; -> new string[100];
Й estranho dar esse erro, provavelmente й devido a nгo ter memуria suficiente, os criadores da strlib avisam quanto a isso. Vou alterar para esse formato, fica mais seguro. Tambйm vou alterar o tamanho das strings.
Reply
#27

PHP код:
ErrorENOENTno such file or directoryopen 'default.html' 
O template tб no lugar certo, o que pode ser isso?
Reply
#28

Hmm, nгo sei. O template tem de estar na mesma pasta que o .js. Й assim que estб? Usa Linux ou Windows?
Reply
#29

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
Hmm, nгo sei. O template tem de estar na mesma pasta que o .js. Й assim que estб? Usa Linux ou Windows?
Sim, tudo certo, jб tentei mudar o nome do .html, mudar de pasta, uso Linux.
Reply
#30

Quote:
Originally Posted by GSFBart
Посмотреть сообщение
Sim, tudo certo, jб tentei mudar o nome do .html, mudar de pasta, uso Linux.
Experimente fazer um debug para verificar se o nome do ficheiro estб correto, adicione na linha 71:

PHP код:
console.log(postArr[4]); 
E veja se o nome estб correto.

Tambйm pode ser falta de permissхes. Experimente dar permissхes 777 aos ficheiros.

Navegar atй а pasta e fazer:

PHP код:
chmod -R 777 
Mas isso deve ser um erro do pacote FS, nгo tem propriamente a ver com o meu script...
Reply
#31

Mesma coisa.

Reply
#32

Fez o debug para ver se o nome do ficheiro estava correto? E se utilizar outro template qualquer, tambйm nгo funciona?
Reply
#33

Sim, fiz, printou somente 'default.html', e sim, jб tentei utilizar outros. Tambйm jб tentei utilizar o nome da pasta no template, ficando 'html_map/default.html'
Reply
#34

Experimente correr o script dentro da pasta do user que estб a usar, no seu caso deve ser /root/sampmail.js
Reply
#35

Nгo funcionou, acho que na pasta do user o script nem tem acesso aos htmls.
Reply
#36

Isso й realmente muito estranho. Qual й a distro que estб a usar e a versгo do NodeJS?
Reply
#37

node --version
v10.4.1
Reply
#38

Quote:
Originally Posted by GSFBart
Посмотреть сообщение
node --version
v10.4.1
Edite o .js e antes da funзгo createServer() ser chamada, cole isto:

Код:
console.log("processcwd: " + process.cwd());
console.log("dirname: " + __dirname);
E poste aqui o que й que aparece na consola depois de correr o script.
Reply
#39

processcwd: /root/RPG2 -> Pasta do sampsvr
dirname: /root/sampmail -> Pasta do sampmail.js
Reply
#40

Vб а linha 73 e troque:

Код:
fs.readFile(postArr[4], 'utf8', function(err, data) {
por isto:

Код:
fs.readFile(__dirname + "/" + postArr[4], 'utf8', function(err, data) {
Assim jб deve funcionar
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)