Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.2 KiB
124 lines
3.2 KiB
const path = require('path'); |
|
const HtmlWebpackPlugin = require('html-webpack-plugin'); |
|
|
|
let allowedIPs = ['195.66.140.39', '192.168.31.144', '127.0.0.1', '192.168.31.1', '192.168.31.192']; |
|
|
|
module.exports = { |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.s[ac]ss$/i, |
|
use: [ |
|
// Creates `style` nodes from JS strings |
|
'style-loader', |
|
// Translates CSS into CommonJS |
|
'css-loader', |
|
// Compiles Sass to CSS |
|
{ |
|
loader: 'resolve-url-loader' |
|
}, |
|
{ |
|
loader: 'sass-loader', |
|
options: { |
|
sourceMap: true |
|
} |
|
}, |
|
], |
|
}, |
|
{ |
|
test: /\.css$/i, |
|
use: ['style-loader', 'css-loader'], |
|
}, |
|
{ |
|
test: /\.ts?$/, |
|
use: 'ts-loader', |
|
exclude: /node_modules/, |
|
}, |
|
{ |
|
test: /\.(woff2?|ttf|otf|eot|svg|jpg)$/, |
|
exclude: /node_modules/, |
|
loader: 'file-loader', |
|
options: { |
|
outputPath: 'assets/', |
|
publicPath: 'assets/', |
|
name: '[folder]/[name].[ext]' |
|
} |
|
}, |
|
{ |
|
test: /\.worker\.(js|ts)$/, |
|
use: { loader: 'worker-loader' } |
|
}, |
|
], |
|
}, |
|
resolve: { |
|
extensions: [ '.ts', '.js' ], |
|
}, |
|
//entry: './src/index.ts', |
|
entry: { |
|
index: './src/index.ts', |
|
webp: './src/lib/webp.ts', |
|
lottie: './src/lib/lottie.ts' |
|
}, |
|
/* entry: { |
|
index: './src/index.ts', |
|
'lottie-web': ['lottie-web'] |
|
//lottieLoader: './src/lib/lottieLoader.ts' |
|
}, */ |
|
//devtool: 'inline-source-map', |
|
output: { |
|
path: path.resolve(__dirname, 'public'), |
|
//filename: 'bundle.js', |
|
filename: "[name].bundle.js", |
|
chunkFilename: "[name].chunk.js" |
|
}, |
|
devServer: { |
|
contentBase: path.join(__dirname, 'public'), |
|
watchContentBase: true, |
|
compress: true, |
|
http2: true, |
|
host: '0.0.0.0', |
|
port: 9000, |
|
overlay: true, |
|
useLocalIp: true, |
|
before: function(app, server, compiler) { |
|
app.use((req, res, next) => { |
|
let IP = ''; |
|
if(req.headers['cf-connecting-ip']) { |
|
IP = req.headers['cf-connecting-ip']; |
|
} else { |
|
IP = req.connection.remoteAddress.split(':').pop(); |
|
} |
|
|
|
if(!allowedIPs.includes(IP)) { |
|
console.log('Bad IP connecting: ' + IP, req.url); |
|
res.status(404).send('Nothing interesting here.'); |
|
} else { |
|
console.log(req.url, IP); |
|
next(); |
|
} |
|
}); |
|
} |
|
}, |
|
|
|
plugins: [ |
|
new HtmlWebpackPlugin({ |
|
filename: `index.html`, |
|
template: 'public/index_template.html', |
|
inject: true, |
|
/* minify: { |
|
removeComments: true, |
|
collapseWhitespace: true, |
|
removeRedundantAttributes: true, |
|
useShortDoctype: true, |
|
removeEmptyAttributes: true, |
|
removeStyleLinkTypeAttributes: true, |
|
keepClosingSlash: true, |
|
minifyJS: true, |
|
minifyCSS: true, |
|
minifyURLs: true |
|
}, */ |
|
chunks: "all", |
|
excludeChunks: ['npm.webp-hero', 'npm.lottie-web'] |
|
}) |
|
], |
|
};
|
|
|