2023-05-12 05:59:32 +00:00
const fs = require ( "fs-extra" ) ;
const path = require ( "path" ) ;
const dnsSync = require ( "dns-sync" ) ;
const mustache = require ( "mustache" ) ;
const readlineSync = require ( "readline-sync" ) ;
2023-06-01 05:30:05 +00:00
const conf = require ( ` ${ process . env . dirtown } /conf.json ` ) ;
2023-05-12 05:59:32 +00:00
const Wwws = { } ;
2023-06-01 05:30:05 +00:00
/ * W w w s . a p x t r i b i n s t a l l = ( p a r a m c o n f ) = > {
if ( fs . existsSync ( ` ${ conf . dirtown } /conf.json ` ) ) {
2023-05-12 05:59:32 +00:00
console . log ( "You already have a conf on this town" ) ;
process . exit ( ) ;
}
//first install
const nginxconf = fs . readFileSync (
2023-06-01 05:30:05 +00:00
` ${ conf . dirapi } /adminapi/www/adminapx/conf/nginx.conf.mustache ` ,
2023-05-12 05:59:32 +00:00
"utf8"
) ;
const proxyparams = fs . readFileSync (
"../../nationchains/www/adminapx/static/tpl/nginxproxy_params.mustache" ,
"utf8"
) ;
// saved and change nginx conf
if ( ! fs . existsSync ( "/etc/nginx/nginxconf.saved" ) ) {
fs . moveSync ( "/etc/nginx/nginx.conf" , "/etc/nginx/nginxconf.saved" ) ;
console . log (
"your previous /etc/nginx/nginx.conf was backup in /etc/nginx/nginxconf.saved"
) ;
}
fs . outputFileSync (
"/etc/nginx/nginx.conf" ,
mustache . render ( nginxconf , paramconf ) ,
"utf8"
) ;
fs . outputFileSync (
"/etc/nginx/proxy_params" ,
mustache . render ( proxyparams , paramconf ) ,
"utf8"
) ;
if ( ! fs . existsSync ( paramconf . nginx . logs ) ) fs . mkdirSync ( paramconf . nginx . logs ) ;
paramconf . nginx . firstinstall = true ;
fs . outputJsonSync ( "../../nationchains/tribes/conf.json" , paramconf , {
space : 2 ,
} ) ;
return Www . create ( paramconf . nginx ) ;
} ;
2023-06-01 05:30:05 +00:00
* /
2023-05-12 05:59:32 +00:00
Wwws . create = ( paramnginx ) => {
/ * *
2023-06-01 05:30:05 +00:00
* Create an nginx conf to make available a spaceweb for a tribe / www / appname /
*
2023-05-12 05:59:32 +00:00
* /
const res = {
status : 200 ,
ref : "Www" ,
msg : "successfulwww" ,
data : { website : paramnginx . website } ,
} ;
const nginxwebsite = fs . readFileSync (
2023-06-01 05:30:05 +00:00
` ${ conf . dirapi } /adminapi/www/adminapx/conf/nginxmodelwebsite.conf.mustache ` ,
2023-05-12 05:59:32 +00:00
"utf8"
) ;
fs . outputFileSync (
` ./ ${ paramnginx . fswww } www/nginx_ ${ paramnginx . website } .conf ` ,
mustache . render ( nginxwebsite , paramnginx ) ,
"utf8"
) ;
if ( ! fs . existsSync ( ` ./ ${ paramnginx . fswww } www/ ${ paramnginx . website } ` ) ) {
//See later how to generate specific template of webapp
fs . mkdirSync ( ` ./ ${ paramnginx . fswww } www/ ${ paramnginx . website } ` ) ;
}
if ( ! fs . existsSync ( ` ./ ${ paramnginx . fswww } www/cdn ` ) ) {
//See later how to generate specific template of webapp
fs . mkdirSync ( ` ./ ${ paramnginx . fswww } www/cdn ` ) ;
}
//restart nginx
const { exec } = require ( "child_process" ) ;
exec ( paramnginx . restart , ( error , stdout , stderr ) => {
if ( error ) {
if ( paramnginx . firstinstall ) {
console . log ( "\x1b[42m" , error , stdout , stderr , "x1b[0m" ) ;
}
//@todo supprimer la derniere config et relancer
res . status = 500 ;
res . msg = "nginxError" ;
res . data = { msg : ` ${ error } <br> ${ stdout } <br> ${ stderr } ` } ;
} else {
if ( paramnginx . firstinstall ) {
// the tribes/conf.json is saved in apxtribinstall
console . log (
` \x 1b[42m########################################################################################### \x 1b[0m \n \x 1b[42mWellcome into apxtrib, you can now 'yarn dev' for dev or 'yarn startpm2' for prod or \n 'yarn unittest' for testing purpose. Access to your town here \x 1b[0m \x 1b[32mhttp://adminapx \x 1b[0m \x 1b[42m \n to finish your town setup. Don't forget to set your localhost /etc/hosts by adding 127.0.0.1 adminapx or {LAN IP} adminapx . Check README's project to learn more. \x 1b[0m \n \x 1b[42m########################################################################################### \x 1b[0m `
) ;
} else {
// add website to tribe conf
}
}
} ) ;
return res ;
} ;
Wwws . setssl = ( ) => {
// Run process to change nginx conf to get a ssl
} ;
Wwws . configlist = ( tribeId ) => {
//if accessright R return list of conf parameter {webapp:{conf parameter}}
const res = { status : 200 , data : { } } ;
return res ;
} ;
module . exports = Wwws ;