0

私は Python を初めて使用しますが、アドオン サービスでこのグリッチ/エクスプロイトにパッチを適用する必要があります。

私のコードは次のようになります。

#!/usr/bin/env python
import subprocess
import sys
import os
import yaml
from xml.dom import minidom
sys.path.append('/scripts')
import createvhosts
doc = minidom.parse(sys.stdin)

param0taglist = doc.getElementsByTagName('param0')
param1taglist = doc.getElementsByTagName('param1')
param0 = param0taglist[0].childNodes[0].toxml()
param1 = param1taglist[0].childNodes[0].toxml()

domain = param0 + '.' + param1
usertaglist = doc.getElementsByTagName('USER')
user = usertaglist[0].childNodes[0].toxml()
f = open('/var/cpanel/userdata/' + user + '/main')
ydata = yaml.load(f)
f.close()
sublist = ydata['sub_domains']
addondict = ydata['addon_domains']
parkedlist = ydata['parked_domains']
mainlist = ydata['main_domain']
serverip = createvhosts.getmainip()
if len(sublist) != 0:
    slcont = 0
    while slcont < len(sublist):
        domain = sublist[slcont]
        docroot, yip, alias = createvhosts.getvars(sublist[slcont])
        if yip == serverip:
            createvhosts.writeconfshared(user, domain, docroot, yip, alias)
        else:
            createvhosts.writeconfded(user, domain, docroot, yip, alias)
        slcont = slcont + 1
proc = subprocess.Popen("/etc/init.d/nginx restart > /dev/null 2>&1", shell=True)

問題は、CPanel で * を使用してサブドメインを追加すると、明らかに nginx がそれを許可および受け入れないように見えるため、サーバーがクラッシュすることです。私が助けを必要としているのは、 * を置き換え/ブロックする方法を見つけて、それが入らないようにすることです.

のようなものは機能しますParam0.find( "*" ) !=-1か?

4

1 に答える 1

1

探している構成は ですchar in string

>>> s = 'ab*de'
>>> '*' in s
True

これを条件に入れると、次のようなものが得られます。

if '*' in param0:
    raise ValueError("Can't use '*'!")

これは、より複雑な作業を行うために文字列で使用できるメソッドの包括的なリストとともに、公式ドキュメントの組み込み型の下に記載されています。

于 2012-09-18T21:30:46.523 に答える