From 861993c31aed98f04552d01d70bbf9289891bb16 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 20 Oct 2021 09:49:41 +0400 Subject: [PATCH] fix some things --- BUILD | 14 +- bazel/patch/BUILD | 1 - bazel/patch/BUILD_script_patch | 69 --- .../libsodium_sys_build_script_script_.rs | 407 ------------------ common/rust/src/discord_models/audit_log.rs | 6 + common/rust/src/discord_models/gateway.rs | 6 + docs/docs/intro.md | 4 +- rest/src/proxy/mod.rs | 9 +- 8 files changed, 24 insertions(+), 492 deletions(-) delete mode 100644 bazel/patch/BUILD delete mode 100644 bazel/patch/BUILD_script_patch delete mode 100644 bazel/patch/libsodium_sys_build_script_script_.rs diff --git a/BUILD b/BUILD index c486575..19af8fe 100644 --- a/BUILD +++ b/BUILD @@ -8,6 +8,10 @@ gazelle(name = "gazelle") exports_files(["go.mod"]) +platform( + name = "aarch64", +) + filegroup( name = "binaries", srcs = [ @@ -36,16 +40,6 @@ container_push( format = "OCI", ) -test_suite( - name = "tests", - tests = [ - "//gateway:tests", - "//novactl:tests", - "//rest:tests", - "//webhook:tests", - ], -) - pkg_tar( name = "packages_tar", srcs = [ diff --git a/bazel/patch/BUILD b/bazel/patch/BUILD deleted file mode 100644 index a46a995..0000000 --- a/bazel/patch/BUILD +++ /dev/null @@ -1 +0,0 @@ -exports_files(["libsodium_sys_build_script_script_.rs"]) diff --git a/bazel/patch/BUILD_script_patch b/bazel/patch/BUILD_script_patch deleted file mode 100644 index 5578907..0000000 --- a/bazel/patch/BUILD_script_patch +++ /dev/null @@ -1,69 +0,0 @@ -# buildifier: disable=load -load("@bazel_skylib//lib:selects.bzl", "selects") - -# Generated Targets -# buildifier: disable=out-of-order-load -# buildifier: disable=load-on-top -load( - "@rules_rust//cargo:cargo_build_script.bzl", - "cargo_build_script", -) - -cargo_build_script( - name = "libsodium_sys_build_script", - srcs = ["@nova//bazel/patch:libsodium_sys_build_script_script_.rs"], - build_script_env = { - "NUM_JOBS": "2", - "PATH": "/usr/sbin:/usr/bin:/sbin:/bin", - }, - data = glob(["**"]), - edition = "2015", - links = "sodium", - rustc_flags = [ - "--cap-lints=allow", - ], - tags = [ - "cargo-raze", - "manual", - ], - version = "0.2.7", - visibility = ["//visibility:private"], - deps = [ - "@raze__pkg_config__0_3_19//:pkg_config", - "@raze__walkdir__2_3_2//:walkdir", - ] + selects.with_or({ - # cfg(not(target_env = "msvc")) - ( - "@rules_rust//rust/platform:aarch64-apple-darwin", - "@rules_rust//rust/platform:aarch64-apple-ios", - "@rules_rust//rust/platform:aarch64-linux-android", - "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", - "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", - "@rules_rust//rust/platform:i686-apple-darwin", - "@rules_rust//rust/platform:i686-linux-android", - "@rules_rust//rust/platform:i686-unknown-freebsd", - "@rules_rust//rust/platform:i686-unknown-linux-gnu", - "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", - "@rules_rust//rust/platform:s390x-unknown-linux-gnu", - "@rules_rust//rust/platform:wasm32-unknown-unknown", - "@rules_rust//rust/platform:wasm32-wasi", - "@rules_rust//rust/platform:x86_64-apple-darwin", - "@rules_rust//rust/platform:x86_64-apple-ios", - "@rules_rust//rust/platform:x86_64-linux-android", - "@rules_rust//rust/platform:x86_64-unknown-freebsd", - "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", - ): [ - "@raze__cc__1_0_70//:cc", - ], - "//conditions:default": [], - }) + selects.with_or({ - # cfg(target_env = "msvc") - ( - "@rules_rust//rust/platform:i686-pc-windows-msvc", - "@rules_rust//rust/platform:x86_64-pc-windows-msvc", - ): [ - "@raze__libc__0_2_101//:libc", - ], - "//conditions:default": [], - }), -) diff --git a/bazel/patch/libsodium_sys_build_script_script_.rs b/bazel/patch/libsodium_sys_build_script_script_.rs deleted file mode 100644 index 1b0b775..0000000 --- a/bazel/patch/libsodium_sys_build_script_script_.rs +++ /dev/null @@ -1,407 +0,0 @@ -#[cfg(not(windows))] -extern crate cc; - -#[cfg(target_env = "msvc")] -extern crate libc; - -extern crate pkg_config; -extern crate walkdir; - -use std::{ - env, - path::{Path, PathBuf}, -}; - -static VERSION: &str = "1.0.18"; - -fn main() { - println!("cargo:rerun-if-env-changed=SODIUM_LIB_DIR"); - println!("cargo:rerun-if-env-changed=SODIUM_SHARED"); - println!("cargo:rerun-if-env-changed=SODIUM_USE_PKG_CONFIG"); - - if cfg!(not(windows)) { - println!("cargo:rerun-if-env-changed=SODIUM_DISABLE_PIE"); - } - - if env::var("SODIUM_STATIC").is_ok() { - panic!("SODIUM_STATIC is deprecated. Use SODIUM_SHARED instead."); - } - - let lib_dir_isset = env::var("SODIUM_LIB_DIR").is_ok(); - let use_pkg_isset = if cfg!(feature = "use-pkg-config") { - true - } else { - env::var("SODIUM_USE_PKG_CONFIG").is_ok() - }; - let shared_isset = env::var("SODIUM_SHARED").is_ok(); - - if lib_dir_isset && use_pkg_isset { - panic!("SODIUM_LIB_DIR is incompatible with SODIUM_USE_PKG_CONFIG. Set the only one env variable"); - } - - if lib_dir_isset { - find_libsodium_env(); - } else if use_pkg_isset { - if shared_isset { - println!("cargo:warning=SODIUM_SHARED has no effect with SODIUM_USE_PKG_CONFIG"); - } - - find_libsodium_pkg(); - } else { - if shared_isset { - println!( - "cargo:warning=SODIUM_SHARED has no effect for building libsodium from source" - ); - } - - build_libsodium(); - } -} - -/* Must be called when SODIUM_LIB_DIR is set to any value -This function will set `cargo` flags. -*/ -fn find_libsodium_env() { - let lib_dir = env::var("SODIUM_LIB_DIR").unwrap(); // cannot fail - - println!("cargo:rustc-link-search=native={}", lib_dir); - let mode = if env::var("SODIUM_SHARED").is_ok() { - "dylib" - } else { - "static" - }; - let name = if cfg!(target_env = "msvc") { - "libsodium" - } else { - "sodium" - }; - println!("cargo:rustc-link-lib={}={}", mode, name); - println!( - "cargo:warning=Using unknown libsodium version. This crate is tested against \ - {} and may not be fully compatible with other versions.", - VERSION - ); -} - -/* Must be called when no SODIUM_USE_PKG_CONFIG env var is set -This function will set `cargo` flags. -*/ -#[cfg(target_env = "msvc")] -fn find_libsodium_pkg() { - panic!("SODIUM_USE_PKG_CONFIG is not supported on msvc"); -} - -/* Must be called when SODIUM_USE_PKG_CONFIG env var is set -This function will set `cargo` flags. -*/ -#[cfg(not(target_env = "msvc"))] -fn find_libsodium_pkg() { - match pkg_config::Config::new().probe("libsodium") { - Ok(lib) => { - if lib.version != VERSION { - println!( - "cargo:warning=Using libsodium version {}. This crate is tested against {} \ - and may not be fully compatible with {}.", - lib.version, VERSION, lib.version - ); - } - for lib_dir in &lib.link_paths { - println!("cargo:lib={}", lib_dir.to_str().unwrap()); - } - for include_dir in &lib.include_paths { - println!("cargo:include={}", include_dir.to_str().unwrap()); - } - } - Err(e) => { - panic!( - " -Failed to run pkg-config: -{:?} - -You can try fixing this by installing pkg-config: - - # On Ubuntu - sudo apt install pkg-config - # On Arch Linux - sudo pacman -S pkgconf - # On Fedora - sudo dnf install pkgconf-pkg-config - -", - e - ); - } - } -} - -#[cfg(windows)] -fn make_libsodium(_: &str, _: &Path, _: &Path) -> PathBuf { - // We don't build anything on windows, we simply linked to precompiled - // libs. - get_lib_dir() -} - -#[cfg(not(windows))] -fn make_libsodium(target: &str, source_dir: &Path, install_dir: &Path) -> PathBuf { - use std::{fs, process::Command, str}; - - // Decide on CC, CFLAGS and the --host configure argument - let build_compiler = cc::Build::new().get_compiler(); - let mut compiler = build_compiler.path().to_str().unwrap().to_string(); - let mut cflags = build_compiler.cflags_env().into_string().unwrap(); - let mut host_arg = format!("--host={}", target); - let mut cross_compiling = target != env::var("HOST").unwrap(); - if target.contains("-ios") { - // Determine Xcode directory path - let xcode_select_output = Command::new("xcode-select").arg("-p").output().unwrap(); - if !xcode_select_output.status.success() { - panic!("Failed to run xcode-select -p"); - } - let xcode_dir = str::from_utf8(&xcode_select_output.stdout) - .unwrap() - .trim() - .to_string(); - - // Determine SDK directory paths - let sdk_dir_simulator = Path::new(&xcode_dir) - .join("Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk") - .to_str() - .unwrap() - .to_string(); - let sdk_dir_ios = Path::new(&xcode_dir) - .join("Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk") - .to_str() - .unwrap() - .to_string(); - - // Min versions - let ios_simulator_version_min = "6.0.0"; - let ios_version_min = "6.0.0"; - - // Roughly based on `dist-build/ios.sh` in the libsodium sources - match &*target { - "aarch64-apple-ios" => { - cflags += " -arch arm64"; - cflags += &format!(" -isysroot {}", sdk_dir_ios); - cflags += &format!(" -mios-version-min={}", ios_version_min); - cflags += " -fembed-bitcode"; - host_arg = "--host=arm-apple-darwin10".to_string(); - } - "armv7-apple-ios" => { - cflags += " -arch armv7"; - cflags += &format!(" -isysroot {}", sdk_dir_ios); - cflags += &format!(" -mios-version-min={}", ios_version_min); - cflags += " -mthumb"; - host_arg = "--host=arm-apple-darwin10".to_string(); - } - "armv7s-apple-ios" => { - cflags += " -arch armv7s"; - cflags += &format!(" -isysroot {}", sdk_dir_ios); - cflags += &format!(" -mios-version-min={}", ios_version_min); - cflags += " -mthumb"; - host_arg = "--host=arm-apple-darwin10".to_string(); - } - "i386-apple-ios" => { - cflags += " -arch i386"; - cflags += &format!(" -isysroot {}", sdk_dir_simulator); - cflags += &format!(" -mios-simulator-version-min={}", ios_simulator_version_min); - host_arg = "--host=i686-apple-darwin10".to_string(); - } - "x86_64-apple-ios" => { - cflags += " -arch x86_64"; - cflags += &format!(" -isysroot {}", sdk_dir_simulator); - cflags += &format!(" -mios-simulator-version-min={}", ios_simulator_version_min); - host_arg = "--host=x86_64-apple-darwin10".to_string(); - } - _ => panic!("Unknown iOS build target: {}", target), - } - cross_compiling = true; - } else if target.contains("i686") { - compiler += " -m32 -maes"; - cflags += " -march=i686"; - } - - let help = if cross_compiling { - "***********************************************************\n\ - Possible missing dependencies.\n\ - See https://github.com/sodiumoxide/sodiumoxide#cross-compiling\n\ - ***********************************************************\n\n" - } else { - "" - }; - - // Run `./configure` - let prefix_arg = format!("--prefix={}", install_dir.to_str().unwrap()); - let libdir_arg = format!("--libdir={}/lib", install_dir.to_str().unwrap()); - let mut configure_cmd = Command::new(fs::canonicalize(source_dir.join("configure")).expect("Failed to find configure script! Did you clone the submodule at `libsodium-sys/libsodium`?")); - if !compiler.is_empty() { - configure_cmd.env("CC", &compiler); - } - if !cflags.is_empty() { - configure_cmd.env("CFLAGS", &cflags); - } - if env::var("SODIUM_DISABLE_PIE").is_ok() { - configure_cmd.arg("--disable-pie"); - } - let configure_status = configure_cmd - .current_dir(&source_dir) - .arg(&prefix_arg) - .arg(&libdir_arg) - .arg(&host_arg) - .arg("--enable-shared=no") - .status() - .unwrap_or_else(|error| { - panic!("Failed to run './configure': {}\n{}", error, help); - }); - if !configure_status.success() { - panic!( - "\nFailed to configure libsodium using {:?}\nCFLAGS={}\nCC={}\n{}\n", - configure_cmd, cflags, compiler, help - ); - } - - // Run `make check`, or `make all` if we're cross-compiling - let j_arg = format!("-j{}", env::var("NUM_JOBS").unwrap()); - let make_arg = if cross_compiling { "all" } else { "check" }; - let mut make_cmd = Command::new("make"); - let make_status = make_cmd - .current_dir(&source_dir) - .env("V", "1") - .arg(make_arg) - .arg(&j_arg) - .status() - .unwrap_or_else(|error| { - panic!("Failed to run 'make {}': {}\n{}", make_arg, error, help); - }); - if !make_status.success() { - panic!("\nFailed to build libsodium using {:?}\n{}", make_cmd, help); - } - - // Run `make install` - let mut install_cmd = Command::new("make"); - let install_status = install_cmd - .current_dir(&source_dir) - .arg("install") - .status() - .unwrap_or_else(|error| { - panic!("Failed to run 'make install': {}", error); - }); - if !install_status.success() { - panic!("\nFailed to install libsodium using {:?}", install_cmd); - } - - install_dir.join("lib") -} - -#[cfg(any(windows, target_env = "msvc"))] -fn get_crate_dir() -> PathBuf { - env::var("CARGO_MANIFEST_DIR").unwrap().into() -} - -#[cfg(target_env = "msvc")] -fn is_release_profile() -> bool { - env::var("PROFILE").unwrap() == "release" -} - -#[cfg(all(target_env = "msvc", target_pointer_width = "32"))] -fn get_lib_dir() -> PathBuf { - if is_release_profile() { - get_crate_dir().join("msvc/Win32/Release/v142/") - } else { - get_crate_dir().join("msvc/Win32/Debug/v142/") - } -} - -#[cfg(all(target_env = "msvc", target_pointer_width = "64"))] -fn get_lib_dir() -> PathBuf { - if is_release_profile() { - get_crate_dir().join("msvc/x64/Release/v142/") - } else { - get_crate_dir().join("msvc/x64/Debug/v142/") - } -} - -#[cfg(all(windows, not(target_env = "msvc"), target_pointer_width = "32"))] -fn get_lib_dir() -> PathBuf { - get_crate_dir().join("mingw/win32/") -} - -#[cfg(all(windows, not(target_env = "msvc"), target_pointer_width = "64"))] -fn get_lib_dir() -> PathBuf { - get_crate_dir().join("mingw/win64/") -} - -fn build_libsodium() { - use std::{ffi::OsStr, fs}; - - // Determine build target triple - let mut out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); - let target = env::var("TARGET").unwrap(); - let profile = env::var("PROFILE").unwrap(); - - // Avoid issues with paths containing spaces by falling back to using a tempfile. - // See https://github.com/jedisct1/libsodium/issues/207 - if out_dir.to_str().unwrap().contains(' ') { - out_dir = env::temp_dir() - .join("libsodium-sys") - .join(&target) - .join(&profile); - println!( - "cargo:warning=The path to the usual build directory contains spaces and hence \ - can't be used to build libsodium. Falling back to use {}. If running `cargo \ - clean`, ensure you also delete this fallback directory", - out_dir.display() - ); - } - - // Determine source and install dir - let install_dir = out_dir.join("installed"); - let source_dir = out_dir.join("source").join("libsodium"); - - // Create directories - fs::create_dir_all(&install_dir).unwrap(); - fs::create_dir_all(&source_dir).unwrap(); - - let paths = std::fs::read_dir("./libsodium").unwrap(); - - for path in paths { - println!("Name: {}", path.unwrap().path().display()) - } - - if !target.contains("msvc") { - // Copy sources into build directory - // Skip .git because it's marked read-only and that causes problems re-building - for entry in walkdir::WalkDir::new("libsodium") - .into_iter() - .filter_entry(|e| e.file_name() != OsStr::new(".git")) - .filter_map(Result::ok) - { - let outpath = out_dir.join("source").join(entry.path()); - if let Err(e) = if entry.file_type().is_dir() { - fs::create_dir_all(outpath) - } else { - fs::copy(entry.path(), outpath).map(|_| ()) - } { - panic!("Failed to copy sources into build directory: {}", e); - } - } - } - - let lib_dir = make_libsodium(&target, &source_dir, &install_dir); - - if target.contains("msvc") { - println!("cargo:rustc-link-lib=static=libsodium"); - } else { - println!("cargo:rustc-link-lib=static=sodium"); - } - - println!( - "cargo:rustc-link-search=native={}", - lib_dir.to_str().unwrap() - ); - - let include_dir = source_dir.join("src/libsodium/include"); - - println!("cargo:include={}", include_dir.to_str().unwrap()); - println!("cargo:lib={}", lib_dir.to_str().unwrap()); -} diff --git a/common/rust/src/discord_models/audit_log.rs b/common/rust/src/discord_models/audit_log.rs index 0579a37..f223a2f 100644 --- a/common/rust/src/discord_models/audit_log.rs +++ b/common/rust/src/discord_models/audit_log.rs @@ -1,5 +1,6 @@ use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; +use crate::discord_models::channel::Channel; use super::{guild::Integration, user::User, webhook::Webhook}; @@ -199,10 +200,15 @@ pub struct AuditLogEntry { pub reason: Option, } +pub enum NewAuditLogEntry { + +} + #[derive(Debug, Clone, Deserialize, Serialize)] pub struct AuditLog { pub webhooks: Vec, pub users: Vec, + pub threads: Vec, pub audit_log_entries: Vec, pub integrations: Vec, } diff --git a/common/rust/src/discord_models/gateway.rs b/common/rust/src/discord_models/gateway.rs index dbdf60d..a886d99 100644 --- a/common/rust/src/discord_models/gateway.rs +++ b/common/rust/src/discord_models/gateway.rs @@ -116,3 +116,9 @@ pub struct Activity { pub flags: Option>, pub buttons: Option>, } + +#[derive(Debug, Clone, Deserialize, Serialize)] +#[serde(tag = "type")] +pub enum NewActivity { + +} \ No newline at end of file diff --git a/docs/docs/intro.md b/docs/docs/intro.md index d0bab01..30393b5 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -1,4 +1,6 @@ -# Introduction +# Nova + +[![Build](https://github.com/discordnova/Nova/actions/workflows/bazel-build.yml/badge.svg)](https://github.com/discordnova/Nova/actions/workflows/bazel-build.yml) ## What is nova ? diff --git a/rest/src/proxy/mod.rs b/rest/src/proxy/mod.rs index f07d995..29f4b77 100644 --- a/rest/src/proxy/mod.rs +++ b/rest/src/proxy/mod.rs @@ -2,7 +2,7 @@ use crate::{config::Config, ratelimit::Ratelimiter}; use common::{log::debug, prometheus::{Counter, HistogramVec, labels, opts, register_counter, register_histogram_vec}}; use hyper::{ client::HttpConnector, header::HeaderValue, http::uri::Parts, service::Service, Body, Client, - HeaderMap, Request, Response, Uri, + Request, Response, Uri, }; use hyper_tls::HttpsConnector; use tokio::sync::Mutex; @@ -72,15 +72,16 @@ impl Service> for ServiceProxy { *req.uri_mut() = Uri::from_parts(new_parts).unwrap(); - let mut headers = HeaderMap::default(); - + let headers = req.headers_mut(); + headers.remove("user-agent"); headers.insert("Host", HeaderValue::from_str("discord.com").unwrap()); headers.insert( "Authorization", HeaderValue::from_str(&format!("Bot {}", self.config.discord.token)).unwrap(), ); - *req.headers_mut() = headers; + println!("{:?}", headers); + let client = self.client.clone(); let ratelimiter = self.ratelimiter.clone(); let fail = self.fail.clone(); -- 2.39.5