@ -1,132 +0,0 @@
|
|||||||
<style>
|
|
||||||
.loader {
|
|
||||||
background: #ffffff;
|
|
||||||
background: radial-gradient(#ffffff, #ffffff);
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: 99999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loader-inner {
|
|
||||||
bottom: 0;
|
|
||||||
height: 60px;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loader-line-wrap {
|
|
||||||
animation:
|
|
||||||
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
|
|
||||||
;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 50px;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
transform-origin: 50% 100%;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
.loader-line {
|
|
||||||
border: 4px solid transparent;
|
|
||||||
border-radius: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 100px;
|
|
||||||
left: 0;
|
|
||||||
margin: 0 auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
|
|
||||||
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
|
|
||||||
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
|
|
||||||
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
|
|
||||||
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
|
|
||||||
|
|
||||||
.loader-line-wrap:nth-child(1) .loader-line {
|
|
||||||
border-color: hsl(0, 80%, 60%);
|
|
||||||
height: 90px;
|
|
||||||
width: 90px;
|
|
||||||
top: 7px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(2) .loader-line {
|
|
||||||
border-color: hsl(60, 80%, 60%);
|
|
||||||
height: 76px;
|
|
||||||
width: 76px;
|
|
||||||
top: 14px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(3) .loader-line {
|
|
||||||
border-color: hsl(120, 80%, 60%);
|
|
||||||
height: 62px;
|
|
||||||
width: 62px;
|
|
||||||
top: 21px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(4) .loader-line {
|
|
||||||
border-color: hsl(180, 80%, 60%);
|
|
||||||
height: 48px;
|
|
||||||
width: 48px;
|
|
||||||
top: 28px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(5) .loader-line {
|
|
||||||
border-color: hsl(240, 80%, 60%);
|
|
||||||
height: 34px;
|
|
||||||
width: 34px;
|
|
||||||
top: 35px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0%, 15% {
|
|
||||||
transform: rotate(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="loader">
|
|
||||||
<div class="loader-inner">
|
|
||||||
<div class="loader-line-wrap">
|
|
||||||
<div class="loader-line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="loader-line-wrap">
|
|
||||||
<div class="loader-line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="loader-line-wrap">
|
|
||||||
<div class="loader-line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="loader-line-wrap">
|
|
||||||
<div class="loader-line"></div>
|
|
||||||
</div>
|
|
||||||
<div class="loader-line-wrap">
|
|
||||||
<div class="loader-line"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<style>
|
|
||||||
.login {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 75%;
|
|
||||||
margin: -150px 0 0 -150px;
|
|
||||||
width:300px;
|
|
||||||
height:300px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<html>
|
|
||||||
<body>
|
|
||||||
<h1>welcome</h1>
|
|
||||||
</body>
|
|
||||||
<script>
|
|
||||||
setTimeout(()=>location.href="LoginUI.html",5000);
|
|
||||||
</script>
|
|
||||||
</html>
|
|
@ -1,147 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>注册页面</title>
|
|
||||||
<!-- 引入格式文件-->
|
|
||||||
<link rel="stylesheet" href="html&css.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<style>
|
|
||||||
*{
|
|
||||||
margin: 0px;/*所有的外边距为0*/
|
|
||||||
padding: 0px;/*所有的内边距为0*/
|
|
||||||
box-sizing: border-box;/*规定两个并排的带边框的框*/
|
|
||||||
}
|
|
||||||
table{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
body{
|
|
||||||
background: url("image/register_bg.png")no-repeat center;
|
|
||||||
padding-top: 25px;
|
|
||||||
}
|
|
||||||
.rg_layout{
|
|
||||||
width: 900px;
|
|
||||||
height: 500px;
|
|
||||||
border: 8px solid #EEEEEE;/*solid 定义实线*/
|
|
||||||
background-color: white;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.rg_left{
|
|
||||||
float: none;
|
|
||||||
text-align: center;
|
|
||||||
margin: 15px;
|
|
||||||
}
|
|
||||||
.rg_left>p:first-child{
|
|
||||||
color: #FFD026;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
.rg_left>p:last-child{
|
|
||||||
color: #A6A6A6;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rg_center{
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rg_right{
|
|
||||||
float: none;
|
|
||||||
margin: 250px;
|
|
||||||
padding-left: 10px;
|
|
||||||
white-space:nowrap;
|
|
||||||
}
|
|
||||||
.rg_right p{
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
.rg_right p a{
|
|
||||||
color: coral;
|
|
||||||
}
|
|
||||||
.td_left{
|
|
||||||
padding-left: 250px;
|
|
||||||
width: 100px;
|
|
||||||
text-align: center;
|
|
||||||
height: 45px;
|
|
||||||
white-space:nowrap;
|
|
||||||
}
|
|
||||||
.td_right{
|
|
||||||
padding-left: 40px;
|
|
||||||
text-align: center;
|
|
||||||
white-space:nowrap;
|
|
||||||
}
|
|
||||||
.bt_center{
|
|
||||||
padding-left: 310px;
|
|
||||||
}
|
|
||||||
#username,#password,#email,#name,#tel,#birthday,#checkcode{
|
|
||||||
width: 251px;
|
|
||||||
height: 32px;
|
|
||||||
border: 1px solid #A6A6A6;
|
|
||||||
/*设置边框圆角*/
|
|
||||||
border-radius: 5px;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
#checkcode{
|
|
||||||
width: 110px;
|
|
||||||
}
|
|
||||||
#img_check{
|
|
||||||
height: 32px;
|
|
||||||
vertical-align: middle;/*设置图片的位置垂直居中*/
|
|
||||||
}
|
|
||||||
#btn_sub{
|
|
||||||
width: 100px;
|
|
||||||
height: 40px;
|
|
||||||
background-color: #FFD026;
|
|
||||||
border: 1px solid #FFD026;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
<div class="rg_layout">
|
|
||||||
<div class="rg_left">
|
|
||||||
<p>新用户注册</p>
|
|
||||||
<p>USER REGISTER</p>
|
|
||||||
</div>
|
|
||||||
<div class="rg_center">
|
|
||||||
<div class="rg_form">
|
|
||||||
<form action="#" method="post">
|
|
||||||
<table>
|
|
||||||
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
|
|
||||||
<!--for属性与ID属性对应规定 label 绑定到哪个表单元素。-->
|
|
||||||
<td class="td_left"><label for="username">用户名</label> </td>
|
|
||||||
<td class="td_right"><input type="text" name="username" id="username"> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="td_left"><label for="password">姓名</label> </td>
|
|
||||||
<td class="td_right"><input type="password" name="password" id="password"> </td>
|
|
||||||
</tr>
|
|
||||||
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
|
|
||||||
<td class="td_left"><label for="email">身份证号</label> </td>
|
|
||||||
<td class="td_right"><input type="email" name="email" id="email"> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="td_left"><label for="name">密码</label> </td>
|
|
||||||
<td class="td_right"><input type="text" name="name" id="name"> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="td_left"><label for="tel">再次输入密码</label> </td>
|
|
||||||
<td class="td_right"><input type="text" name="tel" id="tel"> </td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" align="center" class="bt_center">
|
|
||||||
<input type="submit" value="注册" id="btn_sub">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="rg_right">
|
|
||||||
<p><a href="LoginUI.html">返回登录界面</a></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,288 +0,0 @@
|
|||||||
/*-----------------------------------*\
|
|
||||||
#style.css
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* copyright 2022 codewithsadee
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#CUSTOM PROPERTY
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
:root {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* colors
|
|
||||||
*/
|
|
||||||
|
|
||||||
--medium-slate-blue: hsl(240, 73%, 65%);
|
|
||||||
--space-cadet_10: hsl(226, 54%, 26%, 0.1);
|
|
||||||
--space-cadet: hsl(226, 54%, 26%);
|
|
||||||
--ghost-white: hsl(227, 69%, 97%);
|
|
||||||
--cool-gray: hsl(226, 19%, 63%);
|
|
||||||
--cultured: hsl(0, 0%, 95%);
|
|
||||||
--white: hsl(0, 0%, 100%);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* typography
|
|
||||||
*/
|
|
||||||
|
|
||||||
--ff-dm-sans: 'Roboto', sans-serif;
|
|
||||||
--ff-helvetica: 'Helvetica', sans-serif;
|
|
||||||
|
|
||||||
--fs-1: 3rem;
|
|
||||||
--fs-2: 2.4rem;
|
|
||||||
--fs-3: 1.5rem;
|
|
||||||
--fs-4: 1.2rem;
|
|
||||||
|
|
||||||
--fw-500: 500;
|
|
||||||
--fw-600: 600;
|
|
||||||
--fw-700: 700;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* shadow
|
|
||||||
*/
|
|
||||||
|
|
||||||
--shadow: 1px 1px 3px hsla(0, 0%, 0%, 0.15);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* radius
|
|
||||||
*/
|
|
||||||
|
|
||||||
--radius-5: 5px;
|
|
||||||
--radius-15: 15px;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* transition
|
|
||||||
*/
|
|
||||||
|
|
||||||
--transition-1: 0.25s ease;
|
|
||||||
--transition-2: 1s ease;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#RESET
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
span,
|
|
||||||
data { display: block; }
|
|
||||||
|
|
||||||
img { height: auto; }
|
|
||||||
|
|
||||||
table,
|
|
||||||
tbody,
|
|
||||||
tr,
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
font-family: var(--ff-dm-sans);
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: var(--ghost-white);
|
|
||||||
color: var(--cool-gray);
|
|
||||||
font-size: 1.6rem;
|
|
||||||
padding-inline: 15px;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#REUSED STYLE
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
.flex-center {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-card,
|
|
||||||
.chart-card {
|
|
||||||
width: 300px;
|
|
||||||
height: 150px;
|
|
||||||
position: relative;
|
|
||||||
padding: 5px;
|
|
||||||
border-radius: var(--radius-10);
|
|
||||||
}
|
|
||||||
|
|
||||||
.text { font-size: var(--fs-3); }
|
|
||||||
|
|
||||||
.h2 { font-size: var(--fs-2); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#BALANCE CARD
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
.chart-container {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 540px;
|
|
||||||
margin-inline: 100px;
|
|
||||||
left: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-card {
|
|
||||||
background-color: var(--medium-slate-blue);
|
|
||||||
color: var(--white);
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-block-end: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-card .text {
|
|
||||||
font-weight: unset;
|
|
||||||
margin-block-end: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-card .h2 { font-weight: var(--fw-700); }
|
|
||||||
|
|
||||||
.balance-card .logo { width: 60px; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#CHART CARD
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
.chart-card {
|
|
||||||
position: relative;
|
|
||||||
margin-right: 30px;
|
|
||||||
background-color: var(--white);
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .h2 {
|
|
||||||
color: var(--space-cadet);
|
|
||||||
font-weight: var(--fw-500);
|
|
||||||
margin-block-end: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .card-table {
|
|
||||||
display: block;
|
|
||||||
padding-block-end: 24px;
|
|
||||||
border-block-end: 1px solid var(--space-cadet_10);
|
|
||||||
margin-block-end: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .table-body {
|
|
||||||
justify-content: space-evenly;
|
|
||||||
align-items: stretch;
|
|
||||||
gap: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .table-row {
|
|
||||||
flex-direction: column-reverse;
|
|
||||||
justify-content: flex-start;
|
|
||||||
gap: 10px;
|
|
||||||
min-height: calc(150px + 31px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .table-heading {
|
|
||||||
color: var(--space-cadet);
|
|
||||||
font-family: var(--ff-helvetica);
|
|
||||||
font-size: var(--fs-4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .table-data {
|
|
||||||
min-width: 20px;
|
|
||||||
height: 100%;
|
|
||||||
background-color: var(--cultured);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .chart-bar {
|
|
||||||
background-color: var(--medium-slate-blue);
|
|
||||||
height: 100%;
|
|
||||||
transform-origin: bottom;
|
|
||||||
transition: transform var(--transition-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .chart-bar:hover { opacity: 0.75; }
|
|
||||||
|
|
||||||
.tooltip {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
background-color: var(--white);
|
|
||||||
color: var(--space-cadet);
|
|
||||||
font-family: var(--ff-helvetica);
|
|
||||||
font-weight: var(--fw-600);
|
|
||||||
padding: 8px;
|
|
||||||
border: 1px solid var(--cultured);
|
|
||||||
border-radius: var(--radius-5);
|
|
||||||
box-shadow: var(--shadow);
|
|
||||||
pointer-events: none;
|
|
||||||
opacity: 0;
|
|
||||||
transition: var(--transition-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tooltip.active { opacity: 1; }
|
|
||||||
|
|
||||||
.chart-card .wrapper {
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .meta-value {
|
|
||||||
color: var(--space-cadet);
|
|
||||||
font-weight: var(--fw-500);
|
|
||||||
margin-block-start: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.chart-card .meta-value:not(.small) { font-size: var(--fs-1); }
|
|
||||||
|
|
||||||
.chart-card .card-meta:last-child {
|
|
||||||
align-self: flex-end;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.piechart{
|
|
||||||
margin-top: -180px;
|
|
||||||
left: 600px;
|
|
||||||
width: 150px;
|
|
||||||
height: 150px;
|
|
||||||
position: fixed;
|
|
||||||
padding: 5px;
|
|
||||||
border-radius: var(--radius-10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------*\
|
|
||||||
#MEDIA QUERIES
|
|
||||||
\*-----------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* responsive for large than 768px screen
|
|
||||||
*/
|
|
||||||
|
|
Before Width: | Height: | Size: 710 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 313 KiB |
Before Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 173 KiB |
Before Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 533 KiB |
Before Width: | Height: | Size: 740 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 409 KiB |
Before Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 516 B |
Before Width: | Height: | Size: 12 KiB |
@ -1,20 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"server": "shanghai",
|
|
||||||
"stat": "busy",
|
|
||||||
"amount": 70,
|
|
||||||
"recentTime":70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"server": "changsha",
|
|
||||||
"stat": "busy",
|
|
||||||
"amount": 50,
|
|
||||||
"recentTime": 1300
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"server": "beijing",
|
|
||||||
"stat": "busy",
|
|
||||||
"amount": 56,
|
|
||||||
"recentTime": 70
|
|
||||||
}
|
|
||||||
]
|
|
@ -1,149 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* import json data
|
|
||||||
*/
|
|
||||||
|
|
||||||
import data from './data.json' assert { type: 'json' };
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> select all DOM elements
|
|
||||||
*/
|
|
||||||
|
|
||||||
const tooltip = document.querySelector("[data-tooltip]");
|
|
||||||
const chartBars = document.querySelectorAll("[data-chart-bar]");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add event on element
|
|
||||||
*/
|
|
||||||
|
|
||||||
const addEventOnElem = function (elem, type, callback) {
|
|
||||||
if (elem.length > 1) {
|
|
||||||
for (let i = 0; i < elem.length; i++) {
|
|
||||||
elem[i].addEventListener(type, callback);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
elem.addEventListener(type, callback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> get the max day amount from data
|
|
||||||
*/
|
|
||||||
|
|
||||||
let maxDayAmount = 0;
|
|
||||||
|
|
||||||
for (let i = 0; i < data.length; i++) {
|
|
||||||
if (data[i].amount > maxDayAmount) {
|
|
||||||
maxDayAmount = data[i].amount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> get chart bars height as array
|
|
||||||
* -> set the height of all bars in chart
|
|
||||||
*/
|
|
||||||
|
|
||||||
const setChartBarsHeight = function (height) {
|
|
||||||
for (let i = 0; i < height.length; i++) {
|
|
||||||
chartBars[i].style.transform = `scaleY(${height[i] / 100})`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> get the day amount from data
|
|
||||||
* -> find the percentage of every number
|
|
||||||
* -> push all number in chartBarsHeight
|
|
||||||
*/
|
|
||||||
|
|
||||||
const charBarsHeight = [];
|
|
||||||
|
|
||||||
for (let i = 0; i < data.length; i++) {
|
|
||||||
const dayAmount = data[i].amount;
|
|
||||||
const percentOfNum = dayAmount / maxDayAmount * 100;
|
|
||||||
charBarsHeight.push(percentOfNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
setChartBarsHeight(charBarsHeight);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> get top, left, and chart bar width
|
|
||||||
* -> get tooltip height
|
|
||||||
* -> set the gap between chart bar and tooltip
|
|
||||||
* -> set the tooltip position
|
|
||||||
*/
|
|
||||||
|
|
||||||
const setTooltipPos = function (top, left, chartBarWidth) {
|
|
||||||
const tooltipHeight = tooltip.offsetHeight;
|
|
||||||
const gap = 8;
|
|
||||||
|
|
||||||
tooltip.style.top = `${top - tooltipHeight - gap}px`;
|
|
||||||
tooltip.style.left = `${left + chartBarWidth / 2}px`;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* when chart bar is hover
|
|
||||||
* -> add active class in tooltip
|
|
||||||
* -> get chart bar top position from window
|
|
||||||
* -> get chart bar left position from window
|
|
||||||
* -> get chart bar width
|
|
||||||
* -> call setTooltipPos and pass the chart bar top,
|
|
||||||
* left position and width
|
|
||||||
*/
|
|
||||||
|
|
||||||
const chartBarOnHover = function () {
|
|
||||||
tooltip.classList.add("active");
|
|
||||||
|
|
||||||
const barTopPos = this.getBoundingClientRect().top;
|
|
||||||
const barLeftPos = this.getBoundingClientRect().left;
|
|
||||||
const barWidth = this.offsetWidth;
|
|
||||||
|
|
||||||
setTooltipPos(barTopPos, barLeftPos, barWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
addEventOnElem(chartBars, "mouseover", chartBarOnHover);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> hide tooltip when leave cursor from chart bar
|
|
||||||
*/
|
|
||||||
|
|
||||||
const hideTooltip = function () {
|
|
||||||
tooltip.classList.remove("active");
|
|
||||||
}
|
|
||||||
|
|
||||||
addEventOnElem(chartBars, "mouseleave", hideTooltip);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -> add tooltip value when hover on any bar chart
|
|
||||||
*/
|
|
||||||
|
|
||||||
const addTooltipValue = function () {
|
|
||||||
for (let i = 0; i < data.length; i++) {
|
|
||||||
if (data[i].server === this.dataset.chartBar) {
|
|
||||||
tooltip.innerHTML = data[i].amount.toString();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addEventOnElem(chartBars, "mouseover", addTooltipValue);
|
|
@ -1,138 +0,0 @@
|
|||||||
@charset "utf-8";
|
|
||||||
|
|
||||||
/* 公共区域版心宽度一样,左右居中 */
|
|
||||||
|
|
||||||
|
|
||||||
/* .header-wrap {
|
|
||||||
width: 1100px;
|
|
||||||
height: 62px;
|
|
||||||
margin: 0 auto;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.header_con {
|
|
||||||
width: 1002px;
|
|
||||||
height: 100px;
|
|
||||||
/* background: pink; */
|
|
||||||
/* 左右居中 */
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header_con h1 {
|
|
||||||
width: 604px;
|
|
||||||
height: 66px;
|
|
||||||
/* background: orange; */
|
|
||||||
float: left;
|
|
||||||
padding: 34px 0 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header_con form {
|
|
||||||
width: 227px;
|
|
||||||
height: 61px;
|
|
||||||
/* background: orangered; */
|
|
||||||
float: left;
|
|
||||||
padding-top: 39px;
|
|
||||||
padding-right: 21px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header_con .search {
|
|
||||||
width: 195px;
|
|
||||||
height: 26px;
|
|
||||||
background: #f1f1f1;
|
|
||||||
border: 1px solid #e5e5e5;
|
|
||||||
/* 清除右侧边框 */
|
|
||||||
border-right: none;
|
|
||||||
float: left;
|
|
||||||
color: #888888;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header_con .btn {
|
|
||||||
width: 30px;
|
|
||||||
height: 26px;
|
|
||||||
border: none;
|
|
||||||
background: #f1f1f1 url("../images/search_03.jpg") no-repeat center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header_con form div {
|
|
||||||
width: 30px;
|
|
||||||
height: 26px;
|
|
||||||
border: 1px solid #e5e5e5;
|
|
||||||
border-left: none;
|
|
||||||
float: left;
|
|
||||||
/* 给btn套盒子的时候也要加浮动 */
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav {
|
|
||||||
height: 58px;
|
|
||||||
background: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav .nav_con {
|
|
||||||
width: 1002px;
|
|
||||||
height: 58px;
|
|
||||||
background: black;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 导航横向排列 */
|
|
||||||
|
|
||||||
#nav .nav_con li {
|
|
||||||
width: 498px;
|
|
||||||
height: 58px;
|
|
||||||
float: left;
|
|
||||||
background: black;
|
|
||||||
/* 左右居中 */
|
|
||||||
text-align: center;
|
|
||||||
/* 上下居中 */
|
|
||||||
line-height: 58px;
|
|
||||||
border-left: 1px solid #4a4a4a;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav_con li a {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin-left {
|
|
||||||
margin-left: 25px;
|
|
||||||
border-left: none!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 公共样式的footer */
|
|
||||||
|
|
||||||
.footer_con {
|
|
||||||
height: 82px;
|
|
||||||
/* background: #cccccc; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer_con .footer_l {
|
|
||||||
height: 58px;
|
|
||||||
float: left;
|
|
||||||
/* background: red; */
|
|
||||||
padding-top: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer_con .footer_l a {
|
|
||||||
font-size: 12px;
|
|
||||||
float: left;
|
|
||||||
color: #868686;
|
|
||||||
border-right: 1px solid #868686;
|
|
||||||
/* padding:字体和边框的距离哈 */
|
|
||||||
padding: 0 7px;
|
|
||||||
padding-left: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer_con .footer_l .footer-right {
|
|
||||||
border-right: none!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer_con .footer_r {
|
|
||||||
height: 57px;
|
|
||||||
color: #8a8a8a;
|
|
||||||
font-size: 12px;
|
|
||||||
padding-top: 25px;
|
|
||||||
/* background: pink; */
|
|
||||||
padding-right: 21px;
|
|
||||||
float: right;
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
.loader {
|
|
||||||
background: #000;
|
|
||||||
background: radial-gradient(#222, #000);
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: 99999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loader-inner {
|
|
||||||
bottom: 0;
|
|
||||||
height: 60px;
|
|
||||||
left: 0;
|
|
||||||
margin: auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loader-line-wrap {
|
|
||||||
animation:
|
|
||||||
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
|
|
||||||
;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 50px;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
transform-origin: 50% 100%;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
.loader-line {
|
|
||||||
border: 4px solid transparent;
|
|
||||||
border-radius: 100%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 100px;
|
|
||||||
left: 0;
|
|
||||||
margin: 0 auto;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
|
|
||||||
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
|
|
||||||
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
|
|
||||||
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
|
|
||||||
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
|
|
||||||
|
|
||||||
.loader-line-wrap:nth-child(1) .loader-line {
|
|
||||||
border-color: hsl(0, 80%, 60%);
|
|
||||||
height: 90px;
|
|
||||||
width: 90px;
|
|
||||||
top: 7px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(2) .loader-line {
|
|
||||||
border-color: hsl(60, 80%, 60%);
|
|
||||||
height: 76px;
|
|
||||||
width: 76px;
|
|
||||||
top: 14px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(3) .loader-line {
|
|
||||||
border-color: hsl(120, 80%, 60%);
|
|
||||||
height: 62px;
|
|
||||||
width: 62px;
|
|
||||||
top: 21px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(4) .loader-line {
|
|
||||||
border-color: hsl(180, 80%, 60%);
|
|
||||||
height: 48px;
|
|
||||||
width: 48px;
|
|
||||||
top: 28px;
|
|
||||||
}
|
|
||||||
.loader-line-wrap:nth-child(5) .loader-line {
|
|
||||||
border-color: hsl(240, 80%, 60%);
|
|
||||||
height: 34px;
|
|
||||||
width: 34px;
|
|
||||||
top: 35px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes spin {
|
|
||||||
0%, 15% {
|
|
||||||
transform: rotate(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
@charset "utf-8";
|
|
||||||
|
|
||||||
/* 重置样式表 */
|
|
||||||
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 统一页面文本 */
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: "微软雅黑";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除列表符号 */
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol,
|
|
||||||
li {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除下划线 */
|
|
||||||
|
|
||||||
u,
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除倾斜 */
|
|
||||||
|
|
||||||
i,
|
|
||||||
em {
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除加粗 */
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除文本默认大小和加粗 */
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 边框清零 */
|
|
||||||
|
|
||||||
img {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 清除聚焦时候的边框 */
|
|
||||||
|
|
||||||
input {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
@ -1,206 +0,0 @@
|
|||||||
div{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.h1, .h2, .h3, .h4, .h5, .h6, a, abbr, body, cite, dd, dl, dt, h1, h2, h3, h4, h5, h6, iframe, input, li, object, ol, p, pre, span, ul {
|
|
||||||
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
|
|
||||||
}
|
|
||||||
a{
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
ul, li, ol, dl, dt, dd {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
div, figure, footer, header, hgroup, html, iframe, img, mark, menu, nav, object, section, span, table, tr, td, th, tbody, tfoot, thead, video {
|
|
||||||
border: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.my_msg_list{
|
|
||||||
position: fixed;
|
|
||||||
margin-top: 50px;
|
|
||||||
width: 1400px;
|
|
||||||
min-height: 400px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.my_msg_list_view{
|
|
||||||
position: relative;
|
|
||||||
margin-left: 100px;
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 24px 16px;
|
|
||||||
-webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
|
|
||||||
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
|
|
||||||
min-height: 520px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.my_msg_list_box{
|
|
||||||
border: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.my_msg_list_con{
|
|
||||||
border: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.my_msg_list_title{
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #3d3d3d;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
zoom: 1;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.fr{
|
|
||||||
float: right!important;
|
|
||||||
display: inline-block;
|
|
||||||
color: #4a90e2;
|
|
||||||
}
|
|
||||||
.line{
|
|
||||||
display: inline-block;
|
|
||||||
height: 12px;
|
|
||||||
margin: 2px 12px;
|
|
||||||
border-right: 1px solid #979797;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_list{
|
|
||||||
padding: 0 0 0 15px;
|
|
||||||
min-height: 370px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.msg_list_ul{
|
|
||||||
font-size: 14px;
|
|
||||||
vertical-align: baseline;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.msg_list_ul_li{
|
|
||||||
position: relative;
|
|
||||||
padding: 16px 0;
|
|
||||||
border-bottom: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
.msg_type{
|
|
||||||
display: inline-block;
|
|
||||||
height: 40px;
|
|
||||||
line-height: 40px;
|
|
||||||
padding: 0 5px;
|
|
||||||
color: #4d4d4d;
|
|
||||||
font-size: 25px;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1px solid #e0e0e0;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
.msg_info_box{
|
|
||||||
width: 100%;
|
|
||||||
color: #4d4d4d;
|
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.msg_title{
|
|
||||||
display: inline-block;
|
|
||||||
width: 85%;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.options-f{
|
|
||||||
width: 16%;
|
|
||||||
height: 20px;
|
|
||||||
margin: 0;
|
|
||||||
margin-top: -20px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.msg_delete{
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
.msg_content{
|
|
||||||
margin-top: 15px;
|
|
||||||
margin-bottom: -16px;
|
|
||||||
padding: 15px;
|
|
||||||
background-color: #f7f7f7;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #4d4d4d;
|
|
||||||
line-height: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-box{
|
|
||||||
width: 100%;
|
|
||||||
margin: 32px 0 20px;
|
|
||||||
text-align: center;
|
|
||||||
border-top-color: initial;
|
|
||||||
border-right-color: initial;
|
|
||||||
border-bottom-color: initial;
|
|
||||||
border-left-color: initial;
|
|
||||||
}
|
|
||||||
.ule {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.lie {
|
|
||||||
width: 23%;
|
|
||||||
display: inline-block;
|
|
||||||
font: 13px sans-serif;
|
|
||||||
}
|
|
||||||
.lie a {
|
|
||||||
display: block;
|
|
||||||
color: rgb(39, 124, 184);
|
|
||||||
text-align: center;
|
|
||||||
padding: 14px 70px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
/*鼠标移动到选项上修改背景颜色 */
|
|
||||||
.lie a:hover {
|
|
||||||
background-color: #e3e3f5;
|
|
||||||
}
|
|
||||||
.ula {
|
|
||||||
width: 100%;
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.lia {
|
|
||||||
width: 23%;
|
|
||||||
display: inline-block;
|
|
||||||
font: 13px sans-serif;
|
|
||||||
}
|
|
||||||
.lia a {
|
|
||||||
display: block;
|
|
||||||
font-size: larger;
|
|
||||||
color: rgb(0, 0, 0);
|
|
||||||
text-align: center;
|
|
||||||
padding: 14px 50px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
/*鼠标移动到选项上修改背景颜色 */
|
|
||||||
.lia a:hover {
|
|
||||||
background-color: #b7b7b7;
|
|
||||||
}
|
|
||||||
.square{
|
|
||||||
width:200px;
|
|
||||||
|
|
||||||
height:5px;
|
|
||||||
|
|
||||||
border:1px solid transparent;
|
|
||||||
|
|
||||||
background: #06b81a;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
|||||||
#include <winsock2.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
#include <cstring>
|
|
||||||
#pragma comment(lib, "ws2_32.lib")
|
|
||||||
|
|
||||||
#define PORT 8888 // 监听的端口号
|
|
||||||
#define KEY "secret_password" // 定义认证密钥
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
WSADATA wsaData;
|
|
||||||
SOCKET sock, newSock;
|
|
||||||
SOCKADDR_IN serverAddr, clientAddr;
|
|
||||||
int cAddrLen = sizeof(clientAddr);
|
|
||||||
char recvbuf[1024];
|
|
||||||
char sendbuf[1024];
|
|
||||||
|
|
||||||
// 初始化Winsock
|
|
||||||
WSAStartup(MAKEWORD(2,2), &wsaData);
|
|
||||||
|
|
||||||
// 创建套接字
|
|
||||||
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
||||||
if (sock == INVALID_SOCKET) {
|
|
||||||
std::cerr << "Could not create socket: " << WSAGetLastError() << std::endl;
|
|
||||||
WSACleanup();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置服务器地址
|
|
||||||
serverAddr.sin_family = AF_INET;
|
|
||||||
serverAddr.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
serverAddr.sin_port = htons(PORT);
|
|
||||||
|
|
||||||
// 绑定套接字到地址
|
|
||||||
if (bind(sock, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
|
|
||||||
std::cerr << "Bind failed with error: " << WSAGetLastError() << std::endl;
|
|
||||||
closesocket(sock);
|
|
||||||
WSACleanup();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 开始监听
|
|
||||||
if (listen(sock, SOMAXCONN) == SOCKET_ERROR) {
|
|
||||||
std::cerr << "Listen failed with error: " << WSAGetLastError() << std::endl;
|
|
||||||
closesocket(sock);
|
|
||||||
WSACleanup();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Server listening on port " << PORT << "..." << std::endl;
|
|
||||||
|
|
||||||
// 接受连接
|
|
||||||
newSock = accept(sock, (SOCKADDR*)&clientAddr, &cAddrLen);
|
|
||||||
if (newSock == INVALID_SOCKET) {
|
|
||||||
std::cerr << "Accept failed with error: " << WSAGetLastError() << std::endl;
|
|
||||||
closesocket(sock);
|
|
||||||
WSACleanup();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Connected with client." << std::endl;
|
|
||||||
|
|
||||||
// 发送密钥
|
|
||||||
strcpy(sendbuf, KEY);
|
|
||||||
if (send(newSock, sendbuf, strlen(sendbuf), 0) == SOCKET_ERROR) {
|
|
||||||
std::cerr << "Send failed with error: " << WSAGetLastError() << std::endl;
|
|
||||||
closesocket(newSock);
|
|
||||||
closesocket(sock);
|
|
||||||
WSACleanup();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 接收客户端响应的密钥
|
|
||||||
int iResult = recv(newSock, recvbuf, sizeof(recvbuf), 0);
|
|
||||||
if (iResult > 0) {
|
|
||||||
recvbuf[iResult] = '\0';
|
|
||||||
if (strcmp(recvbuf, KEY) == 0) {
|
|
||||||
std::cout << "Authentication successful." << std::endl;
|
|
||||||
// 认证成功后,可以接收客户端的消息或进行其他操作
|
|
||||||
// ...
|
|
||||||
} else {
|
|
||||||
std::cerr << "Authentication failed." << std::endl;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
std::cerr << "Receive failed with error: " << WSAGetLastError() << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 关闭套接字
|
|
||||||
closesocket(newSock);
|
|
||||||
closesocket(sock);
|
|
||||||
|
|
||||||
// 清理Winsock
|
|
||||||
WSACleanup();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
// main.cpp
|
|
||||||
#include <Poco/Net/HTTPServer.h>
|
|
||||||
#include <Poco/Net/HTTPRequestHandler.h>
|
|
||||||
#include <Poco/Net/HTTPRequestHandlerFactory.h>
|
|
||||||
#include <Poco/Net/HTTPResponse.h>
|
|
||||||
#include <Poco/Net/HTTPServerParams.h>
|
|
||||||
#include <Poco/Net/ServerSocket.h>
|
|
||||||
#include <Poco/JSON/JSON.h>
|
|
||||||
#include <Poco/JSON/Parser.h>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace Poco::Net;
|
|
||||||
using namespace Poco::JSON;
|
|
||||||
|
|
||||||
class DataRequestHandler : public HTTPRequestHandler {
|
|
||||||
public:
|
|
||||||
void handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp) override {
|
|
||||||
// 设置响应的HTTP头
|
|
||||||
resp.setContentType("application/json");
|
|
||||||
|
|
||||||
// 创建 JSON 对象
|
|
||||||
Object::Ptr pObj = new Object();
|
|
||||||
pObj->set("key", "value"); // 示例数据
|
|
||||||
|
|
||||||
// 将 JSON 对象转换为字符串
|
|
||||||
String result;
|
|
||||||
Poco::JSON::Stringifier::stringify(*pObj, result);
|
|
||||||
|
|
||||||
// 发送响应
|
|
||||||
resp.send() << result;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class DataRequestHandlerFactory : public HTTPRequestHandlerFactory {
|
|
||||||
public:
|
|
||||||
HTTPRequestHandler* createRequestHandler(const HTTPServerRequest &req) override {
|
|
||||||
// 检查请求的路径是否为 "/api/data"
|
|
||||||
if (req.getURI() == "/api/data") {
|
|
||||||
return new DataRequestHandler();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
|
||||||
ServerSocket svs(8080);
|
|
||||||
HTTPServerParams* pParams = new HTTPServerParams;
|
|
||||||
pParams->setMaxQueued(100);
|
|
||||||
pParams->setMaxThreads(16);
|
|
||||||
HTTPServer srv(new DataRequestHandlerFactory(), svs, pParams);
|
|
||||||
|
|
||||||
std::cout << "Server started on port 8080" << std::endl;
|
|
||||||
srv.start();
|
|
||||||
|
|
||||||
std::cin.get(); // 等待用户输入以结束服务器
|
|
||||||
|
|
||||||
srv.stop();
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <mysql/mysql.h>
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
MYSQL *conn;
|
|
||||||
conn = mysql_init(NULL);
|
|
||||||
|
|
||||||
if (conn == NULL) {
|
|
||||||
std::cerr << "MySQL init failed" << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *server = "localhost";
|
|
||||||
const char *user = "rtsw";
|
|
||||||
const char *password = "123456";
|
|
||||||
const char *database = "nginxdb";
|
|
||||||
unsigned int port = 3306; // 使用云数据库提供的端口
|
|
||||||
|
|
||||||
if (mysql_real_connect(conn, server, user, password, database, port, NULL, 0) == NULL) {
|
|
||||||
std::cerr << "Connection error: " << mysql_error(conn) << std::endl;
|
|
||||||
mysql_close(conn);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Successfully connected to the database" << std::endl;
|
|
||||||
|
|
||||||
// ... 执行数据库操作 ...
|
|
||||||
|
|
||||||
mysql_close(conn);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <thread>
|
|
||||||
#include <cstring>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#define PORT 8080
|
|
||||||
#define MAX_CLIENTS 5
|
|
||||||
#define BUFFER_SIZE 1024
|
|
||||||
|
|
||||||
// 声明 handle_client 函数
|
|
||||||
void handle_client(int client_socket);
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
int server_fd, new_socket;
|
|
||||||
struct sockaddr_in server_addr, client_addr;
|
|
||||||
socklen_t client_len = sizeof(client_addr);
|
|
||||||
char buffer[BUFFER_SIZE];
|
|
||||||
int opt = 1;
|
|
||||||
|
|
||||||
// 创建套接字
|
|
||||||
server_fd = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
if (server_fd < 0) {
|
|
||||||
perror("socket creation failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置选项,允许重用地址
|
|
||||||
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
|
|
||||||
perror("setsockopt failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
server_addr.sin_family = AF_INET;
|
|
||||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
server_addr.sin_port = htons(PORT);
|
|
||||||
|
|
||||||
// 绑定
|
|
||||||
if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
|
||||||
perror("bind failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 监听
|
|
||||||
if (listen(server_fd, MAX_CLIENTS) < 0) {
|
|
||||||
perror("listen failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Server listening on port " << PORT << std::endl;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
client_len = sizeof(client_addr);
|
|
||||||
new_socket = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);
|
|
||||||
if (new_socket < 0) {
|
|
||||||
perror("accept failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "New client connected from " << inet_ntoa(client_addr.sin_addr) << " port " << ntohs(client_addr.sin_port) << std::endl;
|
|
||||||
|
|
||||||
// 创建并启动线程处理客户端
|
|
||||||
std::thread(handle_client, new_socket).detach();
|
|
||||||
}
|
|
||||||
|
|
||||||
close(server_fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义 handle_client 函数
|
|
||||||
void handle_client(int client_socket) {
|
|
||||||
while (true) {
|
|
||||||
char buffer[BUFFER_SIZE];
|
|
||||||
memset(buffer, 0, BUFFER_SIZE); // 清空缓冲区
|
|
||||||
int nbytes = read(client_socket, buffer, BUFFER_SIZE);
|
|
||||||
if (nbytes <= 0) {
|
|
||||||
std::cout << "Client disconnected." << std::endl;
|
|
||||||
close(client_socket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
std::cout << "Received message from client: " << buffer << std::endl;
|
|
||||||
// 这里可以添加更多的处理逻辑
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <mysql/mysql.h>
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
MYSQL *conn;
|
|
||||||
conn = mysql_init(NULL);
|
|
||||||
|
|
||||||
if (conn == NULL) {
|
|
||||||
std::cerr << "MySQL init failed" << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *server = "localhost";
|
|
||||||
const char *user = "rtsw";
|
|
||||||
const char *password = "123456";
|
|
||||||
const char *database = "nginxdb";
|
|
||||||
unsigned int port = 3306;
|
|
||||||
|
|
||||||
if (mysql_real_connect(conn, server, user, password, database, port, NULL, 0) == NULL) {
|
|
||||||
std::cerr << "Connection error: " << mysql_error(conn) << std::endl;
|
|
||||||
mysql_close(conn);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Successfully connected to the database" << std::endl;
|
|
||||||
|
|
||||||
// 插入数据
|
|
||||||
const char *insert_query = "INSERT INTO users (username, email) VALUES ('newuser', 'newuser@example.com')";
|
|
||||||
if (mysql_query(conn, insert_query)) {
|
|
||||||
std::cerr << "Insert error: " << mysql_error(conn) << std::endl;
|
|
||||||
} else {
|
|
||||||
std::cout << "Insert successful" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询数据
|
|
||||||
const char *select_query = "SELECT * FROM users";
|
|
||||||
MYSQL_RES *result = mysql_store_result(conn);
|
|
||||||
if (result) {
|
|
||||||
MYSQL_ROW row;
|
|
||||||
while ((row = mysql_fetch_row(result))) {
|
|
||||||
std::cout << "id: " << row[0] << ", username: " << row[1] << ", email: " << row[2] << std::endl;
|
|
||||||
}
|
|
||||||
mysql_free_result(result);
|
|
||||||
} else {
|
|
||||||
std::cerr << "Select error: " << mysql_error(conn) << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新数据
|
|
||||||
const char *update_query = "UPDATE users SET email = 'newuser_updated@example.com' WHERE username = 'newuser'";
|
|
||||||
if (mysql_query(conn, update_query)) {
|
|
||||||
std::cerr << "Update error: " << mysql_error(conn) << std::endl;
|
|
||||||
} else {
|
|
||||||
std::cout << "Update successful" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除数据
|
|
||||||
const char *delete_query = "DELETE FROM users WHERE username = 'newuser'";
|
|
||||||
if (mysql_query(conn, delete_query)) {
|
|
||||||
std::cerr << "Delete error: " << mysql_error(conn) << std::endl;
|
|
||||||
} else {
|
|
||||||
std::cout << "Delete successful" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
mysql_close(conn);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
#ifndef CONNECTOR_CONTROLLER_H
|
|
||||||
#define CONNECTOR_CONTROLLER_H
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <thread>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
#include <mutex>
|
|
||||||
#include <atomic>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
// 函数声明
|
|
||||||
void StartHttpServer();
|
|
||||||
void ConnectToGateway(const std::string& ip, int port);
|
|
||||||
void KeepConnection(int sock);
|
|
||||||
void HandleHttpRequest(int client_socket);
|
|
||||||
|
|
||||||
#endif // CONNECTOR_CONTROLLER_H
|
|
@ -1,10 +0,0 @@
|
|||||||
#ifndef CONNECTOR_DATABASE_H
|
|
||||||
#define CONNECTOR_DATABASE_H
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <mysql/mysql.h>
|
|
||||||
|
|
||||||
// 函数声明
|
|
||||||
void DatabaseOperation();
|
|
||||||
|
|
||||||
#endif // CONNECTOR_DATABASE_H
|
|
@ -1,35 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
#include "connector_controller.h"
|
|
||||||
#include "connector_database.h"
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
std::string command;
|
|
||||||
bool running = true;
|
|
||||||
|
|
||||||
while (running) {
|
|
||||||
std::cout << "Enter command (start_http_server/connect_gateway/database_operation/exit): ";
|
|
||||||
std::cin >> command;
|
|
||||||
|
|
||||||
if (command == "start_http_server") {
|
|
||||||
StartHttpServer();
|
|
||||||
} else if (command == "connect_gateway") {
|
|
||||||
std::string ip;
|
|
||||||
int port;
|
|
||||||
std::cout << "Enter the gateway IP address: "<<std::endl;
|
|
||||||
std::cin>>ip; // 使用getline以获取包含空格的IP地址
|
|
||||||
std::cout << "Enter the gateway port: "<<std::endl;
|
|
||||||
std::cin >> port;
|
|
||||||
ConnectToGateway(ip, port);
|
|
||||||
} else if (command == "database_operation") {
|
|
||||||
DatabaseOperation();
|
|
||||||
} else if (command == "exit") {
|
|
||||||
running = false;
|
|
||||||
} else {
|
|
||||||
std::cout << "Unknown command" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Exiting program." << std::endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,125 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <thread>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
#include <mutex>
|
|
||||||
#include <atomic>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#define BUFFER_SIZE 1024
|
|
||||||
|
|
||||||
std::vector<std::thread> threads; // 存储所有连接线程
|
|
||||||
std::map<int, int> sockets; // 存储套接字
|
|
||||||
std::mutex sockets_mutex; // 用于同步访问 sockets
|
|
||||||
std::atomic<bool> exit_flag(false); // 原子退出标志
|
|
||||||
|
|
||||||
|
|
||||||
// 维护连接的函数
|
|
||||||
void KeepConnection(int sock) {
|
|
||||||
char buffer[BUFFER_SIZE];
|
|
||||||
int nbytes;
|
|
||||||
while (!exit_flag) {
|
|
||||||
nbytes = recv(sock, buffer, BUFFER_SIZE, 0);
|
|
||||||
if (nbytes <= 0) {
|
|
||||||
std::cout << "Gateway disconnected" << std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
std::cout << "Received from gateway (Socket " << sock << "): " << buffer << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(sockets_mutex);
|
|
||||||
sockets.erase(sock); // 从集合中移除套接字
|
|
||||||
}
|
|
||||||
close(sock);
|
|
||||||
}
|
|
||||||
// 连接到网关的函数
|
|
||||||
void ConnectToGateway(const std::string& ip, int port) {
|
|
||||||
int sock = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
if (sock < 0) {
|
|
||||||
perror("Could not create socket");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct sockaddr_in server_addr;
|
|
||||||
server_addr.sin_family = AF_INET;
|
|
||||||
server_addr.sin_port = htons(port);
|
|
||||||
if (inet_pton(AF_INET, ip.c_str(), &server_addr.sin_addr) <= 0) {
|
|
||||||
perror("Invalid address");
|
|
||||||
close(sock);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
|
||||||
perror("Connection to the server failed");
|
|
||||||
close(sock);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lock(sockets_mutex);
|
|
||||||
sockets[sock] = 1; // 将套接字添加到集合中
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Connected to gateway at " << ip << ":" << port << " (Socket " << sock << ")" << std::endl;
|
|
||||||
|
|
||||||
// 在新线程中维护连接
|
|
||||||
threads.emplace_back(KeepConnection, sock);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
std::string command, ip;
|
|
||||||
int port;
|
|
||||||
bool in_connect_mode = false;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
std::cout << "Enter command (connect/exitconnect/exit): ";
|
|
||||||
std::cin >> command;
|
|
||||||
|
|
||||||
if (command == "connect") {
|
|
||||||
if (in_connect_mode) {
|
|
||||||
std::cout << "Already in connect mode." << std::endl;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
in_connect_mode = true; // 进入连接模式
|
|
||||||
std::cout << "Enter the gateway IP address: ";
|
|
||||||
std::cin >> ip;
|
|
||||||
std::cout << "Enter the gateway port: ";
|
|
||||||
std::cin >> port;
|
|
||||||
ConnectToGateway(ip, port);
|
|
||||||
} else if (command == "exitconnect") {
|
|
||||||
if (!in_connect_mode) {
|
|
||||||
std::cout << "Not in connect mode." << std::endl;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
in_connect_mode = false; // 退出连接模式
|
|
||||||
std::cout << "Exiting connect mode." << std::endl;
|
|
||||||
} else if (command == "exit") {
|
|
||||||
exit_flag = true; // 设置退出标志
|
|
||||||
std::cout << "Exiting program." << std::endl;
|
|
||||||
// 关闭所有套接字
|
|
||||||
for (auto& sock_pair : sockets) {
|
|
||||||
shutdown(sock_pair.first, SHUT_RDWR); // 关闭套接字的发送和接收
|
|
||||||
close(sock_pair.first);
|
|
||||||
}
|
|
||||||
sockets.clear();
|
|
||||||
// 等待所有线程结束
|
|
||||||
for (auto& thread : threads) {
|
|
||||||
if (thread.joinable()) {
|
|
||||||
thread.join();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
threads.clear();
|
|
||||||
break; // 退出主循环
|
|
||||||
} else {
|
|
||||||
std::cout << "Unknown command" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <thread>
|
|
||||||
#include <cstring>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#define PORT 8080
|
|
||||||
#define MAX_CLIENTS 5
|
|
||||||
#define BUFFER_SIZE 1024
|
|
||||||
|
|
||||||
// 声明 handle_client 函数
|
|
||||||
void handle_client(int client_socket);
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
int server_fd, new_socket;
|
|
||||||
struct sockaddr_in server_addr, client_addr;
|
|
||||||
socklen_t client_len = sizeof(client_addr);
|
|
||||||
char buffer[BUFFER_SIZE];
|
|
||||||
int opt = 1;
|
|
||||||
|
|
||||||
// 创建套接字
|
|
||||||
server_fd = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
if (server_fd < 0) {
|
|
||||||
perror("socket creation failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置选项,允许重用地址
|
|
||||||
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
|
|
||||||
perror("setsockopt failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
server_addr.sin_family = AF_INET;
|
|
||||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
|
||||||
server_addr.sin_port = htons(PORT);
|
|
||||||
|
|
||||||
// 绑定
|
|
||||||
if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
|
|
||||||
perror("bind failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 监听
|
|
||||||
if (listen(server_fd, MAX_CLIENTS) < 0) {
|
|
||||||
perror("listen failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "Server listening on port " << PORT << std::endl;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
client_len = sizeof(client_addr);
|
|
||||||
new_socket = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);
|
|
||||||
if (new_socket < 0) {
|
|
||||||
perror("accept failed");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "New client connected from " << inet_ntoa(client_addr.sin_addr) << " port " << ntohs(client_addr.sin_port) << std::endl;
|
|
||||||
|
|
||||||
// 创建并启动线程处理客户端
|
|
||||||
std::thread(handle_client, new_socket).detach();
|
|
||||||
}
|
|
||||||
|
|
||||||
close(server_fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定义 handle_client 函数
|
|
||||||
void handle_client(int client_socket) {
|
|
||||||
while (true) {
|
|
||||||
char buffer[BUFFER_SIZE];
|
|
||||||
memset(buffer, 0, BUFFER_SIZE); // 清空缓冲区
|
|
||||||
int nbytes = read(client_socket, buffer, BUFFER_SIZE);
|
|
||||||
if (nbytes <= 0) {
|
|
||||||
std::cout << "Client disconnected." << std::endl;
|
|
||||||
close(client_socket);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
std::cout << "Received message from client: " << buffer << std::endl;
|
|
||||||
// 这里可以添加更多的处理逻辑
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
fastcgi_param QUERY_STRING $query_string;
|
|
||||||
fastcgi_param REQUEST_METHOD $request_method;
|
|
||||||
fastcgi_param CONTENT_TYPE $content_type;
|
|
||||||
fastcgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
|
||||||
fastcgi_param REQUEST_URI $request_uri;
|
|
||||||
fastcgi_param DOCUMENT_URI $document_uri;
|
|
||||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
fastcgi_param REQUEST_SCHEME $scheme;
|
|
||||||
fastcgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
|
||||||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
|
|
||||||
|
|
||||||
fastcgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
fastcgi_param REMOTE_PORT $remote_port;
|
|
||||||
fastcgi_param SERVER_ADDR $server_addr;
|
|
||||||
fastcgi_param SERVER_PORT $server_port;
|
|
||||||
fastcgi_param SERVER_NAME $server_name;
|
|
||||||
|
|
||||||
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
|
||||||
fastcgi_param REDIRECT_STATUS 200;
|
|
@ -1,25 +0,0 @@
|
|||||||
|
|
||||||
fastcgi_param QUERY_STRING $query_string;
|
|
||||||
fastcgi_param REQUEST_METHOD $request_method;
|
|
||||||
fastcgi_param CONTENT_TYPE $content_type;
|
|
||||||
fastcgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
|
||||||
fastcgi_param REQUEST_URI $request_uri;
|
|
||||||
fastcgi_param DOCUMENT_URI $document_uri;
|
|
||||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
fastcgi_param REQUEST_SCHEME $scheme;
|
|
||||||
fastcgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
|
||||||
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
|
|
||||||
|
|
||||||
fastcgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
fastcgi_param REMOTE_PORT $remote_port;
|
|
||||||
fastcgi_param SERVER_ADDR $server_addr;
|
|
||||||
fastcgi_param SERVER_PORT $server_port;
|
|
||||||
fastcgi_param SERVER_NAME $server_name;
|
|
||||||
|
|
||||||
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
|
||||||
fastcgi_param REDIRECT_STATUS 200;
|
|
@ -1,109 +0,0 @@
|
|||||||
|
|
||||||
# This map is not a full koi8-r <> utf8 map: it does not contain
|
|
||||||
# box-drawing and some other characters. Besides this map contains
|
|
||||||
# several koi8-u and Byelorussian letters which are not in koi8-r.
|
|
||||||
# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
|
|
||||||
# map instead.
|
|
||||||
|
|
||||||
charset_map koi8-r utf-8 {
|
|
||||||
|
|
||||||
80 E282AC ; # euro
|
|
||||||
|
|
||||||
95 E280A2 ; # bullet
|
|
||||||
|
|
||||||
9A C2A0 ; #
|
|
||||||
|
|
||||||
9E C2B7 ; # ·
|
|
||||||
|
|
||||||
A3 D191 ; # small yo
|
|
||||||
A4 D194 ; # small Ukrainian ye
|
|
||||||
|
|
||||||
A6 D196 ; # small Ukrainian i
|
|
||||||
A7 D197 ; # small Ukrainian yi
|
|
||||||
|
|
||||||
AD D291 ; # small Ukrainian soft g
|
|
||||||
AE D19E ; # small Byelorussian short u
|
|
||||||
|
|
||||||
B0 C2B0 ; # °
|
|
||||||
|
|
||||||
B3 D081 ; # capital YO
|
|
||||||
B4 D084 ; # capital Ukrainian YE
|
|
||||||
|
|
||||||
B6 D086 ; # capital Ukrainian I
|
|
||||||
B7 D087 ; # capital Ukrainian YI
|
|
||||||
|
|
||||||
B9 E28496 ; # numero sign
|
|
||||||
|
|
||||||
BD D290 ; # capital Ukrainian soft G
|
|
||||||
BE D18E ; # capital Byelorussian short U
|
|
||||||
|
|
||||||
BF C2A9 ; # (C)
|
|
||||||
|
|
||||||
C0 D18E ; # small yu
|
|
||||||
C1 D0B0 ; # small a
|
|
||||||
C2 D0B1 ; # small b
|
|
||||||
C3 D186 ; # small ts
|
|
||||||
C4 D0B4 ; # small d
|
|
||||||
C5 D0B5 ; # small ye
|
|
||||||
C6 D184 ; # small f
|
|
||||||
C7 D0B3 ; # small g
|
|
||||||
C8 D185 ; # small kh
|
|
||||||
C9 D0B8 ; # small i
|
|
||||||
CA D0B9 ; # small j
|
|
||||||
CB D0BA ; # small k
|
|
||||||
CC D0BB ; # small l
|
|
||||||
CD D0BC ; # small m
|
|
||||||
CE D0BD ; # small n
|
|
||||||
CF D0BE ; # small o
|
|
||||||
|
|
||||||
D0 D0BF ; # small p
|
|
||||||
D1 D18F ; # small ya
|
|
||||||
D2 D180 ; # small r
|
|
||||||
D3 D181 ; # small s
|
|
||||||
D4 D182 ; # small t
|
|
||||||
D5 D183 ; # small u
|
|
||||||
D6 D0B6 ; # small zh
|
|
||||||
D7 D0B2 ; # small v
|
|
||||||
D8 D18C ; # small soft sign
|
|
||||||
D9 D18B ; # small y
|
|
||||||
DA D0B7 ; # small z
|
|
||||||
DB D188 ; # small sh
|
|
||||||
DC D18D ; # small e
|
|
||||||
DD D189 ; # small shch
|
|
||||||
DE D187 ; # small ch
|
|
||||||
DF D18A ; # small hard sign
|
|
||||||
|
|
||||||
E0 D0AE ; # capital YU
|
|
||||||
E1 D090 ; # capital A
|
|
||||||
E2 D091 ; # capital B
|
|
||||||
E3 D0A6 ; # capital TS
|
|
||||||
E4 D094 ; # capital D
|
|
||||||
E5 D095 ; # capital YE
|
|
||||||
E6 D0A4 ; # capital F
|
|
||||||
E7 D093 ; # capital G
|
|
||||||
E8 D0A5 ; # capital KH
|
|
||||||
E9 D098 ; # capital I
|
|
||||||
EA D099 ; # capital J
|
|
||||||
EB D09A ; # capital K
|
|
||||||
EC D09B ; # capital L
|
|
||||||
ED D09C ; # capital M
|
|
||||||
EE D09D ; # capital N
|
|
||||||
EF D09E ; # capital O
|
|
||||||
|
|
||||||
F0 D09F ; # capital P
|
|
||||||
F1 D0AF ; # capital YA
|
|
||||||
F2 D0A0 ; # capital R
|
|
||||||
F3 D0A1 ; # capital S
|
|
||||||
F4 D0A2 ; # capital T
|
|
||||||
F5 D0A3 ; # capital U
|
|
||||||
F6 D096 ; # capital ZH
|
|
||||||
F7 D092 ; # capital V
|
|
||||||
F8 D0AC ; # capital soft sign
|
|
||||||
F9 D0AB ; # capital Y
|
|
||||||
FA D097 ; # capital Z
|
|
||||||
FB D0A8 ; # capital SH
|
|
||||||
FC D0AD ; # capital E
|
|
||||||
FD D0A9 ; # capital SHCH
|
|
||||||
FE D0A7 ; # capital CH
|
|
||||||
FF D0AA ; # capital hard sign
|
|
||||||
}
|
|
@ -1,103 +0,0 @@
|
|||||||
|
|
||||||
charset_map koi8-r windows-1251 {
|
|
||||||
|
|
||||||
80 88 ; # euro
|
|
||||||
|
|
||||||
95 95 ; # bullet
|
|
||||||
|
|
||||||
9A A0 ; #
|
|
||||||
|
|
||||||
9E B7 ; # ·
|
|
||||||
|
|
||||||
A3 B8 ; # small yo
|
|
||||||
A4 BA ; # small Ukrainian ye
|
|
||||||
|
|
||||||
A6 B3 ; # small Ukrainian i
|
|
||||||
A7 BF ; # small Ukrainian yi
|
|
||||||
|
|
||||||
AD B4 ; # small Ukrainian soft g
|
|
||||||
AE A2 ; # small Byelorussian short u
|
|
||||||
|
|
||||||
B0 B0 ; # °
|
|
||||||
|
|
||||||
B3 A8 ; # capital YO
|
|
||||||
B4 AA ; # capital Ukrainian YE
|
|
||||||
|
|
||||||
B6 B2 ; # capital Ukrainian I
|
|
||||||
B7 AF ; # capital Ukrainian YI
|
|
||||||
|
|
||||||
B9 B9 ; # numero sign
|
|
||||||
|
|
||||||
BD A5 ; # capital Ukrainian soft G
|
|
||||||
BE A1 ; # capital Byelorussian short U
|
|
||||||
|
|
||||||
BF A9 ; # (C)
|
|
||||||
|
|
||||||
C0 FE ; # small yu
|
|
||||||
C1 E0 ; # small a
|
|
||||||
C2 E1 ; # small b
|
|
||||||
C3 F6 ; # small ts
|
|
||||||
C4 E4 ; # small d
|
|
||||||
C5 E5 ; # small ye
|
|
||||||
C6 F4 ; # small f
|
|
||||||
C7 E3 ; # small g
|
|
||||||
C8 F5 ; # small kh
|
|
||||||
C9 E8 ; # small i
|
|
||||||
CA E9 ; # small j
|
|
||||||
CB EA ; # small k
|
|
||||||
CC EB ; # small l
|
|
||||||
CD EC ; # small m
|
|
||||||
CE ED ; # small n
|
|
||||||
CF EE ; # small o
|
|
||||||
|
|
||||||
D0 EF ; # small p
|
|
||||||
D1 FF ; # small ya
|
|
||||||
D2 F0 ; # small r
|
|
||||||
D3 F1 ; # small s
|
|
||||||
D4 F2 ; # small t
|
|
||||||
D5 F3 ; # small u
|
|
||||||
D6 E6 ; # small zh
|
|
||||||
D7 E2 ; # small v
|
|
||||||
D8 FC ; # small soft sign
|
|
||||||
D9 FB ; # small y
|
|
||||||
DA E7 ; # small z
|
|
||||||
DB F8 ; # small sh
|
|
||||||
DC FD ; # small e
|
|
||||||
DD F9 ; # small shch
|
|
||||||
DE F7 ; # small ch
|
|
||||||
DF FA ; # small hard sign
|
|
||||||
|
|
||||||
E0 DE ; # capital YU
|
|
||||||
E1 C0 ; # capital A
|
|
||||||
E2 C1 ; # capital B
|
|
||||||
E3 D6 ; # capital TS
|
|
||||||
E4 C4 ; # capital D
|
|
||||||
E5 C5 ; # capital YE
|
|
||||||
E6 D4 ; # capital F
|
|
||||||
E7 C3 ; # capital G
|
|
||||||
E8 D5 ; # capital KH
|
|
||||||
E9 C8 ; # capital I
|
|
||||||
EA C9 ; # capital J
|
|
||||||
EB CA ; # capital K
|
|
||||||
EC CB ; # capital L
|
|
||||||
ED CC ; # capital M
|
|
||||||
EE CD ; # capital N
|
|
||||||
EF CE ; # capital O
|
|
||||||
|
|
||||||
F0 CF ; # capital P
|
|
||||||
F1 DF ; # capital YA
|
|
||||||
F2 D0 ; # capital R
|
|
||||||
F3 D1 ; # capital S
|
|
||||||
F4 D2 ; # capital T
|
|
||||||
F5 D3 ; # capital U
|
|
||||||
F6 C6 ; # capital ZH
|
|
||||||
F7 C2 ; # capital V
|
|
||||||
F8 DC ; # capital soft sign
|
|
||||||
F9 DB ; # capital Y
|
|
||||||
FA C7 ; # capital Z
|
|
||||||
FB D8 ; # capital SH
|
|
||||||
FC DD ; # capital E
|
|
||||||
FD D9 ; # capital SHCH
|
|
||||||
FE D7 ; # capital CH
|
|
||||||
FF DA ; # capital hard sign
|
|
||||||
}
|
|
@ -1,99 +0,0 @@
|
|||||||
|
|
||||||
types {
|
|
||||||
text/html html htm shtml;
|
|
||||||
text/css css;
|
|
||||||
text/xml xml;
|
|
||||||
image/gif gif;
|
|
||||||
image/jpeg jpeg jpg;
|
|
||||||
application/javascript js;
|
|
||||||
application/atom+xml atom;
|
|
||||||
application/rss+xml rss;
|
|
||||||
|
|
||||||
text/mathml mml;
|
|
||||||
text/plain txt;
|
|
||||||
text/vnd.sun.j2me.app-descriptor jad;
|
|
||||||
text/vnd.wap.wml wml;
|
|
||||||
text/x-component htc;
|
|
||||||
|
|
||||||
image/avif avif;
|
|
||||||
image/png png;
|
|
||||||
image/svg+xml svg svgz;
|
|
||||||
image/tiff tif tiff;
|
|
||||||
image/vnd.wap.wbmp wbmp;
|
|
||||||
image/webp webp;
|
|
||||||
image/x-icon ico;
|
|
||||||
image/x-jng jng;
|
|
||||||
image/x-ms-bmp bmp;
|
|
||||||
|
|
||||||
font/woff woff;
|
|
||||||
font/woff2 woff2;
|
|
||||||
|
|
||||||
application/java-archive jar war ear;
|
|
||||||
application/json json;
|
|
||||||
application/mac-binhex40 hqx;
|
|
||||||
application/msword doc;
|
|
||||||
application/pdf pdf;
|
|
||||||
application/postscript ps eps ai;
|
|
||||||
application/rtf rtf;
|
|
||||||
application/vnd.apple.mpegurl m3u8;
|
|
||||||
application/vnd.google-earth.kml+xml kml;
|
|
||||||
application/vnd.google-earth.kmz kmz;
|
|
||||||
application/vnd.ms-excel xls;
|
|
||||||
application/vnd.ms-fontobject eot;
|
|
||||||
application/vnd.ms-powerpoint ppt;
|
|
||||||
application/vnd.oasis.opendocument.graphics odg;
|
|
||||||
application/vnd.oasis.opendocument.presentation odp;
|
|
||||||
application/vnd.oasis.opendocument.spreadsheet ods;
|
|
||||||
application/vnd.oasis.opendocument.text odt;
|
|
||||||
application/vnd.openxmlformats-officedocument.presentationml.presentation
|
|
||||||
pptx;
|
|
||||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
|
||||||
xlsx;
|
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
|
||||||
docx;
|
|
||||||
application/vnd.wap.wmlc wmlc;
|
|
||||||
application/wasm wasm;
|
|
||||||
application/x-7z-compressed 7z;
|
|
||||||
application/x-cocoa cco;
|
|
||||||
application/x-java-archive-diff jardiff;
|
|
||||||
application/x-java-jnlp-file jnlp;
|
|
||||||
application/x-makeself run;
|
|
||||||
application/x-perl pl pm;
|
|
||||||
application/x-pilot prc pdb;
|
|
||||||
application/x-rar-compressed rar;
|
|
||||||
application/x-redhat-package-manager rpm;
|
|
||||||
application/x-sea sea;
|
|
||||||
application/x-shockwave-flash swf;
|
|
||||||
application/x-stuffit sit;
|
|
||||||
application/x-tcl tcl tk;
|
|
||||||
application/x-x509-ca-cert der pem crt;
|
|
||||||
application/x-xpinstall xpi;
|
|
||||||
application/xhtml+xml xhtml;
|
|
||||||
application/xspf+xml xspf;
|
|
||||||
application/zip zip;
|
|
||||||
|
|
||||||
application/octet-stream bin exe dll;
|
|
||||||
application/octet-stream deb;
|
|
||||||
application/octet-stream dmg;
|
|
||||||
application/octet-stream iso img;
|
|
||||||
application/octet-stream msi msp msm;
|
|
||||||
|
|
||||||
audio/midi mid midi kar;
|
|
||||||
audio/mpeg mp3;
|
|
||||||
audio/ogg ogg;
|
|
||||||
audio/x-m4a m4a;
|
|
||||||
audio/x-realaudio ra;
|
|
||||||
|
|
||||||
video/3gpp 3gpp 3gp;
|
|
||||||
video/mp2t ts;
|
|
||||||
video/mp4 mp4;
|
|
||||||
video/mpeg mpeg mpg;
|
|
||||||
video/quicktime mov;
|
|
||||||
video/webm webm;
|
|
||||||
video/x-flv flv;
|
|
||||||
video/x-m4v m4v;
|
|
||||||
video/x-mng mng;
|
|
||||||
video/x-ms-asf asx asf;
|
|
||||||
video/x-ms-wmv wmv;
|
|
||||||
video/x-msvideo avi;
|
|
||||||
}
|
|
@ -1,117 +0,0 @@
|
|||||||
|
|
||||||
#user nobody;
|
|
||||||
worker_processes 1;
|
|
||||||
|
|
||||||
#error_log logs/error.log;
|
|
||||||
#error_log logs/error.log notice;
|
|
||||||
#error_log logs/error.log info;
|
|
||||||
|
|
||||||
#pid logs/nginx.pid;
|
|
||||||
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
http {
|
|
||||||
include mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
||||||
# '$status $body_bytes_sent "$http_referer" '
|
|
||||||
# '"$http_user_agent" "$http_x_forwarded_for"';
|
|
||||||
|
|
||||||
#access_log logs/access.log main;
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
#tcp_nopush on;
|
|
||||||
|
|
||||||
#keepalive_timeout 0;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
|
|
||||||
#gzip on;
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
|
|
||||||
#charset koi8-r;
|
|
||||||
|
|
||||||
#access_log logs/host.access.log main;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root html;
|
|
||||||
index index.html index.htm;
|
|
||||||
}
|
|
||||||
|
|
||||||
#error_page 404 /404.html;
|
|
||||||
|
|
||||||
# redirect server error pages to the static page /50x.html
|
|
||||||
#
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
|
||||||
location = /50x.html {
|
|
||||||
root html;
|
|
||||||
}
|
|
||||||
|
|
||||||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
|
||||||
#
|
|
||||||
#location ~ \.php$ {
|
|
||||||
# proxy_pass http://127.0.0.1;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
|
||||||
#
|
|
||||||
#location ~ \.php$ {
|
|
||||||
# root html;
|
|
||||||
# fastcgi_pass 127.0.0.1:9000;
|
|
||||||
# fastcgi_index index.php;
|
|
||||||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
|
||||||
# include fastcgi_params;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# deny access to .htaccess files, if Apache's document root
|
|
||||||
# concurs with nginx's one
|
|
||||||
#
|
|
||||||
#location ~ /\.ht {
|
|
||||||
# deny all;
|
|
||||||
#}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# another virtual host using mix of IP-, name-, and port-based configuration
|
|
||||||
#
|
|
||||||
#server {
|
|
||||||
# listen 8000;
|
|
||||||
# listen somename:8080;
|
|
||||||
# server_name somename alias another.alias;
|
|
||||||
|
|
||||||
# location / {
|
|
||||||
# root html;
|
|
||||||
# index index.html index.htm;
|
|
||||||
# }
|
|
||||||
#}
|
|
||||||
|
|
||||||
|
|
||||||
# HTTPS server
|
|
||||||
#
|
|
||||||
#server {
|
|
||||||
# listen 443 ssl;
|
|
||||||
# server_name localhost;
|
|
||||||
|
|
||||||
# ssl_certificate cert.pem;
|
|
||||||
# ssl_certificate_key cert.key;
|
|
||||||
|
|
||||||
# ssl_session_cache shared:SSL:1m;
|
|
||||||
# ssl_session_timeout 5m;
|
|
||||||
|
|
||||||
# ssl_ciphers HIGH:!aNULL:!MD5;
|
|
||||||
# ssl_prefer_server_ciphers on;
|
|
||||||
|
|
||||||
# location / {
|
|
||||||
# root html;
|
|
||||||
# index index.html index.htm;
|
|
||||||
# }
|
|
||||||
#}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
|
|
||||||
scgi_param REQUEST_METHOD $request_method;
|
|
||||||
scgi_param REQUEST_URI $request_uri;
|
|
||||||
scgi_param QUERY_STRING $query_string;
|
|
||||||
scgi_param CONTENT_TYPE $content_type;
|
|
||||||
|
|
||||||
scgi_param DOCUMENT_URI $document_uri;
|
|
||||||
scgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
scgi_param SCGI 1;
|
|
||||||
scgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
scgi_param REQUEST_SCHEME $scheme;
|
|
||||||
scgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
scgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
scgi_param REMOTE_PORT $remote_port;
|
|
||||||
scgi_param SERVER_PORT $server_port;
|
|
||||||
scgi_param SERVER_NAME $server_name;
|
|
@ -1,17 +0,0 @@
|
|||||||
|
|
||||||
uwsgi_param QUERY_STRING $query_string;
|
|
||||||
uwsgi_param REQUEST_METHOD $request_method;
|
|
||||||
uwsgi_param CONTENT_TYPE $content_type;
|
|
||||||
uwsgi_param CONTENT_LENGTH $content_length;
|
|
||||||
|
|
||||||
uwsgi_param REQUEST_URI $request_uri;
|
|
||||||
uwsgi_param PATH_INFO $document_uri;
|
|
||||||
uwsgi_param DOCUMENT_ROOT $document_root;
|
|
||||||
uwsgi_param SERVER_PROTOCOL $server_protocol;
|
|
||||||
uwsgi_param REQUEST_SCHEME $scheme;
|
|
||||||
uwsgi_param HTTPS $https if_not_empty;
|
|
||||||
|
|
||||||
uwsgi_param REMOTE_ADDR $remote_addr;
|
|
||||||
uwsgi_param REMOTE_PORT $remote_port;
|
|
||||||
uwsgi_param SERVER_PORT $server_port;
|
|
||||||
uwsgi_param SERVER_NAME $server_name;
|
|
@ -1,126 +0,0 @@
|
|||||||
|
|
||||||
# This map is not a full windows-1251 <> utf8 map: it does not
|
|
||||||
# contain Serbian and Macedonian letters. If you need a full map,
|
|
||||||
# use contrib/unicode2nginx/win-utf map instead.
|
|
||||||
|
|
||||||
charset_map windows-1251 utf-8 {
|
|
||||||
|
|
||||||
82 E2809A ; # single low-9 quotation mark
|
|
||||||
|
|
||||||
84 E2809E ; # double low-9 quotation mark
|
|
||||||
85 E280A6 ; # ellipsis
|
|
||||||
86 E280A0 ; # dagger
|
|
||||||
87 E280A1 ; # double dagger
|
|
||||||
88 E282AC ; # euro
|
|
||||||
89 E280B0 ; # per mille
|
|
||||||
|
|
||||||
91 E28098 ; # left single quotation mark
|
|
||||||
92 E28099 ; # right single quotation mark
|
|
||||||
93 E2809C ; # left double quotation mark
|
|
||||||
94 E2809D ; # right double quotation mark
|
|
||||||
95 E280A2 ; # bullet
|
|
||||||
96 E28093 ; # en dash
|
|
||||||
97 E28094 ; # em dash
|
|
||||||
|
|
||||||
99 E284A2 ; # trade mark sign
|
|
||||||
|
|
||||||
A0 C2A0 ; #
|
|
||||||
A1 D18E ; # capital Byelorussian short U
|
|
||||||
A2 D19E ; # small Byelorussian short u
|
|
||||||
|
|
||||||
A4 C2A4 ; # currency sign
|
|
||||||
A5 D290 ; # capital Ukrainian soft G
|
|
||||||
A6 C2A6 ; # borken bar
|
|
||||||
A7 C2A7 ; # section sign
|
|
||||||
A8 D081 ; # capital YO
|
|
||||||
A9 C2A9 ; # (C)
|
|
||||||
AA D084 ; # capital Ukrainian YE
|
|
||||||
AB C2AB ; # left-pointing double angle quotation mark
|
|
||||||
AC C2AC ; # not sign
|
|
||||||
AD C2AD ; # soft hypen
|
|
||||||
AE C2AE ; # (R)
|
|
||||||
AF D087 ; # capital Ukrainian YI
|
|
||||||
|
|
||||||
B0 C2B0 ; # °
|
|
||||||
B1 C2B1 ; # plus-minus sign
|
|
||||||
B2 D086 ; # capital Ukrainian I
|
|
||||||
B3 D196 ; # small Ukrainian i
|
|
||||||
B4 D291 ; # small Ukrainian soft g
|
|
||||||
B5 C2B5 ; # micro sign
|
|
||||||
B6 C2B6 ; # pilcrow sign
|
|
||||||
B7 C2B7 ; # ·
|
|
||||||
B8 D191 ; # small yo
|
|
||||||
B9 E28496 ; # numero sign
|
|
||||||
BA D194 ; # small Ukrainian ye
|
|
||||||
BB C2BB ; # right-pointing double angle quotation mark
|
|
||||||
|
|
||||||
BF D197 ; # small Ukrainian yi
|
|
||||||
|
|
||||||
C0 D090 ; # capital A
|
|
||||||
C1 D091 ; # capital B
|
|
||||||
C2 D092 ; # capital V
|
|
||||||
C3 D093 ; # capital G
|
|
||||||
C4 D094 ; # capital D
|
|
||||||
C5 D095 ; # capital YE
|
|
||||||
C6 D096 ; # capital ZH
|
|
||||||
C7 D097 ; # capital Z
|
|
||||||
C8 D098 ; # capital I
|
|
||||||
C9 D099 ; # capital J
|
|
||||||
CA D09A ; # capital K
|
|
||||||
CB D09B ; # capital L
|
|
||||||
CC D09C ; # capital M
|
|
||||||
CD D09D ; # capital N
|
|
||||||
CE D09E ; # capital O
|
|
||||||
CF D09F ; # capital P
|
|
||||||
|
|
||||||
D0 D0A0 ; # capital R
|
|
||||||
D1 D0A1 ; # capital S
|
|
||||||
D2 D0A2 ; # capital T
|
|
||||||
D3 D0A3 ; # capital U
|
|
||||||
D4 D0A4 ; # capital F
|
|
||||||
D5 D0A5 ; # capital KH
|
|
||||||
D6 D0A6 ; # capital TS
|
|
||||||
D7 D0A7 ; # capital CH
|
|
||||||
D8 D0A8 ; # capital SH
|
|
||||||
D9 D0A9 ; # capital SHCH
|
|
||||||
DA D0AA ; # capital hard sign
|
|
||||||
DB D0AB ; # capital Y
|
|
||||||
DC D0AC ; # capital soft sign
|
|
||||||
DD D0AD ; # capital E
|
|
||||||
DE D0AE ; # capital YU
|
|
||||||
DF D0AF ; # capital YA
|
|
||||||
|
|
||||||
E0 D0B0 ; # small a
|
|
||||||
E1 D0B1 ; # small b
|
|
||||||
E2 D0B2 ; # small v
|
|
||||||
E3 D0B3 ; # small g
|
|
||||||
E4 D0B4 ; # small d
|
|
||||||
E5 D0B5 ; # small ye
|
|
||||||
E6 D0B6 ; # small zh
|
|
||||||
E7 D0B7 ; # small z
|
|
||||||
E8 D0B8 ; # small i
|
|
||||||
E9 D0B9 ; # small j
|
|
||||||
EA D0BA ; # small k
|
|
||||||
EB D0BB ; # small l
|
|
||||||
EC D0BC ; # small m
|
|
||||||
ED D0BD ; # small n
|
|
||||||
EE D0BE ; # small o
|
|
||||||
EF D0BF ; # small p
|
|
||||||
|
|
||||||
F0 D180 ; # small r
|
|
||||||
F1 D181 ; # small s
|
|
||||||
F2 D182 ; # small t
|
|
||||||
F3 D183 ; # small u
|
|
||||||
F4 D184 ; # small f
|
|
||||||
F5 D185 ; # small kh
|
|
||||||
F6 D186 ; # small ts
|
|
||||||
F7 D187 ; # small ch
|
|
||||||
F8 D188 ; # small sh
|
|
||||||
F9 D189 ; # small shch
|
|
||||||
FA D18A ; # small hard sign
|
|
||||||
FB D18B ; # small y
|
|
||||||
FC D18C ; # small soft sign
|
|
||||||
FD D18D ; # small e
|
|
||||||
FE D18E ; # small yu
|
|
||||||
FF D18F ; # small ya
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
|
|
||||||
geo2nginx.pl by Andrei Nigmatulin
|
|
||||||
|
|
||||||
The perl script to convert CSV geoip database ( free download
|
|
||||||
at http://www.maxmind.com/app/geoip_country ) to format, suitable
|
|
||||||
for use by the ngx_http_geo_module.
|
|
||||||
|
|
||||||
|
|
||||||
unicode2nginx by Maxim Dounin
|
|
||||||
|
|
||||||
The perl script to convert unicode mappings ( available
|
|
||||||
at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx
|
|
||||||
configuration file format.
|
|
||||||
Two generated full maps for windows-1251 and koi8-r.
|
|
||||||
|
|
||||||
|
|
||||||
vim by Evan Miller
|
|
||||||
|
|
||||||
Syntax highlighting of nginx configuration for vim, to be
|
|
||||||
placed into ~/.vim/.
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
|
|
||||||
# (c) Andrei Nigmatulin, 2005
|
|
||||||
#
|
|
||||||
# this script provided "as is", without any warranties. use it at your own risk.
|
|
||||||
#
|
|
||||||
# special thanx to Andrew Sitnikov for perl port
|
|
||||||
#
|
|
||||||
# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country)
|
|
||||||
# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx)
|
|
||||||
#
|
|
||||||
# for example, line with ip range
|
|
||||||
#
|
|
||||||
# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation"
|
|
||||||
#
|
|
||||||
# will be converted to four subnetworks:
|
|
||||||
#
|
|
||||||
# 62.16.68.0/22 RU;
|
|
||||||
# 62.16.72.0/21 RU;
|
|
||||||
# 62.16.80.0/20 RU;
|
|
||||||
# 62.16.96.0/19 RU;
|
|
||||||
|
|
||||||
|
|
||||||
use warnings;
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
while( <STDIN> ){
|
|
||||||
if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){
|
|
||||||
print_subnets($1, $2, $3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub print_subnets {
|
|
||||||
my ($a1, $a2, $c) = @_;
|
|
||||||
my $l;
|
|
||||||
while ($a1 <= $a2) {
|
|
||||||
for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){};
|
|
||||||
print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n";
|
|
||||||
$a1 += (1 << $l);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub long2ip {
|
|
||||||
my $ip = shift;
|
|
||||||
|
|
||||||
my $str = 0;
|
|
||||||
|
|
||||||
$str = ($ip & 255);
|
|
||||||
|
|
||||||
$ip >>= 8;
|
|
||||||
$str = ($ip & 255).".$str";
|
|
||||||
|
|
||||||
$ip >>= 8;
|
|
||||||
$str = ($ip & 255).".$str";
|
|
||||||
|
|
||||||
$ip >>= 8;
|
|
||||||
$str = ($ip & 255).".$str";
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
charset_map koi8-r utf-8 {
|
|
||||||
|
|
||||||
80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL
|
|
||||||
81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL
|
|
||||||
82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
|
||||||
83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT
|
|
||||||
84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT
|
|
||||||
85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT
|
|
||||||
86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
|
||||||
87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
|
||||||
88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
|
||||||
89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
|
||||||
8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
|
||||||
8B E29680 ; # UPPER HALF BLOCK
|
|
||||||
8C E29684 ; # LOWER HALF BLOCK
|
|
||||||
8D E29688 ; # FULL BLOCK
|
|
||||||
8E E2968C ; # LEFT HALF BLOCK
|
|
||||||
8F E29690 ; # RIGHT HALF BLOCK
|
|
||||||
90 E29691 ; # LIGHT SHADE
|
|
||||||
91 E29692 ; # MEDIUM SHADE
|
|
||||||
92 E29693 ; # DARK SHADE
|
|
||||||
93 E28CA0 ; # TOP HALF INTEGRAL
|
|
||||||
94 E296A0 ; # BLACK SQUARE
|
|
||||||
95 E28899 ; # BULLET OPERATOR
|
|
||||||
96 E2889A ; # SQUARE ROOT
|
|
||||||
97 E28988 ; # ALMOST EQUAL TO
|
|
||||||
98 E289A4 ; # LESS-THAN OR EQUAL TO
|
|
||||||
99 E289A5 ; # GREATER-THAN OR EQUAL TO
|
|
||||||
9A C2A0 ; # NO-BREAK SPACE
|
|
||||||
9B E28CA1 ; # BOTTOM HALF INTEGRAL
|
|
||||||
9C C2B0 ; # DEGREE SIGN
|
|
||||||
9D C2B2 ; # SUPERSCRIPT TWO
|
|
||||||
9E C2B7 ; # MIDDLE DOT
|
|
||||||
9F C3B7 ; # DIVISION SIGN
|
|
||||||
A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL
|
|
||||||
A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL
|
|
||||||
A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
|
||||||
A3 D191 ; # CYRILLIC SMALL LETTER IO
|
|
||||||
A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
|
||||||
A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
|
||||||
A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
|
||||||
A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
|
||||||
A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
|
||||||
A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
|
||||||
AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
|
||||||
AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT
|
|
||||||
AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
|
||||||
AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
|
||||||
AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT
|
|
||||||
AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
|
||||||
B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
|
||||||
B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
|
||||||
B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
|
||||||
B3 D081 ; # CYRILLIC CAPITAL LETTER IO
|
|
||||||
B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
|
||||||
B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
|
||||||
B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
|
||||||
B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
|
||||||
B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
|
||||||
B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
|
||||||
BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
|
||||||
BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
|
||||||
BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
|
||||||
BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
|
||||||
BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
|
||||||
BF C2A9 ; # COPYRIGHT SIGN
|
|
||||||
C0 D18E ; # CYRILLIC SMALL LETTER YU
|
|
||||||
C1 D0B0 ; # CYRILLIC SMALL LETTER A
|
|
||||||
C2 D0B1 ; # CYRILLIC SMALL LETTER BE
|
|
||||||
C3 D186 ; # CYRILLIC SMALL LETTER TSE
|
|
||||||
C4 D0B4 ; # CYRILLIC SMALL LETTER DE
|
|
||||||
C5 D0B5 ; # CYRILLIC SMALL LETTER IE
|
|
||||||
C6 D184 ; # CYRILLIC SMALL LETTER EF
|
|
||||||
C7 D0B3 ; # CYRILLIC SMALL LETTER GHE
|
|
||||||
C8 D185 ; # CYRILLIC SMALL LETTER HA
|
|
||||||
C9 D0B8 ; # CYRILLIC SMALL LETTER I
|
|
||||||
CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I
|
|
||||||
CB D0BA ; # CYRILLIC SMALL LETTER KA
|
|
||||||
CC D0BB ; # CYRILLIC SMALL LETTER EL
|
|
||||||
CD D0BC ; # CYRILLIC SMALL LETTER EM
|
|
||||||
CE D0BD ; # CYRILLIC SMALL LETTER EN
|
|
||||||
CF D0BE ; # CYRILLIC SMALL LETTER O
|
|
||||||
D0 D0BF ; # CYRILLIC SMALL LETTER PE
|
|
||||||
D1 D18F ; # CYRILLIC SMALL LETTER YA
|
|
||||||
D2 D180 ; # CYRILLIC SMALL LETTER ER
|
|
||||||
D3 D181 ; # CYRILLIC SMALL LETTER ES
|
|
||||||
D4 D182 ; # CYRILLIC SMALL LETTER TE
|
|
||||||
D5 D183 ; # CYRILLIC SMALL LETTER U
|
|
||||||
D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE
|
|
||||||
D7 D0B2 ; # CYRILLIC SMALL LETTER VE
|
|
||||||
D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN
|
|
||||||
D9 D18B ; # CYRILLIC SMALL LETTER YERU
|
|
||||||
DA D0B7 ; # CYRILLIC SMALL LETTER ZE
|
|
||||||
DB D188 ; # CYRILLIC SMALL LETTER SHA
|
|
||||||
DC D18D ; # CYRILLIC SMALL LETTER E
|
|
||||||
DD D189 ; # CYRILLIC SMALL LETTER SHCHA
|
|
||||||
DE D187 ; # CYRILLIC SMALL LETTER CHE
|
|
||||||
DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN
|
|
||||||
E0 D0AE ; # CYRILLIC CAPITAL LETTER YU
|
|
||||||
E1 D090 ; # CYRILLIC CAPITAL LETTER A
|
|
||||||
E2 D091 ; # CYRILLIC CAPITAL LETTER BE
|
|
||||||
E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE
|
|
||||||
E4 D094 ; # CYRILLIC CAPITAL LETTER DE
|
|
||||||
E5 D095 ; # CYRILLIC CAPITAL LETTER IE
|
|
||||||
E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF
|
|
||||||
E7 D093 ; # CYRILLIC CAPITAL LETTER GHE
|
|
||||||
E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA
|
|
||||||
E9 D098 ; # CYRILLIC CAPITAL LETTER I
|
|
||||||
EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I
|
|
||||||
EB D09A ; # CYRILLIC CAPITAL LETTER KA
|
|
||||||
EC D09B ; # CYRILLIC CAPITAL LETTER EL
|
|
||||||
ED D09C ; # CYRILLIC CAPITAL LETTER EM
|
|
||||||
EE D09D ; # CYRILLIC CAPITAL LETTER EN
|
|
||||||
EF D09E ; # CYRILLIC CAPITAL LETTER O
|
|
||||||
F0 D09F ; # CYRILLIC CAPITAL LETTER PE
|
|
||||||
F1 D0AF ; # CYRILLIC CAPITAL LETTER YA
|
|
||||||
F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER
|
|
||||||
F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES
|
|
||||||
F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE
|
|
||||||
F5 D0A3 ; # CYRILLIC CAPITAL LETTER U
|
|
||||||
F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE
|
|
||||||
F7 D092 ; # CYRILLIC CAPITAL LETTER VE
|
|
||||||
F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN
|
|
||||||
F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU
|
|
||||||
FA D097 ; # CYRILLIC CAPITAL LETTER ZE
|
|
||||||
FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA
|
|
||||||
FC D0AD ; # CYRILLIC CAPITAL LETTER E
|
|
||||||
FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA
|
|
||||||
FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE
|
|
||||||
FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
|
|
||||||
# Convert unicode mappings to nginx configuration file format.
|
|
||||||
|
|
||||||
# You may find useful mappings in various places, including
|
|
||||||
# unicode.org official site:
|
|
||||||
#
|
|
||||||
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
|
|
||||||
# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
|
|
||||||
|
|
||||||
# Needs perl 5.6 or later.
|
|
||||||
|
|
||||||
# Written by Maxim Dounin, mdounin@mdounin.ru
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
require 5.006;
|
|
||||||
|
|
||||||
while (<>) {
|
|
||||||
# Skip comments and empty lines
|
|
||||||
|
|
||||||
next if /^#/;
|
|
||||||
next if /^\s*$/;
|
|
||||||
chomp;
|
|
||||||
|
|
||||||
# Convert mappings
|
|
||||||
|
|
||||||
if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) {
|
|
||||||
# Mapping <from-code> <unicode-code> "#" <unicode-name>
|
|
||||||
my $cs_code = $1;
|
|
||||||
my $un_code = $2;
|
|
||||||
my $un_name = $3;
|
|
||||||
|
|
||||||
# Produce UTF-8 sequence from character code;
|
|
||||||
|
|
||||||
my $un_utf8 = join('',
|
|
||||||
map { sprintf("%02X", $_) }
|
|
||||||
unpack("U0C*", pack("U", hex($un_code)))
|
|
||||||
);
|
|
||||||
|
|
||||||
print " $cs_code $un_utf8 ; $un_name\n";
|
|
||||||
|
|
||||||
} else {
|
|
||||||
warn "Unrecognized line: '$_'";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
###############################################################################
|
|
@ -1,130 +0,0 @@
|
|||||||
charset_map windows-1251 utf-8 {
|
|
||||||
|
|
||||||
80 D082 ; #CYRILLIC CAPITAL LETTER DJE
|
|
||||||
81 D083 ; #CYRILLIC CAPITAL LETTER GJE
|
|
||||||
82 E2809A ; #SINGLE LOW-9 QUOTATION MARK
|
|
||||||
83 D193 ; #CYRILLIC SMALL LETTER GJE
|
|
||||||
84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK
|
|
||||||
85 E280A6 ; #HORIZONTAL ELLIPSIS
|
|
||||||
86 E280A0 ; #DAGGER
|
|
||||||
87 E280A1 ; #DOUBLE DAGGER
|
|
||||||
88 E282AC ; #EURO SIGN
|
|
||||||
89 E280B0 ; #PER MILLE SIGN
|
|
||||||
8A D089 ; #CYRILLIC CAPITAL LETTER LJE
|
|
||||||
8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
|
||||||
8C D08A ; #CYRILLIC CAPITAL LETTER NJE
|
|
||||||
8D D08C ; #CYRILLIC CAPITAL LETTER KJE
|
|
||||||
8E D08B ; #CYRILLIC CAPITAL LETTER TSHE
|
|
||||||
8F D08F ; #CYRILLIC CAPITAL LETTER DZHE
|
|
||||||
90 D192 ; #CYRILLIC SMALL LETTER DJE
|
|
||||||
91 E28098 ; #LEFT SINGLE QUOTATION MARK
|
|
||||||
92 E28099 ; #RIGHT SINGLE QUOTATION MARK
|
|
||||||
93 E2809C ; #LEFT DOUBLE QUOTATION MARK
|
|
||||||
94 E2809D ; #RIGHT DOUBLE QUOTATION MARK
|
|
||||||
95 E280A2 ; #BULLET
|
|
||||||
96 E28093 ; #EN DASH
|
|
||||||
97 E28094 ; #EM DASH
|
|
||||||
99 E284A2 ; #TRADE MARK SIGN
|
|
||||||
9A D199 ; #CYRILLIC SMALL LETTER LJE
|
|
||||||
9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
|
||||||
9C D19A ; #CYRILLIC SMALL LETTER NJE
|
|
||||||
9D D19C ; #CYRILLIC SMALL LETTER KJE
|
|
||||||
9E D19B ; #CYRILLIC SMALL LETTER TSHE
|
|
||||||
9F D19F ; #CYRILLIC SMALL LETTER DZHE
|
|
||||||
A0 C2A0 ; #NO-BREAK SPACE
|
|
||||||
A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U
|
|
||||||
A2 D19E ; #CYRILLIC SMALL LETTER SHORT U
|
|
||||||
A3 D088 ; #CYRILLIC CAPITAL LETTER JE
|
|
||||||
A4 C2A4 ; #CURRENCY SIGN
|
|
||||||
A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
|
||||||
A6 C2A6 ; #BROKEN BAR
|
|
||||||
A7 C2A7 ; #SECTION SIGN
|
|
||||||
A8 D081 ; #CYRILLIC CAPITAL LETTER IO
|
|
||||||
A9 C2A9 ; #COPYRIGHT SIGN
|
|
||||||
AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
|
||||||
AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
||||||
AC C2AC ; #NOT SIGN
|
|
||||||
AD C2AD ; #SOFT HYPHEN
|
|
||||||
AE C2AE ; #REGISTERED SIGN
|
|
||||||
AF D087 ; #CYRILLIC CAPITAL LETTER YI
|
|
||||||
B0 C2B0 ; #DEGREE SIGN
|
|
||||||
B1 C2B1 ; #PLUS-MINUS SIGN
|
|
||||||
B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
|
||||||
B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
|
||||||
B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN
|
|
||||||
B5 C2B5 ; #MICRO SIGN
|
|
||||||
B6 C2B6 ; #PILCROW SIGN
|
|
||||||
B7 C2B7 ; #MIDDLE DOT
|
|
||||||
B8 D191 ; #CYRILLIC SMALL LETTER IO
|
|
||||||
B9 E28496 ; #NUMERO SIGN
|
|
||||||
BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE
|
|
||||||
BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
|
||||||
BC D198 ; #CYRILLIC SMALL LETTER JE
|
|
||||||
BD D085 ; #CYRILLIC CAPITAL LETTER DZE
|
|
||||||
BE D195 ; #CYRILLIC SMALL LETTER DZE
|
|
||||||
BF D197 ; #CYRILLIC SMALL LETTER YI
|
|
||||||
C0 D090 ; #CYRILLIC CAPITAL LETTER A
|
|
||||||
C1 D091 ; #CYRILLIC CAPITAL LETTER BE
|
|
||||||
C2 D092 ; #CYRILLIC CAPITAL LETTER VE
|
|
||||||
C3 D093 ; #CYRILLIC CAPITAL LETTER GHE
|
|
||||||
C4 D094 ; #CYRILLIC CAPITAL LETTER DE
|
|
||||||
C5 D095 ; #CYRILLIC CAPITAL LETTER IE
|
|
||||||
C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE
|
|
||||||
C7 D097 ; #CYRILLIC CAPITAL LETTER ZE
|
|
||||||
C8 D098 ; #CYRILLIC CAPITAL LETTER I
|
|
||||||
C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I
|
|
||||||
CA D09A ; #CYRILLIC CAPITAL LETTER KA
|
|
||||||
CB D09B ; #CYRILLIC CAPITAL LETTER EL
|
|
||||||
CC D09C ; #CYRILLIC CAPITAL LETTER EM
|
|
||||||
CD D09D ; #CYRILLIC CAPITAL LETTER EN
|
|
||||||
CE D09E ; #CYRILLIC CAPITAL LETTER O
|
|
||||||
CF D09F ; #CYRILLIC CAPITAL LETTER PE
|
|
||||||
D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER
|
|
||||||
D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES
|
|
||||||
D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE
|
|
||||||
D3 D0A3 ; #CYRILLIC CAPITAL LETTER U
|
|
||||||
D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF
|
|
||||||
D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA
|
|
||||||
D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE
|
|
||||||
D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE
|
|
||||||
D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA
|
|
||||||
D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA
|
|
||||||
DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN
|
|
||||||
DB D0AB ; #CYRILLIC CAPITAL LETTER YERU
|
|
||||||
DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN
|
|
||||||
DD D0AD ; #CYRILLIC CAPITAL LETTER E
|
|
||||||
DE D0AE ; #CYRILLIC CAPITAL LETTER YU
|
|
||||||
DF D0AF ; #CYRILLIC CAPITAL LETTER YA
|
|
||||||
E0 D0B0 ; #CYRILLIC SMALL LETTER A
|
|
||||||
E1 D0B1 ; #CYRILLIC SMALL LETTER BE
|
|
||||||
E2 D0B2 ; #CYRILLIC SMALL LETTER VE
|
|
||||||
E3 D0B3 ; #CYRILLIC SMALL LETTER GHE
|
|
||||||
E4 D0B4 ; #CYRILLIC SMALL LETTER DE
|
|
||||||
E5 D0B5 ; #CYRILLIC SMALL LETTER IE
|
|
||||||
E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE
|
|
||||||
E7 D0B7 ; #CYRILLIC SMALL LETTER ZE
|
|
||||||
E8 D0B8 ; #CYRILLIC SMALL LETTER I
|
|
||||||
E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I
|
|
||||||
EA D0BA ; #CYRILLIC SMALL LETTER KA
|
|
||||||
EB D0BB ; #CYRILLIC SMALL LETTER EL
|
|
||||||
EC D0BC ; #CYRILLIC SMALL LETTER EM
|
|
||||||
ED D0BD ; #CYRILLIC SMALL LETTER EN
|
|
||||||
EE D0BE ; #CYRILLIC SMALL LETTER O
|
|
||||||
EF D0BF ; #CYRILLIC SMALL LETTER PE
|
|
||||||
F0 D180 ; #CYRILLIC SMALL LETTER ER
|
|
||||||
F1 D181 ; #CYRILLIC SMALL LETTER ES
|
|
||||||
F2 D182 ; #CYRILLIC SMALL LETTER TE
|
|
||||||
F3 D183 ; #CYRILLIC SMALL LETTER U
|
|
||||||
F4 D184 ; #CYRILLIC SMALL LETTER EF
|
|
||||||
F5 D185 ; #CYRILLIC SMALL LETTER HA
|
|
||||||
F6 D186 ; #CYRILLIC SMALL LETTER TSE
|
|
||||||
F7 D187 ; #CYRILLIC SMALL LETTER CHE
|
|
||||||
F8 D188 ; #CYRILLIC SMALL LETTER SHA
|
|
||||||
F9 D189 ; #CYRILLIC SMALL LETTER SHCHA
|
|
||||||
FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN
|
|
||||||
FB D18B ; #CYRILLIC SMALL LETTER YERU
|
|
||||||
FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN
|
|
||||||
FD D18D ; #CYRILLIC SMALL LETTER E
|
|
||||||
FE D18E ; #CYRILLIC SMALL LETTER YU
|
|
||||||
FF D18F ; #CYRILLIC SMALL LETTER YA
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
au BufRead,BufNewFile *.nginx set ft=nginx
|
|
||||||
au BufRead,BufNewFile */etc/nginx/* set ft=nginx
|
|
||||||
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
|
|
||||||
au BufRead,BufNewFile nginx.conf set ft=nginx
|
|
@ -1 +0,0 @@
|
|||||||
setlocal commentstring=#\ %s
|
|
@ -1,11 +0,0 @@
|
|||||||
if exists("b:did_indent")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let b:did_indent = 1
|
|
||||||
|
|
||||||
setlocal indentexpr=
|
|
||||||
|
|
||||||
" cindent actually works for nginx' simple file structure
|
|
||||||
setlocal cindent
|
|
||||||
" Just make sure that the comments are not reset as defs would be.
|
|
||||||
setlocal cinkeys-=0#
|
|
@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2002-2021 Igor Sysoev
|
|
||||||
* Copyright (C) 2011-2024 Nginx, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
@ -1,177 +0,0 @@
|
|||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
https://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
@ -1,94 +0,0 @@
|
|||||||
PCRE2 LICENCE
|
|
||||||
-------------
|
|
||||||
|
|
||||||
PCRE2 is a library of functions to support regular expressions whose syntax
|
|
||||||
and semantics are as close as possible to those of the Perl 5 language.
|
|
||||||
|
|
||||||
Releases 10.00 and above of PCRE2 are distributed under the terms of the "BSD"
|
|
||||||
licence, as specified below, with one exemption for certain binary
|
|
||||||
redistributions. The documentation for PCRE2, supplied in the "doc" directory,
|
|
||||||
is distributed under the same terms as the software itself. The data in the
|
|
||||||
testdata directory is not copyrighted and is in the public domain.
|
|
||||||
|
|
||||||
The basic library functions are written in C and are freestanding. Also
|
|
||||||
included in the distribution is a just-in-time compiler that can be used to
|
|
||||||
optimize pattern matching. This is an optional feature that can be omitted when
|
|
||||||
the library is built.
|
|
||||||
|
|
||||||
|
|
||||||
THE BASIC LIBRARY FUNCTIONS
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Written by: Philip Hazel
|
|
||||||
Email local part: Philip.Hazel
|
|
||||||
Email domain: gmail.com
|
|
||||||
|
|
||||||
Retired from University of Cambridge Computing Service,
|
|
||||||
Cambridge, England.
|
|
||||||
|
|
||||||
Copyright (c) 1997-2021 University of Cambridge
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
|
|
||||||
PCRE2 JUST-IN-TIME COMPILATION SUPPORT
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
Written by: Zoltan Herczeg
|
|
||||||
Email local part: hzmester
|
|
||||||
Email domain: freemail.hu
|
|
||||||
|
|
||||||
Copyright(c) 2010-2021 Zoltan Herczeg
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
|
|
||||||
STACK-LESS JUST-IN-TIME COMPILER
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
Written by: Zoltan Herczeg
|
|
||||||
Email local part: hzmester
|
|
||||||
Email domain: freemail.hu
|
|
||||||
|
|
||||||
Copyright(c) 2009-2021 Zoltan Herczeg
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
|
|
||||||
THE "BSD" LICENCE
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notices,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above copyright
|
|
||||||
notices, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
* Neither the name of the University of Cambridge nor the names of any
|
|
||||||
contributors may be used to endorse or promote products derived from this
|
|
||||||
software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
|
|
||||||
EXEMPTION FOR BINARY LIBRARY-LIKE PACKAGES
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
The second condition in the BSD licence (covering binary redistributions) does
|
|
||||||
not apply all the way down a chain of software. If binary package A includes
|
|
||||||
PCRE2, it must respect the condition, but if package B is software that
|
|
||||||
includes package A, the condition is not imposed on package B unless it uses
|
|
||||||
PCRE2 independently.
|
|
||||||
|
|
||||||
End
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
Documentation is available at http://nginx.org
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
(C) 1995-2024 Jean-loup Gailly and Mark Adler
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
|
|
||||||
Jean-loup Gailly Mark Adler
|
|
||||||
jloup@gzip.org madler@alumni.caltech.edu
|
|
@ -1,19 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Error</title>
|
|
||||||
<style>
|
|
||||||
html { color-scheme: light dark; }
|
|
||||||
body { width: 35em; margin: 0 auto;
|
|
||||||
font-family: Tahoma, Verdana, Arial, sans-serif; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>An error occurred.</h1>
|
|
||||||
<p>Sorry, the page you are looking for is currently unavailable.<br/>
|
|
||||||
Please try again later.</p>
|
|
||||||
<p>If you are the system administrator of this resource then you should check
|
|
||||||
the error log for details.</p>
|
|
||||||
<p><em>Faithfully yours, nginx.</em></p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Welcome to nginx!</title>
|
|
||||||
<style>
|
|
||||||
html { color-scheme: light dark; }
|
|
||||||
body { width: 35em; margin: 0 auto;
|
|
||||||
font-family: Tahoma, Verdana, Arial, sans-serif; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Welcome to nginx!</h1>
|
|
||||||
<p>If you see this page, the nginx web server is successfully installed and
|
|
||||||
working. Further configuration is required.</p>
|
|
||||||
|
|
||||||
<p>For online documentation and support please refer to
|
|
||||||
<a href="http://nginx.org/">nginx.org</a>.<br/>
|
|
||||||
Commercial support is available at
|
|
||||||
<a href="http://nginx.com/">nginx.com</a>.</p>
|
|
||||||
|
|
||||||
<p><em>Thank you for using nginx.</em></p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,19 +0,0 @@
|
|||||||
#ifndef _NGX_HTTP_UPSTREAM_CHECK_MODELE_H_INCLUDED_
|
|
||||||
#define _NGX_HTTP_UPSTREAM_CHECK_MODELE_H_INCLUDED_
|
|
||||||
|
|
||||||
|
|
||||||
#include <ngx_config.h>
|
|
||||||
#include <ngx_core.h>
|
|
||||||
#include <ngx_http.h>
|
|
||||||
|
|
||||||
ngx_uint_t ngx_http_upstream_check_add_peer(ngx_conf_t *cf,
|
|
||||||
ngx_http_upstream_srv_conf_t *us, ngx_addr_t *peer);
|
|
||||||
|
|
||||||
ngx_uint_t ngx_http_upstream_check_peer_down(ngx_uint_t index);
|
|
||||||
|
|
||||||
void ngx_http_upstream_check_get_peer(ngx_uint_t index);
|
|
||||||
void ngx_http_upstream_check_free_peer(ngx_uint_t index);
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_NGX_HTTP_UPSTREAM_CHECK_MODELE_H_INCLUDED_
|
|
||||||
|
|