mirror of
https://github.com/Balshgit/gpt_chat_bot.git
synced 2025-12-15 16:10:39 +03:00
update chat service (#31)
* rename chatgpt service * add zeus tool for new provider * add zeus tool for new provider * update chat service * update README.md
This commit is contained in:
25
chatgpt_microservice/tools/Dockerfile
Normal file
25
chatgpt_microservice/tools/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
||||
FROM ubuntu:23.04
|
||||
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y python3/lunar python3.11-venv dbus-x11/lunar curl nodejs/lunar tree
|
||||
|
||||
# install Chrome
|
||||
# https://stackoverflow.com/questions/70955307/how-to-install-google-chrome-in-a-docker-container
|
||||
RUN curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
RUN apt-get install -y ./google-chrome-stable_current_amd64.deb
|
||||
RUN rm google-chrome-stable_current_amd64.deb
|
||||
# Check chrome version
|
||||
RUN echo "Chrome: " && google-chrome --version
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY ./npm /app/npm
|
||||
ADD requirements.txt /app
|
||||
ADD zeus.py /app
|
||||
|
||||
RUN python3 -m venv venv \
|
||||
&& source venv/bin/activate \
|
||||
&& pip install -r requirements.txt
|
||||
|
||||
ENTRYPOINT ["sh", "-c", "source venv/bin/activate && python3 zeus.py"]
|
||||
261
chatgpt_microservice/tools/npm/node_modules/crypto-js/README.md
generated
vendored
Normal file
261
chatgpt_microservice/tools/npm/node_modules/crypto-js/README.md
generated
vendored
Normal file
@@ -0,0 +1,261 @@
|
||||
# crypto-js [](https://travis-ci.org/brix/crypto-js)
|
||||
|
||||
JavaScript library of crypto standards.
|
||||
|
||||
## Node.js (Install)
|
||||
|
||||
Requirements:
|
||||
|
||||
- Node.js
|
||||
- npm (Node.js package manager)
|
||||
|
||||
```bash
|
||||
npm install crypto-js
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
ES6 import for typical API call signing use case:
|
||||
|
||||
```javascript
|
||||
import sha256 from 'crypto-js/sha256';
|
||||
import hmacSHA512 from 'crypto-js/hmac-sha512';
|
||||
import Base64 from 'crypto-js/enc-base64';
|
||||
|
||||
const message, nonce, path, privateKey; // ...
|
||||
const hashDigest = sha256(nonce + message);
|
||||
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));
|
||||
```
|
||||
|
||||
Modular include:
|
||||
|
||||
```javascript
|
||||
var AES = require("crypto-js/aes");
|
||||
var SHA256 = require("crypto-js/sha256");
|
||||
...
|
||||
console.log(SHA256("Message"));
|
||||
```
|
||||
|
||||
Including all libraries, for access to extra methods:
|
||||
|
||||
```javascript
|
||||
var CryptoJS = require("crypto-js");
|
||||
console.log(CryptoJS.HmacSHA1("Message", "Key"));
|
||||
```
|
||||
|
||||
## Client (browser)
|
||||
|
||||
Requirements:
|
||||
|
||||
- Node.js
|
||||
- Bower (package manager for frontend)
|
||||
|
||||
```bash
|
||||
bower install crypto-js
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
Modular include:
|
||||
|
||||
```javascript
|
||||
require.config({
|
||||
packages: [
|
||||
{
|
||||
name: 'crypto-js',
|
||||
location: 'path-to/bower_components/crypto-js',
|
||||
main: 'index'
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
require(["crypto-js/aes", "crypto-js/sha256"], function (AES, SHA256) {
|
||||
console.log(SHA256("Message"));
|
||||
});
|
||||
```
|
||||
|
||||
Including all libraries, for access to extra methods:
|
||||
|
||||
```javascript
|
||||
// Above-mentioned will work or use this simple form
|
||||
require.config({
|
||||
paths: {
|
||||
'crypto-js': 'path-to/bower_components/crypto-js/crypto-js'
|
||||
}
|
||||
});
|
||||
|
||||
require(["crypto-js"], function (CryptoJS) {
|
||||
console.log(CryptoJS.HmacSHA1("Message", "Key"));
|
||||
});
|
||||
```
|
||||
|
||||
### Usage without RequireJS
|
||||
|
||||
```html
|
||||
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
|
||||
<script type="text/javascript">
|
||||
var encrypted = CryptoJS.AES(...);
|
||||
var encrypted = CryptoJS.SHA256(...);
|
||||
</script>
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
See: https://cryptojs.gitbook.io/docs/
|
||||
|
||||
### AES Encryption
|
||||
|
||||
#### Plain text encryption
|
||||
|
||||
```javascript
|
||||
var CryptoJS = require("crypto-js");
|
||||
|
||||
// Encrypt
|
||||
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
|
||||
|
||||
// Decrypt
|
||||
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
|
||||
var originalText = bytes.toString(CryptoJS.enc.Utf8);
|
||||
|
||||
console.log(originalText); // 'my message'
|
||||
```
|
||||
|
||||
#### Object encryption
|
||||
|
||||
```javascript
|
||||
var CryptoJS = require("crypto-js");
|
||||
|
||||
var data = [{id: 1}, {id: 2}]
|
||||
|
||||
// Encrypt
|
||||
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
|
||||
|
||||
// Decrypt
|
||||
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
|
||||
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
|
||||
|
||||
console.log(decryptedData); // [{id: 1}, {id: 2}]
|
||||
```
|
||||
|
||||
### List of modules
|
||||
|
||||
|
||||
- ```crypto-js/core```
|
||||
- ```crypto-js/x64-core```
|
||||
- ```crypto-js/lib-typedarrays```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/md5```
|
||||
- ```crypto-js/sha1```
|
||||
- ```crypto-js/sha256```
|
||||
- ```crypto-js/sha224```
|
||||
- ```crypto-js/sha512```
|
||||
- ```crypto-js/sha384```
|
||||
- ```crypto-js/sha3```
|
||||
- ```crypto-js/ripemd160```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/hmac-md5```
|
||||
- ```crypto-js/hmac-sha1```
|
||||
- ```crypto-js/hmac-sha256```
|
||||
- ```crypto-js/hmac-sha224```
|
||||
- ```crypto-js/hmac-sha512```
|
||||
- ```crypto-js/hmac-sha384```
|
||||
- ```crypto-js/hmac-sha3```
|
||||
- ```crypto-js/hmac-ripemd160```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/pbkdf2```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/aes```
|
||||
- ```crypto-js/tripledes```
|
||||
- ```crypto-js/rc4```
|
||||
- ```crypto-js/rabbit```
|
||||
- ```crypto-js/rabbit-legacy```
|
||||
- ```crypto-js/evpkdf```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/format-openssl```
|
||||
- ```crypto-js/format-hex```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/enc-latin1```
|
||||
- ```crypto-js/enc-utf8```
|
||||
- ```crypto-js/enc-hex```
|
||||
- ```crypto-js/enc-utf16```
|
||||
- ```crypto-js/enc-base64```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/mode-cfb```
|
||||
- ```crypto-js/mode-ctr```
|
||||
- ```crypto-js/mode-ctr-gladman```
|
||||
- ```crypto-js/mode-ofb```
|
||||
- ```crypto-js/mode-ecb```
|
||||
|
||||
---
|
||||
|
||||
- ```crypto-js/pad-pkcs7```
|
||||
- ```crypto-js/pad-ansix923```
|
||||
- ```crypto-js/pad-iso10126```
|
||||
- ```crypto-js/pad-iso97971```
|
||||
- ```crypto-js/pad-zeropadding```
|
||||
- ```crypto-js/pad-nopadding```
|
||||
|
||||
|
||||
## Release notes
|
||||
|
||||
### 4.1.1
|
||||
|
||||
Fix module order in bundled release.
|
||||
|
||||
Include the browser field in the released package.json.
|
||||
|
||||
### 4.1.0
|
||||
|
||||
Added url safe variant of base64 encoding. [357](https://github.com/brix/crypto-js/pull/357)
|
||||
|
||||
Avoid webpack to add crypto-browser package. [364](https://github.com/brix/crypto-js/pull/364)
|
||||
|
||||
### 4.0.0
|
||||
|
||||
This is an update including breaking changes for some environments.
|
||||
|
||||
In this version `Math.random()` has been replaced by the random methods of the native crypto module.
|
||||
|
||||
For this reason CryptoJS might not run in some JavaScript environments without native crypto module. Such as IE 10 or before or React Native.
|
||||
|
||||
### 3.3.0
|
||||
|
||||
Rollback, `3.3.0` is the same as `3.1.9-1`.
|
||||
|
||||
The move of using native secure crypto module will be shifted to a new `4.x.x` version. As it is a breaking change the impact is too big for a minor release.
|
||||
|
||||
### 3.2.1
|
||||
|
||||
The usage of the native crypto module has been fixed. The import and access of the native crypto module has been improved.
|
||||
|
||||
### 3.2.0
|
||||
|
||||
In this version `Math.random()` has been replaced by the random methods of the native crypto module.
|
||||
|
||||
For this reason CryptoJS might does not run in some JavaScript environments without native crypto module. Such as IE 10 or before.
|
||||
|
||||
If it's absolute required to run CryptoJS in such an environment, stay with `3.1.x` version. Encrypting and decrypting stays compatible. But keep in mind `3.1.x` versions still use `Math.random()` which is cryptographically not secure, as it's not random enough.
|
||||
|
||||
This version came along with `CRITICAL` `BUG`.
|
||||
|
||||
DO NOT USE THIS VERSION! Please, go for a newer version!
|
||||
|
||||
### 3.1.x
|
||||
|
||||
The `3.1.x` are based on the original CryptoJS, wrapped in CommonJS modules.
|
||||
|
||||
|
||||
6191
chatgpt_microservice/tools/npm/node_modules/crypto-js/crypto-js.js
generated
vendored
Normal file
6191
chatgpt_microservice/tools/npm/node_modules/crypto-js/crypto-js.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
44
chatgpt_microservice/tools/requirements.txt
Normal file
44
chatgpt_microservice/tools/requirements.txt
Normal file
@@ -0,0 +1,44 @@
|
||||
altgraph==0.17.4
|
||||
attrs==23.1.0
|
||||
black==23.9.1
|
||||
blinker==1.6.2
|
||||
browser-cookie3==0.19.1
|
||||
certifi==2023.7.22
|
||||
charset-normalizer==3.3.0
|
||||
click==8.1.7
|
||||
docopt==0.6.2
|
||||
Flask==3.0.0
|
||||
Flask-Cors==4.0.0
|
||||
h11==0.14.0
|
||||
idna==3.4
|
||||
itsdangerous==2.1.2
|
||||
jeepney==0.8.0
|
||||
Jinja2==3.1.2
|
||||
Js2Py==0.74
|
||||
lz4==4.3.2
|
||||
MarkupSafe==2.1.3
|
||||
mypy-extensions==1.0.0
|
||||
outcome==1.2.0
|
||||
packaging==23.2
|
||||
pathspec==0.11.2
|
||||
pipreqs==0.4.13
|
||||
platformdirs==3.11.0
|
||||
pycryptodomex==3.19.0
|
||||
PyExecJS==1.5.1
|
||||
pyinstaller==6.0.0
|
||||
pyinstaller-hooks-contrib==2023.9
|
||||
pyjsparser==2.7.1
|
||||
PySocks==1.7.1
|
||||
requests==2.31.0
|
||||
selenium==4.13.0
|
||||
six==1.16.0
|
||||
sniffio==1.3.0
|
||||
sortedcontainers==2.4.0
|
||||
trio==0.22.2
|
||||
trio-websocket==0.11.1
|
||||
typing_extensions==4.8.0
|
||||
tzlocal==5.1
|
||||
urllib3==2.0.6
|
||||
Werkzeug==3.0.0
|
||||
wsproto==1.2.0
|
||||
yarg==0.1.9
|
||||
65
chatgpt_microservice/tools/zeus.py
Normal file
65
chatgpt_microservice/tools/zeus.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import json
|
||||
import os
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
import execjs
|
||||
from flask import Flask
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from werkzeug.serving import ThreadedWSGIServer
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
options = webdriver.ChromeOptions()
|
||||
options.add_argument("--headless")
|
||||
options.add_argument("--no-sandbox")
|
||||
options.add_argument("--disable-extensions")
|
||||
options.add_argument("--disable-gpu")
|
||||
options.add_argument("--disable-dev-shm-usage")
|
||||
|
||||
|
||||
def deepai_refresh():
|
||||
while True:
|
||||
driver = webdriver.Chrome(options=options)
|
||||
try:
|
||||
driver.get("https://deepai.org")
|
||||
WebDriverWait(driver, 15)
|
||||
cookies = driver.get_cookies()
|
||||
print(cookies)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
driver.quit()
|
||||
time.sleep(600)
|
||||
|
||||
|
||||
# curl -X POST -d '{}' -H "Content-Type: application/json" http://127.0.0.1:8860/gptforlove
|
||||
@app.route("/gptforlove", methods=["POST"])
|
||||
def get_gptforlove_secret():
|
||||
dir = os.path.dirname(__file__)
|
||||
dir += "/npm/node_modules/crypto-js"
|
||||
source = """
|
||||
CryptoJS = require('{dir}/crypto-js')
|
||||
var k = '14487141bvirvvG'
|
||||
, e = Math.floor(new Date().getTime() / 1e3);
|
||||
var t = CryptoJS.enc.Utf8.parse(e)
|
||||
, o = CryptoJS.AES.encrypt(t, k, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return o.toString()
|
||||
"""
|
||||
source = source.replace("{dir}", dir)
|
||||
dict = {"secret": execjs.compile(source).call("")}
|
||||
return json.dumps(dict)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
thread = threading.Thread(target=deepai_refresh)
|
||||
thread.start()
|
||||
port = os.getenv("PORT", "8860")
|
||||
ip = os.getenv("IP", "0.0.0.0")
|
||||
print(f"start zeus at {ip}:{port}")
|
||||
server = ThreadedWSGIServer(ip, port, app)
|
||||
server.serve_forever()
|
||||
Reference in New Issue
Block a user