2017-09-26 8 views
0

早くpostに行ってアドバイスしましたので、パブリックAPIを使用してWebサーバーを作成してください。基本的には、ウィンドウ上で実行されるアプリケーションを作成して、APIからデータを取得したいと考えています。フラスコ付きのPython、apiに接続

from flask import Flask, render_template, request import sqlite3 as sql 

app = Flask(__name__) 

files_from_database = [] 
@app.route('/') 
def getdata(): 
    con = sql.connect("AntiCheat.db") 
    con.row_factory = sql.Row 

    cur = con.cursor() 
    cur.execute("select filename from files") 

    rows = cur.fetchall(); 
    for row in rows: 
     files_from_database.append(row) 
    return render_template("list.html", rows=files_from_database) 


if __name__ == '__main__': 
    app.run(debug=True) 

私は正しい方法でか、またはそれを行うには良い方法があるかどうつもりならば、誰かが私に教えてくださいすることができます場合、私はちょうど、右であるかどうかはわからない、今始めています

WindowsアプリケーションがそのAPIに接続して配列のデータをフェッチする方法は?

ありがとうございます。

答えて

1

これは良いスタートです。私が間違いなくJSONデータを返すことは変わりません。現在のユースケースでは、ファイル名のリストのみを返すように思われるので、これはうまくいくはずです。

import sqlite3 as sql 

from flask import Flask, jsonify 

app = Flask(__name__) 


@app.route('/') 
def get_data(): 
    con = sql.connect("AntiCheat.db") 
    con.row_factory = sql.Row 

    cur = con.cursor() 
    cur.execute("SELECT filename FROM files") 
    rows = cur.fetchall() 

    response = [row['filename'] for row in rows] 
    return jsonify(response) 


if __name__ == '__main__': 
    app.run(debug=True) 

次に、あなたのクライアントはとAPIからファイル名を取得することができます:あなたはAPIからより多くのものを必要とする場合、私は強くFlask-RESTfulパッケージを検討することをお勧め、

requests.get('http://127.0.0.1:5000/').json() 


もう一つのポイント:クライアント:アプリケーションのアイデアは非常に成功しませんファイル名をチェックし、クライアントのコンピュータ上のDBからいくつかのファイルを探していることで動作し、簡単なアンチチートがある場合 悪意のあるコードを挿入しても、元の名前を保持しながら、ファイルの名前を変更したり正当なゲームファイルを変更することができます。

ファイル名を確認する代わりに、files MD5 checksumsを確認することをお勧めします。中核となるゲームファイルの一部に期待されるチェックサムがある(つまり改ざんされていない)ことを確認することができます。ブラックリストのチェックサムがあります。不正ファイルです。 pythonからのファイルのチェックサムを取得

は本当に簡単です:

def file_checksum(file_path): 
    hash_md5 = hashlib.md5() 
    with open(file_path, 'rb') as file: 
     for chunk in iter(lambda: file.read(4096), b''): 
      hash_md5.update(chunk) 
    return hash_md5.hexdigest() 

UNIXシステムを持っている場合は、あなたが最も可能性も、あなたの端末からmd5 <filename>を行うことができるでしょう、とあなたは同じチェックサムを得るでしょうPython関数よりも

+0

ありがとうございます。私はそれを試してみる – ShwSvn

+0

それは完全に、もう1つの質問が、それはブラウザを介してWebサイトにアクセスするファイルを表示しないように "保護"が好きです可能ですか? – ShwSvn

+0

実際には、IPホワイトリストにするのがベストでしょうが、(クライアントアプリケーションから)任意のコンピュータからアクセス可能である必要がありますので、そうでない可能性があります。もう1つのことは、サーバーがHTTPSの場合、クライアントアプリケーションのリクエストが暗号化され、このAPIキーが表示されないように、秘密キー(APIキーを持つHTTPヘッダーのような)を使用することです。唯一の問題は、Pythonクライアントアプリケーションにその秘密(APIキー)を含める必要があり、誰でもそこから読むことができるということです。しかし、とにかく、クライアントアプリケーションをPythonで使用すると、簡単に_crackable_(誰でもアンチ - チートアプリケーションを変更できます)になります。 –

関連する問題