├── .ci
├── backup-schema.json
├── change-details-schema.json
├── check-vps-schema.json
├── install-schema.json
├── migrate-schema.json
├── status-schema.json
├── tool-schema.json
├── update-schema.json
└── validate.py
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ └── translation.md
└── workflows
│ └── translations.yml
├── .gitignore
├── LICENSE
├── README.md
├── scripts
├── check-vps.sh
├── cleanup.sh
├── display-logo.sh
├── explore-nym.sh
└── mixnode
│ ├── backup.sh
│ ├── change-details.sh
│ ├── install.sh
│ ├── migrate.sh
│ ├── status.sh
│ ├── tool.sh
│ └── update.sh
└── text
├── backup.json
├── change-details.json
├── check-vps.json
├── install.json
├── migrate.json
├── status.json
├── tool.json
└── update.json
/.ci/backup-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "instructions": { "type": "string" }
8 | },
9 | "required": [
10 | "welcome_message",
11 | "instructions"
12 | ],
13 | "additionalProperties": false
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/.ci/change-details-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "success": { "type": "string" },
8 | "fail": { "type": "string" }
9 | },
10 | "required": [
11 | "welcome_message",
12 | "success",
13 | "fail"
14 | ],
15 | "additionalProperties": false
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.ci/check-vps-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "enabled": { "type": "string" },
8 | "not_found": { "type": "string" },
9 | "force_exit": { "type": "string" },
10 | "version_warning": { "type": "string" },
11 | "run_anyway": { "type": "string" },
12 | "nat_ok": { "type": "string" },
13 | "nat_fail": { "type": "string" },
14 | "has_sudo": { "type": "string" },
15 | "no_sudo": { "type": "string" },
16 | "root": { "type": "string" },
17 | "root_warning": { "type": "string" },
18 | "make_user": { "type": "string" },
19 | "enter_user": { "type": "string" },
20 | "user_fail": { "type": "string" },
21 | "diff_name": { "type": "string" },
22 | "reconnecting": { "type": "string" },
23 | "stopping": { "type": "string" },
24 | "stopped": { "type": "string" },
25 | "updating": { "type": "string" },
26 | "updated": { "type": "string" }
27 | },
28 | "required": [
29 | "welcome_message",
30 | "enabled",
31 | "not_found",
32 | "force_exit",
33 | "version_warning",
34 | "run_anyway",
35 | "nat_ok",
36 | "nat_fail",
37 | "has_sudo",
38 | "no_sudo",
39 | "root",
40 | "root_warning",
41 | "make_user",
42 | "enter_user",
43 | "user_fail",
44 | "diff_name",
45 | "reconnecting",
46 | "stopping",
47 | "stopped",
48 | "updating",
49 | "updated"
50 | ],
51 | "additionalProperties": false
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/.ci/install-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "success": { "type": "string" },
8 | "instructions": { "type": "string" },
9 | "restart": { "type": "string" },
10 | "fail": { "type": "string" }
11 | },
12 | "required": [
13 | "welcome_message",
14 | "success",
15 | "instructions",
16 | "restart",
17 | "fail"
18 | ],
19 | "additionalProperties": false
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/.ci/migrate-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "success": { "type": "string" },
8 | "fail": { "type": "string" }
9 | },
10 | "required": [
11 | "welcome_message",
12 | "success",
13 | "fail"
14 | ],
15 | "additionalProperties": false
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.ci/status-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "instructions": { "type": "string" }
7 | },
8 | "required": [ "instructions" ],
9 | "additionalProperties": false
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.ci/tool-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "searching": { "type": "string" },
7 | "found": { "type": "string" },
8 | "not_found": { "type": "string" },
9 | "no_cfg": { "type": "string" },
10 | "menu": { "type": "string" },
11 | "quit": { "type": "string" },
12 | "prompt": { "type": "string" },
13 | "invalid": { "type": "string" },
14 | "install": { "type": "string" },
15 | "migrate": { "type": "string" },
16 | "update": { "type": "string" },
17 | "backup": { "type": "string" },
18 | "details": { "type": "string" },
19 | "status": { "type": "string" }
20 | },
21 | "required": [
22 | "searching",
23 | "found",
24 | "not_found",
25 | "no_cfg",
26 | "menu",
27 | "quit",
28 | "prompt",
29 | "invalid",
30 | "install",
31 | "migrate",
32 | "update",
33 | "backup",
34 | "details",
35 | "status"
36 | ],
37 | "additionalProperties": false
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/.ci/update-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "properties": {
6 | "welcome_message": { "type": "string" },
7 | "checking": { "type": "string" },
8 | "up_to_date": { "type": "string" },
9 | "outdated": { "type": "string" },
10 | "updated": { "type": "string" },
11 | "and": { "type": "string" },
12 | "restart": { "type": "string" },
13 | "fail": { "type": "string" }
14 | },
15 | "required": [
16 | "welcome_message",
17 | "checking",
18 | "up_to_date",
19 | "outdated",
20 | "updated",
21 | "and",
22 | "restart",
23 | "fail"
24 | ],
25 | "additionalProperties": false
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/.ci/validate.py:
--------------------------------------------------------------------------------
1 | import json
2 | import argparse
3 | from jsonschema import validate, ValidationError
4 |
5 | def read_json_file(file_path):
6 | with open(file_path, 'r') as file:
7 | try:
8 | data = json.load(file)
9 | except json.JSONDecodeError as e:
10 | raise ValueError(f"Invalid JSON syntax in the file: {file_path}") from e
11 | return data
12 |
13 | def validate_json_file(json_file, schema_file):
14 | try:
15 | json_data = read_json_file(json_file)
16 | except ValueError as e:
17 | print(str(e))
18 | exit(1)
19 | with open(schema_file, 'r') as file:
20 | schema = json.load(file)
21 |
22 | try:
23 | validate(json_data, schema)
24 | print(f"Validation successful: {json_file} matches the schema {schema_file}.")
25 | except ValidationError as e:
26 | print(f"Validation failed: {json_file} does not match the schema {schema_file}.")
27 | print("Validation error details:", e)
28 | exit(1)
29 |
30 | def main():
31 | parser = argparse.ArgumentParser(description='Validate JSON files against schemas.')
32 | parser.add_argument('json_file', type=str, help='Path to the JSON file to validate')
33 | parser.add_argument('schema_file', type=str, help='Path to the JSON schema file')
34 | args = parser.parse_args()
35 |
36 | validate_json_file(args.json_file, args.schema_file)
37 |
38 | if __name__ == '__main__':
39 | main()
40 |
41 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Run script
16 | 2. Select option '....'
17 | 3. Input '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. Ubuntu]
28 | - Version [e.g. 20.04]
29 |
30 | **Additional context**
31 | Add any other context about the problem here.
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/translation.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Translation
3 | about: Create a request for a missing language or let us know about untranslated parts
4 | of the script
5 | title: ''
6 | labels: translation
7 | assignees: ''
8 |
9 | ---
10 |
11 | **What's the language(s) that's missing the translation?**
12 | A simple statement listing the language(s).
13 |
14 | **Is the language missing from the entire script or from part(s) of the script?**
15 | A simple statement identifying one of the two options
16 |
17 | **If it's missing from a specific part of the script please point it out below**
18 | A list with the part(s) of the script that the translations are missing if the language is already supported.
19 |
--------------------------------------------------------------------------------
/.github/workflows/translations.yml:
--------------------------------------------------------------------------------
1 | name: translations
2 |
3 | # Controls when the workflow will run
4 | on:
5 | # Triggers the workflow on push or pull request events but only for the "main" branch
6 | push:
7 | paths:
8 | - 'text/*'
9 | branches: [ "main" ]
10 | pull_request:
11 | paths:
12 | - 'text/*'
13 | branches: [ "main" ]
14 |
15 | # Allows you to run this workflow manually from the Actions tab
16 | workflow_dispatch:
17 |
18 | jobs:
19 | validate:
20 | runs-on: ubuntu-latest
21 |
22 | steps:
23 | - uses: actions/checkout@v3
24 |
25 | - name: Setup Python
26 | uses: actions/setup-python@v3.1.4
27 | with:
28 | python-version: '3.x'
29 |
30 | - name: Install dependencies
31 | run: |
32 | python3 -m pip install --upgrade pip
33 | pip install jsonschema
34 |
35 | - name: Run JSON validation
36 | run: |
37 | python3 .ci/validate.py text/backup.json .ci/backup-schema.json
38 | python3 .ci/validate.py text/change-details.json .ci/change-details-schema.json
39 | python3 .ci/validate.py text/check-vps.json .ci/check-vps-schema.json
40 | python3 .ci/validate.py text/install.json .ci/install-schema.json
41 | python3 .ci/validate.py text/migrate.json .ci/migrate-schema.json
42 | python3 .ci/validate.py text/status.json .ci/status-schema.json
43 | python3 .ci/validate.py text/tool.json .ci/tool-schema.json
44 | python3 .ci/validate.py text/update.json .ci/update-schema.json
45 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | old-archive/
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 ExploreNYM
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
2 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
3 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
4 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
5 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
6 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
7 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
8 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
9 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
10 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
11 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
12 | ## !!!DO NOT USE UNTIL BUG FIXED!!!
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
ExploreNYM Bash Scripts
22 |
23 | Supporting the installation and management of NYM nodes.
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | ### Table of Contents
32 |
33 |
34 |
35 | - Languages
36 |
37 | - About The Project
38 |
39 | - Getting Started
40 |
41 |
- Usage
42 |
43 | - Contributing
44 |
45 | - License
46 |
47 | - Contact
48 |
49 |
50 |
51 | ## Languages available on the script
52 | - English
53 | - Português
54 | - Yкраїнська
55 | - Русский
56 | - Français
57 |
58 | ## About The Project
59 |
60 | Simple bash scripts to support community with the technical side of NYM infrastucture.
61 |
62 | This is an attempt to make it a simple process as possible for anyone no matter there experience.
63 |
64 | If you have any issues contact details below.
65 | (back to top)
66 |
67 |
68 | ## Getting Started
69 | These scripts are only tested on ubuntu 20.04
70 |
71 | #### Hardware Requirements
72 |
73 | * 1 cpu core
74 | * 0.5gb ram
75 | * 8gb storage space
76 | * ipv4 & ipv6 connection
77 |
78 | ## Usage
79 |
80 | ### Mixnode Tool
81 |
82 | 1. Open a terminal in your local computer. (mac terminal) (windows shell)
83 | 2. Connect to your server via ssh using your username and i.p **example** below.
84 | ```sh
85 | ssh username@i.p
86 | ```
87 | 3. Intall git and jq on the server
88 | ```sh
89 | sudo apt install git jq
90 | ```
91 | 4. Copy and paste the script below into the server.
92 |
93 | ```sh
94 | git clone https://github.com/ExploreNYM/bash-tool ~/bash-tool && ~/bash-tool/scripts/explore-nym.sh
95 | ```
96 | if you are using this tool after already installing manually select migrate.
97 |
98 | (back to top)
99 |
100 |
101 | ## Contributing
102 |
103 | We greatly appreciate any and all contributions to this project.
104 | - [Contributing with NYM](#contributing-with-nym)
105 | - [Contributing with translations](#contributing-with-translations)
106 |
107 | ### Contributing with NYM
108 | If coding is not your thing you can support by delegating to our nodes.
109 |
110 | 1. Indonesia: `4sxonGjdD4vNxWUvk8x8gCB7VpZgUBV4YDLg98oB4PUP`
111 | 2. Thailand: `B9PJBmkT1gVNM4JSmhCa59Dj5aJ7vjk5uvuN5nbJKJW7`
112 | 3. Brazil: `2KuFi7CjKVh1mQrNKhdwLjhXBhVLRktvWMg5k4WXKdrX`
113 |
114 | We only accept donations to our nym wallet address below.
115 |
116 | `n1cvcmxmdgw39np3ft9duxj8vdfp9ktny6jtfc0r`
117 |
118 | ### Contributing with translations
119 | **Steps to translate the script to your language:**
120 | 1. Create your own Fork of the project.
121 |
122 | 
123 |
124 | 2. On your own Fork, edit the `.json` files inside the text folder. Add the json object with your language and **only translate the values, not the keys**. Follow the example below where pt-br was added:
125 |
126 | 
127 |
128 | 3. After you have added your translations create a pull request to add it to the script:
129 |
130 | 
131 |
132 | 4. After you create the pull request an automated validation script will check the integrity of the files you edited. If the test passes you're all good and your language will soon be added, If you didn't pass the automated test check the details to see what happened at which file and then correct it in order to pass the test.
133 |
134 | #### Examples of pull requests failing:
135 | 
136 |
137 | 1. Details output when there's invalid syntax on one of the json files (invalid syntax on install.json in this case):
138 |
139 | 
140 |
141 | 2. Details output when there's extra or missing keys on one of the json files (extra key on install.json in this case):
142 |
143 | 
144 |
145 | 3. If you have **conflicts with the base branch** you should sync your fork similar to the way you created the pull request:
146 | 
147 |
148 | 4. This is what it looks like if you pass the automated tests:
149 | 
150 |
151 | (back to top)
152 |
153 |
154 | ## License
155 |
156 | Distributed under the MIT License. See `LICENSE` for more information.
157 |
158 | (back to top)
159 |
160 |
161 | ## Contact
162 |
163 | Twitter - @Pawnflake
164 |
165 | Discord - Pawnflake
166 |
167 | Discord - supermeia
168 |
169 | Website - explorenym.net
170 |
--------------------------------------------------------------------------------
/scripts/check-vps.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | check_mark="\xE2\x9C\x93"
8 | fail_x="\xE2\x9C\x97"
9 | set_bold="\033[1m"
10 | set_normal="\033[22m"
11 | announce_ip=$(curl -4 ifconfig.me)
12 | [ -z "$announce_ip" ] && announce_ip=$(curl ipinfo.io/ip)
13 | #Load text into associative array
14 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/check-vps.json)
15 | if [[ "$translations" == "null" ]]; then
16 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
17 | "script, If you're able to translate the text displayed on the script" \
18 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
19 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
20 | fi
21 | declare -A text
22 | while IFS=':' read -r key value; do
23 | key=$(echo "${key//\"/}" | xargs)
24 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
25 | text["$key"]="$value"
26 | done <<< "$translations"
27 |
28 | ###############
29 | ## FUNCTIONS ##
30 | ###############
31 |
32 | check_ipv6() {
33 | if ip -6 addr show | grep -q "inet6";
34 | then
35 | echo -e "$check_mark ${text[enabled]}\n"
36 | else
37 | echo -e "$fail_x ${text[not_found]}\n"
38 | echo "! ${text[force_exit]} !"; exit 1
39 | fi
40 | }
41 |
42 | check_ubuntu_version() {
43 | vps_version=$(lsb_release -rs)
44 | stable_version="20.04"
45 |
46 | if [ $vps_version == $stable_version ]
47 | then
48 | echo -e "$check_mark Ubuntu $stable_version\n"
49 | else
50 | echo -e "$fail_x Ubuntu $vps_version.\n"
51 | echo -e "! ${text[version_warning]} !\n"
52 | read -p "${text[run_anyway]} " perm
53 | if ! [[ "$perm" == "Y" || "$perm" == "y" || "$perm" == "" ]]
54 | then
55 | echo -e "\n! ${text[force_exit]} !"; exit 1
56 | fi
57 | fi
58 | }
59 |
60 | check_nat() {
61 | bind_ip=$(hostname -I | awk '{print $1}')
62 | docs_link="https://nymtech.net/docs/nodes/troubleshooting.html#running-on-a\
63 | -local-machine-behind-nat-with-no-fixed-ip-address"
64 |
65 | if [[ $bind_ip == $announce_ip ]]
66 | then
67 | echo -e "$check_mark ${text[nat_ok]}\n"
68 | else
69 | echo -e "$fail_x ${text[nat_fail]}\n"
70 | echo "$docs_link"
71 | exit 1;
72 | fi
73 | }
74 |
75 | check_user() {
76 | case "$(groups)" in
77 | *sudo*)
78 | echo -e "$check_mark $USER ${text[has_sudo]}\n"
79 | ;;
80 | *root*)
81 | echo -e "$fail_x ${text[root]}\n"
82 | echo -e "! ${text[root_warning]} !\n"
83 | read -p "${text[make_user]} " perm
84 | if [[ "$perm" == "Y" || "$perm" == "y" || "$perm" == "" ]]
85 | then
86 | created="false"
87 | while [[ "$created" == "false" ]]
88 | do
89 | while [[ -z "$new_user" ]]; do
90 | read -p "${text[enter_user]} " new_user
91 | done
92 | adduser --gecos GECOS $new_user
93 | if [ $? -eq 0 ]; then
94 | created="true"
95 | usermod -aG sudo $new_user
96 | else
97 | echo -e "\n$fail_x ${text[user_fail]} $new_user,"\
98 | "${text[diff_name]}\n"
99 | new_user=""
100 | fi
101 | done
102 | echo -e "$set_bold\n! ${text[reconnecting]} !\n$set_normal"
103 | $EXPLORE_NYM_PATH/cleanup.sh
104 | ssh -o StrictHostKeyChecking=no "$new_user@$announce_ip"
105 | exit 1
106 | fi
107 | ;;
108 | *)
109 | echo -e "$fail_x $USER ${text[no_sudo]}\n"
110 | echo "! ${text[force_exit]} !"; exit 1
111 | ;;
112 | esac
113 | }
114 |
115 | update_server() {
116 | cleanup() {
117 | if [[ -n "$animation_pid" ]]
118 | then
119 | kill "$animation_pid"
120 | fi
121 | echo -e "\n\n${text[stopping]}\n"
122 | if [[ -n "$update_pid" ]]
123 | then
124 | sudo kill "$update_pid"
125 | fi
126 | if [[ -n "$upgrade_pid" ]]
127 | then
128 | sudo kill "$upgrade_pid"
129 | fi
130 | echo -e "${text[stopped]}\n"
131 | exit 1
132 | }
133 | trap cleanup SIGINT
134 | echo -e "${text[updating]}"
135 | sudo sleep 0.01 #useless sudo command to get verification out of the way
136 | { #loading animation
137 | while true; do
138 | echo -ne '\r-'
139 | sleep 0.1
140 | echo -ne '\r\\'
141 | sleep 0.1
142 | echo -ne '\r|'
143 | sleep 0.1
144 | echo -ne '\r/'
145 | sleep 0.1
146 | done
147 | } &
148 | animation_pid=$!
149 | sudo apt update -qq &>'/dev/null' &
150 | update_pid=$!
151 | wait "$update_pid" ; update_pid=""
152 | sudo apt upgrade -y -qq &>'/dev/null' &
153 | upgrade_pid=$!
154 | wait "$upgrade_pid" ; upgrade_pid=""
155 | kill "$animation_pid" ; animation_pid=""
156 | echo -e "\n$check_mark ${text[updated]}\n"
157 | }
158 |
159 | ##############################
160 | ## MAIN EXECUTION OF SCRIPT ##
161 | ##############################
162 |
163 | echo -e "${set_bold}${text[welcome_message]}\n${set_normal}"
164 | check_ipv6
165 | check_ubuntu_version
166 | check_nat
167 | check_user
168 | update_server
169 |
--------------------------------------------------------------------------------
/scripts/cleanup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | rm -rf "$HOME/bash-tool" &> /dev/null
4 | rm "$HOME/ne-output.txt" &> /dev/null
5 | unset EXPLORE_NYM_PATH
6 | unset EXPLORE_NYM_LANG
7 | unset variables
8 |
--------------------------------------------------------------------------------
/scripts/display-logo.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | clear ; echo
4 | echo " _____ _ _ ___ ____ __ "
5 | echo -e "| ____|_ ___ __ | | ___ _ __ ___| \ | \ \ / / \/ |"
6 | echo -e "| _| \ \/ / '_ \| |/ _ \| '__/ _ \ \| |\ V /| |\/| |"
7 | echo -e "| |___ > <| |_) | | (_) | | | __/ |\ | | | | | | |"
8 | echo -e "|_____/_/\_\ .__/|_|\___/|_| \___|_| \_| |_| |_| |_|"
9 | echo -e " |_| \033[4mhttps://explorenym.net\033[0m\n"
10 |
--------------------------------------------------------------------------------
/scripts/explore-nym.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #Characters
4 | check_mark="\xE2\x9C\x93"
5 | fail_x="\xE2\x9C\x97"
6 | #Font formats
7 | set_bold="\033[1m"
8 | set_normal="\033[22m"
9 |
10 | ###############
11 | ## FUNCTIONS ##
12 | ###############
13 |
14 | language_menu() {
15 | while true
16 | do
17 | clear ; $EXPLORE_NYM_PATH/display-logo.sh
18 | echo -e "\n$set_bold ExploreNYM language menu:$set_normal\n"
19 | echo "1. English (US)"
20 | echo "2. Português (BR)"
21 | echo "3. Yкраїнська (UA)"
22 | echo "4. Русский (RU)"
23 | echo "5. Français (FR)"
24 | echo "6. Español (ES)"
25 | echo "7. Quit"
26 | echo "(Add your language through https://github.com/ExploreNYM/bash-tool)"
27 | read -p "Enter your choice: " choice
28 |
29 | case $choice in
30 | 1)
31 | export EXPLORE_NYM_LANG="en-us" ; return
32 | ;;
33 | 2)
34 | export EXPLORE_NYM_LANG="pt-br" ; return
35 | ;;
36 | 3)
37 | export EXPLORE_NYM_LANG="ua-укр" ; return
38 | ;;
39 | 4)
40 | export EXPLORE_NYM_LANG="ru-рф" ; return
41 | ;;
42 | 5)
43 | export EXPLORE_NYM_LANG="fr-fr" ; return
44 | ;;
45 | 6)
46 | export EXPLORE_NYM_LANG="es-es" ; return
47 | ;;
48 | 7)
49 | exit
50 | ;;
51 | *)
52 | echo -e "\n$fail_x Invalid option, please try again."
53 | sleep 1
54 | ;;
55 | esac
56 | done
57 | }
58 |
59 |
60 | ##############################
61 | ## MAIN EXECUTION OF SCRIPT ##
62 | ##############################
63 |
64 | export EXPLORE_NYM_PATH=$(dirname "$0")
65 | trap $EXPLORE_NYM_PATH/cleanup.sh exit
66 | $EXPLORE_NYM_PATH/display-logo.sh
67 | language_menu
68 | $EXPLORE_NYM_PATH/check-vps.sh || exit
69 | $EXPLORE_NYM_PATH/mixnode/tool.sh
70 |
--------------------------------------------------------------------------------
/scripts/mixnode/backup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | set_bold="\033[1m"
8 | set_normal="\033[22m"
9 | #Load text into associative array
10 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/backup.json)
11 | if [[ "$translations" == "null" ]]; then
12 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
13 | "script, If you're able to translate the text displayed on the script" \
14 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
15 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
16 | fi
17 | declare -A text
18 | while IFS=':' read -r key value; do
19 | key=$(echo "${key//\"/}" | xargs)
20 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
21 | text["$key"]="$value"
22 | done <<< "$translations"
23 |
24 | ##############################
25 | ## MAIN EXECUTION OF SCRIPT ##
26 | ##############################
27 |
28 | node_path="$1/mixnodes"
29 | nym_node_id=$(find "$node_path" -mindepth 1 -maxdepth 1 -type d \
30 | -printf "%f\n" | head -n1)
31 |
32 | $EXPLORE_NYM_PATH/display-logo.sh
33 | echo -e "${set_bold}${text[welcome_message]}\n$set_normal"
34 | echo -e "${text[instructions]}\n"
35 | echo -e "scp -r $USER@$announce_ip:$node_path/$nym_node_id/ ~/$nym_node_id\n"
36 |
--------------------------------------------------------------------------------
/scripts/mixnode/change-details.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | check_mark="\xE2\x9C\x93"
8 | fail_x="\xE2\x9C\x97"
9 | set_bold="\033[1m"
10 | set_normal="\033[22m"
11 | #Load text into associative array
12 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/change-details.json)
13 | if [[ "$translations" == "null" ]]; then
14 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
15 | "script, If you're able to translate the text displayed on the script" \
16 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
17 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
18 | fi
19 | declare -A text
20 | while IFS=':' read -r key value; do
21 | key=$(echo "${key//\"/}" | xargs)
22 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
23 | text["$key"]="$value"
24 | done <<< "$translations"
25 |
26 | ##############################
27 | ## MAIN EXECUTION OF SCRIPT ##
28 | ##############################
29 |
30 | node_path="$1/mixnodes"
31 | nym_node_id=$(find "$node_path" -mindepth 1 -maxdepth 1 -type d \
32 | -printf "%f\n" | head -n1)
33 |
34 | $EXPLORE_NYM_PATH/display-logo.sh
35 | echo -e "${set_bold}${text[welcome_message]}\n$set_normal"
36 | nym-mixnode describe --id $nym_node_id
37 | sudo systemctl restart nym-mixnode
38 | if [[ `service nym-mixnode status | grep active` =~ "running" ]]
39 | then
40 | echo -e "$check_mark ${text[success]}\n"
41 | sleep 2
42 | else
43 | echo -e "$fail_x ${text[fail]}\n"
44 | sleep 2
45 | fi
46 |
--------------------------------------------------------------------------------
/scripts/mixnode/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | set_bold="\033[1m"
8 | set_normal="\033[22m"
9 | fail_x="\xE2\x9C\x97"
10 | #Load text into associative array
11 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/install.json)
12 | if [[ "$translations" == "null" ]]; then
13 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
14 | "script, If you're able to translate the text displayed on the script" \
15 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
16 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
17 | fi
18 | declare -A text
19 | while IFS=':' read -r key value; do
20 | key=$(echo "${key//\"/}" | xargs)
21 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
22 | text["$key"]="$value"
23 | done <<< "$translations"
24 |
25 | ###############
26 | ## FUNCTIONS ##
27 | ###############
28 |
29 | setup_binary() {
30 | binary_name="nym-mixnode"
31 | nym_url="https://github.com/nymtech/nym/releases/latest/download/$binary_name"
32 |
33 | wget -q -O $binary_name "$nym_url"
34 | chmod u+x $binary_name
35 | sudo mv $binary_name /usr/local/bin/
36 | }
37 |
38 | setup_mixnode() {
39 | host=$(curl -4 ifconfig.me)
40 | [ -z "$host" ] && host=$(curl ipinfo.io/ip)
41 | nym_node_id="nym-mixnode"
42 |
43 | nym-mixnode init --id $nym_node_id --host $host > $HOME/ne-output.txt
44 | }
45 |
46 | setup_firewall() {
47 | sudo ufw allow 1789,1790,8000,22/tcp >/dev/null && yes |\
48 | sudo ufw enable >/dev/null
49 | sudo systemctl restart ufw
50 | }
51 |
52 | setup_daemon() {
53 | echo "Storage=persistent" | sudo tee /etc/systemd/journald.conf >/dev/null
54 | sudo systemctl restart systemd-journald
55 |
56 | sudo tee /etc/systemd/system/nym-mixnode.service >/dev/null <> /etc/systemd/system.conf"
75 | sudo systemctl daemon-reload
76 | sudo systemctl enable nym-mixnode
77 | sudo systemctl restart nym-mixnode
78 | }
79 |
80 | display_mixnode_info() {
81 | if [[ `service nym-mixnode status | grep active` =~ "running" ]]
82 | then
83 | $EXPLORE_NYM_PATH/display-logo.sh
84 | echo -e "$set_bold${text[success]}\n\n$set_normal"
85 | sleep 1
86 | grep -E "Identity Key|Sphinx Key|Host|Version|Mix Port|Verloc port\
87 | |Http Port|bonding to wallet address" ne-output.txt
88 | echo -e "\n${text[instructions]}\n"
89 | echo -e "${text[restart]}"
90 | $EXPLORE_NYM_PATH/cleanup.sh
91 | sudo reboot
92 | else
93 | echo -e "$fail_x ${text[fail]}"
94 | sleep 2
95 | exit 1
96 | fi
97 | }
98 |
99 | ##############################
100 | ## MAIN EXECUTION OF SCRIPT ##
101 | ##############################
102 |
103 | $EXPLORE_NYM_PATH/display-logo.sh
104 | echo -e "$set_bold${text[welcome_message]}\n$set_normal"
105 | setup_binary
106 | setup_mixnode
107 | setup_firewall
108 | setup_daemon
109 | display_mixnode_info
110 |
--------------------------------------------------------------------------------
/scripts/mixnode/migrate.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | check_mark="\xE2\x9C\x93"
8 | fail_x="\xE2\x9C\x97"
9 | set_bold="\033[1m"
10 | set_normal="\033[22m"
11 | #Load text into associative array
12 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/migrate.json)
13 | if [[ "$translations" == "null" ]]; then
14 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
15 | "script, If you're able to translate the text displayed on the script" \
16 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
17 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
18 | fi
19 | declare -A text
20 | while IFS=':' read -r key value; do
21 | key=$(echo "${key//\"/}" | xargs)
22 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
23 | text["$key"]="$value"
24 | done <<< "$translations"
25 |
26 | ###############
27 | ## FUNCTIONS ##
28 | ###############
29 |
30 | move_nym_folder() {
31 | nym_path=$(sudo find / -type d -name ".nym" 2>/dev/null)
32 | if [[ -n "$nym_path" ]]
33 | then
34 | sudo mv "$nym_path" "$HOME/"
35 | echo -e "$check_mark ${text[success]} $HOME\n"
36 | sudo chown -R $USER:$USER $HOME/.nym
37 | sleep 2
38 | else
39 | echo -e "$fail_x ${text[fail]}\n"
40 | sleep 2
41 | exit 1
42 | fi
43 | }
44 |
45 | ##############################
46 | ## MAIN EXECUTION OF SCRIPT ##
47 | ##############################
48 |
49 | $EXPLORE_NYM_PATH/display-logo.sh
50 | echo -e "${set_bold}${text[welcome_message]}\n$set_normal"
51 | move_nym_folder
52 |
--------------------------------------------------------------------------------
/scripts/mixnode/status.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | set_bold="\033[1m"
8 | set_normal="\033[22m"
9 | #Load text into associative array
10 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/status.json)
11 | if [[ "$translations" == "null" ]]; then
12 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
13 | "script, If you're able to translate the text displayed on the script" \
14 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
15 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
16 | fi
17 | declare -A text
18 | while IFS=':' read -r key value; do
19 | key=$(echo "${key//\"/}" | xargs)
20 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
21 | text["$key"]="$value"
22 | done <<< "$translations"
23 |
24 | ##############################
25 | ## MAIN EXECUTION OF SCRIPT ##
26 | ##############################
27 |
28 | $EXPLORE_NYM_PATH/display-logo.sh
29 | echo -e "${set_bold}${text[instructions]}\n$set_normal"
30 | sudo systemctl status nym-mixnode ; sleep 5
31 |
--------------------------------------------------------------------------------
/scripts/mixnode/tool.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | nym_path=""
8 | nym_config_file=""
9 | check_mark="\xE2\x9C\x93"
10 | fail_x="\xE2\x9C\x97"
11 | set_bold="\033[1m"
12 | set_normal="\033[22m"
13 | #Load text into associative array
14 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/tool.json)
15 | if [[ "$translations" == "null" ]]; then
16 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
17 | "script, If you're able to translate the text displayed on the script" \
18 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
19 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
20 | fi
21 | declare -A text
22 | while IFS=':' read -r key value; do
23 | key=$(echo "${key//\"/}" | xargs)
24 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
25 | text["$key"]="$value"
26 | done <<< "$translations"
27 |
28 | ###############
29 | ## FUNCTIONS ##
30 | ###############
31 |
32 | find_nym_folder() {
33 | echo -e "\n${text[searching]}\n"
34 | nym_path=$(find $HOME -type d -name ".nym" 2>/dev/null)
35 | if [ -n "$nym_path" ]
36 | then
37 | echo -e "$check_mark ${text[found]}\n"
38 | sleep 2
39 | return
40 | else
41 | echo -e "$fail_x ${text[not_found]}\n"
42 | sleep 2
43 | return 1
44 | fi
45 | }
46 |
47 | find_config() {
48 | node_path="$nym_path/mixnodes"
49 | nym_node_id=$(find "$node_path" -mindepth 1 -maxdepth 1 -type \
50 | d -printf "%f\n" | head -n1)
51 | nym_config_file=$node_path/$nym_node_id/config/config.toml
52 |
53 | if ! [ -f "$nym_config_file" ]
54 | then
55 | echo -e "${text[no_cfg]}\n"
56 | return 1
57 | fi
58 | }
59 |
60 | no_nym_folder_menu() {
61 | while true
62 | do
63 | clear ; $EXPLORE_NYM_PATH/display-logo.sh
64 | echo -e "\n$set_bold${text[menu]}\n$set_normal"
65 | echo "1. ${text[install]}"
66 | echo "2. ${text[migrate]}"
67 | echo "3. ${text[quit]}"
68 | read -p "${text[prompt]}" choice
69 |
70 | case $choice in
71 | 1)
72 | $EXPLORE_NYM_PATH/mixnode/install.sh && exit
73 | ;;
74 | 2)
75 | $EXPLORE_NYM_PATH/mixnode/migrate.sh && exit
76 | ;;
77 | 3)
78 | exit
79 | ;;
80 | *)
81 | echo -e "\n$fail_x ${text[invalid]}"
82 | sleep 1
83 | ;;
84 | esac
85 | done
86 | }
87 |
88 | has_nym_folder_menu() {
89 | while true
90 | do
91 | clear ; $EXPLORE_NYM_PATH/display-logo.sh
92 | echo -e "$set_bold${text[menu]}\n$set_normal"
93 | echo "1. ${text[update]}"
94 | echo "2. ${text[backup]}"
95 | echo "3. ${text[details]}"
96 | echo "4. ${text[status]}"
97 | echo "5. ${text[quit]}"
98 | read -p "${text[prompt]}" choice
99 |
100 | case $choice in
101 | 1)
102 | $EXPLORE_NYM_PATH/mixnode/update.sh $nym_path
103 | ;;
104 | 2)
105 | $EXPLORE_NYM_PATH/mixnode/backup.sh $nym_path && exit
106 | ;;
107 | 3)
108 | $EXPLORE_NYM_PATH/mixnode/change-details.sh $nym_path
109 | ;;
110 | 4)
111 | $EXPLORE_NYM_PATH/mixnode/status.sh
112 | ;;
113 | 5)
114 | exit
115 | ;;
116 | *)
117 | echo -e "\n$fail_x ${text[invalid]}"
118 | sleep 1
119 | ;;
120 | esac
121 | done
122 | }
123 |
124 | ###############################
125 | ### MAIN EXECUTION OF SCRIPT ##
126 | ###############################
127 |
128 | if find_nym_folder
129 | then
130 | find_config || exit;
131 | has_nym_folder_menu
132 | else
133 | no_nym_folder_menu
134 | fi
135 |
--------------------------------------------------------------------------------
/scripts/mixnode/update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ###############
4 | ## VARIABLES ##
5 | ###############
6 |
7 | nym_path=$1
8 | node_path="$nym_path/mixnodes"
9 | nym_node_id=$(find "$node_path" -mindepth 1 -maxdepth 1 -type d \
10 | -printf "%f\n" | head -n1)
11 | nym_config_file=$node_path/$nym_node_id/config/config.toml
12 | check_mark="\xE2\x9C\x93"
13 | fail_x="\xE2\x9C\x97"
14 | set_bold="\033[1m"
15 | set_normal="\033[22m"
16 | announce_ip=$(curl -4 ifconfig.me)
17 | [ -z "$announce_ip" ] && announce_ip=$(curl ipinfo.io/ip)
18 | #Load text into associative array
19 | translations=$(jq -r ".\"$EXPLORE_NYM_LANG\"" $EXPLORE_NYM_PATH/../text/update.json)
20 | if [[ "$translations" == "null" ]]; then
21 | echo -e "No translation for $EXPLORE_NYM_LANG available for this part of the" \
22 | "script, If you're able to translate the text displayed on the script" \
23 | "please contribute here https://github.com/ExploreNYM/bash-tool\n"
24 | translations=$(jq -r ".\"en-us\"" ../text/check-vps.json)
25 | fi
26 | declare -A text
27 | while IFS=':' read -r key value; do
28 | key=$(echo "${key//\"/}" | xargs)
29 | value=$(echo "${value//\"/}" | xargs -0 | sed 's/,$//')
30 | text["$key"]="$value"
31 | done <<< "$translations"
32 |
33 | ###############
34 | ## FUNCTIONS ##
35 | ###############
36 |
37 | setup_binary() {
38 | binary_name="nym-mixnode"
39 | nym_url="https://github.com/nymtech/nym/releases/latest/download/$binary_name"
40 |
41 | echo "${text[checking]}"
42 | sudo wget -q -O $binary_name "$nym_url"
43 | sudo chmod u+x $binary_name
44 | installed_version=$(nym-mixnode --version 2> /dev/null | grep "Build Version" | awk '{print $3}')
45 | remote_version=$(./nym-mixnode --version 2> /dev/null | grep "Build Version" | awk '{print $3}')
46 | if [[ $installed_version == $remote_version ]]; then
47 | echo "${text[up_to_date]}"
48 | sudo rm nym-mixnode
49 | sleep 2 ; exit
50 | else
51 | echo "${text[outdated]}" ; sleep 2
52 | fi
53 | sudo mv $binary_name /usr/local/bin/
54 | }
55 |
56 | init_binary() {
57 | sudo nym-mixnode init --id $nym_node_id --host $announce_ip > ne-output.txt
58 | }
59 |
60 | display_status() {
61 | nym_version=$(grep "version" "$nym_config_file" | awk -F "'" '{print $2}')
62 |
63 | if [[ `service nym-mixnode status | grep active` =~ "running" ]]
64 | then
65 | $EXPLORE_NYM_PATH/display-logo.sh ; sleep 1
66 | echo -e "${set_bold}${text[updated]} $nym_version ${text[and]}\n$set_normal"
67 | sleep 2 ; sudo systemctl status nym-mixnode --no-pager
68 | echo -e "\n\n${text[restart]}"
69 | $EXPLORE_NYM_PATH/cleanup.sh
70 | sudo reboot
71 | else
72 | echo -e "$fail_x ${text[fail]}"
73 | sleep 10
74 | exit 1
75 | fi
76 | }
77 |
78 | ##############################
79 | ## MAIN EXECUTION OF SCRIPT ##
80 | ##############################
81 |
82 | $EXPLORE_NYM_PATH/display-logo.sh
83 | echo -e "${set_bold}${text[welcome_message]}\n$set_normal"
84 | setup_binary
85 | sudo systemctl stop nym-mixnode
86 | init_binary
87 | sudo systemctl start nym-mixnode
88 | display_status
89 |
--------------------------------------------------------------------------------
/text/backup.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Mixnode backup started",
4 | "instructions": "Copy this script and paste it in your local terminal(mac/linux) or powershell(windows) to pull a backup of your mixnode"
5 | },
6 | "pt-br": {
7 | "welcome_message": "Backup do mixnode inicializado",
8 | "instructions": "Copie esse comando e cole ele no seu terminal(mac/linux) ou powershell(windows) local para puxar um backup do seu mixnode"
9 | },
10 | "ua-укр": {
11 | "welcome_message": "Розпочато резервне копіювання мікс-ноди",
12 | "instructions": "Щоб створити резервну копію вашої мікс-ноди, скопіюйте цей скрипт і вставте у свій локальний термінал, якщо користуєтесь mac/linux або powershell, якщо користуєтесь windows."
13 | },
14 | "ru-рф": {
15 | "welcome_message": "Началось резервное копирование Mixnode",
16 | "instructions": "Скопируйте этот скрипт и вставьте его в локальный терминал (mac/linux) или powershell (windows) для создания резервной копии mixnode"
17 | },
18 | "fr-fr": {
19 | "welcome_message": "Démarrage de la sauvegarde du mixnode",
20 | "instructions": "Copiez le script et collez le sur votre terminal(mac/linux) ou powershell(windows) pour récupérer la sauvegarde de votre mixnode"
21 | },
22 | "es-es": {
23 | "welcome_message": "Copia de seguridad de Mixnode iniciada",
24 | "instructions": "Copia este script y pégalo en tu terminal local(mac/linux) o powershell(windows) para sacar una copia de seguridad de tu mixnode"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/text/change-details.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Updating description of your mixnode",
4 | "success": "Description updated successfully",
5 | "fail": "Error: mixnode not running"
6 | },
7 | "pt-br": {
8 | "welcome_message": "Atualizando descrição do seu mixnode",
9 | "success": "Descrição atualizada com sucesso",
10 | "fail": "Erro: mixnode não está rodando"
11 | },
12 | "ua-укр": {
13 | "welcome_message": "Оновлюємо опис вашої мікс-ноди",
14 | "success": "Опис успішно оновлено",
15 | "fail": "Помилка: мікс-нода не запущена"
16 | },
17 | "ru-рф": {
18 | "welcome_message": "Обновление описания вашего mixnode",
19 | "success": "Описание успешно обновлено",
20 | "fail": "Ошибка: mixnode не запущен"
21 | },
22 | "fr-fr": {
23 | "welcome_message": "Mise à jour de la description de votre mixnode",
24 | "success": "Description mise à jour avec succès",
25 | "fail": "Erreur: le mixnode n'est pas démarré"
26 | },
27 | "es-es": {
28 | "welcome_message": "Actualizando descripción de tu mixnode",
29 | "success": "Descripción actualizada con éxito",
30 | "fail": "Error: mixnode no se está ejecutando"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/text/check-vps.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Mixnode tool initialized please be patient checking and updating server",
4 | "enabled": "IPv6 enabled",
5 | "not_found": "No IPv6 addess found!",
6 | "force_exit": "Force Exit",
7 | "version_warning": "Warning script and nym binaries are tested on Ubuntu 20.04",
8 | "run_anyway": "Run script anyway? (Y/n)",
9 | "nat_ok": "The server is not behind a NAT",
10 | "nat_fail": "The server is behind a NAT if you running on a home network please check the docs about port forwarding",
11 | "has_sudo": "has sudo privileges",
12 | "no_sudo": "has no sudo privileges",
13 | "root": "root user",
14 | "root_warning": "Warning you should create a sudo user for running nym",
15 | "make_user": "Make a new sudo user? (Y/n)",
16 | "enter_user": "Enter new username:",
17 | "user_fail": "Failed to create user",
18 | "diff_name": "try a different username or certify that you typed the password correctly",
19 | "reconnecting": "Reconnecting as new user please re run script after connecting",
20 | "stopping": "Stopping update",
21 | "stopped": "Update stoped",
22 | "updating": "Updating server please be patient...",
23 | "updated": "Server up to date"
24 | },
25 | "pt-br": {
26 | "welcome_message": "Ferramenta para mixnode inicializada, por favor seja paciente enquanto checamos e atualizamos o servidor",
27 | "enabled": "IPv6 habilitado",
28 | "not_found": "Nenhum endereço IPv6 encontrado!",
29 | "force_exit": "Saída Forçada",
30 | "version_warning": "Aviso, o script e os binários nym são testados no Ubuntu 20.04",
31 | "run_anyway": "Rodar o script mesmo assim? (Y/n)[Y para sim e n para não]",
32 | "nat_ok": "O servidor não está atrás de um NAT",
33 | "nat_fail": "O servidor está atrás de um NAT, se você está rodando em uma rede caseira cheque os docs sobre port forwarding",
34 | "has_sudo": "possui privilégios sudo",
35 | "no_sudo": "não possui privilégios sudo",
36 | "root": "usuário root",
37 | "root_warning": "Aviso, você deve criar um usuário com privilégios sudo para rodar nym",
38 | "make_user": "Criar novo usuário com privilégios sudo? (Y/n)[Y para sim e n para não]",
39 | "enter_user": "Insira o nome do usuário:",
40 | "user_fail": "Falha ao criar usuário",
41 | "diff_name": "Tente outro nome de usuário ou certifique-se que inseriu a senha corretamente",
42 | "reconnecting": "Reconectando com o novo usuário, rode o script novamente após se conectar",
43 | "stopping": "Interrompendo atualização",
44 | "stopped": "Atualização interrompida",
45 | "updating": "Atualizando o servidor, por favor seja paciente...",
46 | "updated": "Servidor atualizado"
47 | },
48 | "ua-укр": {
49 | "welcome_message": "Мікс-ноду ініціалізовано. Перевіряємо та оновлюємо сервер, будь ласка, зачекайте",
50 | "enabled": "IPv6 ввімкнено",
51 | "not_found": "Не знайдено IPv6 адреси!",
52 | "force_exit": "Примусовий вихід",
53 | "version_warning": "Увага! Скрипт та двійкові файли Nym тестуються на Ubuntu 20.04",
54 | "run_anyway": "Запустити скрипт примусово? (y/n)",
55 | "nat_ok": "Сервер не знаходиться за NAT",
56 | "nat_fail": "Сервер за NAT. Якщо ви запустились у домашній мережі, будь ласка, перевірте документи про переадресацію портів",
57 | "has_sudo": "має привілеї sudo",
58 | "no_sudo": "не не має привілеїв sudo",
59 | "root": "кореневий користувач",
60 | "root_warning": "Увага! Вам слід створити користувача sudo для запуску Nym",
61 | "make_user": "Створити нового користувача sudo? (y/n)",
62 | "enter_user": "Введіть нове імʼя користувача:",
63 | "user_fail": "Не вдалося створити користувача",
64 | "diff_name": "спробуйте інше ім’я користувача або переконайтеся, що ви ввели пароль правильно",
65 | "reconnecting": "Повторне підключення як новий користувач. Будь ласка, повторно запустіть сценарій після підключення",
66 | "stopping": "Припинення оновлення",
67 | "stopped": "Оновлення зупинено",
68 | "updating": "Оновлення сервера, будь ласка, зачекайте...",
69 | "updated": "Сервер оновлено"
70 | },
71 | "ru-рф": {
72 | "welcome_message": "Mixnode инициализирован, пожалуйста, будьте терпеливы при проверке и обновлении сервера",
73 | "enabled": "IPv6 включён",
74 | "not_found": "IPv6 адреса не найдены!",
75 | "force_exit": "Принудительный выход",
76 | "version_warning": "Внимание! Скрипт и исполняемые файлы Nym тестируются на Ubuntu 20.04",
77 | "run_anyway": "Всё равно запустить скрипт? (Y/n)",
78 | "nat_ok": "Сервер не находится за NAT",
79 | "nat_fail": "Сервер за NAT. Если вы запустились в домашней сети, пожалуйста, проверьте документы о переадресации портов",
80 | "has_sudo": "имеет привилегии sudo",
81 | "no_sudo": "не имеет привилегии sudo",
82 | "root": "root пользователь",
83 | "root_warning": "Предупреждение о необходимости создания пользователя sudo для запуска nym",
84 | "make_user": "Создать нового пользователя sudo? (Y/n)",
85 | "enter_user": "Введите новое имя пользователя:",
86 | "user_fail": "Не удалось создать пользователя",
87 | "diff_name": "попробуйте использовать другое имя пользователя или убедитесь, что вы правильно ввели пароль",
88 | "reconnecting": "Повторное подключение нового пользователя, пожалуйста, повторите запуск скрипта после подключения",
89 | "stopping": "Прекращение обновления",
90 | "stopped": "Обновление остановлено",
91 | "updating": "Обновление сервера, пожалуйста, подождите...",
92 | "updated": "Сервер обновлён"
93 | },
94 | "fr-fr": {
95 | "welcome_message": "Outil initialisé, veuillez patienter en vérifiant et en mettant à jour le serveur",
96 | "enabled": "IPv6 activé",
97 | "not_found": "Aucune adresse IPv6 trouvée !",
98 | "force_exit": "Forcer l'arrêt",
99 | "version_warning": "Le script d'avertissement et les exécutables nym sont testés sur Ubuntu 20.04",
100 | "run_anyway": "Exécuter le script quand même ? (O/n)",
101 | "nat_ok": "Le serveur n'est pas derrière un NAT",
102 | "nat_fail": "Le serveur est derrière un NAT si vous utilisez un réseau local, veuillez consulter la documentation sur la redirection de port",
103 | "has_sudo": "a des privilèges sudo",
104 | "no_sudo": "n'a pas de privilèges sudo",
105 | "root": "utilisateur root",
106 | "root_warning": "Attention, vous devez créer un utilisateur sudo pour exécuter nym",
107 | "make_user": "Créer un nouvel utilisateur sudo ? (O/n)",
108 | "enter_user": "Entrez un nouveau nom d'utilisateur :",
109 | "user_fail": "Échec de la création de l'utilisateur",
110 | "diff_name": "essayez un autre nom d'utilisateur ou certifiez que vous avez correctement tapé le mot de passe",
111 | "reconnecting": "Reconnexion en tant que nouvel utilisateur, veuillez relancer le script après la connexion",
112 | "stopping": "Arrêt de la mise à jour",
113 | "stopped": "Mise à jour arrêtée",
114 | "updating": "Mise à jour du serveur, veuillez patienter...",
115 | "updated": "Serveur à jour"
116 | },
117 |
118 | "es-es": {
119 | "welcome_message": "La herramienta Mixnode se ha inicializado. Por favor, ten paciencia mientras se revisa y actualiza el servidor.",
120 | "enabled": "IPv6 habilitado",
121 | "not_found": "¡No se encontró ninguna dirección IPv6!",
122 | "force_exit": "Forzar salida",
123 | "version_warning": "Advertencia: el script y los binarios nym se han probado en Ubuntu 20.04",
124 | "run_anyway": "¿Ejecutar el script de todos modos? (S/n)",
125 | "nat_ok": "El servidor no está detrás de un NAT",
126 | "nat_fail": "El servidor está detrás de un NAT. Si estás en una red doméstica, consulta las instrucciones sobre reenvío de puertos.",
127 | "has_sudo": "Tiene privilegios sudo",
128 | "no_sudo": "No tiene privilegios sudo",
129 | "root": "Usuario root",
130 | "root_warning": "Advertencia: debes crear un usuario sudo para ejecutar nym",
131 | "make_user": "¿Crear un nuevo usuario sudo? (S/n)",
132 | "enter_user": "Introduce un nuevo nombre de usuario:",
133 | "user_fail": "Error al crear el usuario",
134 | "diff_name": "Prueba con un nombre de usuario diferente o verifica que escribiste la contraseña correctamente",
135 | "reconnecting": "Reconectando como nuevo usuario. Por favor, vuelve a ejecutar el script después de conectarte",
136 | "stopping": "Deteniendo la actualización",
137 | "stopped": "Actualización detenida",
138 | "updating": "Actualizando el servidor, por favor ten paciencia...",
139 | "updated": "Servidor actualizado"
140 | }
141 | }
142 |
--------------------------------------------------------------------------------
/text/install.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Mixnode installation started",
4 | "success": "Mixnode installed and running",
5 | "instructions": "nym-mixnode installed, remember to bond your node in your wallet details above!",
6 | "restart": "Server Restart Initialized",
7 | "fail": "nym-mixnode was not installed correctly, please re-install"
8 | },
9 | "pt-br": {
10 | "welcome_message": "Instalação do mixnode inicializada",
11 | "success": "Mixnode instalado e rodando",
12 | "instructions": "nym-mixnode instalado, lembre-se de dar bond no seu mixnode pela wallet com os detalhes acima!",
13 | "restart": "Servidor reiniciado",
14 | "fail": "nym-mixnode não foi instalado corretamente, por favor reinstale"
15 | },
16 | "ua-укр": {
17 | "welcome_message": "Розпочато встановлення мікс-ноди",
18 | "success": "Мікс-нода встановлена та працює",
19 | "instructions": "Мікс-нода Ny, встановлена. Не забудьте привʼязати свою ноду до свого гаманця!",
20 | "restart": "Перезапуск сервера ініціалізовано",
21 | "fail": "Мікс-ноду Nym не було встановлено належним чином, будь-ласка перевстановіть її"
22 | },
23 | "ru-рф": {
24 | "welcome_message": "Началась установка Mixnode",
25 | "success": "Mixnode установлена и работает",
26 | "instructions": "nym-mixnode установлена, не забудьте привязать ноду к кошельку!",
27 | "restart": "Перезапуск сервера инициализирован",
28 | "fail": "nym-mixnode была установлена неправильно, пожалуйста, установите его заново"
29 | },
30 | "fr-fr": {
31 | "welcome_message": "L'installation du mixnode a commencé",
32 | "success": "Mixnode installé et en cours d'exécution",
33 | "instructions": "nym-mixnode installé, n'oubliez pas de lier votre nœud avec les détails via votre portefeuille ci-dessus !",
34 | "restart": "Redémarrage du serveur initialisé",
35 | "fail": "nym-mixnode n'a pas été installé correctement, veuillez réinstaller"
36 | },
37 | "es-es": {
38 | "welcome_message": "La instalación del Mixnode ha comenzado",
39 | "success": "Mixnode instalado y funcionando",
40 | "instructions": "¡nym-mixnode instalado, recuerda vincular tu nodo en los detalles de tu cartera!",
41 | "restart": "Reinicio del servidor inicializado",
42 | "fail": "nym-mixnode no se instaló correctamente, por favor vuelve a instalarlo"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/text/migrate.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Mixnode migration started",
4 | "success": "Folder moved successfully to",
5 | "fail": ".nym folder not found"
6 | },
7 | "pt-br": {
8 | "welcome_message": "Migração do mixnode inicializada",
9 | "success": "Pasta movida com suesso para ",
10 | "fail": "Pasta .nym não encontrada"
11 | },
12 | "ua-укр": {
13 | "welcome_message": "Міграція мікс-ноди почалась",
14 | "success": "Папка успішно переміщена до",
15 | "fail": "Папки .nym не знайдено"
16 | },
17 | "ru-рф": {
18 | "welcome_message": "Начат перенос Mixnode",
19 | "success": "Папка успешно перемещена в",
20 | "fail": "Папка .nym не найдена"
21 | },
22 | "fr-fr": {
23 | "welcome_message": "La migration du mixnode a commencé",
24 | "success": "Dossier déplacé vers",
25 | "fail": "Dossier .nym introuvable"
26 | },
27 | "es-es": {
28 | "welcome_message": "Migración de Mixnode iniciada",
29 | "success": "Carpeta movida con éxito a",
30 | "fail": "Carpeta .nym no encontrada"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/text/status.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "instructions": "Mixnode current status, press [q] to exit"
4 | },
5 | "pt-br": {
6 | "instructions": "Estado atual do mixnode, pressione [q] para sair"
7 | },
8 | "ua-укр": {
9 | "instructions": "Поточний статус мікс-ноди. Натисніть [q] для виходу"
10 | },
11 | "ru-рф": {
12 | "instructions": "Текущий статус Mixnode. Нажмите [q] для выхода"
13 | },
14 | "fr-fr": {
15 | "instructions": "État actuel du mixnode, appuyez sur [q] pour quitter"
16 | },
17 | "es-es":{
18 | "instructions": "Estado actual del Mixnode, pulse [q] para salir"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/text/tool.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "searching": "Searching for .nym folder on current user, please wait",
4 | "found": ".nym folder found",
5 | "not_found": ".nym folder not found",
6 | "no_cfg": "Cant find config.toml",
7 | "menu": "nym-mixnode menu:",
8 | "quit": "Quit",
9 | "prompt": "Enter your choice: ",
10 | "invalid": "Invalid option, please try again",
11 | "install": "Install nym-mixnode",
12 | "migrate": "Migrate nym-mixnode",
13 | "update": "Update nym-mixnode",
14 | "backup": "Backup nym-mixnode",
15 | "details": "Change nym-mixnode details (name/description/link/location)",
16 | "status": "Check nym-mixnode status"
17 | },
18 | "pt-br": {
19 | "searching": "Procurando pela pasta .nym no atual usuário, espere por favor",
20 | "found": "Pasta .nym encontrada",
21 | "not_found": "Pasta .nym não encontrada",
22 | "no_cfg": "Não foi possível encontrar o arquivo config.toml",
23 | "menu": "menu nym-mixnode:",
24 | "quit": "Sair",
25 | "prompt": "Insira uma opção: ",
26 | "invalid": "Opção inválida, tente novamente",
27 | "install": "Instalar nym-mixnode",
28 | "migrate": "Migrar nym-mixnode",
29 | "update": "Atualizar nym-mixnode",
30 | "backup": "Fazer backup do nym-mixnode",
31 | "details": "Mudar dedscrição do nym-mixnode (nome/descrição/link/localização)",
32 | "status": "Checar estado do nym-mixnode"
33 | },
34 | "ua-укр": {
35 | "searching": "Шукаю папку .nym для поточного користувача. Будь ласка, зачекайте",
36 | "found": "Папка .nym знайдена",
37 | "not_found": "Папка .nym не знайдена",
38 | "no_cfg": "Не можу знайти config.toml",
39 | "menu": "Меню мікс-ноди Nym:",
40 | "quit": "Вихід",
41 | "prompt": "Введіть свій вибір: ",
42 | "invalid": "Недійсний параметр, спробуйте ще раз",
43 | "install": "Встановити мікс-ноду Nym",
44 | "migrate": "Перемістити мікс-ноду Nym",
45 | "update": "Оновити мікс-ноду Nym",
46 | "backup": "Резервне копіювання мікс-ноди Nym",
47 | "details": "Змінити деталі мікс-ноди Nym (назва/опис/посилання/розташування)",
48 | "status": "Перевірити статус мікс-ноди Nym"
49 | },
50 | "ru-рф": {
51 | "searching": "Поиск папки .nym для текущего пользователя, пожалуйста, подождите",
52 | "found": "Папка .nym найдена",
53 | "not_found": "Папка .nym не найдена",
54 | "no_cfg": "Не удается найти config.toml",
55 | "menu": "nym-mixnode меню:",
56 | "quit": "Выйти",
57 | "prompt": "Введите свой выбор: ",
58 | "invalid": "Неверный параметр, попробуйте еще раз",
59 | "install": "установить nym-mixnode",
60 | "migrate": "Перенос nym-mixnode",
61 | "update": "Обновить nym-mixnode",
62 | "backup": "Резервное копирование nym-mixnode",
63 | "details": "Изменение сведений о nym-mixnode (имя/описание/ссылка/местоположение)",
64 | "status": "Проверка статуса nym-mixnode"
65 | },
66 | "fr-fr": {
67 | "searching": "Recherche du dossier .nym pour l'utilisateur actuel, veuillez patienter",
68 | "found": "dossier .nym trouvé",
69 | "not_found": "Dossier .nym introuvable",
70 | "no_cfg": "Impossible de trouver le fichier config.toml",
71 | "menu": "menu nym-mixnode :",
72 | "quit": "Quitter",
73 | "prompt": "Entrez votre choix : ",
74 | "invalid": "Option invalide, veuillez réessayer",
75 | "install": "Installer nym-mixnode",
76 | "migrate": "Migrer nym-mixnode",
77 | "update": "Mettre à jour nym-mixnode",
78 | "backup": "Sauvegarder nym-mixnode",
79 | "details": "Modifier les détails de nym-mixnode (nom/description/lien/emplacement)",
80 | "status": "Vérifier l'état de nym-mixnode"
81 | },
82 | "es-es": {
83 | "searching": "Buscando la carpeta .nym del usuario actual, por favor espera",
84 | "found": "Carpeta .nym encontrada",
85 | "not_found": "Carpeta .nym no encontrada",
86 | "no_cfg": "No se encuentra el archivo config.toml",
87 | "menu": "Menú de nym-mixnode:",
88 | "quit": "Salir",
89 | "prompt": "Ingresa tu opción: ",
90 | "invalid": "Opción inválida, intenta de nuevo",
91 | "install": "Instalar nym-mixnode",
92 | "migrate": "Migrar nym-mixnode",
93 | "update": "Actualizar nym-mixnode",
94 | "backup": "Respaldar nym-mixnode",
95 | "details": "Cambiar detalles de nym-mixnode (nombre/descripción/enlace/ubicación)",
96 | "status": "Verificar estado de nym-mixnode"
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/text/update.json:
--------------------------------------------------------------------------------
1 | {
2 | "en-us": {
3 | "welcome_message": "Mixnode update started",
4 | "checking": "Checking mixnode version",
5 | "up_to_date": "Mixnode already up to date",
6 | "outdated": "Mixnode outdated, updating",
7 | "updated": "Mixnode updated to version:",
8 | "and": "and running, remember update the version in your wallet!",
9 | "restart": "Server restart initiated, Mixnode updated and running cya next update :)",
10 | "fail": "nym-mixnode was not updated correctly, please re-update."
11 | },
12 | "pt-br": {
13 | "welcome_message": "Atualização do mixnode inicializada",
14 | "checking": "Checando a versão do mixnode",
15 | "up_to_date": "Mixnode já está atualizado",
16 | "outdated": "Mixnode desatualizado, atualizando",
17 | "updated": "Mixnode atualizado para a versão:",
18 | "and": "e rodando, lembre-se de atualizar a versão na sua wallet!",
19 | "restart": "Reiniciando servidor, Mixnode atualizado e rodando até o próximo update :)",
20 | "fail": "nym-mixnode não foi atualizado corretamente, por favor atualize novamente"
21 | },
22 | "ua-укр": {
23 | "welcome_message": "Розпочато оновлення мікс-ноди",
24 | "checking": "Перевіряю версію мікс-ноди",
25 | "up_to_date": "Встановлена актуальна версія мікс-ноди",
26 | "outdated": "Мікс-нода застаріла, оновлюю",
27 | "updated": "Мікс-нода оновлена до версії:",
28 | "and": "і працює. Не забудьте оновити версію у своєму гаманці!",
29 | "restart": "Розпочато перезапуск сервера. Мікс-нода оновлена та працює. Побачимось на наступному оновленні :)",
30 | "fail": "Мікс-ноду Nym не було оновлено належним чином. Будь ласка, оновіть ще раз."
31 | },
32 | "ru-рф": {
33 | "welcome_message": "Начато обновление Mixnode",
34 | "checking": "Проверка версии mixnode",
35 | "up_to_date": "Mixnode уже обновлена",
36 | "outdated": "Mixnode устарела, обновленяю",
37 | "updated": "Mixnode обновлена до версии:",
38 | "and": "Работает, не забудьте обновить версию в своем кошельке!",
39 | "restart": "Начата перезагрузка сервера, Mixnode обновлена и работает, до следующего обновления :)",
40 | "fail": "nym-mixnode была обновлена некорректно, пожалуйста, выполните повторное обновление."
41 | },
42 | "fr-fr": {
43 | "welcome_message": "La mise à jour du mixnode a commencé",
44 | "checking": "Vérification de la version du mixnode",
45 | "up_to_date": "Mixnode déjà à jour",
46 | "outdated": "Mixnode obsolète, mise à jour",
47 | "updated": "Mixnode mis à jour vers la version :",
48 | "and": "et en cours d'exécution, n'oubliez pas de mettre à jour la version dans votre portefeuille !",
49 | "restart": "Redémarrage du serveur lancé,Mixnode mis à jour et en cours d'exécution jusqu'à la prochaine mise à jour :)",
50 | "fail": "nym-mixnode n'a pas été mis à jour correctement, veuillez re-mettre à jour."
51 | },
52 | "es-es": {
53 | "welcome_message": "Actualización del Mixnode iniciada",
54 | "checking": "Comprobando la versión del Mixnode",
55 | "up_to_date": "El Mixnode ya está actualizado",
56 | "outdated": "El Mixnode está desactualizado, actualizando",
57 | "updated": "Mixnode actualizado a la versión:",
58 | "and": "y en funcionamiento, ¡recuerda actualizar la versión en tu cartera!",
59 | "restart": "Reinicio del servidor iniciado, Mixnode actualizado y en funcionamiento, ¡hasta la próxima actualización! :)",
60 | "fail": "nym-mixnode no se actualizó correctamente, por favor vuelve a actualizarlo."
61 | }
62 | }
63 |
--------------------------------------------------------------------------------