@@ -19,7 +19,6 @@ import (
19
19
"code.gitea.io/gitea/modules/pprof"
20
20
"code.gitea.io/gitea/modules/private"
21
21
"code.gitea.io/gitea/modules/setting"
22
- "code.gitea.io/gitea/modules/util"
23
22
24
23
"github.com/Unknwon/com"
25
24
"github.com/dgrijalva/jwt-go"
@@ -49,20 +48,9 @@ var CmdServ = cli.Command{
49
48
},
50
49
}
51
50
52
- func setup (logPath string ) error {
51
+ func setup (logPath string ) {
53
52
setting .NewContext ()
54
53
log .NewGitLogger (filepath .Join (setting .LogRootPath , logPath ))
55
- models .LoadConfigs ()
56
-
57
- if setting .UseSQLite3 || setting .UseTiDB {
58
- workPath := setting .AppWorkPath
59
- if err := os .Chdir (workPath ); err != nil {
60
- log .GitLogger .Fatal (4 , "Failed to change directory %s: %v" , workPath , err )
61
- }
62
- }
63
-
64
- setting .NewXORMLogService (true )
65
- return models .SetEngine ()
66
54
}
67
55
68
56
func parseCmd (cmd string ) (string , string ) {
@@ -101,10 +89,7 @@ func runServ(c *cli.Context) error {
101
89
if c .IsSet ("config" ) {
102
90
setting .CustomConf = c .String ("config" )
103
91
}
104
-
105
- if err := setup ("serv.log" ); err != nil {
106
- fail ("System init failed" , fmt .Sprintf ("setup: %v" , err ))
107
- }
92
+ setup ("serv.log" )
108
93
109
94
if setting .SSH .Disabled {
110
95
println ("Gitea: SSH has been disabled" )
@@ -175,9 +160,9 @@ func runServ(c *cli.Context) error {
175
160
}
176
161
os .Setenv (models .EnvRepoName , reponame )
177
162
178
- repo , err := models .GetRepositoryByOwnerAndName (username , reponame )
163
+ repo , err := private .GetRepositoryByOwnerAndName (username , reponame )
179
164
if err != nil {
180
- if models . IsErrRepoNotExist (err ) {
165
+ if strings . Contains (err . Error (), "Failed to get repository: repository does not exist" ) {
181
166
fail (accessDenied , "Repository does not exist: %s/%s" , username , reponame )
182
167
}
183
168
fail ("Internal error" , "Failed to get repository: %v" , err )
@@ -214,7 +199,7 @@ func runServ(c *cli.Context) error {
214
199
fail ("Key ID format error" , "Invalid key argument: %s" , c .Args ()[0 ])
215
200
}
216
201
217
- key , err := models .GetPublicKeyByID (com .StrTo (keys [1 ]).MustInt64 ())
202
+ key , err := private .GetPublicKeyByID (com .StrTo (keys [1 ]).MustInt64 ())
218
203
if err != nil {
219
204
fail ("Invalid key ID" , "Invalid key ID[%s]: %v" , c .Args ()[0 ], err )
220
205
}
@@ -225,23 +210,22 @@ func runServ(c *cli.Context) error {
225
210
if key .Mode < requestedMode {
226
211
fail ("Key permission denied" , "Cannot push with deployment key: %d" , key .ID )
227
212
}
213
+
228
214
// Check if this deploy key belongs to current repository.
229
- if ! models .HasDeployKey (key .ID , repo .ID ) {
215
+ has , err := private .HasDeployKey (key .ID , repo .ID )
216
+ if err != nil {
217
+ fail ("Key access denied" , "Failed to access internal api: [key_id: %d, repo_id: %d]" , key .ID , repo .ID )
218
+ }
219
+ if ! has {
230
220
fail ("Key access denied" , "Deploy key access denied: [key_id: %d, repo_id: %d]" , key .ID , repo .ID )
231
221
}
232
222
233
223
// Update deploy key activity.
234
- deployKey , err := models .GetDeployKeyByRepo (key .ID , repo .ID )
235
- if err != nil {
236
- fail ("Internal error" , "GetDeployKey: %v" , err )
237
- }
238
-
239
- deployKey .UpdatedUnix = util .TimeStampNow ()
240
- if err = models .UpdateDeployKeyCols (deployKey , "updated_unix" ); err != nil {
224
+ if err = private .UpdateDeployKeyUpdated (key .ID , repo .ID ); err != nil {
241
225
fail ("Internal error" , "UpdateDeployKey: %v" , err )
242
226
}
243
227
} else {
244
- user , err = models .GetUserByKeyID (key .ID )
228
+ user , err = private .GetUserByKeyID (key .ID )
245
229
if err != nil {
246
230
fail ("internal error" , "Failed to get user by key ID(%d): %v" , keyID , err )
247
231
}
@@ -252,20 +236,24 @@ func runServ(c *cli.Context) error {
252
236
user .Name , repoPath )
253
237
}
254
238
255
- mode , err := models .AccessLevel (user .ID , repo )
239
+ mode , err := private .AccessLevel (user .ID , repo . ID )
256
240
if err != nil {
257
241
fail ("Internal error" , "Failed to check access: %v" , err )
258
- } else if mode < requestedMode {
242
+ } else if * mode < requestedMode {
259
243
clientMessage := accessDenied
260
- if mode >= models .AccessModeRead {
244
+ if * mode >= models .AccessModeRead {
261
245
clientMessage = "You do not have sufficient authorization for this action"
262
246
}
263
247
fail (clientMessage ,
264
248
"User %s does not have level %v access to repository %s" ,
265
249
user .Name , requestedMode , repoPath )
266
250
}
267
251
268
- if ! repo .CheckUnitUser (user .ID , user .IsAdmin , unitType ) {
252
+ check , err := private .CheckUnitUser (user .ID , repo .ID , user .IsAdmin , unitType )
253
+ if err != nil {
254
+ fail ("You do not have allowed for this action" , "Failed to access internal api: [user.Name: %s, repoPath: %s]" , user .Name , repoPath )
255
+ }
256
+ if ! check {
269
257
fail ("You do not have allowed for this action" ,
270
258
"User %s does not have allowed access to repository %s 's code" ,
271
259
user .Name , repoPath )
@@ -325,7 +313,6 @@ func runServ(c *cli.Context) error {
325
313
} else {
326
314
gitcmd = exec .Command (verb , repoPath )
327
315
}
328
-
329
316
if isWiki {
330
317
if err = repo .InitWiki (); err != nil {
331
318
fail ("Internal error" , "Failed to init wiki repo: %v" , err )
0 commit comments