Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
K
koko
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
koko
Commits
4fb77667
Commit
4fb77667
authored
5 years ago
by
Eric
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://github.com/jumpserver/koko
into dev
parents
39da0c0c
caf339dc
master
commadparse
dev
gengmei
v52
v54
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
20 additions
and
108 deletions
+20
-108
Dockerfile
Dockerfile
+3
-1
entrypoint.sh
entrypoint.sh
+6
-0
server.go
pkg/httpd/server.go
+10
-4
upgrader.go
pkg/httpd/upgrader.go
+0
-102
koko.go
pkg/koko/koko.go
+1
-1
No files found.
Dockerfile
View file @
4fb77667
FROM
golang:1.12-alpine as stage-build
LABEL
stage=stage-build
WORKDIR
/opt/coco
RUN
apk update
&&
apk add git
ARG
GOPROXY
ENV
GOPROXY=$GOPROXY
ENV
GO111MODULE=on
COPY
go.mod go.sum ./
RUN
apk update
&&
apk add git
COPY
go.mod go.sum ./
RUN
go mod download
COPY
. .
RUN
cd
cmd
&&
go build koko.go
...
...
@@ -20,6 +21,7 @@ COPY cmd/config_example.yml .
COPY
entrypoint.sh .
RUN
chmod
755 ./entrypoint.sh
\
&&
apk add
-U
tzdata
\
&&
apk add curl
\
&&
cp
/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
\
&&
echo
"Asia/Shanghai"
>
/etc/timezone
\
&&
apk del tzdata
\
...
...
This diff is collapsed.
Click to expand it.
entrypoint.sh
View file @
4fb77667
#!/bin/sh
#
while
[
"
$(
curl
-I
-m
10
-o
/dev/null
-s
-w
%
{
http_code
}
$CORE_HOST
)
"
!=
"302"
]
do
echo
"wait for jms_core ready"
sleep
2
done
if
[
!
-f
"/opt/coco/config.yml"
]
;
then
cp
/opt/coco/config_example.yml /opt/coco/config.yml
sed
-i
'5d'
/opt/coco/config.yml
...
...
This diff is collapsed.
Click to expand it.
pkg/httpd/server.go
View file @
4fb77667
...
...
@@ -7,11 +7,11 @@ import (
"time"
"github.com/gorilla/mux"
"github.com/kataras/neffos"
"github.com/kataras/neffos/gorilla"
gorillaws
"github.com/gorilla/websocket"
"github.com/jumpserver/koko/pkg/config"
"github.com/jumpserver/koko/pkg/logger"
"github.com/kataras/neffos"
"github.com/kataras/neffos/gorilla"
)
var
(
...
...
@@ -19,6 +19,12 @@ var (
Timeout
=
time
.
Duration
(
60
)
)
var
upgrader
=
gorilla
.
Upgrader
(
gorillaws
.
Upgrader
{
CheckOrigin
:
func
(
r
*
http
.
Request
)
bool
{
return
true
},
})
var
wsEvents
=
neffos
.
WithTimeout
{
ReadTimeout
:
Timeout
*
time
.
Second
,
WriteTimeout
:
Timeout
*
time
.
Second
,
...
...
@@ -50,7 +56,7 @@ var wsEvents = neffos.WithTimeout{
func
StartHTTPServer
()
{
conf
:=
config
.
GetConf
()
sshWs
:=
neffos
.
New
(
gorilla
.
DefaultU
pgrader
,
wsEvents
)
sshWs
:=
neffos
.
New
(
u
pgrader
,
wsEvents
)
sshWs
.
IDGenerator
=
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
string
{
return
neffos
.
DefaultIDGenerator
(
w
,
r
)
}
...
...
This diff is collapsed.
Click to expand it.
pkg/httpd/upgrader.go
deleted
100644 → 0
View file @
39da0c0c
package
httpd
import
(
"net"
"net/http"
"sync"
"time"
"github.com/kataras/neffos"
gorilla
"github.com/gorilla/websocket"
)
// DefaultUpgrader is a gorilla/websocket Upgrader with all fields set to the default values.
var
DefaultUpgrader
=
Upgrader
(
gorilla
.
Upgrader
{})
// Upgrader is a `neffos.Upgrader` type for the gorilla/websocket subprotocol implementation.
// Should be used on `New` to construct the neffos server.
func
Upgrader
(
upgrader
gorilla
.
Upgrader
)
neffos
.
Upgrader
{
return
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
(
neffos
.
Socket
,
error
)
{
header
:=
w
.
Header
()
header
.
Set
(
"Access-Control-Allow-Origin"
,
"*"
)
underline
,
err
:=
upgrader
.
Upgrade
(
w
,
r
,
header
)
if
err
!=
nil
{
return
nil
,
err
}
return
newSocket
(
underline
,
r
,
false
),
nil
}
}
// Socket completes the `neffos.Socket` interface,
// it describes the underline websocket connection.
type
Socket
struct
{
UnderlyingConn
*
gorilla
.
Conn
request
*
http
.
Request
client
bool
mu
sync
.
Mutex
}
func
newSocket
(
underline
*
gorilla
.
Conn
,
request
*
http
.
Request
,
client
bool
)
*
Socket
{
return
&
Socket
{
UnderlyingConn
:
underline
,
request
:
request
,
client
:
client
,
}
}
// NetConn returns the underline net connection.
func
(
s
*
Socket
)
NetConn
()
net
.
Conn
{
return
s
.
UnderlyingConn
.
UnderlyingConn
()
}
// Request returns the http request value.
func
(
s
*
Socket
)
Request
()
*
http
.
Request
{
return
s
.
request
}
// ReadData reads binary or text messages from the remote connection.
func
(
s
*
Socket
)
ReadData
(
timeout
time
.
Duration
)
([]
byte
,
error
)
{
for
{
if
timeout
>
0
{
s
.
UnderlyingConn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
timeout
))
}
opCode
,
data
,
err
:=
s
.
UnderlyingConn
.
ReadMessage
()
if
err
!=
nil
{
return
nil
,
err
}
if
opCode
!=
gorilla
.
BinaryMessage
&&
opCode
!=
gorilla
.
TextMessage
{
// if gorilla.IsUnexpectedCloseError(err, gorilla.CloseGoingAway) ...
continue
}
return
data
,
err
}
}
// WriteBinary sends a binary message to the remote connection.
func
(
s
*
Socket
)
WriteBinary
(
body
[]
byte
,
timeout
time
.
Duration
)
error
{
return
s
.
write
(
body
,
gorilla
.
BinaryMessage
,
timeout
)
}
// WriteText sends a text message to the remote connection.
func
(
s
*
Socket
)
WriteText
(
body
[]
byte
,
timeout
time
.
Duration
)
error
{
return
s
.
write
(
body
,
gorilla
.
TextMessage
,
timeout
)
}
func
(
s
*
Socket
)
write
(
body
[]
byte
,
opCode
int
,
timeout
time
.
Duration
)
error
{
if
timeout
>
0
{
s
.
UnderlyingConn
.
SetWriteDeadline
(
time
.
Now
()
.
Add
(
timeout
))
}
s
.
mu
.
Lock
()
err
:=
s
.
UnderlyingConn
.
WriteMessage
(
opCode
,
body
)
s
.
mu
.
Unlock
()
return
err
}
This diff is collapsed.
Click to expand it.
pkg/koko/koko.go
View file @
4fb77667
...
...
@@ -14,7 +14,7 @@ import (
"github.com/jumpserver/koko/pkg/sshd"
)
const
version
=
"1.5.
0
"
const
version
=
"1.5.
2
"
type
Coco
struct
{
}
...
...
This diff is collapsed.
Click to expand it.
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