分离ip和端口
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,51 @@
|
|||||||
widget.cpp
|
widget.cpp
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x3b9 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x3bb 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x3bd 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x3bf 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x3c2 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x412 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x414 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x416 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x41b 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x570 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x571 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x573 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x609 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x60a 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x60e 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x60f 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x610 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x69f 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x6a0 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x6a2 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x6a5 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x6a6 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x768 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x76d 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x76f 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x8ea 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x8eb 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x8ec 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x8ef 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x8f1 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x9bb 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x9bc 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x9bf 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x9c0 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0x9c4 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xa0e 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xa0f 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xa11 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xa14 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xa15 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xac3 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xac8 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xaca 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xc23 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xc24 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xc25 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xc28 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(1,1): warning C4828: 文件包含在偏移 0xc2a 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
|
||||||
|
C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\widget.cpp(44,17): warning C4189: “m_socket”: 局部变量已初始化但不引用
|
||||||
ip_sacaner.vcxproj -> C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\debug\ip_sacaner.exe
|
ip_sacaner.vcxproj -> C:\Users\wuwen\Desktop\tcp_ip_scan\ip_sacaner\debug\ip_sacaner.exe
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,9 +2,9 @@
|
|||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<QtLastBackgroundBuild>2022-01-01T13:25:57.2508858Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2022-01-02T05:17:50.4661434Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<QtLastBackgroundBuild>2022-01-01T13:25:57.7549971Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2022-01-02T05:17:50.7101433Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
Binary file not shown.
@@ -46,7 +46,7 @@ public:
|
|||||||
port_list->setGeometry(QRect(500, 100, 91, 111));
|
port_list->setGeometry(QRect(500, 100, 91, 111));
|
||||||
label_3 = new QLabel(Widget);
|
label_3 = new QLabel(Widget);
|
||||||
label_3->setObjectName(QString::fromUtf8("label_3"));
|
label_3->setObjectName(QString::fromUtf8("label_3"));
|
||||||
label_3->setGeometry(QRect(510, 30, 61, 61));
|
label_3->setGeometry(QRect(510, 30, 71, 61));
|
||||||
stard_scan = new QPushButton(Widget);
|
stard_scan = new QPushButton(Widget);
|
||||||
stard_scan->setObjectName(QString::fromUtf8("stard_scan"));
|
stard_scan->setObjectName(QString::fromUtf8("stard_scan"));
|
||||||
stard_scan->setGeometry(QRect(420, 220, 171, 41));
|
stard_scan->setGeometry(QRect(420, 220, 171, 41));
|
||||||
@@ -84,7 +84,8 @@ public:
|
|||||||
{
|
{
|
||||||
Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
|
Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
|
||||||
label_3->setText(QCoreApplication::translate("Widget", "\347\253\257\345\217\243\350\214\203\345\233\264\n"
|
label_3->setText(QCoreApplication::translate("Widget", "\347\253\257\345\217\243\350\214\203\345\233\264\n"
|
||||||
"80,443\n"
|
"80\n"
|
||||||
|
"443\n"
|
||||||
"3000-65535", nullptr));
|
"3000-65535", nullptr));
|
||||||
stard_scan->setText(QCoreApplication::translate("Widget", "\345\274\200\345\247\213\346\211\253\346\217\217", nullptr));
|
stard_scan->setText(QCoreApplication::translate("Widget", "\345\274\200\345\247\213\346\211\253\346\217\217", nullptr));
|
||||||
label_4->setText(QCoreApplication::translate("Widget", "\347\272\277\347\250\213", nullptr));
|
label_4->setText(QCoreApplication::translate("Widget", "\347\272\277\347\250\213", nullptr));
|
||||||
|
|||||||
+101
-15
@@ -1,30 +1,116 @@
|
|||||||
#include "widget.h"
|
#include "widget.h"
|
||||||
#include "ui_widget.h"
|
#include "ui_widget.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QTcpSocket> //通信套接字
|
#include <QTcpSocket> //socket
|
||||||
|
|
||||||
void Widget::tcp_connected()
|
void Widget::tcp_connected()
|
||||||
{
|
{
|
||||||
//qDebug() << "connected";
|
qDebug() << "connected";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString ipv4int_to_str(quint32 ipint)
|
||||||
|
{
|
||||||
|
return QString("%1.%2.%3.%4")
|
||||||
|
.arg((ipint >> 24) & 0xff)
|
||||||
|
.arg((ipint >> 16) & 0xff)
|
||||||
|
.arg((ipint >> 8) & 0xff)
|
||||||
|
.arg(ipint & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
quint32 ipv4str_to_int(const QString &ipstr)
|
||||||
|
{
|
||||||
|
QStringList ip4 = ipstr.split(".");
|
||||||
|
if (ip4.size() == 4)
|
||||||
|
{
|
||||||
|
return ip4.at(3).toInt()
|
||||||
|
| ip4.at(2).toInt() << 8
|
||||||
|
| ip4.at(1).toInt() << 16
|
||||||
|
| ip4.at(0).toInt() << 24;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Widget::tray_scan()
|
void Widget::tray_scan()
|
||||||
{
|
{
|
||||||
qDebug()<< "try_scan";
|
qDebug()<< "try_scan";
|
||||||
qDebug()<< ui->IP_list->toPlainText();
|
//qDebug()<< ui->IP_list->toPlainText();
|
||||||
|
|
||||||
//QString text = ui->IP_list->toPlainText();
|
|
||||||
QStringList number_list = ui->IP_list->toPlainText().split("\n");
|
|
||||||
for (int i = 0; i < number_list.size(); ++i)
|
|
||||||
{
|
|
||||||
qDebug() << number_list.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
//QTcpSocket* m_socket = new QTcpSocket;
|
|
||||||
//m_socket->connectToHost("127.0.0.1", 58888, QTcpSocket::ReadWrite);
|
|
||||||
//connect(m_socket, &QTcpSocket::connected, this, &Widget::tcp_connected);
|
|
||||||
|
|
||||||
|
|
||||||
|
QTcpSocket* m_socket = new QTcpSocket;
|
||||||
|
|
||||||
|
QStringList str_ip_list = ui->IP_list->toPlainText().split("\n"); //先以行分割
|
||||||
|
QStringList str_ips_list; //再以段分割
|
||||||
|
|
||||||
|
QStringList str_port_list = ui->port_list->toPlainText().split("\n");
|
||||||
|
QStringList str_ports_list;
|
||||||
|
for (int i = 0; i < str_ip_list.size(); ++i)
|
||||||
|
{
|
||||||
|
//qDebug() << str_ip_list.at(i);
|
||||||
|
str_ips_list = str_ip_list.at(i).split("-");
|
||||||
|
if (str_ips_list.size() > 1)
|
||||||
|
{
|
||||||
|
//ip段模式
|
||||||
|
for (quint32 ips = ipv4str_to_int(str_ips_list.at(0)); ips < ipv4str_to_int(str_ips_list.at(str_ips_list.size() - 1)) + 1; ips++)//取出每一个ip
|
||||||
|
{
|
||||||
|
//qDebug() << ipv4int_to_str(ips);
|
||||||
|
for (quint16 ii = 0; ii < str_port_list.size(); ii++)//分离端口
|
||||||
|
{
|
||||||
|
str_ports_list = str_port_list.at(ii).split("-");
|
||||||
|
if (str_ports_list.size() > 1)
|
||||||
|
{
|
||||||
|
//端口段模式
|
||||||
|
for (quint16 prots = str_ports_list.at(0).toInt(); prots < str_ports_list.at(str_ports_list.size() - 1).toInt() + 1; prots++)
|
||||||
|
{
|
||||||
|
qDebug() << ipv4int_to_str(ips) << prots;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//单端口模式
|
||||||
|
qDebug() << ipv4int_to_str(ips) << str_ports_list.at(0).toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//单ip或域名模式
|
||||||
|
for (quint16 ii = 0; ii < str_port_list.size(); ii++)//分离端口
|
||||||
|
{
|
||||||
|
str_ports_list = str_port_list.at(ii).split("-");
|
||||||
|
if (str_ports_list.size() > 1)
|
||||||
|
{
|
||||||
|
//端口段模式
|
||||||
|
for (quint16 prots = str_ports_list.at(0).toInt(); prots < str_ports_list.at(str_ports_list.size() - 1).toInt() + 1; prots++)
|
||||||
|
{
|
||||||
|
qDebug() <<str_ips_list.at(0) << prots;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//单端口模式
|
||||||
|
qDebug() << str_ips_list.at(0) << str_ports_list.at(0).toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//m_socket->connectToHost(str_ips_list.at(0), str_port_list.at(0).toInt(), QTcpSocket::ReadWrite);
|
||||||
|
//connect(m_socket, &QTcpSocket::connected, this, &Widget::tcp_connected);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//for (unsigned long a = str_ips_list.at(0).toInt();a< str_ip_list.size()>1? str_ips_list.at(1).toInt()+1: str_ips_list.at(0).toInt()+1;a++)
|
||||||
|
//{
|
||||||
|
// qDebug() << a;
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +129,7 @@ Widget::Widget(QWidget *parent)
|
|||||||
|
|
||||||
//qDebug("hello world");
|
//qDebug("hello world");
|
||||||
|
|
||||||
connect(ui->stard_scan,&QPushButton::pressed,this, &Widget::tray_scan);//扫描按钮被按下
|
connect(ui->stard_scan,&QPushButton::pressed,this, &Widget::tray_scan);//'scan button pass'
|
||||||
connect(ui->IP_list,&QTextEdit::textChanged,this, &Widget::auto_edit);
|
connect(ui->IP_list,&QTextEdit::textChanged,this, &Widget::auto_edit);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,13 +40,14 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>510</x>
|
<x>510</x>
|
||||||
<y>30</y>
|
<y>30</y>
|
||||||
<width>61</width>
|
<width>71</width>
|
||||||
<height>61</height>
|
<height>61</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>端口范围
|
<string>端口范围
|
||||||
80,443
|
80
|
||||||
|
443
|
||||||
3000-65535</string>
|
3000-65535</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
Reference in New Issue
Block a user