scripts/nginx_config_maker/index.mjs

107 lines
3.5 KiB
JavaScript

/**
* setup domains
* @type {{framework: string, domain: string}[]}
*/
import fs from 'node-fs'
import { makeHostFileForWordpress } from './model.wordpress.mjs'
import { makeHostFileForSymfony } from './model.symfony.mjs'
import { makeHostFileForPhpPages } from './model.php-website.mjs'
import { domainsConfig } from './domains.mjs'
import { makeHostFileForNextcloud } from './model.nextcloud.mjs'
// autres frameworks:
// nextcloud: cloud.tykayn.fr
// vaultwarden: pass.cipherbliss.com
// mastodon: mastodon.cipherbliss.com
// peertube: peertube.cipherbliss.com
//
// sites statiques
// meltingpot.cipherbliss.com
// joinfediverse
// coussinet
let domainsForHostFile = []
let createFoldersScript = ''
let domainsSorted = domainsConfig.sort((a, b) => {
return a.domain - b.domain
})
for (let configDomain of domainsSorted) {
console.log('domaine :', configDomain.name)
domainsForHostFile.push(configDomain.domain)
let hostFile
if (configDomain.framework === 'wordpress') {
hostFile = makeHostFileForWordpress(configDomain)
}
if (configDomain.framework === 'symfony') {
hostFile = makeHostFileForSymfony(configDomain)
}
if (configDomain.framework === 'nextcloud') {
hostFile = makeHostFileForNextcloud(configDomain)
}
if (configDomain.framework === 'static') {
hostFile = makeHostFileForPhpPages(configDomain)
createFoldersScript += '# --------- \n'
createFoldersScript += 'mkdir -p /home/www/' + configDomain.domain + ' \n'
createFoldersScript += 'touch /home/www/' + configDomain.domain + '/index.html \n'
createFoldersScript += 'echo "coucou ' + configDomain.domain + '" > /home/www/' + configDomain.domain + '/index.html \n'
createFoldersScript += ' \n'
createFoldersScript += 'touch /etc/nginx/sites-available/' + configDomain.domain + '" \n'
createFoldersScript += 'rm /etc/nginx/sites-available/' + configDomain.domain + '" /etc/nginx/sites-enabled/' + configDomain.domain + '" \n'
createFoldersScript += 'ln -s /etc/nginx/sites-available/' + configDomain.domain + '" /etc/nginx/sites-enabled/ \n'
createFoldersScript += ' \n'
writeFile(configDomain.domain + '_direct.conf', hostFile.noContainerNginxConf)
}else{
writeFile(configDomain.domain + '_host.conf', hostFile.homeNginxConf)
writeFile(configDomain.domain + '_container.conf', hostFile.containerNginxConf)
}
let renewCertbotScript = domainsForHostFile.map(domain => {
if (domain.redirectToNoWWW || domain.includes('www.')) {
return ' certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d ' + domain + ' -d ' + domain.replace('www.', '') + ' \n'
} else {
return ' certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d ' + domain + ' \n'
}
}
)
let hostfileDomains = domainsForHostFile.sort((a, b) => {
return a - b
}).map(domain => ' 127.0.0.1\t' + domain + ' \n')
console.log('hostfileDomains', hostfileDomains.join('')
.replace(',', ''))
writeFile('certbot_renew.sh', '!#/bin/bash\n' + renewCertbotScript.join('').replace(',', '')+ '\n149.202.77.27 riseup\n' +
'::1 localhost ip6-localhost ip6-loopback\n' +
'# coussinet chatons\n' +
'ff02::1 ip6-allnodes\n' +
'ff02::2 ip6-allrouters\n' +
'# ici c\'est 149.202.77.27\n')
writeFile('folders_create.sh', createFoldersScript.replace(',', ''))
writeFile('hosts', hostfileDomains.join('')
.replace(',', ''))
}
function writeFile (fileName, fileContent) {
console.log('write file', fileName)
return fs.writeFile(
`./output/${fileName}`,
fileContent,
'utf8',
(err) => {
if (err) {
console.log(`Error writing file: ${err}`)
}
}
)
}