Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Achou.Wang
accel-ppp
提交
10cb4c07
A
accel-ppp
项目概览
Achou.Wang
/
accel-ppp
通知
6
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
accel-ppp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
10cb4c07
编写于
2月 02, 2017
作者:
V
Vladislav Grishenko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sstp: implement preliminar sstp protocol support
上级
bff66de7
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
1687 addition
and
0 deletion
+1687
-0
accel-pppd/accel-ppp.conf
accel-pppd/accel-ppp.conf
+11
-0
accel-pppd/ctrl/CMakeLists.txt
accel-pppd/ctrl/CMakeLists.txt
+1
-0
accel-pppd/ctrl/sstp/CMakeLists.txt
accel-pppd/ctrl/sstp/CMakeLists.txt
+5
-0
accel-pppd/ctrl/sstp/sstp.c
accel-pppd/ctrl/sstp/sstp.c
+1483
-0
accel-pppd/ctrl/sstp/sstp_prot.h
accel-pppd/ctrl/sstp/sstp_prot.h
+187
-0
未找到文件。
accel-pppd/accel-ppp.conf
浏览文件 @
10cb4c07
...
...
@@ -6,6 +6,7 @@ log_file
pptp
l2tp
#sstp
#pppoe
#ipoe
...
...
@@ -107,6 +108,16 @@ verbose=1
#ip-pool=l2tp
#ifname=l2tp%d
[
sstp
]
verbose
=
1
#ssl=1
#ssl_ciphers=HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4
#ssl_ca_file=/etc/ssl/sstp-ca.crt
#ssl_pemfile=/etc/ssl/sstp.pem
#timeout=60
#hello-interval=60
#ip-pool=sstp
[
ipoe
]
verbose
=
1
username
=
ifname
...
...
accel-pppd/ctrl/CMakeLists.txt
浏览文件 @
10cb4c07
ADD_SUBDIRECTORY
(
pptp
)
ADD_SUBDIRECTORY
(
pppoe
)
ADD_SUBDIRECTORY
(
l2tp
)
ADD_SUBDIRECTORY
(
sstp
)
ADD_SUBDIRECTORY
(
ipoe
)
accel-pppd/ctrl/sstp/CMakeLists.txt
0 → 100644
浏览文件 @
10cb4c07
INCLUDE_DIRECTORIES
(
${
CMAKE_CURRENT_SOURCE_DIR
}
)
ADD_LIBRARY
(
sstp SHARED sstp.c
)
INSTALL
(
TARGETS sstp LIBRARY DESTINATION lib
${
LIB_SUFFIX
}
/accel-ppp
)
accel-pppd/ctrl/sstp/sstp.c
0 → 100644
浏览文件 @
10cb4c07
此差异已折叠。
点击以展开。
accel-pppd/ctrl/sstp/sstp_prot.h
0 → 100644
浏览文件 @
10cb4c07
#ifndef SSTP_PROT_H
#define SSTP_PROT_H
#include <stdint.h>
/* Constants */
#define SSTP_PORT 443
#define SSTP_HTTP_METHOD "SSTP_DUPLEX_POST"
#define SSTP_HTTP_URI "/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/"
#define SSTP_VERSION 0x10
#define SSTP_MAX_PACKET_SIZE 4095
#define SSTP_NONCE_SIZE 32
#define SSTP_NEGOTIOATION_TIMEOUT 60
#define SSTP_HELLO_TIMEOUT 60
#define SSTP_ABORT_TIMEOUT_1 3
#define SSTP_ABORT_TIMEOUT_2 1
#define SSTP_DISCONNECT_TIMEOUT_1 5
#define SSTP_DISCONNECT_TIMEOUT_2 1
/* Packet Type */
enum
{
SSTP_DATA_PACKET
=
0x00
,
SSTP_CTRL_PACKET
=
0x01
,
};
/* Message Type */
enum
{
SSTP_MSG_CALL_CONNECT_REQUEST
=
0x0001
,
SSTP_MSG_CALL_CONNECT_ACK
=
0x0002
,
SSTP_MSG_CALL_CONNECT_NAK
=
0x0003
,
SSTP_MSG_CALL_CONNECTED
=
0x0004
,
SSTP_MSG_CALL_ABORT
=
0x0005
,
SSTP_MSG_CALL_DISCONNECT
=
0x0006
,
SSTP_MSG_CALL_DISCONNECT_ACK
=
0x0007
,
SSTP_MSG_ECHO_REQUEST
=
0x0008
,
SSTP_MSG_ECHO_RESPONSE
=
0x0009
,
};
/* Attribute ID */
enum
{
SSTP_ATTRIB_NO_ERROR
=
0x00
,
SSTP_ATTRIB_ENCAPSULATED_PROTOCOL_ID
=
0x01
,
SSTP_ATTRIB_STATUS_INFO
=
0x02
,
SSTP_ATTRIB_CRYPTO_BINDING
=
0x03
,
SSTP_ATTRIB_CRYPTO_BINDING_REQ
=
0x04
,
};
/* Protocol ID */
enum
{
SSTP_ENCAPSULATED_PROTOCOL_PPP
=
0x0001
,
};
/* Hash Protocol Bitmask */
enum
{
CERT_HASH_PROTOCOL_SHA1
=
0x01
,
CERT_HASH_PROTOCOL_SHA256
=
0x02
,
};
/* Status */
enum
{
ATTRIB_STATUS_NO_ERROR
=
0x00000000
,
ATTRIB_STATUS_DUPLICATE_ATTRIBUTE
=
0x00000001
,
ATTRIB_STATUS_UNRECOGNIZED_ATTRIBUTE
=
0x00000002
,
ATTRIB_STATUS_INVALID_ATTRIB_VALUE_LENGTH
=
0x00000003
,
ATTRIB_STATUS_VALUE_NOT_SUPPORTED
=
0x00000004
,
ATTRIB_STATUS_UNACCEPTED_FRAME_RECEIVED
=
0x00000005
,
ATTRIB_STATUS_RETRY_COUNT_EXCEEDED
=
0x00000006
,
ATTRIB_STATUS_INVALID_FRAME_RECEIVED
=
0x00000007
,
ATTRIB_STATUS_NEGOTIATION_TIMEOUT
=
0x00000008
,
ATTRIB_STATUS_ATTRIB_NOT_SUPPORTED_IN_MSG
=
0x00000009
,
ATTRIB_STATUS_REQUIRED_ATTRIBUTE_MISSING
=
0x0000000a
,
ATTRIB_STATUS_STATUS_INFO_NOT_SUPPORTED_IN_MSG
=
0x0000000b
,
};
/* State */
#define STATE_INIT 0
#define STATE_ESTB 1
#define STATE_PPP 2
#define STATE_FIN 3
#define STATE_CLOSE 4
enum
{
STATE_SERVER_CALL_DISCONNECTED
=
0
,
STATE_SERVER_CONNECT_REQUEST_PENDING
,
STATE_SERVER_CALL_CONNECTED_PENDING
,
STATE_SERVER_CALL_CONNECTED
,
STATE_CALL_ABORT_IN_PROGRESS_1
,
STATE_CALL_ABORT_IN_PROGRESS_2
,
STATE_CALL_ABORT_TIMEOUT_PENDING
,
STATE_CALL_ABORT_PENDING
,
STATE_CALL_DISCONNECT_IN_PROGRESS_1
,
STATE_CALL_DISCONNECT_IN_PROGRESS_2
,
STATE_CALL_DISCONNECT_TIMEOUT_PENDING
,
STATE_CALL_DISCONNECT_ACK_PENDING
,
};
/* Packets */
struct
sstp_hdr
{
uint8_t
version
;
uint8_t
reserved
;
uint16_t
length
;
uint8_t
data
[
0
];
}
__attribute__
((
packed
));
struct
sstp_ctrl_hdr
{
uint8_t
version
;
uint8_t
reserved
;
uint16_t
length
;
uint16_t
message_type
;
uint16_t
num_attributes
;
uint8_t
data
[
0
];
}
__attribute__
((
packed
));
struct
sstp_attr_hdr
{
uint8_t
reserved
;
uint8_t
attribute_id
;
uint16_t
length
;
uint8_t
data
[
0
];
}
__attribute__
((
packed
));
struct
sstp_attrib_encapsulated_protocol
{
struct
sstp_attr_hdr
hdr
;
uint16_t
protocol_id
;
}
__attribute__
((
packed
));
struct
sstp_attrib_status_info
{
struct
sstp_attr_hdr
hdr
;
uint8_t
reserved
[
3
];
uint8_t
attrib_id
;
uint32_t
status
;
uint8_t
attrib_value
[
0
];
}
__attribute__
((
packed
));
struct
sstp_attrib_crypto_binding
{
struct
sstp_attr_hdr
hdr
;
uint8_t
reserved
[
3
];
uint8_t
hash_protocol_bitmask
;
uint8_t
nonce
[
SSTP_NONCE_SIZE
];
uint8_t
cert_hash
[
SSTP_NONCE_SIZE
];
uint8_t
compound_mac
[
SSTP_NONCE_SIZE
];
}
__attribute__
((
packed
));
struct
sstp_attrib_crypto_binding_request
{
struct
sstp_attr_hdr
hdr
;
uint8_t
reserved
[
3
];
uint8_t
hash_protocol_bitmask
;
uint8_t
nonce
[
SSTP_NONCE_SIZE
];
}
__attribute__
((
packed
));
#define SSTP_DATA_HDR(len) { \
.version = SSTP_VERSION, \
.reserved = SSTP_DATA_PACKET, \
.length = htons(len), \
}
#define SSTP_CTRL_HDR(type, len, num) { \
.version = SSTP_VERSION, \
.reserved = SSTP_CTRL_PACKET, \
.length = htons(len), \
.message_type = htons(type), \
.num_attributes = htons(num) \
}
#define SSTP_ATTR_HDR(id, len) { \
.attribute_id = id, \
.length = htons(len) \
}
#define INIT_SSTP_DATA_HDR(hdr, len) { \
(hdr)->version = SSTP_VERSION; \
(hdr)->reserved = SSTP_DATA_PACKET; \
(hdr)->length = htons(len); \
}
#define INIT_SSTP_CTRL_HDR(hdr, type, num, len) {\
(hdr)->version = SSTP_VERSION; \
(hdr)->reserved = SSTP_CTRL_PACKET; \
(hdr)->length = htons(len); \
(hdr)->message_type = htons(type); \
(hdr)->num_attributes = htons(num); \
}
#define INIT_SSTP_ATTR_HDR(hdr, id, len) { \
(hdr)->attribute_id = id; \
(hdr)->length = htons(len); \
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录