Factorisation des hacks dans l'optique d'une ferme de wiki

darcs-hash:20061209174936-9e428-6bfb1f8a82f742f51f28a46e459fe9a2ba70b27a.gz
This commit is contained in:
bobot 2006-12-09 18:49:36 +01:00
parent 6fb59f5a0f
commit 1b449c891f
3 changed files with 26 additions and 47 deletions

View file

@ -124,8 +124,8 @@ class RequestBase:
if self.cfg.theme_force: if self.cfg.theme_force:
theme_name = self.cfg.theme_default theme_name = self.cfg.theme_default
#### DEBUT HACK : Utilisation d'un thème différent pour www.crans.org #### DEBUT HACK : Utilisation d'un thème différent pour www.crans.org
if self.remote_addr == '138.231.136.3': if self.remote_addr in self.cfg.ip_theme.keys():
theme_name = self.cfg.theme_www theme_name = self.cfg.ip_theme[self.remote_addr]
#### FIN DU HACK #### FIN DU HACK
else: else:
theme_name = self.user.theme_name theme_name = self.user.theme_name
@ -936,8 +936,8 @@ space between words. Group page name is not allowed.""") % self.user.name
url = self.getQualifiedURL(url) url = self.getQualifiedURL(url)
#### DEBUT HACK : pour le www, on redirige vers du www #### DEBUT HACK : pour le www, on redirige vers du www
if self.remote_addr == '138.231.136.3': if self.remote_addr in self.cfg.ip_url_replace.keys():
url = url.replace('http://wiki','http://www') url = url.replace(self.cfg.ip_url_replace[self.remote_addr][0],self.cfg.ip-url_replace[self.remote_addr][1])
#### FIN DU HACK #### FIN DU HACK
self.http_headers(["Status: 302", "Location: %s" % url]) self.http_headers(["Status: 302", "Location: %s" % url])

View file

@ -174,11 +174,8 @@ space between words. Group page name is not allowed.""") % wikiutil.escape(theus
newuser = 0 newuser = 0
#### HACK SAUVAGE #### HACK SAUVAGE
import sys
sys.path.append('/usr/scripts/gestion/') if newuser and not self.cfg.ip_autorised_create_account(self.request.remote_addr):
from iptools import is_crans
if newuser and not is_crans(self.request.remote_addr):
return _(u"""Création de compte impossible. return _(u"""Création de compte impossible.
Pour des raisons de sécurité, la fonction de création d'un compte n'est Pour des raisons de sécurité, la fonction de création d'un compte n'est
possible que depuis la zone CRANS. possible que depuis la zone CRANS.

View file

@ -119,7 +119,7 @@ class AccessControlList:
#special_users = ["All", "Known", "Trusted"] #special_users = ["All", "Known", "Trusted"]
#### HACK SAUVAGE 2/4 #### HACK SAUVAGE 2/4
special_users = ["All", "Known", "Trusted", "Crans", "NoCrans"] special_users = ["All", "Known", "Trusted", "Conf"]
#### FIN DU HACK 2/4 #### FIN DU HACK 2/4
def __init__(self, request, lines=[]): def __init__(self, request, lines=[]):
@ -226,7 +226,7 @@ class AccessControlList:
return ''.join(["%s%s%s" % (b,l,e) for l in self.acl_lines]) return ''.join(["%s%s%s" % (b,l,e) for l in self.acl_lines])
def _special_All(self, request, name, dowhat, rightsdict): def _special_All(self, request, name, dowhat, rightsdict):
if dowhat == "read" and is_page_public(request): if dowhat == "read" and self.is_page_public(request):
return True return True
return rightsdict.get(dowhat) return rightsdict.get(dowhat)
@ -240,27 +240,8 @@ class AccessControlList:
return None return None
#### HACK SAUVAGE 3/4 #### HACK SAUVAGE 3/4
def _requete_interne(self, request): def _special_Conf(self, request, name, dowhat, rightsdict):
try: return self.cfg.acl_request(self, request, name, dowhat, rightsdict)
if str(request.__class__)=='MoinMoin.request.RequestCLI' or is_crans(request.remote_addr) and (request.remote_addr != u'138.231.136.3' or is_crans(request.mpyreq.headers_in['X-Forwarded-For'].split(",")[-1].strip())):
return True
except:
pass
return False
def _special_Crans(self, request, name, dowhat, rightsdict):
if self._requete_interne(request):
return rightsdict.get(dowhat)
return None
def _special_NoCrans(self, request, name, dowhat, rightsdict):
if dowhat == "read" and is_page_public(request):
return True
if not self._requete_interne(request):
return rightsdict.get(dowhat)
return None
#### FIN Du HACK 3/4 #### FIN Du HACK 3/4
def _special_Trusted(self, request, name, dowhat, rightsdict): def _special_Trusted(self, request, name, dowhat, rightsdict):
@ -276,6 +257,22 @@ class AccessControlList:
return self.acl_lines == other.acl_lines return self.acl_lines == other.acl_lines
def __ne__(self, other): def __ne__(self, other):
return self.acl_lines != other.acl_lines return self.acl_lines != other.acl_lines
#### HACK SAUVAGE 4/4
def is_page_public(self,request):
## On recherche si la page est publique
if not request.page:
return False
this_page = request.page.page_name
query = search.QueryParser().parse_query(u'CatégoriePagePublique')
page = search.Page(request, this_page)
result = query.search(page)
if result:
return True
else:
return False
#### FIN DU HACK 4/4
class ACLStringIterator: class ACLStringIterator:
@ -392,18 +389,3 @@ def parseACL(request, body):
acl_lines.append(args) acl_lines.append(args)
return AccessControlList(request, acl_lines) return AccessControlList(request, acl_lines)
#### HACK SAUVAGE 4/4
def is_page_public(request):
#return True
## On recherche si la page est publique
if not request.page:
return False
this_page = request.page.page_name
query = search.QueryParser().parse_query(u'CatégoriePagePublique')
page = search.Page(request, this_page)
result = query.search(page)
if result:
return True
else:
return False
#### FIn DU HACK 4/4