Exemple #1
0
from flask.testing import FlaskClient
from tests.test_base import check_blueprints
from werkzeug.datastructures import ImmutableMultiDict

from eNMS.functions import fetch_all

netmiko_ping = ImmutableMultiDict([
    ("name", "netmiko_ping"),
    ("waiting_time", "0"),
    ("devices", "1"),
    ("devices", "2"),
    ("description", ""),
    ("vendor", ""),
    ("operating_system", ""),
    ("content_type", "simple"),
    ("content", "ping 1.1.1.1"),
    ("netmiko_type", "show_commands"),
    ("driver", "cisco_xr_ssh"),
    ("global_delay_factor", "1.0"),
])

file_transfer_service = ImmutableMultiDict([
    ("name", "test"),
    ("waiting_time", "0"),
    ("devices", "1"),
    ("devices", "2"),
    ("description", ""),
    ("vendor", ""),
    ("operating_system", ""),
    ("driver", "cisco_ios"),
    ("source_file", "path/to/source"),
Exemple #2
0
                               args.model_name,
                               useGPU,
                               Environment,
                               gpuNum=gpuNum)
    while True:
        data = dataQueue.get()
        nnetResult = nnet(data)
        resQueue.put(nnetResult)


if __name__ == "__main__":
    # ---------processing state
    data = ImmutableMultiDict([
        ('state',
         '[8, 10, 36,  3,  4, 12, 27, 34, 53,  9,  5,  0, 46, 13, 19, 11, 30,\
            2, 18, 52, 15, 41, 22, 21, 47,  1, 35, 44,  7, 17, 16, 31, 37, 24,\
           48, 29, 45, 14,  6, 25, 40, 39, 42, 28, 33, 26, 23, 38, 43, 49, 50,\
           20, 32, 51]')
    ])
    data = ImmutableMultiDict([(
        'state',
        '51, 32, 26, 30, 4, 3, 2, 19, 36, 9, 39, 29, 28, 13, 14, 38, 5, 45, 27, 16, 44, 21, 22, 46, 8, 52, 42, 15, 50, 47, 23, 31, 34, 6, 48, 11, 35, 41, 24, 10, 40, 37, 17, 7, 0, 20, 43, 33, 25, 49, 1, 18, 12, 53'
    )])

    data = data.to_dict()
    arr = []
    data['state'] = ast.literal_eval(data['state'])
    print(data['state'])
    for i in data['state']:
        arr.append(int(i))
Exemple #3
0
 def test_connect_true_and_customer_id(self):
     """ Test connect customer to account (true) and if correct customer id. """
     imd = ImmutableMultiDict([('account', '2'), ('person', 'and')])
     self.assertTrue(self.bank.connect(imd))
     self.assertTrue("and" in self.bank.accounts[1].holders)
     self.assertIn("and", self.bank.accounts[1].holders)
def test_query_list_deserialize_items():
    schema = EnumQueryStringListSchema()
    result = schema.load(ImmutableMultiDict([("foo_ids", "A,B")]), )

    assert_that(result.data["foo_ids"], is_(equal_to([TestEnum.A,
                                                      TestEnum.B])))
Exemple #5
0
from conftest import path_scripts
from os.path import join
from tasks.models import Task
from test_base import check_blueprints
from test_objects import create_from_file
from test_scripts import netmiko_ping, napalm_jinja2_script
from werkzeug.datastructures import ImmutableMultiDict


instant_task = ImmutableMultiDict([
    ('name', 'instant_task'),
    ('scripts', 'napalm_subif'),
    ('scripts', 'netmiko_ping'),
    ('start_date', ''),
    ('end_date', ''),
    ('frequency', ''),
    ('script', '')
])

scheduled_task = ImmutableMultiDict([
    ('name', 'scheduled_task'),
    ('scripts', 'napalm_subif'),
    ('scripts', 'netmiko_ping'),
    ('start_date', '30/03/2018 19:10:13'),
    ('end_date', '06/04/2018 19:10:13'),
    ('frequency', '3600'),
    ('script', '')
])


@check_blueprints('/views', '/tasks')
Exemple #6
0
def updatesettings():
    try:
        something = request.form
        imd = ImmutableMultiDict(something)
        newdict = helpers.convert(imd)

        # Query the first set of settings, could query custom settings for individual users
        settings = Setting.query.filter_by(_id=1).first()

        # Make sure we're updating the settings instead of overwriting them
        if 'threatcrowd' in newdict.keys():
            settings.threatcrowd = 'on'
        else:
            settings.threatcrowd = 'off'
        if 'ptinfo' in newdict.keys() and newdict['ptkey'] is not '':
            settings.ptinfo = 'on'
        else:
            settings.ptinfo = 'off'
        if 'cuckoo' in newdict.keys():
            settings.cuckoo = 'on'
        else:
            settings.cuckoo = 'off'
        if 'vtinfo' in newdict.keys() and newdict['apikey'] is not '':
            settings.vtinfo = 'on'
        else:
            settings.vtinfo = 'off'
        if 'vtfile' in newdict.keys() and newdict['apikey'] is not '':
            settings.vtfile = 'on'
        else:
            settings.vtfile = 'off'
        if 'circlinfo' in newdict.keys() and newdict['circlusername'] is not '':
            settings.circlinfo = 'on'
        else:
            settings.circlinfo = 'off'
        if 'circlssl' in newdict.keys() and newdict['circlusername'] is not '':
            settings.circlssl = 'on'
        else:
            settings.circlssl = 'off'
        if 'whoisinfo' in newdict.keys():
            settings.whoisinfo = 'on'
        else:
            settings.whoisinfo = 'off'
        if 'farsightinfo' in newdict.keys() and newdict['farsightkey'] is not '':
            settings.farsightinfo = 'on'
        else:
            settings.farsightinfo = 'off'
        if 'shodaninfo' in newdict.keys() and newdict['shodankey'] is not '':
            settings.shodaninfo = 'on'
        else:
            settings.shodaninfo = 'off'
        if 'odnsinfo' in newdict.keys() and newdict['odnskey'] is not '':
            settings.odnsinfo = 'on'
        else:
            settings.odnsinfo = 'off'

        settings.farsightkey = newdict['farsightkey']
        settings.apikey = newdict['apikey']
        settings.odnskey = newdict['odnskey']
        settings.httpproxy = newdict['httpproxy']
        settings.httpsproxy = newdict['httpsproxy']
        settings.cuckoohost = newdict['cuckoohost']
        settings.cuckooapiport = newdict['cuckooapiport']
        settings.circlusername = newdict['circlusername']
        settings.circlpassword = newdict['circlpassword']
        settings.ptkey = newdict['ptkey']
        settings.shodankey = newdict['shodankey']

        db_session.commit()
        settings = Setting.query.first()

        return render_template('settings.html', records=settings)
    except Exception as e:
        return render_template('error.html', error=e)
Exemple #7
0
    def hakem_kayit_kurum_disi(self):
        """Kurum dışı hakem kayıt için post methodunu karşılayan view"""

        form = request.get_json()['kurum_disi']
        imd = ImmutableMultiDict([(element['name'], element['value'])
                                  for element in form])
        kurum_disi_form = KurumDisiHakemKayitForm(imd)

        if kurum_disi_form.validate():
            try:
                harici_hakem_ekli_mi = DB.session.query(Person).filter(
                    Person.birincil_eposta ==
                    kurum_disi_form.email.data).first()

                if harici_hakem_ekli_mi:
                    return jsonify(
                        status="error",
                        error_message=
                        "İlgili eposta adresi başka bir kişi tarafından "
                        "kullanılmaktadır. Lütfen başka bir eposta "
                        "adresiyle tekrar deneyiniz!"), 500

                user = User()
                user.username = kurum_disi_form.email.data
                user.password = random_pw()
                user.email = kurum_disi_form.email.data
                DB.session.add(user)
                DB.session.flush()

                person = Person()
                person.ad = kurum_disi_form.ad.data
                person.soyad = kurum_disi_form.soyad.data
                person.birincil_eposta = kurum_disi_form.email.data
                person.user_id = user.id
                DB.session.add(person)
                DB.session.flush()

                hakem = Hakem()
                hakem.unvan = kurum_disi_form.unvan.data
                if kurum_disi_form.universitede_gorev_almayan.data:
                    hakem.kurum = kurum_disi_form.kurum.data
                    hakem.daire = kurum_disi_form.daire.data
                    hakem.birim = kurum_disi_form.birim.data
                else:
                    hakem.universite_id = kurum_disi_form.universite.data
                    hakem.fakulte_id = kurum_disi_form.fakulte.data
                    hakem.bolum_id = kurum_disi_form.bolum.data

                hakem.hakem_turu = kurum_disi_form.hakem_turu.data
                hakem.person_id = person.id
                hakem.kurum_ici = False

                DB.session.add(hakem)
                DB.session.commit()
            except Exception as exc:
                DB.session.rollback()
                CustomErrorHandler.error_handler(
                    hata="Kurum dışı hakem eklenirken bir hata oluştu."
                    "Hata: {}".format(exc))
                return jsonify(status="error"), 500

            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get(
                    "person_hakem_yap").type_index,
                "nesne":
                'Hakem',
                "nesne_id":
                hakem.id,
                "etkilenen_nesne":
                "Person",
                "etkilenen_nesne_id":
                person.id,
                "ekstra_mesaj":
                "{} adlı kullanıcı, {} {} adlı kurum dışı hakem olarak ekledi "
                .format(current_user.username, person.ad, person.soyad)
            }
            signal_sender(**signal_payload)

            return jsonify(status="success")

        return jsonify(status="error",
                       error_message="Lütfen formu eksiksiz doldurunuz!"), 400
Exemple #8
0
from tasks.models import Task
from test_base import check_blueprints
from test_objects import create_from_file
from werkzeug.datastructures import ImmutableMultiDict

getters_once_dict = ImmutableMultiDict([
    ('name', 'getters_once'),
    ('getters', 'get_arp_table'),
    ('getters', 'get_interfaces_counters'),
    ('getters', 'get_interfaces'),
    ('getters', 'get_lldp_neighbors'),
    ('scheduled_date', ''),
    ('frequency', ''),
    ('script_type', 'napalm_getters')
])

getters_recurrent = ImmutableMultiDict([
    ('name', 'testzdqdqd'),
    ('getters', 'get_network_instances'),
    ('getters', 'get_ntp_peers'),
    ('getters', 'get_bgp_config'),
    ('getters', 'get_bgp_neighbors'),
    ('scheduled_date', '15/03/2020 20:47:15'),
    ('frequency', '160'),
    ('script_type', 'napalm_getters')
])


@check_blueprints('/', '/views/', '/tasks/')
def test_getters(user_client):
    create_from_file(user_client, 'europe.xls')
Exemple #9
0
def upload_file(toktok):
    
    TOK = toktok
    if pp.token_test(TOK) == False:
       return 'Invalid token'
 
    if request.method != 'POST':
       return "Invalid. Submit a text file"    

    file = request.files['file']

    # Gathers all the data
    try:
        dictdata = ImmutableMultiDict(request.form).to_dict(flat='')
        app = str(dictdata["app"][0].lower())
        # Gets the list of topics/subtopics
        Tops = [j for j in dictdata.keys() if j != "app"]
        # Each topic will be defined by Topic: subtopics
        # Subtopics are separated by commas
        TST = {} # Topics structure

        for one_top in Tops:
            TST[one_top] = [zz for zz in dictdata[one_top][0].upper().split(',') if zz != '']

    except:
        return "INVALID, not all data has been provided"

    # If no app is provided, it will assume BOINC
    try:
        if (app != "boinc2docker") and (app != "adtdp"):
            return "INVALID app"
    except:
        app = "boinc2docker"

    # Avoids empty files and non-text files
    if file.filename == '':
       return 'No file submitted'
    if file.filename.split('.')[-1] != 'txt':
       return "File type invalid, only text files are acccepted"

    # Randomizes the file name to avoid matches
    new_filename = pp.random_file_name()
    file.save(os.path.join(UPLOAD_FOLDER, new_filename))

    # Gets the image names
    # Although uncommon, users can write multiple commands in a single file
    Im_Names = []
    with open(UPLOAD_FOLDER+'/'+new_filename, 'r') as comfil:
        for line in comfil:
            LL = line.replace('\n', '')
            if len(line.split(' ')) == 1:
                continue
            Im_Names.append(line.split(' ')[0])

    # Adds the token at the end of the file
    with open(UPLOAD_FOLDER+'/'+new_filename, 'a') as nod:
        nod.write('\n'+str(TOK))

    AA = ''
    if app == "boinc2docker":
        # Adds the topic to database
        for an_image in Im_Names:
            AA += cus.complete_tag_work(an_image, TST, jobsub=len(Im_Names))
        shutil.move(UPLOAD_FOLDER+'/'+new_filename, FINAL_FOLDER+'/'+new_filename)
    if app == "adtdp":
        shutil.move(UPLOAD_FOLDER+'/'+new_filename, ADTDP_FOLDER+'/'+new_filename)

    return "File submitted for processing\n"+AA
Exemple #10
0
from werkzeug.datastructures import ImmutableMultiDict

valid = ImmutableMultiDict([
    ('token', 'rYI1FoMqUAysp62UPsv7Y8ph'), ('team_id', 'T75THHT8X'),
    ('team_domain', 'metaswitchgrads2017'), ('channel_id', 'G7Q3BSXMF'),
    ('channel_name', 'privategroup'), ('user_id', 'U756R3LAX'),
    ('user_name', 'alex.lloyd'), ('command', '/points'),
    ('text', '<@U749REFCZ|toby.birkett> 10'),
    ('response_url',
     'https://hooks.slack.com/commands/T75THHT8X/275391498660/70WjzObOKXDyWJ9TDW0APYtU'
     ),
    ('trigger_id',
     '275488945861.243935605303.5e963f4b8de7de5db26c6c4ea092d892')
])
Exemple #11
0
 def test_mail_notifier_return_correct_status(self):
     data = ImmutableMultiDict([('body-plain', 'test')])
     response = self.client.post('/mail-notifier',
                                 data=data,
                                 follow_redirects=True)
     self.assertEquals(response.data, 'OK')
Exemple #12
0
def define_link(subtype, source, destination, name):
    return ImmutableMultiDict([('name', name), ('description', 'description'),
                               ('location', 'Los Angeles'),
                               ('vendor', 'Juniper'), ('type', subtype),
                               ('source', source),
                               ('destination', destination), ('add_link', '')])
Exemple #13
0
@check_blueprints('', '/objects', '/views')
def test_link_deletion(user_client):
    create_from_file(user_client, 'europe.xls')
    for link in links:
        user_client.post('/objects/delete/link/' + link)
    assert len(Node.query.all()) == 33
    assert len(Link.query.all()) == 38


## Object filtering

filter1 = ImmutableMultiDict([
    ('name', 'filter1'),
    ('node_location', 'france|spain'),
    ('node_location_regex', 'y'),
    ('link_name', 'link[1|2].'),
    ('link_name_regex', 'y'),
])

filter2 = ImmutableMultiDict([
    ('name', 'filter2'),
    ('node_location', 'france'),
    ('link_name', 'l.*k\\S3'),
    ('link_name_regex', 'y'),
])


@check_blueprints('', '/objects', '/views')
def test_object_filtering(user_client):
    create_from_file(user_client, 'europe.xls')
Exemple #14
0
def authenticated_request_token(orgtok, temptok):

    if request.method != 'POST':
        return 'Invalid, no data provided'

    all_org_keys = [
        r_org.hmget(x.decode('UTF-8'), 'Organization Token')[0].decode('UTF-8')
        for x in r_org.keys()
    ]
    if orgtok not in all_org_keys:
        return 'Organization key invalid, access denied'

    if r_temp.get(temptok) is None:
        return 'Temporary token not valid or expired, access denied'

    dictdata = ImmutableMultiDict(request.form).to_dict(flat='')
    try:
        NAME = str(dictdata['name'][0])
        LAST_NAME = str(dictdata['last_name'][0])
        EMAIL = str(dictdata['email'][0])
        ALLOCATION = str(dictdata['allocation'][0])

    except:
        return 'Invalid request, not all data is provided'

    # Finds the organization's name and updates it with the result
    all_orgs = [x.decode('UTF-8') for x in r_org.keys()]
    for otok, org in zip(all_org_keys, all_orgs):
        if otok == orgtok:
            user_org = org

    maxalloc = r_org.hget(user_org, 'Data Plan').decode('UTF-8')
    if float(ALLOCATION) > float(maxalloc):
        return 'Invalid: User requested allocation is larger than organization allows'

    # Creates a final token for the user
    SEQ = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
    user_tok = ''
    for qq in range(0, 14):
        user_tok += random.choice(SEQ)

    # Replaces single quotes by double quotes
    Org_Users_Data = json.loads(
        r_org.hget(user_org,
                   'Users').decode('UTF-8').replace('\"', 'UHJKNM').replace(
                       '\'', '\"').replace('UHJKLM', '\''))
    Org_Users_Data[user_tok] = {
        'name': NAME,
        'last name': LAST_NAME,
        'email': EMAIL,
        'allocation': ALLOCATION
    }
    r_org.hset(user_org, 'Users', Org_Users_Data)
    r_temp.delete(temptok)
    r_org.hincrby(user_org, 'No. Users', 1)

    # Adds the token to the token file
    with open("/root/project/html/user/token_data/Tokens.txt", "a") as tokfile:
        tokfile.write(NAME + " " + LAST_NAME + ", " + user_tok + ", " + EMAIL +
                      '\n')

    # Adds the allocation details
    r_alloc.set(user_tok, ALLOCATION)

    return 'User has been added, your new token is: ' + user_tok
Exemple #15
0
from werkzeug.datastructures import ImmutableMultiDict

from eNMS.tasks.models import Task

from tests.test_base import check_blueprints
from tests.test_objects import create_from_file

instant_task = ImmutableMultiDict([('name', 'instant_task'),
                                   ('waiting_time', '0'), ('nodes', '8'),
                                   ('nodes', '9'), ('start_date', ''),
                                   ('end_date', ''), ('frequency', ''),
                                   ('job', '2'), ('run_immediately', 'y')])

scheduled_task = ImmutableMultiDict([('name', 'scheduled_task'),
                                     ('waiting_time', '0'), ('nodes', '8'),
                                     ('nodes', '9'),
                                     ('start_date', '30/03/2018 19:10:13'),
                                     ('end_date', '06/04/2018 19:10:13'),
                                     ('frequency', '3600'), ('job', '2'),
                                     ('run_immediately', 'y')])


@check_blueprints('/views', '/tasks')
def test_netmiko_napalm_config(user_client):
    create_from_file(user_client, 'europe.xls')
    user_client.post('tasks/scheduler', data=instant_task)
    assert len(Task.query.all()) == 1
    user_client.post('tasks/scheduler', data=scheduled_task)
    assert len(Task.query.all()) == 2

 def test_validate_input_correct_input(self):
     request_args = ImmutableMultiDict([('name', 'aldous huxley')])
     response = books_helper.validate_input(request_args)
     self.assertTrue(response is None, msg="Couldn't handle name parameter")
Exemple #17
0
def newobject():
    try:
        something = request.form
        imd = ImmutableMultiDict(something)
        records = helpers.convert(imd)

        # Import indicators from Cuckoo for the selected analysis task
        if 'type' in records and 'cuckoo' in records['type']:
            host_data, dns_data, sha1, firstseen = cuckoo.report_data(records['cuckoo_task_id'])
            if host_data and dns_data and sha1 and firstseen:
                # Import IP Indicators from Cuckoo Task
                for ip in host_data:
                    ind = Indicator.query.filter_by(object=ip).first()
                    if ind is None:
                        indicator = Indicator(ip.strip(), 'IPv4', firstseen, '', 'Infrastructure', records['campaign'],
                                              'Low', '', records['tags'], '')
                        db_session.add(indicator)
                        db_session.commit()

                    # Import Domain Indicators from Cuckoo Task
                    for dns in dns_data:
                        ind = Indicator.query.filter_by(object=dns['request']).first()
                        if ind is None:
                            indicator = Indicator(dns['request'], 'Domain', firstseen, '', 'Infrastructure',
                                                  records['campaign'], 'Low', '', records['tags'], '')
                            db_session.add(indicator)
                            db_session.commit()

                    # Import File/Hash Indicators from Cuckoo Task
                    ind = Indicator.query.filter_by(object=sha1).first()
                    if ind is None:
                        indicator = Indicator(sha1, 'Hash', firstseen, '', 'Capability',
                                              records['campaign'], 'Low', '', records['tags'], '')
                        db_session.add(indicator)
                        db_session.commit()

                # Redirect to Dashboard after successful import
                return redirect(url_for('home'))
            else:
                errormessage = 'Task is not a file analysis'
                return redirect(url_for('import_indicators'))

        if 'inputtype' in records:
            # Makes sure if you submit an IPv4 indicator, it's an actual IP
            # address.
            ipregex = re.match(
                r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', records['inputobject'])
            # Convert the inputobject of IP or Domain to a list for Bulk Add functionality.
            records['inputobject'] = records['inputobject'].split(',')
            for newobject in records['inputobject']:
                if records['inputtype'] == "IPv4":
                    if ipregex:
                        object = Indicator.query.filter_by(object=newobject).first()
                        if object is None:
                            ipv4_indicator = Indicator(newobject.strip(), records['inputtype'],
                                                       records['inputfirstseen'], records['inputlastseen'],
                                                       records['diamondmodel'], records['inputcampaign'],
                                                       records['confidence'], records['comments'], records['tags'], None)
                            db_session.add(ipv4_indicator)
                            db_session.commit()
                            network = Indicator.query.filter(Indicator.type.in_(
                                ('IPv4', 'IPv6', 'Domain', 'Network'))).all()
                        else:
                            errormessage = "Entry already exists in database."
                            return render_template('newobject.html', errormessage=errormessage,
                                                   inputtype=records['inputtype'], inputobject=newobject,
                                                   inputfirstseen=records['inputfirstseen'],
                                                   inputlastseen=records['inputlastseen'],
                                                   inputcampaign=records['inputcampaign'],
                                                   comments=records['comments'],
                                                   diamondmodel=records['diamondmodel'],
                                                   tags=records['tags'])

                    else:
                        errormessage = "Not a valid IP Address."
                        newobject = ', '.join(records['inputobject'])
                        return render_template('newobject.html', errormessage=errormessage,
                                               inputtype=records['inputtype'],
                                               inputobject=records, inputfirstseen=records['inputfirstseen'],
                                               inputlastseen=records['inputlastseen'],
                                               confidence=records['confidence'], inputcampaign=records['inputcampaign'],
                                               comments=records['comments'], diamondmodel=records['diamondmodel'],
                                               tags=records['tags'])
                else:
                    object = Indicator.query.filter_by(object=newobject).first()
                    if object is None:
                        indicator = Indicator(newobject.strip(), records['inputtype'], records['inputfirstseen'],
                                              records['inputlastseen'], records['diamondmodel'], records['inputcampaign'],
                                              records['confidence'], records['comments'], records['tags'], None)
                        db_session.add(indicator)
                        db_session.commit()
                    else:
                        errormessage = "Entry already exists in database."
                        return render_template('newobject.html', errormessage=errormessage,
                                               inputtype=records['inputtype'], inputobject=newobject,
                                               inputfirstseen=records['inputfirstseen'],
                                               inputlastseen=records['inputlastseen'],
                                               inputcampaign=records['inputcampaign'],
                                               comments=records['comments'],
                                               diamondmodel=records['diamondmodel'],
                                               tags=records['tags'])

            # TODO: Change 'network' to 'object' in HTML templates to standardize on verbiage
            if records['inputtype'] == "IPv4" or records['inputtype'] == "Domain" or records['inputtype'] == "Network"\
                    or records['inputtype'] == "IPv6":
                network = Indicator.query.filter(Indicator.type.in_(('IPv4', 'IPv6', 'Domain', 'Network'))).all()
                return render_template('networks.html', network=network)

            elif records['diamondmodel'] == "Victim":
                victims = Indicator.query.filter(Indicator.diamondmodel == ('Victim')).all()
                return render_template('victims.html', network=victims)

            elif records['inputtype'] == "Hash":
                files = Indicator.query.filter(Indicator.type == ('Hash')).all()
                return render_template('files.html', network=files)

            else:
                threatactors = Indicator.query.filter(Indicator.type == ('Threat Actors')).all()
                return render_template('threatactors.html', network=threatactors)
    except Exception as e:
        return render_template('error.html', error=e)
 def test_validate_input_wrong_input(self):
     request_args = ImmutableMultiDict([])
     response = books_helper.validate_input(request_args)
     self.assertTrue(response.status_code == 400,
                     msg="Couldn't handle empty name parameter")
Exemple #19
0
    def hakem_kayit_kurum_ici(self):
        """Kurum içi hakem kayıt için post methodunu karşılayan view"""

        form = request.get_json()['kurum_ici']
        imd = ImmutableMultiDict([(element['name'], element['value'])
                                  for element in form])
        kurum_ici_form = KurumIciHakemKayitForm(imd)

        if kurum_ici_form.validate():
            personel_id = kurum_ici_form.personel_sec.data

            hakem_kayitli_mi = DB.session.query(Hakem).filter_by(
                personel_id=personel_id).first()

            if not hakem_kayitli_mi:

                hakem = Hakem()
                personel = DB.session.query(Personel).filter_by(
                    id=personel_id).first()
                hakem.unvan = personel.unvan
                hakem.universite_id = personel.birim
                hakem.fakulte_id = personel.birim
                hakem.personel_id = personel_id
                hakem.person_id = personel.person_id
                hakem.bolum_id = personel.birim
                hakem.hakem_turu = kurum_ici_form.kurum_ici_hakem_turu.data
                hakem.kurum_ici = True
                try:
                    DB.session.add(hakem)
                    DB.session.commit()
                except Exception as exc:
                    DB.session.rollback()
                    CustomErrorHandler.error_handler(
                        hata="Kurum içi hakem eklenirken bir hata "
                        "oluştu."
                        "Hata: {}".format(exc))

                    return jsonify(status="error"), 500

                signal_payload = {
                    "message_type":
                    USER_ACTIVITY_MESSAGES.get("bap").get(
                        "personel_hakem_yap").type_index,
                    "nesne":
                    'Hakem',
                    "nesne_id":
                    hakem.id,
                    "etkilenen_nesne":
                    "Personel",
                    "etkilenen_nesne_id":
                    personel.id,
                    "ekstra_mesaj":
                    "{} adlı kullanıcı, {} {} adlı personeli hakem olarak ekledi "
                    .format(current_user.username, personel.person.ad,
                            personel.person.soyad)
                }
                signal_sender(**signal_payload)

                return jsonify(status="success")

            return jsonify(
                status="error",
                error_message="Personel hakem olarak kayıtlı.!"), 500

        return jsonify(status="error",
                       error_message="Lütfen formu eksiksiz doldurunuz.!"), 400
Exemple #20
0
from tests.test_base import check_blueprints
from werkzeug.datastructures import ImmutableMultiDict

# test the creation of configuration script (netmiko / napalm)
# test the creation of file transfer script (netmiko via SCP)
# test the creation of ansible script

## Netmiko configuration

netmiko_ping = ImmutableMultiDict([
    ('name', 'netmiko_ping'),
    ('waiting_time', '0'),
    ('description', ''),
    ('vendor', ''),
    ('operating_system', ''),
    ('content_type', 'simple'),
    ('create_script', 'netmiko_config'),
    ('content', 'ping 1.1.1.1'),
    ('netmiko_type', 'show_commands'),
    ('driver', 'cisco_xr_ssh'),
    ('global_delay_factor', '1.0'),
])

template = '''
{% for interface, properties in subinterfaces.items() %}
interface FastEthernet0/0.{{ interface }}
description {{ properties.aire }}
encapsulation dot1Q {{ properties.dot1Q }}
ip address {{ properties.address }} 255.255.255.248
no ip redirects
ip ospf cost {{ properties.cost }}
Exemple #21
0
    def hakem_edit_post(self, hakem_id):
        """Hakem duzenleme"""
        hakem = DB.session.query(Hakem).filter(Hakem.id == hakem_id).one()

        if hakem.kurum_ici:

            form = request.get_json()['kurum_ici']
            imd = ImmutableMultiDict([(element['name'], element['value'])
                                      for element in form])
            kurum_ici_form = KurumIciHakemKayitForm(imd)

            if kurum_ici_form.validate():
                personel_id = kurum_ici_form.personel_sec.data
                hakem_ekli_mi = DB.session.query(Hakem).filter_by(
                    personel_id=personel_id).first()
                if hakem_ekli_mi:
                    return jsonify(
                        status="error",
                        error_message=
                        "Seçilen personel kurumiçi hakem olarak kayıtlı.!"
                    ), 500

                personel = DB.session.query(Personel).filter_by(
                    id=personel_id).first()
                hakem.unvan = personel.unvan
                hakem.universite_id = personel.birim
                hakem.fakulte_id = personel.birim
                hakem.personel_id = personel_id
                hakem.person_id = personel.person_id
                hakem.bolum_id = personel.birim
                hakem.hakem_turu = kurum_ici_form.kurum_ici_hakem_turu.data
                hakem.person_id = personel.person_id
                try:
                    DB.session.commit()
                except Exception as exc:
                    DB.session.rollback()
                    CustomErrorHandler.error_handler(
                        hata="Kurum içi hakem eklenirken bir hata "
                        "oluştu.Hata: {}".format(exc))

                    return jsonify(status="error"), 500

                signal_payload = {
                    "message_type":
                    USER_ACTIVITY_MESSAGES.get("bap").get(
                        "personel_hakem_yap").type_index,
                    "nesne":
                    'Hakem',
                    "nesne_id":
                    hakem.id,
                    "etkilenen_nesne":
                    "Personel",
                    "etkilenen_nesne_id":
                    personel.id,
                    "ekstra_mesaj":
                    "{} adlı kullanıcı, {} {} adlı personeli {} idli hakem yerine hakem olarak ekledi "
                    .format(current_user.username, personel.person.ad,
                            personel.person.soyad, hakem.id)
                }
                signal_sender(**signal_payload)

                return jsonify(status="success")

            return jsonify(
                status="error",
                error_message="Lütfen formu eksiksiz doldurunuz.!"), 400

        else:
            form = request.get_json()['kurum_disi']
            imd = ImmutableMultiDict([(element['name'], element['value'])
                                      for element in form])
            kurum_disi_form = KurumDisiHakemKayitForm(imd)

            if kurum_disi_form.validate():
                try:
                    hakem = DB.session.query(Hakem).filter(
                        Hakem.id == hakem_id).one()
                    person = DB.session.query(Person).filter(
                        Person.id == hakem.person_id).one()

                    person.ad = kurum_disi_form.ad.data
                    person.soyad = kurum_disi_form.soyad.data
                    person.birincil_eposta = kurum_disi_form.email.data
                    hakem.unvan = kurum_disi_form.unvan.data
                    hakem.hakem_turu = kurum_disi_form.hakem_turu.data
                    if kurum_disi_form.universitede_gorev_almayan.data:
                        hakem.kurum = kurum_disi_form.kurum.data
                        hakem.daire = kurum_disi_form.daire.data
                        hakem.birim = kurum_disi_form.birim.data
                        hakem.universite_id = None
                        hakem.fakulte_id = None
                        hakem.bolum_id = None
                    else:
                        hakem.kurum = None
                        hakem.daire = None
                        hakem.birim = None
                        hakem.universite_id = kurum_disi_form.universite.data
                        hakem.fakulte_id = kurum_disi_form.fakulte.data
                        hakem.bolum_id = kurum_disi_form.bolum.data
                    DB.session.commit()
                except Exception as exc:
                    DB.session.rollback()
                    CustomErrorHandler.error_handler(
                        hata="Kurum dışı hakem eklenirken bir hata oluştu."
                        "Hata: {}".format(exc))
                    return jsonify(status="error"), 500

                signal_payload = {
                    "message_type":
                    USER_ACTIVITY_MESSAGES.get("bap").get(
                        "person_hakem_yap").type_index,
                    "nesne":
                    'Hakem',
                    "nesne_id":
                    hakem.id,
                    "etkilenen_nesne":
                    "Person",
                    "etkilenen_nesne_id":
                    person.id,
                    "ekstra_mesaj":
                    "{} adlı kullanıcı, {} {} adlı kurum dışı hakem bilgilerini güncelledi."
                    .format(current_user.username, person.ad, person.soyad)
                }
                signal_sender(**signal_payload)

                return jsonify(status="success")

            return jsonify(
                status="error",
                error_message="Lütfen formu eksiksiz doldurunuz!"), 400
Exemple #22
0
    put('http://127.0.0.1:5000/rest/object/node', data=dumps(updated_node))
    response = get('http://127.0.0.1:5000/rest/object/node/router10',
                   headers={'Accept': 'application/json'})
    assert loads(response.content) == updated_response
    assert len(Node.query.all()) == 1
    # DELETE: delete an object
    delete('http://127.0.0.1:5000/rest/object/node/router10',
           headers={'Accept': 'application/json'})
    assert len(Node.query.all()) == 0


post_script = ImmutableMultiDict([('name', 'create_router10'),
                                  ('description', 'POST creation'),
                                  ('call_type', 'POST'),
                                  ('url',
                                   'http://127.0.0.1:5000/rest/object/node'),
                                  ('payload', dumps(node)), ('username', ''),
                                  ('password', ''),
                                  ('content', '.*15.5(\\d)M.*'),
                                  ('content_regex', 'y')])

post_script_task = ImmutableMultiDict([('name', 'task_create_router'),
                                       ('waiting_time', '0'), ('job', '4'),
                                       ('start_date', ''), ('end_date', ''),
                                       ('frequency', ''),
                                       ('run_immediately', 'y')])

delete_script = ImmutableMultiDict([
    ('name', 'delete_router10'), ('description', 'DELETE'),
    ('call_type', 'DELETE'),
    ('url', 'http://127.0.0.1:5000/rest/object/node/router10'),
Exemple #23
0
 def __init__(self, **kwargs):
     # Flask `request.args` has type of ImmutableMultiDict
     # Need to use that here so that request.args.getlist will work
     self.args = ImmutableMultiDict(kwargs)
@pytest.mark.parametrize(
    'context',
    [
        # querystring
        {
            'path': '/foo?name=steve&name=Loria&nums=4&nums=2'
        },
        # form
        {
            'path':
            '/foo',
            'method':
            'POST',
            'data':
            ImmutableMultiDict([('name', 'steve'), ('name', 'Loria'),
                                ('nums', 4), ('nums', 2)])
        },
    ])
def test_parse_multiple(context, testapp):
    multargs = {'name': Arg(multiple=True), 'nums': Arg(int, multiple=True)}
    with testapp.test_request_context(**context):
        args = parser.parse(multargs)
        assert args['name'] == ['steve', 'Loria']
        assert args['nums'] == [4, 2]


def test_parse_multiple_arg_with_single_value(testapp):
    multargs = {'name': Arg(multiple=True)}
    with testapp.test_request_context('/foo?name=steve'):
        args = parser.parse(multargs)
        assert args['name'] == ['steve']
Exemple #25
0
    'c17': 4,
    'c23': 2,
    'c29': 4,
    'c35': 2,
    'c6': 5,
    'c12': 2,
    'c18': 3,
    'c24': 1,
    'c30': 3,
    'c36': 1
}
decision = []

form = ImmutableMultiDict([('c10', ''), ('c19', ''), ('c28', ''), ('c37', ''),
                           ('c46', ''), ('c55', ''), ('c73', ''), ('c2', ''),
                           ('c20', ''), ('c38', ''), ('c47', ''), ('c56', ''),
                           ('c65', ''), ('c74', ''), ('c3', ''), ('c12', ''),
                           ('c30', ''), ('c48', ''), ('c57', ''), ('c66', ''),
                           ('c75', ''), ('c4', ''), ('c13', ''), ('c22', ''),
                           ('c31', ''), ('c40', ''), ('c49', ''), ('c58', ''),
                           ('c67', ''), ('c76', ''), ('c5', ''), ('c23', ''),
                           ('c32', ''), ('c41', ''), ('c50', ''), ('c59', ''),
                           ('c68', ''), ('c6', ''), ('c15', ''), ('c24', ''),
                           ('c33', ''), ('c42', ''), ('c51', ''), ('c60', ''),
                           ('c78', ''), ('c16', ''), ('c25', ''), ('c34', ''),
                           ('c43', ''), ('c52', ''), ('c70', ''), ('c79', ''),
                           ('c17', ''), ('c26', ''), ('c35', ''), ('c44', ''),
                           ('c53', ''), ('c62', ''), ('c71', ''), ('c9', ''),
                           ('c27', ''), ('c36', ''), ('c54', ''), ('c72', ''),
                           ('c81', '')])
 def get(self, req_data):
     form = MonitorHeartbeatForm(ImmutableMultiDict(req_data))
     if not form.validate():
         raise Status400(form.errors)
     get_data = es_heart.get_record(
         settings.opt['ELASTICSEARCH']['HEARTINDEX'], **form.data)
     if len(get_data['dlist']) == 0:
         return {
             'result': 0,
             'message': 'success',
             'interval': 0,
             'instance': [],
             'trace_list': [],
         }
     # 检查时间断点
     sorted_data = sorted(get_data['dlist'],
                          cmp=lambda x, y: cmp(x['time'], y['time']))
     mseconds = form.data['duration'] * 1000
     ret_data = []
     s_flag, count_flag = 0, 0.0
     interval = get_data['interval']
     sorted_len = len(sorted_data)
     last_flag = False
     while count_flag <= mseconds:
         now = form.data['starttime'] + datetime.timedelta(
             seconds=count_flag / 1000)
         s_flag_time = sorted_data[s_flag]['time']
         delay_len = len(sorted_data[s_flag]['delay_list'])
         delta = sorted_data[s_flag]['interval'] * delay_len / 100
         time_flag = datetime.datetime.strptime(
             s_flag_time,
             '%Y-%m-%d %H:%M:%S') - datetime.timedelta(seconds=delta * 0.1)
         # logger.debug('xxxxxxxxxxxxxxxxxxxxxxxxxxx')
         # logger.debug('{0} --- {1} --- {2}'format(s_flag_time, sorted_data[s_flag]['interval'], delay_len))
         # logger.debug('{0} --- {1}'.format(now, time_flag))
         # logger.debug('{0} --- {1} --- {2}'.format(count_flag, mseconds, len(ret_data)))
         # logger.debug('xxxxxxxxxxxxxxxxxxxxxxxxxxx')
         if time_flag < now:
             if s_flag == sorted_len - 1 and last_flag is True:
                 ret_data.append({
                     'loss_rate': '-',
                     'delay': '-',
                 })
                 count_flag = count_flag + interval
             else:
                 tmp_time = datetime.datetime.strptime(
                     s_flag_time, '%Y-%m-%d %H:%M:%S') - now
                 tmp_len = tmp_time.seconds * 1000 / sorted_data[s_flag][
                     'interval']
                 for j in range(tmp_len):
                     if sorted_data[s_flag]['delay_list'][j] == 0:
                         sorted_data[s_flag]['delay_list'][j] = get_data[
                             'delay_top']
                     ret_data.append({
                         'loss_rate':
                         sorted_data[s_flag]['loss_rate'],
                         'delay':
                         sorted_data[s_flag]['delay_list'][j]
                     })
                     for jj in range(
                         (sorted_data[s_flag]['interval'] - interval) /
                             interval):
                         ret_data.append({
                             'loss_rate': '-',
                             'delay': '-',
                         })
                 s_flag = s_flag + 1
                 if s_flag == sorted_len:
                     last_flag = True
                     s_flag = s_flag - 1
                 count_flag = count_flag + tmp_len * sorted_data[s_flag][
                     'interval']
         elif time_flag == now:
             for j in sorted_data[s_flag]['delay_list']:
                 if j == 0:
                     j = get_data['delay_top']
                 ret_data.append({
                     'loss_rate':
                     sorted_data[s_flag]['loss_rate'],
                     'delay':
                     j
                 })
                 for jj in range(
                     (sorted_data[s_flag]['interval'] - interval) /
                         interval):
                     ret_data.append({
                         'loss_rate': '-',
                         'delay': '-',
                     })
             s_flag = s_flag + 1
             if s_flag == sorted_len:
                 last_flag = True
                 s_flag = s_flag - 1
             count_flag = count_flag + delta * 100
         else:
             ret_data.append({
                 'loss_rate': '-',
                 'delay': '-',
             })
             count_flag = count_flag + interval
     # 新增主动检测匹配功能
     start_time = form.data['starttime']
     stop_time = start_time + datetime.timedelta(
         seconds=form.data['duration'])
     trace_time = es_trace.get_record(
         settings.opt['ELASTICSEARCH']['TRACEINDEX'],
         userid=form.data['user_id'],
         appid=form.data['appid'],
         starttime=start_time,
         stoptime=stop_time,
     )
     trace_list = [{
         'pos':
         MonitorHeartbeatHandler.pos_from_time(
             datetime.datetime.strptime(t, '%Y-%m-%d %H:%M:%S'), start_time,
             interval),
         'timestamp':
         t
     } for t in trace_time['checktimes']]
     return {
         'result': 0,
         'message': 'success',
         'interval': interval,
         'instance': ret_data,
         'trace_list': trace_list,
     }
 def test_if_http_routing__data_contained_in_request_form(self):
     with mock_odoo_request(self.env, data=self.data):
         assert request.httprequest.form == ImmutableMultiDict(self.data)
         assert not request.httprequest.data
Exemple #28
0

@check_blueprints('', '/objects', '/views')
def test_link_deletion(user_client):
    create_from_file(user_client, 'europe.xls')
    for link_name in links:
        link = fetch(Link, name=link_name)
        user_client.post(f'/objects/delete/link/{link.id}')
    assert len(Device.query.all()) == 60
    assert len(Link.query.all()) == 42


pool1 = ImmutableMultiDict([
    ('name', 'pool1'),
    ('device_location', 'france|spain'),
    ('device_location_regex', 'y'),
    ('link_name', 'link[1|2].'),
    ('link_name_regex', 'y'),
])

pool2 = ImmutableMultiDict([
    ('name', 'pool2'),
    ('device_location', 'france'),
    ('link_name', 'l.*k\\S3'),
    ('link_name_regex', 'y'),
])


@check_blueprints('', '/objects', '/views')
def test_pool_management(user_client):
    create_from_file(user_client, 'europe.xls')
Exemple #29
0
 def test_connect_false(self):
     """ Test connect existing customer to account as holder (false). """
     imd = ImmutableMultiDict([('account', '2'), ('person', 'mar')])
     self.assertFalse(self.bank.connect(imd))
     self.assertTrue("mar" in self.bank.accounts[1].holders)
     self.assertIn("mar", self.bank.accounts[1].holders)
Exemple #30
0
    def test_analysis(self):
        import_name = self.generated_directory + '/generated_routes.py'
        md_gen = imp.load_source('generated_routes', import_name)

        for res in self.test_res:
            v_uri = {}
            v_args = ImmutableMultiDict([])
            v_data = ''
            v_mimetype = 'text/plain'

            if res.get('validation') != [] and res.get('validation') != None:
                for x in res['validation']:
                    if x['source'] == 'get_param':
                        if x['validation']['example'] == None:
                            self.output.append((
                                'INFO',
                                'GET Parameter ' + x['validation']['name'] +
                                ' of resource ' + res['name'] +
                                ' does not have an example defined for testing'
                            ))
                        else:
                            d_items = []
                            for y in v_args:
                                d_items.append((y, v_args[y]))

                            d_items.append((x['validation']['name'],
                                            x['validation']['example']))
                            v_args = ImmutableMultiDict(d_items)

                    elif x['source'] == 'uri_param':
                        if x['validation']['example'] == None:
                            self.output.append((
                                'INFO',
                                'URI Parameter ' + x['validation']['name'] +
                                ' of resource ' + res['name'] +
                                ' does not have an example defined for testing'
                            ))
                        else:
                            v_uri[x['validation']
                                  ['name']] = x['validation']['example']
                    elif x['source'] == 'body':
                        for y in x['validation']:
                            v_mimetype = y['mime-type']
                            if y['example'] == None:
                                self.output.append((
                                    'INFO',
                                    'BODY with schema ' + y['mime-type'] +
                                    ' of resource ' + res['name'] +
                                    ' does not have an example defined for testing'
                                ))
                            else:
                                v_data = y['example']

            mr = Mock_Request(v_uri, v_args, v_data, v_mimetype)

            tested_class = eval('md_gen.' + res['name'] + '(mr)')
            result = tested_class.validate_params_handler()
            if result.value == '' and result.code == 200 and result.proceed == True:
                self.output.append(
                    ('INFO', 'Test of ' + res['name'] + ': SUCCESS'))
            else:
                self.output.append(
                    ('WARN', 'Test of ' + res['name'] + ': FAIL'))

        return self.dump_output()