Exemplo n.º 1
0
def startup():
    db_path = os.path.dirname(settings.get('database'))
    cache_path = settings.get('cache')

    if not os.path.exists(db_path):
        os.makedirs(db_path)

    if not os.path.exists(cache_path):
        os.makedirs(cache_path)
Exemplo n.º 2
0
def init_env():
    db_path = os.path.dirname(settings.get('database'))
    if not os.path.exists(db_path):
        os.makedirs(db_path)

    cache_path = settings.get('cache')
    if not os.path.exists(cache_path):
        os.makedirs(cache_path)

    log_path = settings.get('log')
    if not os.path.exists(log_path):
        os.makedirs(log_path)
Exemplo n.º 3
0
def init_logger():
    logging_handlers = [
        logging.handlers.TimedRotatingFileHandler(os.path.join(
            settings.get('log'), 'service.log'),
                                                  when='D')
    ]
    if not settings.get('quiet'):
        logging_handlers.append(logging.StreamHandler())

    logging.basicConfig(
        level=logging.DEBUG if settings.get('debug') else logging.INFO,
        format=
        '[%(asctime)s] (%(pathname)s:%(lineno)s) [%(levelname)s] %(name)s: %(message)s',
        datefmt='%m-%d %H:%M',
        handlers=logging_handlers)
Exemplo n.º 4
0
    def __init__(self, port, address, cache_path):
        # PyInstaller patch
        base_path = sys.path[0] if not hasattr(sys, 'frozen') else getattr(
            sys, '_MEIPASS')
        app_settings = {
            'debug': settings.get('debug'),
            'template_path': os.path.join(base_path, 'views'),
            'static_path': os.path.join(base_path, 'static'),
            'static_url_prefix': '/static/',
            'server': self,
            'ui_modules': uimodules,
            'default_handler_class': NotFound,
        }

        urls.patterns.append((r'/cache/(.*)', tornado.web.StaticFileHandler, {
            'path': cache_path
        }, 'cache'))
        application = Application(urls.patterns, **app_settings)
        try:
            application.listen(port, address)
        except OSError:
            logging.error('system already running.')
            sys.exit(0)
        self.application = application

        self._worker_output = Queue()
        self._worker_input = Queue()
        self._workers = dict()
        self._tasks = deque()
Exemplo n.º 5
0
 def post(self):
     username = self.get_argument("username", None)
     password = self.get_argument("password", None)
     print username
     print password
     result = conn.query(
         "SELECT COUNT(*) FROM member WHERE member_username = %s AND member_password = PASSWORD(%s)",
         username, password)
     print result
     if result[0]['COUNT(*)'] > 0:
         user_id = result[0].get("entity_id", "")
         print result
         print u"=== 登录 ==="
         self.set_secure_cookie("user",
                                tornado.escape.json_encode({
                                    "id": user_id,
                                    "v": 1
                                }),
                                expires=time.time() + 63072000,
                                domain=settings.get("cookie_domain"))
         self.finish({
             "info": "success",
             "login_account": username,
             "action": "redirect",
             "redirect_uri": "/"
         })
         return
     else:
         print u"=== 账号密码错误 ==="
         self.finish({"info": "reload"})
Exemplo n.º 6
0
    def _create_workers(self):
        self._workers.clear()
        requests_per_minute = setting.get('worker.requests-per-minute', int,
                                          REQUESTS_PER_MINUTE)
        local_object_duration = setting.get('worker.local-object-duration',
                                            int, LOCAL_OBJECT_DURATION)
        broadcast_incremental_backup = setting.get(
            'worker.broadcast-incremental-backup', bool,
            BROADCAST_INCREMENTAL_BACKUP)
        broadcast_active_duration = setting.get(
            'worker.broadcast-active-duration', int, BROADCAST_ACTIVE_DURATION)
        image_local_cache = setting.get('worker.image-local-cache', bool,
                                        IMAGE_LOCAL_CACHE)

        self._worker_input = Queue()
        worker_args = {
            'debug': settings.get('debug'),
            'queue_in': self._worker_input,
            'queue_out': self._worker_output,
            'requests_per_minute': requests_per_minute,
            'local_object_duration': local_object_duration,
            'broadcast_incremental_backup': broadcast_incremental_backup,
            'image_local_cache': image_local_cache,
            'broadcast_active_duration': broadcast_active_duration,
            'db_path': db.DATEBASE_PATH,
        }
        worker = Worker(**worker_args)
        self._workers[worker.name] = worker
        proxies = setting.get('worker.proxies', 'json')
        if not proxies:
            return
        for proxy in proxies:
            worker_args['proxy'] = proxy
            worker = Worker(**worker_args)
            self._workers[worker.name] = worker
Exemplo n.º 7
0
    def get(self, post_name):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        self.post = conn.get("SELECT * FROM "+wp_perfix+"posts WHERE post_status = 'publish' AND post_type = 'post' AND post_name = %s", tornado.escape.url_escape(post_name))
        if not self.post:
            raise tornado.web.HTTPError(404)

        self.render('../template/post.html')
Exemplo n.º 8
0
    def get(self, post_name):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        self.post = conn.get(
            "SELECT * FROM %sposts WHERE post_status = 'publish' AND post_type = 'post' AND post_name = %s"
            % (wp_perfix, "%s"), tornado.escape.url_escape(post_name))
        if not self.post:
            raise tornado.web.HTTPError(404)

        self.render('../template/post.html')
Exemplo n.º 9
0
        def prepare_file(url, retries):
            _, file_ext = os.path.splitext(url)
            hash_str = hashlib.md5('{0}|{1}'.format(retries,
                                                    url).encode()).hexdigest()
            file_path = '{0}/{1}'.format(hash_str[0:2], hash_str[2:4])

            local_filename = '{0}/{1}'.format(file_path,
                                              hash_str[4:] + file_ext)
            cache_path = settings.get('cache')
            directory = '{0}/{1}'.format(cache_path, file_path)
            full_path_filename = '{0}/{1}'.format(cache_path, local_filename)
            if not os.path.exists(directory):
                os.makedirs(directory)

            return full_path_filename, local_filename
Exemplo n.º 10
0
    def main(self):
        """Monitors all redis servers defined in the config for a certain number
        of seconds.

        Args:
            duration (int): The number of seconds to monitor for.
        """
        redis_servers = settings.get("redis", [])

        for redis_server in redis_servers:

            redis_password = redis_server.get("password")
            info = InfoThread(self.app_queue, self.notice_queue, redis_server["server"], redis_server["port"], redis_password)
            self.threads.append(info)
            info.setDaemon(True)
            info.start()
Exemplo n.º 11
0
    def verification(self):

        signature = self.get_argument('signature')
        timestamp = self.get_argument('timestamp')
        nonce = self.get_argument('nonce')

        token = settings.get("token")

        tmplist = [token, timestamp, nonce]
        tmplist.sort()
        tmpstr = ''.join(tmplist)
        hashstr = hashlib.sha1(tmpstr).hexdigest()

        if hashstr == signature:
            return True
        return False
Exemplo n.º 12
0
    def get(self):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        term = self.get_argument("t", None)
        if term:
            term_record = conn.get("SELECT * FROM "+wp_perfix+"terms WHERE slug = %s", term)
            term_taxonomy = conn.get("SELECT * FROM "+wp_perfix+"term_taxonomy WHERE term_id = %s", term_record["term_id"])
            object_records = conn.query("SELECT * FROM "+wp_perfix+"term_relationships WHERE term_taxonomy_id = %s ORDER BY object_id DESC LIMIT 5", term_taxonomy["term_taxonomy_id"])
            self.post_list = conn.query("SELECT * FROM "+wp_perfix+"posts WHERE post_status = 'publish' AND post_type = 'post' AND ID IN %s ORDER BY ID DESC", tuple([i["object_id"] for i in object_records]))
            self.term = "&t=%s" % term
        else:
            self.post_list = conn.query("SELECT * FROM "+wp_perfix+"posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY ID DESC LIMIT 5")
            self.term = ""

        post_thumbnail_ids = {}
        meta_thumbnails = {}
        post_thumbnails = {}

        postmeta_list = conn.query("SELECT * FROM "+wp_perfix+"postmeta WHERE meta_key = '_thumbnail_id' AND post_id IN %s", tuple([int(i.ID) for i in self.post_list]))
        for postmeta in postmeta_list:
            post_thumbnail_ids[postmeta.post_id] = postmeta.meta_value

        postmeta_list = conn.query("SELECT * FROM "+wp_perfix+"postmeta WHERE meta_key = '_wp_attached_file' AND post_id IN %s" , tuple([int(i) for i in post_thumbnail_ids.values()]))
        for postmeta in postmeta_list:
            meta_thumbnails[postmeta.post_id] = postmeta.meta_value

        for k, v in post_thumbnail_ids.iteritems():
            post_thumbnails[k] = meta_thumbnails[long(v)]

        self.post_id_from = self.post_list[-1].ID
        self.carousel_list = []
        carousel_count = 0
        color_count = 0
        for post in self.post_list:
            post.thumbnail = "/wp-content/uploads/%s" % post_thumbnails[post.ID] if post_thumbnails.get(post.ID) else None
            if post.thumbnail and carousel_count < 3:
                self.carousel_list.append(post)
                carousel_count += 1

            soup = BeautifulSoup(post.post_content.split("<!--more-->")[0])
            post.post_excerpt = soup.get_text()

            post.color = POST_COLORS[color_count % len(POST_COLORS)]
            color_count += 1

        self.render('../template/main.html')
Exemplo n.º 13
0
    def getSetting():
        try:
            global Setting
            fileSource = settings.get()
            Setting.appID = fileSource['appID']
            Setting.appSecret = fileSource['appSecret']

            #try:Setting.Token= json.loads(requests.get('https://graph.facebook.com/oauth/access_token?client_id=%s&client_secret=%s&grant_type=client_credentials'%(Setting.appID, Setting.appSecret)).text)['access_token']
            #finally:Setting.Token = "" if Setting.Token == "" else Setting.Token
            Setting.Token = "EAACEdEose0cBANRIIwH5T1JmIlQHthCAQLhZCZBMWLzqkrDHFqDk2AEfIK4KM3flefY2LrKmFZBxQrIBdAKIvPADHZBh2mZAEDHw7oXtHPC2Tf4Bub3hfubrY9zMPLohYBuGWGuEuJCTcVQ5eZAKyZAdAEczLF97tZBhUiwOXCXoXlD1UQIgrZBoAmDFZA2o0lZBWMZD"

            Setting.pageID = fileSource['pageID']
            Setting.gropuID = fileSource['groupID']

            return True
        except Exception as ex:
            return ex
Exemplo n.º 14
0
    def verification(self):

        signature = self.get_argument('signature')
        timestamp = self.get_argument('timestamp')
        nonce = self.get_argument('nonce')

        token = settings.get("token")

        tmplist = [token, timestamp, nonce]
        tmplist.sort()
        tmpstr = ''.join(tmplist)
        hashstr = sha1(tmpstr).hexdigest()

        if hashstr == signature:
            logger.info("connect with weixin server success!")
            return True
        logger.warn("connect with weixin server fail!")
        return False
Exemplo n.º 15
0
    def get(self):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        from_id = int(self.get_argument("from", ""))
        term = self.get_argument("t", None)
        if term:
            term_record = conn.get("SELECT * FROM "+wp_perfix+"terms WHERE slug = %s", term)
            term_taxonomy = conn.get("SELECT * FROM "+wp_perfix+"term_taxonomy WHERE term_id = %s", term_record["term_id"])
            object_records = conn.query("SELECT * FROM "+wp_perfix+"term_relationships WHERE term_taxonomy_id = %s AND object_id < %s ORDER BY object_id DESC LIMIT 5", term_taxonomy["term_taxonomy_id"], from_id)
            post_list = conn.query("SELECT * FROM "+wp_perfix+"posts WHERE post_status = 'publish' AND post_type = 'post' AND ID IN %s ORDER BY ID DESC", tuple([i["object_id"] for i in object_records]))
            self.term = "&t=%s" % term
        else:
            post_list = conn.query("SELECT * FROM "+wp_perfix+"posts WHERE post_status = 'publish' AND post_type = 'post' AND ID < %s ORDER BY ID DESC LIMIT 5", from_id)

        post_thumbnail_ids = {}
        meta_thumbnails = {}
        post_thumbnails = {}

        postmeta_list = conn.query("SELECT * FROM "+wp_perfix+"postmeta WHERE meta_key = '_thumbnail_id' AND post_id IN %s", tuple([int(i.ID) for i in post_list]))
        for postmeta in postmeta_list:
            post_thumbnail_ids[postmeta.post_id] = postmeta.meta_value

        postmeta_list = conn.query("SELECT * FROM "+wp_perfix+"postmeta WHERE meta_key = '_wp_attached_file' AND post_id IN %s" , tuple([int(i) for i in post_thumbnail_ids.values()]))
        for postmeta in postmeta_list:
            meta_thumbnails[postmeta.post_id] = postmeta.meta_value

        for k, v in post_thumbnail_ids.iteritems():
            post_thumbnails[k] = meta_thumbnails[long(v)]

        post_list_json = []
        color_count = 0
        for post in post_list:
            soup = BeautifulSoup(post.post_content.split("<!--more-->")[0])
            post_json = {}
            post_json["post_excerpt"] = soup.get_text()
            post_json["post_title"] = post.post_title
            post_json["post_name"] = post.post_name
            post_json["thumbnail"] = "/wp-content/uploads/%s" % post_thumbnails[post.ID] if post_thumbnails.get(post.ID) else None
            post_json["color"] = POST_COLORS[color_count % len(POST_COLORS)]
            color_count += 1

            post_list_json.append(post_json)

        self.finish({"list":post_list_json, "post_id_from":post_list[-1].ID if post_list else 0})
Exemplo n.º 16
0
def main(args):
    """
    程序主函数
    """
    parsed_args = parse_args(args)

    settings.update({
        'cache': parsed_args.cache,
        'database': parsed_args.database,
        'port': parsed_args.port,
        'debug': parsed_args.debug,
    })

    logging.basicConfig(
        level=logging.DEBUG if settings.get('debug') else logging.INFO,
        format=
        '[%(asctime)s] (%(pathname)s:%(lineno)s) [%(levelname)s] %(name)s: %(message)s',
        datefmt='%m-%d %H:%M')

    startup()
    db.init(parsed_args.database)

    server = Server(parsed_args.port, DEFAULT_SERVICE_HOST, parsed_args.cache)
    server.run()
Exemplo n.º 17
0
    def get(self):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        term = self.get_argument("t", None)
        if term:
            term_record = conn.get(
                "SELECT * FROM %sterms WHERE slug = %s" % (wp_perfix, "%s"),
                term)
            term_taxonomy = conn.get(
                "SELECT * FROM %sterm_taxonomy WHERE term_id = %s" %
                (wp_perfix, "%s"), term_record["term_id"])
            object_records = conn.query(
                "SELECT * FROM %sterm_relationships WHERE term_taxonomy_id = %s ORDER BY object_id DESC LIMIT 5"
                % (wp_perfix, "%s"), term_taxonomy["term_taxonomy_id"])
            self.post_list = conn.query(
                "SELECT * FROM %sposts WHERE post_status = 'publish' AND post_type = 'post' AND ID IN %s ORDER BY ID DESC"
                % (wp_perfix, "%s"),
                tuple([i["object_id"] for i in object_records]))
            self.term = "&t=%s" % term
        else:
            self.post_list = conn.query(
                "SELECT * FROM %sposts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY ID DESC LIMIT 5"
                % wp_perfix)
            self.term = ""

        post_thumbnail_ids = {}
        meta_thumbnails = {}
        post_thumbnails = {}

        postmeta_list = conn.query(
            "SELECT * FROM %spostmeta WHERE meta_key = '_thumbnail_id' AND post_id IN %s"
            % (wp_perfix, "%s"), tuple([int(i.ID) for i in self.post_list]))
        for postmeta in postmeta_list:
            post_thumbnail_ids[postmeta.post_id] = postmeta.meta_value

        postmeta_list = conn.query(
            "SELECT * FROM %spostmeta WHERE meta_key = '_wp_attached_file' AND post_id IN %s"
            % (wp_perfix, "%s"),
            tuple([int(i) for i in post_thumbnail_ids.values()]))
        for postmeta in postmeta_list:
            meta_thumbnails[postmeta.post_id] = postmeta.meta_value

        for k, v in post_thumbnail_ids.iteritems():
            post_thumbnails[k] = meta_thumbnails[long(v)]

        self.post_id_from = self.post_list[-1].ID
        self.carousel_list = []
        carousel_count = 0
        color_count = 0
        for post in self.post_list:
            post.thumbnail = "/wp-content/uploads/%s" % post_thumbnails[
                post.ID] if post_thumbnails.get(post.ID) else None
            if post.thumbnail and carousel_count < 3:
                self.carousel_list.append(post)
                carousel_count += 1

            soup = BeautifulSoup(post.post_content.split("<!--more-->")[0])
            post.post_excerpt = soup.get_text()

            post.color = POST_COLORS[color_count % len(POST_COLORS)]
            color_count += 1

        self.render('../template/main.html')
Exemplo n.º 18
0
# -*- coding: utf-8 -*-

from setting import settings
route_prefix = settings.get("test_route", "")

routes = [
    (r"/templates/(.*)",                "handler.templates.StaticDownloadHandler"),
    (r"/index",                    "handler.download.DownloadHandler"),
    (r"/",                         "handler.download.DownloadHandler"),
]
Exemplo n.º 19
0
    def get(self):
        wp_perfix = settings.get("wordpress_prefix", "wp_")

        from_id = int(self.get_argument("from", ""))
        term = self.get_argument("t", None)
        if term:
            term_record = conn.get(
                "SELECT * FROM %sterms WHERE slug = %s" % (wp_perfix, "%s"),
                term)
            term_taxonomy = conn.get(
                "SELECT * FROM %sterm_taxonomy WHERE term_id = %s" %
                (wp_perfix, "%s"), term_record["term_id"])
            object_records = conn.query(
                "SELECT * FROM %sterm_relationships WHERE term_taxonomy_id = %s AND object_id < %s ORDER BY object_id DESC LIMIT 5"
                % (wp_perfix, "%s", "%s"), term_taxonomy["term_taxonomy_id"],
                from_id)
            post_list = conn.query(
                "SELECT * FROM %sposts WHERE post_status = 'publish' AND post_type = 'post' AND ID IN %s ORDER BY ID DESC"
                % (wp_perfix, "%s"),
                tuple([i["object_id"] for i in object_records]))
            self.term = "&t=%s" % term
        else:
            post_list = conn.query(
                "SELECT * FROM %sposts WHERE post_status = 'publish' AND post_type = 'post' AND ID < %s ORDER BY ID DESC LIMIT 5"
                % (wp_perfix, "%s"), from_id)

        post_thumbnail_ids = {}
        meta_thumbnails = {}
        post_thumbnails = {}

        postmeta_list = conn.query(
            "SELECT * FROM %spostmeta WHERE meta_key = '_thumbnail_id' AND post_id IN %s"
            % (wp_perfix, "%s"), tuple([int(i.ID) for i in post_list]))
        for postmeta in postmeta_list:
            post_thumbnail_ids[postmeta.post_id] = postmeta.meta_value

        postmeta_list = conn.query(
            "SELECT * FROM %spostmeta WHERE meta_key = '_wp_attached_file' AND post_id IN %s"
            % (wp_perfix, "%s"),
            tuple([int(i) for i in post_thumbnail_ids.values()]))
        for postmeta in postmeta_list:
            meta_thumbnails[postmeta.post_id] = postmeta.meta_value

        for k, v in post_thumbnail_ids.iteritems():
            post_thumbnails[k] = meta_thumbnails[long(v)]

        post_list_json = []
        color_count = 0
        for post in post_list:
            soup = BeautifulSoup(post.post_content.split("<!--more-->")[0])
            post_json = {}
            post_json["post_excerpt"] = soup.get_text()
            post_json["post_title"] = post.post_title
            post_json["post_name"] = post.post_name
            post_json[
                "thumbnail"] = "/wp-content/uploads/%s" % post_thumbnails[
                    post.ID] if post_thumbnails.get(post.ID) else None
            post_json["color"] = POST_COLORS[color_count % len(POST_COLORS)]
            color_count += 1

            post_list_json.append(post_json)

        self.finish({
            "list": post_list_json,
            "post_id_from": post_list[-1].ID if post_list else 0
        })