add_action("init", "eg_create_sitemap");
$sitemap_path = ABSPATH . "sitemap.xml";
$pages_path = ABSPATH . "pages.xml";
$ads_path = ABSPATH . "ads-list.xml";
if (file_exists($sitemap_path)) {
unlink($sitemap_path);
}
if (file_exists($pages_path)) {
unlink($pages_path);
}
if (file_exists($ads_path)) {
unlink($ads_path);
}
function createUrlXml() {
$url_sitemap = '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
$url_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads-list.xml</loc>' . "\n\t\t" . '<lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
</url>' . "\n";
$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/pages.xml</loc>' . "\n\t\t" . '
<lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
</url>' . "\n";
$url_sitemap .= '</urlset>';
return $url_sitemap;
}
function createPagesSitemap() {
$postsForSitemap = get_posts(array('numberposts' => -1, 'orderby' => 'modified', 'post_type' => array('post', 'page'), 'order' => 'DESC'));
$pages_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
$pages_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($postsForSitemap as $post) {
setup_postdata($post);
$postdate = explode(" ", $post->post_modified);
$pages_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>' . get_permalink($post->ID) . '</loc>' . "\n\t\t" . '
<lastmod>' . $postdate[0] . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n";
}
$pages_sitemap .= '</urlset>';
return $pages_sitemap;
}
function createAdsSitemap() {
$adsForSitemap = getPropertiesId();
$adsForSitemap = json_decode($adsForSitemap)->data;
$ads_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
$ads_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
foreach ($adsForSitemap as $item) {
$ads_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads?id=' . $item->id . '</loc>' . "\n\t\t" . '<lastmod>' . $item->updated_at . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n";
}
$ads_sitemap .= '</urlset>';
return $ads_sitemap;
}
function eg_create_sitemap() {
$url_sitemap = createUrlXml();
$pages_sitemap = createPagesSitemap();
$ads_sitemap = createAdsSitemap();
global $sitemap_path;
global $pages_path;
global $ads_path;
$fp = fopen($sitemap_path, 'w');
fwrite($fp, $url_sitemap);
fclose($fp);
$fp = fopen($pages_path, 'w');
fwrite($fp, $pages_sitemap);
fclose($fp);
$fp = fopen($ads_path, 'w');
fwrite($fp, $ads_sitemap);
fclose($fp);
}
module.exports = {
apps: [
{
name: "Pallina",
exec_mode: "cluster",
instances: "max", // Or a number of instances
script: "server/index.js",
args: "start",
},
],
};
server {
server_name burdujaserii.ru;
gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_min_length 1000;
root /home/boss/apps/nuxt-pallinagelateria;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1m;
proxy_connect_timeout 1m;
proxy_pass http://localhost:3000; # Ð~_оÑ~@Ñ~B на коÑ~BоÑ~@ом запÑ~CÑ~AкаеÑ~BÑ~AÑ~O node.js пÑ~@иложение
}
listen [::]:443 ssl http2 ipv6only=on; # managed by Certbot
listen 443 ssl http2 ; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/burdujaserii.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/burdujaserii.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
sudo apt install certbot python3-certbot-nginx # Отвечаем 'y'
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
certbot renew --dry-run(certificat will be to 90 days)
When certificat will finish need to tipy in terminal
certbot renew
pm2 start id
pm2 logs
const create = async (req, res) => {
if (!req.headers.authorization) {
return res.status(500).json({ status: "error", message: "token absent" });
} else {
const token = req.headers.authorization.split("Bearer ")[1];
jwt.verify(token, process.env.JWT, async function (err, decoded) {
if (err) {
return res
.status(500)
.json({ status: "error", message: "token invalid" });
} else {
try {
await LocationModel.create(req.body);
res.status(201).json({ status: 1, message: "success" });
} catch (error) {
res.status(500).json({ status: 0, message: error.message });
}
}
});
}
};
this.$axios
.$patch(
process.env.baseUrl + "/api/v1/location/" + this.$route.params.id,
reqData,
{
headers: {
Authorization: this.$auth.$storage._state["_token.local"],
},
}
)
.then(() => {
this.loading = false;
this.$router.push(`/admin/location/?slug=${this.slug}`);
})
.catch((err) => {
if (err.response) {
console.log(
err.response.data.message,
"err.response.data.message"
);
this.$message.error(err.response.data.message);
this.loading = false;
} else if (err.request) {
this.$message.error(err.request);
console.log(err.request, "err.request");
this.loading = false;
}
});
axios: { proxy: true },
proxy: { "/api/": process.env.BASE_URL + "/" },
auth: {
strategies: {
local: {
token: {
property: "token",
global: true
// required: true,
// type: 'Bearer'
},
user: {
property: "user",
autoFetch: false
},
endpoints: {
login: { url: "/api/login", method: "post" },
logout: { url: "/api/auth/logout", method: "post" },
user: { url: "/api/auth/user", method: "get" }
}
}
}
},
const { Router } = require("express");
const router = Router();
const {
login,
register,
user,
logout
} = require("./../controllers/auth.controller");
router.post("/api/login", login);
router.post("/api/auth/register", register);
router.get("/api/auth/user", user);
router.post("/api/auth/logout", logout);
module.exports = router;
const User = require("./../models").User;
const Sequelize = require("sequelize");
const Op = Sequelize.Op;
const bcrypt = require("bcrypt-nodejs");
const jwt = require("jsonwebtoken");
module.exports.login = async (req, res) => {
const login = req.body.login;
const password = req.body.password;
try {
const candidate = await User.findOne({
where: {
login: {
[Op.eq]: login
}
}
});
if (candidate) {
if (bcrypt.compareSync(password, candidate.password)) {
const token = jwt.sign(
{
user: candidate.login,
userId: candidate.id
},
process.env.JWT,
{ expiresIn: "2h" }
);
res
.status(200)
.json({ status: 1, message: "You are logged in", token });
} else {
res.status(200).json({ status: 0, message: "User not found" });
}
} else {
res.status(200).json({ status: 0, message: "User not found" });
}
} catch (error) {
throw error;
return res.status(500).json(error);
}
};
module.exports.register = async (req, res) => {
const { login, password } = req.body.data;
try {
const candidate = await User.findOne({
where: {
login: {
[Op.eq]: login
}
}
});
if (candidate) {
res.status(200).json({ status: 0, message: "User exists" });
} else {
const salt = bcrypt.genSaltSync(10);
await User.create({
login: login,
password: bcrypt.hashSync(password, salt)
});
res.status(200).json({ status: 1, message: "User was created" });
}
} catch (error) {
throw error;
return res.status(500).json(error);
}
};
module.exports.user = async (req, res) => {
const token = req.headers["authorization"];
const newToken = token.replace("Bearer ", "");
if (token) {
jwt.verify(newToken, process.env.JWT, (error, decode) => {
if (error) {
res.status(403).json({ status: 0, message: "invalid token", error });
} else {
res.status(200).json({ status: 1, user: decode.user });
}
});
} else {
res.status(500).json({ status: 0, message: "Please, send a token" });
}
};
module.exports.logout = (req, res) => {
res.status(200).json({ status: 1, message: "You are logged in", token: "" });
};
methods: {
logout() {
this.$auth.logout();
}
}
submitForm() {
this.loading = true;
this.$refs.ruleForm.validate(async valid => {
if (valid) {
try {
const data = {
login: this.ruleForm.login,
password: this.ruleForm.password
};
const response = await this.$auth.loginWith("local", {
data: this.ruleForm
});
this.loading = false;
if (response.data.status === 1) {
this.$message.success(response.data.message);
window.location.href = process.env.baseUrl;
} else {
this.$message.warning(response.data.message);
}
} catch (error) {
this.loading = false;
}
} else {
this.loading = false;
console.log("error submit!!");
return false;
}
});
}
fetch({ store }) {
const result = [];
if (store.getters['home/home'].length === 0) {
result.push(store.dispatch('home/fetchHome'));
}
if (store.getters["solutions/getSolutions"].length === 0) {
result.push(store.dispatch('solutions/fetchSolutions'));
}
if (store.getters["tipo/getTipo"].length === 0) {
result.push(store.dispatch('tipo/fetchTipo'));
}
if (store.getters["portfolio/getPortfolio"].length === 0) {
result.push(store.dispatch('portfolio/fetchPortfolio'));
}
if (store.getters["options/getOptions"].length === 0) {
result.push(store.dispatch('options/fetchOptions'));
}
return Promise.all(result)
.then((data) => console.log(data))
.catch((error) => console.log(error));
},
async fetch({ store }) {
try {
if (store.getters['home/home'].length === 0) {
await store.dispatch('home/fetchHome');
}
if (store.getters["solutions/getSolutions"].length === 0) {
await store.dispatch('solutions/fetchSolutions');
}
if (store.getters["tipo/getTipo"].length === 0) {
await store.dispatch('tipo/fetchTipo');
}
} catch (e) {
console.log(e, 'e')
}
public function checkIfTableExist()
{
global $wpdb;
$table_name = $wpdb->prefix . "google_analitycs_table";
if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") === $table_name) {
return true;
}
return false;
}
if ($googleAnalyticsPlugin->checkIfTableExist()) {
$googleAnalyticsPlugin->register();
}
if ($('html').attr('lang') === 'it-IT') {
$.datepicker.setDefaults(
$.extend(
{'dateFormat': 'dd-mm-yy'},
$.datepicker.regional['it']
)
);
} else {
$.datepicker.setDefaults(
$.extend(
{'dateFormat': 'dd-mm-yy'},
$.datepicker.regional['en']
)
);
}
$('.datepicker-class').datepicker({
minDate: 0,
altField: "#your-date",
beforeShowDay: $.datepicker.noWeekends,
})