Browse Source

Check if the user has shell to generate the static web

webdeploy
meskio 3 years ago
parent
commit
f78fe8a4e0
Signed by: meskio
GPG Key ID: 52B8F5AC97A2DA86
  1. 8
      server/gitea.go
  2. 15
      server/template.go
  3. 14
      tmpl/gitea.html
  4. 4
      tmpl/index.html

8
server/gitea.go

@ -8,6 +8,12 @@ import (
func (s *server) giteaHandler(w http.ResponseWriter, r *http.Request) {
response := s.newResponse("gitea", w, r)
if response.Shell == "/bin/false" {
log.Printf("User %s doesn't have shell, can't access gitea", response.User)
response := s.newResponse("403", w, r)
response.execute(nil)
return
}
if r.Method != "POST" {
response.execute("")
@ -42,7 +48,7 @@ func (s *server) giteaHandler(w http.ResponseWriter, r *http.Request) {
// generate keys
keypriv, keypub, err := gitea.GenerateRSAKeyPair(4096)
if err != nil {
log.Printf("Error generating key pair: ", err)
log.Printf("Error generating key pair: %v", err)
if err := repo.Delete(); err != nil {
log.Printf("Error deleting gitea repo: %v", err)
}

15
server/template.go

@ -12,6 +12,7 @@ type responseT struct {
User string
IsAdmin bool
Role ldap.Role
Shell string
Section string
Data interface{}
w http.ResponseWriter
@ -51,16 +52,24 @@ func (s *server) newResponse(template string, w http.ResponseWriter, r *http.Req
session := s.sess.get(w, r)
user := ""
role := ldap.Undefined
shell := ""
admin := false
if session != nil {
user = session.user
admin = s.isAdmin(user)
role = s.ldap.GetUserRole(user)
u, err := s.ldap.GetUser(session.user)
if err != nil {
log.Printf("Error fetching user %s: %v", user, err)
} else {
user = session.user
admin = s.isAdmin(user)
role = u.Role
shell = u.Shell
}
}
return responseT{
User: user,
IsAdmin: admin,
Role: role,
Shell: shell,
Section: template,
Data: nil,
w: w,

14
tmpl/gitea.html

@ -11,17 +11,17 @@
<br />
<h2 class="row justify-content-center">El repositorio se ha creado en tu cuenta de gitea</h2>
<div class="col-sm-4" style="margin: 0 auto; width: 100%">
<p class="row justify-content-center">Puedes acceder en:&nbsp;<a href="https://git.midominio.net">https://git.midominio.net</a></p>
<p class="row justify-content-center">Puedes acceder en:&nbsp;<a href="https://git.sindominio.net">https://git.sindominio.net</a></p>
<p class="row" style="text-align: justify;">Sólo tienes que editar un fichero en ese repositorio para activar una web estática en tu carpeta de usuario en /public_html/. Si lo haces, todo el contenido en esa carpeta será sustituido por un blog estático generado con hugo.</p>
</div>
{{else if eq .Data "ErrorGiteaInit"}}
<p class="row justify-content-center">Parece que la funcionalidad no está activada. Contacta con mi dominio.</p>
{{else if eq .Data "Error"}}
<div class="" style="color: #dc3545; text-align: center;">Algo salió mal. Contacta con midominio.</div>
<div class="" style="color: #dc3545; text-align: center;">Algo salió mal. Contacta con sindominio.</div>
{{else}}
<br />
<div class="col-sm-4" style="margin: 0 auto; width: 100%">
<p class="row justify-content-center" style="text-align: justify;">midominio te ofrece un espacio web para contenidos estáticos. Puedes gestionarlo a través de un repositorio git, editando con nuestra interfaz web gitea.</p>
<p class="row justify-content-center" style="text-align: justify;">Sindominio te ofrece un espacio web para contenidos estáticos. Puedes gestionarlo a través de un repositorio git, editando con nuestra interfaz web gitea.</p>
</div>
<div class="row justify-content-center">
<form class="col-sm-4" id="needs-validation" action="/gitea/" method="post" novalidate>
@ -37,14 +37,6 @@
</form>
</div>
{{end}}
<div class="col-sm-4 row justify-content-center" style="margin: 3em auto;">
<p class="row justify-content-center">Más información en:</p>
<ul>
<li class=""><a href="">P&aacute;gina de ayuda Web estáticas</a></li>
<li class=""><a href="">Lista de correo</a></li>
<li class=""><a href="">Chat en matrix</a></li>
</ul>
</div>
</div>
{{template "footer.html"}}

4
tmpl/index.html

@ -45,7 +45,9 @@
<li class="list-group-item"><a href="/password/">Cambiar la contraseña</a></li>
{{if eq (printf "%v" .Role) "sindominante"}}
<li class="list-group-item"><a href="/adduser/">Invitar amiga a SinDominio</a></li>
<li class="list-group-item"><a href="/gitea/">Crear repositorio web</a></li>
{{end}}
{{if ne .Shell "/bin/false"}}
<li class="list-group-item"><a href="/gitea/">Crear repositorio web</a></li>
{{end}}
{{if .IsAdmin}}
<li class="list-group-item"><a href="/users/">Ver listado de cuentas</a></li>

Loading…
Cancel
Save