コード例 #1
0
ファイル: views.py プロジェクト: tkhsknsk/stip-rs
def remove(request, taxii_id, job_id):
    if request.method != 'GET':
        return error_page_free_format(request, 'invalid method')
    #activeユーザー以外はエラー
    if request.user.is_active == False:
        return error_page_inactive(request)
    #is_admin権限なしの場合はエラー
    if request.user.is_admin == False:
        return error_page_no_view_permission(request)
    try:
        #mongoのtaxii_client情報から該当job_idを削除
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        taxii_client.remove_job(job_id)
        #job停止
        client = Client(taxii_id=taxii_id)
        client.remove_job(job_id)
        replace_dict = get_common_replace_dict(request)
        #mongoからtaxii_client情報を取得
        replace_dict['client'] = TaxiiClients.objects.get(id=taxii_id)
        #レンダリング
        return render(request, 'configuration_taxii_client_detail.html',
                      replace_dict)
    except Exception:
        #エラーページ
        return error_page(request)
コード例 #2
0
ファイル: views.py プロジェクト: tkhsknsk/stip-rs
def create(request, taxii_id):
    if request.method != 'POST':
        return error_page_free_format(request, 'invalid method')
    #activeユーザー以外はエラー
    if request.user.is_active == False:
        return error_page_inactive(request)
    #is_admin権限なしの場合はエラー
    if request.user.is_admin == False:
        return error_page_no_view_permission(request)
    try:
        time = get_configuartion_taxii_client_detail_create_time(request)
        #mongoからtaxii_client情報を取得
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        #Cron設定
        times = time.split(':')
        schedule_job = taxii_client.add_job(type_=ScheduleJobs.JOB_CRON,
                                            hour=times[0],
                                            minute=times[1],
                                            second=times[2])
        #job追加
        client = Client(taxii_id=taxii_id)
        client.add_job(schedule_job)

        replace_dict = get_common_replace_dict(request)
        replace_dict['client'] = taxii_client
        #レンダリング
        return render(request, 'configuration_taxii_client_detail.html',
                      replace_dict)
    except Exception:
        #エラーページ
        return error_page(request)
コード例 #3
0
ファイル: views.py プロジェクト: s-tip/stip-rs
def start(request, id_):
    if not request.user.is_active:
        return error_page_inactive(request)
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    protocol_version = get_protocol_version(request)
    start = get_datetime_from_string(get_start_start(request))
    end = get_datetime_from_string(get_start_end(request))
    try:
        replace_dict = get_common_replace_dict(request)
        if protocol_version.startswith('1.'):
            taxii_client = TaxiiClients.objects.get(id=id_)
            replace_dict['taxii'] = taxii_client
            cl = Client(taxii_client=taxii_client)
        elif protocol_version.startswith('2.'):
            taxii2_client = Taxii2Clients.objects.get(id=id_)
            replace_dict['taxii'] = taxii2_client
            cl = Client(taxii2_client=taxii2_client)
        else:
            raise Exception('Invalid taxii protocol version.')

        if cl._can_read:
            cl.set_start_time(start)
            cl.set_end_time(end)
            count = cl.poll()
            replace_dict[
                'info_msg'] = 'Poll end successfully!! (Get %d stix files.)' % (
                    count)
        else:
            replace_dict['error_msg'] = 'This collection is not for polling'
        return render(request, 'poll_detail.html', replace_dict)
    except Exception:
        return error_page(request)
コード例 #4
0
ファイル: views.py プロジェクト: s-tip/stip-rs
def pause(request, taxii_id, job_id):
    if request.method != 'GET':
        return error_page_free_format(request, 'invalid method')
    if not request.user.is_active:
        return error_page_inactive(request)
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    try:
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        client = Client(taxii_client=taxii_client)
        client.pause_job(job_id)
        replace_dict = get_common_replace_dict(request)
        replace_dict['client'] = taxii_client
        return render(request, 'configuration_taxii_client_detail.html', replace_dict)
    except Exception:
        return error_page(request)
コード例 #5
0
 def get_clients_from_community(cls, community):
     l = []
     for taxii_client in TaxiiClients.objects.filter(community=community,
                                                     push=True):
         from ctirs.core.taxii.taxii import Client
         l.append(Client(taxii_client=taxii_client))
     return l
コード例 #6
0
ファイル: views.py プロジェクト: ykoji8681/stip-rs
def publish(request):
    # ajax parameter取得
    stix_id = request.GET['stix_id']
    taxii_id = request.GET['taxii_id']
    # Publish (Push) する StixFile object
    stix = StixFiles.objects.get(id=stix_id)
    # Publish (Push) の時に使用する TaxiiClients object
    client = Client(taxii_id=taxii_id)
    # publish する
    try:
        client.push(stix)
        resp = {'status': 'OK', 'message': 'Success'}
    except Exception as e:
        # traceback.print_exc()
        resp = {'status': 'NG', 'message': str(e)}
    return JsonResponse(resp)
コード例 #7
0
 def init_taxii_client_scheduler(self):
     from ctirs.core.mongo.documents import TaxiiClients, Taxii2Clients
     from ctirs.core.taxii.taxii import Client
     for doc in TaxiiClients.objects:
         taxii_client = Client(taxii_client=doc)
         for job in doc.jobs:
             self.boot_scheduler(job, taxii_client)
         if doc.interval_schedule_job is not None:
             job = doc.interval_schedule_job
             self.boot_scheduler(job, taxii_client)
     for doc in Taxii2Clients.objects:
         taxii2_client = Client(taxii2_client=doc)
         for job in doc.jobs:
             self.boot_scheduler(job, taxii2_client)
         if doc.interval_schedule_job is not None:
             job = doc.interval_schedule_job
             self.boot_scheduler(job, taxii2_client)
コード例 #8
0
ファイル: views.py プロジェクト: s-tip/stip-rs
def create(request, taxii_id):
    if request.method != 'POST':
        return error_page_free_format(request, 'invalid method')
    if not request.user.is_active:
        return error_page_inactive(request)
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    try:
        time = get_configuartion_taxii_client_detail_create_time(request)
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        times = time.split(':')
        schedule_job = taxii_client.add_job(type_=ScheduleJobs.JOB_CRON, hour=times[0], minute=times[1], second=times[2])
        client = Client(taxii_client=taxii_client)
        client.add_job(schedule_job)

        replace_dict = get_common_replace_dict(request)
        replace_dict['client'] = taxii_client
        return render(request, 'configuration_taxii_client_detail.html', replace_dict)
    except Exception:
        return error_page(request)
コード例 #9
0
ファイル: views.py プロジェクト: s-tip/stip-rs
def interval(request, taxii_id):
    if request.method != 'GET':
        return error_page_free_format(request, 'invalid method')
    if not request.user.is_active:
        return error_page_inactive(request)
    if not request.user.is_admin:
        return error_page_no_view_permission(request)
    try:
        interval = get_configuartion_taxii_client_detail_interval_interval(request)
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        client = Client(taxii_client=taxii_client)
        client.remove_interval_job()
        taxii_client.interval_schedule_job = None
        taxii_client.save()
        if interval != 0:
            schedule_job = taxii_client.add_job(type_=ScheduleJobs.JOB_INTERVAL, seconds=interval)
            client.add_job(schedule_job)
        replace_dict = get_common_replace_dict(request)
        replace_dict['client'] = taxii_client
        if interval != 0:
            replace_dict['interval_info_msg'] = 'Set Interval %d sec' % (interval)
        else:
            replace_dict['interval_info_msg'] = 'Stop a job by interval'
        return render(request, 'configuration_taxii_client_detail.html', replace_dict)
    except Exception:
        return error_page(request)
コード例 #10
0
ファイル: boot_rs.py プロジェクト: tkhsknsk/stip-rs
 def init_taxii_client_scheduler(self):
     from ctirs.core.mongo.documents import TaxiiClients
     from ctirs.core.taxii.taxii import Client
     #schedulerを起動
     #mongoに格納されている全TaxiiClientsドキュメントについて
     for doc in TaxiiClients.objects:
         taxii_client = Client(taxii_id=doc.id)
         #各job設定ごとに
         for job in doc.jobs:
             self.boot_scheduler(job, taxii_client)
         #interval
         if doc.interval_schedule_job is not None:
             job = doc.interval_schedule_job
             self.boot_scheduler(job, taxii_client)
コード例 #11
0
def publish(request):
    stix_id = request.GET['stix_id']
    taxii_id = request.GET['taxii_id']
    protocol_version = request.GET['protocol_version']
    stix = StixFiles.objects.get(id=stix_id)
    if protocol_version.startswith('1.'):
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        client = Client(taxii_client=taxii_client)
    else:
        taxii_client = Taxii2Clients.objects.get(id=taxii_id)
        client = Client(taxii2_client=taxii_client)
    if not client._can_write:
        resp = {'status': 'NG',
                'message': 'This collection is not for publishing.'}
        return JsonResponse(resp)
    try:
        msg = client.push(stix)
        resp = {'status': 'OK',
                'message': msg}
    except Exception as e:
        resp = {'status': 'NG',
                'message': str(e)}
    return JsonResponse(resp)
コード例 #12
0
ファイル: views.py プロジェクト: stmtstk/stip-rs
def start(request, id_):
    # activeユーザー以外はエラー
    if not request.user.is_active:
        return error_page_inactive(request)
    start = get_datetime_from_string(get_start_start(request))
    end = get_datetime_from_string(get_start_end(request))
    try:
        cl = Client(taxii_id=id_)
        cl.set_start_time(start)
        cl.set_end_time(end)
        count = cl.poll()
        replace_dict = get_common_replace_dict(request)
        replace_dict['taxii'] = TaxiiClients.objects.get(id=id_)
        replace_dict[
            'info_msg'] = 'Poll end successfully!! (Get %d stix files.)' % (
                count)
        # レンダリング
        return render(request, 'poll_detail.html', replace_dict)
    except Exception:
        # エラーページ
        return error_page(request)
コード例 #13
0
ファイル: views.py プロジェクト: tkhsknsk/stip-rs
def interval(request, taxii_id):
    if request.method != 'GET':
        return error_page_free_format(request, 'invalid method')
    #activeユーザー以外はエラー
    if request.user.is_active == False:
        return error_page_inactive(request)
    #is_admin権限なしの場合はエラー
    if request.user.is_admin == False:
        return error_page_no_view_permission(request)
    try:
        interval = get_configuartion_taxii_client_detail_interval_interval(
            request)
        #mongoからtaxii_client情報を取得
        taxii_client = TaxiiClients.objects.get(id=taxii_id)
        client = Client(taxii_id=taxii_id)
        #稼働しているスケジューラの job があったら削除する
        client.remove_interval_job()
        #taxii_client の internal_schedule_jobs を Noneにする
        taxii_client.interval_schedule_job = None
        taxii_client.save()
        if interval != 0:
            #Cron設定
            schedule_job = taxii_client.add_job(
                type_=ScheduleJobs.JOB_INTERVAL, seconds=interval)
            #job追加
            client.add_job(schedule_job)
        replace_dict = get_common_replace_dict(request)
        replace_dict['client'] = taxii_client
        if interval != 0:
            replace_dict['interval_info_msg'] = 'Set Interval %d sec' % (
                interval)
        else:
            replace_dict['interval_info_msg'] = 'Stop a job by interval'
        #レンダリング
        return render(request, 'configuration_taxii_client_detail.html',
                      replace_dict)
    except Exception:
        #エラーページ
        return error_page(request)