Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
chain33-pai
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
szh
chain33-pai
Commits
7d14f605
Commit
7d14f605
authored
Jan 10, 2020
by
ligaishun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增反馈处理逻辑
parent
377c43f7
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
122 additions
and
0 deletions
+122
-0
process.go
pkg/app/process.go
+122
-0
No files found.
pkg/app/process.go
0 → 100644
View file @
7d14f605
package
app
import
(
"chain33-pai/models"
"chain33-pai/pkg/setting"
"fmt"
"bytes"
"log"
"math/rand"
"os"
"os/exec"
"strings"
"sync"
"time"
)
func
GennerPort
()(
port
,
daemonPort
int
,
err
error
){
for
{
var
flag
bool
var
buf
bytes
.
Buffer
rand
.
Seed
(
time
.
Now
()
.
Unix
())
port
=
rand
.
Intn
(
65535
)
rand
.
Seed
(
time
.
Now
()
.
Unix
())
daemonPort
=
rand
.
Intn
(
55535
)
ss
:=
exec
.
Command
(
setting
.
Chain33Pai
.
SS
,
fmt
.
Sprint
(
port
))
ss
.
Stdout
=&
buf
fmt
.
Println
(
buf
.
String
())
err
=
ss
.
Start
()
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
ss
.
Wait
()
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
//为空代表端口未被占用
if
buf
.
String
()
==
""
{
log
.
Println
(
port
)
flag
=
true
}
ss
=
exec
.
Command
(
setting
.
Chain33Pai
.
SS
,
fmt
.
Sprint
(
daemonPort
))
ss
.
Stdout
=&
buf
err
=
ss
.
Start
()
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
ss
.
Wait
()
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
//守护端口和通信端口都未被占用的情况下返回
if
buf
.
String
()
==
""
&&
flag
{
log
.
Println
(
port
)
//fmt.Println("finish")
return
}
}
}
var
mu
sync
.
Mutex
func
AppendKeyPair
(
keyPair
string
){
mu
.
Lock
()
defer
mu
.
Unlock
()
f
,
err
:=
os
.
OpenFile
(
fmt
.
Sprintf
(
"%s/authorized_keys"
,
setting
.
Chain33Pai
.
SSH
),
os
.
O_WRONLY
|
os
.
O_APPEND
,
0600
)
defer
f
.
Close
()
if
err
!=
nil
{
log
.
Println
(
err
)
return
}
f
.
WriteString
(
keyPair
)
}
func
Preprocessing
(){
//判断密钥对是否存在,存在则删除
_
,
err
:=
os
.
Stat
(
setting
.
Chain33Pai
.
SSH
)
fmt
.
Println
(
err
)
if
err
==
nil
||
os
.
IsExist
(
err
){
err
=
os
.
RemoveAll
(
setting
.
Chain33Pai
.
SSH
)
fmt
.
Println
(
err
)
}
}
func
reKeygen
(){
Preprocessing
()
ssh_keygen
:=
exec
.
Command
(
setting
.
Chain33Pai
.
Keygen
)
ssh_keygen
.
Start
()
ssh_keygen
.
Wait
()
f
,
_
:=
os
.
OpenFile
(
"authorized_keys"
,
os
.
O_CREATE
,
0600
)
f
.
Close
()
}
func
CleanUp
(){
var
buff
bytes
.
Buffer
netstat
:=
exec
.
Command
(
setting
.
Chain33Pai
.
NetStat
)
netstat
.
Stdout
=&
buff
idSelector
:=
strings
.
Split
(
buff
.
String
(),
"
\n
"
)
if
len
(
idSelector
)
==
0
{
//没有映射端口存在,即没有需要处理的反馈
reKeygen
()
//清空authorized_keys
models
.
DropFeedBack
()
//清空数据库记录
return
}
for
_
,
v
:=
range
idSelector
{
if
models
.
IsComplete
(
v
){
models
.
DelFeedBack
(
v
)
}
}
}
func
CornClean
(
ticker
*
time
.
Ticker
){
for
{
select
{
case
<-
ticker
.
C
:
CleanUp
()
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment