Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement an alternative way to pass parameters #30

Merged
merged 8 commits into from
Oct 22, 2023
Merged

Implement an alternative way to pass parameters #30

merged 8 commits into from
Oct 22, 2023

Conversation

killerswin2
Copy link
Contributor

@killerswin2 killerswin2 commented Jul 17, 2023

When testing on some dedicated server providers, users can not access or even add additional command line parameters at start up. There are ways around these limitations, which I will not disclose to prevent abuse. Still there needs to be a way, an alternative way, to allow users to supply configurations to ASP without the need or access to the command line. JSON was chosen because, it's easy to implement and there exists many high quality libraries for it. *(I was really just lazy and just did Nlohmann's json)

Users of ASP merely just create a config directory, and place a json file named "parameters" in the directory.

@killerswin2
Copy link
Contributor Author

Screenshot 2023-07-17 155843
Screenshot 2023-07-17 155902

src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.hpp Outdated Show resolved Hide resolved
src/scriptProfiler.hpp Outdated Show resolved Hide resolved
@killerswin2
Copy link
Contributor Author

Alright killed, the string_t, everything uses filesystem::paths now. Like you said to do, I use the dll/so path as the base, removes the directory searches. Same was done on linux, but of course different functions.

@killerswin2 killerswin2 requested a review from dedmen July 18, 2023 20:29
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
}
catch (nlohmann::json::exception& error) {
// log error, set parameterFile false, and continue by using getCommandLineParam
sqf::diag_log(error.what());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefix error with ASP failed to read JSON config: or something to differentiate from other (Intercept) extensions that might be logging JSON errors

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is already prefixed. This line will be printed immediately after "ASP: Found a Configuration File" line. Good enough for me

src/scriptProfiler.cpp Outdated Show resolved Hide resolved
src/scriptProfiler.hpp Outdated Show resolved Hide resolved
std::filesystem::path findConfigFilePath() {

std::filesystem::path path = getSharedObjectPath();
path = path.parent_path().parent_path();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be weird with nested mod folders like arma3server/server_mods/my_favourite_ones/@asp. Better to look inside @asp folder i.e. just one parent_path to also avoid bloating the arma server folder. Will also work better with server providers that symlinks the mod folders together into a temp folder.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getSharedObjectPath returns path like

arma3server/server_mods/my_favourite_ones/@asp/intercept/asp.dll
one parent is intercept/ folder, second parent is @asp/ folder

So this should be correct I'd think

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it returns the full path to the plugin. To get the ASP folder we need to back out of file and the intercept directory. Yeah, it is a little cleaner to use the parent_path function rather than adding the "go up path" string and having to make the path normalized.

src/scriptProfiler.cpp Outdated Show resolved Hide resolved
dedmen and others added 2 commits July 27, 2023 18:52
changed to pass file path out through data pointer for linux
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
@killerswin2 killerswin2 requested a review from dedmen August 30, 2023 15:51
src/scriptProfiler.cpp Outdated Show resolved Hide resolved
@dedmen dedmen merged commit 9efeca7 into dedmen:master Oct 22, 2023
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants