Exemplo n.º 1
0
def interval(request):
    if request.method != 'GET':
        return error_page_free_format(request, 'invalid method')
    # activeユーザー以外はエラー
    if not request.user.is_active:
        return error_page_inactive(request)
    # is_admin権限なしの場合はエラー
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    try:
        interval = get_adapter_otx_detail_interval_interval(request)
        print(interval)
        # schedular からジョブを削除
        otx.remove_interval_job()
        # mongo 格納の設定からジョブを削除
        OtxAdapter.remove_internal_job()
        if interval != 0:
            # Mongo の isightAdapter に jobを追加する (設定の保存のみ)
            job = OtxAdapter.add_job(type_=ScheduleJobs.JOB_INTERVAL,
                                     seconds=interval)
            # job 動作追加
            otx.add_job(job)
            info_msg = 'Set Interval %d sec' % (interval)
        else:
            # ジョブの追加をしない
            info_msg = 'Stop a job by interval'
        return otx_common_render(request, info_msg=info_msg)
    except Exception:
        # エラーページ
        return error_page(request)
Exemplo n.º 2
0
def create(request):
    if request.method != 'POST':
        return error_page_free_format(request, 'invalid method')
    # activeユーザー以外はエラー
    if not request.user.is_active:
        return error_page_inactive(request)
    # is_admin権限なしの場合はエラー
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    try:
        time = get_adapter_otx_detail_create_time(request)
        if time is None:
            return error_page_free_format(request, 'Invalid Time format.')
        times = time.split(':')
        # 数値変換チェック
        try:
            int(times[0])
            int(times[1])
            int(times[2])
        except ValueError:
            return error_page_free_format(request, 'Invalid Time format.')
        # Cron設定
        # job追加
        job = OtxAdapter.add_job(type_=ScheduleJobs.JOB_CRON,
                                 hour=times[0],
                                 minute=times[1],
                                 second=times[2])
        otx.add_job(job)
    except Exception:
        # エラーページ
        return error_page(request)
    return otx_common_render(request)
Exemplo n.º 3
0
 def remove_job(self, job_id):
     # OtxAdapterのjobsからjob削除
     otx = OtxAdapter.get()
     otx.remove_job(job_id)
     # スケジューラからjob削除
     schedule_job = ScheduleJobs.objects.get(id=job_id)
     self._schedule.remove_job(schedule_job)
     # mongoのschedule_jobsからschedule_job削除
     schedule_job.remove()
Exemplo n.º 4
0
def get_otx_dict(replace_dict):
    replace_dict['otx'] = OtxAdapter.get()
    # communityが削除されている場合はNoneを格納する
    try:
        if replace_dict['otx'].community is None:
            replace_dict['otx'].community = None
    except DoesNotExist:
        replace_dict['otx'].community = None
    return replace_dict
Exemplo n.º 5
0
def modify(request):
    if request.method != 'POST':
        return error_page_free_format(request, 'invalid method')
    # activeユーザー以外はエラー
    if not request.user.is_active:
        return error_page_inactive(request)
    try:
        apikey = get_adapter_otx_modify_apikey(request)
        community_id = get_adapter_otx_modify_community_id(request)
        uploader_id = int(get_adapter_otx_modify_uploader_id(request))
        # 設定更新
        OtxAdapter.modify_settings(apikey, community_id, uploader_id)
        # レンダリング
        replace_dict = get_replace_dict()
        replace_dict['info_msg_modify'] = 'Modify Success!!'
        return render(request, 'otx.html', replace_dict)
    except Exception:
        # エラーページ
        return error_page(request)
Exemplo n.º 6
0
 def resume_job(self, job_id):
     schedule_job = ScheduleJobs.objects.get(id=job_id)
     if schedule_job in OtxAdapter.get().jobs:
         if schedule_job.status == ScheduleJobs.STATUS_STOP:
             pass
         else:
             print('already working.')
             return
     else:
         raise Exception('invalid job_id')
     self._schedule.resume_job(schedule_job)
Exemplo n.º 7
0
    def pause_job(self, job_id):
        schedule_job = ScheduleJobs.objects.get(id=job_id)
        if schedule_job in OtxAdapter.get().jobs:
            if schedule_job.status == ScheduleJobs.STATUS_IN_OPERATION:
                pass
            else:
                print('not yet start.')
                return
        else:
            raise Exception('invalid job_id')

            return
        self._schedule.pause_job(schedule_job)
Exemplo n.º 8
0
def otx_common_render(request, info_msg=None, error_msg=None):
    try:
        replace_dict = get_common_replace_dict(request)
        # mongoからotx情報を取得
        oa = OtxAdapter.get()
        replace_dict['otx'] = oa
        if info_msg is not None:
            replace_dict['interval_info_msg'] = info_msg
        if error_msg is not None:
            replace_dict['interval_error_msg'] = error_msg
        # レンダリング
        return render(request, 'otx_detail.html', replace_dict)
    except Exception:
        # エラーページ
        return error_page(request)
Exemplo n.º 9
0
    def get_otx_stix(self, mtimestamp=None):
        # OTXアダプタの設定を取得
        otx_conf = OtxAdapter.get()
        key = otx_conf.apikey
        # 登録情報を取得
        community = otx_conf.community
        uploader = otx_conf.uploader
        via = Vias.get_via_adapter_otx(uploader)

        # otxから取得
        try:
            proxies = System.get_request_proxies()
            otx = OTXv2(key, proxies)
            slices = otx.getsince(mtimestamp)
        except Exception as e:
            traceback.print_exc()
            raise e

        # last_requested更新
        otx_conf.modify_last_requested()

        count = 0
        # ひとつずつ取得する
        for slice_ in slices:
            try:
                # stix一つごとに登録処理
                stix = StixExport(slice_)
                stix.build()
                content = stix.to_xml()
                # 取得したSTIXを登録
                _regist_stix(content, community, via)
                count += 1
            except Exception as e:
                # エラーが発生した場合はログを表示して処理は実行する
                traceback.print_exc()
        # 件数を返却
        return count