Skip to content

Commit 22b61f8

Browse files
csoni111cpg
authored andcommitted
Add demo mode to allow anyone to authenticate (#11)
* add demo mode to allow anyone to authenticate * remove extra flag
1 parent 2c4dc1a commit 22b61f8

4 files changed

Lines changed: 42 additions & 21 deletions

File tree

src/fs/fs.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func main() {
5959
var localAddr = ""
6060
var relayHost = PFE_HOST
6161
var relayPort = PFE_PORT
62+
var isDemo = false
6263

6364
// Parse the program inputs
6465
if !PRODUCTION {
@@ -74,6 +75,10 @@ func main() {
7475
}
7576
flag.Parse()
7677

78+
if rootDir != "" {
79+
isDemo = true
80+
}
81+
7782
apiKey := ""
7883
if PRODUCTION || (!PRODUCTION && (apiKeyFlag == "")) {
7984
// no command line override - get it from the db
@@ -108,7 +113,7 @@ func main() {
108113
os.Exit(1)
109114
}
110115

111-
service, err := NewMercuryFSService(rootDir, localAddr)
116+
service, err := NewMercuryFSService(rootDir, localAddr, isDemo)
112117
if err != nil {
113118
fmt.Printf("Error making service (%s, %s): %s\n", rootDir, localAddr, err.Error())
114119
os.Remove(PID_FILE)
@@ -128,7 +133,7 @@ func main() {
128133
}
129134

130135
runtime.GOMAXPROCS(1000)
131-
go startLocalServer(rootDir, metadata)
136+
go startLocalServer(rootDir, metadata, isDemo)
132137

133138
// Continually connect to the proxy and listen for requests
134139
// Reconnect if there is an error

src/fs/hda_users.go

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ type HdaUser struct {
1515
UpdatedAt time.Time `json:"updated_at"`
1616
LastRequestAt time.Time `json:"last_request_at"`
1717
LastCheckedAt time.Time `json:"last_checked_at"`
18+
IsDemo bool `json:"is_demo"`
1819
}
1920

2021
type HdaUsers struct {
21-
Users map[string]*HdaUser
22+
IsDemo bool
23+
Users map[string]*HdaUser
2224
sync.RWMutex
2325
}
2426

25-
func NewHdaUsers() *HdaUsers {
26-
return &HdaUsers{Users: make(map[string]*HdaUser)}
27+
func NewHdaUsers(isDemo bool) *HdaUsers {
28+
return &HdaUsers{IsDemo: isDemo, Users: make(map[string]*HdaUser)}
2729
}
2830

2931
func tokenGenerator() string {
@@ -33,17 +35,25 @@ func tokenGenerator() string {
3335
}
3436

3537
func (users *HdaUsers) queryUser(pin string) (*string, error) {
36-
dbconn, err := sql.Open("mysql", MYSQL_CREDENTIALS)
37-
if err != nil {
38-
log(err.Error())
39-
return nil, err
40-
}
41-
defer dbconn.Close()
42-
q := "SELECT id, login, name, updated_at FROM users WHERE pin=?"
4338
user := new(HdaUser)
44-
err = dbconn.QueryRow(q, pin).Scan(&user.id, &user.Login, &user.Name, &user.UpdatedAt)
45-
if err != nil {
46-
return nil, err
39+
if users.IsDemo {
40+
user.IsDemo = true
41+
user.id = 0
42+
user.LastCheckedAt = time.Now()
43+
user.UpdatedAt = time.Now()
44+
} else {
45+
dbconn, err := sql.Open("mysql", MYSQL_CREDENTIALS)
46+
if err != nil {
47+
log(err.Error())
48+
return nil, err
49+
}
50+
defer dbconn.Close()
51+
q := "SELECT id, login, name, updated_at FROM users WHERE pin=?"
52+
53+
err = dbconn.QueryRow(q, pin).Scan(&user.id, &user.Login, &user.Name, &user.UpdatedAt)
54+
if err != nil {
55+
return nil, err
56+
}
4757
}
4858
authToken := users.updateUserIfExists(user)
4959
if authToken != "" {
@@ -75,7 +85,7 @@ func (users *HdaUsers) find(authToken string) *HdaUser {
7585
users.Lock()
7686
defer users.Unlock()
7787
user := users.Users[authToken]
78-
if user != nil {
88+
if !(user == nil || user.IsDemo) {
7989
if time.Now().Sub(user.LastCheckedAt) > time.Minute*5 {
8090
isValid, err := users.revalidateSession(authToken, user)
8191
if isValid || (!isValid && err != nil) {
@@ -146,6 +156,9 @@ func (user *HdaUser) AvailableShares() ([]*HdaShare, error) {
146156
}
147157

148158
func (user *HdaUser) HasReadAccess(shareName string) (access bool, err error) {
159+
if user.IsDemo {
160+
return true, nil
161+
}
149162
dbconn, err := sql.Open("mysql", MYSQL_CREDENTIALS)
150163
if err != nil {
151164
log(err.Error())
@@ -161,6 +174,9 @@ func (user *HdaUser) HasReadAccess(shareName string) (access bool, err error) {
161174
}
162175

163176
func (user *HdaUser) HasWriteAccess(shareName string) (access bool, err error) {
177+
if user.IsDemo {
178+
return true, nil
179+
}
164180
dbconn, err := sql.Open("mysql", MYSQL_CREDENTIALS)
165181
if err != nil {
166182
log(err.Error())

src/fs/local_server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import (
1616

1717
const LocalServerPort = "4563"
1818

19-
func startLocalServer(rootDir string, metadata *metadata.Library) {
20-
service, err := NewMercuryFSService(rootDir, ":"+LocalServerPort)
19+
func startLocalServer(rootDir string, metadata *metadata.Library, isDemo bool) {
20+
service, err := NewMercuryFSService(rootDir, ":"+LocalServerPort, isDemo)
2121
if err != nil {
2222
log(err.Error())
2323
return

src/fs/service.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ type MercuryFsService struct {
5555
// NewMercuryFsService creates a new MercuryFsService, sets the FileDirectoryRoot
5656
// and CurrentDirectory to rootDirectory and returns the pointer to the
5757
// newly created MercuryFsService
58-
func NewMercuryFSService(rootDir, localAddr string) (service *MercuryFsService, err error) {
58+
func NewMercuryFSService(rootDir, localAddr string, isDemo bool) (service *MercuryFsService, err error) {
5959
service = new(MercuryFsService)
6060

61-
service.Users = NewHdaUsers()
61+
service.Users = NewHdaUsers(isDemo)
6262
service.Shares, err = NewHdaShares(rootDir)
6363
if err != nil {
6464
debug(3, "Error making HdaShares: %s", err.Error())
@@ -282,7 +282,7 @@ func (service *MercuryFsService) serveShares(writer http.ResponseWriter, request
282282
}
283283
var shares []*HdaShare
284284
var err error
285-
if service.Shares.rootDir == "" && user != nil {
285+
if service.Shares.rootDir == "" && !(user == nil || user.IsDemo) {
286286
shares, err = user.AvailableShares()
287287
if err != nil {
288288
http.Error(writer, "Internal Server Error", http.StatusInternalServerError)

0 commit comments

Comments
 (0)