Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package semaphore for openSUSE:Factory checked in at 2026-04-13 23:19:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/semaphore (Old) and /work/SRC/openSUSE:Factory/.semaphore.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "semaphore" Mon Apr 13 23:19:13 2026 rev:40 rq:1346341 version:2.17.36 Changes: -------- --- /work/SRC/openSUSE:Factory/semaphore/semaphore.changes 2026-04-02 17:44:53.988565100 +0200 +++ /work/SRC/openSUSE:Factory/.semaphore.new.21863/semaphore.changes 2026-04-13 23:20:07.999211035 +0200 @@ -1,0 +2,8 @@ +Mon Apr 13 05:09:13 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 2.17.36 (no releases between .33 and .36): + * 07b5c05 fix(subscr): show correct message + * 6b5a4ae Merge pull request #3754 from + semaphoreui/fix/ldap_filter_injection + +------------------------------------------------------------------- Old: ---- semaphore-2.17.33.obscpio web-2.17.33.tar.gz New: ---- semaphore-2.17.36.obscpio web-2.17.36.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ semaphore.spec ++++++ --- /var/tmp/diff_new_pack.KM7Ok7/_old 2026-04-13 23:20:53.493088871 +0200 +++ /var/tmp/diff_new_pack.KM7Ok7/_new 2026-04-13 23:20:53.493088871 +0200 @@ -17,7 +17,7 @@ Name: semaphore -Version: 2.17.33 +Version: 2.17.36 Release: 0 Summary: Modern UI for Ansible License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.KM7Ok7/_old 2026-04-13 23:20:53.561091678 +0200 +++ /var/tmp/diff_new_pack.KM7Ok7/_new 2026-04-13 23:20:53.565091842 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/ansible-semaphore/semaphore</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.17.33</param> + <param name="revision">v2.17.36</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.KM7Ok7/_old 2026-04-13 23:20:53.589092834 +0200 +++ /var/tmp/diff_new_pack.KM7Ok7/_new 2026-04-13 23:20:53.593092998 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/ansible-semaphore/semaphore</param> - <param name="changesrevision">629fc09c658c4861048cc5411a191476faf53c1b</param></service></servicedata> + <param name="changesrevision">07b5c059ead248bea4f5713d838b475d97195d86</param></service></servicedata> (No newline at EOF) ++++++ semaphore-2.17.33.obscpio -> semaphore-2.17.36.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/api/login.go new/semaphore-2.17.36/api/login.go --- old/semaphore-2.17.33/api/login.go 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/api/login.go 2026-04-12 12:16:04.000000000 +0200 @@ -72,7 +72,7 @@ searchRequest := ldap.NewSearchRequest( util.Config.LdapSearchDN, ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - fmt.Sprintf(util.Config.LdapSearchFilter, username), + fmt.Sprintf(util.Config.LdapSearchFilter, ldap.EscapeFilter(username)), []string{util.Config.LdapMappings.DN}, nil, ) @@ -105,7 +105,7 @@ searchRequest = ldap.NewSearchRequest( util.Config.LdapSearchDN, ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, - fmt.Sprintf(util.Config.LdapSearchFilter, username), + fmt.Sprintf(util.Config.LdapSearchFilter, ldap.EscapeFilter(username)), []string{util.Config.LdapMappings.DN, util.Config.LdapMappings.Mail, util.Config.LdapMappings.UID, util.Config.LdapMappings.CN}, nil, ) @@ -333,7 +333,7 @@ "context": "ldap", "auth": login.Auth, }).Warn("Failed to find user in LDAP") - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusUnauthorized) return } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/api/system_info.go new/semaphore-2.17.36/api/system_info.go --- old/semaphore-2.17.33/api/system_info.go 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/api/system_info.go 2026-04-12 12:16:04.000000000 +0200 @@ -54,17 +54,6 @@ token, err := c.subscriptionService.GetToken() - if errors.Is(err, db.ErrNotFound) { - err = nil - } - - if err != nil { - log.WithError(err).Error("Failed to get subscription plan") - err = nil - //http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) - //return - } - switch { case errors.Is(err, db.ErrNotFound): err = nil @@ -73,23 +62,28 @@ log.WithError(err).Error("Failed to get subscription plan") err = nil plan = "" - //http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return default: - plan = token.Plan + if token.State == "expired" { + plan = "" + } else { + plan = token.Plan + } } body := map[string]any{ - "version": util.Version(), - "ansible": util.AnsibleVersion(), - "web_host": util.Config.WebHost, - "use_remote_runner": util.Config.UseRemoteRunner, - "auth_methods": authMethods, - "premium_features": proFeatures.GetFeatures(user, plan), - "git_client": util.Config.GitClientId, - "schedule_timezone": timezone, - "teams": util.Config.Teams, - "roles": roles, + "version": util.Version(), + "ansible": util.AnsibleVersion(), + "web_host": util.Config.WebHost, + "use_remote_runner": util.Config.UseRemoteRunner, + "auth_methods": authMethods, + "login_with_password": !util.Config.PasswordLoginDisable, + "premium_features": proFeatures.GetFeatures(user, plan), + "subscription_state": token.State, + "git_client": util.Config.GitClientId, + "schedule_timezone": timezone, + "teams": util.Config.Teams, + "roles": roles, } helpers.WriteJSON(w, http.StatusOK, body) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/db/sql/SqlDb.go new/semaphore-2.17.36/db/sql/SqlDb.go --- old/semaphore-2.17.33/db/sql/SqlDb.go 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/db/sql/SqlDb.go 2026-04-12 12:16:04.000000000 +0200 @@ -244,12 +244,12 @@ if props.IsGlobal { return validateMutationResult( d.Exec( - "delete from "+props.TableName+" where "+primaryColumnName+"=?", + "delete from "+props.TableName+" where `"+primaryColumnName+"`=?", objectID)) } else { return validateMutationResult( d.Exec( - "delete from "+props.TableName+" where project_id=? and "+primaryColumnName+"=?", + "delete from "+props.TableName+" where project_id=? and `"+primaryColumnName+"`=?", projectID, objectID)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/deployment/docker/runner/Dockerfile new/semaphore-2.17.36/deployment/docker/runner/Dockerfile --- old/semaphore-2.17.33/deployment/docker/runner/Dockerfile 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/deployment/docker/runner/Dockerfile 2026-04-12 12:16:04.000000000 +0200 @@ -19,7 +19,7 @@ ARG GH_TOKEN RUN if [ -n "$APP_BUILD_TYPE" ]; then \ - git clone https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \ + git clone -b 2-17-stable https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \ go work init . ./pro_impl; \ fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/deployment/docker/server/Dockerfile new/semaphore-2.17.36/deployment/docker/server/Dockerfile --- old/semaphore-2.17.33/deployment/docker/server/Dockerfile 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/deployment/docker/server/Dockerfile 2026-04-12 12:16:04.000000000 +0200 @@ -19,7 +19,7 @@ ARG GH_TOKEN RUN if [ -n "$APP_BUILD_TYPE" ]; then \ - git clone https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \ + git clone -b 2-17-stable https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \ go work init . ./pro_impl; \ fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semaphore-2.17.33/web/src/components/SubscriptionForm.vue new/semaphore-2.17.36/web/src/components/SubscriptionForm.vue --- old/semaphore-2.17.33/web/src/components/SubscriptionForm.vue 2026-04-01 18:15:52.000000000 +0200 +++ new/semaphore-2.17.36/web/src/components/SubscriptionForm.vue 2026-04-12 12:16:04.000000000 +0200 @@ -43,6 +43,16 @@ > You {{ item.plan.startsWith('enterprise_') ? 'Enterprise' : 'PRO' }} subscription is active. </div> + + <div + v-else-if="item.state === 'expired'" + style="line-height: 1.3; font-weight: bold; color: rgb(188, 0, 0)" + class="mb-5" + > + You {{ item.plan.startsWith('enterprise_') ? 'Enterprise' : 'PRO' }} + subscription has expired. + </div> + <div v-else style="line-height: 1.3"> Enter your subscription key to unlock advanced features, or get a new one instantly. </div> @@ -60,7 +70,7 @@ dense ></v-textarea> - <v-menu offset-y v-if="item.state === 'active'"> + <v-menu offset-y v-if="item.state === 'active' || item.state === 'expired'"> <template v-slot:activator="{ on, attrs }"> <v-btn color="primary" @@ -99,8 +109,6 @@ <v-btn v-else color="primary" - v-bind="attrs" - v-on="on" fab small style="position: absolute; top: 30px; right: -15px" @@ -208,10 +216,12 @@ border-radius: 100px; width: 8px; height: 8px; - background: #00bc00; margin-right: 5px; margin-top: 1px; " + :style="{ + backgroundColor: item.state === 'active' ? '#00bc00' : '#ff0000' + }" ></div> <div>{{ item.state }}</div> </v-list-item-subtitle> @@ -243,8 +253,11 @@ </v-col> </v-row> - <div style="margin-top: 20px; font-weight: bold; color: #00bc00"> - Renews in {{ (new Date() - new Date(item.expiresAt)) | formatMilliseconds }} + <div + v-if="subscriptionTimeRemainingMs > 0" + style="margin-top: 20px; font-weight: bold; color: #00bc00" + > + Renews in {{ subscriptionTimeRemainingMs | formatMilliseconds }} <span>(if auto-renew is activated)</span> </div> </v-card-text> @@ -287,6 +300,11 @@ }, computed: { + subscriptionTimeRemainingMs() { + const ret = new Date(this.item.expiresAt) - new Date(); + return ret; + }, + isNew() { return false; }, ++++++ semaphore.obsinfo ++++++ --- /var/tmp/diff_new_pack.KM7Ok7/_old 2026-04-13 23:20:54.741140386 +0200 +++ /var/tmp/diff_new_pack.KM7Ok7/_new 2026-04-13 23:20:54.749140717 +0200 @@ -1,5 +1,5 @@ name: semaphore -version: 2.17.33 -mtime: 1775060152 -commit: 629fc09c658c4861048cc5411a191476faf53c1b +version: 2.17.36 +mtime: 1775988964 +commit: 07b5c059ead248bea4f5713d838b475d97195d86 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/semaphore/vendor.tar.gz /work/SRC/openSUSE:Factory/.semaphore.new.21863/vendor.tar.gz differ: char 150, line 2 ++++++ web-2.17.33.tar.gz -> web-2.17.36.tar.gz ++++++ /work/SRC/openSUSE:Factory/semaphore/web-2.17.33.tar.gz /work/SRC/openSUSE:Factory/.semaphore.new.21863/web-2.17.36.tar.gz differ: char 32, line 1
