session

package
v1.6.1-0...-514ec83 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2019 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package session includes session related manipulations.

Wide server side needs maintain two kinds of sessions:

  1. HTTP session: mainly used for login authentication
  2. Wide session: browser tab open/refresh will create one, and associates with HTTP session

When a session gone: release all resources associated with it, such as running processes, event queues.

Index

Constants

View Source
const (
	CookieName = "wide-sess"
)

Variables

View Source
var (
	// SessionWS holds all session channels. <sid, *util.WSChannel>
	SessionWS = map[string]*util.WSChannel{}

	// EditorWS holds all editor channels. <sid, *util.WSChannel>
	EditorWS = map[string]*util.WSChannel{}

	// OutputWS holds all output channels. <sid, *util.WSChannel>
	OutputWS = map[string]*util.WSChannel{}

	// NotificationWS holds all notification channels. <sid, *util.WSChannel>
	NotificationWS = map[string]*util.WSChannel{}

	// PlaygroundWS holds all playground channels. <sid, *util.WSChannel>
	PlaygroundWS = map[string]*util.WSChannel{}
)
View Source
var HTTPSession = sessions.NewCookieStore([]byte("BEYOND"))

HTTP session store.

View Source
var Processes = procs{}

Processse of all users.

<sid, []*os.Process>

View Source
var WideSessions wSessions

Wide sessions.

Functions

func CanAccess

func CanAccess(userId, path string) bool

CanAccess determines whether the user specified by the given user id can access the specified path.

func FixedTimeRelease

func FixedTimeRelease()

FixedTimeRelease releases invalid sessions.

In some special cases (such as a browser uninterrupted refresh / refresh in the source code view) will occur some invalid sessions, the function checks and removes these invalid sessions periodically (1 hour).

Invalid sessions: sessions that not used within 30 minutes, refers to WideSession.Updated field.

func FixedTimeReport

func FixedTimeReport()

FixedTimeReport reports the Wide sessions status periodically (10 minutes).

func FixedTimeSave

func FixedTimeSave()

FixedTimeSave saves online users' configurations periodically (1 minute).

Main goal of this function is to save user session content, for restoring session content while user open Wide next time.

func GitHubUserInfo

func GitHubUserInfo(accessToken string) (ret map[string]interface{})

GitHubUserInfo returns GitHub user info specified by the given access token.

func GithubCallbackHandler

func GithubCallbackHandler(w http.ResponseWriter, r *http.Request)

func LoginHandler

func LoginHandler(w http.ResponseWriter, r *http.Request)

LoginHandler handles request of show login page.

func LogoutHandler

func LogoutHandler(w http.ResponseWriter, r *http.Request)

LogoutHandler handles request of user logout (exit).

func PreferenceHandler

func PreferenceHandler(w http.ResponseWriter, r *http.Request)

PreferenceHandler handles request of preference page.

func RedirectGitHubHandler

func RedirectGitHubHandler(w http.ResponseWriter, r *http.Request)

RedirectGitHubHandler redirects to GitHub auth page.

func RunHandler

func RunHandler(w http.ResponseWriter, r *http.Request, channel map[string]*util.WSChannel)

RunHandler handles request of executing a binary file.

func SaveContentHandler

func SaveContentHandler(w http.ResponseWriter, r *http.Request)

SaveContentHandler handles request of session content string.

func SaveOnlineUsers

func SaveOnlineUsers()

SaveOnlineUsers saves online users' configurations at once.

func StopHandler

func StopHandler(w http.ResponseWriter, r *http.Request)

StopHandler handles request of stopping a running process.

func WSHandler

func WSHandler(w http.ResponseWriter, r *http.Request)

WSHandler handles request of creating session channel.

When a channel closed, releases all resources associated with it.

Types

type WideSession

type WideSession struct {
	ID          string                     // id
	UserId      string                     // user id
	HTTPSession *sessions.Session          // HTTP session related
	Processes   []*os.Process              // process set
	EventQueue  *event.UserEventQueue      // event queue
	State       int                        // state
	Content     *conf.LatestSessionContent // the latest session content
	FileWatcher *fsnotify.Watcher          // files change watcher
	Created     time.Time                  // create time
	Updated     time.Time                  // the latest use time
}

WideSession represents a session associated with a browser tab.

func (*WideSession) Refresh

func (s *WideSession) Refresh()

Refresh refreshes the channel by updating its use time.

func (*WideSession) SetProcesses

func (s *WideSession) SetProcesses(ps []*os.Process)

SetProcesses binds process set with the wide session.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL