Merge branch 'main' into l-maciej/main
This commit is contained in:
		
						commit
						2540a0396d
					
				
					 5 changed files with 71 additions and 39 deletions
				
			
		|  | @ -907,7 +907,7 @@ and [here](https://easyengine.io/tutorials/nginx/block-wp-login-php-bruteforce-a | ||||||
|     ``` |     ``` | ||||||
|     # Rate limit all IP addresses |     # Rate limit all IP addresses | ||||||
|     http { |     http { | ||||||
| 	  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; | 	  limit_req_zone $binary_remote_addr zone=one:10m rate=45r/m; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     # Alternatively, whitelist certain IP addresses |     # Alternatively, whitelist certain IP addresses | ||||||
|  | @ -922,7 +922,7 @@ and [here](https://easyengine.io/tutorials/nginx/block-wp-login-php-bruteforce-a | ||||||
|         1 $binary_remote_addr; |         1 $binary_remote_addr; | ||||||
|         0 ""; |         0 ""; | ||||||
|       } |       } | ||||||
|       limit_req_zone $limitkey zone=one:10m rate=1r/s; |       limit_req_zone $limitkey zone=one:10m rate=45r/m; | ||||||
|     } |     } | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
|  | @ -951,7 +951,7 @@ and [here](https://easyengine.io/tutorials/nginx/block-wp-login-php-bruteforce-a | ||||||
|     action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp] |     action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp] | ||||||
|     logpath = /var/log/nginx/error.log |     logpath = /var/log/nginx/error.log | ||||||
|     findtime = 600 |     findtime = 600 | ||||||
|     bantime = 7200 |     bantime = 14400 | ||||||
|     maxretry = 10 |     maxretry = 10 | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -26,37 +26,37 @@ deb/rpm packages. | ||||||
| 
 | 
 | ||||||
| === "x86_64/amd64" | === "x86_64/amd64" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_x86_64.tar.gz |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_x86_64.tar.gz | ||||||
|     tar zxvf ntfy_1.29.0_linux_x86_64.tar.gz |     tar zxvf ntfy_1.29.1_linux_x86_64.tar.gz | ||||||
|     sudo cp -a ntfy_1.29.0_linux_x86_64/ntfy /usr/bin/ntfy |     sudo cp -a ntfy_1.29.1_linux_x86_64/ntfy /usr/bin/ntfy | ||||||
|     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.0_linux_x86_64/{client,server}/*.yml /etc/ntfy |     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.1_linux_x86_64/{client,server}/*.yml /etc/ntfy | ||||||
|     sudo ntfy serve |     sudo ntfy serve | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "armv6" | === "armv6" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv6.tar.gz |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv6.tar.gz | ||||||
|     tar zxvf ntfy_1.29.0_linux_armv6.tar.gz |     tar zxvf ntfy_1.29.1_linux_armv6.tar.gz | ||||||
|     sudo cp -a ntfy_1.29.0_linux_armv6/ntfy /usr/bin/ntfy |     sudo cp -a ntfy_1.29.1_linux_armv6/ntfy /usr/bin/ntfy | ||||||
|     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.0_linux_armv6/{client,server}/*.yml /etc/ntfy |     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.1_linux_armv6/{client,server}/*.yml /etc/ntfy | ||||||
|     sudo ntfy serve |     sudo ntfy serve | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "armv7/armhf" | === "armv7/armhf" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv7.tar.gz |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv7.tar.gz | ||||||
|     tar zxvf ntfy_1.29.0_linux_armv7.tar.gz |     tar zxvf ntfy_1.29.1_linux_armv7.tar.gz | ||||||
|     sudo cp -a ntfy_1.29.0_linux_armv7/ntfy /usr/bin/ntfy |     sudo cp -a ntfy_1.29.1_linux_armv7/ntfy /usr/bin/ntfy | ||||||
|     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.0_linux_armv7/{client,server}/*.yml /etc/ntfy |     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.1_linux_armv7/{client,server}/*.yml /etc/ntfy | ||||||
|     sudo ntfy serve |     sudo ntfy serve | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "arm64" | === "arm64" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_arm64.tar.gz |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_arm64.tar.gz | ||||||
|     tar zxvf ntfy_1.29.0_linux_arm64.tar.gz |     tar zxvf ntfy_1.29.1_linux_arm64.tar.gz | ||||||
|     sudo cp -a ntfy_1.29.0_linux_arm64/ntfy /usr/bin/ntfy |     sudo cp -a ntfy_1.29.1_linux_arm64/ntfy /usr/bin/ntfy | ||||||
|     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.0_linux_arm64/{client,server}/*.yml /etc/ntfy |     sudo mkdir /etc/ntfy && sudo cp ntfy_1.29.1_linux_arm64/{client,server}/*.yml /etc/ntfy | ||||||
|     sudo ntfy serve |     sudo ntfy serve | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
|  | @ -106,7 +106,7 @@ Manually installing the .deb file: | ||||||
| 
 | 
 | ||||||
| === "x86_64/amd64" | === "x86_64/amd64" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_amd64.deb |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_amd64.deb | ||||||
|     sudo dpkg -i ntfy_*.deb |     sudo dpkg -i ntfy_*.deb | ||||||
|     sudo systemctl enable ntfy |     sudo systemctl enable ntfy | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|  | @ -114,7 +114,7 @@ Manually installing the .deb file: | ||||||
| 
 | 
 | ||||||
| === "armv6" | === "armv6" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv6.deb |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv6.deb | ||||||
|     sudo dpkg -i ntfy_*.deb |     sudo dpkg -i ntfy_*.deb | ||||||
|     sudo systemctl enable ntfy |     sudo systemctl enable ntfy | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|  | @ -122,7 +122,7 @@ Manually installing the .deb file: | ||||||
| 
 | 
 | ||||||
| === "armv7/armhf" | === "armv7/armhf" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv7.deb |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv7.deb | ||||||
|     sudo dpkg -i ntfy_*.deb |     sudo dpkg -i ntfy_*.deb | ||||||
|     sudo systemctl enable ntfy |     sudo systemctl enable ntfy | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|  | @ -130,7 +130,7 @@ Manually installing the .deb file: | ||||||
| 
 | 
 | ||||||
| === "arm64" | === "arm64" | ||||||
|     ```bash |     ```bash | ||||||
|     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_arm64.deb |     wget https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_arm64.deb | ||||||
|     sudo dpkg -i ntfy_*.deb |     sudo dpkg -i ntfy_*.deb | ||||||
|     sudo systemctl enable ntfy |     sudo systemctl enable ntfy | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|  | @ -140,28 +140,28 @@ Manually installing the .deb file: | ||||||
| 
 | 
 | ||||||
| === "x86_64/amd64" | === "x86_64/amd64" | ||||||
|     ```bash |     ```bash | ||||||
|     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_amd64.rpm |     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_amd64.rpm | ||||||
|     sudo systemctl enable ntfy  |     sudo systemctl enable ntfy  | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "armv6" | === "armv6" | ||||||
|     ```bash |     ```bash | ||||||
|     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv6.rpm |     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv6.rpm | ||||||
|     sudo systemctl enable ntfy |     sudo systemctl enable ntfy | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "armv7/armhf" | === "armv7/armhf" | ||||||
|     ```bash |     ```bash | ||||||
|     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_armv7.rpm |     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_armv7.rpm | ||||||
|     sudo systemctl enable ntfy  |     sudo systemctl enable ntfy  | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| === "arm64" | === "arm64" | ||||||
|     ```bash |     ```bash | ||||||
|     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_linux_arm64.rpm |     sudo rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_linux_arm64.rpm | ||||||
|     sudo systemctl enable ntfy  |     sudo systemctl enable ntfy  | ||||||
|     sudo systemctl start ntfy |     sudo systemctl start ntfy | ||||||
|     ``` |     ``` | ||||||
|  | @ -189,18 +189,18 @@ NixOS also supports [declarative setup of the ntfy server](https://search.nixos. | ||||||
| 
 | 
 | ||||||
| ## macOS | ## macOS | ||||||
| The [ntfy CLI](subscribe/cli.md) (`ntfy publish` and `ntfy subscribe` only) is supported on macOS as well.  | The [ntfy CLI](subscribe/cli.md) (`ntfy publish` and `ntfy subscribe` only) is supported on macOS as well.  | ||||||
| To install, please [download the tarball](https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_macOS_all.tar.gz),  | To install, please [download the tarball](https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_macOS_all.tar.gz),  | ||||||
| extract it and place it somewhere in your `PATH` (e.g. `/usr/local/bin/ntfy`).  | extract it and place it somewhere in your `PATH` (e.g. `/usr/local/bin/ntfy`).  | ||||||
| 
 | 
 | ||||||
| If run as `root`, ntfy will look for its config at `/etc/ntfy/client.yml`. For all other users, it'll look for it at  | If run as `root`, ntfy will look for its config at `/etc/ntfy/client.yml`. For all other users, it'll look for it at  | ||||||
| `~/Library/Application Support/ntfy/client.yml` (sample included in the tarball). | `~/Library/Application Support/ntfy/client.yml` (sample included in the tarball). | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -L https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_macOS_all.tar.gz > ntfy_1.29.0_macOS_all.tar.gz | curl -L https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_macOS_all.tar.gz > ntfy_1.29.1_macOS_all.tar.gz | ||||||
| tar zxvf ntfy_1.29.0_macOS_all.tar.gz | tar zxvf ntfy_1.29.1_macOS_all.tar.gz | ||||||
| sudo cp -a ntfy_1.29.0_macOS_all/ntfy /usr/local/bin/ntfy | sudo cp -a ntfy_1.29.1_macOS_all/ntfy /usr/local/bin/ntfy | ||||||
| mkdir ~/Library/Application\ Support/ntfy  | mkdir ~/Library/Application\ Support/ntfy  | ||||||
| cp ntfy_1.29.0_macOS_all/client/client.yml ~/Library/Application\ Support/ntfy/client.yml | cp ntfy_1.29.1_macOS_all/client/client.yml ~/Library/Application\ Support/ntfy/client.yml | ||||||
| ntfy --help | ntfy --help | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | @ -212,7 +212,7 @@ ntfy --help | ||||||
| 
 | 
 | ||||||
| ## Windows | ## Windows | ||||||
| The [ntfy CLI](subscribe/cli.md) (`ntfy publish` and `ntfy subscribe` only) is supported on Windows as well. | The [ntfy CLI](subscribe/cli.md) (`ntfy publish` and `ntfy subscribe` only) is supported on Windows as well. | ||||||
| To install, please [download the latest ZIP](https://github.com/binwiederhier/ntfy/releases/download/v1.29.0/ntfy_1.29.0_windows_x86_64.zip), | To install, please [download the latest ZIP](https://github.com/binwiederhier/ntfy/releases/download/v1.29.1/ntfy_1.29.1_windows_x86_64.zip), | ||||||
| extract it and place the `ntfy.exe` binary somewhere in your `%Path%`.  | extract it and place the `ntfy.exe` binary somewhere in your `%Path%`.  | ||||||
| 
 | 
 | ||||||
| The default path for the client config file is at `%AppData%\ntfy\client.yml` (not created automatically, sample in the ZIP file). | The default path for the client config file is at `%AppData%\ntfy\client.yml` (not created automatically, sample in the ZIP file). | ||||||
|  |  | ||||||
|  | @ -12,11 +12,17 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release | ||||||
| 
 | 
 | ||||||
| * Korean (thanks to [@YJSofta0f97461d82447ac](https://hosted.weblate.org/user/YJSofta0f97461d82447ac/)) | * Korean (thanks to [@YJSofta0f97461d82447ac](https://hosted.weblate.org/user/YJSofta0f97461d82447ac/)) | ||||||
| 
 | 
 | ||||||
| ## ntfy server v1.30.0 (UNRELREASED) | ## ntfy server v1.29.1 | ||||||
|  | Released November 17, 2022 | ||||||
| 
 | 
 | ||||||
| **Features:** | This is mostly a bugfix release to address the high load on ntfy.sh. There are now two new options that allow | ||||||
|  | synchronous batch-writing of messages to the cache. This avoids database locking, and subsequent pileups of waiting | ||||||
|  | requests. | ||||||
| 
 | 
 | ||||||
| * High-load servers: Allow asynchronous batch-writing of messages to cache via `cache-batch-*` options ([#498](https://github.com/binwiederhier/ntfy/issues/498)/[#502](https://github.com/binwiederhier/ntfy/pull/502))    | **Bug fixes:** | ||||||
|  | 
 | ||||||
|  | * High-load servers: Allow asynchronous batch-writing of messages to cache via `cache-batch-*` options ([#498](https://github.com/binwiederhier/ntfy/issues/498)/[#502](https://github.com/binwiederhier/ntfy/pull/502)) | ||||||
|  | * Sender column in cache.db shows invalid IP ([#503](https://github.com/binwiederhier/ntfy/issues/503)) | ||||||
| 
 | 
 | ||||||
| **Documentation:** | **Documentation:** | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -287,6 +287,10 @@ func (c *messageCache) addMessages(ms []*message) error { | ||||||
| 			} | 			} | ||||||
| 			actionsStr = string(actionsBytes) | 			actionsStr = string(actionsBytes) | ||||||
| 		} | 		} | ||||||
|  | 		var sender string | ||||||
|  | 		if m.Sender.IsValid() { | ||||||
|  | 			sender = m.Sender.String() | ||||||
|  | 		} | ||||||
| 		_, err := tx.Exec( | 		_, err := tx.Exec( | ||||||
| 			insertMessageQuery, | 			insertMessageQuery, | ||||||
| 			m.ID, | 			m.ID, | ||||||
|  | @ -304,7 +308,7 @@ func (c *messageCache) addMessages(ms []*message) error { | ||||||
| 			attachmentSize, | 			attachmentSize, | ||||||
| 			attachmentExpires, | 			attachmentExpires, | ||||||
| 			attachmentURL, | 			attachmentURL, | ||||||
| 			m.Sender.String(), | 			sender, | ||||||
| 			m.Encoding, | 			m.Encoding, | ||||||
| 			published, | 			published, | ||||||
| 		) | 		) | ||||||
|  | @ -501,9 +505,8 @@ func readMessages(rows *sql.Rows) ([]*message, error) { | ||||||
| 		} | 		} | ||||||
| 		senderIP, err := netip.ParseAddr(sender) | 		senderIP, err := netip.ParseAddr(sender) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			senderIP = netip.IPv4Unspecified() // if no IP stored in database, 0.0.0.0 | 			senderIP = netip.Addr{} // if no IP stored in database, return invalid address | ||||||
| 		} | 		} | ||||||
| 
 |  | ||||||
| 		var att *attachment | 		var att *attachment | ||||||
| 		if attachmentName != "" && attachmentURL != "" { | 		if attachmentName != "" && attachmentURL != "" { | ||||||
| 			att = &attachment{ | 			att = &attachment{ | ||||||
|  |  | ||||||
|  | @ -476,6 +476,29 @@ func TestSqliteCache_StartupQueries_Fail(t *testing.T) { | ||||||
| 	require.Error(t, err) | 	require.Error(t, err) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func TestSqliteCache_Sender(t *testing.T) { | ||||||
|  | 	testSender(t, newSqliteTestCache(t)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestMemCache_Sender(t *testing.T) { | ||||||
|  | 	testSender(t, newMemTestCache(t)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func testSender(t *testing.T, c *messageCache) { | ||||||
|  | 	m1 := newDefaultMessage("mytopic", "mymessage") | ||||||
|  | 	m1.Sender = netip.MustParseAddr("1.2.3.4") | ||||||
|  | 	require.Nil(t, c.AddMessage(m1)) | ||||||
|  | 
 | ||||||
|  | 	m2 := newDefaultMessage("mytopic", "mymessage without sender") | ||||||
|  | 	require.Nil(t, c.AddMessage(m2)) | ||||||
|  | 
 | ||||||
|  | 	messages, err := c.Messages("mytopic", sinceAllMessages, false) | ||||||
|  | 	require.Nil(t, err) | ||||||
|  | 	require.Equal(t, 2, len(messages)) | ||||||
|  | 	require.Equal(t, messages[0].Sender, netip.MustParseAddr("1.2.3.4")) | ||||||
|  | 	require.Equal(t, messages[1].Sender, netip.Addr{}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func checkSchemaVersion(t *testing.T, db *sql.DB) { | func checkSchemaVersion(t *testing.T, db *sql.DB) { | ||||||
| 	rows, err := db.Query(`SELECT version FROM schemaVersion`) | 	rows, err := db.Query(`SELECT version FROM schemaVersion`) | ||||||
| 	require.Nil(t, err) | 	require.Nil(t, err) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue