TRÊN PC
Cài đặt máy chủ SSH
mở port máy chủ từ xa bao gồm http và ssh
ví dụ mở port xxxx cho ssh và xxxx cho http
---------------------------------------------
Kiểm tra file cấu hình SSH trên máy chủ đích (/etc/ssh/sshd_config) và đảm bảo các dòng sau có giá trị đúng:
AllowTcpForwarding yes
GatewayPorts yes
---------------------------------------------
Kiểm tra file /etc/ssh/sshd_config và đảm bảo không có dòng nào chặn quyền TCP Forwarding
Match User sv02
AllowTcpForwarding yes
---------------------------------------------
SSH bị giới hạn số kết nối hoặc timeout
Kiểm tra file /etc/ssh/sshd_config trên máy chủ từ xa, tìm và sửa:
MaxSessions 10
ClientAliveInterval 60
ClientAliveCountMax 5
---------------------------------------------
Kiểm tra xem cổng
sudo netstat -tulnp (kt tất cả)
sudo netstat -tulnp | grep 0000 (cổng cụ thể)
---------------------------------------------
sudo systemctl restart ssh
---------------------------------------------
tạo cron job kiểm tra tiến trình lắng nghe trên các cổng . . .
---------------------------------------------
*/1 * * * * (ss -tulnp | grep -E '8080|8180|8280|8380|8480|8580|8680|8780|8880|8810|8820|8830' || systemctl restart autossh)
---------------------------------------------
TRÊN ROUTER
---------------------------------------------
Thay đổi cổng ETH0
nano /etc/config/network
config interface 'lan'
option proto 'static'
option ipaddr '192.168.100.1'
option netmask '255.255.255.0'
option device 'eth0'
option ifname 'eth0'
option metric '9999'
option ipv6 '0'
option delegate '0'
option addlatency '0'
option txqueuelen '2000'
option multipath 'off'
option ip4table 'lan'
option defaultroute '0'
option peerdns '0'
---------------------------------------------
Cài SSH thay dropbear
opkg update --no-check-certificate && \
opkg install openssh-client openssh-keygen autossh sshpass --no-check-certificate && \
opkg remove dropbear || true && \
opkg install openssh-server --no-check-certificate && \
/etc/init.d/sshd enable && \
/etc/init.d/sshd start && \
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
/etc/init.d/sshd restart
---------------------------------------------
Tạo khóa SSH
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_ssh_tunnel
---------------------------------------------
Sao chép khóa SSH tự động
cat ~/.ssh/id_rsa_ssh_tunnel.pub | ssh -p 2552 sv02@27.74.246.165 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
---------------------------------------------
Sao chép khóa SSH thủ công
cat ~/.ssh/id_rsa_ssh_tunnel.pub
---------------------------------------------
Dán vào authorized_keys trên server SSH (trên máy chủ ssh)
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
---------------------------------------------
Phân quyền đúng cho thư mục SSH
chmod 700 ~/.ssh (trên máy chủ ssh)
chmod 600 ~/.ssh/authorized_keys
---------------------------------------------
Kiểm tra kết nối không cần mật khẩu (trên router)
ssh -i ~/.ssh/id_rsa_ssh_tunnel -p 2552 sv02@27.74.246.165
---------------------------------------------
xem log tail -f /var/log/ssh_tunnel.log
---------------------------------------------
thay banner + thay chữ footer
cd /etc && rm -f banner && wget -O banner https://cloud.trungdungmedia.com/index.php/s/GcnZP6HZGqsA7es/download/banner && \
rm -rf /usr/lib/lua/luci/view/themes/argon/footer.htm && rm -rf /usr/lib/lua/luci/view/themes/argon/footer_login.htm && wget --no-check-certificate -O /usr/lib/lua/luci/view/themes/argon/footer.htm https://cloud.trungdungmedia.com/index.php/s/WtD4ykZi84rnw47/download/footer.htm && wget --no-check-certificate -O /usr/lib/lua/luci/view/themes/argon/footer_login.htm https://cloud.trungdungmedia.com/index.php/s/7AMP7Xy7e4daMcs/download/footer_login.htm
=============================================
kiểm tra mạng
=============================================
---------------------------------------------
opkg remove bmon && wget --no-check-certificate https://cloud.trungdungmedia.com/index.php/s/bp5GYkTRQZoEwS4/download/bmon_4.0-r1_x86_64.ipk -P /tmp && opkg install /tmp/bmon_4.0-r1_x86_64.ipk && rm /tmp/bmon_4.0-r1_x86_64.ipk
---------------------------------------------
opkg update
opkg install python3 python3-pip
pip3 install speedtest-cli
cd /bin && nano kiemtratocdomang
dán vào speedtest-cli
=============================================
https://cloud.trungdungmedia.com/index.php/s/grziXQaHjrTMynZ/download/ktra_bonding.EXE
---------------------------------------------
* * * * * dùng iexpress chuyển .cmd thành .exe * * * * *
---------------------------------------------
Nhấn Win + R, gõ: iexpress
---------------------------------------------
/etc/init.d/uhttpd restart
---------------------------------------------
tạo file dịch vụ init.d
nano /etc/init.d/ssh_tunnel
---------------------------------------------
#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
# Hàm kiểm tra kết nối Internet (ping Google)
check_network() {
for i in $(seq 1 12); do # Thử kiểm tra mạng 12 lần (mỗi 10 giây, tối đa 2 phút)
if ping -c 1 -W 2 8.8.8.8 >/dev/null 2>&1; then
echo "[INFO] Mạng đã kết nối, bắt đầu SSH Tunnel..."
return 0
fi
echo "[WARNING] Chưa có mạng, thử lại lần $i..."
sleep 10
done
echo "[ERROR] Không có mạng sau 2 phút, hủy khởi động SSH Tunnel!"
return 1
}
start_service() {
check_network || exit 1 # Nếu không có mạng, thoát
procd_open_instance
procd_set_param command /bin/sh -c "while true; do ssh -i /root/.ssh/id_rsa_ssh_tunnel -o 'StrictHostKeyChecking=accept-new' -N -R 0.0.0.0:8080:192.168.23.3:80 -p 2552 sv02@27.74.246.165; echo '[WARNING] SSH Tunnel bị mất, đang kết nối lại...'; sleep 5; done"
procd_set_param respawn
procd_close_instance
}
stop_service() {
echo "[INFO] Dừng SSH Tunnel..."
killall -9 ssh
}
-------------------------------------------------------
chmod +x /etc/init.d/ssh_tunnel
/etc/init.d/ssh_tunnel enable
/etc/init.d/ssh_tunnel start
-------------------------------------------------------
thông báo trên Webhooks discord
-------------------------------------------------------
ubus list | grep network.interface (kiểm tra tên wan)
-------------------------------------------------------
tạo file nano /etc/hotplug.d/iface/99-discord hoặc copy dòng lệnh tại file
-------------------------------------------------------
cd /etc/hotplug.d/iface && wget --no-check-certificate https://cloud.trungdungmedia.com/index.php/s/BFbjoz5BFze4wBp/download/99-discord -O 99-discord && chmod +x 99-discord
-------------------------------------------------------
thêm vào nội dung
-------------------------------------------------------
#!/bin/sh
WEBHOOK_URL="------------------------------"
# Lấy danh sách interface WAN từ ubus
WAN_IFACES=$(ubus call network.interface dump | jq -r '.interface[] | select(.proto=="dhcp") | .interface')
TIMESTAMP=$(date "+%d-%m-%Y %H:%M:%S")
echo "INTERFACE=$INTERFACE ACTION=$ACTION" >> /tmp/debug_hotplug.log
# Nếu INTERFACE không rỗng và nằm trong danh sách WAN_IFACES thì gửi webhook
if echo "$WAN_IFACES" | grep -qw "$INTERFACE"; then
if [ "$ACTION" = "ifup" ]; then
curl -k -H "Content-Type: application/json" -X POST -d "{\"content\": \"✅ **$INTERFACE** đã kết nối! 🟢 [$TIMESTAMP]\"}" "$WEBHOOK_URL"
elif [ "$ACTION" = "ifdown" ]; then
curl -k -H "Content-Type: application/json" -X POST -d "{\"content\": \"⚠️ **$INTERFACE** đã mất kết nối! 🔴 [$TIMESTAMP]\"}" "$WEBHOOK_URL"
fi
fi
-------------------------------------------------------
chmod +x /etc/hotplug.d/iface/99-discord
-------------------------------------------------------
Thông báo data
cd / && mkdir thongbao && cd /thongbao && nano /thongbao/tb_data_su_dung.sh
-------------------------------------------------------
#!/bin/sh
WEBHOOK_URL="URL Webhooks"
WAN_IFACES="eth0 eth1 eth2 eth3 eth4 eth5 eth6 usb0"
TMP_DIR="/tmp/net_stats"
mkdir -p $TMP_DIR
while true; do
TIMESTAMP=$(date "+%d-%m-%Y %H:%M:%S")
echo "=== [$TIMESTAMP] Kiểm tra dữ liệu ==="
for INTERFACE in $WAN_IFACES; do
LINK_FILE="$TMP_DIR/${INTERFACE}_link"
if [ -d "/sys/class/net/$INTERFACE" ]; then
# Kiểm tra trạng thái kết nối của interface
if cat /sys/class/net/$INTERFACE/operstate | grep -q "up"; then
STATUS="connected"
else
STATUS="disconnected"
fi
# Kiểm tra trạng thái trước đó để gửi thông báo nếu có thay đổi
if [ -f "$LINK_FILE" ]; then
PREV_STATUS=$(cat "$LINK_FILE")
if [ "$PREV_STATUS" != "$STATUS" ]; then
if [ "$STATUS" = "connected" ]; then
MESSAGE="✅ **[$TIMESTAMP] Interface $INTERFACE đã được kết nối lại!**"
else
MESSAGE="❌ **[$TIMESTAMP] CẢNH BÁO: Interface $INTERFACE đã bị ngắt kết nối!**"
fi
curl -k -H "Content-Type: application/json" -X POST -d "{\"content\": \"$MESSAGE\"}" "$WEBHOOK_URL"
fi
fi
echo "$STATUS" > "$LINK_FILE"
# Đọc số byte đã truyền và nhận
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_FILE="$TMP_DIR/${INTERFACE}_tx"
RX_FILE="$TMP_DIR/${INTERFACE}_rx"
TOTAL_TX_FILE="$TMP_DIR/${INTERFACE}_total_tx"
TOTAL_RX_FILE="$TMP_DIR/${INTERFACE}_total_rx"
# Khởi tạo file nếu chưa tồn tại
if [ ! -f "$TOTAL_TX_FILE" ]; then echo 0 > "$TOTAL_TX_FILE"; fi
if [ ! -f "$TOTAL_RX_FILE" ]; then echo 0 > "$TOTAL_RX_FILE"; fi
if [ -f "$TX_FILE" ] && [ -f "$RX_FILE" ]; then
TX_PREV=$(cat "$TX_FILE")
RX_PREV=$(cat "$RX_FILE")
TX_DIFF=$((TX_BYTES - TX_PREV))
RX_DIFF=$((RX_BYTES - RX_PREV))
# Đọc tổng dữ liệu trước đó
PREV_TOTAL_TX=$(cat "$TOTAL_TX_FILE")
PREV_TOTAL_RX=$(cat "$TOTAL_RX_FILE")
# Cộng dồn dữ liệu
TOTAL_TX=$((PREV_TOTAL_TX + TX_DIFF))
TOTAL_RX=$((PREV_TOTAL_RX + RX_DIFF))
# Lưu tổng dữ liệu mới
echo "$TOTAL_TX" > "$TOTAL_TX_FILE"
echo "$TOTAL_RX" > "$TOTAL_RX_FILE"
TX_GB=$(awk "BEGIN {printf \"%.2f\", $TOTAL_TX/1024/1024/1024}")
RX_GB=$(awk "BEGIN {printf \"%.2f\", $TOTAL_RX/1024/1024/1024}")
MESSAGE="━━━━━━━━━━━━━━━━━━━━━\n📡 **[$TIMESTAMP] Interface: $INTERFACE**\n⬆️ **Upload:** ${TX_GB}GB\n⬇ **Download:** ${RX_GB}GB\n━━━━━━━━━━━━━━━━━━━━━"
# Cảnh báo nếu dữ liệu vượt ngưỡng 4GB
if [ "$(echo "$TX_GB >= 4.0" | bc)" -eq 1 ] || [ "$(echo "$RX_GB >= 4.0" | bc)" -eq 1 ]; then
MESSAGE="🚨 **CẢNH BÁO: $INTERFACE vượt 4GB!**\n$MESSAGE"
fi
# Gửi thông báo cho từng interface
curl -k -H "Content-Type: application/json" -X POST -d "{\"content\": \"$MESSAGE\"}" "$WEBHOOK_URL"
fi
echo $TX_BYTES > "$TX_FILE"
echo $RX_BYTES > "$RX_FILE"
else
echo "❌ Interface $INTERFACE không tồn tại!"
fi
done
sleep 300
done
-------------------------------------------------------
chmod +x /thongbao/tb_data_su_dung.sh
-------------------------------------------------------
chỉnh file functions.php để thêm vào kiểm tra cổng trên web
/**thông báo port ------------------------------------- */
/**
* Hàm kiểm tra trạng thái của một cổng
* @param int $port Số cổng cần kiểm tra
* @return string Trạng thái server
*/
function check_server_status($port) {
$ip = "27.74.246.165";
$connection = @fsockopen($ip, $port, $errno, $errstr, 2);
if ($connection) {
fclose($connection);
return "<span style='color: green;'>✅ ♻️ Server đang hoạt động 🚀</span>";
} else {
return "<span style='color: red;'>❌ 🌐 Server đã tắt</span>";
}
}
// Danh sách các cổng cần kiểm tra
$ports = [1935, 1950, 1945, 8480, 8580, 8180, 8080, 8810, 8820, 8880, 8780, 8680, 8380, 8830, 8810, 8820, 8830];
// Đăng ký shortcode động cho từng cổng
foreach ($ports as $port) {
add_shortcode("server_$port", function() use ($port) {
return check_server_status($port);
});
}
/** Kích hoạt shortcode trong widget */
add_filter('widget_text_content', 'do_shortcode');
/** dùng shortcode trong bài viết
[server_1935] <!-- Kiểm tra server cổng 1935 -->
[server_8480] <!-- Kiểm tra server cổng 8480 -->
[server_8830] <!-- Kiểm tra server cổng 8830 -->
/** tự động xử lý shortcode trong widget HTML*/
add_filter('widget_text', 'do_shortcode');
/** Sử dụng shortcode [countdown_reload] trong bài viết hoặc widget để hiển thị bộ đếm ngược. */
function countdown_reload_shortcode() {
ob_start();
?>
<style>
.countdown-box {
background: red;
color: white;
padding: 5px 10px;
border-radius: 5px;
font-weight: bold;
display: inline-block;
}
</style>
<h7 class="countdown-box"><span id="countdown">60</span> giây</h7>
<script>
document.addEventListener("DOMContentLoaded", function() {
let timeLeft = 60;
let countdownElement = document.getElementById("countdown");
let countdownInterval = setInterval(() => {
countdownElement.textContent = --timeLeft;
if (timeLeft <= 0) {
clearInterval(countdownInterval);
location.reload(); // Reload lại trang
}
}, 1000);
});
</script>
<?php
return ob_get_clean();
}
// Đăng ký shortcode [countdown_reload]
add_shortcode('countdown_reload', 'countdown_reload_shortcode');
/** chèn shortcode sau vào bài viết:
* [countdown_reload] */
------------------------------------------------
thêm server rtmp
opkg update && opkg install unzip && cd / && wget -O rtmp.zip "https://cloud.trungdungmedia.com/index.php/s/rJENQD8Z8ktp5Tk/download" && unzip rtmp.zip && rm -rf rtmp.zip && cd /rtmp && chmod +x rtmp
------------------------------------------------
Kiểm tra tốc độ lan
ethtool eth0 | grep Speed
cài bmon đo bonding mạng
=============================================
tạo file kiemtrabonding với nội dung
=============================================
tải về
cd /bin && opkg update --no-check-certificate && wget --no-check-certificate -O kiemtrabonding "https://cloud.trungdungmedia.com/index.php/s/3SJrYykHQ8CZkF2/download/kiemtrabonding" && chmod +x kiemtrabonding && cd /root
---------------------------------------------
bmon "$@" -b -p eth1,eth2,eth3,eth4,eth5,eth6
---------------------------------------------
=============================================
chuyển tiếp srt khi dùng app sony
---------------------------------------------
#!/bin/bash
cd /rtmp
while true; do
./ffmpeg -re -i "srt://0.0.0.0:8110?mode=listener&listen_timeout=-1" \
-c:v copy -c:a copy -f mpegts \
"srt://127.0.0.1:8890?streamid=publish:01"
sleep 2
done
---------------------------------------------
tải ffmpeg nhị phân cho router
cd /rtmp && wget --no-check-certificate -O ffmpeg "https://cloud.trungdungmedia.com/index.php/s/kAKEA2qocfJgksy/download/ffmpeg" && chmod +x ffmpeg
=============================================
tạo file kiểm tra kết nối modem và đo tốc độ upload + download
tải về
---------------------------------------------cd /bin && opkg update --no-check-certificate
&&wget --no-check-certificate -O kiemtrabogopsim "https://cloud.trungdungmedia.com/index.php/s/2rXF9KTHLNRdTaq/download/kiemtramodem" && chmod +x kiemtrabogopsim && cd /root
---------------------------------------------
nano /bin/kiemtrabogopsim
#!/bin/bash
HOST_DL="http://27.74.246.165/download.php"
HOST_UL="http://27.74.246.165/upload.php"
DOMAIN=$(echo "$HOST_DL" | awk -F/ '{print $3}')
echo "Danh sách giao diện sẽ kiểm tra:"
ls /sys/class/net/ | grep -E '^eth[0-9]+$|^usb0$' | grep -v '^eth0$'
echo
for iface in $(ls /sys/class/net/ | grep -E '^eth[0-9]+$|^usb0$' | grep -v '^eth0$'); do
echo "========================================"
echo "Giao diện: $iface"
echo "----------------------------------------"
# Kiểm tra ping
ping_ms=$(ping -4 -I "$iface" -c 1 -w 2 "$DOMAIN" 2>/dev/null | awk -F'/' '/^rtt/ {print int($5)" ms"}')
if [ -z "$ping_ms" ]; then
echo "[PING] Không thể kết nối"
echo "[TẢI XUỐNG] Bỏ qua (không có kết nối)"
echo "[TẢI LÊN] Bỏ qua (không có kết nối)"
else
echo "[PING] $ping_ms"
# Kiểm tra tải xuống
dl_speed=$(curl -4 --interface "$iface" --max-time 5 -o /dev/null -s -w '%{speed_download}' "$HOST_DL")
dl_mbps=$(echo "$dl_speed" | awk '{printf "%.2f", ($1 * 8 / 1000000)}')
echo "[TẢI XUỐNG] Tốc độ: $dl_mbps Mbps"
# Kiểm tra tải lên
TMP_FILE=$(mktemp /tmp/upload_test.XXXXXX)
head -c 1048576 </dev/zero > "$TMP_FILE"
ul_speed=$(curl -4 --interface "$iface" --max-time 5 -s -o /dev/null -X POST -w '%{speed_upload}' \
--data-binary @"$TMP_FILE" "$HOST_UL")
rm "$TMP_FILE"
ul_mbps=$(echo "$ul_speed" | awk '{printf "%.2f", ($1 * 8 / 1000000)}')
echo "[TẢI LÊN] Tốc độ: $ul_mbps Mbps"
fi
echo "========================================"
echo
done
---------------------------------------------
tạo file kiểm tra đo tốc độ upload + download trên máy chủ
---------------------------------------------
nano var/www/htmp/download.php
<?php
// Kích thước dữ liệu giả (1GB)
$size = 1024 * 1024 * 1024; // 1GB
// Header đơn giản không gợi ý lưu file
header('Content-Type: application/octet-stream');
header('Content-Length: ' . $size);
// Làm sạch bộ đệm trước khi bắt đầu gửi
ob_clean();
flush();
$chunk_size = 8192; // 8KB
$sent = 0;
// Gửi dữ liệu giả cho đến khi đạt 1GB
while ($sent < $size) {
echo str_repeat("A", $chunk_size);
$sent += $chunk_size;
flush();
// usleep(100); // Bỏ nếu muốn max tốc độ
}
exit;
?>
---------------------------------------------
nano var/www/htmp/upload.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Đọc toàn bộ dữ liệu để đảm bảo upload thực sự xảy ra
while (!feof(STDIN)) {
fread(STDIN, 8192);
}
echo "Upload successful!";
} else {
echo "No data received!";
}
?>
---------------------------------------------
định dạng ổ cứng và cài trang web uhttpd
-----------------------------------------
opkg update && \
opkg install uhttpd && \
opkg install lsblk && \
opkg install fdisk
-----------------------------------------
lsblk
fdisk /dev/sda
mkfs.ext4 /dev/sda3
-----------------------------------------
mount /dev/sda3 /mnt && \
mkdir -p /mnt/sda3/data && \
ln -s /mnt/sda3/data /www/data && \
/etc/init.d/uhttpd restart
-----------------------------------------
cd /mnt/sda3/data && /
wget --no-check-certificate -O index.html https://cloud.trungdungmedia.com/index.php/s/gXLXRDc7cLi8Cxp/download/index.html && \
wget --no-check-certificate -O nhac.html https://cloud.trungdungmedia.com/index.php/s/jsNPpd7Po7gmFJB/download/nhac.html && \
wget --no-check-certificate -O video.html https://cloud.trungdungmedia.com/index.php/s/fyGW7DwKF9mTDfP/download/video.html
-----------------------------------------
mkdir nhac && cd nhac && \
wget --no-check-certificate -O nhac_don_khach.zip "https://cloud.trungdungmedia.com/index.php/s/HjnmkxanGNJJCBJ/download" && unzip nhac_don_khach.zip && rm -rf nhac_don_khach.zip
-----------------------------------------
Tạo liên kết (symlink)
ln -s /mnt/sda3/data/nhac /www/nhac
nano /etc/config/uhttpd
option follow_symlinks '1'
/etc/init.d/uhttpd restart
-----------------------------------------
ls -l /www/data (kiểm tra)
rm -rf /www/data (xóa thư mục data)
-----------------------------------------
tạo trang index.html
-----------------------------------------
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Danh sách nội dung</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f9f9f9;
color: #333;
margin: 20px;
padding: 0;
}
h1 {
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 8px;
margin-top: 40px;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin: 12px 0;
}
a {
text-decoration: none;
color: #2980b9;
font-size: 18px;
transition: color 0.3s;
}
a:hover {
color: #e74c3c;
}
.container {
max-width: 800px;
margin: auto;
padding: 20px;
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body>
<div class="container">
<h1>🎵 Danh sách nhạc</h1>
<ul>
<li><a href="nhac_don_khach.html">Nhạc đón khách</a></li>
</ul>
<h1>🎬 Danh sách hiệu ứng video</h1>
<ul>
<li><a href="video_nen.html">Video nền</a></li>
<!-- Thêm các link video khác tại đây -->
</ul>
</div>
</body>
</html>
-----------------------------------------
tạo trang nhac_don_khach.html
-----------------------------------------
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Danh sách bài hát</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f9f9f9;
}
.breadcrumb {
font-size: 14px;
margin-bottom: 20px;
}
.breadcrumb a {
color: #3498db;
text-decoration: none;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.back-button {
display: inline-block;
margin-bottom: 20px;
padding: 10px 20px;
background-color: #3498db;
color: white;
border-radius: 5px;
text-decoration: none;
font-size: 16px;
}
.back-button:hover {
background-color: #2980b9;
}
h1 {
color: #2c3e50;
margin-bottom: 20px;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin-bottom: 15px;
}
a {
text-decoration: none;
color: #007BFF;
font-size: 18px;
margin-right: 10px;
}
a:hover {
text-decoration: underline;
}
audio {
margin-top: 20px;
width: 100%;
outline: none;
}
.icon {
margin-right: 8px;
}
ul {
list-style-type: none;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
li {
margin: 0;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
}
</style>
</head>
<body>
<a href="http://bogopsim.4g/data/" class="back-button">⬅️ Quay về Trang Chính</a>
<div class="breadcrumb">
<a href="http://bogopsim.4g/data/">Trang chính</a> » <span>Danh sách bài hát</span>
</div>
<h1>🎵 Danh sách bài hát</h1>
<ul>
<!-- Danh sách video từ 01 đến 50 -->
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/1.mp3" onclick="playAudio(this.href); return false;">01</a>
<a href="/data/nhac/nhac_don_khach/1.mp3" download>⬇️ Tải về</a> |
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/2.mp3" onclick="playAudio(this.href); return false;">02</a>
<a href="/data/nhac/nhac_don_khach/2.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/3.mp3" onclick="playAudio(this.href); return false;">03</a>
<a href="/data/nhac/nhac_don_khach/3.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/4.mp3" onclick="playAudio(this.href); return false;">04</a>
<a href="/data/nhac/nhac_don_khach/4.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/5.mp3" onclick="playAudio(this.href); return false;">04</a>
<a href="/data/nhac/nhac_don_khach/5.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/6.mp3" onclick="playAudio(this.href); return false;">06</a>
<a href="/data/nhac/nhac_don_khach/6.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/7.mp3" onclick="playAudio(this.href); return false;">07</a>
<a href="/data/nhac/nhac_don_khach/7.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/8.mp3" onclick="playAudio(this.href); return false;">08</a>
<a href="/data/nhac/nhac_don_khach/8.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/9.mp3" onclick="playAudio(this.href); return false;">09</a>
<a href="/data/nhac/nhac_don_khach/9.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/10.mp3" onclick="playAudio(this.href); return false;">10</a>
<a href="/data/nhac/nhac_don_khach/10.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/11.mp3" onclick="playAudio(this.href); return false;">11</a>
<a href="/data/nhac/nhac_don_khach/11.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/12.mp3" onclick="playAudio(this.href); return false;">12</a>
<a href="/data/nhac/nhac_don_khach/12.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/13.mp3" onclick="playAudio(this.href); return false;">13</a>
<a href="/data/nhac/nhac_don_khach/13.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/14.mp3" onclick="playAudio(this.href); return false;">14</a>
<a href="/data/nhac/nhac_don_khach/14.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/15.mp3" onclick="playAudio(this.href); return false;">15</a>
<a href="/data/nhac/nhac_don_khach/15.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/16.mp3" onclick="playAudio(this.href); return false;">16</a>
<a href="/data/nhac/nhac_don_khach/16.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/17.mp3" onclick="playAudio(this.href); return false;">17</a>
<a href="/data/nhac/nhac_don_khach/17.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/18.mp3" onclick="playAudio(this.href); return false;">18</a>
<a href="/data/nhac/nhac_don_khach/18.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/19.mp3" onclick="playAudio(this.href); return false;">19</a>
<a href="/data/nhac/nhac_don_khach/19.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/20.mp3" onclick="playAudio(this.href); return false;">20</a>
<a href="/data/nhac/nhac_don_khach/20.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/21.mp3" onclick="playAudio(this.href); return false;">21</a>
<a href="/data/nhac/nhac_don_khach/21.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/22.mp3" onclick="playAudio(this.href); return false;">22</a>
<a href="/data/nhac/nhac_don_khach/22.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/23.mp3" onclick="playAudio(this.href); return false;">23</a>
<a href="/data/nhac/nhac_don_khach/23.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/24.mp3" onclick="playAudio(this.href); return false;">24</a>
<a href="/data/nhac/nhac_don_khach/24.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/25.mp3" onclick="playAudio(this.href); return false;">25</a>
<a href="/data/nhac/nhac_don_khach/25.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/26.mp3" onclick="playAudio(this.href); return false;">26</a>
<a href="/data/nhac/nhac_don_khach/26.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/27.mp3" onclick="playAudio(this.href); return false;">27</a>
<a href="/data/nhac/nhac_don_khach/27.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/28.mp3" onclick="playAudio(this.href); return false;">28</a>
<a href="/data/nhac/nhac_don_khach/28.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/29.mp3" onclick="playAudio(this.href); return false;">29</a>
<a href="/data/nhac/nhac_don_khach/29.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/30.mp3" onclick="playAudio(this.href); return false;">30</a>
<a href="/data/nhac/nhac_don_khach/30.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/31.mp3" onclick="playAudio(this.href); return false;">31</a>
<a href="/data/nhac/nhac_don_khach/31.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/32.mp3" onclick="playAudio(this.href); return false;">32</a>
<a href="/data/nhac/nhac_don_khach/32.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/33.mp3" onclick="playAudio(this.href); return false;">33</a>
<a href="/data/nhac/nhac_don_khach/33.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/34.mp3" onclick="playAudio(this.href); return false;">34</a>
<a href="/data/nhac/nhac_don_khach/34.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/35.mp3" onclick="playAudio(this.href); return false;">35</a>
<a href="/data/nhac/nhac_don_khach/35.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/36.mp3" onclick="playAudio(this.href); return false;">36</a>
<a href="/data/nhac/nhac_don_khach/36.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/37.mp3" onclick="playAudio(this.href); return false;">37</a>
<a href="/data/nhac/nhac_don_khach/37.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/38.mp3" onclick="playAudio(this.href); return false;">38</a>
<a href="/data/nhac/nhac_don_khach/38.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/39.mp3" onclick="playAudio(this.href); return false;">39</a>
<a href="/data/nhac/nhac_don_khach/39.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/40.mp3" onclick="playAudio(this.href); return false;">40</a>
<a href="/data/nhac/nhac_don_khach/40.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/41.mp3" onclick="playAudio(this.href); return false;">41</a>
<a href="/data/nhac/nhac_don_khach/41.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/42.mp3" onclick="playAudio(this.href); return false;">42</a>
<a href="/data/nhac/nhac_don_khach/42.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/43.mp3" onclick="playAudio(this.href); return false;">43</a>
<a href="/data/nhac/nhac_don_khach/43.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/44.mp3" onclick="playAudio(this.href); return false;">44</a>
<a href="/data/nhac/nhac_don_khach/44.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/45.mp3" onclick="playAudio(this.href); return false;">45</a>
<a href="/data/nhac/nhac_don_khach/45.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/46.mp3" onclick="playAudio(this.href); return false;">46</a>
<a href="/data/nhac/nhac_don_khach/46.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/47.mp3" onclick="playAudio(this.href); return false;">47</a>
<a href="/data/nhac/nhac_don_khach/47.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/48.mp3" onclick="playAudio(this.href); return false;">48</a>
<a href="/data/nhac/nhac_don_khach/48.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/49.mp3" onclick="playAudio(this.href); return false;">49</a>
<a href="/data/nhac/nhac_don_khach/49.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
<li>
🎶 <a href="/data/nhac/nhac_don_khach/50.mp3" onclick="playAudio(this.href); return false;">50</a>
<a href="/data/nhac/nhac_don_khach/50.mp3" download>⬇️ Tải về</a> | </li>
<!-- ###########################################################################################-->
</ul>
<audio id="audioPlayer" controls>
Trình duyệt của bạn không hỗ trợ trình phát âm thanh.
</audio>
<script>
function playAudio(url) {
var player = document.getElementById('audioPlayer');
player.src = url;
player.play();
}
</script>
</body>
</html>
=========================================
tạo trang video.html
-----------------------------------------
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Danh sách video</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f9f9f9;
}
.breadcrumb {
font-size: 14px;
margin-bottom: 20px;
}
.breadcrumb a {
color: #3498db;
text-decoration: none;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.back-button {
display: inline-block;
margin-bottom: 20px;
padding: 10px 20px;
background-color: #3498db;
color: white;
border-radius: 5px;
text-decoration: none;
font-size: 16px;
}
.back-button:hover {
background-color: #2980b9;
}
h1 {
color: #2c3e50;
margin-bottom: 20px;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin-bottom: 15px;
}
a {
text-decoration: none;
color: #007BFF;
font-size: 18px;
margin-right: 10px;
}
a:hover {
text-decoration: underline;
}
video {
width: 100%;
margin-top: 20px;
outline: none;
}
ul {
list-style-type: none;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 12px;
}
li {
margin: 0;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
}
</style>
</head>
<body>
<a href="http://bogopsim.4g/data/" class="back-button">⬅️ Quay về Trang Chính</a>
<div class="breadcrumb">
<a href="http://bogopsim.4g/data/">Trang chính</a> » <span>Danh sách video</span>
</div>
<h1>🎬 Danh sách video</h1>
<ul>
<li>
<!-- Danh sách video từ 01 đến 50 -->
<!-- ########################################################-->
<a href="#" onclick="playVideo('/data/video/1.mp4');return false;">Xem video 01</a><a href="/data/video/1.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/2.mp4');return false;">Xem video 02</a><a href="/data/video/2.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/3.mp4');return false;">Xem video 03</a><a href="/data/video/3.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/4.mp4');return false;">Xem video 04</a><a href="/data/video/4.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/5.mp4');return false;">Xem video 05</a><a href="/data/video/5.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/6.mp4');return false;">Xem video 06</a><a href="/data/video/6.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/7.mp4');return false;">Xem video 07</a><a href="/data/video/7.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/8.mp4');return false;">Xem video 08</a><a href="/data/video/8.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/9.mp4');return false;">Xem video 09</a><a href="/data/video/9.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/10.mp4');return false;">Xem video 10</a><a href="/data/video/10.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/11.mp4');return false;">Xem video 11</a><a href="/data/video/11.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/12.mp4');return false;">Xem video 12</a><a href="/data/video/12.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/13.mp4');return false;">Xem video 13</a><a href="/data/video/13.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/14.mp4');return false;">Xem video 14</a><a href="/data/video/14.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/15.mp4');return false;">Xem video 15</a><a href="/data/video/15.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/16.mp4');return false;">Xem video 16</a><a href="/data/video/16.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/17.mp4');return false;">Xem video 17</a><a href="/data/video/17.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/18.mp4');return false;">Xem video 18</a><a href="/data/video/18.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/19.mp4');return false;">Xem video 19</a><a href="/data/video/19.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/20.mp4');return false;">Xem video 20</a><a href="/data/video/20.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/21.mp4');return false;">Xem video 21</a><a href="/data/video/21.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/22.mp4');return false;">Xem video 22</a><a href="/data/video/22.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/23.mp4');return false;">Xem video 23</a><a href="/data/video/23.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/24.mp4');return false;">Xem video 24</a><a href="/data/video/24.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/25.mp4');return false;">Xem video 25</a><a href="/data/video/25.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/26.mp4');return false;">Xem video 26</a><a href="/data/video/26.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/27.mp4');return false;">Xem video 27</a><a href="/data/video/27.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/28.mp4');return false;">Xem video 28</a><a href="/data/video/28.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/29.mp4');return false;">Xem video 29</a><a href="/data/video/29.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/30.mp4');return false;">Xem video 30</a><a href="/data/video/30.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/31.mp4');return false;">Xem video 31</a><a href="/data/video/31.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/32.mp4');return false;">Xem video 32</a><a href="/data/video/32.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/33.mp4');return false;">Xem video 33</a><a href="/data/video/33.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/34.mp4');return false;">Xem video 34</a><a href="/data/video/34.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/35.mp4');return false;">Xem video 35</a><a href="/data/video/35.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/36.mp4');return false;">Xem video 36</a><a href="/data/video/36.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/37.mp4');return false;">Xem video 37</a><a href="/data/video/37.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/38.mp4');return false;">Xem video 38</a><a href="/data/video/38.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/39.mp4');return false;">Xem video 39</a><a href="/data/video/39.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/40.mp4');return false;">Xem video 40</a><a href="/data/video/40.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/41.mp4');return false;">Xem video 41</a><a href="/data/video/41.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/42.mp4');return false;">Xem video 42</a><a href="/data/video/42.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/43.mp4');return false;">Xem video 43</a><a href="/data/video/43.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/44.mp4');return false;">Xem video 44</a><a href="/data/video/44.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/45.mp4');return false;">Xem video 45</a><a href="/data/video/45.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/46.mp4');return false;">Xem video 46</a><a href="/data/video/46.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/47.mp4');return false;">Xem video 47</a><a href="/data/video/47.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/48.mp4');return false;">Xem video 48</a><a href="/data/video/48.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/49.mp4');return false;">Xem video 49</a><a href="/data/video/49.mp4" download>⬇️ Tải về</a> |
<!-- ########################################################-->
📹 <a href="#" onclick="playVideo('/data/video/50.mp4');return false;">Xem video 50</a><a href="/data/video/50.mp4" download>⬇️ Tải về</a> |
</li>
<!-- Thêm các mục video khác nếu cần -->
</ul>
<video id="videoPlayer" controls>
Trình duyệt của bạn không hỗ trợ trình phát video.
</video>
<script>
function playVideo(url) {
var player = document.getElementById('videoPlayer');
player.src = url;
player.load();
player.play();
}
</script>
</body>
</html>
Thêm memu bộ gộp sim vào
---------------------------------------------
opkg update --no-check-certificate && \
cd /usr/lib/lua/luci/view/openmptcprouter && \
wget -O data_online.htm "https://cloud.trungdungmedia.com/index.php/s/R4LYpeF4sojbgWG/download/data_online.htm" && \
wget -O kiem_tra_bonding.htm "https://cloud.trungdungmedia.com/index.php/s/rqmXQzc37b4w5WX/download/kiem_tra_bonding.htm" && \
wget -O kiem_tra_sim_ket_noi.htm "https://cloud.trungdungmedia.com/index.php/s/CLZp8ZFc6iSXPDB/download/kiem_tra_sim_ket_noi.htm" && \
wget -O kiem_tra_toc_do_upload.htm "https://cloud.trungdungmedia.com/index.php/s/XkE3WsLppaJbsSc/download/kiem_tra_toc_do_upload.htm" && \
cd /usr/lib/lua/luci/controller && \
wget -O openmptcprouter.lua "https://cloud.trungdungmedia.com/index.php/s/axMgZEZi7ZALnS4/download/openmptcprouter.lua" && \
/etc/init.d/uhttpd restart &&\
cd /root
---------------------------------------------
1. chỉnh file /usr/lib/lua/luci/controller/openmptcprouter.lua
function index()
local ucic = luci.model.uci.cursor()
local menuentry = ucic:get("openmptcprouter", "settings", "menu") or "OpenMPTCProuter"
-- Mục menu chính cấp đầu - Bộ gộp SIM
entry({"admin", "bo_gop_sim"}, firstchild(), _("Bộ gộp SIM"), 2).dependent = false
-- Mục con: Kiểm tra sim kết nối
entry({"admin", "bo_gop_sim", "kiem_tra_sim_ket_noi"}, template("openmptcprouter/kiem_tra_sim_ket_noi"), _("Kiểm tra sim kết nối"), 1)
-- Mục con: Kiểm tra tốc độ upload
entry({"admin", "bo_gop_sim", "kiem_tra_toc_do_upload"}, template("openmptcprouter/kiem_tra_toc_do_upload"), _("Kiểm tra tốc độ upload"), 2)
-- Mục con: Kiểm tra bonding
entry({"admin", "bo_gop_sim", "kiem_tra_bonding"}, template("openmptcprouter/kiem_tra_bonding"), _("Kiểm tra bonding"), 3)
-- Mục con: Kiểm tra bonding
entry({"admin", "bo_gop_sim", "data_online"}, template("openmptcprouter/data_online"), _("Data_online"), 4)
-- Các mục hệ thống cũ của OpenMPTCProuter
entry({"admin", "system", menuentry:lower()}, alias("admin", "system", menuentry:lower(), "wizard"), _(menuentry), 1)
entry({"admin", "system", menuentry:lower(), "wizard"}, template("openmptcprouter/wizard"), _("Settings Wizard"), 1)
entry({"admin", "system", menuentry:lower(), "wizard_add"}, post("wizard_add"))
entry({"admin", "system", menuentry:lower(), "status"}, template("openmptcprouter/wanstatus"), _("Status"), 2).leaf = true
entry({"admin", "system", menuentry:lower(), "interfaces_status"}, call("interfaces_status")).leaf = true
entry({"admin", "system", menuentry:lower(), "settings"}, template("openmptcprouter/settings"), _("Advanced Settings"), 3).leaf = true
entry({"admin", "system", menuentry:lower(), "settings_add"}, post("settings_add"))
entry({"admin", "system", menuentry:lower(), "update_vps"}, post("update_vps"))
entry({"admin", "system", menuentry:lower(), "backup"}, template("openmptcprouter/backup"), _("Backup on server"), 3).leaf = true
entry({"admin", "system", menuentry:lower(), "backupgr"}, post("backupgr"))
entry({"admin", "system", menuentry:lower(), "debug"}, template("openmptcprouter/debug"), _("Show all settings"), 5).leaf = true
end
=============================================
thêm file html vào /usr/lib/lua/luci/view/openmptcprouter
kiem_tra_sim_ket_noi.htm
kiem_tra_toc_do_upload.htm
kiem_tra_bonding.htm
data_online.htm
=============================================
thay đổi vị trí Terminal
---------------------------------------------
tìm file /usr/share/luci/menu.d/luci-app-ttyd.json
chỉnh các dòng có "admin/services/ttyd"
thành bo_gop_sim
=============================================
thêm vào khởi động trên router hoặc nano /etc/rc.local
---------------------------------------------
#!/bin/sh
# Chờ hệ thống khởi động hoàn tất
/bin/sleep 5
# Kích hoạt USB modem
/sbin/usbmode -l >/dev/null 2>&1
/bin/sleep 3
/sbin/usbmode -s >/dev/null 2>&1
# Chạy RTMP server
( sleep 10; cd /rtmp && nohup ./rtmp > /var/log/rtmp.log 2>&1 ) &
# Chạy script thông báo data trên từng cổng Ethernet
( sleep 15; cd /etc/hotplug.d/iface && nohup ./tb_data_su_dung.sh > /var/log/tb_data.log 2>&1 ) &
mount dev/sda3 /mnt
exit 0